Télécharger konv.eso

Retour à la liste

Numérotation des lignes :

konv
  1. C KONV SOURCE CB215821 20/11/25 13:32:40 10792
  2. SUBROUTINE KONV
  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 EN VOLUMES FINIS, DISCRETISATION DES EQUATIONS D'EULERS
  13. C
  14. C
  15. C SYNTAXE :
  16. C ---------
  17. C
  18. C KONV RO UN <MU> INCO TN :
  19. C
  20. C COEFFICIENTS :
  21. C --------------
  22. C
  23. C
  24. C ALF (SCAL DOMA) DIFFUSIVITE THERMIQUE
  25. C (SCAL ELEM)
  26. C
  27. C INCONNUES :
  28. C -----------
  29. C
  30. C TN CHAMP DE TEMPERATURE
  31. C
  32. C************************************************************************
  33.  
  34. -INC CCVQUA4
  35.  
  36. -INC PPARAM
  37. -INC CCOPTIO
  38. -INC CCGEOME
  39. -INC SMCOORD
  40. -INC SMLENTI
  41. POINTEUR IZIPAD.MLENTI,IPADI.MLENTI,IPADS.MLENTI,IPADU.MLENTI
  42. -INC SMELEME
  43. POINTEUR MELEMS.MELEME,MELEMC.MELEME,MELEMI.MELEME
  44. POINTEUR MELEMA.MELEME,MELEMF.MELEME
  45. -INC SMCHAML
  46. -INC SMCHPOI
  47. POINTEUR MCHPIN.MCHPOI
  48. POINTEUR MZUN.MPOVAL,MZUN2.MPOVAL,MZMU.MPOVAL
  49. POINTEUR MZDT.MPOVAL,MZPHI.MPOVAL
  50. POINTEUR MRO.MCHPOI,MZRO.MPOVAL
  51. POINTEUR IZTG2.MCHPOI,IZTG3.MCHPOI
  52. POINTEUR IZTGG2.MPOVAL,IZTGG3.MPOVAL
  53. POINTEUR IZTU1.MPOVAL,IZTU2.MPOVAL,IZTU3.MPOVAL,IZTU4.MPOVAL
  54. POINTEUR IZTG5.MPOVAL
  55. POINTEUR IZVOL.MPOVAL,IZTCO.MPOVAL,IZDIAE.MPOVAL,IZTDI.MPOVAL
  56.  
  57. -INC SIZFFB
  58. PARAMETER (LRV=64)
  59. SEGMENT PETROV
  60. REAL*8 WT(LRV,NP,NPG,KDIM),WS(LRV,NP,NPG,KDIM),HK(LRV,IDIM,NP,NPG)
  61. REAL*8 UIL(LRV,IDIM,NPG),DUIL(LRV,IDIM,NPG)
  62. REAL*8 PGSK(LRV,NPG),RPGK(LRV,NPG),AIRE(LRV),ANUK(LRV),COEFK(LRV)
  63. REAL*8 AJK(LRV,IDIM,IDIM,NPG)
  64. ENDSEGMENT
  65.  
  66. POINTEUR IPM.IZAFM
  67.  
  68. SEGMENT IMATRS
  69. INTEGER LIZAFS(NBSOUS,NBME)
  70. ENDSEGMENT
  71. POINTEUR IPS1.IZAFM,IPS2.IZAFM,IPS3.IZAFM,IPMS.IZAFM
  72.  
  73. -INC SMTABLE
  74. POINTEUR KIZG.TABLE,MTABX.MTABLE,MTABT.MTABLE
  75. POINTEUR KINC.TABLE,RESU.MTABLE
  76. POINTEUR MTABZ.MTABLE
  77. -INC SMLMOTS
  78. POINTEUR LINCO.MLMOTS
  79. CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,CHAI,TYPC,TYPCFI,NOM
  80. CHARACTER*8 NOM0,NOMII,MTYP,NMACO
  81. CHARACTER*4 NOM4(3), CELCAR
  82. REAL*8 XYZI(24)
  83. LOGICAL LOGI
  84. PARAMETER (NTB=2)
  85. CHARACTER*8 LTAB(NTB)
  86. DIMENSION KTAB(NTB),IXV(3)
  87. * save ipas
  88. * data ipas/1/
  89. C
  90. C**** EN VOLUMES FINIS, KONV est un operatéur normal,
  91. C (voir KONV1)
  92. C i.e.
  93. C
  94. C JACO RESI DELTAT = 'KONV' 'VF' ...
  95. C
  96. C*****************************************************************************
  97.  
  98. CKONV
  99. C WRITE(6,*)' Opérateur KONV'
  100. C
  101. C*****************************************************************************
  102. C
  103. C Deux traitements différents suivant la discrétisation 2D/3D ou 0D
  104. C (respectivement, table d'entrée de soustype KIZX
  105. C ou de soustype OPER_0D)
  106. C
  107.  
  108. segact mcoord
  109. C Nouvelle directive EQUA de EQEX
  110. MTYP=' '
  111. CALL QUETYP(MTYP,0,IRET)
  112. IF(IRET.EQ.0)THEN
  113. C% On attend un des objets : %m1:8 %m9:16 %m17:24 %m25:32 %m33:40
  114. MOTERR( 1: 8) = 'CHAI '
  115. MOTERR( 9:16) = 'MMODEL '
  116. C MOTERR(17:24) = 'TABLE '
  117. CALL ERREUR(472)
  118. RETURN
  119. ENDIF
  120.  
  121. IF(MTYP.EQ.'MMODEL')THEN
  122. CALL LIRCHA(CHAI,1,IRET)
  123. IF(CHAI.EQ. 'VF ')THEN
  124. CALL KONV1
  125. GOTO 9999
  126. ENDIF
  127. CALL YTCLSF(' C ','KONV ')
  128. RETURN
  129. ELSEIF(MTYP.EQ.'MOT ')THEN
  130. CALL LIRCHA(CHAI,1,IRET)
  131. IF(CHAI.EQ. 'VF ')THEN
  132. CALL KONV1
  133. GOTO 9999
  134. ELSE
  135. CALL YTCLSF(CHAI,'KONV ')
  136. ENDIF
  137. RETURN
  138. ENDIF
  139. C Fin Nouvelle directive EQUA de EQEX
  140.  
  141.  
  142.  
  143. LTAB(1) = 'KIZX '
  144. LTAB(2) = 'OPER_0D '
  145. KTAB(1) = 0
  146. KTAB(2) = 0
  147. CALL LITABS(LTAB,KTAB,NTB,0,IRET)
  148. IF(IRET.EQ.0)THEN
  149. WRITE(6,*)' Opérateur KONV :'
  150. WRITE(6,*)' On attend un ensemble de table soustypes'
  151. RETURN
  152. ENDIF
  153. C
  154. C Bifurcation en cas de discrétisation 0D
  155. C
  156. IF (KTAB(1).NE.0) THEN
  157. MTABX = KTAB(1)
  158.  
  159. CALL LEKTAB(MTABX,'EQEX',MTAB1)
  160. IF(MTAB1.EQ.0)THEN
  161. WRITE(6,*)' Opérateur KONV :'
  162. WRITE(6,*)' On ne trouve pas l''indice EQEX ? '
  163. RETURN
  164. ENDIF
  165. CALL ACME(MTAB1,'NAVISTOK',NASTOK)
  166. IF(NASTOK.EQ.0)THEN
  167. CALL ZKONV(MTABX,MTAB1)
  168. RETURN
  169. ENDIF
  170. ELSEIF (KTAB(2).NE.0) THEN
  171. IPTAB1 = KTAB(2)
  172. CALL TOCONV (IPTAB1)
  173. RETURN
  174. ELSE
  175. WRITE(6,*)' Opérateur KONV :'
  176. WRITE(6,*)' On attend une table de soustype KIZX ou OPER_0D'
  177. RETURN
  178. ENDIF
  179.  
  180.  
  181. C*****************************************************************************
  182. C Traitement des options
  183. C KIMPL = 0 -> EXPL 1 -> IMPL 2 -> CN
  184. C KFORM = 0 -> SI 1 -> EF 2 -> VF 3 -> EFMC
  185. C IDCEN = 0 -> rien 1 -> CENTREE 2 -> HU.BR 3 -> SUPG 4 -> T VISQ
  186.  
  187. C
  188. C- Récupération de la table des options KOPT (pointeur KOPTI)
  189. C
  190. CALL LEKTAB(MTABX,'KOPT',KOPTI)
  191. IF (KOPTI.EQ.0) THEN
  192. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  193. MOTERR( 1: 8) = ' KOPT '
  194. MOTERR( 9:16) = ' KOPT '
  195. MOTERR(17:24) = ' KIZX '
  196. CALL ERREUR(786)
  197. RETURN
  198. ENDIF
  199.  
  200. IAXI=0
  201. IF(IFOMOD.EQ.0)IAXI=2
  202.  
  203. KDIM=1
  204. CALL ACME(KOPTI,'IDCEN',IDCEN)
  205. IF(IDCEN.EQ.2)KDIM=IDIM
  206. CALL ACME(KOPTI,'IKOMP',IKOMP)
  207. CALL ACME(KOPTI,'KIMPL',KIMPL)
  208. CALL ACME(KOPTI,'KFORM',KFORM)
  209. CALL ACME(KOPTI,'ISCHT',ISCHT)
  210. CALL ACME(KOPTI,'IDIV',IDIV)
  211. CALL ACMF(KOPTI,'CMD',CMD)
  212. CALL ACME(KOPTI,'KMACO',KMACO)
  213. CALL ACMF(KOPTI,'AIMPL',AIMPL)
  214. AG=AIMPL
  215. AD=AIMPL-1.D0
  216. IF(ISCHT.EQ.2)THEN
  217. AG=1.D0
  218. AD=-1.D0
  219. ENDIF
  220. IF (IERR.NE.0) RETURN
  221.  
  222. C*****************************************************************************
  223. C*****************************************************************************
  224. C
  225. C ----- Cas d'un schéma Explicite en Volume Fini :
  226. C ----------------------------------------
  227. if (KIMPL .EQ. 0 .and. KFORM . EQ. 2) then
  228. call ckon(MTABX)
  229. RETURN
  230. ENDIF
  231. C*****************************************************************************
  232. C
  233. C- Récupération de la table DOMAINE associée au domaine local
  234. C
  235. CALL ACMM(MTABX,'NOMZONE',NOMZ)
  236.  
  237. MTYP='MMODEL'
  238. CALL QUETYP(MTYP,0,IRET)
  239. IF(IRET.EQ.1)THEN
  240. CALL LIROBJ('MMODEL',MMDZ,1,IRET)
  241. ELSE
  242. TYPE=' '
  243. CALL ACMO(MTABX,'DOMZ',TYPE,MMDZ)
  244. IF(TYPE.NE.'MMODEL')THEN
  245. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  246. MOTERR( 1: 8) = ' DOMZ '
  247. MOTERR( 9:16) = ' DOMZ '
  248. MOTERR(17:24) = ' KIZX '
  249. CALL ERREUR(786)
  250. RETURN
  251. ENDIF
  252. ENDIF
  253.  
  254. C*****************************************************************************
  255. C
  256. C- Récupération de la table DOMAINE associée au domaine local
  257. C
  258.  
  259. C E/ MMODEL : Pointeur de la table contenant l'information cherchée
  260. C /S IPOINT : Pointeur sur la table DOMAINE
  261. C /S INEFMD : Type formulation INEFMD=1 LINE,=2 MACRO,=3 QUADRATIQUE
  262. C INEFMD=4 LINB
  263.  
  264. CALL LEKMOD(MMDZ,MTABZ,INEFMD)
  265.  
  266. CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
  267. CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
  268. CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  269. IF (IERR.NE.0) RETURN
  270.  
  271. C*************************************************************************
  272. C VERIFICATIONS SUR LES INCONNUES
  273. C write(6,*)' Verification des inconnues '
  274.  
  275. TYPE='LISTMOTS'
  276. CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
  277. SEGACT LINCO
  278.  
  279. NBINC=LINCO.MOTS(/2)
  280. IF((NBINC.NE.1).AND.(KFORM.NE.3))THEN
  281. WRITE(6,*)' Opérateur KONV :'
  282. WRITE(6,*)'Nombre d''inconnues incorrecte : ',NBINC,' On attend 1'
  283. RETURN
  284. ENDIF
  285.  
  286. IF((NBINC.NE.2).AND.(KFORM.EQ.3))THEN
  287. WRITE(6,*)' Opérateur KONV :'
  288. WRITE(6,*)'Nombre d''inconnues incorrecte : ',NBINC,' On attend 2'
  289. RETURN
  290. ENDIF
  291.  
  292. NOMI=LINCO.MOTS(1)
  293.  
  294. IF (KFORM.EQ.3) NOMII=LINCO.MOTS(2)
  295.  
  296. CALL LEKTAB(MTAB1,'INCO',KINC)
  297. IF(KINC.EQ.0)THEN
  298. WRITE(6,*)' Opérateur KONV :'
  299. WRITE(6,*)'Il n''y a pas de table INCO ? ?.'
  300. RETURN
  301. ENDIF
  302.  
  303. TYPE=' '
  304. CALL ACMO(KINC,NOMI,TYPE,MCHPOI)
  305. IF(TYPE.NE.'CHPOINT ')THEN
  306. WRITE(6,*)' Opérateur KONV :'
  307. WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
  308. RETURN
  309. ELSE
  310. CALL LICHTL(MCHPOI,IZTU1,TYPC,MELEMI)
  311. MCHPIN=MCHPOI
  312. IKT=0
  313. ENDIF
  314.  
  315. NINKO=IZTU1.VPOCHA(/2)
  316. NPTI = IZTU1.VPOCHA(/1)
  317. IF(NINKO.EQ.1)THEN
  318. WRITE(NOM4(1),FMT='(A4)')NOMI(1:4)
  319. ELSE
  320. DO 15 I=1,NINKO
  321. WRITE(NOM4(I),FMT='(I1,A3)')I,NOMI(1:3)
  322. 15 CONTINUE
  323. ENDIF
  324.  
  325. IF (KFORM.EQ.3) THEN
  326. TYPE=' '
  327. CALL ACMO(KINC,NOMII,TYPE,MCHPOI)
  328. IF(TYPE.NE.'CHPOINT ')THEN
  329. WRITE(6,*)' Opérateur KONV :'
  330. WRITE(6,*)' L objet CHPOINT ',NOMII,
  331. & ' n existe pas dans la table'
  332. RETURN
  333. ELSE
  334. CALL LICHTL(MCHPOI,IZTU2,TYPCFI,IGEOM0)
  335. MZPHI=IZTU2
  336. IKT=0
  337. ENDIF
  338. END IF
  339. C*****************************************************************************
  340. C Le domaine de definition est donne par le SPG de la premiere inconnue
  341. C Les inconnues suivantes devront posseder ce meme pointeur
  342. C On verifie que les points de la zone sont tous inclus dans ce SPG
  343.  
  344. CALL KRIPAD(MELEMI,IPADI)
  345. IPADS=IPADI
  346. NPTS=NPTI
  347. IF(MELEMI.NE.MELEMS)THEN
  348. CALL KRIPAD(MELEMS,IPADS)
  349. NPTS=MELEMS.NUM(/2)
  350. ENDIF
  351. IPADU=IPADI
  352. NPTU=NPTI
  353. * TC mise en commentaired des lignes suivantes car ipasn'est jamais =0
  354. * IF(IPAS.EQ.0)THEN
  355. * IF (KFORM.EQ.3) CALL KRIPAD(MELEMC,MLENT1)
  356. * CALL VERPAD(IPADI,MELEME,IRET)
  357. * IF(IRET.NE.0)THEN
  358. * WRITE(6,*)' Opérateur KONV'
  359. * WRITE(6,*)' La zone ',NOMZ,' n''est pas incluse dans le domaine'
  360. * IPAS=0
  361. * RETURN
  362. * ENDIF
  363. * ENDIF
  364.  
  365. C*****************************************************************************
  366.  
  367. IF(KFORM.NE.1)THEN
  368. C*****************************************************************************
  369. C Lecture du ou des coefficients
  370. C Type du coefficient :
  371. C IK1=0 CHPOINT IK1=1 scalaire IK1=2 vecteur
  372.  
  373. c write(6,*)' Opérateur KONV lecture des coefficients'
  374. CALL ACME(MTABX,'IARG',IARG)
  375. ICD=0
  376. IF(ISCHT.EQ.2)ICD=1
  377. IF((IARG.LT.(2+ICD).AND.IDCEN.EQ.1)
  378. &.OR.(IARG.LT.(3+ICD).AND.IDCEN.LT.4)
  379. &.OR.(IARG.LT.(4+ICD).AND.IDCEN.GE.4))THEN
  380. WRITE(6,*)' Opérateur KONV : option incompréssible '
  381. WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
  382. WRITE(6,*)' On attend 2 ou plus suivant l''option'
  383. RETURN
  384. ENDIF
  385.  
  386. c write(6,*)' KONV IARG=',iarg,melemc
  387. C 1er coefficient Densité
  388. IXV(1)=MELEMC
  389. IXV(2)=1
  390. IXV(3)=0
  391. CALL LEKCOF('Opérateur KONV :',
  392. & MTABX,KINC,1,IXV,MRO,MZRO,NPT1,NC1,IKR,IRET)
  393. IF(IRET.EQ.0)GO TO 90
  394. c write(6,*)' Apres LEKCOF'
  395.  
  396. IZTGG2=MZRO
  397. IZTGG3=MZRO
  398.  
  399. C 2ème coefficient UN , champ de vitesse transportant
  400. IXV(1)=-MELEMS
  401. IXV(2)=0
  402. IXV(3)=1
  403. CALL LEKCOF('Opérateur KONV :',
  404. & MTABX,KINC,2,IXV,MUN,MZUN,NPTU,NC2,IKU,IRET)
  405. IF(IRET.EQ.0)GO TO 90
  406. IF(IKU.EQ.2)IKU=1
  407. IF(IPADS.EQ.0.AND.IKU.EQ.0)CALL KRIPAD(MELEMS,IPADS)
  408. IPADU=IPADS
  409.  
  410. IF(ISCHT.EQ.2)THEN
  411. C si ISCHT=2 TN-2 ou UN-2 , champ transporte au temps n-2
  412. IXV(1)=-MELEMS
  413. IF(NINKO.EQ.1)IXV(1)=MELEMS
  414. IXV(2)=0
  415. IXV(3)=1
  416. CALL LEKCOF('Opérateur KONV :',
  417. & MTABX,KINC,(2+ICD),IXV,MUN,MZUN2,NPTU,NC2,IKU,IRET)
  418. IF(IRET.EQ.0)GO TO 90
  419. IF(IKU.EQ.2)IKU=1
  420. IF(IPADS.EQ.0.AND.IKU.EQ.0)CALL KRIPAD(MELEMS,IPADS)
  421. IPADU=IPADS
  422. ENDIF
  423.  
  424. IF(IARG.GE.(3+ICD))THEN
  425. C 3ème coefficient viscosité
  426. IXV(1)=MELEMC
  427. IXV(2)=1
  428. IXV(3)=0
  429. CALL LEKCOF('Opérateur KONV :',
  430. & MTABX,KINC,(3+ICD),IXV,MMU,MZMU,NPT3,NC3,IKM,IRET)
  431. IF(IRET.EQ.0)GO TO 90
  432. ELSE
  433. CALL LEKTAB(MTABX,'ARGS3',MMU)
  434. CALL LICHTL(MMU,MZMU,TYPC,IGEOM0)
  435. MZMU.VPOCHA(1,1)=1.D0
  436. IKM=1
  437.  
  438. ENDIF
  439.  
  440. IF(IARG.EQ.(4+ICD))THEN
  441. C 4ème coefficient Dt
  442. IXV(1)=0
  443. IXV(2)=1
  444. IXV(3)=0
  445. CALL LEKCOF('Opérateur KONV :',
  446. & MTABX,KINC,(4+ICD),IXV,MDT,MZDT,NPT4,NC4,IKT,IRET)
  447. IF(IRET.EQ.0)RETURN
  448. DT=MZDT.VPOCHA(1,1)
  449. ELSE
  450. DT=0.D0
  451.  
  452. ENDIF
  453.  
  454. c write(6,*)' Opérateur KONV : Fin lecture Arguments '
  455. C Fin lecture Arguments ************************************************
  456. ENDIF
  457.  
  458.  
  459. C*************************************************************************
  460. IF(KFORM.EQ.0)THEN
  461. C CAS FORMULATION EF SI (GRESHO)
  462.  
  463. WRITE(6,*)' Operateur KONV '
  464. WRITE(6,*)' Option invalide '
  465. GO TO 90
  466. C*************************************************************************
  467. ELSEIF(KFORM.EQ.1)THEN
  468. C CAS FORMULATION EF
  469.  
  470. c write(6,*)' On va appeler YCLS '
  471. NINKO=IZTU1.VPOCHA(/2)
  472. IHV=0
  473. IF(NINKO.EQ.IDIM)IHV=1
  474.  
  475. CALL YCLS('KONV ',MTABX,MTABZ,IHV,MCHPIN,NOMI,MATRIK,MCHPO1)
  476.  
  477. CALL ECROBJ('MATRIK',MATRIK)
  478. CALL ECROBJ('CHPOINT',MCHPO1)
  479.  
  480. RETURN
  481. C*************************************************************************
  482. ELSE IF(KFORM.EQ.2)THEN
  483. C CAS FORMULATION VF
  484.  
  485. C CALL LEKTAB(MTABZ,'FACE',MELEMF)
  486. C CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  487. CALL LEKTAB(MTABZ,'FACEL',MFACEL)
  488. CALL LEKTAB(MTABZ,'ELTFA',MELTFA)
  489. CALL LEKTAB(MTABZ,'ELKONV',MELEME)
  490. C CALL ELCONV(MELTFA,MFACEL,MELEMF,MELEMC,MELEME)
  491.  
  492. SEGACT MELEME
  493. NBSOUS=LISOUS(/1)
  494. IF(NBSOUS.EQ.0)NBSOUS=1
  495.  
  496. NRIGE=7
  497. NKID =9
  498. NKMT =7
  499. NMATRI=1
  500. SEGINI MATRIK
  501. IRIGEL(1,1)=MELEME
  502. IRIGEL(2,1)=MELEMC
  503. IRIGEL(7,1)=2
  504. NBOP=0
  505. NBME=NINKO
  506. SEGINI IMATRI,IMATRS
  507. IRIGEL(4,1)=IMATRI
  508. KSPGP=MELEMC
  509. KSPGD=MELEMC
  510.  
  511. IF(NBME.EQ.1)THEN
  512. LISPRI(1)=NOMI(1:4)//' '
  513. LISDUA(1)=NOMI(1:4)//' '
  514. ELSE
  515. DO 202 I=1,NBME
  516. WRITE(NOM,FMT='(I1,A7)')I,NOMI(1:7)
  517. LISPRI(I)=NOM(1:4)//' '
  518. LISDUA(I)=NOM(1:4)//' '
  519. 202 CONTINUE
  520. ENDIF
  521.  
  522. C* Lecture du tableau donnant le sens des normales par element
  523. CALL LEKTAB(MTABZ,'XXNORMAE',MCHELM)
  524. IF(MCHELM.EQ.0)GO TO 90
  525. SEGACT MCHELM
  526. CALL LEKTAB(MTABZ,'XXSURFAC',MCHPO1)
  527. CALL LICHTL(MCHPO1,MPOVA1,TYPE,IGEOM)
  528. C* Lecture des connectivites elements/faces
  529. CALL LEKTAB(MTABZ,'ELTFA',MELEMA)
  530. IF(MELEMA.EQ.0)GO TO 90
  531. SEGACT MELEMA
  532. CALL KRIPAD(MELEMF,IPADI)
  533. IF(IKR.EQ.0)CALL KRIPAD(MELEMC,MLENT1)
  534.  
  535. KK=0
  536. DO 201 L=1,NBSOUS
  537. IPT1=MELEME
  538. IPT2=MELEMA
  539. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  540. IF(NBSOUS.NE.1)IPT2=MELEMA.LISOUS(L)
  541. SEGACT IPT1,IPT2
  542.  
  543. NP = IPT1.NUM(/1)
  544. NBF=NP-1
  545. MP = 1
  546. C write(6,*)' np,nbf,mp=',np,nbf,mp
  547. NBEL=IPT1.NUM(/2)
  548. SEGINI IPM1,IPMS
  549. LIZAFM(L,1)=IPM1
  550. LIZAFS(L,1)=IPMS
  551. IPM2=IPM1
  552. IPM3=IPM1
  553. IF(NBME.GE.2)THEN
  554. LIZAFM(L,2)=IPM1
  555. ENDIF
  556. IF(NBME.GE.3)THEN
  557. LIZAFM(L,3)=IPM1
  558. ENDIF
  559.  
  560. MCHAML=ICHAML(L)
  561. SEGACT MCHAML
  562. MELVAL=IELVAL(1)
  563. SEGACT MELVAL
  564.  
  565. C write(6,*)' IKR=',ikr
  566.  
  567. IF(IKR.EQ.1)THEN
  568. C write(6,*)' NBEL=',NBEL,' NBF=',NBF
  569. DO 210 K=1,NBEL
  570. DO 211 I=1,NBF
  571. NF=IPT2.NUM(I,K)
  572. NF=IPADI.LECT(NF)
  573. C write(6,*)' NF=',NF,NP
  574. FI=IZTGG2.VPOCHA(NF,1)*MELVAL.VELCHE(I,K)*MPOVA1.VPOCHA(NF,1)
  575. &*MZRO.VPOCHA(1,1)
  576. IF(FI.LE.0.D0)THEN
  577. IPM1.AM(K,I,1)=FI
  578. ELSE
  579. IPM1.AM(K,NP,1)=IPM1.AM(K,NP,1)+FI
  580. ENDIF
  581. 211 CONTINUE
  582. 210 CONTINUE
  583.  
  584. ELSEIF(IKR.EQ.0)THEN
  585.  
  586. DO 212 K=1,NBEL
  587. KK=KK+1
  588. DO 213 I=1,NBF
  589. NF=IPT2.NUM(I,K)
  590. NF=IPADI.LECT(NF)
  591. NCR=MLENT1.LECT(KK)
  592. FI=IZTGG2.VPOCHA(NF,1)*MELVAL.VELCHE(I,K)*MPOVA1.VPOCHA(NF,1)
  593. &*MZRO.VPOCHA(NCR,1)
  594. IF(FI.LE.0.D0)THEN
  595. IPM1.AM(K,I,1)=FI
  596. ELSE
  597. IPM1.AM(K,NP,1)=IPM1.AM(K,NP,1)+FI
  598. ENDIF
  599. 213 CONTINUE
  600. 212 CONTINUE
  601.  
  602.  
  603. ENDIF
  604.  
  605.  
  606.  
  607. SEGDES IPT1,IPM1,IPT2
  608. SEGSUP IPMS
  609. C write(6,*)' Fin bcl 201 '
  610. 201 CONTINUE
  611. C write(6,*)' Apr bcl 201 '
  612. SEGSUP IPADI
  613. SEGDES IMATRI
  614. SEGSUP IMATRS
  615. SEGDES MELEME,MATRIK
  616.  
  617. IF(IKR.EQ.0)THEN
  618. SEGSUP MLENT1
  619. SEGDES MRO,MZRO
  620. ENDIF
  621.  
  622. CALL ECMO(MTABX,'MATELM','MATRIK',MATRIK)
  623.  
  624. RETURN
  625. C************************************************************************
  626. ENDIF
  627. C*************************************************************************
  628.  
  629. 90 CONTINUE
  630. WRITE(6,*)' Interuption anormale de KONV'
  631. 9999 RETURN
  632. END
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  

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