Télécharger ylap1e.eso

Retour à la liste

Numérotation des lignes :

ylap1e
  1. C YLAP1E SOURCE CB215821 20/11/25 13:44:09 10792
  2. SUBROUTINE YLAP1E(ICOGRV,MPGRVF,MPROC,MPVITC,
  3. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  4. $ KRFACE,KRCENT,
  5. $ LCLIMV,KRVIMP,MPVIMP,
  6. $ LCLITO,KRTOIM,
  7. $ NOMINC,
  8. $ MU,
  9. $ IJACO,
  10. $ IMPR,IRET)
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8 (A-H,O-Z)
  13. C***********************************************************************
  14. C NOM : YLAP1E
  15. C DESCRIPTION : Calcul de la matrice jacobienne du résidu du laplacien
  16. C VF 2D.
  17. C Ici, on ne calcule que des contributions 'compliquées' à
  18. C la matrice jacobienne faisant intervenir les
  19. C coefficients pour le calcul des gradients de vitesse
  20. C (ICOGRV)
  21. C (contributions à (d Res_{\rho e_t} / d var)
  22. C var prenant successivement les valeurs :
  23. C \rho, \rho u, \rho v, \rho e_t )
  24. C Les contributions sont plus "compliquées" à calculer que
  25. C les simples (cf. ylap1c) car on a à dériver des produits
  26. C de fonctions de la vitesse.
  27. C ylap1d calcule aussi une partie des contributions
  28. C 'compliquées'.
  29. C
  30. C NOTE PERSO : On pourrait programmer ça plus lisiblement en stockant
  31. C les contributions dans un tableau de pointeurs (2
  32. C indices, c'est possible ?) et en effectuant des produits
  33. C matriciels (coeff. x matrices de dérivées).
  34. C On n'y coupera pas si on veut regrouper 2D et 3D...
  35. C On ne va pas le faire.
  36. C
  37. C LANGAGE : ESOPE
  38. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  39. C mél : gounand@semt2.smts.cea.fr
  40. C***********************************************************************
  41. C APPELES (UTIL) : AJMTK : ajoute un objet de type MATSIM (non
  42. C standard) à un objet de type MATRIK.
  43. C APPELE PAR : YLAP1A : Calcul de la matrice jacobienne du
  44. C résidu du laplacien VF 2D.
  45. C***********************************************************************
  46. C ENTREES : ICOGRV (type MCHELM) : coefficients pour le
  47. C calcul du gradient de la vitesse aux
  48. C interfaces.
  49. C MPGRVF (type MPOVAL) : gradient de la vitesse
  50. C aux interfaces.
  51. C MPROC (type MPOVAL) : masse volumique par
  52. C élément.
  53. C MPVITC (type MPOVAL) : vitesse par élément.
  54. C MPVOLU (type MPOVAL) : volume des éléments.
  55. C MPNORM (type MPOVAL) : normale aux faces.
  56. C MPSURF (type MPOVAL) : surface des faces.
  57. C MELEFL (type MELEME) : connectivités face-(centre
  58. C gauche, centre droit).
  59. C KRFACE (type MLENTI) : tableau de repérage dans
  60. C le maillage des faces des éléments.
  61. C KRCENT (type MLENTI) : tableau de repérage dans
  62. C le maillage des centres des éléments.
  63. C LCLIMV (type logique) : .TRUE. => CL de Dirichlet
  64. C sur la vitesse.
  65. C KRVIMP (type MLENTI) : tableau de repérage dans
  66. C maillage des CL de Dirichlet sur la
  67. C vitesse.
  68. C MPVIMP (type MPOVAL) : valeurs des CL de
  69. C Dirichlet sur la vitesse.
  70. C LCLITO (type logique) : .TRUE. => CL de Dirichlet
  71. C sur le tenseur des contraintes.
  72. C KRTOIM (type MLENTI) : tableau de repérage dans
  73. C maillage des CL de Dirichlet sur le tenseur des
  74. C contraintes
  75. C NOMINC (type MLMOTS) : noms des inconnues.
  76. C MU (type réel) : viscosité dynamique (SI).
  77. C ENTREES/SORTIES : IJACO (type MATRIK) : matrice jacobienne du
  78. C résidu du laplacien VF 2D.
  79. C SORTIES : -
  80. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  81. C***********************************************************************
  82. C VERSION : v1, 21/08/2001, version initiale
  83. C HISTORIQUE : v1, 21/08/2001, création
  84. C HISTORIQUE :
  85. C HISTORIQUE :
  86. C***********************************************************************
  87. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  88. C en cas de modification de ce sous-programme afin de faciliter
  89. C la maintenance !
  90. C***********************************************************************
  91.  
  92. -INC PPARAM
  93. -INC CCOPTIO
  94. -INC SMCOORD
  95. -INC SMCHPOI
  96. POINTEUR MPGRVF.MPOVAL
  97. POINTEUR MPROC.MPOVAL ,MPVITC.MPOVAL
  98. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  99. POINTEUR MPVIMP.MPOVAL
  100. -INC SMCHAML
  101. POINTEUR ICOGRV.MCHELM,JCOGRV.MCHAML
  102. POINTEUR KDUNDX.MELVAL,KDUNDY.MELVAL
  103. -INC SMELEME
  104. POINTEUR MELEFL.MELEME
  105. POINTEUR MCOGRV.MELEME
  106. -INC SMLENTI
  107. POINTEUR KRVIMP.MLENTI,KRTOIM.MLENTI
  108. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  109. -INC SMLMOTS
  110. POINTEUR NOMINC.MLMOTS
  111. POINTEUR IJACO.MATRIK
  112. *
  113. * Objet matrice élémentaire simplifié
  114. *
  115. SEGMENT GMATSI
  116. INTEGER POIPR1(NPP1,NEL1)
  117. INTEGER POIDU1(1,NEL1)
  118. INTEGER POIPR2(NPP2,NEL2)
  119. INTEGER POIDU2(2,NEL2)
  120. POINTEUR LMATSI(0).MATSIM
  121. ENDSEGMENT
  122. * Contributions compliquées 1 de la part du gradient de
  123. * vitesse (CCGRV1)
  124. POINTEUR CCGRV1.GMATSI
  125. SEGMENT MATSIM
  126. CHARACTER*8 NOMPRI,NOMDUA
  127. REAL*8 VALMA1(1,NPP1,NEL1)
  128. REAL*8 VALMA2(2,NPP2,NEL2)
  129. ENDSEGMENT
  130. POINTEUR RETRHO.MATSIM
  131. POINTEUR RETROU.MATSIM
  132. POINTEUR RETROV.MATSIM
  133. *
  134. REAL*8 MU
  135. *
  136. INTEGER IMPR,IRET
  137. *
  138. LOGICAL LCLIMV,LCLITO
  139. LOGICAL LMUR
  140. LOGICAL LCTR1A,LCTR1B
  141. *
  142. INTEGER IELEM,IPD,IPP,ISOUCH,IEL1,IEL2
  143. INTEGER NELEM,NPD,NPP,NSOUCH,NEL1,NEL2,NPP1,NPP2
  144. INTEGER NGCDRO,NGCGAU,NGFACE,NPPRIM,NPDUAL
  145. INTEGER NLCENP,NLCEND,NLFACE,NLCLTO,NLCLV
  146. INTEGER NLCED,NLCEG,NLFVI
  147. INTEGER NPTEL
  148. INTEGER ICOORX
  149. *
  150. REAL*8 ALPHA,UMALPH
  151. REAL*8 DRD,DRG
  152. REAL*8 DUXXF,DUXYF,DUYXF,DUYYF
  153. REAL*8 UXD,UXF,UXG,UYD,UYF,UYG
  154. REAL*8 XD,XF,XG,XFMXD,XFMXG
  155. REAL*8 YD,YF,YG,YFMYD,YFMYG
  156. REAL*8 ALPHAX,ALPHAY,CNX,CNY
  157. REAL*8 SIGNOR,SURFFA,VOLUEL
  158. REAL*8 RHOP,UP,VP
  159. REAL*8 FACTOR,FACTDU,FACTDV
  160. REAL*8 DUDRHO,DUDROU,DVDRHO,DVDROV
  161. *
  162. * Executable statements
  163. *
  164. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans ylap1e.eso'
  165. * On calcule les contributions à (d Res_{\rho e_t} / d var) ; var
  166. * prenant successivement les valeurs :
  167. * \rho, \rho u, \rho v, \rho e_t
  168. * On dérive les termes : (\tens{\tau(\grad{u})} \prod \vect{u})
  169. * \pscal \vect{n}
  170. * ce qui donne deux contributions.
  171. * Contribution 1 :
  172. * ( (d \tens{\tau} / d var) \prod \vect{u}) \pscal \vect{n}
  173. * Contribution 2 :
  174. * ( \tens{\tau} \prod (d \vect{u} / d var)) \pscal \vect{n}
  175. * Note :
  176. * pas de contribution à (d Res_{\rho e_t} / d \rho e_t).
  177. * Les noms de matrices élémentaires (type MATSIM) associées sont :
  178. * RETRHO, RETROU, RETROV
  179. IF (LCLIMV) THEN
  180. SEGACT KRVIMP
  181. SEGACT MPVIMP
  182. ENDIF
  183. IF (LCLITO) THEN
  184. SEGACT KRTOIM
  185. ENDIF
  186. SEGACT NOMINC
  187. SEGACT KRCENT
  188. SEGACT KRFACE
  189. SEGACT MELEFL
  190. SEGACT MPSURF
  191. SEGACT MPNORM
  192. SEGACT MPVOLU
  193. SEGACT MPROC
  194. SEGACT MPVITC
  195. SEGACT MPGRVF
  196. SEGACT ICOGRV
  197. NSOUCH=ICOGRV.IMACHE(/1)
  198. DO 1 ISOUCH=1,NSOUCH
  199. MCOGRV=ICOGRV.IMACHE(ISOUCH)
  200. JCOGRV=ICOGRV.ICHAML(ISOUCH)
  201. SEGACT JCOGRV
  202. KDUNDX=JCOGRV.IELVAL(1)
  203. KDUNDY=JCOGRV.IELVAL(2)
  204. SEGDES JCOGRV
  205. SEGACT KDUNDX
  206. SEGACT KDUNDY
  207. SEGACT MCOGRV
  208. NELEM=MCOGRV.NUM(/2)
  209. NPTEL=MCOGRV.NUM(/1)
  210. NPP1=NPTEL-1
  211. NPP2=NPTEL-1
  212. NEL1=NELEM
  213. NEL2=NELEM
  214. IEL1=1
  215. IEL2=1
  216. SEGINI RETRHO
  217. SEGINI RETROU
  218. SEGINI RETROV
  219. SEGINI CCGRV1
  220. RETRHO.NOMPRI(1:4)=NOMINC.MOTS(1)
  221. RETRHO.NOMPRI(5:8)=' '
  222. RETRHO.NOMDUA(1:4)=NOMINC.MOTS(4)
  223. RETRHO.NOMDUA(5:8)=' '
  224. RETROU.NOMPRI(1:4)=NOMINC.MOTS(2)
  225. RETROU.NOMPRI(5:8)=' '
  226. RETROU.NOMDUA(1:4)=NOMINC.MOTS(4)
  227. RETROU.NOMDUA(5:8)=' '
  228. RETROV.NOMPRI(1:4)=NOMINC.MOTS(3)
  229. RETROV.NOMPRI(5:8)=' '
  230. RETROV.NOMDUA(1:4)=NOMINC.MOTS(4)
  231. RETROV.NOMDUA(5:8)=' '
  232. DO 12 IELEM=1,NELEM
  233. * Le premier point du support de ICOGRV est un point FACE
  234. NGFACE=MCOGRV.NUM(1,IELEM)
  235. NLFACE=KRFACE.LECT(NGFACE)
  236. IF (NLFACE.EQ.0) THEN
  237. WRITE(IOIMP,*) 'Erreur de programmation n°1'
  238. GOTO 9999
  239. ENDIF
  240. * On calcule la contribution 1 à la matrice jacobienne IJACO de la
  241. * face NGFACE
  242. * (points duaux : centres à gauche et à droite de la face)
  243. * (points primaux : une partie (bicoz conditions aux limites)
  244. * de ceux du stencil pour le calcul du gradient
  245. * à la face, ils doivent être des points centres)
  246. * Si le tenseur des contraintes sur la face est imposé par les
  247. * conditions aux limites, la contribution 1 de la face à IJACO est
  248. * nulle.
  249. LCTR1A=.TRUE.
  250. IF (LCLITO) THEN
  251. NLCLTO=KRTOIM.LECT(NGFACE)
  252. IF (NLCLTO.NE.0) THEN
  253. LCTR1A=.FALSE.
  254. ENDIF
  255. ENDIF
  256. IF (LCTR1A) THEN
  257. NGCGAU=MELEFL.NUM(1,NLFACE)
  258. NGCDRO=MELEFL.NUM(3,NLFACE)
  259. LMUR=(NGCGAU.EQ.NGCDRO)
  260. * On calcule tout d'abord une interpolation de la vitesse sur la
  261. * face NGFACE de la même manière que dans ylap12.eso.
  262. IF (LCLIMV) THEN
  263. NLFVI=KRVIMP.LECT(NGFACE)
  264. ELSE
  265. NLFVI=0
  266. ENDIF
  267. * La vitesse est imposée sur la face, rien à calculer
  268. IF (NLFVI.NE.0) THEN
  269. UXF=MPVIMP.VPOCHA(NLFVI,1)
  270. UYF=MPVIMP.VPOCHA(NLFVI,2)
  271. ELSE
  272. NLCEG=KRCENT.LECT(NGCGAU)
  273. NLCED=KRCENT.LECT(NGCDRO)
  274. * Cas non au bord
  275. IF (.NOT.LMUR) THEN
  276. * Paramètres géométriques
  277. ICOORX = ((IDIM + 1) * (NGFACE - 1))+1
  278. XF = MCOORD.XCOOR(ICOORX)
  279. YF = MCOORD.XCOOR(ICOORX+1)
  280. ICOORX = ((IDIM + 1) * (NGCGAU - 1))+1
  281. XG = MCOORD.XCOOR(ICOORX)
  282. YG = MCOORD.XCOOR(ICOORX+1)
  283. XFMXG = XF - XG
  284. YFMYG = YF - YG
  285. DRG=SQRT((XFMXG*XFMXG)+(YFMYG*YFMYG))
  286. ICOORX = ((IDIM + 1) * (NGCDRO - 1))+1
  287. XD = MCOORD.XCOOR(ICOORX)
  288. YD = MCOORD.XCOOR(ICOORX+1)
  289. XFMXD = XF - XD
  290. YFMYD = YF - YD
  291. DRD=SQRT((XFMXD*XFMXD)+(YFMYD*YFMYD))
  292. ALPHA=DRG/(DRG+DRD)
  293. UMALPH= 1.0D0 - ALPHA
  294. DUXXF = MPGRVF.VPOCHA(NLFACE,1)
  295. DUXYF = MPGRVF.VPOCHA(NLFACE,2)
  296. DUYXF = MPGRVF.VPOCHA(NLFACE,3)
  297. DUYYF = MPGRVF.VPOCHA(NLFACE,4)
  298. * Calcul de la vitesse
  299. UXG = MPVITC.VPOCHA(NLCEG,1)
  300. UYG = MPVITC.VPOCHA(NLCEG,2)
  301. UXD = MPVITC.VPOCHA(NLCED,1)
  302. UYD = MPVITC.VPOCHA(NLCED,2)
  303. UXF = UMALPH * UXG + ALPHA * UXD
  304. UYF = UMALPH * UYG + ALPHA * UYD
  305. * Correction de la vitesse lineaire exacte
  306. UXF = UXF +
  307. $ (DUXXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA)))
  308. $ +(DUXYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA)))
  309. UYF = UYF +
  310. $ (DUYXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA)))
  311. $ +(DUYYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA)))
  312.  
  313. * Cas au bord
  314. ELSE
  315. * Parametres geometriques
  316. ICOORX = ((IDIM + 1) * (NGFACE - 1))+1
  317. XF = MCOORD.XCOOR(ICOORX)
  318. YF = MCOORD.XCOOR(ICOORX+1)
  319. ICOORX = ((IDIM + 1) * (NGCGAU - 1))+1
  320. XG = MCOORD.XCOOR(ICOORX)
  321. YG = MCOORD.XCOOR(ICOORX+1)
  322. XFMXG = XF - XG
  323. YFMYG = YF - YG
  324. DUXXF = MPGRVF.VPOCHA(NLFACE,1)
  325. DUXYF = MPGRVF.VPOCHA(NLFACE,2)
  326. DUYXF = MPGRVF.VPOCHA(NLFACE,3)
  327. DUYYF = MPGRVF.VPOCHA(NLFACE,4)
  328. * Calcul de la vitesse
  329. UXF = MPVITC.VPOCHA(NLCEG,1)
  330. UYF = MPVITC.VPOCHA(NLCEG,2)
  331. * Correction de la vitesse lineaire exacte
  332. UXF = UXF + (DUXXF * XFMXG ) + (DUXYF * YFMYG )
  333. UYF = UYF + (DUYXF * XFMXG ) + (DUYYF * YFMYG )
  334. ENDIF
  335. ENDIF
  336. * On distingue le cas où la face est un bord du maillage (mur)
  337. * du cas où la face est interne au maillage
  338. IF (.NOT.LMUR) THEN
  339. NPD=2
  340. ELSE
  341. NPD=1
  342. ENDIF
  343. NPP=NPTEL-1
  344. * IPD=1 : point à gauche du point NGFACE
  345. * IPD=2 : point à droite du point NGFACE
  346. DO 122 IPD=1,NPD
  347. NPDUAL=MELEFL.NUM((2*IPD)-1,NLFACE)
  348. IF (.NOT.LMUR) THEN
  349. CCGRV1.POIDU2(IPD,IEL2)=NPDUAL
  350. ELSE
  351. CCGRV1.POIDU1(IPD,IEL1)=NPDUAL
  352. ENDIF
  353. NLCEND=KRCENT.LECT(NPDUAL)
  354. IF (NLCEND.EQ.0) THEN
  355. WRITE(IOIMP,*) 'Erreur grave n°1'
  356. GOTO 9999
  357. ENDIF
  358. DO 124 IPP=1,NPP
  359. NPPRIM=MCOGRV.NUM(IPP+1,IELEM)
  360. C
  361. C******************* Modif AB: we do not check the B.C. anymore
  362. C
  363. NLCENP=KRCENT.LECT(NPPRIM)
  364. IF(NLCENP .EQ. 0)THEN
  365. * Lorsque une contribution est nulle, on fixe artificiellement le
  366. * point primal égal au point dual.
  367. IF (.NOT.LMUR) THEN
  368. CCGRV1.POIPR2(IPP,IEL2)=NPDUAL
  369. RETRHO.VALMA2(IPD,IPP,IEL2)=0.D0
  370. RETROU.VALMA2(IPD,IPP,IEL2)=0.D0
  371. RETROV.VALMA2(IPD,IPP,IEL2)=0.D0
  372. ELSE
  373. CCGRV1.POIPR1(IPP,IEL1)=NPDUAL
  374. RETRHO.VALMA1(IPD,IPP,IEL1)=0.D0
  375. RETROU.VALMA1(IPD,IPP,IEL1)=0.D0
  376. RETROV.VALMA1(IPD,IPP,IEL1)=0.D0
  377. ENDIF
  378. ELSE
  379. * Les contributions 1 valent :
  380. * (d Res_{\rho e_t})_d / (d var)_p =
  381. * +/-1 (normale sortante, rentrante) (1/V_d) * (S_f) * \mu
  382. * * [ [ [ (n_x * (( 4/3 * u_f * \alpha_x) + (v_f * \alpha_y)))
  383. * + (n_y * ((u_f * \alpha_y) + (-2/3 * v_f * \alpha_x)))
  384. * ]
  385. * * ((du)_p / (d var)_p)
  386. * ]
  387. * + [ [ (n_x * ((-2/3 * u_f * \alpha_y) + (v_f * \alpha_x)))
  388. * + (n_y * ((u_f * \alpha_x) + ( 4/3 * v_f * \alpha_y)))
  389. * ]
  390. * * ((dv)_p / (d var)_p)
  391. * ]
  392. * ]
  393. C
  394. * normale sortante pour IPD=1, rentrante pour IPD=2
  395. SIGNOR=(-1.D0)**(IPD+1)
  396. VOLUEL=MPVOLU.VPOCHA(NLCEND,1)
  397. SURFFA=MPSURF.VPOCHA(NLFACE,1)
  398. CNX =MPNORM.VPOCHA(NLFACE,1)
  399. CNY =MPNORM.VPOCHA(NLFACE,2)
  400. ALPHAX=KDUNDX.VELCHE(IPP+1,IELEM)
  401. ALPHAY=KDUNDY.VELCHE(IPP+1,IELEM)
  402. RHOP =MPROC.VPOCHA(NLCENP,1)
  403. UP =MPVITC.VPOCHA(NLCENP,1)
  404. VP =MPVITC.VPOCHA(NLCENP,2)
  405. FACTOR=SIGNOR*(1.D0/VOLUEL)*SURFFA*MU
  406. FACTDU=(CNX*((( 4.D0/3.D0)*UXF*ALPHAX)
  407. $ +(UYF*ALPHAY)))
  408. $ + (CNY*((UXF*ALPHAY)
  409. $ +((-2.D0/3.D0)*UYF*ALPHAX)))
  410. FACTDV=(CNX*(((-2.D0/3.D0)*UXF*ALPHAY)
  411. $ +(UYF*ALPHAX)))
  412. $ + (CNY*((UXF*ALPHAX)
  413. $ +(( 4.D0/3.D0)*UYF*ALPHAY)))
  414. DUDRHO=-UP /RHOP
  415. DUDROU=1.D0/RHOP
  416. DVDRHO=-VP /RHOP
  417. DVDROV=1.D0/RHOP
  418. IF (.NOT.LMUR) THEN
  419. CCGRV1.POIPR2(IPP,IEL2)=NPPRIM
  420. RETRHO.VALMA2(IPD,IPP,IEL2)=
  421. $ FACTOR*( (FACTDU*DUDRHO)
  422. $ +(FACTDV*DVDRHO))
  423. RETROU.VALMA2(IPD,IPP,IEL2)=
  424. $ FACTOR* (FACTDU*DUDROU)
  425. RETROV.VALMA2(IPD,IPP,IEL2)=
  426. $ FACTOR* (FACTDV*DVDROV)
  427. ELSE
  428. CCGRV1.POIPR1(IPP,IEL1)=NPPRIM
  429. RETRHO.VALMA1(IPD,IPP,IEL1)=
  430. $ FACTOR*( (FACTDU*DUDRHO)
  431. $ +(FACTDV*DVDRHO))
  432. RETROU.VALMA1(IPD,IPP,IEL1)=
  433. $ FACTOR* (FACTDU*DUDROU)
  434. RETROV.VALMA1(IPD,IPP,IEL1)=
  435. $ FACTOR* (FACTDV*DVDROV)
  436. ENDIF
  437. ENDIF
  438. 124 CONTINUE
  439. 122 CONTINUE
  440. IF (.NOT.LMUR) THEN
  441. IEL2=IEL2+1
  442. ELSE
  443. IEL1=IEL1+1
  444. ENDIF
  445. ENDIF
  446. 12 CONTINUE
  447. NPP1=NPTEL-1
  448. NPP2=NPTEL-1
  449. NEL1=IEL1-1
  450. NEL2=IEL2-1
  451. SEGADJ RETRHO
  452. SEGADJ RETROU
  453. SEGADJ RETROV
  454. SEGADJ CCGRV1
  455. CCGRV1.LMATSI(**)=RETRHO
  456. CCGRV1.LMATSI(**)=RETROU
  457. CCGRV1.LMATSI(**)=RETROV
  458. * On accumule les matrices résultantes dans IJACO
  459. CALL AJMTK(CCGRV1,IJACO,IMPR,IRET)
  460. IF (IRET.NE.0) GOTO 9999
  461. SEGSUP RETRHO
  462. SEGSUP RETROU
  463. SEGSUP RETROV
  464. SEGSUP CCGRV1
  465. *
  466. SEGDES MCOGRV
  467. SEGDES KDUNDY
  468. SEGDES KDUNDX
  469. 1 CONTINUE
  470. SEGDES ICOGRV
  471. SEGDES MPGRVF
  472. SEGDES MPVITC
  473. SEGDES MPROC
  474. SEGDES MPVOLU
  475. SEGDES MPNORM
  476. SEGDES MPSURF
  477. SEGDES MELEFL
  478. SEGDES KRFACE
  479. SEGDES KRCENT
  480. SEGDES NOMINC
  481. IF (LCLITO) THEN
  482. SEGDES KRTOIM
  483. ENDIF
  484. IF (LCLIMV) THEN
  485. SEGDES KRVIMP
  486. SEGDES MPVIMP
  487. ENDIF
  488. *
  489. * Normal termination
  490. *
  491. IRET=0
  492. RETURN
  493. *
  494. * Format handling
  495. *
  496. *
  497. * Error handling
  498. *
  499. 9999 CONTINUE
  500. IRET=1
  501. WRITE(IOIMP,*) 'An error was detected in subroutine ylap1e'
  502. RETURN
  503. *
  504. * End of subroutine YLAP1E
  505. *
  506. END
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  

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