Télécharger ylap1d.eso

Retour à la liste

Numérotation des lignes :

ylap1d
  1. C YLAP1D SOURCE CB215821 20/11/25 13:44:08 10792
  2. SUBROUTINE YLAP1D(ICOGRV,MPGRVF,MPROC,MPVITC,
  3. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  4. $ KRFACE,KRCENT,
  5. $ LCLIMV,KRVIMP,
  6. $ LCLITO,KRTOIM,MPTOIM,
  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 : YLAP1D
  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 ylap1e 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
  38. C LANGAGE : ESOPE
  39. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  40. C mél : gounand@semt2.smts.cea.fr
  41. C***********************************************************************
  42. C APPELES (UTIL) : AJMTK : ajoute un objet de type MATSIM (non
  43. C standard) à un objet de type MATRIK.
  44. C APPELE PAR : YLAP1A : Calcul de la matrice jacobienne du
  45. C résidu du laplacien VF 2D.
  46. C***********************************************************************
  47. C ENTREES : ICOGRV (type MCHELM) : coefficients pour le
  48. C calcul du gradient de la vitesse aux
  49. C interfaces.
  50. C MPGRVF (type MPOVAL) : gradient de la vitesse
  51. C aux interfaces.
  52. C MPROC (type MPOVAL) : masse volumique par
  53. C élément.
  54. C MPVITC (type MPOVAL) : vitesse par élément.
  55. C MPVOLU (type MPOVAL) : volume des éléments.
  56. C MPNORM (type MPOVAL) : normale aux faces.
  57. C MPSURF (type MPOVAL) : surface des faces.
  58. C MELEFL (type MELEME) : connectivités face-(centre
  59. C gauche, centre droit).
  60. C KRFACE (type MLENTI) : tableau de repérage dans
  61. C le maillage des faces des éléments.
  62. C KRCENT (type MLENTI) : tableau de repérage dans
  63. C le maillage des centres des éléments.
  64. C LCLIMV (type logique) : .TRUE. => CL de Dirichlet
  65. C sur la vitesse.
  66. C KRVIMP (type MLENTI) : tableau de repérage dans
  67. C maillage des CL de Dirichlet sur la
  68. C vitesse.
  69. C LCLITO (type logique) : .TRUE. => CL de Dirichlet
  70. C sur le tenseur des contraintes.
  71. C KRTOIM (type MLENTI) : tableau de repérage dans
  72. C maillage des CL de Dirichlet sur le tenseur des
  73. C contraintes
  74. C MPTOIM (type MPOVAL) : valeurs des CL de
  75. C Dirichlet sur le tenseur des contraintes.
  76. C NOMINC (type MLMOTS) : noms des inconnues.
  77. C MU (type réel) : viscosité dynamique (SI).
  78. C ENTREES/SORTIES : IJACO (type MATRIK) : matrice jacobienne du
  79. C résidu du laplacien VF 2D.
  80. C SORTIES : -
  81. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  82. C***********************************************************************
  83. C VERSION : v1, 21/08/2001, version initiale
  84. C HISTORIQUE : v1, 21/08/2001, création
  85. C HISTORIQUE :
  86. C HISTORIQUE :
  87. C***********************************************************************
  88. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  89. C en cas de modification de ce sous-programme afin de faciliter
  90. C la maintenance !
  91. C***********************************************************************
  92.  
  93. -INC PPARAM
  94. -INC CCOPTIO
  95. -INC SMCOORD
  96. -INC SMCHPOI
  97. POINTEUR MPGRVF.MPOVAL
  98. POINTEUR MPROC.MPOVAL ,MPVITC.MPOVAL
  99. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  100. POINTEUR MPTOIM.MPOVAL
  101. -INC SMCHAML
  102. POINTEUR ICOGRV.MCHELM,JCOGRV.MCHAML
  103. POINTEUR KDUNDX.MELVAL,KDUNDY.MELVAL
  104. -INC SMELEME
  105. POINTEUR MELEFL.MELEME
  106. POINTEUR MCOGRV.MELEME
  107. -INC SMLENTI
  108. POINTEUR KRVIMP.MLENTI,KRTOIM.MLENTI
  109. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  110. -INC SMLMOTS
  111. POINTEUR NOMINC.MLMOTS
  112. POINTEUR IJACO.MATRIK
  113. *
  114. * Objet matrice élémentaire simplifié
  115. *
  116. SEGMENT GMATSI
  117. INTEGER POIPR1(NPP1,NEL1)
  118. INTEGER POIDU1(1,NEL1)
  119. INTEGER POIPR2(NPP2,NEL2)
  120. INTEGER POIDU2(2,NEL2)
  121. POINTEUR LMATSI(0).MATSIM
  122. ENDSEGMENT
  123. * Contributions compliquées 2 de la part du gradient de
  124. * vitesse (CCGRV2)
  125. POINTEUR CCGRV2.GMATSI
  126. SEGMENT MATSIM
  127. CHARACTER*8 NOMPRI,NOMDUA
  128. REAL*8 VALMA1(1,NPP1,NEL1)
  129. REAL*8 VALMA2(2,NPP2,NEL2)
  130. ENDSEGMENT
  131. POINTEUR RETRHO.MATSIM
  132. POINTEUR RETROU.MATSIM
  133. POINTEUR RETROV.MATSIM
  134. *
  135. REAL*8 MU
  136. *
  137. INTEGER IMPR,IRET
  138. *
  139. LOGICAL LCLIMV,LCLITO
  140. LOGICAL LMUR
  141. LOGICAL LCTR2A
  142. *
  143. INTEGER IELEM,IPD,IPP,ISOUCH,IEL1,IEL2
  144. INTEGER NELEM,NPD,NPP,NSOUCH,NEL1,NEL2,NPP1,NPP2
  145. INTEGER NGCDRO,NGCGAU,NGFACE,NPPRIM,NPDUAL
  146. INTEGER NLCENP,NLCEND,NLFACE,NLCLV,NLFTOI
  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 XD,XF,XG,XFMXD,XFMXG
  154. REAL*8 YD,YF,YG,YFMYD,YFMYG
  155. REAL*8 ALPHAX,ALPHAY,CNX,CNY
  156. REAL*8 SIGNOR,SURFFA,VOLUEL
  157. REAL*8 RHOP,UP,VP
  158. REAL*8 FACTOR,FACTDU,FACTDV
  159. REAL*8 DUDRHO,DUDROU,DVDRHO,DVDROV
  160. REAL*8 DSTDU
  161. REAL*8 TAUXX,TAUXY,TAUYY
  162. REAL*8 EPSIXX,EPSIXY,EPSIYX,EPSIYY
  163. REAL*8 GAMMXD,GAMMXG,GAMMYD,GAMMYG
  164. *
  165. * Executable statements
  166. *
  167. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans ylap1d.eso'
  168. * On calcule les contributions à (d Res_{\rho e_t} / d var) ; var
  169. * prenant successivement les valeurs :
  170. * \rho, \rho u, \rho v, \rho e_t
  171. * On dérive les termes : (\tens{\tau(\grad{u})} \prod \vect{u})
  172. * \pscal \vect{n}
  173. * ce qui donne deux contributions.
  174. * Contribution 1 :
  175. * ( (d \tens{\tau} / d var) \prod \vect{u}) \pscal \vect{n}
  176. * Contribution 2 :
  177. * ( \tens{\tau} \prod (d \vect{u} / d var)) \pscal \vect{n}
  178. * Note :
  179. * pas de contribution à (d Res_{\rho e_t} / d \rho e_t).
  180. * Les noms de matrices élémentaires (type MATSIM) associées sont :
  181. * RETRHO, RETROU, RETROV
  182. IF (LCLIMV) THEN
  183. SEGACT KRVIMP
  184. ENDIF
  185. IF (LCLITO) THEN
  186. SEGACT KRTOIM
  187. SEGACT MPTOIM
  188. ENDIF
  189. SEGACT NOMINC
  190. SEGACT KRCENT
  191. SEGACT KRFACE
  192. SEGACT MELEFL
  193. SEGACT MPSURF
  194. SEGACT MPNORM
  195. SEGACT MPVOLU
  196. SEGACT MPROC
  197. SEGACT MPVITC
  198. SEGACT MPGRVF
  199. SEGACT ICOGRV
  200. NSOUCH=ICOGRV.IMACHE(/1)
  201. DO 1 ISOUCH=1,NSOUCH
  202. MCOGRV=ICOGRV.IMACHE(ISOUCH)
  203. JCOGRV=ICOGRV.ICHAML(ISOUCH)
  204. SEGACT JCOGRV
  205. KDUNDX=JCOGRV.IELVAL(1)
  206. KDUNDY=JCOGRV.IELVAL(2)
  207. SEGDES JCOGRV
  208. SEGACT KDUNDX
  209. SEGACT KDUNDY
  210. SEGACT MCOGRV
  211. NELEM=MCOGRV.NUM(/2)
  212. NPTEL=MCOGRV.NUM(/1)
  213. NPP1=NPTEL
  214. NPP2=NPTEL+1
  215. NEL1=NELEM
  216. NEL2=NELEM
  217. IEL1=1
  218. IEL2=1
  219. SEGINI RETRHO
  220. SEGINI RETROU
  221. SEGINI RETROV
  222. SEGINI CCGRV2
  223. RETRHO.NOMPRI(1:4)=NOMINC.MOTS(1)
  224. RETRHO.NOMPRI(5:8)=' '
  225. RETRHO.NOMDUA(1:4)=NOMINC.MOTS(4)
  226. RETRHO.NOMDUA(5:8)=' '
  227. RETROU.NOMPRI(1:4)=NOMINC.MOTS(2)
  228. RETROU.NOMPRI(5:8)=' '
  229. RETROU.NOMDUA(1:4)=NOMINC.MOTS(4)
  230. RETROU.NOMDUA(5:8)=' '
  231. RETROV.NOMPRI(1:4)=NOMINC.MOTS(3)
  232. RETROV.NOMPRI(5:8)=' '
  233. RETROV.NOMDUA(1:4)=NOMINC.MOTS(4)
  234. RETROV.NOMDUA(5:8)=' '
  235. DO 12 IELEM=1,NELEM
  236. * Le premier point du support de ICOGRV est un point FACE
  237. NGFACE=MCOGRV.NUM(1,IELEM)
  238. NLFACE=KRFACE.LECT(NGFACE)
  239. IF (NLFACE.EQ.0) THEN
  240. WRITE(IOIMP,*) 'Erreur de programmation n°1'
  241. GOTO 9999
  242. ENDIF
  243. * On calcule la contribution 2 à la matrice jacobienne IJACO de la
  244. * face NGFACE
  245. * (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. * ET les centres à gauche et à droite qui servent pour le
  250. * calcul de la vitesse sur la face)
  251. * Si la vitesse sur la face est imposée par les
  252. * conditions aux limites, la contribution 2 de la face à IJACO est
  253. * nulle.
  254. LCTR2A=.TRUE.
  255. IF (LCLIMV) THEN
  256. NLCLV=KRVIMP.LECT(NGFACE)
  257. IF (NLCLV.NE.0) THEN
  258. LCTR2A=.FALSE.
  259. ENDIF
  260. ENDIF
  261. IF (LCTR2A) THEN
  262. NGCGAU=MELEFL.NUM(1,NLFACE)
  263. NGCDRO=MELEFL.NUM(3,NLFACE)
  264. LMUR=(NGCGAU.EQ.NGCDRO)
  265. * On calcule tout d'abord les valeurs du tenseur des contraintes sur
  266. * la face NGFACE de la même manière que dans ylap12.eso
  267. IF (LCLITO) THEN
  268. NLFTOI=KRTOIM.LECT(NGFACE)
  269. ELSE
  270. NLFTOI=0
  271. ENDIF
  272. IF (NLFTOI.NE.0) THEN
  273. TAUXX=MPTOIM.VPOCHA(NLFTOI,1)
  274. TAUYY=MPTOIM.VPOCHA(NLFTOI,2)
  275. TAUXY=MPTOIM.VPOCHA(NLFTOI,3)
  276. ELSE
  277. DUXXF=MPGRVF.VPOCHA(NLFACE,1)
  278. DUXYF=MPGRVF.VPOCHA(NLFACE,2)
  279. DUYXF=MPGRVF.VPOCHA(NLFACE,3)
  280. DUYYF=MPGRVF.VPOCHA(NLFACE,4)
  281. DSTDU=(2.0D0/3.0D0)*(DUXXF+DUYYF)
  282. TAUXX=MU*((2.0D0*DUXXF)-DSTDU)
  283. TAUXY=MU*(DUXYF+DUYXF)
  284. TAUYY=MU*((2.0D0*DUYYF)-DSTDU)
  285. ENDIF
  286. * On calcule ensuite les valeurs des coefficients qui servent pour
  287. * interpoler la vitesse sur la face NGFACE à partir des vitesses
  288. * gauche (et droite si non mur) et des dérivées de la vitesse sur la
  289. * face NGFACE (de la même manière que dans ylap12.eso)
  290. IF (LMUR) THEN
  291. * Parametres geometriques
  292. ICOORX=((IDIM+1)*(NGFACE-1))+1
  293. XF=MCOORD.XCOOR(ICOORX)
  294. YF=MCOORD.XCOOR(ICOORX+1)
  295. ICOORX=((IDIM+1)*(NGCGAU-1))+1
  296. XG=MCOORD.XCOOR(ICOORX)
  297. YG=MCOORD.XCOOR(ICOORX+1)
  298. XFMXG=XF-XG
  299. YFMYG=YF-YG
  300. ALPHA=0.0D0
  301. UMALPH=1.0D0
  302. GAMMXG=1.D0
  303. EPSIXX=XFMXG
  304. EPSIXY=YFMYG
  305. GAMMYG=1.D0
  306. EPSIYX=XFMXG
  307. EPSIYY=YFMYG
  308. ELSEIF (.NOT.LMUR) THEN
  309. ICOORX=((IDIM+1)*(NGFACE-1))+1
  310. XF=MCOORD.XCOOR(ICOORX)
  311. YF=MCOORD.XCOOR(ICOORX+1)
  312. ICOORX=((IDIM+1)*(NGCGAU-1))+1
  313. XG=MCOORD.XCOOR(ICOORX)
  314. YG=MCOORD.XCOOR(ICOORX+1)
  315. XFMXG=XF-XG
  316. YFMYG=YF-YG
  317. DRG=SQRT((XFMXG*XFMXG)+(YFMYG*YFMYG))
  318. ICOORX=((IDIM+1)*(NGCDRO-1))+1
  319. XD=MCOORD.XCOOR(ICOORX)
  320. YD=MCOORD.XCOOR(ICOORX+1)
  321. XFMXD=XF-XD
  322. YFMYD=YF-YD
  323. DRD=SQRT((XFMXD*XFMXD)+(YFMYD*YFMYD))
  324. ALPHA=DRG/(DRG+DRD)
  325. UMALPH=1.0D0-ALPHA
  326. GAMMXG=UMALPH
  327. GAMMXD=ALPHA
  328. EPSIXX=(XFMXG*UMALPH)+(XFMXD*ALPHA)
  329. EPSIXY=(YFMYG*UMALPH)+(YFMYD*ALPHA)
  330. GAMMYG=UMALPH
  331. GAMMYD=ALPHA
  332. EPSIYX=(XFMXG*UMALPH)+(XFMXD*ALPHA)
  333. EPSIYY=(YFMYG*UMALPH)+(YFMYD*ALPHA)
  334. ELSE
  335. WRITE(IOIMP,*) 'Erreur de programmation n°2'
  336. GOTO 9999
  337. ENDIF
  338. * On distingue le cas où la face est un bord du maillage (mur)
  339. * du cas où la face est interne au maillage
  340. IF (.NOT.LMUR) THEN
  341. NPD=2
  342. NPP=NPTEL+1
  343. ELSE
  344. NPD=1
  345. NPP=NPTEL
  346. ENDIF
  347. * IPD=1 : point à gauche du point NGFACE
  348. * IPD=2 : point à droite du point NGFACE
  349. DO 122 IPD=1,NPD
  350. NPDUAL=MELEFL.NUM((2*IPD)-1,NLFACE)
  351. IF (.NOT.LMUR) THEN
  352. CCGRV2.POIDU2(IPD,IEL2)=NPDUAL
  353. ELSE
  354. CCGRV2.POIDU1(IPD,IEL1)=NPDUAL
  355. ENDIF
  356. NLCEND=KRCENT.LECT(NPDUAL)
  357. IF (NLCEND.EQ.0) THEN
  358. WRITE(IOIMP,*) 'Erreur grave n°1'
  359. GOTO 9999
  360. ENDIF
  361. DO 124 IPP=1,NPP
  362. IF (IPP.EQ.NPTEL) THEN
  363. NPPRIM=NGCGAU
  364. ELSEIF (IPP.EQ.NPTEL+1) THEN
  365. NPPRIM=NGCDRO
  366. ELSEIF (IPP.GE.1.AND.IPP.LT.NPTEL) THEN
  367. NPPRIM=MCOGRV.NUM(IPP+1,IELEM)
  368. ELSE
  369. WRITE(IOIMP,*) 'Erreur grave n°2'
  370. GOTO 9999
  371. ENDIF
  372. C
  373. C******************* Modif AB
  374. C We do not check the BC anymore
  375. C
  376. NLCENP=KRCENT.LECT(NPPRIM)
  377. IF(NLCENP .EQ. 0)THEN
  378. * Lorsque une contribution est nulle, on fixe artificiellement le
  379. * point primal égal au point dual.
  380. IF (.NOT.LMUR) THEN
  381. CCGRV2.POIPR2(IPP,IEL2)=NPDUAL
  382. RETRHO.VALMA2(IPD,IPP,IEL2)=0.D0
  383. RETROU.VALMA2(IPD,IPP,IEL2)=0.D0
  384. RETROV.VALMA2(IPD,IPP,IEL2)=0.D0
  385. ELSE
  386. CCGRV2.POIPR1(IPP,IEL1)=NPDUAL
  387. RETRHO.VALMA1(IPD,IPP,IEL1)=0.D0
  388. RETROU.VALMA1(IPD,IPP,IEL1)=0.D0
  389. RETROV.VALMA1(IPD,IPP,IEL1)=0.D0
  390. ENDIF
  391. ELSE
  392. * Les contributions 2 valent :
  393. * (d Res_{\rho e_t})_d / (d var)_p =
  394. * +/-1 (normale sortante, rentrante) (1/V_d) * (S_f)
  395. * * [ [ [ ((n_x * \tau_xx) + (n_y * \tau_yx))
  396. * * ((\epsilon_xx * \alpha_x) + (\epsilon_xy * \alpha_y))
  397. * ]
  398. * * ((du)_p / (d var)_p)
  399. * ]
  400. * + [ [ ((n_x * \tau_xy) + (n_y * \tau_yy))
  401. * * ((\epsilon_yx * \alpha_x) + (\epsilon_yy * \alpha_y))
  402. * ]
  403. * * ((dv)_p / (d var)_p)
  404. * ]
  405. * ]
  406. * et (m étant le centre de gauche dans le cas mur
  407. * et les centre gauche, puis droite dans le cas normal)
  408. * (d Res_{\rho e_t})_d / (d var)_m =
  409. * +/-1 (normale sortante, rentrante) (1/V_d) * (S_f)
  410. * * [ [ [ ((n_x * \tau_xx) + (n_y * \tau_yx))
  411. * * (\gamma_x)
  412. * ]
  413. * * ((du)_p / (d var)_p)
  414. * ]
  415. * + [ [ ((n_x * \tau_xy) + (n_y * \tau_yy))
  416. * * (\gamma_y)
  417. * ]
  418. * * ((dv)_p / (d var)_p)
  419. * ]
  420. * ]
  421. * sachant que l'expression donnant l'interpolation de la
  422. * vitesse (u,v) sur une face i est de la forme :
  423. * u_i = (\gamma_x,gauche * u_gauche)
  424. * + (\gamma_x,droite * u_droite) (=0 dans le cas mur)
  425. * + (\epsilon_xx,i * (du/dx)_i)
  426. * + (\epsilon_xy,i * (du/dy)_i)
  427. * v_i = (\gamma_y,gauche * v_gauche)
  428. * + (\gamma_y,droite * v_droite) (=0 dans le cas mur)
  429. * + (\epsilon_yx,i * (dv/dx)_i)
  430. * + (\epsilon_yy,i * (dv/dy)_i)
  431. * (voir dans ylap12.eso et ci-dessus pour les valeurs des coeffs
  432. * \gamma et \epsilon)
  433. C
  434. * normale sortante pour IPD=1, rentrante pour IPD=2
  435. SIGNOR=(-1.D0)**(IPD+1)
  436. VOLUEL=MPVOLU.VPOCHA(NLCEND,1)
  437. SURFFA=MPSURF.VPOCHA(NLFACE,1)
  438. CNX =MPNORM.VPOCHA(NLFACE,1)
  439. CNY =MPNORM.VPOCHA(NLFACE,2)
  440. RHOP =MPROC.VPOCHA(NLCENP,1)
  441. UP =MPVITC.VPOCHA(NLCENP,1)
  442. VP =MPVITC.VPOCHA(NLCENP,2)
  443. FACTOR=SIGNOR*(1.D0/VOLUEL)*SURFFA
  444. IF (IPP.EQ.NPTEL) THEN
  445. FACTDU= ((CNX*TAUXX)+(CNY*TAUXY))
  446. $ * GAMMXG
  447. FACTDV= ((CNX*TAUXY)+(CNY*TAUYY))
  448. $ * GAMMYG
  449. ELSEIF (IPP.EQ.NPTEL+1) THEN
  450. FACTDU= ((CNX*TAUXX)+(CNY*TAUXY))
  451. $ * GAMMXD
  452. FACTDV= ((CNX*TAUXY)+(CNY*TAUYY))
  453. $ * GAMMYD
  454. ELSEIF (IPP.GE.1.AND.IPP.LT.NPTEL) THEN
  455. ALPHAX=KDUNDX.VELCHE(IPP+1,IELEM)
  456. ALPHAY=KDUNDY.VELCHE(IPP+1,IELEM)
  457. FACTDU= ((CNX*TAUXX)+(CNY*TAUXY))
  458. $ * ((EPSIXX*ALPHAX)+(EPSIXY*ALPHAY))
  459. FACTDV= ((CNX*TAUXY)+(CNY*TAUYY))
  460. $ * ((EPSIYX*ALPHAX)+(EPSIYY*ALPHAY))
  461. ELSE
  462. WRITE(IOIMP,*) 'Erreur grave n°3'
  463. GOTO 9999
  464. ENDIF
  465. DUDRHO=-UP /RHOP
  466. DUDROU=1.D0/RHOP
  467. DVDRHO=-VP /RHOP
  468. DVDROV=1.D0/RHOP
  469. IF (.NOT.LMUR) THEN
  470. CCGRV2.POIPR2(IPP,IEL2)=NPPRIM
  471. RETRHO.VALMA2(IPD,IPP,IEL2)=
  472. $ FACTOR*( (FACTDU*DUDRHO)
  473. $ +(FACTDV*DVDRHO))
  474. RETROU.VALMA2(IPD,IPP,IEL2)=
  475. $ FACTOR* (FACTDU*DUDROU)
  476. RETROV.VALMA2(IPD,IPP,IEL2)=
  477. $ FACTOR* (FACTDV*DVDROV)
  478. ELSE
  479. CCGRV2.POIPR1(IPP,IEL1)=NPPRIM
  480. RETRHO.VALMA1(IPD,IPP,IEL1)=
  481. $ FACTOR*( (FACTDU*DUDRHO)
  482. $ +(FACTDV*DVDRHO))
  483. RETROU.VALMA1(IPD,IPP,IEL1)=
  484. $ FACTOR* (FACTDU*DUDROU)
  485. RETROV.VALMA1(IPD,IPP,IEL1)=
  486. $ FACTOR* (FACTDV*DVDROV)
  487. ENDIF
  488. ENDIF
  489. 124 CONTINUE
  490. 122 CONTINUE
  491. IF (.NOT.LMUR) THEN
  492. IEL2=IEL2+1
  493. ELSE
  494. IEL1=IEL1+1
  495. ENDIF
  496. ENDIF
  497. 12 CONTINUE
  498. NPP1=NPTEL
  499. NPP2=NPTEL+1
  500. NEL1=IEL1-1
  501. NEL2=IEL2-1
  502. SEGADJ RETRHO
  503. SEGADJ RETROU
  504. SEGADJ RETROV
  505. SEGADJ CCGRV2
  506. CCGRV2.LMATSI(**)=RETRHO
  507. CCGRV2.LMATSI(**)=RETROU
  508. CCGRV2.LMATSI(**)=RETROV
  509. * On accumule les matrices résultantes dans IJACO
  510. CALL AJMTK(CCGRV2,IJACO,IMPR,IRET)
  511. IF (IRET.NE.0) GOTO 9999
  512. SEGSUP RETRHO
  513. SEGSUP RETROU
  514. SEGSUP RETROV
  515. SEGSUP CCGRV2
  516. *
  517. SEGDES MCOGRV
  518. SEGDES KDUNDY
  519. SEGDES KDUNDX
  520. 1 CONTINUE
  521. SEGDES ICOGRV
  522. SEGDES MPGRVF
  523. SEGDES MPVITC
  524. SEGDES MPROC
  525. SEGDES MPVOLU
  526. SEGDES MPNORM
  527. SEGDES MPSURF
  528. SEGDES MELEFL
  529. SEGDES KRFACE
  530. SEGDES KRCENT
  531. SEGDES NOMINC
  532. IF (LCLITO) THEN
  533. SEGDES KRTOIM
  534. SEGDES MPTOIM
  535. ENDIF
  536. IF (LCLIMV) THEN
  537. SEGDES KRVIMP
  538. ENDIF
  539. *
  540. * Normal termination
  541. *
  542. IRET=0
  543. RETURN
  544. *
  545. * Format handling
  546. *
  547. *
  548. * Error handling
  549. *
  550. 9999 CONTINUE
  551. IRET=1
  552. WRITE(IOIMP,*) 'An error was detected in subroutine ylap1d'
  553. RETURN
  554. *
  555. * End of subroutine YLAP1D
  556. *
  557. END
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  

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