Télécharger transport6EFMH.dgibi
* fichier : transport6EFMH.dgibi ******************** CAS TEST : transport6.dgibi ************************ * GRAPH = 'O'; 'OPTION' ECHO 1 ; CRIT1 = 1.D-3 ; 'SAUTER' 'PAGE'; 'TITRE' 'Validation du transport'; * Petit programme testant le transport en milieu poreux avec * - Retard non linéaire suivant une isotherme de type Langmuir. * * pour un cas test 2D simple : * Une petite source baignant dans un champ de vitesse uniforme. * * P4 *---------------* P3 * | | * | | * | | * P5 |---------------| P2 * | | * | | * | | * | | * P6 *----* P9 - - - * P11 * | | | * P7 *----* P8 - - - * P10 * | | * | | * P0 *---------------* P1 * 'SAUTER' 'PAGE'; * ============== * | PARAMETRES | * ============== * * Paramètres internes : * ===================== 'OPTION' ISOV 'SURFACE' ; 'OPTION' 'TRAC' PSC ; * Paramètres de convivialité : * ============================ * Trace les limites de solubilité ? TrLimSol= Vrai ; * Trace les profils de concentration suivant certaines lignes ? TrLEvol = Vrai ; * Trace les évolutions de concentration en certaines points ? TrPEvol = Vrai ; * Trace les champs de concentration en soluté, précipité ? TrConc = vrai ; TrPrec = vrai ; * Trace la quantité de précipité dissout ? TrLib = vrai ; * Trace le flux à travers une ligne ? TrFlux = Vrai ; SI ('EGA' GRAPH 'N'); TrLEvol = faux ; TrPEvol = faux ; TrConc = faux ; TrPrec = faux ; TrLib = faux ; TrFlux = faux ; TrLimSol= faux ; FINSI; * Grandeurs physiques : * ===================== * VITESSE DE DARCY UXImp = 0.; UYImp = 1.; * POROSITE ValPor = 1.; *-- Facteur de forme : FacForme = 1.; * RETARD *-- Coefficient de retard (éventuellement scalaire) : * Isotherme de Langmuir : F(C) = [(R-1) C] / [1 + (R-1)C/Fsat] * F étant exprimé en mol/dm3 de milieu. * où R est la pente à l'origine * et Fsat est la limite d'adsorption * Isotherme de Freundlich : F(C) = (R-1) C^(1/n) * F étant exprimé en mol/dm3 de milieu. * Attention, R n'est pas un coefficient de retard car il n'y a * aucune zone de linéarité, et ce n'est pas non plus un nombre * pur. Sa dimension est (mol/l)^(1 - 1/n) * L'abus de langage est caractérisé dans ce cas. * On pose alpharet = 1/n * Cas Langmuir : CofRetar = 2. ; Fsat = .5 ; * Cas Freundlich : KFreund = 2. ; AFreund = .5 ; * LIMITE DE SOLUBILITE *-- Limite de solubilité en mol/l (global et fond): * Cette valeur ne sert que si la dissolution est instantanée ou * d'ordre 1. CSat1 = 1. ; CSat2 = 0.01 ; Distrib = 'expo'; * DIFFUSIVITE *-- Diffusivité moléculaire du traceur en m²/s DifMolec = 2.d0; * NATURE DISSOLUTION *-- Nature de la dissolution (si existe) et logiques associés : NaturDis = 'Pas de dissolution'; *NaturDis = 'Imposée'; *NaturDis = 'Ordre 1'; *NaturDis = 'Instant_Pénal'; *NaturDis = 'Instant_PFDis'; Solub = 'NEG' NaturDis 'Pas de dissolution'; SoluA = 'EGA' NaturDis 'Imposée'; SoluP = 'EGA' NaturDis 'Ordre 1'; SoluI = ('EGA' NaturDis 'Instant_PFDis') OU ('EGA' NaturDis 'Instant_Pénal'); SoluL = SoluP OU SoluI; * PARAM. NUM. DISSOLUTION *-- Grandeur(s) associée(s) à la dissolution : Methode = 'Point fixe Dissolution'; * Critère d'arrêt (relatif) du point fixe EpsSolub = 4.D-2; * Nombre maxi d'itérations NbItMax = 100; * QUANTITES INITIALES *-- Concentration en marqueur dans la source à t=0 (mol/l d'eau): CActif0 = CSat1; *-- Précipité de marqueur dans la source à t=0 (mol/dm² de milieu): SI Solub; PActif0 = 10. * CSat1 ; FINSI; * TEMPS DE CALCUL * initial, final, et pas de temps : TIni = 0.; TFin = 10.; DelTaT = 1. ; * METHODES NUMERIQUES *-- Coef. d'implicitation (1 = implicite, 0 = explicite) * Diffusion : TetaDif = 1. ; * Convection : TetaCnv = 1. ; *-- Coefficient d'élimination : EpsElim = .1 ; *-- Précision de la machine : EpsPrec = 1.D-14; * ============ * | MAILLAGE | * ============ * Dimensions (m) : * ---------------- LX1 = 1.; LXM = 5.; LY1 = 4.; LY2 = 5.; LY3 = 8.; LYM = 12.; * Découpages : * ------------ N = 1; NX = 'ENTIER' (N * LXM); NY = 'ENTIER' (N * LYM + 1); NX2 = NX - NX1; NY = NY1 + NY2 + NY3 + NY4; * Points : * -------- p0 = 0. 0.; p1 = LXM 0.; p2 = LXM LY3; p3 = LXM LYM; p4 = 0. LYM; p5 = 0. LY3; p6 = 0. LY2; p7 = 0. LY1; p8 = LX1 LY1; p9 = LX1 LY2; p10 = LXM LY1; p11 = LXM LY2; * Droites : * --------- 'OPTION' 'COULEUR' 'BLAN'; D4D5 = 'DROITE' P4 NY4 P5; D5D6 = 'DROITE' P5 NY3 P6; D6D7 = 'DROITE' P6 NY2 P7; D7D0 = 'DROITE' P7 NY1 P0; D2D5 = 'DROITE' P2 NX P5; 'OPTION' 'COULEUR' 'TURQ'; D0D1 = 'DROITE' P0 NX P1; D1D10 = 'DROITE' P1 NY1 P10; D10D11= 'DROITE' P10 NY2 P11; D11D2 = 'DROITE' P11 NY3 P2; D2D3 = 'DROITE' P2 NY4 P3; D3D4 = 'DROITE' P3 NX P4; D7D8 = 'DROITE' P7 NX1 P8; D8D9 = 'DROITE' P8 NY2 P9; D9D6 = 'DROITE' P9 NX1 P6; D10D8 = 'DROITE' P10 NX2 P8; D11D9 = 'DROITE' P11 NX2 P9; D2D5 = 'DROITE' P2 NX P5; D8D7 = 'INVERSE' D7D8; D8D10 = 'INVERSE' D10D8; D9D8 = 'INVERSE' D8D9; D6D9 = 'INVERSE' D9D6; D9D11 = 'INVERSE' D11D9; D5D2 = 'INVERSE' D2D5; D4D3 = 'INVERSE' D3D4; *-- Pour les conditions aux limites : LInf = D0D1; Lsup = D3D4; LDroit = D1D10 ET D10D11 ET D11D2 ET D2D3; LGau = 'INVERSE' (D4D5 ET D5D6 ET D6D7 ET D7D0); *-- Pour faire la somme des flux : * pour le tranfert d'activité (loin des conditions aux limites) : LFlux = D5D2; * Surfaces maillées : * ------------------- SActif = 'ORIENTER' ('COULEUR' ('DALLER' D7D8 D8D9 D9D6 D6D7) 'ROUG') ; SFond = 'ORIENTER' ('COULEUR' ('DALLER' D2D3 D3D4 D4D5 D5D2) 'VERT') ; SCoeur = 'ORIENTER' ('COULEUR' ( ('DALLER' D0D1 D1D10 (D10D8 ET D8D7) D7D0) ET ('DALLER' D8D10 D10D11 D11D9 D9D8) ET ('DALLER' (D6D9 ET D9D11) D11D2 D2D5 D5D6) ) 'TURQ' ) ; SGran = 'COULEUR' (SCoeur et SFond) 'TURQ' ; Mtot = SActif ET SGran; * * Elements contenant tous les points de calcul QGau ET QInf ET QDro ET QSup) ; * Domaines : * ---------- * Modèle (Mo) : MoHydro = 'MODELE' QMtot DARCY ISOTROPE ; MoFond = 'MODELE' QFond DARCY ISOTROPE ; MoActif = 'MODELE' QActif DARCY ISOTROPE ; MoGran = 'MODELE' QGran DARCY ISOTROPE ; MoInf = 'MODELE' QInf DARCY ISOTROPE ; MoDro = 'MODELE' QDro DARCY ISOTROPE ; MoSup = 'MODELE' QSup DARCY ISOTROPE ; MoGau = 'MODELE' QGau DARCY ISOTROPE ; MoFlux = 'MODELE' QLFlux DARCY ISOTROPE ; * Longueurs, Normales et Orientations des arêtes du domaine ; * Création des normales à la ligne sur laquelle on mesure les flux : DFluxTIT = 'CHAINE' 'la ligne y=' 'FORMAT' '(F5.0)' * Points où l'on suivra la concentration : * ---------------------------------------- PEvol = 'TABLE'; * Centre du combustible : PEvol.1 = 'TABLE'; PEvol.1 .'P' = 'CENTRE'; PEvol.1 .'M' = ( (.5 * LX1) ((LY2 + LY1) / 2.) ); PEvol.1 .'M' = CeHydro 'POINT' 'PROC' (PEvol.1 .'M'); * Juste après la transition aval : PEvol.2 = 'TABLE'; PEvol.2 .'T' = 'CHAINE' 'post-transition aval' ; PEvol.2 .'P' = 'CENTRE'; PEvol.2 .'M' = CeHydro 'POINT' * Lignes où capturer les évolutions des concentrations : * ------------------------------------------------------ LEvol = 'TABLE'; pt = CeHydro 'POINT' 'PROC' SI (&Bcl8 > 2); FINSI; SI (&Bcl8 'EGA' 2); FINSI; pt0 = pt; 'FIN' Bcl8; 'OUBLIER' pt0; 'OUBLIER' pt; LEvol.1 = 'TABLE'; LEvol.1 .M = 'COULEUR' LGauC 'BLAN'; LEvol.1 .P = 'CENTRE'; LEvol.1 .L = 'Y (m)'; LEvol.1 .T = 'CHAINE' 'longitudinale' ; * =============== * | HYDRAULIQUE | * =============== * La donnée est U. Pour obtenir VDarcy et QF, on simule une résolution * de Darcy. On prend pour cela K = 1 et grad h = U : * Matériau associé (Ma) : MaHydro = 'MATERIAU' MoHydro 'K' 1.; * Matrice hybride élémentaire : * Trace de Concentration : THHydro = (-1.) * (UXImp * XX) - (UYImp * YY) + Un; * Concentration : HHydro = (-1.) * (UXImp * XX) - (UYImp * YY) + Un; * Flux et vitesses : * ============= * | TRANSPORT | * ============= * Modèle propre au transport : * ---------------------------- MoTransp = 'MODELE' QMtot DARCY ISOTROPE ; * Matrice Porosité cinématique (Type ChamElem) : * ---------------------------------------------- * Matrice coef. de retard (Type chpo centre ou scalaire) : * --------------------------------------------------------- Maret1 = CofRetar ; * Porosité * volume de maille * ---------------------------- * Temps : * ------- * Temps à calculer 'REMPLACER' LiTCalc NTCalc Tfin; * Ecriture de ces temps sous forme de table ; TabTCalc = 'TABLE'; 'REPETER' Bcl26 NTCalc; Id = &Bcl26 - 1; TabTCalc.Id = Tps; 'FIN' Bcl26; * Temps sauvegardés LiTSauv = LiTCalc ; NTSauv = NTCalc ; * Temps de tracage des champs * Temps de tracage des évolutions LiTEvol = litsauv ; * Temps servant à la création des chargements TSup = 1.2 * TFin; DelTDef = 0.001 * TSup; * ==================================== * | CONSTRUCTION DES DONNEES DE BASE | * ==================================== * Dissolution / Libération ; * -------------------------- *-- Matrice Limite de solubilité ; * Variation exponentielle décroissante de la source vers l'aval : Sup2 = 'POINT' YY 'EGINF' LY2; Sup3 = 'POINT' YY 'SUPERIEUR' LY2; a = ('LOG' (CSat2 / CSat1)) / (LYM - LY2); MaSol3 = CSat1 * ('EXP' (a * YY3)); MaSol1 = MaSol2 ET MaSol3; * Matériau associé au transport : * ------------------------------- * Terme diffusif pur (diffusivité effective) = Porosité * Diffusivité : DifEff = DifMolec * FacForme * MaPor; MaTransp =Difeff; * Conditions Initiales : * ---------------------- *-- Traces de concentration (quelconque car le transport est implicité). *-- Concentration aux centres des éléments (sert à définir la quantité * initiale d'élément) : 'NATURE' 'DISCRET'; Conc0 = Conc01 ET Conc02; Conc0 = 'NOMC' *-- Flux diffusif initial (aux centres des faces) - décoratif puisque la * diffusion est implicite : *-- Précipité : SI Solub; 'NATURE' 'DISCRET'; Prec0 = Prec01 ET Prec02; Prec0 = 'NOMC' FINSI; *-- Libération de soluté à partir du précipité (décoratif aussi): SI Solub; FINSI; * Conditions aux limites (type CHARGEMENT) : * ------------------------------------------ * Concentration imposée en amont et en aval, flux nul ailleurs. 'NATURE' 'DISCRET'; ChgCL = 'CHARG' CCL * ============== * | Résolution | * ============== *-- Table de transport : Transp = 'TABLE'; Transp.'TEMPS' = 'TABLE'; Transp.'TRACE_CONC' = 'TABLE'; Transp.'INTCONC' = 'TABLE'; Transp.'CONCENTRATION' = 'TABLE'; Transp.'FLUXDIFF' = 'TABLE'; Transp.'FLUXCONV' = 'TABLE'; SI Solub; Transp.'PRECIPITE' = 'TABLE'; Transp.'DISSOLUTION' = 'TABLE'; FINSI; Transp.'SOUSTYPE' = 'DARCY_TRANSITOIRE'; Transp.'MODELE' = MoTransp; Transp.'CARACTERISTIQUES' = MaTransp; Transp.'POROSITE' = MaPor; Transp.'COEF_RETARD' = MaRet1; Transp.'LANGMUIR' = FSat; SI SoluL; Transp.'LIMITE_SOLUBILITE' = MaSol1; FINSI; SI SoluP; Transp.'COEF_DISSOLUTION' = MaCoDis1; FINSI; * Conditions initiales : Transp.'TEMPS'. 0 = TIni; Transp.'INTCONC'. 0 = 0.D0 * Conc0; Transp.'CONCENTRATION'. 0 = Conc0; Transp.'FLUXDIFF'. 0 = QFDif0; Transp.'FLUXCONV'. 0 = QFDif0; SI Solub; Transp.'PRECIPITE'. 0 = Prec0; Transp.'DISSOLUTION'. 0 = Libe0; FINSI; * Conditions aux limites : Transp.'TRACE_IMPOSE' = ChgCL; * Paramètres numériques : Transp.'TYPDISCRETISATION' = 'EFMH'; Transp.'DECENTR' = FAUX; Transp.'THETA_DIFF' = TetaDif; Transp.'THETA_CONVECTION' = TetaCnv; SI SoluP; Transp.'THETA_DISS' = TetaDis; FINSI; SI ('EGA' Methode 'Point fixe Dissolution'); Transp.'EPSILON' = EpsSolub; Transp.'ITMAX' = NbItMax; FINSI; Transp.'TEMPS_CALCULES' = LiTCalc; Transp.'TEMPS_SAUVES' = LiTSauv; TRANSP . 'METHINV' = TABLE; TRANSP . 'METHINV' . TYPINV = 3; TRANSP . 'METHINV' . PRECOND = 3; * ========== * | CALCUL | * ========== TRANSGEN Transp; * =================== * | POST-TRAITEMENT | * =================== MESS ' '; MESS ' '; IndTSauv = 'INDEX' (Transp.temps); * Préparation tracé : * ------------------- * Calcul du flux à travers une certaine ligne : * --------------------------------------------- * Les propriétés de la ligne sont stockées dans DFlux et NleFlux. * Le nom de la ligne doit etre mis dans DFluxTIT . FlInt = 0.; liabs2 = 'ENLEVER' litcalc 1; 'REPETER' Bcl21 (NTSauv - 1); i = &Bcl21 + 1; Id = IndTSauv.i; Tps = Transp.Temps.Id; Id1 = IndTSauv.(i - 1); Tp1 = Transp.Temps.(id - 1); dt = Tps - Tp1; *-- Flux diffusif et convectif à l'instant d'indice Id * (diffusion implicite TetaDif et convection implicite TetaCnv) : * méthode par produit scalaire flux * normale sur 1 ligne * Débit diffusif sortant : DebD1 = ((1. - TetaDif) * Transp.FLUXDIFF.Id1) + (TetaDif * Transp.FLUXDIFF.Id); DebD3 = 'RESULT' (DebD2 * Ori2); FlD = ('MAXIMUM' DebD3); Fl = FlD; * Débit convectif sortant : THCnv = ((1. - TetaCnv) * Transp.FLUXCONV.Id1) + (TetaCnv * Transp.FLUXCONV.Id); DebC1 = THCnv ; DebC3 = 'RESULT' (DebC2 * Ori2); FlC = ('MAXIMUM' DebC3); Fl = FlC + FlD; FlInt = FlInt + (Fl * dt); SI (i 'EGA' 2); SINON; LiFlC = 'INSERER' LiFlC (i - 1) FlC; LiFlD = 'INSERER' LiFlD (i - 1) FlD; LiFl = 'INSERER' LiFl (i - 1) Fl; LiFlI = 'INSERER' LiFlI (i - 1) FlInt; FINSI; 'FIN' Bcl21; * Tracé : * ------ * Décalage des champs les uns par rapport aux autres : Decal1 = (1.2 * LXM) 0.; Decal2 = (2.4 * LXM) 0.; * Tracé du champ de limite de solubilité : * ---------------------------------------- SI (TrLimSol ET SoluL); 'TITRE' 'Limite de solubilite'; 'TRAC' MoTransp MaSol2 LTrame; FINSI; * Tracé des profils de conc, prec, diss le long des lignes choisies : * ------------------------------------------------------------------- SI TrLEvol; IndLEvol = 'INDEX' LEvol; TabEvlC = table; SI Solub; TabEvlP = table; TabEvlL = table; Finsi; * pour chaque ligne i où suivre les valeurs : i = IndLEvol.&Bcl; * détermination du nom de la composante à suivre et évolution de * la limite de solubilité : si ('EGA' (LEvol.i.'P') 'CENTRE'); mot1 = 'H'; finsi; mot1 = 'TH'; finsi; si ('EGA' (LEvol.i.'P') 'SOMMET'); mot1 = 'SCAL'; finsi; * Evolution des concentrations : TitDesC = 'CHAINE' 'Concentration ' (LEvol.i.'T') ; * Adjonction de la limite de solubilité : si ('EGA' (LEvol.i.'P') 'CENTRE'); finsi; si ('EGA' (LEvol.i.'P') 'SOMMET'); finsi; TabEvlC.i.(j + 1) = TabEvlC.i.j; 'FIN' bcl2; TabEvlC.i.1 = table; TabEvlC.i.1 .'VALEUR' = EvSatL ; TabEvlC.i.1 .'LEGEND1' = 'Csat' ; TabEvlC.i.1 .'LEGEND2' = ' '; finsi; * DESTRA (TabEvlC.i) 'MIMA' 'AXES' * 'TITR' TitDesC 'TITX' (LEvol.i.'L') 'TITY' 'C (mol/l)' * 'YBOR' 0. CSat1 ; * Evolution des précipités : TitDesP = 'CHAINE' 'Precipite ' (LEvol.i.'T') ; 'TITX' (LEvol.i.'L') 'TITY' 'P (mol/dm3)' ; * Evolution des dissolutions : TitDesL = 'CHAINE' 'Dissolution ' (LEvol.i.'T') ; 'TITX' (LEvol.i.'L') 'TITY' 'L (mol/dm3/an)' ; Finsi; 'FIN' bcl; FINSI; * Tracé des évolutions de conc, prec, diss aux points choisis : * ------------------------------------------------------------- * (L'indice 0 est réservé à un point de la source) IndPEvol = 'INDEX' PEvol; TabEvpC = table; SI Solub; TabEvpP = table; TabEvpL = table; Finsi; * pour chaque point i où suivre les valeurs : i = IndPEvol.&Bcl; * détermination du nom de la composante à suivre et évolution de * la limite de solubilité : si ('EGA' (PEvol.i.'P') 'CENTRE'); mot1 = 'H'; finsi; mot1 = 'TH'; finsi; si ('EGA' (PEvol.i.'P') 'SOMMET'); mot1 = 'SCAL'; finsi; * Evolution des concentrations : TitDesC = 'CHAINE' 'Concentration ' (PEvol.i.'T') ; * Adjonction de la limite de solubilité : si ('EGA' (PEvol.i.'P') 'CENTRE'); finsi; si ('EGA' (PEvol.i.'P') 'SOMMET'); finsi; TabEvpC.i.(j + 1) = TabEvpC.i.j; 'FIN' bcl2; TabEvpC.i.1 = table; TabEvpC.i.1 .'VALEUR' = EvSatP ; TabEvpC.i.1 .'LEGEND1' = 'Csat' ; TabEvpC.i.1 .'LEGEND2' = ' '; FINSI; * DESTRA (TabEvpC.i) 'MIMA' 'AXES' * 'TITR' TitDesC 'TITX' 't (an)' 'TITY' 'C (mol/l)' * 'YBOR' 0. CSat1 'XBOR' Tini TFin ; * Evolution des précipités : TitDesP = 'CHAINE' 'Precipite ' (PEvol.i.'T') ; * DESTRA (TabEvpP.i) 'MIMA' 'AXES' 'TITR' TitDesP * 'TITX' 't (an)' 'TITY' 'P (mol/dm3)' * 'XBOR' Tini TFin; * Evolution des dissolutions : TitDesL = 'CHAINE' 'Dissolution ' (PEvol.i.'T') ; * DESTRA (TabEvpL.i) 'MIMA' 'AXES' 'TITR' TitDesL * 'TITX' 't (an)' 'TITY' 'L (mol/dm3/an)' * 'XBOR' Tini TFin; Finsi; 'FIN' bcl; * Tracé des champs de conc, prec, aux différents instants : * --------------------------------------------------------- * On déplace les supports des chpos pour tracer les fractions de * précipité à côté des concentrations : TrPrec = TrPrec ET Solub; *-- On trace pour chaque temps choisi : SI (TrConc OU TrPrec); *-- Echelles : SI TrConc; SI SoluL; CMinD = 'MINIMUM' MaSol1; CMaxD = 'MAXIMUM' MaSol1; SINON; CMinD = 0.; CMaxD = 0.; FINSI; FINSI; 'REPETER' Bcl17 NTSauv; i = &Bcl17; Id = IndTSauv.i; SI TrConc; CMinD = 'MINIMUM' CMaxD = 'MAXIMUM' FINSI; 'FIN' Bcl17; SI TrConc; FINSI; 'REPETER' Bcl3 NTGrph; Tps = Transp.Temps.Id; TitGraph = ' ' ; SI TrConc; TitGraph = 'CHAINE' TitGraph 'Solute '; FINSI; SI (TrConc ET TrPrec); TitGraph = 'CHAINE' TitGraph 'et '; FINSI; SI TrPrec; TitGraph = 'CHAINE' TitGraph 'Precipite '; FINSI; TitGraph = 'CHAINE' TitGraph 'a t=' Tps ' ans '; 'TITRE' TitGraph; SI TrConc; MoTot = MoTransp; Tot2 = Conc2; FINSI; SI TrPrec; SI (NON TrConc); Tot2 = Prec2; MoTot = MoTra2; SINON; Tot2 = Tot2 ET Prec2; MoTot = MoTot ET MoTra2; FINSI; FINSI; SI (('MINIMUM' Tot2) < (('MAXIMUM' Tot2) - EpsPrec)); SI (TrConc ET (NON TrPrec)); SI (('MINIMUM' Conc2) < (('MAXIMUM' Conc2) - EpsPrec)); 'TRACER' Motot conc2 echc0 LTrame; FINSI; SINON; SI TrConc; 'TRACER' MoTot Tot2 echc0; SINON; 'TRACER' MoTot Tot2 echc0 ltra2; FINSI; FINSI; FINSI; 'FIN' Bcl3; FINSI; * Tracé des champs de dissolution : * --------------------------------- TrLib = TrLib ET Solub; SI TrLib; 'REPETER' Bcl22 (NTgrph - 1); Tps = Transp.Temps.Id; Id2 = Id + 1; Tp2 = Transp.Temps.Id2; dt = Tp2 - Tps; TitGraph = 'CHAINE' 'Quantite dissoute entre ' Tps ' et ' Tp2 ' annees (mol/m3/an)'; 'TITRE' TitGraph; Libe2 = Transp.Dissolution.Id2; SI ((('MAXIMUM' Libe3) - ('MINIMUM' Libe3)) > EpsPrec); 'TRAC' MoTransp Libe3 Ltrame ; FINSI; 'FIN' Bcl22; FINSI; * Tracé du flux traversant la ligne choisie : * ------------------------------------------ SI TrFlux ; TabDess = 'TABLE'; TabDess.1 = 'MARQ CARR' ; TabDess.'TITRE' = 'TABLE'; TabDess.'TITRE' . 1 = 'Debit_Convectif'; TabDess.'TITRE' . 2 = 'Debit_Diffusif'; TabDess.'TITRE' . 3 = 'Debit_Total'; EvTot = EvFlC ET EvFlD ET EvFl; 'mol/l/an' 'LEGE' 'AXES' 'XBOR' TIni TFin; FINSI; * =========================== * | TEST DE BON DEROULEMENT | * =========================== * Le test se fait en comparant le flux total traversant la ligne avec * une liste obtenue par un calcul préalable. *liflsav = 'PROG' .68457 1.1205 1.3157 1.3279 1.2973 1.1393 .79427 * .48185 .34038 .24040 ; 7.53200E-02 6.57577E-02 5.75179E-02 5.04195E-02 ; *'LISTE' lifl; err1 = 'MAXIMUM' ('ABS' (lifl - liflsav)) / ('MAXIMUM' liflsav); si (err1 > CRIT1); 'ERREUR' 5; 'OPTION' donn 5 ; sinon; 'ERREUR' 0; finsi; Fin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales