Télécharger zkonv.eso

Retour à la liste

Numérotation des lignes :

zkonv
  1. C ZKONV SOURCE PV 22/01/18 21:15:11 11267
  2. SUBROUTINE ZKONV(MTABX,MTAB1)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C
  7. C CET OPERATEUR DISCRETISE LE TERME DE TRANSPORT
  8. C EN 2D SUR LES ELEMENTS QUA4 ET TRI3 PLAN OU AXI
  9. C EN 3D SUR LES ELEMENTS CUB8 ET PRI6
  10. C EN 0D SUR LES ELEMENTS POI1
  11. C
  12. C SYNTAXE :
  13. C ---------
  14. C
  15. C KONV RO UN <MU> INCO TN :
  16. C
  17. C COEFFICIENTS :
  18. C --------------
  19. C
  20. C
  21. C ALF (SCAL DOMA) DIFFUSIVITE THERMIQUE
  22. C (SCAL ELEM)
  23. C
  24. C INCONNUES :
  25. C -----------
  26. C
  27. C TN CHAMP DE TEMPERATURE
  28. C
  29. C************************************************************************
  30.  
  31. -INC CCVQUA4
  32.  
  33. -INC PPARAM
  34. -INC CCOPTIO
  35. -INC CCGEOME
  36. -INC SMCOORD
  37. -INC SMLENTI
  38. POINTEUR IZIPAD.MLENTI,IPADI.MLENTI,IPADS.MLENTI,IPADU.MLENTI
  39. -INC SMELEME
  40. POINTEUR MELEMS.MELEME,MELEMC.MELEME
  41. POINTEUR MELEMA.MELEME,MELEMF.MELEME
  42. -INC SMCHAML
  43. -INC SMCHPOI
  44. POINTEUR MZRO.MPOVAL,MZUN.MPOVAL,MZMU.MPOVAL,MZTN.MPOVAL
  45. POINTEUR MZDT.MPOVAL,MZPHI.MPOVAL
  46. POINTEUR IZG1.MCHPOI, IZG2.MCHPOI ,MRO.MCHPOI
  47. POINTEUR IZGG1.MPOVAL,IZGG2.MPOVAL
  48. POINTEUR IZTG2.MCHPOI,IZTG3.MCHPOI
  49. POINTEUR IZTGG2.MPOVAL,IZTGG3.MPOVAL
  50. POINTEUR IZTU1.MPOVAL,IZTU2.MPOVAL,IZTU3.MPOVAL,IZTU4.MPOVAL
  51. POINTEUR IZTG5.MPOVAL
  52. POINTEUR IZVOL.MPOVAL,IZTCO.MPOVAL,IZDIAE.MPOVAL,IZTDI.MPOVAL
  53.  
  54. -INC SIZFFB
  55. POINTEUR IPM.IZAFM
  56.  
  57. SEGMENT IMATRS
  58. INTEGER LIZAFS(NBSOUS,NBME)
  59. ENDSEGMENT
  60. POINTEUR IPS1.IZAFM,IPS2.IZAFM,IPS3.IZAFM,IPMS.IZAFM
  61.  
  62. -INC SMTABLE
  63. POINTEUR KIZG.TABLE,MTABX.MTABLE,MTABT.MTABLE
  64. POINTEUR KINC.TABLE,RESU.MTABLE
  65. POINTEUR MTABZ.MTABLE
  66. -INC SMLMOTS
  67. POINTEUR LINCO.MLMOTS
  68. CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,CHAI,TYPC,TYPCFI,NOM
  69. CHARACTER*8 NOM0,NOMII
  70. REAL*8 XYZI(24)
  71. LOGICAL LOGI
  72. PARAMETER (NTB=2)
  73. CHARACTER*8 LTAB(NTB)
  74. DIMENSION KTAB(NTB),IXV(3)
  75. * SAVE IPAS
  76. * data ipas/1/
  77. C*****************************************************************************
  78.  
  79. CKONV
  80. C WRITE(6,*)' Opérateur KONV'
  81. C
  82. C*****************************************************************************
  83. C
  84.  
  85. C*****************************************************************************
  86. C Traitement des options
  87. C KIMPL = 0 -> EXPL 1 -> IMPL 2 -> CN
  88. C KFORM = 0 -> SI 1 -> EF 2 -> VF 3 -> EFMC
  89. C IDCEN = 0 -> rien 1 -> CENTREE 2 -> HU.BR 3 -> SUPG 4 -> T VISQ
  90.  
  91. AIMPL=1.D0
  92. KIMPL=0
  93. KFORM=1
  94. IKOMP=0
  95. IDCEN=2
  96. IAXI=0
  97. IF(IFOMOD.EQ.0)IAXI=2
  98. KOPTI=0
  99. TYPE=' '
  100. CALL ACMO(MTABX,'KOPT',TYPE,IENT)
  101. IF(TYPE.EQ.'TABLE')KOPTI=IENT
  102. IF(KOPTI.NE.0)THEN
  103. TYPE=' '
  104. CALL ACMO(KOPTI,'IDCEN',TYPE,IENT)
  105. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'IDCEN',IDCEN)
  106. TYPE=' '
  107. CALL ACMO(KOPTI,'IKOMP',TYPE,IENT)
  108. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'IKOMP',IKOMP)
  109. TYPE=' '
  110. CALL ACMO(KOPTI,'KIMPL',TYPE,IENT)
  111. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'KIMPL',KIMPL)
  112. TYPE=' '
  113. CALL ACMO(KOPTI,'KFORM',TYPE,IENT)
  114. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'KFORM',KFORM)
  115. CALL ACMF(KOPTI,'AIMPL',AIMPL)
  116. ENDIF
  117.  
  118. C*****************************************************************************
  119. C*****************************************************************************
  120. C
  121. C ----- Cas d'un schéma Explicite en Volume Fini :
  122. C ----------------------------------------
  123. if (KIMPL .EQ. 0 .and. KFORM . EQ. 2) then
  124. call ckon(MTABX)
  125. RETURN
  126. ENDIF
  127. C*****************************************************************************
  128. C*****************************************************************************
  129. C
  130. CALL ACMM(MTABX,'NOMZONE',NOMZ)
  131. CALL LEKTAB(MTABX,'DOMZ',MTABZ)
  132. IF(MTABZ.EQ.0)THEN
  133. WRITE(6,*)' Opérateur KONV :'
  134. WRITE(6,*)' On ne trouve pas l''indice DOMZ ? '
  135. RETURN
  136. ENDIF
  137.  
  138. CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
  139. IF(MELEME.EQ.0)GO TO 90
  140. SEGACT MELEME
  141.  
  142. CALL LEKTAB(MTABZ,'XXDXDY',MCHPOI)
  143. IF(MCHPOI.EQ.0)GO TO 90
  144. CALL LICHT(MCHPOI,IZTCO,TYPC,IGEOM)
  145. NELZ=IZTCO.VPOCHA(/1)
  146.  
  147. TYPE=' '
  148. CALL ACMO(MTABZ,'SOMMET',TYPE,MELEMS)
  149. IF(TYPE.NE.'MAILLAGE')GO TO 90
  150.  
  151. TYPE=' '
  152. CALL ACMO(MTABZ,'CENTRE',TYPE,MELEMC)
  153. IF(TYPE.NE.'MAILLAGE')GO TO 90
  154.  
  155. C*************************************************************************
  156. C VERIFICATIONS SUR LES INCONNUES
  157. C write(6,*)' Verification des inconnues '
  158.  
  159. TYPE='LISTMOTS'
  160. CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
  161. SEGACT LINCO
  162.  
  163. NBINC=LINCO.MOTS(/2)
  164. IF((NBINC.NE.1).AND.(KFORM.NE.3))THEN
  165. WRITE(6,*)' Opérateur KONV :'
  166. WRITE(6,*)'Nombre d''inconnues incorrecte : ',NBINC,' On attend 1'
  167. RETURN
  168. ENDIF
  169.  
  170. IF((NBINC.NE.2).AND.(KFORM.EQ.3))THEN
  171. WRITE(6,*)' Opérateur KONV :'
  172. WRITE(6,*)'Nombre d''inconnues incorrecte : ',NBINC,' On attend 2'
  173. RETURN
  174. ENDIF
  175.  
  176. NOMI=LINCO.MOTS(1)
  177. IF (KFORM.EQ.3) NOMII=LINCO.MOTS(2)
  178.  
  179. CALL LEKTAB(MTAB1,'INCO',KINC)
  180. IF(KINC.EQ.0)THEN
  181. WRITE(6,*)' Opérateur KONV :'
  182. WRITE(6,*)'Il n''y a pas de table INCO ? ?.'
  183. RETURN
  184. ENDIF
  185.  
  186. TYPE=' '
  187. CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
  188. IF(TYPE.NE.'CHPOINT ')THEN
  189. WRITE(6,*)' Opérateur KONV :'
  190. WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
  191. RETURN
  192. ELSE
  193. CALL LICHT(MCHPOI,IZTU1,TYPC,MELEM1)
  194. MZTN=IZTU1
  195. IKT=0
  196. ENDIF
  197.  
  198. IF (KFORM.EQ.3) THEN
  199. TYPE=' '
  200. CALL ACMO(KINC,NOMII,TYPE,MCHPOI)
  201. IF(TYPE.NE.'CHPOINT ')THEN
  202. WRITE(6,*)' Opérateur KONV :'
  203. WRITE(6,*)' L objet CHPOINT ',NOMII,
  204. & ' n existe pas dans la table'
  205. RETURN
  206. ELSE
  207. CALL LICHT(MCHPOI,IZTU2,TYPCFI,IGEOM0)
  208. MZPHI=IZTU2
  209. IKT=0
  210. ENDIF
  211. END IF
  212. C*****************************************************************************
  213. C Le domaine de definition est donne par le SPG de la premiere inconnue
  214. C Les inconnues suivantes devront posseder ce meme pointeur
  215. C On verifie que les points de la zone sont tous inclus dans ce SPG
  216.  
  217. C? CALL KRIPAD(MELEMS,MLENTI)
  218. CALL KRIPAD(MELEM1,IPADI)
  219. IPADU=IPADI
  220. IPADS=IPADI
  221. CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
  222. IF(MELEM1.NE.MELEMS)IPADS=0
  223. ** mise en comment aire des lignes suivantes car ipas ne ouvait etre nul
  224. * IF(IPAS.EQ.0)THEN
  225. * IF (KFORM.EQ.3) CALL KRIPAD(MELEMC,MLENT1)
  226. * CALL VERPAD(IPADI,MELEME,IRET)
  227. * IF(IRET.NE.0)THEN
  228. * WRITE(6,*)' Opérateur KONV'
  229. * WRITE(6,*)' La zone ',NOMZ,' n''est pas incluse dans le domaine'
  230. * IPAS=0
  231. * RETURN
  232. * ENDIF
  233. * ENDIF
  234.  
  235. C*****************************************************************************
  236.  
  237.  
  238. C*****************************************************************************
  239. C Lecture du ou des coefficients
  240. C Type du coefficient :
  241. C IK1=0 CHPOINT IK1=1 scalaire IK1=2 vecteur
  242.  
  243. C write(6,*)' Opérateur KONV lecture des coefficients'
  244. CALL ACME(MTABX,'IARG',IARG)
  245. IF((IARG.LT.2.AND.IDCEN.EQ.1)
  246. &.OR.(IARG.LT.3.AND.IDCEN.LT.4)
  247. &.OR.(IARG.LT.4.AND.IDCEN.GE.4))THEN
  248. WRITE(6,*)' Opérateur KONV : option incompréssible '
  249. WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
  250. WRITE(6,*)' On attend 2 ou plus suivant l''option'
  251. RETURN
  252. ENDIF
  253.  
  254. C 1er coefficient Densité
  255. IXV(1)=MELEMC
  256. IXV(2)=1
  257. IXV(3)=0
  258. IRET =0
  259. CALL LEKCOF('Opérateur KONV :',
  260. & MTABX,KINC,1,IXV,MRO,MZRO,NPT1,NC1,IKR,IRET)
  261. IF(IRET.EQ.0)GO TO 90
  262.  
  263. IZTGG2=MZRO
  264. IZTGG3=MZRO
  265.  
  266. C 2ème coefficient UN , champ de vitesse transportant
  267. IXV(1)=-MELEMS
  268. IXV(2)=0
  269. IXV(3)=1
  270. IRET =0
  271. CALL LEKCOF('Opérateur KONV :',
  272. & MTABX,KINC,2,IXV,MUN,MZUN,NPTU,NC2,IKU,IRET)
  273. IF(IRET.EQ.0)GO TO 90
  274. IF(IKU.EQ.2)IKU=1
  275. IF(IPADS.EQ.0.AND.IKU.EQ.0)CALL KRIPAD(MELEMS,IPADS)
  276. IPADU=IPADS
  277.  
  278. IF(IARG.GE.3)THEN
  279. C 3ème coefficient viscosité
  280. IXV(1)=MELEMC
  281. IXV(2)=1
  282. IXV(3)=0
  283. IRET =0
  284. CALL LEKCOF('Opérateur KONV :',
  285. & MTABX,KINC,3,IXV,MMU,MZMU,NPT3,NC3,IKM,IRET)
  286. IF(IRET.EQ.0)GO TO 90
  287. ELSE
  288. CALL LEKTAB(MTABX,'ARGS3',MMU)
  289. CALL LICHT(MMU,MZMU,TYPC,IGEOM0)
  290. MZMU.VPOCHA(1,1)=1.D0
  291. IKM=1
  292.  
  293. ENDIF
  294.  
  295. IF(IARG.EQ.4)THEN
  296. C 4ème coefficient Dt
  297. IXV(1)=0
  298. IXV(2)=1
  299. IXV(3)=0
  300. IRET =0
  301. CALL LEKCOF('Opérateur KONV :',
  302. & MTABX,KINC,4,IXV,MDT,MZDT,NPT4,NC4,IKT,IRET)
  303. IF(IRET.EQ.0)RETURN
  304. DT=MZDT.VPOCHA(1,1)
  305. ELSE
  306. DT=0.
  307.  
  308. ENDIF
  309.  
  310. C write(6,*)' Opérateur KONV : Fin lecture Arguments '
  311. C Fin lecture Arguments ************************************************
  312.  
  313.  
  314. C*************************************************************************
  315. IF(KFORM.EQ.0)THEN
  316. C CAS FORMULATION EF SI (GRESHO)
  317.  
  318. WRITE(6,*)' Operateur KONV '
  319. WRITE(6,*)' Option invalide '
  320. GO TO 90
  321. C*************************************************************************
  322. ELSEIF(KFORM.EQ.1)THEN
  323. C CAS FORMULATION EF
  324.  
  325.  
  326. NUTOEL=0
  327. NINKO=IZTU1.VPOCHA(/2)
  328. SEGACT MELEME
  329. NBSOUS=LISOUS(/1)
  330. IF(NBSOUS.EQ.0)NBSOUS=1
  331.  
  332. NRIGE=7
  333. NKID =9
  334. NKMT =7
  335. NMATRI=1
  336. SEGINI MATRIK
  337. IRIGEL(1,1)=MELEME
  338. IRIGEL(2,1)=MELEME
  339. IRIGEL(7,1)=2
  340. NBOP=0
  341. NBME=NINKO
  342. SEGINI IMATRI,IMATRS
  343. C write(6,*)' Creation IMATRI=',imatri
  344. IRIGEL(4,1)=IMATRI
  345. KSPGP=MELEMS
  346. KSPGD=MELEMS
  347.  
  348. IF(NBME.EQ.1)THEN
  349. LISPRI(1)=NOMI(1:4)//' '
  350. LISDUA(1)=NOMI(1:4)//' '
  351. ELSE
  352. DO 102 I=1,NBME
  353. WRITE(NOM,FMT='(I1,A7)')I,NOMI(1:7)
  354. LISPRI(I)=NOM(1:4)//' '
  355. LISDUA(I)=NOM(1:4)//' '
  356. 102 CONTINUE
  357. ENDIF
  358.  
  359. DO 101 L=1,NBSOUS
  360. IPT1=MELEME
  361. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  362. SEGACT IPT1
  363. NOM0=NOMS(IPT1.ITYPEL)//' '
  364. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  365. SEGACT IZFFM
  366. IZHR=KZHR(1)
  367. SEGACT IZHR
  368. NES=GR(/1)
  369. NPG=GR(/3)
  370.  
  371.  
  372. NP = IPT1.NUM(/1)
  373. MP = NP
  374. NBEL=IPT1.NUM(/2)
  375. SEGINI IPM1,IPS1
  376. LIZAFM(L,1)=IPM1
  377. LIZAFS(L,1)=IPS1
  378. IPM2=IPM1
  379. IPM3=IPM1
  380. IPS2=IPS1
  381. IPS3=IPS1
  382. IF(NBME.GE.2)THEN
  383. SEGINI IPM2,IPS2
  384. LIZAFM(L,2)=IPM2
  385. LIZAFS(L,2)=IPS2
  386. ENDIF
  387. IF(NBME.GE.3)THEN
  388. SEGINI IPM3,IPS3
  389. LIZAFM(L,3)=IPM3
  390. LIZAFS(L,3)=IPS3
  391. ENDIF
  392.  
  393. NPTU=MZUN.VPOCHA(/1)
  394. NPT =MZTN.VPOCHA(/1)
  395. CALL ZCONV(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  396. & NES,IDIM,NP,NPG,IAXI,AIMPL,IKOMP,
  397. & MZRO.VPOCHA,IKR,MZUN.VPOCHA,IKU,NPTU,IPADU.LECT,
  398. & MZMU.VPOCHA,IKM,
  399. & IPT1.NUM,NBEL,NUTOEL,XCOOR,
  400. & IPM1.AM,IPM2.AM,IPM3.AM,
  401. & IPS1.AM,IPS2.AM,IPS3.AM,
  402. & NINKO,IDCEN,DT,
  403. & MZTN.VPOCHA,IKT,NPT,IPADI.LECT,IZTCO.VPOCHA,NELZ)
  404.  
  405. C? SEGDES IPT1*NOMOD,IPM1
  406. NUTOEL=NUTOEL+NBEL
  407. 101 CONTINUE
  408.  
  409. IF(KIMPL.EQ.2.OR.KIMPL.EQ.0)THEN
  410. C write(6,*)' CAS SEMI ou EXPLICITE ',AIMPL
  411.  
  412. NAT=2
  413. NSOUPO=1
  414. SEGACT MELEMS
  415. N=MELEMS.NUM(/2)
  416. NC=NINKO
  417. SEGINI MCHPO1,MSOUP1,MPOVA1
  418. MCHPO1.IFOPOI=IFOUR
  419. MCHPO1.MOCHDE=TITREE
  420. MCHPO1.MTYPOI='SMBR'
  421. MCHPO1.JATTRI(1)=2
  422. MCHPO1.IPCHP(1)=MSOUP1
  423. DO 177 N=1,NINKO
  424. MSOUP1.NOCOMP(N)=LISDUA(N)
  425. C write(6,*)' comp=',MSOUP1.NOCOMP(N),MCHPO1,mpova1
  426. 177 CONTINUE
  427. MSOUP1.IGEOC=MELEMS
  428. MSOUP1.IPOVAL=MPOVA1
  429.  
  430. NBSOUS=LISOUS(/1)
  431. IF(NBSOUS.EQ.0)NBSOUS=1
  432.  
  433. DO 1533 L=1,NBSOUS
  434. IPT1=MELEME
  435. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  436. SEGACT IPT1
  437. NP=IPT1.NUM(/1)
  438. NBEL=IPT1.NUM(/2)
  439. DO 2 N=1,NINKO
  440. IPMS=LIZAFS(L,N)
  441. SEGACT IPMS
  442. DO 12 K=1,NBEL
  443. DO 13 J=1,NP
  444. UU=0.D0
  445. IU=IPADI.LECT(IPT1.NUM(J,K))
  446. DO 14 I=1,NP
  447. IK=IPADI.LECT(IPT1.NUM(I,K))
  448. UU=UU+IPMS.AM(K,I,J)*IZTU1.VPOCHA(IK,N)
  449. 14 CONTINUE
  450. MPOVA1.VPOCHA(IU,N)=MPOVA1.VPOCHA(IU,N)+UU
  451. 13 CONTINUE
  452. 12 CONTINUE
  453.  
  454. 2 CONTINUE
  455.  
  456. 1533 CONTINUE
  457.  
  458. SEGDES IPM1,IPM2,IPM3
  459. IPS=IPS1
  460. SEGSUP IPS1
  461. IF(IPS2.NE.IPS)SEGSUP IPS2
  462. IF(IPS3.NE.IPS)SEGSUP IPS3
  463. IPDI=IPADI
  464. SEGSUP IPADI
  465. IF(IPADU.NE.IPDI)SEGSUP IPADU
  466. IF(IPADS.NE.IPDI)SEGSUP IPADS
  467.  
  468.  
  469. TYPE=' '
  470. CALL ACMO(MTAB1,'SMBR',TYPE,MCHPO2)
  471.  
  472. C if(ipas.eq.5)then
  473. C CALL ECROBJ('CHPOINT',MCHPO2)
  474. C[164qcall prlist
  475. C CALL ECROBJ('CHPOINT',MCHPO1)
  476. C call prlist
  477. C endif
  478. C ipas=ipas+1
  479. C segact mchpo2
  480. C nsoupo=mchpo2.ipchp(/1)
  481. C msoup2=mchpo2.ipchp(1)
  482. C segact msoup2
  483. C nc=msoup2.nocomp(/2)
  484. C do 6935 nnc=1,nc
  485. C write(6,*)'comp=',msoup2.nocomp(nnc)
  486. C6935 continue
  487.  
  488. IF(TYPE.NE.'CHPOINT')THEN
  489. CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPO1)
  490. ELSE
  491. CALL ECROBJ('CHPOINT',MCHPO2)
  492. CALL ECROBJ('CHPOINT',MCHPO1)
  493. C? CALL OPERAD
  494. CALL PRFUSE
  495. CALL LIROBJ('CHPOINT',MCHPOI,1,IRET)
  496. CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPOI)
  497. ENDIF
  498.  
  499. ENDIF
  500.  
  501. SEGDES IMATRI
  502. SEGSUP IMATRS
  503. SEGDES MELEME*NOMOD,MATRIK*NOMOD
  504. IF(KIMPL.NE.0)CALL ECMO(MTABX,'MATELM','MATRIK',MATRIK)
  505.  
  506. RETURN
  507. C*************************************************************************
  508. ELSE IF(KFORM.EQ.2)THEN
  509. C CAS FORMULATION VF
  510. NINKO=IZTU1.VPOCHA(/2)
  511.  
  512. C CALL LEKTAB(MTABZ,'FACE',MELEMF)
  513. C CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  514. CALL LEKTAB(MTABZ,'FACEL',MFACEL)
  515. CALL LEKTAB(MTABZ,'ELTFA',MELTFA)
  516. CALL LEKTAB(MTABZ,'ELKONV',MELEME)
  517. C CALL ELCONV(MELTFA,MFACEL,MELEMF,MELEMC,MELEME)
  518.  
  519. SEGACT MELEME
  520. NBSOUS=LISOUS(/1)
  521. IF(NBSOUS.EQ.0)NBSOUS=1
  522.  
  523. NRIGE=7
  524. NKID =9
  525. NKMT =7
  526. NMATRI=1
  527. SEGINI MATRIK
  528. IRIGEL(1,1)=MELEME
  529. IRIGEL(2,1)=MELEMC
  530. IRIGEL(7,1)=2
  531. NBOP=0
  532. NBME=NINKO
  533. SEGINI IMATRI,IMATRS
  534. IRIGEL(4,1)=IMATRI
  535. KSPGP=MELEMC
  536. KSPGD=MELEMC
  537.  
  538. IF(NBME.EQ.1)THEN
  539. LISPRI(1)=NOMI(1:4)//' '
  540. LISDUA(1)=NOMI(1:4)//' '
  541. ELSE
  542. DO 202 I=1,NBME
  543. WRITE(NOM,FMT='(I1,A7)')I,NOMI(1:7)
  544. LISPRI(I)=NOM(1:4)//' '
  545. LISDUA(I)=NOM(1:4)//' '
  546. 202 CONTINUE
  547. ENDIF
  548.  
  549. C* Lecture du tableau donnant le sens des normales par element
  550. CALL LEKTAB(MTABZ,'XXNORMAE',MCHELM)
  551. IF(MCHELM.EQ.0)GO TO 90
  552. SEGACT MCHELM
  553. CALL LEKTAB(MTABZ,'XXSURFAC',MCHPO1)
  554. CALL LICHT(MCHPO1,MPOVA1,TYPE,IGEOM)
  555. C* Lecture des connectivites elements/faces
  556. CALL LEKTAB(MTABZ,'ELTFA',MELEMA)
  557. IF(MELEMA.EQ.0)GO TO 90
  558. SEGACT MELEMA
  559. CALL KRIPAD(MELEMF,IPADI)
  560. IF(IKR.EQ.0)CALL KRIPAD(MELEMC,MLENT1)
  561.  
  562. KK=0
  563. DO 201 L=1,NBSOUS
  564. IPT1=MELEME
  565. IPT2=MELEMA
  566. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  567. IF(NBSOUS.NE.1)IPT2=MELEMA.LISOUS(L)
  568. SEGACT IPT1,IPT2
  569.  
  570. NP = IPT1.NUM(/1)
  571. NBF=NP-1
  572. MP = 1
  573. C write(6,*)' np,nbf,mp=',np,nbf,mp
  574. NBEL=IPT1.NUM(/2)
  575. SEGINI IPM1,IPMS
  576. LIZAFM(L,1)=IPM1
  577. LIZAFS(L,1)=IPMS
  578. IPM2=IPM1
  579. IPM3=IPM1
  580. IF(NBME.GE.2)THEN
  581. LIZAFM(L,2)=IPM1
  582. ENDIF
  583. IF(NBME.GE.3)THEN
  584. LIZAFM(L,3)=IPM1
  585. ENDIF
  586.  
  587. MCHAML=ICHAML(L)
  588. SEGACT MCHAML
  589. MELVAL=IELVAL(1)
  590. SEGACT MELVAL
  591.  
  592. C write(6,*)' IKR=',ikR
  593.  
  594. IF(IKR.EQ.1)THEN
  595. C write(6,*)' NBEL=',NBEL,' NBF=',NBF
  596. DO 210 K=1,NBEL
  597. DO 211 I=1,NBF
  598. NF=IPT2.NUM(I,K)
  599. NF=IPADI.LECT(NF)
  600. C write(6,*)' NF=',NF,NP
  601. FI=IZTGG2.VPOCHA(NF,1)*MELVAL.VELCHE(I,K)*MPOVA1.VPOCHA(NF,1)
  602. &*MZRO.VPOCHA(1,1)
  603. IF(FI.LE.0.D0)THEN
  604. IPM1.AM(K,I,1)=FI
  605. ELSE
  606. IPM1.AM(K,NP,1)=IPM1.AM(K,NP,1)+FI
  607. ENDIF
  608. 211 CONTINUE
  609. 210 CONTINUE
  610.  
  611. ELSEIF(IKR.EQ.0)THEN
  612.  
  613. DO 212 K=1,NBEL
  614. KK=KK+1
  615. DO 213 I=1,NBF
  616. NF=IPT2.NUM(I,K)
  617. NF=IPADI.LECT(NF)
  618. NCR=MLENT1.LECT(KK)
  619. FI=IZTGG2.VPOCHA(NF,1)*MELVAL.VELCHE(I,K)*MPOVA1.VPOCHA(NF,1)
  620. &*MZRO.VPOCHA(NCR,1)
  621. IF(FI.LE.0.D0)THEN
  622. IPM1.AM(K,I,1)=FI
  623. ELSE
  624. IPM1.AM(K,NP,1)=IPM1.AM(K,NP,1)+FI
  625. ENDIF
  626. 213 CONTINUE
  627. 212 CONTINUE
  628.  
  629.  
  630. ENDIF
  631.  
  632.  
  633.  
  634. SEGDES IPT1*NOMOD,IPM1,IPT2
  635. SEGSUP IPMS
  636. C write(6,*)' Fin bcl 201 '
  637. 201 CONTINUE
  638. C write(6,*)' Apr bcl 201 '
  639. SEGSUP IPADI
  640. SEGDES IMATRI
  641. SEGSUP IMATRS
  642. SEGDES MELEME*NOMOD,MATRIK*NOMOD
  643.  
  644. IF(IKR.EQ.0)THEN
  645. SEGSUP MLENT1
  646. SEGDES MRO,MZRO
  647. ENDIF
  648.  
  649. CALL ECMO(MTABX,'MATELM','MATRIK',MATRIK)
  650.  
  651. RETURN
  652. C************************************************************************
  653. C************************************************************************
  654. C
  655. C ----- Cas d'un schéma en EFM0 :
  656. C -------------------------
  657. ELSE IF (KFORM . EQ. 3) THEN
  658. c WRITE(6,*) 'Option EFM0 konv'
  659.  
  660. CALL EF0KON(MTABX,MZTN,MZRO,MZUN,MZMU,TYPC,IERRKON,
  661. & MELEME,MTABZ,NOMI,IKR,IPADI,IAXI,NOMII,MZPHI,
  662. & TYPCFI,IZTCO,NELZ,IKU,IKM,AIMPL,IDCEN,MLENT1,
  663. & DT)
  664.  
  665. IF (IERRKON.NE.0) GOTO 90
  666. c WRITE(6,*) 'Fin Option EFM0 konv'
  667. RETURN
  668. ENDIF
  669. C*************************************************************************
  670.  
  671. 90 CONTINUE
  672. WRITE(6,*)' Interuption anormale de KONV'
  673. RETURN
  674. END
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  

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