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 : 336 : 337 : 338 : 339 : 340 : 341 :
© Cast3M 2003 - All rights reserved.
Disclaimer