Télécharger unsat_lindiriEFMH.dgibi
* fichier : unsat_lindiriEFMH.dgibi ************************************************************************ ************************************************************************ ******************************************************************** GRAPH = faux ; ******************** CAS TEST : unsat_lindiri.dgibi ********************** * * Test de fonctionnement de DARCYSAT en 1D avec effet de gravité * en regime transitoire. * *------------------------------------------------------------------- * * A. GENTY - DM2S/SFME/LSET - 03/2009 * * ================================================================== * Infiltration d'eau a pression d'eau imposee (h2<=0) depuis la * surface dans un milieu 1D non sature limite par une surface * inferieure a pression d'eau (h0<=0) imposee. * * h = h2 (charge H = h2 + L) * z=L --------------------------- * I I * I I * I I * I I * I hi = solution du regime I * I permanent avec h1 I * I impose en z=L I * I (charge Hi = hi + z) I * flux nul I I flux nul * I I * I I * I I * I I * I I * I I * z=0 --------------------------- * x=0 h = h0 (charge H = h0) x=x0 * * * La solution analytique (en pression) du probleme est obtenue * par linearisation (Cf. Srivastava et Yeh, 1991, WRR, Vol 27, * N 5, pp 753-762) puis par separation des variables. * ================================================================== * * - conditions initiales : * > la pression initiale hi correspond a la solution du probleme * en regime permanent avec h=h1 impose en z=L. * * - conditions aux limites : * > la pression sur la frontiere inferieure du domaine est imposee * a h = h0 (charge H = h + z = h0) * > la pression sur la frontiere superieure du domaine est imposee * a h = h2 (charge H = h2 + L) * > les autres faces exterieures du domaine sont imposees a flux nul * * =================================================================== * Les options de modélisation declarées dans la table transmise à * la procédure DARCYSAT sont les suivantes : * * - les effets gravitationnels sont pris en compte : * FORCE_GRAVITE = 1. * * - Le calcul est réalisé avec l'option de calcul de pas de temps * fixe dt = 0.1 h sur une duree totale 8 h. * * - Les options numeriques testees sont les suivantes: * EFMH DECENTRE TYPINV = 3 PRECOND = 5 * * - La précision de convergence demandée est de 1e-05 m * * =================================================================== * RESULTATS ATTENDUS * * Le champs de pression sera compare a la solution analytique a * 8 heures par l intermediare des erreurs L_infini et L_2. * Une erreur L2 inferieure a 1.2 10-2 est attendue. * =================================================================== * 'OPTION' 'ECHO' 1 ; 'SAUTER' 'PAGE'; * 'TITRE' 'Transitoire homogene 1D : Dirichlet' ; *================================================ * Parametres du calcul *--------------------- * longueur milieu (m) LONG1 = 1.D0 ; * largeur du milieu (m) (libre car pheno 1D) LARG1 = 1.D0 ; * alpha (m-1) pour la loi exponentielle ALPHA1 = 10.D0 ; * permeabilite a saturation (m/s) KSAT1 = 0.01D0 / 3600.D0 ; * porosite (-) PORO1 = 0.4D0 ; * teneur en eau residuelle (-) TRESID1 = 0.06D0 ; * pression imposee en bas (m) PSI0 = 0.D0 ; * pression imposee en haut initiale (m) PSI1 = -1.1D0 ; * pression imposee en haut t>0 (m) PSI2 = -1.7D0 ; ; *================================================ *------------------------------------------------------------------- *--------------------- Création du maillage 2D --------------------- * *- Niveau de rafinement *- Nombre de mailles = 50 * NIV1 *- Pas de temps = (Temps final) / (20 * (NIV1**2)) NIV1 = 2 ; *- Densités de mailles NDX1 = 1 ; NDY1 = NIV1 * 50 ; * *- Cotes du domaine rectangulaire (x0 et z0) XCA1 = LARG1 ; YCA1 = LONG1 ; * *- Création des points du domaine A1 = 0. 0. ; A2 = XCA1 0. ; A3 = XCA1 YCA1 ; A4 = 0. YCA1 ; * *- Création des lignes LIN1 = DROIT NDX1 A1 A2 ; LIN2 = DROIT NDY1 A2 A3 ; LIN3 = DROIT NDX1 A3 A4 ; LIN4 = DROIT NDY1 A4 A1 ; * *- Faces droite et gauche LDROIT = LIN2 ; LGAUCH = LIN4 ; * *- Création du domaine MASSIF0 = DALLER LIN1 LIN2 LIN3 LIN4 PLAN ; * *-Tracé du maillage avec faces sup et inf pour conditions limites 'SI' GRAPH ; 'FINSI' ; * *************************************************************************** *************************************************************************** * *- Création des maillages contenant tous les points QFTOT = 'CHANGER' MASSIF0 'QUAF' ; QFSORB = 'CHANGER' LBAS 'QUAF' ; QFSORH = 'CHANGER' LHAUT 'QUAF' ; * 'ELIMINATION' 0.00001 (QFTOT 'ET' QFSORB 'ET' QFSORH) ; * *------------------------------------------------------------------- *----------------------- Création du Modèle ------------------------ * MODHYB = 'MODELE' QFTOT 'DARCY' 'ISOTROPE' ; MODSORB = 'MODELE' QFSORB 'DARCY' 'ISOTROPE' ; MODSORH = 'MODELE' QFSORH 'DARCY' 'ISOTROPE' ; * *------------------------------------------------------------------- *--------------- Conditions aux limites (blocages) ------------------ * * *- surface inferieure *-------------------- * Pression imposee P = HN0 HN0 = PSI0 ; * On impose la charge H = P + z (z=0 en bas) * *- face superieure *----------------- *- Pression imposee initial P = HN1 HN1 = PSI1 + LONG1 ; *- Pression imposee P = HN2 HN2 = PSI2 + LONG1 ; HN2P = HN2 + LONG1 ; * On impose la charge H = P + z (z=L en haut) * *-------------------------------------------------------------------- *----------------- initialisation des inconnues --------------------- * *- charge initiale (en metres d'eau) dans le domaine (H = P + z) * Pression h ZAD1 = ZCC * ALPHA1 ; * L1 = ALPHA1 * LONG1 ; CST1 = EXP(ALPHA1 * HN0) ; CST2A = EXP(ALPHA1 * HN1) ; CST2B = EXP(ALPHA1 * HN2) ; CST3 = 1.0D0 - (EXP(-1.0D0*L1)) ; CST4 = (CST1 - CST2A) / CST3 ; CST5 = (CST1 - CST2B) / CST3 ; * EAP1 = ((EXP(-1. * ZAD1)) - 1.0D0) * CST4 + CST1 ; PM = (LOG(EAP1)) / ALPHA1 ; * * Traces de controle condition initiale en pression * valeur aux noeuds ZAD2 = ZSS * ALPHA1 ; EAP2 = ((EXP(-1. * ZAD2)) - 1.0D0) * CST4 + CST1 ; EAP3 = ((EXP(-1. * ZAD2)) - 1.0D0) * CST5 + CST1 ; PM2 = LOG(EAP2) * (1. / ALPHA1) ; PM3 = LOG(EAP3) * (1. / ALPHA1) ; * 'SI' GRAPH ; TRAC CHP2 MASSIF0 ; 'FINSI' ; * 'SI' GRAPH ; TRAC MODHYB CHP1 ; 'FINSI' ; * 'SI' GRAPH ; DESS EVIN0 ; 'FINSI' ; * 'SI' GRAPH ; 'FINSI' ; * * * Charge H HM = PM '+' ZCC; * * *- Flux * *-------------------------------------------------------------------- *----------------------------- Calcul ------------------------------- * * --------------------------- * = Table DARCY_TRANSITOIRE = * --------------------------- *- initialisation table SATUR = 'TABLE' ; SATUR. 'TEMPS' = 'TABLE' ; SATUR. 'TRACE_CHARGE' = 'TABLE' ; SATUR. 'CHARGE' = 'TABLE' ; * *- données géométriques SATUR. 'SOUSTYPE' = 'DARCY_TRANSATUR' ; SATUR. 'MODELE' = MODHYB ; * *- instant initial SATUR. 'TEMPS' . 0 = 0. ; SATUR. 'CHARGE' . 0 = H0 ; * *- flux impose *SATUR. 'FLUX_IMPOSE' = VALI1 ; *********************************************************** * SEULS GROS CHGTS GBM *********************************************************** * *- conditions aux limites et chargements * GBM - MODIFIE SATUR . 'TRACE_IMPOSE' = VALI0 ET VALI2 ; * * GBM - NOUVEAU SATUR . 'TYPDISCRETISATION' = 'EFMH' ; SATUR . 'DECENTR' = VRAI ; * * gravite SATUR . 'FORCE_GRAVITE' = 1.D0 ; * ************************************************************ *- données physiques ************************************************************ *- Loi de permeabilite relative (exponentielle de h) LoiP = 'TABLE' 'EXPONENTIELLE'; LoiP. 'ALPHA' = ALPHA1 ; LoiP. 'PERMSAT' = KSAT1 ; LoiP. 'COEF_N' = 1.0 ; LoiP. 'COEF_C' = 1.0 ; SATUR.'LOI_PERMEABILITE' = 'TABLE' LoiP ; * ***************************************************************** ***************************************************************** *- Loi de succion (exponentielle de h) LOIS = 'TABLE' 'EXPONENTIELLE' ; LOIS.'PORO' = PORO1 ; LOIS.'TERESIDU' = TRESID1 ; LOIS.'COEF_N' = 1.0 ; LOIS.'COEF_C' = 1.0 ; LOIS.'BHETA' = ALPHA1 ; SATUR . 'LOI_SATURATION' = 'TABLE' LOIS ; * ***************************************************************** ***************************************************************** *- données numériques * * Temps de calcul final 8 heures TF1 = 8.0D0 * 3600.D0 ; SATUR. 'TEMPS_FINAL' = TF1 ; SATUR. 'HOMOGENEISATION' = 'CHAINE' 'CENTRE' ; SATUR. 'RESIDU_MAX' = 1.D-5 ; SATUR. 'NITER' = 50 ; SATUR. 'MESSAGES' = 2 ; * * SOLVEUR Grad conj, ILU0 TABRES = table METHINV; TABRES . 'TYPINV' = 3; TABRES . 'PRECOND' = 5; * SATUR . 'METHINV' = TABRES; SATUR . 'METHINV' . RESID = 1.D-25; * NBRPAS1 = (20. * (NIV1**2)) ; DELTAT1 = TF1 / NBRPAS1 ; * ********************************************************************* *------------------------- Exécution procédure ---------------------- ********************************************************************* * DARCYSAT SATUR ; * ********************************************************************* * *-Legende des traces TABI1 = TABLE ; TABI1.'TITRE'= TABLE ; TABI1.1 = 'REGU MARQ CARR' ; TABI1.3 = 'REGU MARQ LOSA' ; TABI1.4 = 'REGU MARQ TRIB' ; * *------------------------------------------------------------------- *-------------------------- Extration des charges --------------------- * Dates de traces T44 = SATUR . TEMPS . NDI1 ; CALCTH4 = SATUR . CHARGE . NDI1 ; * *------------------------------------------------------------------- *------------------- Calcul et trace de la pression ---------------- * * * * Trace sur elements 'SI' GRAPH ; TRAC MODHYB CALOO4 ; 'FINSI' ; * * Trace sur noeuds CONT1 = CONTOUR MASSIF0 ; * 'SI' GRAPH ; 'FINSI' ; * * Trace 1D sur les noeuds * * 'SI' GRAPH ; 'FINSI' ; * *-------------------------------------------------------------------------- * ========================================================================= * Solution analytique Richards lineaire Dirichlet * u = exp(alpha.h) * u(Z,t) = us(Z) + Somme ( Bn . sin(n.Pi.Z/L) . exp(-Z/2) . exp(-p.p.t) ) *-------------------------------------------------------------------------- * * recuperation des coordonnees Z aux centres * * constantes utiles DATE1 = T44 ; TAD1 = (ALPHA1 * KSAT1 * DATE1) / (PORO1 - TRESID1) ; KZER1 = LoiP. 'PERMSAT' ; ALPHA1 = ABS((LoiP. 'ALPHA')) ; HZER1 = HN0 ; LNEW1 = ALPHA1 * LONG1 ; * * Z addimentionnel ZCC1 = ZCCZ1 * ALPHA1 ; * *---------------------------------------------------------------------------- * Calcul du terme stationaire us(Z) * us(Z) = TT1(Z) = exp(alpha*h0) - * (1-exp(-z))*(exp(alpha*h0)-exp(alpha*h2))/(1-exp(-L)) *---------------------------------------------------------------------------- CC1 = EXP(ALPHA1*HN0) ; CC2 = EXP(ALPHA1*HN1) ; CC3 = EXP(ALPHA1*HN2) ; CC4 = EXP(-1.D0 * LNEW1) ; CUZ1 = (CC3 - CC1) / (1.D0 - CC4) ; TT1 = CC1 + (CUZ1 * (1.D0 - (EXP(-1.D0 * ZCC1)))) ; CSTB1 = (CC2 - CC3) / (1.D0 - CC4) ; BN1 = 2.D0 / LNEW1 ; * *---------------------------------------------------------------------------- * calcul du terme Somme * Somme (Bn sin(n.Pi.z/L) exp(-z/2) exp(-p*p*t) * Remarque: l'indice n=0 n'est pas calcule dans la somme *---------------------------------------------------------------------------- * constantes trigo pour calcul PI1 = PI ; CSD1 = 180.D0 / PI1 ; * * calcul de exp(-Z/2) CSTE2 = EXP(TLZ1) ; * CSL1 = EXP(0.5D0 * LNEW1) ; CSL2 = (CC3 - CC2) ; NBOUC1 = 1000 ; NNN1 = 1.D0 ; SOM1 = 0.D0 ; *--------------------------------------------- * calcul de la somme *--------------------------------------------- REPETER BOU1 NBOUC1 ; * * Calcul des L_n et somme en sin(L_n.Z), * avec ici L_n = n.Pi/L * ******************************* LM1 = NNN1 * PI1 / LNEW1 ; * ******************************* * calcul de SI1 = sin(L_n Z) * en degres MU2Z = MU1Z * CSD1 ; SI1 = SIN(MU2Z) ; *************************************** * calcul de exp(-t p**2) * avec p**2 = 1/4 + L_n**2 LM2 = LM1 * LM1 ; PCAR1 = 0.25D0 + LM2 ; TEX1 = -1.D0 * TAD1 * PCAR1 ; NP1 = EXP(TEX1) ; *************************************** * calcul de Bn * avec Bn = -(2/L) . (exp(alpha.h1)-exp(alpha.h2)) . * ((-1)**n) . L_n . exp(L/2) / p**2 PMU1 = (-1.D0) ** NNN1 ; BN2 = (PMU1 * LM1) / (0.25D0 + LM2) ; *************************************** * calcul produit total et somme COEF1 = SI1 * NP1 * BN2 ; SOM1 = SOM1 + COEF1 ; NNN1 = NNN1 + 1. ; FIN BOU1 ; *************************************** * fin de calcul du terme somme *----------------------------------------------- * * Calcul de u KTOT2 = BN1 * SOM1 * CSTE2 * CSL2 * CSL1 ; KTOT1 = KTOT2 + TT1 ; * ************************************************************** * * calcul de h associe a u VPHK2 = LOG(KTOT1) ; VCH1 = VPHK2 / ALPHA1 ; * Trace h sur elements 'SI' GRAPH ; TRAC MODHYB HFI1E ; 'FINSI' ; * Trace h sur noeuds 'SI' GRAPH ; 'FINSI' ; * ************************************************************** * 'SI' GRAPH ; 'FINSI' ; ************************************************************** * * Calcul de l'erreur relative par element (en pression) error = ((SAVCAL '-' VCH1) '/' VCH1) 'ABS' ; 'SI' GRAPH ; 'TRACER' modhyb error; 'FINSI' ; * * Erreur Linfini NUME1 = ABS(SAVCAL '-' VCH1) ; DENU1 = ABS(VCH1) ; ERR1 = NUME1 / DENU2 ; 'SI' GRAPH ; TRAC MODHYB ER1C ; 'FINSI' ; * MESS 'ERREUR L INFINI' ERINF1; * ********************** * Calcul de l'erreur L2 par element (en pression) ERRL21 = NUME1 ** 2.D0 ; ERRL22 = DENU1 ** 2.D0 ; ERRL2 = (ERRL21 '/' ERRL22) ** 0.5D0 ; 'SI' GRAPH ; TRAC MODHYB ERRL3 ; 'FINSI' ; * * Calcul erreur L2 ERNUM1 = ERRL21 * SURF1 ; ERDEN1 = ERRL22 * SURF1 ; MESS 'ERREUR L2' ERL2 ; * ************************************************************** * Test de non regression sur erreur L2 ERMAX1 = 0.012 ; SI (ERL2 > ERMAX1) ; 'ERREUR' 5; SINON ; 'ERREUR' 0; FINSI ; * *------------------------------------------------------------------- * FIN;
© Cast3M 2003 - Tous droits réservés.
Mentions légales