Télécharger zlap2c.eso

Retour à la liste

Numérotation des lignes :

zlap2c
  1. C ZLAP2C SOURCE CB215821 20/11/25 13:45:10 10792
  2. SUBROUTINE ZLAP2C(PROPHY,PROPH2,MPROC,MPTEMC,
  3. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  4. $ KRFACE,KRCENT,
  5. $ LCLIMR,KRRIMP,MPRIMP,
  6. $ LCLIMT,KRTIMP,MPTIMP,
  7. $ NOMINC,
  8. $ IJACO,
  9. $ IMPR,IRET)
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8 (A-H,O-Z)
  12. C***********************************************************************
  13. C NOM : ZLAP2C
  14. C DESCRIPTION : Calcul de la matrice jacobienne du résidu du laplacien
  15. C VF 3D (termes multi-espèces).
  16. C Ici, on ne calcule que les contributions à la matrice
  17. C jacobienne faisant intervenir les coefficients pour le
  18. C calcul des gradients de Yk
  19. C (contributions à d Res_{\rho e_t} / d var
  20. C var prenant successivement les valeurs :
  21. C \rho, \rho Yk)
  22. C
  23. C
  24. C
  25. C
  26. C LANGAGE : ESOPE
  27. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  28. C mél : gounand@semt2.smts.cea.fr
  29. C***********************************************************************
  30. C APPELES (UTIL) : AJMTK : ajoute un objet de type MATSIM (non
  31. C standard) à un objet de type MATRIK.
  32. C APPELE PAR : ZLAP2A : Calcul de la matrice jacobienne du
  33. C résidu du laplacien VF 3D.
  34. C***********************************************************************
  35. C ENTREES : PROPHY (type PROPHY) : propriétés des espèces
  36. C PROPH2 (type PROPH2) : précond. de PROPHY
  37. C MPROC (type MPOVAL) : masse volumique par
  38. C élément.
  39. C MPVOLU (type MPOVAL) : volume des éléments.
  40. C MPNORM (type MPOVAL) : normale aux faces.
  41. C MPSURF (type MPOVAL) : surface des faces.
  42. C MELEFL (type MELEME) : connectivités face-(centre
  43. C gauche, centre droit).
  44. C KRFACE (type MLENTI) : tableau de repérage dans
  45. C le maillage des faces des éléments.
  46. C KRCENT (type MLENTI) : tableau de repérage dans
  47. C le maillage des centres des éléments.
  48. C NOMINC (type MLMOTS) : noms des inconnues.
  49. C LCLIMR (type logique) : .TRUE. => CL de Dirichlet
  50. C sur la densité.
  51. C KRRIMP (type MLENTI) : tableau de repérage dans
  52. C maillage des CL de Dirichlet sur la densité.
  53. C MPRIMP (type MPOVAL) : valeurs des CL de
  54. C Dirichlet sur la densité.
  55. C LCLIMT (type logique) : .TRUE. => CL de Dirichlet
  56. C sur la température.
  57. C KRTIMP (type MLENTI) : tableau de repérage dans
  58. C maillage des CL de Dirichlet sur la température.
  59. C MPTIMP (type MPOVAL) : valeurs des CL de
  60. C Dirichlet sur la température.
  61. C ENTREES/SORTIES : IJACO (type MATRIK) : matrice jacobienne du
  62. C résidu du laplacien VF 3D.
  63. C SORTIES : -
  64. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  65. C***********************************************************************
  66. C VERSION : v1, 08/03/2002, version initiale
  67. C HISTORIQUE : v1, 08/03/2002, création
  68. C HISTORIQUE :
  69. C HISTORIQUE :
  70. C***********************************************************************
  71. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  72. C en cas de modification de ce sous-programme afin de faciliter
  73. C la maintenance !
  74. C***********************************************************************
  75.  
  76. -INC PPARAM
  77. -INC CCOPTIO
  78. -INC SMCOORD
  79. -INC SMCHPOI
  80. POINTEUR MPDKC.MPOVAL,MPDNC.MPOVAL
  81. POINTEUR MPROC.MPOVAL,MPTEMC.MPOVAL,MPYKC.MPOVAL
  82. POINTEUR MPRIMP.MPOVAL,MPTIMP.MPOVAL
  83. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  84. -INC SMCHAML
  85. POINTEUR ICOGRY.MCHELM,JCOGRY.MCHAML
  86. POINTEUR KDYKDX.MELVAL,KDYKDY.MELVAL,KDYKDZ.MELVAL
  87. -INC SMELEME
  88. POINTEUR MELEFL.MELEME
  89. POINTEUR MCOGRY.MELEME
  90. -INC SMLENTI
  91. POINTEUR KRYIMP.MLENTI,KRRIMP.MLENTI,KRTIMP.MLENTI
  92. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  93. -INC SMLMOTS
  94. POINTEUR NOMINC.MLMOTS
  95. POINTEUR IJACO.MATRIK
  96. INTEGER NESP,IESP
  97. SEGMENT PROPHY
  98. CHARACTER*4 NOMESP(NESP+1)
  99. REAL*8 CV(NESP+1)
  100. REAL*8 R(NESP+1)
  101. REAL*8 H0K(NESP+1)
  102. POINTEUR CDIFF(NESP+1).MCHPOI
  103. POINTEUR YK(NESP+1).MCHPOI
  104. POINTEUR GRADYK(NESP+1).MCHPOI
  105. POINTEUR CGRYK(NESP+1).MCHELM
  106. POINTEUR CLYK(NESP+1).MCHPOI
  107. ENDSEGMENT
  108. SEGMENT PROPH2
  109. POINTEUR MPDIFF(NESP+1).MPOVAL
  110. POINTEUR MPVALY(NESP+1).MPOVAL
  111. POINTEUR MPGRAD(NESP+1).MPOVAL
  112. LOGICAL LCLIM(NESP+1)
  113. POINTEUR KRCLIM(NESP+1).MLENTI
  114. ENDSEGMENT
  115. *
  116. * Objet matrice élémentaire simplifié
  117. *
  118. SEGMENT GMATSI
  119. INTEGER POIPR1(NPP1,NEL1)
  120. INTEGER POIDU1(1,NEL1)
  121. INTEGER POIPR2(NPP2,NEL2)
  122. INTEGER POIDU2(2,NEL2)
  123. POINTEUR LMATSI(0).MATSIM
  124. ENDSEGMENT
  125. * Contributions de la part du gradient de YK (CTGRY)
  126. POINTEUR CTGRY.GMATSI
  127. SEGMENT MATSIM
  128. CHARACTER*8 NOMPRI,NOMDUA
  129. REAL*8 VALMA1(1,NPP1,NEL1)
  130. REAL*8 VALMA2(2,NPP2,NEL2)
  131. ENDSEGMENT
  132. POINTEUR RETRHO.MATSIM
  133. POINTEUR RETRYK.MATSIM
  134. *
  135. REAL*8 DKG,DKD,DKF,DNG,DND,DNF
  136. REAL*8 RHOG,RHOD,RHOF
  137. REAL*8 TEMG,TEMD,TEMF
  138. *
  139. INTEGER IMPR,IRET
  140. *
  141. LOGICAL LCLIMY,LCLIMT,LCLIMR
  142. LOGICAL LMUR
  143. LOGICAL LCTRB2
  144. *
  145. INTEGER IELEM,IPD,IPP,ISOUCH,IEL1,IEL2
  146. INTEGER NELEM,NPD,NPP,NSOUCH,NEL1,NEL2,NPP1,NPP2
  147. INTEGER NGCDRO,NGCGAU,NGFACE,NPPRIM,NPDUAL
  148. INTEGER NLCENP,NLCEND,NLFACE,NLCLY,NLFRI,NLFTI
  149. INTEGER NPTEL
  150. *
  151. REAL*8 BETAX,BETAY,BETAZ,CNX,CNY,CNZ
  152. REAL*8 SIGNOR,SURFFA,VOLUEL
  153. REAL*8 RHOP,YKP
  154. REAL*8 CPK,HKF,CPN,HNF
  155. REAL*8 FACTOR
  156. REAL*8 DYKDRO,DYKDRY
  157. *
  158. INTEGER ICOORX,NLCGAU,NLCDRO
  159. REAL*8 XF,YF,ZF,XG,YG,ZG,XFMXG,YFMYG,ZFMZG,DRG
  160. & ,XD,YD,ZD,XFMXD,YFMYD,ZFMZD,DRD,ALPHA,UMALPH
  161. C
  162. *
  163. * Executable statements
  164. *
  165. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans zlap2c.eso'
  166. SEGACT PROPHY
  167. NESP=PROPHY.CV(/1)-1
  168. SEGACT PROPH2
  169. MPDNC=PROPH2.MPDIFF(NESP+1)
  170. SEGACT MPDNC
  171. DO IESP=1,NESP
  172. IF (LCLIMR) THEN
  173. SEGACT KRRIMP
  174. SEGACT MPRIMP
  175. ENDIF
  176. IF (LCLIMT) THEN
  177. SEGACT KRTIMP
  178. SEGACT MPTIMP
  179. ENDIF
  180. LCLIMY=PROPH2.LCLIM(IESP)
  181. IF (LCLIMY) THEN
  182. KRYIMP=PROPH2.KRCLIM(IESP)
  183. SEGACT KRYIMP
  184. ENDIF
  185. SEGACT NOMINC
  186. SEGACT KRCENT
  187. SEGACT KRFACE
  188. SEGACT MELEFL
  189. SEGACT MPSURF
  190. SEGACT MPNORM
  191. SEGACT MPVOLU
  192. MPDKC=PROPH2.MPDIFF(IESP)
  193. SEGACT MPDKC
  194. SEGACT MPROC
  195. SEGACT MPTEMC
  196. MPYKC=PROPH2.MPVALY(IESP)
  197. SEGACT MPYKC
  198. ICOGRY=PROPHY.CGRYK(IESP)
  199. SEGACT ICOGRY
  200. NSOUCH=ICOGRY.IMACHE(/1)
  201. DO 1 ISOUCH=1,NSOUCH
  202. MCOGRY=ICOGRY.IMACHE(ISOUCH)
  203. JCOGRY=ICOGRY.ICHAML(ISOUCH)
  204. SEGACT JCOGRY
  205. KDYKDX=JCOGRY.IELVAL(1)
  206. KDYKDY=JCOGRY.IELVAL(2)
  207. KDYKDZ=JCOGRY.IELVAL(3)
  208. SEGDES JCOGRY
  209. SEGACT KDYKDX
  210. SEGACT KDYKDY
  211. SEGACT KDYKDZ
  212. SEGACT MCOGRY
  213. NELEM=MCOGRY.NUM(/2)
  214. NPTEL=MCOGRY.NUM(/1)
  215. NPP1=NPTEL-1
  216. NPP2=NPTEL-1
  217. NEL1=NELEM
  218. NEL2=NELEM
  219. IEL1=1
  220. IEL2=1
  221. SEGINI RETRHO
  222. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  223. SEGINI RETRYK
  224. ENDIF
  225. SEGINI CTGRY
  226. RETRHO.NOMPRI(1:4)=NOMINC.MOTS(1)
  227. RETRHO.NOMPRI(5:8)=' '
  228. RETRHO.NOMDUA(1:4)=NOMINC.MOTS(IDIM+2)
  229. RETRHO.NOMDUA(5:8)=' '
  230. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  231. RETRYK.NOMPRI(1:4)=NOMINC.MOTS(IDIM+2+IESP)
  232. RETRYK.NOMPRI(5:8)=' '
  233. RETRYK.NOMDUA(1:4)=NOMINC.MOTS(IDIM+2)
  234. RETRYK.NOMDUA(5:8)=' '
  235. ENDIF
  236. DO 12 IELEM=1,NELEM
  237. * Le premier point du support de ICOGRY est un point FACE
  238. NGFACE=MCOGRY.NUM(1,IELEM)
  239. NLFACE=KRFACE.LECT(NGFACE)
  240. IF (NLFACE.EQ.0) THEN
  241. WRITE(IOIMP,*) 'Erreur de programmation n°1'
  242. GOTO 9999
  243. ENDIF
  244. * On calcule la contribution à la matrice jacobienne IJACO de la face
  245. * NGFAC (points duaux : centres à gauche et à droite de la face)
  246. * (points primaux : une partie (bicoz conditions aux limites)
  247. * de ceux du stencil pour le calcul du gradient
  248. * à la face, ils doivent être des points centres)
  249. * Si le flux de chaleur sur la face est imposé par les conditions
  250. * aux limites, la contribution de la face à IJACO est nulle.
  251. NGCGAU=MELEFL.NUM(1,NLFACE)
  252. NGCDRO=MELEFL.NUM(3,NLFACE)
  253. NLCGAU=KRCENT.LECT(NGCGAU)
  254. NLCDRO=KRCENT.LECT(NGCDRO)
  255. LMUR=(NGCGAU.EQ.NGCDRO)
  256. * On distingue le cas où la face est un bord du maillage (mur)
  257. * du cas où la face est interne au maillage
  258. IF (.NOT.LMUR) THEN
  259. NPD=2
  260. ICOORX = ((IDIM + 1) * (NGFACE - 1))+1
  261. XF = MCOORD.XCOOR(ICOORX)
  262. YF = MCOORD.XCOOR(ICOORX+1)
  263. ZF = MCOORD.XCOOR(ICOORX+2)
  264. ICOORX = ((IDIM + 1) * (NGCGAU - 1))+1
  265. XG = MCOORD.XCOOR(ICOORX)
  266. YG = MCOORD.XCOOR(ICOORX+1)
  267. ZG = MCOORD.XCOOR(ICOORX+2)
  268. XFMXG = XF - XG
  269. YFMYG = YF - YG
  270. ZFMZG = ZF - ZG
  271. DRG=SQRT((XFMXG*XFMXG)+(YFMYG*YFMYG)+(ZFMZG*ZFMZG))
  272. ICOORX = ((IDIM + 1) * (NGCDRO - 1))+1
  273. XD = MCOORD.XCOOR(ICOORX)
  274. YD = MCOORD.XCOOR(ICOORX+1)
  275. ZD = MCOORD.XCOOR(ICOORX+2)
  276. XFMXD = XF - XD
  277. YFMYD = YF - YD
  278. ZFMZD = ZF - ZD
  279. DRD=SQRT((XFMXD*XFMXD)+(YFMYD*YFMYD)+(ZFMZD*ZFMZD))
  280. ALPHA=DRG/(DRG+DRD)
  281. UMALPH= 1.0D0 - ALPHA
  282. ELSE
  283. NPD=1
  284. ALPHA=0.0D0
  285. UMALPH=1.0D0
  286. ENDIF
  287. IF (LCLIMR) THEN
  288. NLFRI=KRRIMP.LECT(NGFACE)
  289. ELSE
  290. NLFRI=0
  291. ENDIF
  292. IF (NLFRI.GT.0) THEN
  293. RHOF=MPRIMP.VPOCHA(NLFRI,1)
  294. ELSE
  295. RHOG = MPROC.VPOCHA(NLCGAU,1)
  296. RHOD = MPROC.VPOCHA(NLCDRO,1)
  297. RHOF = UMALPH * RHOG + ALPHA * RHOD
  298. ENDIF
  299. IF (LCLIMT) THEN
  300. NLFTI=KRTIMP.LECT(NGFACE)
  301. ELSE
  302. NLFTI=0
  303. ENDIF
  304. IF (NLFTI.GT.0) THEN
  305. TEMF=MPTIMP.VPOCHA(NLFTI,1)
  306. ELSE
  307. TEMG = MPTEMC.VPOCHA(NLCGAU,1)
  308. TEMD = MPTEMC.VPOCHA(NLCDRO,1)
  309. TEMF = UMALPH * TEMG + ALPHA * TEMD
  310. ENDIF
  311. DKG = MPDKC.VPOCHA(NLCGAU,1)
  312. DKD = MPDKC.VPOCHA(NLCDRO,1)
  313. DKF = UMALPH * DKG + ALPHA * DKD
  314. DNG = MPDNC.VPOCHA(NLCGAU,1)
  315. DND = MPDNC.VPOCHA(NLCDRO,1)
  316. DNF = UMALPH * DNG + ALPHA * DND
  317. NPP=NPTEL-1
  318. * IPD=1 : point à gauche du point NGFACE
  319. * IPD=2 : point à droite du point NGFACE
  320. DO 122 IPD=1,NPD
  321. NPDUAL=MELEFL.NUM((2*IPD)-1,NLFACE)
  322. IF (.NOT.LMUR) THEN
  323. CTGRY.POIDU2(IPD,IEL2)=NPDUAL
  324. ELSE
  325. CTGRY.POIDU1(IPD,IEL1)=NPDUAL
  326. ENDIF
  327. NLCEND=KRCENT.LECT(NPDUAL)
  328. IF (NLCEND.EQ.0) THEN
  329. WRITE(IOIMP,*) 'Erreur grave n°1'
  330. GOTO 9999
  331. ENDIF
  332. DO 124 IPP=1,NPP
  333. NPPRIM=MCOGRY.NUM(IPP+1,IELEM)
  334. LCTRB2=.TRUE.
  335. IF (LCLIMY) THEN
  336. NLCLY=KRYIMP.LECT(NPPRIM)
  337. IF (NLCLY.NE.0) THEN
  338. LCTRB2=.FALSE.
  339. ENDIF
  340. ENDIF
  341. IF (.NOT.LCTRB2) THEN
  342. * Lorsque une contribution est nulle, on fixe artificiellement le
  343. * point primal égal au point dual.
  344. IF (.NOT.LMUR) THEN
  345. CTGRY.POIPR2(IPP,IEL2)=NPDUAL
  346. RETRHO.VALMA2(IPD,IPP,IEL2)=0.D0
  347. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  348. RETRYK.VALMA2(IPD,IPP,IEL2)=0.D0
  349. ENDIF
  350. ELSE
  351. CTGRY.POIPR1(IPP,IEL1)=NPDUAL
  352. RETRHO.VALMA1(IPD,IPP,IEL1)=0.D0
  353. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  354. RETRYK.VALMA1(IPD,IPP,IEL1)=0.D0
  355. ENDIF
  356. ENDIF
  357. ELSE
  358. * Les contributions valent :
  359. * (d Res_{\rho Yk})_d / (d var)_p =
  360. * +/-1 (normale sortante, rentrante) (1/V_d) * (S_f) * \rho_f * Dk_f
  361. * * [ ((n_x * \beta_x) + (n_y * \beta_y) + (n_z * \beta_z)) *
  362. * ((dYk)_p / (d var)_p)]
  363. * avec :
  364. * (dYk)_p / (d \rho)_p = - Yk_p / \rho_p
  365. * (dYk)_p / (d \rho Yk)_p = 1 / \rho_p
  366. * \beta_x : coefficients pour le calcul de dYk/dx
  367. * \beta_y : coefficients pour le calcul de dYk/dy
  368. * \beta_z : coefficients pour le calcul de dYk/dz
  369. *
  370. NLCENP=KRCENT.LECT(NPPRIM)
  371. IF (NLCENP.EQ.0) THEN
  372. WRITE(IOIMP,*) 'Erreur grave n°2'
  373. GOTO 9999
  374. ENDIF
  375. * normale sortante pour IPD=1, rentrante pour IPD=2
  376. SIGNOR=(-1.D0)**(IPD+1)
  377. VOLUEL=MPVOLU.VPOCHA(NLCEND,1)
  378. SURFFA=MPSURF.VPOCHA(NLFACE,1)
  379. CNX =MPNORM.VPOCHA(NLFACE,1)
  380. CNY =MPNORM.VPOCHA(NLFACE,2)
  381. CNZ =MPNORM.VPOCHA(NLFACE,3)
  382. BETAX =KDYKDX.VELCHE(IPP+1,IELEM)
  383. BETAY =KDYKDY.VELCHE(IPP+1,IELEM)
  384. BETAZ =KDYKDZ.VELCHE(IPP+1,IELEM)
  385. RHOP =MPROC.VPOCHA(NLCENP,1)
  386. YKP =MPYKC.VPOCHA(NLCENP,1)
  387. * YKP =MPYKC.VPOCHA(NLCEND,1)
  388. CPK=PROPHY.CV(IESP)+PROPHY.R(IESP)
  389. CPN=PROPHY.CV(NESP+1)+PROPHY.R(NESP+1)
  390. HKF=(CPK*TEMF)+PROPHY.H0K(IESP)
  391. HNF=(CPN*TEMF)+PROPHY.H0K(NESP+1)
  392. FACTOR=SIGNOR*(1.D0/VOLUEL)*SURFFA*RHOF*
  393. $ ((HKF*DKF)-(HNF*DNF))
  394. $ *((CNX*BETAX)+(CNY*BETAY)+(CNZ*BETAZ))
  395. DYKDRO=-YKP/RHOP
  396. DYKDRY=1.D0/RHOP
  397. C IF((NGCGAU.EQ.30).AND.(NGCDRO.EQ.30)) THEN
  398. C WRITE(IOIMP,*) 'NGFACE=',NGFACE
  399. C WRITE(IOIMP,*) 'NGCGAU=',NGCGAU
  400. C WRITE(IOIMP,*) 'NGCDRO=',NGCDRO
  401. C WRITE(IOIMP,*) 'IESP=',IESP
  402. C WRITE(IOIMP,*) 'JACO(RETRYK)=',
  403. C $ (FACTOR*DYKDRY)
  404. C ENDIF
  405. IF (.NOT.LMUR) THEN
  406. CTGRY.POIPR2(IPP,IEL2)=NPPRIM
  407. RETRHO.VALMA2(IPD,IPP,IEL2)=FACTOR*DYKDRO
  408. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  409. RETRYK.VALMA2(IPD,IPP,IEL2)=FACTOR*DYKDRY
  410. ENDIF
  411. ELSE
  412. CTGRY.POIPR1(IPP,IEL1)=NPPRIM
  413. RETRHO.VALMA1(IPD,IPP,IEL1)=FACTOR*DYKDRO
  414. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  415. RETRYK.VALMA1(IPD,IPP,IEL1)=FACTOR*DYKDRY
  416. ENDIF
  417. ENDIF
  418. ENDIF
  419. 124 CONTINUE
  420. 122 CONTINUE
  421. IF (.NOT.LMUR) THEN
  422. IEL2=IEL2+1
  423. ELSE
  424. IEL1=IEL1+1
  425. ENDIF
  426. 12 CONTINUE
  427. NPP1=NPTEL-1
  428. NPP2=NPTEL-1
  429. NEL1=IEL1-1
  430. NEL2=IEL2-1
  431. SEGADJ RETRHO
  432. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  433. SEGADJ RETRYK
  434. ENDIF
  435. SEGADJ CTGRY
  436. CTGRY.LMATSI(**)=RETRHO
  437. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  438. CTGRY.LMATSI(**)=RETRYK
  439. ENDIF
  440. * On accumule les matrices résultantes dans IJACO
  441. CALL AJMTK(CTGRY,IJACO,IMPR,IRET)
  442. IF (IRET.NE.0) GOTO 9999
  443. SEGSUP RETRHO
  444. IF ((IESP.GE.1).AND.(IESP.LE.NESP)) THEN
  445. SEGSUP RETRYK
  446. ENDIF
  447. SEGSUP CTGRY
  448. *
  449. SEGDES MCOGRY
  450. SEGDES KDYKDZ
  451. SEGDES KDYKDY
  452. SEGDES KDYKDX
  453. 1 CONTINUE
  454. SEGDES ICOGRY
  455. SEGDES MPYKC
  456. SEGDES MPTEMC
  457. SEGDES MPROC
  458. SEGDES MPDKC
  459. SEGDES MPVOLU
  460. SEGDES MPNORM
  461. SEGDES MPSURF
  462. SEGDES MELEFL
  463. SEGDES KRFACE
  464. SEGDES KRCENT
  465. SEGDES NOMINC
  466. IF (LCLIMY) THEN
  467. SEGDES KRYIMP
  468. ENDIF
  469. IF (LCLIMT) THEN
  470. SEGDES KRTIMP
  471. SEGDES MPTIMP
  472. ENDIF
  473. IF (LCLIMR) THEN
  474. SEGDES KRRIMP
  475. SEGDES MPRIMP
  476. ENDIF
  477. ENDDO
  478. SEGDES MPDNC
  479. SEGDES PROPH2
  480. SEGDES PROPHY
  481. *
  482. * Normal termination
  483. *
  484. IRET=0
  485. RETURN
  486. *
  487. * Format handling
  488. *
  489. *
  490. * Error handling
  491. *
  492. 9999 CONTINUE
  493. IRET=1
  494. WRITE(IOIMP,*) 'An error was detected in subroutine zlap2c'
  495. RETURN
  496. *
  497. * End of subroutine ZLAP2C
  498. *
  499. END
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  

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