Télécharger provc2.eso

Retour à la liste

Numérotation des lignes :

provc2
  1. C PROVC2 SOURCE PV090527 25/01/07 14:42:55 12115
  2. C
  3. SUBROUTINE PROVC2(IPCHE1,IPLMO1,IPLMO3,IPCHE3)
  4. *********************************************************************
  5. * PRODUIT VECTORIEL DE 1 CHAMELEMS par Z (en 2D)
  6. *********************************************************************
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8(A-H,O-Z)
  9. C--------------------------------------------------------------------
  10. C ENTREE
  11. C IPCHE1 CHAMELEM
  12. C MLMOT1 LISTMOTS DE COMPOSANTES ASSOCIEES AU 1-ER CHAMP
  13. C MLMOT3 LISTMOTS DE COMPOSANTES ASSOCIEES AU 3-EME CHAMP
  14. C SORTIE
  15. C IPCHE3 POINTEUR SUR LE MCHAML RESULTAT
  16. c
  17. c BP,2020 : inspire de SCACHA.eso, voir aussi PROVC3.eso
  18. c
  19. C--------------------------------------------------------------------
  20.  
  21. -INC SMCOORD
  22. -INC PPARAM
  23. -INC CCOPTIO
  24. -INC CCHAMP
  25. -INC SMCHAML
  26. -INC SMELEME
  27. -INC SMLMOTS
  28. C
  29. CHARACTER*8 NOIN
  30. c tableau des indices pour le produit vectoriel
  31. INTEGER KCOMP1(2)
  32. DATA KCOMP1/2,1/
  33. C
  34. IPCHE3=0
  35. C
  36. C=========================================================
  37. C RECUP DES LISTMOTS + VERIF DES DIMENSIONS
  38. C=========================================================
  39.  
  40. * LISTE 1
  41. MLMOT1=IPLMO1
  42. SEGACT MLMOT1
  43. NINC = MLMOT1.MOTS(/2)
  44.  
  45. * liste 3
  46. MLMOTS=IPLMO3
  47. SEGACT MLMOTS
  48.  
  49. IF(MOTS(/2).NE.NINC) THEN
  50. SEGDES MLMOTS
  51. MOTERR(1:4)='PVEC'
  52. MOTERR(5:12)='LISTMOTS'
  53. CALL ERREUR(125)
  54. RETURN
  55. ENDIF
  56.  
  57. IF(NINC.NE.2) THEN
  58. c erreur : On attend un objet de type %M1:8 de dimension %i1
  59. SEGDES MLMOTS,MLMOT1
  60. MOTERR(1:8)='LISTMOTS'
  61. INTERR(1)=2
  62. CALL ERREUR(1028)
  63. RETURN
  64. ENDIF
  65.  
  66.  
  67. C=========================================================
  68. C RECUP DU MCHAML
  69. C=========================================================
  70. C
  71. MCHEL1=IPCHE1
  72. SEGACT MCHEL1
  73. N1=MCHEL1.IMACHE(/1)
  74.  
  75. c on ne cree pas un nouveau MCHEL3 ordonne,
  76. c on fera la recherche de composante a la volee
  77.  
  78.  
  79. C=========================================================
  80. C CREATION DU MCHELM
  81. C=========================================================
  82. C
  83. L1=4
  84. N3=6
  85. C
  86. SEGINI MCHELM
  87. TITCHE='PVEC'
  88.  
  89. IFOCHE=MCHEL1.IFOCHE
  90. IPCHE3=MCHELM
  91. C____________________________________________________________________
  92. C
  93. C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES
  94. C____________________________________________________________________
  95. C
  96. DO 500 ISOUS=1,N1
  97. *
  98. * INITIALISATION
  99. *
  100.  
  101. MELEME = MCHEL1.IMACHE(ISOUS)
  102. IMACHE(ISOUS)= MELEME
  103. CONCHE(ISOUS)= MCHEL1.CONCHE(ISOUS)
  104. C
  105. C
  106. INFCHE(ISOUS,1)=0
  107. INFCHE(ISOUS,2)=0
  108. INFCHE(ISOUS,3)=MCHEL1.INFCHE(ISOUS,3)
  109. INFCHE(ISOUS,4)=MCHEL1.INFCHE(ISOUS,4)
  110. INFCHE(ISOUS,5)=0
  111. INFCHE(ISOUS,6)=MCHEL1.INFCHE(ISOUS,6)
  112.  
  113. C RECUP DU MCHAM3 DE LA ZONE
  114. MCHAM3=MCHEL1.ICHAML(ISOUS)
  115. SEGACT,MCHAM3
  116. C
  117. C CREATION DU MCHAML RESULTAT DE LA SOUS ZONE
  118. C
  119. N2=NINC
  120. SEGINI MCHAML
  121. ICHAML(ISOUS)=MCHAML
  122.  
  123. c
  124. c----- BOUCLE SUR LES COMPOSANTES RESULTATS ---------------
  125. c
  126. DO 110 ICOMP=1,NINC
  127.  
  128. c +++ recherche de la composante JCOMP1 +++
  129. JCOMP1=KCOMP1(ICOMP)
  130. DO 111 ICOMP1=1,MCHAM3.NOMCHE(/2)
  131. IF(MCHAM3.NOMCHE(ICOMP1).EQ.MLMOT1.MOTS(JCOMP1)) GOTO 112
  132. 111 CONTINUE
  133. c erreur: Impossible d'extraire la composante %m1:4 du champ par element
  134. MOTERR(1:4)=MLMOT1.MOTS(ICOMP)
  135. CALL ERREUR(236)
  136. RETURN
  137. 112 CONTINUE
  138. MELVA1= MCHAM3.IELVAL(ICOMP1)
  139. SEGACT MELVA1
  140.  
  141. c +++ Creation du MELVAL resultat +++
  142. NOMCHE(ICOMP)=MLMOTS.MOTS(ICOMP)
  143. TYPCHE(ICOMP)='REAL*8'
  144. N1PTEL= MELVA1.VELCHE(/1)
  145. N1EL = MELVA1.VELCHE(/2)
  146. N2PTEL= 0
  147. N2EL = 0
  148. c write(*,*) 'Composante',ICOMP,'/',NINC,' nom:',NOMCHE(ICOMP)
  149. c SEGINI MELVAL
  150. c IELVAL(ICOMP)=MELVAL
  151. c fait + simplement + bas
  152.  
  153. c +++ on met dans le resultat le produit des composantes +++
  154. c 1ere composante : -y
  155. IF(ICOMP.EQ.1) THEN
  156. SEGINI MELVAL
  157. DO IE= 1,N1EL
  158. DO IB= 1,N1PTEL
  159. VELCHE(IB,IE)=-1.*MELVA1.VELCHE(IB,IE)
  160. ENDDO
  161. ENDDO
  162. c 2eme composante : +x
  163. ELSEIF(ICOMP.EQ.2) THEN
  164. c DO IE= 1,N1EL
  165. c DO IB= 1,N1PTEL
  166. c VELCHE(IB,IE)=MELVA1.VELCHE(IB,IE)
  167. c ENDDO
  168. c ENDDO
  169. c ou + simplement
  170. SEGINI,MELVAL=MELVA1
  171. ELSE
  172. write(IOIMP,*) 'IDIM,ICOMP,NINC=',IDIM,ICOMP,NINC
  173. CALL ERREUR(5)
  174. ENDIF
  175. IELVAL(ICOMP)=MELVAL
  176.  
  177. cbp,2020 segdes,MELVAL
  178.  
  179. 110 CONTINUE
  180. c----- FIN DE BOUCLE SUR LES COMPOSANTES RESULTATS ---------------
  181. C
  182. SEGDES,MCHAM3
  183.  
  184. cbp,2020 segdes,MCHAML
  185.  
  186. 500 CONTINUE
  187. C____________________________________________________________________
  188. C
  189. C FIN DE BOUCLE SUR LES ZONES
  190. C____________________________________________________________________
  191.  
  192. segdes mchel1
  193.  
  194. RETURN
  195. END
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  

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