Télécharger ylap2a.eso

Retour à la liste

Numérotation des lignes :

ylap2a
  1. C YLAP2A SOURCE CB215821 20/11/25 13:44:13 10792
  2. SUBROUTINE YLAP2A(MU,KAPPA,CV,IROC,IVITC,ITEMC,
  3. $ IGRVF,ICOGRV,ICOGRT,
  4. $ IVIMP,ITOIM,ITIMP,IQIMP,
  5. $ MELEMC,MELEMF,MELEFL,ISURF,INORM,IVOLU,NOMINC,
  6. $ IJACO)
  7. C***********************************************************************
  8. C NOM : YLAP2A
  9. C DESCRIPTION : Calcul de la matrice jacobienne du résidu du laplacien
  10. C VF 3D.
  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 : YLAP2B |
  17. C YLAP2C | Calcul des contributions à la matrice
  18. C YLAP2D | jacobienne du résidu du laplacien VF 3D.
  19. C YLAP2E |
  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 MELEMC (type MELEME) : maillage des centres des
  53. C éléments.
  54. C MELEMF (type MELEME) : maillage des faces des
  55. C éléments.
  56. C MELEFL (type MELEME) : connectivités face-(centre
  57. C gauche, centre droit).
  58. C ISURF (type MCHPOI) : surface des faces.
  59. C INORM (type MCHPOI) : normale aux faces.
  60. C IVOLU (type MCHPOI) : volume des éléments.
  61. C NOMINC (type MLMOTS) : noms des inconnues.
  62. C ENTREES/SORTIES : IJACO (type MATRIK) : matrice jacobienne du
  63. C résidu du laplacien VF 3D.
  64. C SORTIES : -
  65. C***********************************************************************
  66. C VERSION : v1, 28/08/2001, version initiale
  67. C HISTORIQUE : v1, 28/08/2001, 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. IMPLICIT INTEGER(I-N)
  76.  
  77. -INC PPARAM
  78. -INC CCOPTIO
  79. -INC SMCOORD
  80. -INC SMCHPOI
  81. POINTEUR IROC.MCHPOI ,IVITC.MCHPOI ,ITEMC.MCHPOI
  82. POINTEUR IGRVF.MCHPOI
  83. POINTEUR IVIMP.MCHPOI ,ITOIM.MCHPOI
  84. POINTEUR ITIMP.MCHPOI ,IQIMP.MCHPOI
  85. POINTEUR ISURF.MCHPOI ,INORM.MCHPOI ,IVOLU.MCHPOI
  86. POINTEUR MPROC.MPOVAL ,MPVITC.MPOVAL,MPTEMC.MPOVAL
  87. POINTEUR MPGRVF.MPOVAL
  88. POINTEUR MPVIMP.MPOVAL,MPTOIM.MPOVAL
  89. POINTEUR MPTIMP.MPOVAL,MPQIMP.MPOVAL
  90. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  91. -INC SMCHAML
  92. POINTEUR ICOGRV.MCHELM,ICOGRT.MCHELM
  93. -INC SMELEME
  94. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  95. POINTEUR MELBID.MELEME
  96. POINTEUR MLVIMP.MELEME,MLTOIM.MELEME
  97. POINTEUR MLTIMP.MELEME,MLQIMP.MELEME
  98. -INC SMLENTI
  99. POINTEUR KRVIMP.MLENTI,KRTOIM.MLENTI
  100. POINTEUR KRTIMP.MLENTI,KRQIMP.MLENTI
  101. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  102. -INC SMLMOTS
  103. POINTEUR NOMINC.MLMOTS
  104. POINTEUR IJACO.MATRIK
  105. *
  106. REAL*8 MU,KAPPA,CV
  107. *
  108. INTEGER IMPR,IRET
  109. *
  110. LOGICAL LCLIMV,LCLITO
  111. LOGICAL LCLIMT,LCLIMQ
  112. *
  113. INTEGER NTOTPO
  114. C
  115. *
  116. * Executable statements
  117. *
  118. IMPR=0
  119. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans ylap2a.eso'
  120. * Initialisation de la matrice jacobienne à zéro
  121. CALL ZERMAK(IJACO,IMPR,IRET)
  122. IF (IRET.NE.0) GOTO 9999
  123. * Lecture des données et initialisations de tableaux de travail
  124. CALL LICHT2(IROC,MPROC,MELBID,IMPR,IRET)
  125. IF (IRET.NE.0) GOTO 9999
  126. CALL LICHT2(IVITC,MPVITC,MELBID,IMPR,IRET)
  127. IF (IRET.NE.0) GOTO 9999
  128. CALL LICHT2(ITEMC,MPTEMC,MELBID,IMPR,IRET)
  129. IF (IRET.NE.0) GOTO 9999
  130. CALL LICHT2(IGRVF,MPGRVF,MELBID,IMPR,IRET)
  131. IF (IRET.NE.0) GOTO 9999
  132. CALL LICHT2(ISURF,MPSURF,MELBID,IMPR,IRET)
  133. IF (IRET.NE.0) GOTO 9999
  134. CALL LICHT2(INORM,MPNORM,MELBID,IMPR,IRET)
  135. IF (IRET.NE.0) GOTO 9999
  136. CALL LICHT2(IVOLU,MPVOLU,MELBID,IMPR,IRET)
  137. IF (IRET.NE.0) GOTO 9999
  138. LCLIMV=(IVIMP.NE.0)
  139. LCLITO=(ITOIM.NE.0)
  140. LCLIMT=(ITIMP.NE.0)
  141. LCLIMQ=(IQIMP.NE.0)
  142. NTOTPO=nbpts
  143. IF (LCLIMV) THEN
  144. CALL LICHT2(IVIMP,MPVIMP,MLVIMP,IMPR,IRET)
  145. IF (IRET.NE.0) GOTO 9999
  146. * In KRIPME : SEGINI KRVIMP
  147. CALL KRIPME(MLVIMP,NTOTPO,KRVIMP,IMPR,IRET)
  148. IF (IRET.NE.0) GOTO 9999
  149. ENDIF
  150. IF (LCLITO) THEN
  151. CALL LICHT2(ITOIM,MPTOIM,MLTOIM,IMPR,IRET)
  152. IF (IRET.NE.0) GOTO 9999
  153. * In KRIPME : SEGINI KRTOIM
  154. CALL KRIPME(MLTOIM,NTOTPO,KRTOIM,IMPR,IRET)
  155. IF (IRET.NE.0) GOTO 9999
  156. ENDIF
  157. IF (LCLIMT) THEN
  158. CALL LICHT2(ITIMP,MPTIMP,MLTIMP,IMPR,IRET)
  159. IF (IRET.NE.0) GOTO 9999
  160. * In KRIPME : SEGINI KRTIMP
  161. CALL KRIPME(MLTIMP,NTOTPO,KRTIMP,IMPR,IRET)
  162. IF (IRET.NE.0) GOTO 9999
  163. ENDIF
  164. IF (LCLIMQ) THEN
  165. CALL LICHT2(IQIMP,MPQIMP,MLQIMP,IMPR,IRET)
  166. IF (IRET.NE.0) GOTO 9999
  167. * In KRIPME : SEGINI KRQIMP
  168. CALL KRIPME(MLQIMP,NTOTPO,KRQIMP,IMPR,IRET)
  169. IF (IRET.NE.0) GOTO 9999
  170. ENDIF
  171. * Repérage dans les faces, les centres
  172. * In KRIPME : SEGINI KRFACE
  173. CALL KRIPME(MELEMF,NTOTPO,KRFACE,IMPR,IRET)
  174. IF (IRET.NE.0) GOTO 9999
  175. * In KRIPME : SEGINI KRCENT
  176. CALL KRIPME(MELEMC,NTOTPO,KRCENT,IMPR,IRET)
  177. IF (IRET.NE.0) GOTO 9999
  178. *
  179. * Note : on pourrait regrouper les subroutines suivantes en une
  180. * seule pas trop longue, au prix d'un gros effort
  181. * (voir aussi la NOTE: dans ylap2c)
  182. *
  183. * Calcul des contributions 'simples' à la matrice jacobienne faisant
  184. * intervenir les coefficients pour le calcul des gradients de vitesse
  185. * (ICOGRV)
  186. * (contributions à (d Res_{\rho u} / d var), (d Res_{\rho v} / d var)
  187. * et (d Res_{\rho w} / d var)
  188. * var prenant successivement les valeurs :
  189. * \rho, \rho u, \rho v, \rho w, \rho e_t )
  190. *
  191. CALL YLAP2C(ICOGRV,MPROC,MPVITC,
  192. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  193. $ KRFACE,KRCENT,LCLIMV,KRVIMP,LCLITO,KRTOIM,
  194. $ NOMINC,
  195. $ MU,
  196. $ IJACO,
  197. $ IMPR,IRET)
  198. IF (IRET.NE.0) GOTO 9999
  199. *
  200. * Calcul des contributions 'compliquées' à la matrice jacobienne faisant
  201. * intervenir les coefficients pour le calcul des gradients de vitesse
  202. * (ICOGRV)
  203. * (contributions à (d Res_{\rho e_t} / d var)
  204. * var prenant successivement les valeurs :
  205. * \rho, \rho u, \rho v, \rho w, \rho e_t )
  206. * Les contributions sont plus "compliquées" à calculer que les
  207. * simples car on a à dériver des produits de fonctions de la vitesse
  208. * d (f(u,v) * g(u,v)) / d var = f dg/dv + df/dv g
  209. *
  210. CALL YLAP2E(ICOGRV,MPGRVF,MPROC,MPVITC,
  211. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  212. $ KRFACE,KRCENT,
  213. $ LCLIMV,KRVIMP,MPVIMP,
  214. $ LCLITO,KRTOIM,
  215. $ NOMINC,
  216. $ MU,
  217. $ IJACO,
  218. $ IMPR,IRET)
  219. IF (IRET.NE.0) GOTO 9999
  220. CALL YLAP2D(ICOGRV,MPGRVF,MPROC,MPVITC,
  221. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  222. $ KRFACE,KRCENT,
  223. $ LCLIMV,KRVIMP,
  224. $ LCLITO,KRTOIM,MPTOIM,
  225. $ NOMINC,
  226. $ MU,
  227. $ IJACO,
  228. $ IMPR,IRET)
  229. IF (IRET.NE.0) GOTO 9999
  230. *
  231. * Calcul des contributions à la matrice jacobienne faisant intervenir
  232. * les coefficients pour le calcul des gradients de température (ICOGRT)
  233. * (contributions à d Res_{\rho e_t} / d var
  234. * var prenant successivement les valeurs :
  235. * \rho, \rho u, \rho v, \rho w, \rho e_t )
  236. *
  237. CALL YLAP2B(ICOGRT,MPROC,MPVITC,MPTEMC,
  238. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  239. $ KRFACE,KRCENT,LCLIMT,KRTIMP,LCLIMQ,KRQIMP,
  240. $ NOMINC,
  241. $ KAPPA,CV,
  242. $ IJACO,
  243. $ IMPR,IRET)
  244. IF (IRET.NE.0) GOTO 9999
  245. *
  246. * Destruction des tableaux de travail
  247. *
  248. SEGSUP KRCENT
  249. SEGSUP KRFACE
  250. IF (LCLIMQ) THEN
  251. SEGSUP KRQIMP
  252. ENDIF
  253. IF (LCLIMT) THEN
  254. SEGSUP KRTIMP
  255. ENDIF
  256. IF (LCLITO) THEN
  257. SEGSUP KRTOIM
  258. ENDIF
  259. IF (LCLIMV) THEN
  260. SEGSUP KRVIMP
  261. ENDIF
  262. *
  263. * Normal termination
  264. *
  265. IRET=0
  266. RETURN
  267. *
  268. * Format handling
  269. *
  270. *
  271. * Error handling
  272. *
  273. 9999 CONTINUE
  274. IRET=1
  275. WRITE(IOIMP,*) 'An error was detected in subroutine ylap2a'
  276. CALL ERREUR(5)
  277. RETURN
  278. *
  279. * End of subroutine YLAP2A
  280. *
  281. END
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  

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