Télécharger ylap1a.eso

Retour à la liste

Numérotation des lignes :

ylap1a
  1. C YLAP1A SOURCE CB215821 20/11/25 13:44:04 10792
  2. SUBROUTINE YLAP1A(MU,KAPPA,CV,IROC,IVITC,ITEMC,
  3. $ IGRVF,ICOGRV,ICOGRT,
  4. $ IVIMP,ITOIM,ITIMP,IQIMP,IMIXT,ICLAU,
  5. $ MELEMC,MELEMF,MELEFL,ISURF,INORM,IVOLU,NOMINC,
  6. $ IJACO)
  7. C***********************************************************************
  8. C NOM : YLAP1A
  9. C DESCRIPTION : Calcul de la matrice jacobienne du résidu du laplacien
  10. C VF 2D.
  11. C
  12. C LANGAGE : ESOPE
  13. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  14. C mél : gounand@semt2.smts.cea.fr
  15. C***********************************************************************
  16. C APPELES : YLAP1B |
  17. C YLAP1C | Calcul des contributions à la matrice
  18. C YLAP1D | jacobienne du résidu du laplacien VF 2D.
  19. C YLAP1E |
  20. C APPELES (UTIL) : LICHT2 : Lecture des pointeurs (maillages, valeurs)
  21. C d'un objet de type MCHPOI.
  22. C KRIPME : Création d'un tableau de repérage dans un
  23. C maillage de points.
  24. C ZERMAK : Création d'un objet de type MATRIK vide.
  25. C APPELES (STD) : ERREUR : Gestion des erreurs par GIBI.
  26. C APPELE PAR : YLAP11 : Chapeau de l'opérateur Gibiane 'LAPN'
  27. C option 'VF'.
  28. C***********************************************************************
  29. C ENTREES : MU (type réel) : viscosité dynamique (SI).
  30. C KAPPA (type réel) : conductivité thermique (SI)
  31. C CV (type réel) : chaleur spécifique à volume
  32. C constant (SI).
  33. C IROC (type MCHPOI) : masse volumique par élément.
  34. C IVITC (type MCHPOI) : vitesse par élément.
  35. C ITEMC (type MCHPOI) : température par élément.
  36. C IGRVF (type MCHPOI) : gradient de la vitesse
  37. C aux interfaces.
  38. C ICOGRV (type MCHELM) : coefficients pour le
  39. C calcul du gradient de la vitesse aux
  40. C interfaces.
  41. C ICOGRT (type MCHELM) : coefficients pour le
  42. C calcul du gradient de la température aux
  43. C interfaces.
  44. C IVIMP (type MCHPOI) : CL de Dirichlet sur la
  45. C vitesse.
  46. C ITOIM (type MCHPOI) : CL de Dirichlet sur le
  47. C tenseur des contraintes.
  48. C ITIMP (type MCHPOI) : CL de Dirichlet sur la
  49. C température.
  50. C IQIMP (type MCHPOI) : CL de Dirichlet sur le
  51. C flux de chaleur.
  52. C IMIXT (type MCHPOI) : CL mixtes
  53. C ICLAU : option pour ne calculer
  54. c que la thermique
  55. C MELEMC (type MELEME) : maillage des centres des
  56. C éléments.
  57. C MELEMF (type MELEME) : maillage des faces des
  58. C éléments.
  59. C MELEFL (type MELEME) : connectivités face-(centre
  60. C gauche, centre droit).
  61. C ISURF (type MCHPOI) : surface des faces.
  62. C INORM (type MCHPOI) : normale aux faces.
  63. C IVOLU (type MCHPOI) : volume des éléments.
  64. C NOMINC (type MLMOTS) : noms des inconnues.
  65. C ENTREES/SORTIES : IJACO (type MATRIK) : matrice jacobienne du
  66. C résidu du laplacien VF 2D.
  67. C SORTIES : -
  68. C***********************************************************************
  69. C VERSION : v1, 01/08/2001, version initiale
  70. C HISTORIQUE : v1, 01/08/2001, création
  71. C HISTORIQUE : v2, 11/02/2003 Ajout de l'OPTION 'MIXT' pour la température
  72. C HISTORIQUE :
  73. C***********************************************************************
  74. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  75. C en cas de modification de ce sous-programme afin de faciliter
  76. C la maintenance !
  77. C***********************************************************************
  78. IMPLICIT INTEGER(I-N)
  79.  
  80. -INC PPARAM
  81. -INC CCOPTIO
  82. -INC SMCOORD
  83. -INC SMCHPOI
  84. POINTEUR IROC.MCHPOI ,IVITC.MCHPOI ,ITEMC.MCHPOI
  85. POINTEUR IGRVF.MCHPOI
  86. POINTEUR IVIMP.MCHPOI ,ITOIM.MCHPOI
  87. POINTEUR ITIMP.MCHPOI ,IQIMP.MCHPOI,IMIXT.MCHPOI
  88. POINTEUR ISURF.MCHPOI ,INORM.MCHPOI ,IVOLU.MCHPOI
  89. POINTEUR MPROC.MPOVAL ,MPVITC.MPOVAL,MPTEMC.MPOVAL
  90. POINTEUR MPGRVF.MPOVAL
  91. POINTEUR MPVIMP.MPOVAL,MPTOIM.MPOVAL
  92. POINTEUR MPTIMP.MPOVAL,MPQIMP.MPOVAL,MPMIXT.MPOVAL
  93. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  94. -INC SMCHAML
  95. POINTEUR ICOGRV.MCHELM,ICOGRT.MCHELM
  96. -INC SMELEME
  97. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  98. POINTEUR MELBID.MELEME
  99. POINTEUR MLVIMP.MELEME,MLTOIM.MELEME
  100. POINTEUR MLTIMP.MELEME,MLQIMP.MELEME,MLMIXT.MELEME
  101. -INC SMLENTI
  102. POINTEUR KRVIMP.MLENTI,KRTOIM.MLENTI
  103. POINTEUR KRTIMP.MLENTI,KRQIMP.MLENTI,KRMIXT.MLENTI
  104. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  105. -INC SMLMOTS
  106. POINTEUR NOMINC.MLMOTS
  107. POINTEUR IJACO.MATRIK
  108. *
  109. REAL*8 MU,KAPPA,CV
  110. *
  111. INTEGER IMPR,IRET,ICLAU
  112. *
  113. LOGICAL LCLIMV,LCLITO
  114. LOGICAL LCLIMT,LCLIMQ,LMIXT
  115. *
  116. INTEGER NTOTPO
  117. C
  118. *
  119. * Executable statements
  120. *
  121. IMPR=0
  122. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans ylap1a.eso'
  123. * Initialisation de la matrice jacobienne à zéro
  124. CALL ZERMAK(IJACO,IMPR,IRET)
  125. IF (IRET.NE.0) GOTO 9999
  126. * Lecture des données et initialisations de tableaux de travail
  127. CALL LICHT2(IROC,MPROC,MELBID,IMPR,IRET)
  128. IF (IRET.NE.0) GOTO 9999
  129. CALL LICHT2(IVITC,MPVITC,MELBID,IMPR,IRET)
  130. IF (IRET.NE.0) GOTO 9999
  131. CALL LICHT2(ITEMC,MPTEMC,MELBID,IMPR,IRET)
  132. IF (IRET.NE.0) GOTO 9999
  133. CALL LICHT2(IGRVF,MPGRVF,MELBID,IMPR,IRET)
  134. IF (IRET.NE.0) GOTO 9999
  135. CALL LICHT2(ISURF,MPSURF,MELBID,IMPR,IRET)
  136. IF (IRET.NE.0) GOTO 9999
  137. CALL LICHT2(INORM,MPNORM,MELBID,IMPR,IRET)
  138. IF (IRET.NE.0) GOTO 9999
  139. CALL LICHT2(IVOLU,MPVOLU,MELBID,IMPR,IRET)
  140. IF (IRET.NE.0) GOTO 9999
  141. LCLIMV=(IVIMP.NE.0)
  142. LCLITO=(ITOIM.NE.0)
  143. LCLIMT=(ITIMP.NE.0)
  144. LCLIMQ=(IQIMP.NE.0)
  145. LMIXT=(IMIXT.NE.0)
  146. NTOTPO=nbpts
  147. IF (LCLIMV) THEN
  148. CALL LICHT2(IVIMP,MPVIMP,MLVIMP,IMPR,IRET)
  149. IF (IRET.NE.0) GOTO 9999
  150. * In KRIPME : SEGINI KRVIMP
  151. CALL KRIPME(MLVIMP,NTOTPO,KRVIMP,IMPR,IRET)
  152. IF (IRET.NE.0) GOTO 9999
  153. ENDIF
  154. IF (LCLITO) THEN
  155. CALL LICHT2(ITOIM,MPTOIM,MLTOIM,IMPR,IRET)
  156. IF (IRET.NE.0) GOTO 9999
  157. * In KRIPME : SEGINI KRTOIM
  158. CALL KRIPME(MLTOIM,NTOTPO,KRTOIM,IMPR,IRET)
  159. IF (IRET.NE.0) GOTO 9999
  160. ENDIF
  161. IF (LCLIMT) THEN
  162. CALL LICHT2(ITIMP,MPTIMP,MLTIMP,IMPR,IRET)
  163. IF (IRET.NE.0) GOTO 9999
  164. * In KRIPME : SEGINI KRTIMP
  165. CALL KRIPME(MLTIMP,NTOTPO,KRTIMP,IMPR,IRET)
  166. IF (IRET.NE.0) GOTO 9999
  167. ENDIF
  168. IF (LCLIMQ) THEN
  169. CALL LICHT2(IQIMP,MPQIMP,MLQIMP,IMPR,IRET)
  170. IF (IRET.NE.0) GOTO 9999
  171. * In KRIPME : SEGINI KRQIMP
  172. CALL KRIPME(MLQIMP,NTOTPO,KRQIMP,IMPR,IRET)
  173. IF (IRET.NE.0) GOTO 9999
  174. ENDIF
  175. c ON EST ICI
  176. IF (LMIXT) THEN
  177. CALL LICHT2(IMIXT,MPMIXT,MLMIXT,IMPR,IRET)
  178. IF (IRET.NE.0) GOTO 9999
  179. * In KRIPME : SEGINI KRMIXT
  180. CALL KRIPME(MLMIXT,NTOTPO,KRMIXT,IMPR,IRET)
  181. IF (IRET.NE.0) GOTO 9999
  182. ENDIF
  183. * Repérage dans les faces, les centres
  184. * In KRIPME : SEGINI KRFACE
  185. CALL KRIPME(MELEMF,NTOTPO,KRFACE,IMPR,IRET)
  186. IF (IRET.NE.0) GOTO 9999
  187. * In KRIPME : SEGINI KRCENT
  188. CALL KRIPME(MELEMC,NTOTPO,KRCENT,IMPR,IRET)
  189. IF (IRET.NE.0) GOTO 9999
  190. *
  191. * Note : on pourrait regrouper les subroutines suivantes en une
  192. * seule pas trop longue, au prix d'un gros effort
  193. * (voir aussi la NOTE: dans ylap1c)
  194. *
  195. * Calcul des contributions 'simples' à la matrice jacobienne faisant
  196. * intervenir les coefficients pour le calcul des gradients de vitesse
  197. * (ICOGRV)
  198. * (contributions à (d Res_{\rho u} / d var) et (d Res_{\rho v} / d var)
  199. * var prenant successivement les valeurs :
  200. * \rho, \rho u, \rho v, \rho e_t )
  201. *
  202. IF (ICLAU.EQ.0) THEN
  203. CALL YLAP1C(ICOGRV,MPROC,MPVITC,
  204. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  205. $ KRFACE,KRCENT,LCLIMV,KRVIMP,LCLITO,KRTOIM,
  206. $ NOMINC,
  207. $ MU,
  208. $ IJACO,
  209. $ IMPR,IRET)
  210. IF (IRET.NE.0) GOTO 9999
  211. ENDIF
  212. *
  213. * Calcul des contributions 'compliquées' à la matrice jacobienne faisant
  214. * intervenir les coefficients pour le calcul des gradients de vitesse
  215. * (ICOGRV)
  216. * (contributions à (d Res_{\rho e_t} / d var)
  217. * var prenant successivement les valeurs :
  218. * \rho, \rho u, \rho v, \rho e_t )
  219. * Les contributions sont plus "compliquées" à calculer que les
  220. * simples car on a à dériver des produits de fonctions de la vitesse
  221. * d (f(u,v) * g(u,v)) / d var = f dg/dv + df/dv g
  222. *
  223. IF (ICLAU.EQ.0) THEN
  224. CALL YLAP1E(ICOGRV,MPGRVF,MPROC,MPVITC,
  225. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  226. $ KRFACE,KRCENT,
  227. $ LCLIMV,KRVIMP,MPVIMP,
  228. $ LCLITO,KRTOIM,
  229. $ NOMINC,
  230. $ MU,
  231. $ IJACO,
  232. $ IMPR,IRET)
  233. IF (IRET.NE.0) GOTO 9999
  234. CALL YLAP1D(ICOGRV,MPGRVF,MPROC,MPVITC,
  235. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  236. $ KRFACE,KRCENT,
  237. $ LCLIMV,KRVIMP,
  238. $ LCLITO,KRTOIM,MPTOIM,
  239. $ NOMINC,
  240. $ MU,
  241. $ IJACO,
  242. $ IMPR,IRET)
  243. IF (IRET.NE.0) GOTO 9999
  244. ENDIF
  245. *
  246. * Calcul des contributions à la matrice jacobienne faisant intervenir
  247. * les coefficients pour le calcul des gradients de température (ICOGRT)
  248. * (contributions à d Res_{\rho e_t} / d var
  249. * var prenant successivement les valeurs :
  250. * \rho, \rho u, \rho v, \rho e_t )
  251. *
  252. CALL YLAP1B(ICOGRT,MPROC,MPVITC,MPTEMC,
  253. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  254. $ KRFACE,KRCENT,LCLIMT,KRTIMP,LCLIMQ,KRQIMP,
  255. $ LMIXT,KRMIXT,
  256. $ NOMINC,ICLAU,
  257. $ KAPPA,CV,
  258. $ IJACO,
  259. $ IMPR,IRET)
  260. IF (IRET.NE.0) GOTO 9999
  261. *
  262. * Destruction des tableaux de travail
  263. *
  264. SEGSUP KRCENT
  265. SEGSUP KRFACE
  266. IF (LCLIMQ) THEN
  267. SEGSUP KRQIMP
  268. ENDIF
  269. IF (LCLIMT) THEN
  270. SEGSUP KRTIMP
  271. ENDIF
  272. IF (LMIXT) THEN
  273. SEGSUP KRMIXT
  274. ENDIF
  275. IF (LCLITO) THEN
  276. SEGSUP KRTOIM
  277. ENDIF
  278. IF (LCLIMV) THEN
  279. SEGSUP KRVIMP
  280. ENDIF
  281. *
  282. * Normal termination
  283. *
  284. IRET=0
  285. RETURN
  286. *
  287. * Format handling
  288. *
  289. *
  290. * Error handling
  291. *
  292. 9999 CONTINUE
  293. IRET=1
  294. WRITE(IOIMP,*) 'An error was detected in subroutine ylap1a'
  295. CALL ERREUR(5)
  296. RETURN
  297. *
  298. * End of subroutine YLAP1A
  299. *
  300. END
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  

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