Télécharger evchpo.eso

Retour à la liste

Numérotation des lignes :

evchpo
  1. C EVCHPO SOURCE OF166741 24/10/25 21:15:05 12049
  2. SUBROUTINE EVCHPO(ICOUL,IBOPOI,IPOI,MEVOLL,CMOT,NCHPT,NMAIL)
  3. C======================================================================
  4. C OPTION CHPO DE L'OPERATEUR EVOL C
  5. C C
  6. C LA SYNTHAXE DE CETTE OPTION D'EVOL EST LA SUIVANTE : C
  7. C C
  8. C C
  9. C EV1 = EVOL (COUL) CHPO CHPT COMP LIGN; C
  10. C C
  11. C C
  12. C + COUL : COULEUR DE LA COURBE (FACULTATIVE) C
  13. C C
  14. C + CHPT : CHAMP-POINT C
  15. C C
  16. C + COMP : COMPOSANTE DU CHAMP POINT C
  17. C C
  18. C + LIGN : MAILLAGE D'UNE LIGNE (SEG2 ou SEG3) C
  19. C C
  20. C C
  21. C======================================================================
  22. IMPLICIT INTEGER(I-N)
  23. IMPLICIT REAL*8 (A-H,O-Z)
  24.  
  25. -INC CCNOYAU
  26. -INC PPARAM
  27. -INC CCOPTIO
  28. -INC SMEVOLL
  29. -INC SMCHPOI
  30. -INC SMLREEL
  31. -INC SMELEME
  32. -INC SMCOORD
  33. -INC SMLMOTS
  34. -INC CCASSIS
  35.  
  36. EXTERNAL EVCHi
  37. COMMON/EVCHC/NBTHR,ICPR1,MCHPOI,CMOT1
  38.  
  39. SEGMENT MVOL
  40. REAL*8 POSNO(JG)
  41. CHARACTER*(LONOM) NOMAB(JG)
  42. ENDSEGMENT
  43.  
  44. SEGMENT TTRAV
  45. INTEGER ILIS(IDIMM)
  46. ENDSEGMENT
  47.  
  48. SEGMENT ICPR1
  49. INTEGER IBIN1(nbpts),IBIN2(nbpts)
  50. REAL*8 XVAL1(nbpts)
  51. CHARACTER*(LONOM) CNOM2(nbpts)
  52. ENDSEGMENT
  53.  
  54. CHARACTER*(LOCOMP) CMOT1
  55. CHARACTER*(LONOM) CBLAN1
  56. CHARACTER*8 TYP1
  57. CHARACTER*(*) CMOT,NCHPT,NMAIL
  58. CHARACTER*11 UMOT1
  59. CHARACTER*12 UMOT2
  60. CHARACTER*5 UMOT3
  61. CHARACTER*72 TITRE
  62. REAL*8 PREC(3)
  63. LOGICAL NOMME,BCHP,BMAIL,BTHRD
  64.  
  65. C=======================================================================
  66.  
  67. CBLAN1 =' '
  68. TITRE ='CREE PAR EVOL CHPO'
  69. BCHP = NCHPT .EQ. CBLAN1
  70. BMAIL = NMAIL .EQ. CBLAN1
  71.  
  72. MCHPOI = IBOPOI
  73. MELEME = IPOI
  74. CALL LIGMAI(MELEME,TTRAV,1)
  75. IF(IERR.NE.0) RETURN
  76.  
  77. C Nombre de composantes du CHPOINT
  78. CALL NBCOMP(MCHPOI,'CHPOINT ',NBCO)
  79. IF(IERR.NE.0)RETURN
  80.  
  81. IF ( NBCO .EQ. 0)THEN
  82. CMOT1 = ' '
  83. ELSEIF(CMOT.EQ.' ')THEN
  84. IF(NBCO .EQ. 1)THEN
  85. MSOUPO = MCHPOI.IPCHP(1)
  86. CMOT1 = MSOUPO.NOCOMP(1)
  87. ELSE
  88. C Dans le cas ou il y a plusieurs composantes il faut en specifier 1
  89. CALL ERREUR(21)
  90. RETURN
  91. ENDIF
  92. ELSE
  93. CMOT1 = CMOT
  94. ENDIF
  95.  
  96. JG =TTRAV.ILIS(/1)
  97. SEGINI,MLREEL,MLREE1,ICPR1,MVOL
  98. NBTHR=NBTHRS
  99.  
  100. IF((NBTHR.EQ.1).OR.(NBTHRS.EQ.1).OR. (oothrd.GT.0)) THEN
  101. NBTHR = 1
  102. BTHRD =.FALSE.
  103. ELSE
  104. BTHRD =.TRUE.
  105. C Initialisation des threads
  106. CALL THREADII
  107. ENDIF
  108.  
  109. SEGACT ITABOC*MOD,ITABOD*MOD,ITABOB*MOD
  110. if(nbesc.ne.0) SEGACT,IPILOC
  111. IF(BTHRD) THEN
  112. C Lancement du travail en parallèle
  113. DO ith=2,NBTHR
  114. CALL THREADID(ith, EVCHi)
  115. ENDDO
  116. C Lancement du travail sur le maitre
  117. CALL EVCHi(1)
  118.  
  119. C Attente de la fin du travail des threads
  120. DO ith=2,NBTHR
  121. CALL THREADIF(ith)
  122. ENDDO
  123.  
  124. C Stop des threads
  125. CALL THREADIS
  126.  
  127. ELSE
  128. C Dans les ASSISTANTS ou en SEQUENTIEL on invoque directement la
  129. C SUBROUTINE qui fait le travail avec ses arguments
  130. ith=1
  131. CALL EVCH1(NBTHR,ith,ICPR1,MCHPOI,CMOT1)
  132. ENDIF
  133. if(nbesc.ne.0) SEGDES,IPILOC
  134.  
  135.  
  136. C BOUCLE SUR TOUS LES NOEUDS DE LA LIGNE
  137. C IBOC : Nombre de POINTS nommes
  138. IBOC =0
  139. ZMABS=0.D0
  140.  
  141. SEGACT,MCOORD
  142. DO INOLIG=1,JG
  143. NN=TTRAV.ILIS(INOLIG)
  144.  
  145. C Calcul de l'agscisse curviligne
  146. IF(INOLIG .EQ. 1) THEN
  147. DO IT=1,IDIM
  148. PREC(IT) = XCOOR((NN-1)*(IDIM+1) + IT)
  149. ENDDO
  150. ZMABS = 0.D0
  151.  
  152. ELSE
  153. TOTAL = 0.D0
  154. IDEB =(NN-1)*(IDIM+1)
  155. DO IT=1,IDIM
  156. XCOO = XCOOR(IDEB + IT)
  157. TOTAL = TOTAL + (XCOO - PREC(IT))**2
  158. PREC(IT) = XCOO
  159. ENDDO
  160. ZMABS = ZMABS + (TOTAL**0.5D0)
  161. ENDIF
  162.  
  163. C Le POINT est-il nomme
  164. NOMME=(ICPR1.IBIN2(NN) .EQ. 1)
  165. IF(NOMME)THEN
  166. IBOC =IBOC+1
  167. MVOL.POSNO (IBOC)=ZMABS
  168. MVOL.NOMAB (IBOC)=ICPR1.CNOM2(NN)
  169. ENDIF
  170.  
  171. IF(ICPR1.IBIN1(NN) .EQ. 1)THEN
  172. C Le POINT est dans le CHPOINT
  173. MLREE1.PROG(INOLIG)= ICPR1.XVAL1(NN)
  174. ELSE
  175. MLREE1.PROG(INOLIG)= 0.D0
  176. ENDIF
  177. MLREEL.PROG(INOLIG) = ZMABS
  178. ENDDO
  179. SEGDES,MCOORD
  180.  
  181. C Construction du resultat
  182. IF(IBOC.EQ.0) THEN
  183. N=1
  184. ELSE
  185. N=2
  186. ENDIF
  187. SEGINI,MEVOLL
  188. C
  189. C CREATION DU EVOL CONTENANT LES NOMS DES POINTS
  190. C
  191. IF(IBOC.NE.0) THEN
  192. SEGINI KEVOLL
  193. *MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM IIIIIII
  194. * DANS NOMAB ON A LES POINTS QUALIFIES IIIIIII
  195. * IBOC LE NOMBRE DE POINTS QUALIFIES IIII
  196. * DANS POSNO LA POSITION DES POINTS QUALIFIES IIII
  197. * MLREEL : ABSCISSE DES POINTS IIII
  198. * MLREE1 : ORDONNEE DES POINTS IIIIII
  199. JGN=LONOM
  200. JGM=IBOC
  201. SEGINI MLMOTS
  202. JG=IBOC
  203. SEGINI MLREE2
  204. IPROGX=MLREE2
  205. IPROGY=MLMOTS
  206. TYPX ='LISTREEL'
  207. TYPY ='LISTMOTS'
  208. IEVOLL(2)=KEVOLL
  209. NUMEVY='MARQ'
  210. NUMEVX=ICOUL
  211. NOMEVX='ABS'
  212. NOMEVY=CMOT1
  213. DO 9 I=1,IBOC
  214. MOTS(I) =MVOL.NOMAB(I)
  215. MLREE2.PROG(I)=MVOL.POSNO(I)
  216. 9 CONTINUE
  217. KEVTEX='POINTS NOMMES APPARTENANT A LA LIGNE'
  218. LSTYL = 1
  219. MMARQ = 0
  220. KTAIL = 3
  221. ENDIF
  222.  
  223. SEGINI KEVOLL
  224. IEVOLL(1)= KEVOLL
  225. ITYEVO='REEL'
  226. TYPX ='LISTREEL'
  227. TYPY ='LISTREEL'
  228. IPROGX= MLREEL
  229. IPROGY= MLREE1
  230. IEVTEX= TITREE
  231. NOMEVX= 'ABS'
  232. NOMEVY= CMOT1
  233. NUMEVX= ICOUL
  234. NUMEVY= 'REEL'
  235. KEVTEX=TITRE
  236. LSTYL = 1
  237. MMARQ = 0
  238. KTAIL = 3
  239.  
  240. IF (BCHP .AND. BMAIL) THEN
  241. UMOT1= 'COMPOSANTE '
  242. UMOT2= ' DU CHPOINT '
  243. UMOT3= ' SUR '
  244. TITRE=UMOT1//CMOT1//UMOT2//NCHPT//UMOT3//NMAIL
  245. KEVTEX=TITRE
  246. ENDIF
  247. SEGSUP TTRAV,MVOL,ICPR1
  248.  
  249. END
  250.  
  251.  
  252.  

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