Télécharger champo.eso

Retour à la liste

Numérotation des lignes :

champo
  1. C CHAMPO SOURCE JK148537 23/08/21 21:15:05 11723
  2. SUBROUTINE CHAMPO(IPCHAM,IMOY1,IPCHPO,IRET)
  3. C=======================================================================
  4. C
  5. C TRANSFORME UN MCHAML EN CHPOINT
  6. C
  7. C
  8. C ATTENTION LES COMPOSANTES DE IPCHAM NE DOIVENT PAS ETRE ' '
  9. C ( DES MOT BLANCS )
  10. C
  11. C ENTREES
  12. C
  13. C IPCHAM=Pointeur sur un MCHAML
  14. C IMOY =1 si moyenne sur les elements, 0 si somme
  15. C
  16. C SORTIES
  17. C
  18. C IPCHPO=Pointeur sur un CHPOINT
  19. C IRET=1 OU 0 suivant succes ou non
  20. C Message d'erreur imprime si IRET=0
  21. C
  22. C
  23. C=======================================================================
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26. -INC SMCHAML
  27. -INC SMCHPOI
  28. -INC SMELEME
  29. -INC SMCOORD
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC TMTRAV
  33. *
  34. SEGMENT ICPR(nbpts)
  35. SEGMENT MTRA1
  36. CHARACTER*(LOCOMP) ICOMP(0)
  37. ENDSEGMENT
  38. SEGMENT MTRA2
  39. INTEGER MHAR(0)
  40. ENDSEGMENT
  41.  
  42. C Pour de l'optimisation
  43. CHARACTER*(LOCOMP) MO4a,MO4b
  44.  
  45.  
  46. * write(ioimp,*) 'coucou champo'
  47. * call ecrobj('MCHAML ',IPCHAM)
  48. * call prlist
  49. * CALL ACTOBJ('MCHAML ',IPCHAM,1)
  50.  
  51. C POUR LE CHAPEAU DU CHPOINT
  52. C Certaines SUBROUTINES envoie IMOY1 en CONSTANT EXPRESSION donc le modifier ne fait pas bon menage
  53. C Je le recopie IMOY <-- IMOY1
  54. IMOY=IMOY1
  55.  
  56. JFLAG=0
  57. IF (IMOY.GE.10) THEN
  58. JFLAG=1
  59. IMOY=IMOY-10
  60. ENDIF
  61. *
  62. * ACTIVATION DU MCHAML
  63. *
  64. IRET=1
  65. MCHELM=IPCHAM
  66. * COMME ON UTILISE INFCHE(??,3) ON S'ASSURE QU'IL EXISTE BIEN
  67. L1=TITCHE(/1)
  68. N1=INFCHE(/1)
  69. N3=MAX(INFCHE(/2),3)
  70. IF (N3.NE.INFCHE(/2)) SEGADJ MCHELM
  71. IFACHE=IFOCHE
  72. NSOUS =ICHAML(/1)
  73. C-----------------------------------------------------------------------
  74. C
  75. C BOUCLE SUR LES SOUS REFERENCES DU CHAMELEM
  76. C MISE EN PLACE DES NOMS DE COMPOSANTES DANS ICOMP
  77. C
  78. C-----------------------------------------------------------------------
  79. CALL oooprl(1)
  80. SEGINI MTRA1,MTRA2,ICPR
  81. CALL oooprl(0)
  82. NNNOE=0
  83. *
  84. * BOUCLE SUR LES SOUS ZONES
  85. *
  86. DO 100 ISOUS=1,NSOUS
  87. *
  88. * ACTIVATION DU MELEME
  89. *
  90. IVACHE = INFCHE(ISOUS,3)
  91. MELEME = IMACHE(ISOUS)
  92. MCHAML = ICHAML(ISOUS)
  93. if (mchaml.le.0) goto 100
  94.  
  95. *
  96. * RECOPIE DES NOMS DE COMPOSANTES
  97. *
  98. DO 110 IB=1,NOMCHE(/2)
  99. MO4a = NOMCHE(IB)
  100. DO 120 IC=1,ICOMP(/2)
  101. MO4b=ICOMP(IC)
  102. IF(MO4a.EQ.MO4b .AND. MHAR(IC).EQ.IVACHE) GOTO 110
  103. 120 CONTINUE
  104. ICOMP(**)=MO4a
  105. MHAR(**) =IVACHE
  106. 110 CONTINUE
  107. *
  108. * RECUPERATION DES NUMEROS DE NOEUDS
  109. *
  110. DO 111 JOP= 1,NUM(/2)
  111. DO 113 IOP = 1,NUM(/1)
  112. IPT= NUM(IOP,JOP)
  113. IF(ICPR(IPT).EQ.0) THEN
  114. NNNOE=NNNOE+1
  115. ICPR(IPT)=NNNOE
  116. ENDIF
  117. 113 CONTINUE
  118. 111 CONTINUE
  119. 100 CONTINUE
  120. *
  121. NNIN=ICOMP(/2)
  122. SEGINI MTRAV
  123. DO 112 IOP=1,NNIN
  124. INCO(IOP)=ICOMP(IOP)
  125. NHAR(IOP)=MHAR(IOP)
  126. 112 CONTINUE
  127. C
  128. C INITIALISATION DE CC STOCKANT LES VALEURS DU CHPOINT
  129. C
  130. C
  131. C
  132. C-----------------------------------------------------------------------
  133. C
  134. C BOUCLE SUR LES SOUS REFERENCES DU CHAMP PAR ELEMENT
  135. C
  136. C-----------------------------------------------------------------------
  137. DO 300 ISOUS=1,NSOUS
  138. *
  139. IVACHE=INFCHE(ISOUS,3)
  140. MELEME=IMACHE(ISOUS)
  141. MCHAML=ICHAML(ISOUS)
  142. if (mchaml.le.0) goto 300
  143. NCP=NOMCHE(/2)
  144. C
  145. NBNN =NUM(/1)
  146. NBELEM=NUM(/2)
  147. C
  148. C BOUCLE SUR LES COMPOSANTES LES ELEMENTS ET LES NOEUDS
  149. C
  150. DO 320 IB=1,NBELEM
  151. DO 3201 IC=1,NBNN
  152. C
  153. C REPERAGE D UN POINT
  154. IPT=ICPR(NUM(IC,IB))
  155. DO 330 ID=1,NCP
  156. MELVAL=IELVAL(ID)
  157. NBPTEL=VELCHE(/1)
  158. NEL =VELCHE(/2)
  159. IBMN=MIN(IB,NEL)
  160. IGMN=MIN(IC,NBPTEL)
  161. MO4a=NOMCHE(ID)
  162. DO 3301 IE=1,NNIN
  163. MO4b=ICOMP(IE)
  164. IF(MO4a.NE.MO4b .OR. IVACHE.NE.MHAR(IE)) GOTO 3301
  165. BVALT=0.D0
  166. *
  167. IF (JFLAG.EQ.1) THEN
  168. DO 331 ICEL=1,NBPTEL
  169. C
  170. C ADDITION DANS BB POUR LES MCHAML AUX NOEUDS
  171. C
  172. BVALT=BVALT+VELCHE(ICEL,IBMN)
  173. 331 CONTINUE
  174. BVALT=BVALT/NBPTEL
  175. BB(IE,IPT)=BB(IE,IPT)+BVALT
  176. ELSE
  177. BB(IE,IPT)=BB(IE,IPT)+VELCHE(IGMN,IBMN)
  178. ENDIF
  179. IBIN(IE,IPT)=IBIN(IE,IPT)+1
  180. 3301 CONTINUE
  181. 330 CONTINUE
  182. *
  183. IGEO(IPT)=NUM(IC,IB)
  184. 3201 CONTINUE
  185. 320 CONTINUE
  186. 300 CONTINUE
  187. *
  188. *
  189. IF (IMOY.EQ.1) THEN
  190. DO 340 IPT=1,NNNOE
  191. DO 3401 IE=1,NNIN
  192. IF (IBIN(IE,IPT).NE.0) THEN
  193. BB(IE,IPT)=BB(IE,IPT)/IBIN(IE,IPT)
  194. ELSE
  195. BB(IE,IPT)=0.D0
  196. ENDIF
  197. 3401 CONTINUE
  198. 340 CONTINUE
  199. ENDIF
  200. *
  201. CALL CRECHP(MTRAV,IPCHPO)
  202. SEGSUP MTRAV,ICPR,MTRA1,MTRA2
  203. MCHPOI=IPCHPO
  204. IFOPOI=IFACHE
  205. MTYPOI=TITCHE
  206. IF ( IMOY .EQ. 0) THEN
  207. * on somme les participations des elements: discret
  208. JATTRI(1) = 2
  209. ELSE
  210. * on prend la moyenne entre les éléments: diffus
  211. JATTRI(1) = 1
  212. ENDIF
  213.  
  214. END
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  

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