Télécharger zlapl.eso

Retour à la liste

Numérotation des lignes :

zlapl
  1. C ZLAPL SOURCE FANDEUR 22/01/03 21:16:03 11136
  2. SUBROUTINE ZLAPL(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 LAPLACIEN
  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 (discrétisation en 1D de l'équation
  11. C de conduction de la chaleur :
  12. C dérivée temporelle + laplacien)
  13. C
  14. C CET OPERATEUR EST "SOUS-INTEGRES"
  15. C
  16. C SYNTAXE :
  17. C ---------
  18. C
  19. C LAPL(ALF) INCO TN :
  20. C
  21. C COEFFICIENTS :
  22. C --------------
  23. C
  24. C
  25. C ALF (SCAL DOMA) DIFFUSIVITE THERMIQUE
  26. C (SCAL ELEM)
  27. C
  28. C INCONNUES :
  29. C -----------
  30. C
  31. C TN CHAMP DE TEMPERATURE
  32. C
  33. C************************************************************************
  34.  
  35. -INC CCVQUA4
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC CCGEOME
  40. -INC SMCOORD
  41. -INC SMLENTI
  42. POINTEUR IZIPAD.MLENTI
  43. -INC SMELEME
  44. POINTEUR MELEM1.MELEME,IGEOM0.MELEME,MELEMS.MELEME
  45. -INC SMCHPOI
  46. POINTEUR IZG1.MCHPOI, IZG2.MCHPOI
  47. POINTEUR MZLAM.MPOVAL
  48. POINTEUR IZGG1.MPOVAL,IZGG2.MPOVAL
  49. POINTEUR IZTU1.MPOVAL,IZTU2.MPOVAL,IZTU3.MPOVAL,IZTU4.MPOVAL
  50. POINTEUR IZTG5.MPOVAL
  51. POINTEUR IZVOL.MPOVAL,IZTCO.MPOVAL,IZDIAE.MPOVAL,IZTDI.MPOVAL
  52.  
  53. -INC SIZFFB
  54. POINTEUR IPM.IZAFM
  55.  
  56. C SEGMENT IMATRS
  57. C INTEGER LIZAFS(NBSOUS,NBME)
  58. C ENDSEGMENT
  59. POINTEUR IPMS.IZAFM,IPS1.IZAFM,IPS2.IZAFM,IPS3.IZAFM
  60.  
  61. -INC SMLMOTS
  62. POINTEUR LINCO.MLMOTS
  63. CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,TYPC,NOM,NOM0
  64. REAL*8 XVAL(9)
  65. LOGICAL LOGI
  66. PARAMETER (NTB=2)
  67. CHARACTER*8 LTAB(NTB)
  68. DIMENSION KTAB(NTB),IXV(3)
  69. C*****************************************************************************
  70. CLAPL
  71. C write(6,*)' DEBUT YLAPL'
  72. C
  73. C Deux traitements différents suivant la discrétisation 2D/3D ou 0D
  74. C (respectivement, table d'entrée de soustype KIZX
  75. C ou de soustype OPER_0D)
  76. C
  77. C
  78. C- Récupération de la table INCO (pointeur KINC)
  79. C
  80. CALL LEKTAB(MTAB1,'INCO',KINC)
  81. IF(KINC.EQ.0)THEN
  82. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  83. MOTERR( 1: 8) = ' INCO '
  84. MOTERR( 9:16) = ' INCO '
  85. MOTERR(17:24) = ' EQEX '
  86. CALL ERREUR(786)
  87. RETURN
  88. ENDIF
  89.  
  90. C*****************************************************************************
  91. C OPTIONS
  92. C KIMPL = 0 -> EXPL 1 -> IMPL 2 -> SEMI
  93. C KFORM = 0 -> SI 1 -> EF 2 -> VF 3 -> EFMC
  94. C IDCEN = 0-> rien 1-> CENTREE 2-> SUPGDC 3-> SUPG 4-> TVISQUEU 5-> CNG
  95.  
  96. IAXI=0
  97. IF(IFOMOD.EQ.0)IAXI=2
  98. C
  99. C- Récupération de la table des options KOPT (pointeur KOPTI)
  100. C
  101. CALL LEKTAB(MTABX,'KOPT',KOPTI)
  102. IF (KOPTI.EQ.0) THEN
  103. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  104. MOTERR( 1: 8) = ' KOPT '
  105. MOTERR( 9:16) = ' KOPT '
  106. MOTERR(17:24) = ' KIZX '
  107. CALL ERREUR(786)
  108. RETURN
  109. ENDIF
  110.  
  111. C KIMPL = 0 -> EXPL 1 -> IMPL 2 -> SEMI
  112. C KFORM = 0 -> SI 1 -> EF 2 -> VF
  113.  
  114. CALL ACME(KOPTI,'IKOMP',IKOMP)
  115. CALL ACME(KOPTI,'KIMPL',KIMPL)
  116. CALL ACME(KOPTI,'KFORM',KFORM)
  117. CALL ACME(KOPTI,'KMACO',KMACO)
  118. CALL ACMF(KOPTI,'AIMPL',AIMPL)
  119.  
  120. C write(6,*)' ZLAPL : KFORM=',KFORM
  121. C*****************************************************************************
  122. C
  123. C- Récupération de la table DOMAINE associée au domaine local
  124. C
  125. CALL ACMM(MTABX,'NOMZONE',NOMZ)
  126. CALL LEKTAB(MTABX,'DOMZ',MTABZ)
  127. IF(MTABZ.EQ.0)THEN
  128. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  129. MOTERR( 1: 8) = ' DOMZ '
  130. MOTERR( 9:16) = ' DOMZ '
  131. MOTERR(17:24) = ' KIZX '
  132. CALL ERREUR(786)
  133. RETURN
  134. ENDIF
  135.  
  136. CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
  137. CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
  138. CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  139. IF (IERR.NE.0) RETURN
  140.  
  141. SEGACT MELEME
  142.  
  143. IF(KIMPL.EQ.0)THEN
  144. CALL LEKTAB(MTABZ,'MATESI',MATRIK)
  145. SEGACT MATRIK
  146. IMATRI=IRIGEL(4,1)
  147. SEGACT IMATRI
  148.  
  149. CALL LEKTAB(MTABZ,'XXDXDY',MCHPDX)
  150. CALL LEKTAB(MTABZ,'XXVOLUM',MCHPVO)
  151. CALL LEKTAB(MTABZ,'XXDIAME',MCHPDE)
  152. CALL LEKTAB(MTABZ,'XXDIEMIN',MCHPDI)
  153. IF (IERR.NE.0) RETURN
  154.  
  155. CALL LICHT(MCHPDX,IZTCO,TYPC,IGEOM)
  156. CALL LICHT(MCHPDI,IZTDI,TYPC,IGEOM)
  157. CALL LICHT(MCHPDE,IZDIAE,TYPC,IGEOM)
  158. CALL LICHT(MCHPVO,IZVOL,TYPC,IGEOM)
  159.  
  160. ENDIF
  161.  
  162. C*****************************************************************************
  163. C VERIFICATIONS SUR LES INCONNUES
  164. C
  165. C- Récupération du nombre d'inconnues et du nom de l'inconnue NOMI
  166. C
  167. TYPE = 'LISTMOTS'
  168. CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
  169. IF (IERR.NE.0) RETURN
  170. SEGACT LINCO
  171. NBINC = LINCO.MOTS(/2)
  172. IF (NBINC.LE.0.OR.NBINC.GE.3) THEN
  173. C Indice %m1:8 : contient plus de %i1 %m9:16
  174. MOTERR( 1:8) = 'LISTINCO'
  175. INTERR(1) = 2
  176. MOTERR(9:16) = ' MOTS '
  177. CALL ERREUR(799)
  178. RETURN
  179. ENDIF
  180. NOMI = LINCO.MOTS(1)
  181. NOMA = NOMI
  182. IF (NBINC.EQ.2) THEN
  183. IF (LINCO.MOTS(1).EQ.LINCO.MOTS(2)) THEN
  184. NINCO = 1
  185. ELSE
  186. IF (KFORM.EQ.0) THEN
  187. C Indice %m1:8 : contient plus de %i1 %m9:16
  188. MOTERR( 1:8) = 'LISTINCO'
  189. INTERR(1) = 1
  190. MOTERR(9:16) = ' MOTS '
  191. CALL ERREUR(799)
  192. RETURN
  193. ELSE
  194. NOMA = LINCO.MOTS(2)
  195. ENDIF
  196. ENDIF
  197. ENDIF
  198. C
  199. C- Récupération de l'inconnue
  200. C
  201. TYPE = ' '
  202. CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
  203. IF (TYPE.NE.'CHPOINT ') THEN
  204. C Indice %m1:8 : ne contient pas un objet de type %m9:16
  205. MOTERR( 1: 8) = 'INC '//NOMI
  206. MOTERR( 9:16) = 'CHPOINT '
  207. CALL ERREUR(800)
  208. RETURN
  209. ELSE
  210. CALL LICHT(MCHPOI,IZTU1,TYPC,MELEM1)
  211. IF (NBINC.EQ.2) THEN
  212. TYPE = ' '
  213. CALL ACMO(KINC,NOMA,TYPE,MCHPO2)
  214. IF (TYPE.NE.'CHPOINT ') THEN
  215. C Indice %m1:8 : ne contient pas un objet de type %m9:16
  216. MOTERR( 1: 8) = 'INC '//NOMA
  217. MOTERR( 9:16) = 'CHPOINT '
  218. CALL ERREUR(800)
  219. RETURN
  220. ELSE
  221. CALL LICHT(MCHPO2,IZTU2,TYPC,IGEOM2)
  222. IF (IGEOM2.NE.MELEM1) THEN
  223. C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
  224. MOTERR(1: 8) = 'INC '//NOMA
  225. MOTERR(9:16) = 'CHPOINT '
  226. CALL ERREUR(788)
  227. RETURN
  228. ENDIF
  229. ENDIF
  230. ENDIF
  231. C*****************************************************************************
  232. C Le domaine de definition est donne par le SPG de la premiere inconnue
  233. C Les inconnues suivantes devront posseder ce meme pointeur
  234. C On verifie que les points de la zone sont tous inclus dans ce SPG
  235. IF (KFORM.NE.2) THEN
  236. CALL KRIPAD(MELEM1,IZIPAD)
  237. CALL VERPAD(IZIPAD,MELEME,IRET)
  238. IF (IRET.NE.0) THEN
  239. C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
  240. MOTERR(1: 8) = 'INC '//NOMI
  241. MOTERR(9:16) = 'CHPOINT '
  242. CALL ERREUR(788)
  243. RETURN
  244. ENDIF
  245. ENDIF
  246. C*****************************************************************************
  247. ENDIF
  248. C*****************************************************************************
  249. C Lecture du coefficient
  250. C Type du coefficient :
  251. C IK1=0 CHPOINT IK1=1 scalaire IK1=2 vecteur
  252.  
  253. CALL ACME(MTABX,'IARG',IARG)
  254. IF(IARG.GT.1)THEN
  255. WRITE(6,*)' Operateur LAPN '
  256. WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
  257. WRITE(6,*)' On attend 1 '
  258. RETURN
  259. ENDIF
  260.  
  261. IXV(1)=MELEMC
  262. IXV(2)=1
  263. IXV(3)=0
  264. CALL LEKCOF('Opérateur LAPN :',
  265. & MTABX,KINC,1,IXV,MLAM,MZLAM,NPT1,NC1,IK1,IRET)
  266. IF(IRET.EQ.0)RETURN
  267.  
  268. C write(6,*)' KFORM,KIMPL=',KFORM,KIMPL
  269. C*************************************************************************
  270. IF(KFORM.EQ.0)THEN
  271. C CAS FORMULATION EF SI (GRESHO)
  272.  
  273. IF(KIMPL.NE.0)THEN
  274. WRITE(6,*)' Opérateur LAPN :'
  275. C Option %m1:8 incompatible avec les données
  276. MOTERR( 1: 8) = ' EFM1 '
  277. WRITE(6,*)' Options incompatibles : EFM1 et (IMPL ou SEMI) '
  278. CALL ERREUR(803)
  279. RETURN
  280. ENDIF
  281.  
  282. CALL LEKTAB(MTAB1,'KIZG',KIZG)
  283. IF(KIZG.EQ.0)THEN
  284. CALL CRTABL(KIZG)
  285. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  286. CALL ECMO(MTAB1,'KIZG','TABLE ',KIZG)
  287. ENDIF
  288.  
  289. TYPE=' '
  290. CALL ACMO(KIZG,NOMI,TYPE,IZG1)
  291. IF(TYPE.NE.'CHPOINT ')THEN
  292. NC=IZTU1.VPOCHA(/2)
  293. TYPE='SOMMET'
  294. CALL CRCHPT(TYPE,MELEM1,NC,IZG1)
  295. CALL ECMO(KIZG,NOMI,'CHPOINT ',IZG1)
  296. ENDIF
  297.  
  298. CALL LICHT(IZG1,IZGG1,TYPC,IGEOM)
  299.  
  300. IF(IGEOM.NE.MELEM1)THEN
  301. WRITE(6,*)' Opérateur LAPN'
  302. WRITE(6,*)' Incompatibilite de SPG entre 1eres inconnues'
  303. C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
  304. MOTERR(1: 8) = 'INC '//NOMI
  305. MOTERR(9:16) = 'CHPOINT '
  306. CALL ERREUR(788)
  307. RETURN
  308. ENDIF
  309.  
  310.  
  311. NPT=IZGG1.VPOCHA(/1)
  312. NCOT=IZTCO.VPOCHA(/1)
  313.  
  314. SEGACT MELEME
  315. NBSOUS=LISOUS(/1)
  316. IF(NBSOUS.EQ.0)NBSOUS=1
  317. NUTOEL=0
  318. DT=1.E30
  319.  
  320.  
  321. DO 1 L=1,NBSOUS
  322. IPT1=MELEME
  323. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  324. SEGACT IPT1
  325.  
  326. IZAFM=LIZAFM(L,1)
  327. IPM1=IZAFM
  328. SEGACT IZAFM
  329. IF(IAXI.NE.0)THEN
  330. IPM1=LIZAFM(L,2)
  331. SEGACT IPM1
  332. ENDIF
  333.  
  334. NP =IPT1.NUM(/1)
  335. NBEL=IPT1.NUM(/2)
  336. IES=IDIM
  337. NINKO=IZTU1.VPOCHA(/2)
  338.  
  339. CALL ZCLPLS(AM,IPM1.AM,IPT1.NUM,
  340. & NBEL,NUTOEL,NPT,NINKO,IES,NP,IAXI,IZIPAD.LECT,
  341. & MZLAM.VPOCHA,IK1,
  342. & IZTU1.VPOCHA,IZGG1.VPOCHA,
  343. & IZVOL.VPOCHA,IZTCO.VPOCHA,NCOT,IZDIAE.VPOCHA,IZTDI.VPOCHA,
  344. & DT,DTT2,NUEL,DIAEL)
  345.  
  346. SEGDES IZAFM,IPT1
  347. IF(IAXI.NE.0)SEGDES IPM1
  348. NUTOEL=NUTOEL+NBEL
  349. 1 CONTINUE
  350. SEGDES MATRIK,IMATRI,MELEME
  351. DTT1=0.
  352.  
  353. CALL LEKTAB(MTAB1,'PASDETPS',MTABT)
  354.  
  355. IF(MTABT.EQ.0)THEN
  356. CALL CRTABL(MTABT)
  357. CALL ECMM(MTABT,'SOUSTYPE','PASDETPS')
  358. CALL ECMO(MTAB1,'PASDETPS','TABLE ',MTABT)
  359. DTP=1.E30+DT
  360. IPAT=1
  361. DTT1=0.
  362. CALL ECME(MTABT,'NUPASDT',IPAT)
  363. ELSE
  364. CALL ACMF(MTABT,'DELTAT',DTP)
  365. ENDIF
  366.  
  367. IF(DT.LT.DTP)THEN
  368. CALL ECMF(MTABT,'DELTAT',DT)
  369. CALL ECMM(MTABT,'OPER','LAPL')
  370. CALL ECMM(MTABT,'ZONE',NOMZ)
  371. CALL ECMF(MTABT,'DTCONV',DTT1)
  372. CALL ECMF(MTABT,'DTDIFU',DTT2)
  373. CALL ECMF(MTABT,'DIAEL',DIAEL)
  374. CALL ECME(MTABT,'NUEL',NUEL)
  375. ENDIF
  376.  
  377. SEGDES IZTU1
  378. SEGDES IZGG1
  379. IF(IK1.EQ.0)THEN
  380. SEGDES MZLAM
  381. ENDIF
  382. SEGDES IZVOL,IZTCO,IZDIAE,IZTDI
  383. SEGDES LINCO
  384.  
  385. C*************************************************************************
  386. ELSE IF(KFORM.EQ.1)THEN
  387. C CAS FORMULATION EF
  388.  
  389. IF(KIMPL.EQ.0)THEN
  390. WRITE(6,*)' Opérateur LAPN :'
  391. WRITE(6,*)' Option explicite invalide dans ce cas '
  392. C Option %m1:8 incompatible avec les données
  393. MOTERR( 1: 8) = ' EF '
  394. WRITE(6,*)' Options incompatibles : EF et EXPL '
  395. CALL ERREUR(803)
  396. RETURN
  397. ENDIF
  398.  
  399. NINKO=IZTU1.VPOCHA(/2)
  400. IHV=0
  401. IF(NINKO.EQ.IDIM)IHV=1
  402. NUTOEL=0
  403. SEGACT MELEME
  404. NBSOUS=LISOUS(/1)
  405. IF(NBSOUS.EQ.0)NBSOUS=1
  406.  
  407. TYPE=' '
  408. CALL ACMO(MTABX,'MATELM',TYPE,MATRIK)
  409. IF(TYPE.EQ.'MATRIK'.AND.KMACO.NE.0)THEN
  410. SEGACT MATRIK
  411. NMATRI=IRIGEL(/2)
  412. MELEME=IRIGEL(1,1)
  413. SEGACT MELEME
  414. IMATRI=IRIGEL(4,1)
  415. SEGACT IMATRI
  416. NBME=LIZAFM(/2)
  417. NINKO=NBME
  418. MELEMS=KSPGP
  419.  
  420.  
  421. ELSE
  422.  
  423. NRIGE=7
  424. NKID =9
  425. NKMT =7
  426. NMATRI=1
  427. SEGINI MATRIK
  428. IRIGEL(1,1)=MELEME
  429. IRIGEL(2,1)=MELEME
  430.  
  431. C write(6,*)' IRIGEL (1 et 2 )=',MELEME,MELEME
  432. C. write(6,*)' Entrez ici le cas sym (0) ou non sym (2)'
  433. C. read(5,*)ksymr
  434. C. IRIGEL(7,1)=ksymr
  435.  
  436. IRIGEL(7,1)=0
  437. NBOP=0
  438. NBME=NINKO
  439. NBELC=0
  440. CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
  441. SEGINI IMATRI
  442. IRIGEL(4,1)=IMATRI
  443. KSPGP=MELEMS
  444. KSPGD=MELEMS
  445.  
  446. IF(NBME.EQ.1)THEN
  447. LISPRI(1)=NOMI(1:4)//' '
  448. LISDUA(1)=NOMA(1:4)//' '
  449. ELSE
  450. DO 102 I=1,NBME
  451. WRITE(NOM,FMT='(I1,A7)')I,NOMI(1:7)
  452. LISPRI(I)=NOM(1:4)//' '
  453. WRITE(NOM,FMT='(I1,A7)')I,NOMA(1:7)
  454. LISDUA(I)=NOM(1:4)//' '
  455. 102 CONTINUE
  456. ENDIF
  457.  
  458. DO 101 L=1,NBSOUS
  459. IPT1=MELEME
  460. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  461. SEGACT IPT1
  462. NOM0 = NOMS(IPT1.ITYPEL)//' '
  463. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  464. SEGACT IZFFM
  465. IZHR=KZHR(1)
  466. SEGACT IZHR*MOD
  467. NES=GR(/1)
  468. NPG=GR(/3)
  469.  
  470. NP = IPT1.NUM(/1)
  471. MP = NP
  472. NBEL=IPT1.NUM(/2)
  473. SEGINI IPM1,IPS1
  474. LIZAFM(L,1)=IPM1
  475. C LIZAFS(L,1)=IPS1
  476. IPM2=IPM1
  477. IPM3=IPM1
  478. IPS2=IPS1
  479. IPS3=IPS1
  480. IF(NBME.GE.2)THEN
  481. SEGINI IPM2,IPS2
  482. LIZAFM(L,2)=IPM2
  483. C LIZAFS(L,2)=IPS2
  484. ENDIF
  485. IF(NBME.GE.3)THEN
  486. SEGINI IPM3,IPS3
  487. LIZAFM(L,3)=IPM3
  488. C LIZAFS(L,3)=IPS3
  489. ENDIF
  490.  
  491.  
  492. KITT=2
  493. KJTT=IK1
  494.  
  495. CALL XLAPL(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,
  496. & MZLAM.VPOCHA,MZLAM.VPOCHA,MZLAM.VPOCHA,KITT,KJTT,IK1,
  497. & IPT1.NUM,NBEL,NUTOEL,XCOOR,AIMPL,IKOMP,
  498. & IPM1.AM,IPM2.AM,IPM3.AM,
  499. & IPS1.AM,IPS2.AM,IPS3.AM,
  500. & NINKO,IHV,IARG,MZLAM.VPOCHA)
  501.  
  502. NUTOEL=NUTOEL+NBEL
  503. 101 CONTINUE
  504.  
  505. ENDIF
  506.  
  507. IF(KIMPL.EQ.2)THEN
  508.  
  509. NAT=2
  510. NSOUPO=1
  511. SEGACT MELEMS
  512. N=MELEMS.NUM(/2)
  513. NC=NINKO
  514. SEGINI MCHPO1,MSOUP1,MPOVA1
  515. MCHPO1.IFOPOI=IFOUR
  516. MCHPO1.MOCHDE=TITREE
  517. MCHPO1.MTYPOI='SMBR'
  518. MCHPO1.JATTRI(1)=2
  519. MCHPO1.IPCHP(1)=MSOUP1
  520. DO 177 N=1,NINKO
  521. MSOUP1.NOCOMP(N)=LISDUA(N)
  522. 177 CONTINUE
  523. MSOUP1.IGEOC=MELEMS
  524. MSOUP1.IPOVAL=MPOVA1
  525. CALL KRIPAD(MELEMS,MLENTI)
  526.  
  527. NBSOUS=LISOUS(/1)
  528. IF(NBSOUS.EQ.0)NBSOUS=1
  529.  
  530. DO 1533 L=1,NBSOUS
  531. IPT1=MELEME
  532. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  533. SEGACT IPT1
  534. NP=IPT1.NUM(/1)
  535. NBEL=IPT1.NUM(/2)
  536. DO 2 N=1,NINKO
  537. IPM=LIZAFM(L,N)
  538. SEGACT IPM
  539. DO 12 K=1,NBEL
  540. DO 13 J=1,NP
  541. UU=0.D0
  542. IU=LECT(IPT1.NUM(J,K))
  543. IK=IZIPAD.LECT(IPT1.NUM(J,K))
  544. DO 14 I=1,NP
  545. UU=UU+IPM.AM(K,I,J)*IZTU1.VPOCHA(IK,N)*(1.D0-AIMPL)
  546. 14 CONTINUE
  547. MPOVA1.VPOCHA(IU,N)=MPOVA1.VPOCHA(IU,N)-UU
  548. 13 CONTINUE
  549. 12 CONTINUE
  550.  
  551. 2 CONTINUE
  552.  
  553. 1533 CONTINUE
  554.  
  555. SEGDES IPM1,IPM2,IPM3
  556. SEGSUP MLENTI
  557.  
  558. TYPE=' '
  559. CALL ACMO(MTAB1,'SMBR',TYPE,MCHPO2)
  560. IF(TYPE.NE.'CHPOINT')THEN
  561. CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPO1)
  562. ELSE
  563. CALL ECROBJ('CHPOINT',MCHPO2)
  564. CALL ECROBJ('CHPOINT',MCHPO1)
  565. CALL OPERAD
  566. CALL LIROBJ('CHPOINT',MCHPOI,1,IRET)
  567. CALL ECMO(MTAB1,'SMBR','CHPOINT',MCHPOI)
  568. ENDIF
  569.  
  570. ENDIF
  571.  
  572. SEGSUP IZIPAD
  573.  
  574. SEGDES IMATRI
  575. SEGDES MELEME,MATRIK
  576. IF(IK1.EQ.0)THEN
  577. SEGDES MZLAM
  578. ENDIF
  579. CALL ECMO(MTABX,'MATELM','MATRIK',MATRIK)
  580.  
  581. C*************************************************************************
  582. ELSE IF(KFORM.EQ.2)THEN
  583. C CAS FORMULATION VF
  584. CALL LAPLVF(MTABX)
  585. ENDIF
  586. C*************************************************************************
  587.  
  588. C write(6,*)' FIN YLAPL'
  589. RETURN
  590. 1001 FORMAT(20(1X,I5))
  591. 1002 FORMAT(10(1X,1PE11.4))
  592. END
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  

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