* fichier : darcy4.dgibi ************************************************************************ ************************************************************************ * ************************** CAS TEST : darcy4.dgibi ****************** * GRAPH = 'N' ; 'SAUT' 'PAGE' ; * *--------------------------------------------------------------------- * TEST DARCY4 * CALCUL DARCY ISOTROPE TRANSITOIRE * AVEC TERME SOURCE * Résolution par une méthode d'éléments finis mixtes hybrides. * * Ce test permet de vérifier le bon fonctionnement des opérateurs * utilisés afin de résoudre les équations de DARCY transitoire par * une méthode d'éléments finis mixtes hybrides dans CASTEM2000. * * On effectue un calcul sur un domaine 2D maillé par des * quadrangles réguliers. Le phénomène étudié est monodimensionnel. * Les conditions aux limites sont de type trace de charge imposée * à gauche du domaine, flux imposé à droite et flux nul en haut et * en bas. * * La solution analytique en charge est un polynome de degré 2 * en x et en t, les variables x et t étant séparées. * La vitesse est donc linéaire en x et indépendante du temps. * Le terme source dépend de x et de t. * * Solution analytique : * H(x,t) = a * t**2 + b * t + c * x**2 + d * x + e * V(x,t) = - K * ( 2. * c * x + d ) * S(x,t) = 2 * a * f * t + b * f - 2 * c * K * * avec K : Conductivité hydraulique ................. 1. * a : Coefficient .............................. -1. * b : Coefficient .............................. 20. * c : Coefficient .............................. -0.01 * d : Coefficient .............................. 2. * e : Coefficient .............................. 10. * f : Coefficient d'emmagasinnement ............ 2. * * Remarque : Ne pas prendre t>40 car h devient négatif et on peut * planter le calcul d'erreur relative. * * Parametres de maillage : * L : longueur du domaine ....................... 100. * H : hauteur du domaine ........................ 1. * INUMX : Nombre d'éléments en x .................... 25 * INUMY : Nombre d'éléments en y .................... 1 car 1D * *---------------------------------------------------------------- * *------------------ * Options generales *------------------ * * * *========= * MAILLAGE *========= * * * d1------------d3 * | | Post-traitement via les lignes b1b3 et c1c3 * b1 c1------c3 b3 b1b3 : Extrémités de la droite joignant les faces * | | c1c3 : Extrémités de la droite joignant les centres * a1------------a3 * * *- Création des points supports des DROITES * L = 100.D0 ; H = 1.D0 ; X0 = 0.D0 ; X1 = L ; Y0 = 0.D0 ; Y1 = Y0 + H ; INUMX = 25 ; INUMY = 1 ; INUM1 = INUMX - 1 ; DL = L / INUMX ; DH = H / INUMY ; Y01 = Y0 + Y1 * 0.5D0 ; DX1 = X1 - X0 / INUMX / 2.D0 ; XG = X0 + DX1 ; XD = X1 - DX1 ; * A1 = X0 Y0 ; A3 = X1 Y0 ; D1 = X0 Y1 ; D3 = X1 Y1 ; B1 = X0 Y01 ; B3 = X1 Y01 ; C1 = XG Y01 ; C3 = XD Y01 ; * *- Création des DROITES frontieres * ELI0 = DH / 10.D0 ; * *- Creation maillage GEOMETRIQUE * QFTOT = CHANGE PTOT2 QUAF ; QFGAU = CHANGE DRGAU QUAF ; QFDRO = CHANGE DRDRO QUAF ; * * * * * ---------------- * = MODELISATION = * ---------------- * *===================================== * CONDITIONS INITIALES : CAS PERMANENT *===================================== * * ----------------------- * = Solution analytique = * ----------------------- A = -1.D0 ; B = 20.D0 ; C = -0.01D0 ; D = 2.D0 ; E = 10.D0 ; F = 2.D0 ; VK = 1.D0 ; * TRACE DE CHARGE PANAF0 = C * XX * XX + ( D * XX ) + E ; * CHARGE PANAC0 = C * XXC * XXC + ( D * XXC ) + E ; * VITESSE VXANA = -1.D0 * VK * ( 2.D0 * C * XXC + D ) ; VANAC = VXANA 'ET' VYANA ; * ---------------- * = Tenseur K = * ---------------- * ------------------------- * = matrice Masse HYBride = * ------------------------- * ------------------------- * = MAtrice globale en TH = * ------------------------- * ----------------------- * = Second membre en TH = * ----------------------- AIRE = DL * DH ; SR0 = -2.D0 * VK * C * AIRE ; * ----------------- * = TH imposée = * ----------------- * ----------------- * = Résolution TH = * * ----------------- CCC1 = HND1A 'ET' BBDRO 'ET' BBGAU ; FFF1 = SMSOUR 'ET' EEDRO 'ET' EEGAU ; * ----------------------------- * = Post-traitement Q, H et V = * ----------------------------- * * * *=================================== * DONNEES SPECIFIQUES AU TRANSITOIRE *=================================== * * * TINI = 0.D0 ; TFINAL = 20.D0 ; TSUP = 1.5D0 * TFINAL ; DELTAT = 1.0D0 ; * ------------------------------------ * = Nouvelles conditions aux limites = * ------------------------------------ * * Définition d'un listreel contenant les valeurs des temps de calcul * Ce LISTREEL sert à définir les chargements variables en temps * * * Valeur imposée à gauche = a*t*t + b*t + e * BLCGE = BBGAU ; VALI0 = 'CHAR' VALGA0 VALI1 = 'CHAR' VALGA1 TDEF2 = TDEF * TDEF ; TPGAU = VALI0 'ET' VALI1 'ET' VALI2 ; * * Flux imposé à droite = -K * ( 2. * c * x + d ) * dh * FLVAL = 2.D0 * C * X1 + D * (-1.D0) * VK * DH ; FLXDRO = 'CHAR' FLDRO * * Définition de la source moyenne par élément sur un pas de temps * s(t) = (2 * a * f * tmoy + b * f - 2 * c * K) * aire * avec aire = aire des éléments * tmoy = t(n+1) - deltat/2 = t(n) + deltat/2 * SRCE01 = B * F - ( 2.D0 * VK * C ) ; SRCE02 = (-1.D0) * F * A * DELTAT ; SR0 = SRCE01 + SRCE02 * AIRE ; SRCVA0 = SRCV10 ; PRSR1 = 2.D0 * A * F * AIRE * TDEF ; CHSRCE = CHSRC0 'ET' CHSRC1 ; * * --------------------------- * = Table DARCY_TRANSITOIRE = * --------------------------- TRANS2 = 'TABLE' ; TRANS2. 'TEMPS' = 'TABLE' ; TRANS2. 'TRACE_CHARGE' = 'TABLE' ; TRANS2. 'CHARGE' = 'TABLE' ; * TRANS2.'SOUSTYPE' = 'DARCY_TRANSITOIRE' ; TRANS2.'MODELE' = MODHYB ; TRANS2.'CARACTERISTIQUES' = MATI1 ; TRANS2.'EMMAGASINEMENT' = COEMM ; * TRANS2. 'TEMPS' . 0 = TINI ; TRANS2. 'TRACE_CHARGE' . 0 = TH1 ; TRANS2. 'CHARGE' . 0 = PCEN1 ; * TRANS2.'BLOCAGE' = BLCGE ; TRANS2.'TRACE_IMPOSE' = TPGAU ; TRANS2.'FLUX_IMPOSE' = FLXDRO ; TRANS2.'SOURCE' = CHSRCE ; * TRANS2.'THETA' = 0.5D0 ; TRANS2.'TEMPS_CALCULES' = LICALC ; TRANS2.'TEMPS_SAUVES' = LISAUV ; * *======================= * Resolution transitoire *======================= * DARCYTRA TRANS2 ; * * *================= * POST-TRAITEMENT *================= * -------------------------- * = Calcul ERREUR ET TRACE = * -------------------------- *-------------------------------------------------------------------- * Dans chaque cas on trace (si GRAPH<>N) *-------------------------------------------------------------------- * Les traces de charge le long de DRMIF (ligne b1b3) * L'erreur relative et l'erreur absolue en Trace de charge * La charge le long de DRMIC (ligne c1c3) * L'erreur relative et l'erreur absolue sur la charge * La Vitesse aux centres des elements (calculé et analytique) * L'erreur relative et l'erreur absolue sur la vitesse au centre *-------------------------------------------------------------------- * * *-------------------------------------------------- * * VISURESU * Calcul des solutions analytiques et des erreurs * Visualisation sur DRMIF et DRMIC des courbes y=f(x) à t fixé * * ISOR1 : Liste des indices de la table TRANS2.'TEMPS' * NTSOR : Nombre de pas de temps sauvegardés * IOK : Booleen indiquant si le critère de précision * demandé est vérifiée (Gestion des erreurs) * IRESU : Compteur interne permettant de récuperer les * indices de table via l'index ISOR1. * ISOR1 = 'INDEX' ( TRANS2 . 'TEMPS') ; IOK = FAUX ; IRESU = 0 ; *-------------------------------------------------- 'REPETER' VISURESU NTSOR ; * IRESU = IRESU + 1 ; INDI1 = ISOR1 . IRESU ; TTRA = TRANS2 . 'TEMPS' . INDI1 ; * Erreurs en trace de charge PANAF1 = A*TTRA*TTRA + (B*TTRA) + (C*XX*XX) + (D*XX) + E ; CALCF1 = TRANS2 . 'TRACE_CHARGE' . INDI1 ; ETPAB1 = CALCD1 - PANAD1 ; ETPAB1 = 'ABS' ETPAB1 ; ETPRE1 = ETPAB1 / PANAD1 ; ETPRE1 = 'ABS' ETPRE1 ; * Erreurs en charge K1 = C * AIRE * AIRE /12.D0 + E ; PANAC1 = A*TTRA*TTRA + (B*TTRA) + (C*XXC*XXC) + (D*XXC) + K1 ; CALC1 = TRANS2 . 'CHARGE' . INDI1 ; EPAB1 = CALC1 - PANAC1 ; EPAB1 = 'ABS' EPAB1 ; EPRE1 = EPAB1 / PANAC1 ; EPRE1 = 'ABS' EPRE1 ; * Erreurs en vitesse ERRV1 = EVI1 - VANAC ; EVRE1 = 'ABS' ( EVAB1 / VDVD ) ; EVAB1 = EVAB1 '**' 0.5D0 ; EVRE1 = EVRE1 '**' 0.5D0 ; * Evolutions des solutions analytiques * Tracés 'SI' ('NEG' GRAPH 'N' ) ; LTITRE = 'TEXTE' 'darcy4 Th temps ' TTRA ; 'TITR' LTITRE ; LTITRE = 'TEXTE' 'darcy4 erreur relative Th temps ' TTRA ; 'TITR' LTITRE ; 'DESS' EV2 ; LTITRE = 'TEXTE' 'darcy4 erreur absolue Th temps ' TTRA ; 'TITR' LTITRE ; 'DESS' EV3 ; LTITRE = 'TEXTE' 'darcy4 h temps ' TTRA ; 'TITR' LTITRE ; LTITRE = 'TEXTE' 'darcy4 erreur relative h temps' TTRA ; 'TITR' LTITRE ; 'DESS' EV5 ; LTITRE = 'TEXTE' 'darcy4 erreur absolue h temps' TTRA ; 'TITR' LTITRE ; 'DESS' EV6 ; LTITRE = 'TEXTE' 'darcy4 erreur relat V temps ' TTRA ; 'TITR' LTITRE ; 'DESS' EV7 ; LTITRE = 'TEXTE' 'darcy4 erreur absolue V temps ' TTRA ; 'TITR' LTITRE ; 'DESS' EV8 ; 'FINSI' ; * *- Gestion ERREUR * LOGRES = IRESU 'EGA' 1 ; 'SI' (LOGRES) ; 'SAUT' 'PAGE' ; 'MESS' ' ERREURS RELATIVES '; 'MESS' ' temps TH H Vc'; 'FINSI' ; 'MESS' ttra ' ' maxtp1 ' ' maxp1 ' ' maxvc1 ; EPS0 = 1.E-04 ; LOG1 = MAXTP1 > EPS0 ; LOG2 = MAXP1 > EPS0 ; LOG3 = MAXVC1 > EPS0 ; L0 = LOG1 'OU' LOG2 'OU' LOG3 ; 'SI' ( L0 ) ; IOK = VRAI ; 'FINSI' ; 'FIN' VISURESU ; * ********************************* *- En cas de tracé uniquement ********************************* * 'SI' ('NEG' GRAPH 'N' ) ; *-------------------------------------------------- * * CONSTAB * (préparation pour VISPTS) * Transformation des champoints TH=f(t) en listreels * * TABEVOL : Table contenant TH=f(t) sous forme de LISTREEL * IRESU : Compteur interne permettant de récuperer les * indices de table via l'index ISOR1. * TABEVOL = 'TABLE' ; IRESU = 0 ; * *-------------------------------------------------- 'REPETER' CONSTAB NTSOR ; IRESU = IRESU + 1 ; INDI1 = ISOR1 . IRESU ; TTRA = TRANS2 . 'TEMPS' . INDI1 ; ETP1 = TRANS2 . 'TRACE_CHARGE' . INDI1 ; TABEVOL . IRESU = ORD1 ; 'SI' ( IRESU 'EGA' 1) ; 'SINO' ; 'FINSI' ; 'FIN' CONSTAB ; *-------------------------------------------------- * * VISPTS * Visualisation des courbes TH=f(t) pour un x fixé * * NTTRA : Nombre de valeurs en temps à considérer * LISTX : Listreel des abscisses * NXTOT : Nombre de points sur la ligne DRMIF * IX : Position dans LISTX du premier point à dépouiller * PASX : Incrément pour le pas suivant à dépouiller * * IX = 5 ; PASX = 10 ; * *-------------------------------------------------- 'REPETER' VISTPS ; * Solution analytique PPROG1 = A * LITRAC * LITRAC + (B * LITRAC) ; PEVOL1 = PPROG0 + PPROG1 ; * Solution calculée ICRB = 0 ; 'REPETER' CONSTR NTSOR ; ICRB = ICRB + 1 ; 'SI' ( ICRB 'EGA' 1 ) ; 'SINO' ; 'FINSI' ; 'FIN' CONSTR ; * Tracés LTITRE = 'TEXTE' 'darcy4 Th en x=' VALX ; 'TITR' LTITRE ; LTITRE = 'TEXTE' 'erreur relative Th x=' VALX ; 'TITR' LTITRE ; ERRTP1 = PEVOL1 - PROG1 / PEVOL1 ; 'DESS' EVOL3 ; * Test de sortie de boucle 'DETR' PROG1 ; IX = IX + PASX ; 'SI' (IX > NXTOT ) ; 'QUITTER' VISTPS ; 'FINSI' ; 'FIN' VISTPS ; * 'FINSI' ; * **************************** * FIN des tracés **************************** * * 'SI' ( IOK ) ; 'SINO' ; 'FINSI' ; * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales