Télécharger xlap1a.eso

Retour à la liste

Numérotation des lignes :

xlap1a
  1. C XLAP1A SOURCE CB215821 20/11/25 13:43:10 10792
  2. SUBROUTINE XLAP1A(IMUC,IKAPC,ICVC,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 : XLAP1A
  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 : XLAP1B |
  17. C XLAP1C | Calcul des contributions à la matrice
  18. C XLAP1D | jacobienne du résidu du laplacien VF 2D.
  19. C XLAP1E |
  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 : ZLAP11 : Chapeau de l'opérateur Gibiane 'LAPN'
  27. C option 'VF'.
  28. C***********************************************************************
  29. C ENTREES : IMUC (type MCHPOI) : viscosité dynamique (SI).
  30. C IKAPC (type MCHPOI) : conductivité thermique (SI)
  31. C ICVC (type MCHPOI) : 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 2D.
  64. C SORTIES : -
  65. C***********************************************************************
  66. C VERSION : v1, 01/01/2002, version initiale
  67. C HISTORIQUE : v1, 01/01/2002, 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 IMUC.MCHPOI ,IKAPC.MCHPOI ,ICVC.MCHPOI
  82. POINTEUR IROC.MCHPOI ,IVITC.MCHPOI ,ITEMC.MCHPOI
  83. POINTEUR IGRVF.MCHPOI
  84. POINTEUR IVIMP.MCHPOI ,ITOIM.MCHPOI
  85. POINTEUR ITIMP.MCHPOI ,IQIMP.MCHPOI
  86. POINTEUR ISURF.MCHPOI ,INORM.MCHPOI ,IVOLU.MCHPOI
  87. POINTEUR MPMUC.MPOVAL ,MPKAPC.MPOVAL,MPCVC.MCHPOI
  88. POINTEUR MPROC.MPOVAL ,MPVITC.MPOVAL,MPTEMC.MPOVAL
  89. POINTEUR MPGRVF.MPOVAL
  90. POINTEUR MPVIMP.MPOVAL,MPTOIM.MPOVAL
  91. POINTEUR MPTIMP.MPOVAL,MPQIMP.MPOVAL
  92. POINTEUR MPSURF.MPOVAL,MPNORM.MPOVAL,MPVOLU.MPOVAL
  93. -INC SMCHAML
  94. POINTEUR ICOGRV.MCHELM,ICOGRT.MCHELM
  95. -INC SMELEME
  96. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  97. POINTEUR MELBID.MELEME
  98. POINTEUR MLVIMP.MELEME,MLTOIM.MELEME
  99. POINTEUR MLTIMP.MELEME,MLQIMP.MELEME
  100. -INC SMLENTI
  101. POINTEUR KRVIMP.MLENTI,KRTOIM.MLENTI
  102. POINTEUR KRTIMP.MLENTI,KRQIMP.MLENTI
  103. POINTEUR KRCENT.MLENTI,KRFACE.MLENTI
  104. -INC SMLMOTS
  105. POINTEUR NOMINC.MLMOTS
  106. POINTEUR IJACO.MATRIK
  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 xlap1a.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(IMUC,MPMUC,MELBID,IMPR,IRET)
  125. IF (IRET.NE.0) GOTO 9999
  126. CALL LICHT2(IKAPC,MPKAPC,MELBID,IMPR,IRET)
  127. IF (IRET.NE.0) GOTO 9999
  128. CALL LICHT2(ICVC,MPCVC,MELBID,IMPR,IRET)
  129. IF (IRET.NE.0) GOTO 9999
  130. CALL LICHT2(IROC,MPROC,MELBID,IMPR,IRET)
  131. IF (IRET.NE.0) GOTO 9999
  132. CALL LICHT2(IVITC,MPVITC,MELBID,IMPR,IRET)
  133. IF (IRET.NE.0) GOTO 9999
  134. CALL LICHT2(ITEMC,MPTEMC,MELBID,IMPR,IRET)
  135. IF (IRET.NE.0) GOTO 9999
  136. CALL LICHT2(IGRVF,MPGRVF,MELBID,IMPR,IRET)
  137. IF (IRET.NE.0) GOTO 9999
  138. CALL LICHT2(ISURF,MPSURF,MELBID,IMPR,IRET)
  139. IF (IRET.NE.0) GOTO 9999
  140. CALL LICHT2(INORM,MPNORM,MELBID,IMPR,IRET)
  141. IF (IRET.NE.0) GOTO 9999
  142. CALL LICHT2(IVOLU,MPVOLU,MELBID,IMPR,IRET)
  143. IF (IRET.NE.0) GOTO 9999
  144. LCLIMV=(IVIMP.NE.0)
  145. LCLITO=(ITOIM.NE.0)
  146. LCLIMT=(ITIMP.NE.0)
  147. LCLIMQ=(IQIMP.NE.0)
  148. NTOTPO=nbpts
  149. IF (LCLIMV) THEN
  150. CALL LICHT2(IVIMP,MPVIMP,MLVIMP,IMPR,IRET)
  151. IF (IRET.NE.0) GOTO 9999
  152. * In KRIPME : SEGINI KRVIMP
  153. CALL KRIPME(MLVIMP,NTOTPO,KRVIMP,IMPR,IRET)
  154. IF (IRET.NE.0) GOTO 9999
  155. ENDIF
  156. IF (LCLITO) THEN
  157. CALL LICHT2(ITOIM,MPTOIM,MLTOIM,IMPR,IRET)
  158. IF (IRET.NE.0) GOTO 9999
  159. * In KRIPME : SEGINI KRTOIM
  160. CALL KRIPME(MLTOIM,NTOTPO,KRTOIM,IMPR,IRET)
  161. IF (IRET.NE.0) GOTO 9999
  162. ENDIF
  163. IF (LCLIMT) THEN
  164. CALL LICHT2(ITIMP,MPTIMP,MLTIMP,IMPR,IRET)
  165. IF (IRET.NE.0) GOTO 9999
  166. * In KRIPME : SEGINI KRTIMP
  167. CALL KRIPME(MLTIMP,NTOTPO,KRTIMP,IMPR,IRET)
  168. IF (IRET.NE.0) GOTO 9999
  169. ENDIF
  170. IF (LCLIMQ) THEN
  171. CALL LICHT2(IQIMP,MPQIMP,MLQIMP,IMPR,IRET)
  172. IF (IRET.NE.0) GOTO 9999
  173. * In KRIPME : SEGINI KRQIMP
  174. CALL KRIPME(MLQIMP,NTOTPO,KRQIMP,IMPR,IRET)
  175. IF (IRET.NE.0) GOTO 9999
  176. ENDIF
  177. * Repérage dans les faces, les centres
  178. * In KRIPME : SEGINI KRFACE
  179. CALL KRIPME(MELEMF,NTOTPO,KRFACE,IMPR,IRET)
  180. IF (IRET.NE.0) GOTO 9999
  181. * In KRIPME : SEGINI KRCENT
  182. CALL KRIPME(MELEMC,NTOTPO,KRCENT,IMPR,IRET)
  183. IF (IRET.NE.0) GOTO 9999
  184. *
  185. * Note : on pourrait regrouper les subroutines suivantes en une
  186. * seule pas trop longue, au prix d'un gros effort
  187. * (voir aussi la NOTE: dans xlap1c)
  188. *
  189. * Calcul des contributions 'simples' à la matrice jacobienne faisant
  190. * intervenir les coefficients pour le calcul des gradients de vitesse
  191. * (ICOGRV)
  192. * (contributions à (d Res_{\rho u} / d var) et (d Res_{\rho v} / d var)
  193. * var prenant successivement les valeurs :
  194. * \rho, \rho u, \rho v, \rho e_t )
  195. *
  196. CALL XLAP1C(ICOGRV,MPROC,MPVITC,
  197. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  198. $ KRFACE,KRCENT,LCLIMV,KRVIMP,LCLITO,KRTOIM,
  199. $ NOMINC,
  200. $ MPMUC,
  201. $ IJACO,
  202. $ IMPR,IRET)
  203. IF (IRET.NE.0) GOTO 9999
  204. *
  205. * Calcul des contributions 'compliquées' à la matrice jacobienne faisant
  206. * intervenir les coefficients pour le calcul des gradients de vitesse
  207. * (ICOGRV)
  208. * (contributions à (d Res_{\rho e_t} / d var)
  209. * var prenant successivement les valeurs :
  210. * \rho, \rho u, \rho v, \rho e_t )
  211. * Les contributions sont plus "compliquées" à calculer que les
  212. * simples car on a à dériver des produits de fonctions de la vitesse
  213. * d (f(u,v) * g(u,v)) / d var = f dg/dv + df/dv g
  214. *
  215. CALL XLAP1E(ICOGRV,MPGRVF,MPROC,MPVITC,
  216. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  217. $ KRFACE,KRCENT,
  218. $ LCLIMV,KRVIMP,MPVIMP,
  219. $ LCLITO,KRTOIM,
  220. $ NOMINC,
  221. $ MPMUC,
  222. $ IJACO,
  223. $ IMPR,IRET)
  224. IF (IRET.NE.0) GOTO 9999
  225. CALL XLAP1D(ICOGRV,MPGRVF,MPROC,MPVITC,
  226. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  227. $ KRFACE,KRCENT,
  228. $ LCLIMV,KRVIMP,
  229. $ LCLITO,KRTOIM,MPTOIM,
  230. $ NOMINC,
  231. $ MPMUC,
  232. $ IJACO,
  233. $ IMPR,IRET)
  234. IF (IRET.NE.0) GOTO 9999
  235. *
  236. * Calcul des contributions à la matrice jacobienne faisant intervenir
  237. * les coefficients pour le calcul des gradients de température (ICOGRT)
  238. * (contributions à d Res_{\rho e_t} / d var
  239. * var prenant successivement les valeurs :
  240. * \rho, \rho u, \rho v, \rho e_t )
  241. *
  242. CALL XLAP1B(ICOGRT,MPROC,MPVITC,MPTEMC,
  243. $ MPVOLU,MPNORM,MPSURF,MELEFL,
  244. $ KRFACE,KRCENT,LCLIMT,KRTIMP,LCLIMQ,KRQIMP,
  245. $ NOMINC,
  246. $ MPKAPC,MPCVC,
  247. $ IJACO,
  248. $ IMPR,IRET)
  249. IF (IRET.NE.0) GOTO 9999
  250. *
  251. * Destruction des tableaux de travail
  252. *
  253. SEGSUP KRCENT
  254. SEGSUP KRFACE
  255. IF (LCLIMQ) THEN
  256. SEGSUP KRQIMP
  257. ENDIF
  258. IF (LCLIMT) THEN
  259. SEGSUP KRTIMP
  260. ENDIF
  261. IF (LCLITO) THEN
  262. SEGSUP KRTOIM
  263. ENDIF
  264. IF (LCLIMV) THEN
  265. SEGSUP KRVIMP
  266. ENDIF
  267. *
  268. * Normal termination
  269. *
  270. IRET=0
  271. RETURN
  272. *
  273. * Format handling
  274. *
  275. *
  276. * Error handling
  277. *
  278. 9999 CONTINUE
  279. IRET=1
  280. WRITE(IOIMP,*) 'An error was detected in subroutine xlap1a'
  281. CALL ERREUR(5)
  282. RETURN
  283. *
  284. * End of subroutine XLAP1A
  285. *
  286. END
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  

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