Télécharger prdmcp.eso

Retour à la liste

Numérotation des lignes :

  1. C PRDMCP SOURCE PV 16/11/17 22:01:05 9180
  2. SUBROUTINE PRDMCP(MATELE,MCHPRI,MCHDUA)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C NOM : PRDMCP
  7. C DESCRIPTION : Produit matrices élémentaires * chpo. primal
  8. C -> chpo. dual.
  9. C
  10. C LANGAGE : ESOPE
  11. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  12. C mél : gounand@semt2.smts.cea.fr
  13. C***********************************************************************
  14. C APPELES : PRMCP2
  15. C APPELES (UTIL.) : FIXMEL, ADCHPO, DTCHPO, ERREUR
  16. C APPELE PAR : KOPS
  17. C***********************************************************************
  18. C ENTREES : MATELE, MCHPRI
  19. C ENTREES/SORTIES : -
  20. C SORTIES : MCHDUA
  21. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  22. C***********************************************************************
  23. C VERSION : v1, 18/04/2000, version initiale
  24. C HISTORIQUE : v1, 18/04/2000, création
  25. C HISTORIQUE :
  26. C HISTORIQUE :
  27. C***********************************************************************
  28. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  29. C en cas de modification de ce sous-programme afin de faciliter
  30. C la maintenance !
  31. C***********************************************************************
  32. -INC CCOPTIO
  33. POINTEUR MATELE.MATRIK
  34. POINTEUR MMATEL.IMATEL
  35. -INC SMCHPOI
  36. INTEGER NAT,NSOUPO
  37. POINTEUR MCHPRI.MCHPOI
  38. POINTEUR MSOPRI.MSOUPO
  39. POINTEUR MCHDUA.MCHPOI
  40. POINTEUR MCHTOT.MCHPOI
  41. POINTEUR MCHTMP.MCHPOI
  42. POINTEUR MSOTMP.MSOUPO
  43. -INC SMELEME
  44. POINTEUR MELPRI.MELEME
  45. POINTEUR MELPR2.MELEME
  46. POINTEUR MMLPRI.MELEME
  47. POINTEUR MELDUA.MELEME
  48. POINTEUR MELDU2.MELEME
  49. POINTEUR MMLDUA.MELEME
  50. *
  51. INTEGER IMPR,IRET
  52. INTEGER NMATE,NSOPRI
  53. INTEGER IMATE,ISOPRI
  54. *
  55. * Executable statements
  56. *
  57. IMPR=IIMPI
  58. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans prdmcp.eso'
  59. * Correction des maillages (à supprimer dès que possible)
  60. SEGACT MATELE*MOD
  61. NMATE=MATELE.IRIGEL(/2)
  62. DO 1 IMATE=1,NMATE
  63. MELPRI=MATELE.IRIGEL(1,IMATE)
  64. MELDUA=MATELE.IRIGEL(2,IMATE)
  65. CALL FIXMEL(MELPRI,MELDUA,
  66. $ MELPR2,MELDU2,
  67. $ IMPR,IRET)
  68. IF (IRET.NE.0) GOTO 9999
  69. MATELE.IRIGEL(1,IMATE)=MELPR2
  70. MATELE.IRIGEL(2,IMATE)=MELDU2
  71. 1 CONTINUE
  72. SEGDES MATELE
  73. * Initialisation du résultat avec un chpoint vide
  74. NAT=2
  75. NSOUPO=0
  76. SEGINI MCHDUA
  77. MCHDUA.IFOPOI=IFOUR
  78. MCHDUA.JATTRI(1)=2
  79. SEGDES MCHDUA
  80. *
  81. * Boucle sur les matrices et les msoupo du chpoint primal
  82. *
  83. SEGACT MATELE
  84. NMATE=MATELE.IRIGEL(/2)
  85. SEGACT MCHPRI
  86. NSOPRI=MCHPRI.IPCHP(/1)
  87. DO 3 IMATE=1,NMATE
  88. MMLPRI=MATELE.IRIGEL(1,IMATE)
  89. MMLDUA=MATELE.IRIGEL(2,IMATE)
  90. MMATEL=MATELE.IRIGEL(4,IMATE)
  91. DO 4 ISOPRI=1,NSOPRI
  92. MSOPRI=MCHPRI.IPCHP(ISOPRI)
  93. CALL PRMCP2(MMLPRI,MMLDUA,MMATEL,MSOPRI,
  94. $ MSOTMP,
  95. $ IMPR,IRET)
  96. IF (IRET.NE.0) GOTO 9999
  97. IF (MSOTMP.NE.0) THEN
  98. NAT=2
  99. NSOUPO=1
  100. SEGINI MCHTMP
  101. MCHTMP.IFOPOI=IFOUR
  102. MCHTMP.JATTRI(1)=2
  103. MCHTMP.IPCHP(1)=MSOTMP
  104. SEGDES MCHTMP
  105. CALL ADCHPO(MCHDUA,MCHTMP,MCHTOT,1.D0,1.D0)
  106. IF (MCHTOT.EQ.0) THEN
  107. WRITE(IOIMP,*) 'Pas pu faire le ET des chpoints...'
  108. GOTO 9999
  109. ENDIF
  110. CALL DTCHPO(MCHDUA)
  111. CALL DTCHPO(MCHTMP)
  112. MCHDUA=MCHTOT
  113. ENDIF
  114. 4 CONTINUE
  115. 3 CONTINUE
  116. segact mchdua*mod
  117. mchdua.mochde='créé par prdmcp'
  118. mchdua.mtypoi=' '
  119. SEGDES MCHPRI
  120. SEGDES MATELE
  121. *
  122. * Normal termination
  123. *
  124. IRET=0
  125. RETURN
  126. *
  127. * Format handling
  128. *
  129. *
  130. * Error handling
  131. *
  132. 9999 CONTINUE
  133. IRET=1
  134. WRITE(IOIMP,*) 'An error was detected in subroutine prdmcp'
  135. * 153 2
  136. * Opération illicite dans ce contexte
  137. CALL ERREUR(153)
  138. RETURN
  139. *
  140. * End of subroutine PRDMCP
  141. *
  142. END
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales