Télécharger meldiv.eso

Retour à la liste

Numérotation des lignes :

meldiv
  1. C MELDIV SOURCE CB215821 20/11/25 13:34:14 10792
  2. SUBROUTINE MELDIV(MTABD,MCHPOI,MCHELM,KPOIND)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C
  7. C Ce Sp crée un MCHAML a partir d'un FLOTTANT ou d'un CHPOIN
  8. C Le MCHAML en retour est jetable et est calcule aux pts d'integrations
  9. C Le support géométrique du MCHELM est compatible avec le schema
  10. C d'intégration de l'opérateur
  11. C c'est le MELEME sauf pour les MACRO (INEFMD=2) avec CENTREP0
  12. C CENTREP1 et MSOMMET où MELEME=MACRO1
  13. C----------------------------------------------------------------------
  14. C HISTORIQUE : 20/10/01 : Création
  15. C
  16. C HISTORIQUE :
  17. C
  18. C
  19. C---------------------------
  20. C Paramètres Entrée/Sortie :
  21. C---------------------------
  22. C
  23. C E/ MTABD : Objet model de la zone
  24. C E/ MCHPOI : CHPOINT valeur du coef si chpoint (chpoint vecteur)
  25. C /S MCHELM : Chamelem pts d'intégration pour le COEF
  26. C E/ KPOIND : ENTIER type du support GÉométrique DUAL du shéma
  27. C d'intégration différent de KPOINC celui du coef
  28. C cette info sert à la construction du Chamelem
  29. C----------------------------------------------------------------------
  30. C KPOIN = 0->SOMMET 1-> FACE 2-> CENTRE 3-> CENTREP0 4-> CENTREP1 5-> MSOMMET
  31. C************************************************************************
  32.  
  33. -INC SIZFFB
  34. POINTEUR IZF1.IZFFM,IZH2.IZHR,IZFD.IZFFM
  35. SEGMENT SAJT
  36. REAL*8 AJT(IDIM,IDIM,NPG)
  37. ENDSEGMENT
  38. -INC SMCHAML
  39. -INC SMCHPOI
  40. -INC SMELEME
  41. POINTEUR IGEOM.MELEME
  42. POINTEUR MELEMD.MELEME,SPGD.MELEME
  43. -INC SMLENTI
  44. -INC SMCOORD
  45.  
  46. -INC PPARAM
  47. -INC CCOPTIO
  48. -INC CCGEOME
  49. CHARACTER*4 NOMD4
  50. CHARACTER*8 TYPE,NOM0
  51. DIMENSION XPOI(3)
  52. C*****************************************************************************
  53. CMELDIV
  54. c write(6,*)' DEBUT MELDIV '
  55. XPETI=1.D-30
  56. IAXI=0
  57. IF(IFOMOD.EQ.0)IAXI=2
  58. C
  59. CALL ACME(MTABD,'INEFMD',INEFMD)
  60.  
  61. CALL LEKTAB(MTABD,'MAILLAGE',MELEME)
  62. IF(INEFMD.EQ.2.AND.
  63. & (KPOIND.EQ.3.OR.KPOIND.EQ.4.OR.KPOIND.EQ.5))THEN
  64. CALL LEKTAB(MTABD,'MACRO1',MELEME)
  65. ENDIF
  66.  
  67. SEGACT MELEME
  68.  
  69. L1=72
  70. N1=MAX(1,LISOUS(/1))
  71. N2=1
  72. N3=6
  73. SEGINI MCHELM
  74.  
  75. C-------------------------------------------------------------------------
  76. C__CHPOINT
  77. SEGACT MCHPOI
  78. NSOUPO=IPCHP(/1)
  79.  
  80. IF(NSOUPO.EQ.1) THEN
  81. MSOUPO=IPCHP(1)
  82. SEGACT MSOUPO
  83. IGEOM=IGEOC
  84. MPOVAL=IPOVAL
  85. SEGDES MSOUPO
  86. SEGACT MPOVAL
  87. NC=VPOCHA(/2)
  88. IF(NC.NE.IDIM)THEN
  89. CALL ERREUR(788)
  90. RETURN
  91. ENDIF
  92. ELSE
  93. CALL ERREUR(788)
  94. RETURN
  95. ENDIF
  96.  
  97. c write(6,*)' IGEOM=',IGEOM
  98. CALL KRIPAD(IGEOM,MLENTI)
  99.  
  100. KPOINC=0
  101. NOMD4= ' '
  102. CALL LEKTAB(MTABD,'MAILLAGE',MELEMD)
  103. CALL LEKTAB(MTABD,'SOMMET',SPGD)
  104. CALL VERPAD(MLENTI,SPGD,IRET)
  105. c write(6,*)' SOMMET (0 OK) ',SPGD,iret
  106. SEGDES SPGD
  107. IF(IRET.EQ.0)GO TO 180
  108. KPOINC=2
  109. NOMD4= ' '
  110. CALL LEKTAB(MTABD,'CENTRE',MELEMD)
  111. CALL LEKTAB(MTABD,'CENTRE',SPGD)
  112. CALL VERPAD(MLENTI,SPGD,IRET)
  113. c write(6,*)' CENTRE (0 OK) ',SPGD,iret
  114. SEGDES SPGD
  115. IF(INEFMD.EQ.3)THEN
  116. KPOINC=3
  117. NOMD4= 'PRP0'
  118. ENDIF
  119. IF(IRET.EQ.0)GO TO 180
  120. KPOINC=5
  121. NOMD4= 'P1P1'
  122. IF(INEFMD.EQ.2)NOMD4= 'MCF1'
  123. IF(INEFMD.EQ.3)NOMD4= 'PFP1'
  124. CALL LEKTAB(MTABD,'MMAIL ',MELEMD)
  125. CALL LEKTAB(MTABD,'MSOMMET',SPGD)
  126. CALL VERPAD(MLENTI,SPGD,IRET)
  127. c write(6,*)'MSOMMET (0 OK) ',SPGD,iret
  128. SEGDES SPGD
  129. IF(IRET.EQ.0)GO TO 180
  130. IF(INEFMD.EQ.2.OR.INEFMD.EQ.3)THEN
  131. KPOINC=4
  132. NOMD4= ' '
  133. IF(INEFMD.EQ.2)NOMD4= 'MCP1'
  134. IF(INEFMD.EQ.3)NOMD4= 'PRP1'
  135. CALL LEKTAB(MTABD,'ELTP1NC ',MELEMD)
  136. CALL LEKTAB(MTABD,'CENTREP1',SPGD)
  137. CALL VERPAD(MLENTI,SPGD,IRET)
  138. c write(6,*)'CENTREP1 (0 OK) ',SPGD,iret
  139. SEGDES SPGD
  140. IF(IRET.EQ.0)GO TO 180
  141. KPOINC=3
  142. NOMD4= ' '
  143. IF(INEFMD.EQ.2)NOMD4= 'MCP0'
  144. IF(INEFMD.EQ.3)NOMD4= 'PRP0'
  145. CALL LEKTAB(MTABD,'CENTREP0',MELEMD)
  146. CALL LEKTAB(MTABD,'CENTREP0',SPGD)
  147. CALL VERPAD(MLENTI,SPGD,IRET)
  148. SEGDES SPGD
  149. IF(IRET.EQ.0)GO TO 180
  150. ENDIF
  151.  
  152. C__CHPOINT_SUPPORT_INCONU
  153. C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
  154. MOTERR(1: 8) = 'CHPOINT '
  155. MOTERR(9:16) = ' COEF '
  156. CALL ERREUR(788)
  157. RETURN
  158. 180 CONTINUE
  159. SEGDES IGEOM
  160. C__CHPOINT
  161. c write(6,*)' CAs CHPOIN '
  162.  
  163. SEGACT MELEMD
  164.  
  165. NKD=0
  166. DO 191 L=1,MAX(1,LISOUS(/1))
  167. IPT1=MELEME
  168. IPT2=MELEMD
  169. IF(LISOUS(/1).NE.0)IPT1=LISOUS(L)
  170. SEGACT IPT1
  171. IF(MELEMD.LISOUS(/1).NE.0)IPT2=MELEMD.LISOUS(L)
  172. SEGACT IPT2
  173. IF(MELEMD.LISOUS(/1).NE.0)NKD=0
  174. MP=IPT2.NUM(/1)
  175.  
  176. NOM0 = NOMS(IPT1.ITYPEL)//NOMD4
  177. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  178. SEGACT IZFFM
  179. IZHR=KZHR(1)
  180. IZF1=KTP(1)
  181. IZH2=KZHR(2)
  182. SEGACT IZHR*MOD
  183.  
  184. IZFD=IZF1
  185. IF(KPOINC.EQ.0)IZFD=IZFFM
  186. SEGACT IZFD*MOD
  187. IF(MP.NE.IZFD.FN(/1))THEN
  188. write(6,*)' Gross problem '
  189. write(6,*)' INEFMD=',INEFMD,' NOMD4=',NOMD4
  190. write(6,*)' MP=',MP,' KPOINC.=',KPOINC,' IZFD.FN(/1)='
  191. & ,IZFD.FN(/1)
  192. ENDIF
  193.  
  194.  
  195. NES=GR(/1)
  196. NPG=GR(/3)
  197.  
  198. NBNN =IPT1.NUM(/1)
  199. NBELEM=IPT1.NUM(/2)
  200. SEGINI MCHAML
  201.  
  202. IDU=IDIM
  203. SEGINI SAJT
  204. N1PTEL=NPG*IDU
  205. N1EL =NBELEM
  206. N2PTEL=0
  207. N2EL=0
  208. IMACHE(L)=IPT1
  209. ICHAML(L)=MCHAML
  210.  
  211. SEGINI MELVAL
  212. IELVAL(1)=MELVAL
  213.  
  214. c write(6,*)' Avt BCL 192 ',N1EL,nbnn,N1PTEL
  215. DO 192 K=1,N1EL
  216.  
  217. DO 109 J=1,NBNN
  218. J1=IPT1.NUM(J,K)
  219. DO 109 N=1,IDIM
  220. XYZ(N,J)=XCOOR((J1-1)*(IDIM+1)+N)
  221. 109 CONTINUE
  222.  
  223. CALL CALJBR(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,
  224. & IDIM,NBNN,NPG,IAXI,AIRE,AJ,SGN)
  225.  
  226. NKD=NKD+1
  227.  
  228. DO 194 LG=1,NPG
  229. U=0.D0
  230. DO 193 N=1,IDIM
  231. DO 193 I=1,MP
  232. I1=LECT(IPT2.NUM(I,NKD))
  233. c U=U+IZFD.FN(I,LG)*VPOCHA(I1,N)
  234. U=U+HR(N,I,LG)*VPOCHA(I1,N)
  235. 193 CONTINUE
  236. VELCHE(LG,K)=U
  237. 194 CONTINUE
  238.  
  239. IF(IAXI.NE.0)THEN
  240. DO 196 LG=1,NPG
  241. U=0.D0
  242. DO 195 I=1,MP
  243. I1=LECT(IPT2.NUM(I,NKD))
  244. U=U+FN(I,LG)*VPOCHA(I1,1)/RPG(LG)
  245. 195 CONTINUE
  246. VELCHE(LG,K)=VELCHE(LG,K)+U
  247. 196 CONTINUE
  248. ENDIF
  249.  
  250. 192 CONTINUE
  251.  
  252.  
  253. SEGDES MELVAL
  254. SEGDES IPT1,MCHAML
  255. SEGSUP IZFFM,IZHR,IZF1,IZH2,SAJT
  256. 191 CONTINUE
  257. SEGDES MCHPOI,MSOUPO,MPOVAL
  258. SEGDES MCHELM,MELEME
  259.  
  260. SEGSUP MLENTI
  261.  
  262.  
  263.  
  264. C*************************************************************************
  265.  
  266. c write(6,*)' FIN MELDIV '
  267. RETURN
  268. 1001 FORMAT(20(1X,I5))
  269. 1002 FORMAT(10(1X,1PE11.4))
  270. END
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  

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