Télécharger xlap1c.eso

Retour à la liste

Numérotation des lignes :

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

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