Télécharger provc2.eso

Retour à la liste

Numérotation des lignes :

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

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