Télécharger solvVF.procedur

Retour à la liste

Numérotation des lignes :

  1. * SOLVVF PROCEDUR GOUNAND 10/10/13 21:15:43 6779
  2. **********************************************************************
  3. 'DEBP' SOLVVF MoDARCY*'MMODEL' ChPSour*'CHPOINT'
  4. matk/'MATRIK' SMTR*'CHPOINT' cini*'CHPOINT'
  5. Mctot*'MCHAML' Mdiff*'MCHAML' Difftot*'CHPOINT'
  6. RESID*'CHPOINT' TetaDiff*'FLOTTANT'
  7. QFACE/'CHPOINT' nomespec*'LISTMOTS'
  8. nbespece*'ENTIER' nbsource*'ENTIER' TABRES*'TABLE'
  9. CHCLIM*'TABLE' NOUVMAT*'LOGIQUE' LCONV*'LOGIQUE'
  10. CHTR*'LOGIQUE' ;
  11. * |-----------------------------------------------------------------|
  12. * | Phrase d'appel (en GIBIANE) |
  13. * |-----------------------------------------------------------------|
  14. * | |
  15. * matsor TABRES cfin cflu cfluco = SOLVVF MoDARCY
  16. * ChPSour Mattt Smtr Cini Mctot Mdiff Difftot
  17. * Qface nomespec nbespece
  18. * nbsource OPTRES CHCLIM Nouvmat
  19. * | |
  20. * | |
  21. * |-----------------------------------------------------------------|
  22. * | Généralités : MATTVF construit la matrice de discrétisation |
  23. * | du problème de transport convection-diffusion pour|
  24. * | le premier pas de tps d'un algorithme transitoire.|
  25. * | Le second membre et les Conditions limites de flux|
  26. * | sont pris en compte. |
  27. * | RESTE TCINI, DECENTR et TERME LIN |
  28. * |-----------------------------------------------------------------|
  29. * | |
  30. * |-----------------------------------------------------------------|
  31. * | ENTREES |
  32. * |-----------------------------------------------------------------|
  33. * | MoDARCY : modele Darcy. |
  34. * | |
  35. * | ChPSour : Champ par points des sources volumiques par unité de |
  36. * | temps (support maillage centre). Composante associées|
  37. * | aux especes |
  38. * | |
  39. * | Mattt : matrice discretisation VF |
  40. * | |
  41. * | SMTr : second membre sur les traces |
  42. * | |
  43. * | nomespec : liste des noms de composante des espèces dans Cini |
  44. * | |
  45. * | nbespece : nombre de composante de Cini, soit nombre d'especes |
  46. * | |
  47. * | nbsource : nombre de composantes du terme source qd X especes |
  48. * | |
  49. * | TABRES : Table complète définissant les options de résolution |
  50. * | pour 'KRES'. |
  51. * | |
  52. * | |
  53. * | CHCLIM : table d'indice 'NEUMANN' et 'DIRICHLET' contenant les|
  54. * | Chpoint à n composantes contenant les conditions aux |
  55. * | limites de Neumann et Dirichlet par espece. |
  56. *
  57. * | NOUVMAT : Logique affecté à VRAI lorsque que Matot vient
  58. * | d'etre calculée
  59. * | |
  60. * |-----------------------------------------------------------------|
  61. * | SORTIES |
  62. * |-----------------------------------------------------------------|
  63.  
  64. * | Matk : matrice globale VF
  65. * | |
  66. * | cfin : concentration apres calcul pour toutes les especes |
  67. * | |
  68. * | TABSORT : Table complète définissant les options de résolution |
  69. * | pour 'KRES'. |
  70. * | |
  71. * |-----------------------------------------------------------------|
  72. * | VARIABLES INTERNES |
  73. * |-----------------------------------------------------------------|
  74. * | |
  75. * | |
  76. * | CChpsour : Source aux centre (une composante) |
  77. * | |
  78. * | CCfin : concentration aux centres (une composante) |
  79. * | |
  80. * | SSMTr : second membre sur les traces pour une espèce |
  81. * | |
  82. * | Nouvmatr : Logique, si VRAI on transforme la matrice rigidité |
  83. * | en matrik |
  84. * | |
  85. * | DIRCLI : logique valant VRAI si conditions aux |
  86. * | limites de Dirichlet |
  87. * | |
  88. * | CLDIRI : Chpoint à n composantes contenant les conditions aux |
  89. * | limites de Dirichlet par espece. |
  90. * | il faudra en faire un nuage si supports géométriques |
  91. * | différents par espece. OPTIONNEL |
  92. * | |
  93. **********************************************************************
  94.  
  95.  
  96.  
  97. *---------------------------------------------------------------------
  98. *---------- On récupere les conditions limites ------------------
  99. *---------------------------------------------------------------------
  100.  
  101.  
  102.  
  103. *
  104. * On recopie la table de résolution TABRES dans TABSORT
  105. * Attention si une valeur contenue dans la table a le
  106. * debut d'un nom d'opérateur de castem, il y a probleme
  107. * d'ou démarrage apres l'indice soustype de valeur
  108. * METHINV, identique à opérateur METHode.
  109. *
  110.  
  111. FLUNEU = FAUX;
  112. DIRCLI = FAUX;
  113. FLUTOT = FAUX;
  114. FLUMIX = FAUX;
  115. CLFLUX MA = 'KOPS' 'MATRIK';
  116. CLDIRI MA = 'KOPS' 'MATRIK';
  117. CLFLUT MA = 'KOPS' 'MATRIK';
  118. EXFLU = CLFLUX;
  119. EXDIR = CLDIRI;
  120. EXFLUT = CLFLUT;
  121.  
  122. * Neumann
  123. 'SI' ('EXISTE' CHCLIM 'NEUMANN') ;
  124. CLFLUX = CHCLIM . 'NEUMANN';
  125. FLUNEU = VRAI;
  126. 'FINSI';
  127.  
  128. 'SI' ('EXISTE' CHCLIM 'DIRICHLET') ;
  129. CLDIRI = CHCLIM . 'DIRICHLET';
  130. DIRCLI = VRAI;
  131. 'FINSI';
  132.  
  133. 'SI' ('EXISTE' CHCLIM 'FLUTOTAL') ;
  134. CLFLT = CHCLIM . 'FLUTOTAL';
  135. FLUTOT = VRAI;
  136. 'FINSI';
  137.  
  138. 'SI' ('EXISTE' CHCLIM 'FLUMIXTE') ;
  139. * comme on impose A Dgrad C + B C = flumix, on le traite sous
  140. * la forme D grad C + (B/A) C = flumix/A plus naturelle en EFMH car
  141. * D grad C est le flux diffusif
  142. COFA = -1.D0 * CHCLIM . 'FLUMIXTE' . 'COEFA' ;
  143. CLFLUX3 = CHCLIM . 'FLUMIXTE' . 'VAL' '/' COFA ;
  144. CLFLUX3 = CHAN 'ATTRIBUT' CLFLUX3 NATURE DISCRET ;
  145. FLUMIX = VRAI ;
  146. mayage = 'EXTRAIRE' CHCLIM . 'FLUMIXTE' . 'VAL' maillage ;
  147. cofb = (doma modarcy SURFACE) * CHCLIM . 'FLUMIXTE' . 'COEFB' ;
  148. * cofb = CHCLIM . 'FLUMIXTE' . 'COEFB' ;
  149. cofa = 'REDU' (CHCLIM . 'FLUMIXTE' . 'COEFA') mayage ;
  150. cofb = 'REDU' cofb mayage ;
  151. coefm = (1.D0 * cofb) '/' cofa ;
  152. CLFLUX3 = 'REDU' CLFLUX3 mayage ;
  153. 'OUBLIER' cofa ;
  154. 'OUBLIER' cofb ;
  155. 'FINSI' ;
  156.  
  157. dumm = 'INDEX' TABRES ;
  158. TABSORT = 'TABLE' METHINV ;
  159. 'REPETER' bou1 (('DIME' dumm) '-' 1) ;
  160. TABSORT . (mot dumm . (&bou1 '+' 1)) = TABRES . (mot dumm . (&bou1
  161. '+' 1)) ;
  162. 'FIN' bou1 ;
  163.  
  164.  
  165. 'SI' (NOUVMAT) ;
  166. TABSORT . 'MATASS' = Matk ;
  167. TABSORT . 'MAPREC' = Matk ;
  168. 'FINSI' ;
  169.  
  170.  
  171.  
  172. *---------------------------------------------------------------------
  173. *-------------- RESOLUTION -----------------
  174. *---------------------------------------------------------------------
  175. * boucle sur les espèces.
  176. SURF = 'DOMA' MoDarcy 'SURFACE' ;
  177. 'REPETER' bloc1 nbespece ;
  178.  
  179. espc = ('EXTRAIRE' &bloc1 nomespec) ;
  180.  
  181.  
  182. * préparation solution initiale - ie trace initiale
  183. TABSORT . 'XINIT' = 'NOMC' 'RETN'
  184. ('EXCO' espc Cini) ;
  185. hh = TABSORT . 'XINIT' ;
  186.  
  187.  
  188.  
  189. * préparation du terme source
  190. 'SI' (nbsource 'EGA' 1) ;
  191. CChpsour = 'NOMC' 'RETN' Chpsour ;
  192. 'SINON' ;
  193. CChpsour = 'NOMC' 'RETN' ('EXCO' espc
  194. Chpsour) ;
  195. 'FINSI' ;
  196.  
  197. * préparation second membre
  198. 'SI' ('NON' CHTR) ;
  199. * VERRUE
  200. Smaux = ((1.D0 - Tetadiff)*RESID) + (Tetadiff*Smtr) ;
  201. Smaux = Smtr;
  202. SSmtr = 'NOMC' 'RETN' ('EXCO' espc Smaux)
  203. '+' CChpsour ;
  204. 'SINON' ;
  205. SSmtr = 'NOMC' 'RETN' ('EXCO' espc Smtr)
  206. '+' CChpsour ;
  207. 'FINSI' ;
  208.  
  209.  
  210. *LIST CCHPsour;
  211. * Calcul du résidu
  212.  
  213. res = KRES matk 'TYPI' TABSORT
  214. 'SMBR' ('NOMC' 'RETN' SSMTr)
  215. 'IMPR' 0 ;
  216.  
  217.  
  218. TABSORT . 'MATASS' = matk ;
  219. TABSORT . 'MAPREC' = matk ;
  220.  
  221. CCfin = 'CHAN' 'ATTRIBUT' ( hh '+' ('EXCO' res 'RETN' 'RETN') )
  222. 'NATU' 'DISCRET' ;
  223.  
  224. HHS = 'NOMC' CCfin 'SCAL' ;
  225.  
  226. 'SI' (FLUNEU) ;
  227. EXFLU =
  228. ('NOMC' 'FLUX' ('EXCO' espc
  229. CLFLUX)) ;
  230. 'FINSI' ;
  231. 'SI' (DIRCLI) ;
  232. EXDIR =
  233. ('NOMC' 'SCAL' ('EXCO' espc
  234. CLDIRI)) ;
  235. 'FINSI' ;
  236.  
  237. 'SI' (FLUTOT) ;
  238. EXFLUT =
  239. ('NOMC' 'FLUX' ('EXCO' espc
  240. CLFLT )) ;
  241. QLIM = NOMC(EXFLUT) 'FLUX' ;
  242. SUP = 'EXTR' EXFLUT 'MAIL' ;
  243. XPAR1 = 1.D0 + (0.0*CLFLT) ;
  244. XPAR1 = 'NOMC' XPAR1 'PAR1' ;
  245. 'SI' LCONV ;
  246. USCNR = 'REDU' QFACE SUP ;
  247. MUSCN = USCNR*(-1.D0) ;
  248. 'SINON' ;
  249. MUSCN = (0.D0*CLFLT) ;
  250. 'FINSI' ;
  251. XPAR2 = 'NOMC' MUSCN 'PAR2' ;
  252. EXFLUT = XPAR1 + XPAR2 + QLIM ;
  253. EXFLUT = CHAN 'ATTRIBUT' EXFLUT NATURE DISCRET ;
  254. 'FINSI' ;
  255.  
  256. 'SI' (FLUMIX) ;
  257. EXFLUM =
  258. ('NOMC' 'FLUX' ('EXCO' espc
  259. CLFLUX3 )) ;
  260. QLIM = NOMC(EXFLUM) 'FLUX' ;
  261. SUP = 'EXTR' EXFLUM 'MAIL' ;
  262. XPAR1 = 1.D0 + (0.0*CLFLUX3) ;
  263. XPAR1 = 'NOMC' XPAR1 'PAR1' ;
  264. MUSCN = coefm ;
  265. XPAR2 = 'NOMC' MUSCN 'PAR2' ;
  266. EXFLUM = XPAR1 + XPAR2 + QLIM ;
  267. EXFLUM = CHAN 'ATTRIBUT' EXFLUM NATURE DISCRET ;
  268. EXFLUT = EXFLUT 'ET' EXFLUM ;
  269. 'FINSI' ;
  270.  
  271.  
  272. 'SI' ('NON' CHTR) ;
  273. * On reconstruit le flux diffusif aux faces
  274. CCFLU = 'PENT' MoDARCY 'FACE' 'MPFA'
  275. HHS 'DISPDIF' difftot
  276. 'TIMP' EXDIR 'QIMP' EXFLU 'MIXT' EXFLUT
  277. 'UPWICENT' QFace 'GRADGEO' Mdiff ;
  278. CCFLU = (-1.D0)*CCFLU*SURF;
  279. CCFLU = 'CHAN' 'ATTRIBUT' CCFLU 'NATU' 'DISCRET' ;
  280.  
  281. * On reconstruit le flux convectif aux faces A PATIR DU FLUX TOTAL
  282. CCFLUTO = 'PENT' MoDARCY 'FACE' 'MPFA'
  283. HHS 'DISPDIF' difftot
  284. 'TIMP' EXDIR 'QIMP' EXFLU 'MIXT' EXFLUT 'UPWICENT' QFace
  285. 'GRADGEO' Mctot ;
  286.  
  287. * CALCUL DU RESIDU POUR LA PAS DE TEMPS SUIVANT
  288. JACO CHPRES DT = 'LAPN' 'VF' 'CLAUDEIS' 'EXPL'
  289. MoDARCY HHS CCFLUTO ;
  290.  
  291. 'SI' ((&bloc1) 'EGA' 1) ;
  292. SSMTr = 'NOMC' espc CHPRES ;
  293. RESI = SSMTr ;
  294. 'SINON' ;
  295. CHPRES = 'NOMC' espc ('COPIER' CHPRES) ;
  296. RESI = CHPRES 'ET' RESI;
  297. 'FINSI' ;
  298.  
  299. CCFLUTO = (-1.D0)*CCFLUTO*SURF;
  300. CCFLUTO = 'CHAN' 'ATTRIBUT' CCFLUTO 'NATU' 'DISCRET' ;
  301. CCFLUCO = CCFLUTO - CCFLU;
  302. 'SINON' ;
  303. CCFLU = 0.*SURF ;
  304. CCFLUCO = 0.*SURF ;
  305. * PHM : ATTENTION : est ce ok de mettre cela ?
  306. RESI = RESID ;
  307. 'FINSI' ;
  308.  
  309.  
  310. * On reconstitue les champoints à plusieurs composante
  311.  
  312. 'SI' (&bloc1 'EGA' 1) ;
  313. CCfin = 'NOMC' espc CCfin ;
  314. CCflu = 'NOMC' espc CCFLU ;
  315. CCFLUCO = 'NOMC' espc CCFLUCO
  316. NATU DISCRET ;
  317. cfin = ccfin ;
  318. cflu = ccflu ;
  319. cfluco = ccfluco ;
  320. 'SINON' ;
  321. CCfin = 'NOMC' espc ('COPIER' CCfin)
  322. NATU DISCRET ;
  323. ccflu = 'NOMC' espc ('COPIER' CCflu)
  324. NATU DISCRET ;
  325. CCFLUCO = 'NOMC' espc ('COPIER' CCFLUCO)
  326. NATU DISCRET ;
  327. cfin = cfin 'ET' ccfin ;
  328. cflu = cflu 'ET' ccflu ;
  329. cfluco = cfluco 'ET' ccfluco ;
  330. 'FINSI' ;
  331.  
  332. 'FIN' bloc1 ;
  333.  
  334. 'FINP' matk TABSORT cfin cflu cfluco RESI ;
  335.  

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