* fichier : fluechnak.dgibi GRAPH = faux ; ******************** CAS TEST : fluechnak.dgibi ********************** * -------------------------------------------------------------------- * * TRANSPORT GEOCHIMIE * * ECHANGE IONIQUE AVEC BILAN DE FLUX * * -------------------------------------------------------------------- 'OPTION' 'ECHO' 0 ; 'SAUTER' 'PAGE'; * repertoire des fichiers "divers" DIVERS = VENV 'CASTEM_DIVERS'; * * emplacement de COMPOM emp1 = 'CHAINE' DIVERS '/COMPOM' ; ******************************************************** * Données géométriques et physiques ******************************************************** * *- Définition du maillage * 'OPTION' 'DIME' 2 'ELEM' 'QUA4' 'TRACER' 'PSC' ; * * A = 0. 0. ; LX = 10. ; B = LX 0.; NX = 1 ; NY1 = 10 ; LY1 = 10. ; NY2 = 30 ; LY2 = 30. ; LY = LY1 + LY2 ; NY = NY1 + NY2 ; AB = ('DROIT' NX A B) ; G0 = 'TRANSLATION' AB NY1 (0. LY1) ; CCDD = 'INVERSE' ('COTE' 3 G0) ; DTOT = 'TRANSLATION' G0 NY2 (0. LY2) ; BC = 'INVERSE' ('COTE' 2 DTOT) ; CD = 'INVERSE' ('COTE' 3 DTOT) ; * *- création des maillages hybrides * MFTOT = 'CHANGER' DTOT 'QUAF' ; MFAB = 'CHANGER' AB 'QUAF' ; MFBC = 'CHANGER' BC 'QUAF' ; MFCD = 'CHANGER' CD 'QUAF' ; MFG0 = 'CHANGER' G0 'QUAF' ; MFCCDD = 'CHANGER' CCDD 'QUAF' ; 'ELIMINATION' 0.001 (MFTOT 'ET' MFAB 'ET' MFBC 'ET' MFCD 'ET' MFG0 'ET' MFCCDD); * *- modèles * MODHYB = 'MODELE' MFTOT 'DARCY' 'ISOTROPE' ; MMAB = 'MODELE' MFAB 'DARCY' 'ISOTROPE' ; MMBC = 'MODELE' MFBC 'DARCY' 'ISOTROPE' ; MMCD = 'MODELE' MFCD 'DARCY' 'ISOTROPE' ; MMG0 = 'MODELE' MFG0 'DARCY' 'ISOTROPE' ; MMCCDD = 'MODELE' MFCCDD 'DARCY' 'ISOTROPE' ; * CHYB1 = 'DOMA' MODHYB 'SURFACE' ; CHYB2 = 'DOMA' MODHYB 'NORMALE' ; MCHYB = 'DOMA' MODHYB 'ORIENTAT'; XVOLU = 'DOMA' MODHYB 'VOLUME' ; FATOT = 'DOMA' MODHYB 'FACE' ; CETOT = 'DOMA' MODHYB 'CENTRE' ; CEAB = 'DOMA' MMAB 'CENTRE' ; CEBC = 'DOMA' MMBC 'CENTRE' ; CECCDD = 'DOMA' MMCCDD 'CENTRE' ; * *- Définition de maillages lignes pour le post traitement * NBCC = 'NBNO' CEBC ; PI1 = 'POINT' CEBC 1 ; PI0 = PI1 ; I = 2 ; SI ( NBCC > 1 ) ; PI2 = 'POINT' CEBC I ; BCSEG = 'QUELCONQUE' 'SEG2' PI1 PI2 ; SI ( NBCC > 2 ) ; NBCC2 = NBCC - 2 ; 'REPETER' BLOC6 NBCC2 ; PI1 = PI2 ; I = I + 1 ; PI2 = 'POINT' CEBC I ; LILI = 'QUELCONQUE' 'SEG2' PI1 PI2 ; BCSEG = BCSEG 'ET' LILI ; FIN BLOC6 ; FINSI ; FINSI ; VV = 0.5 * B ; MAFACC = 'MOIN' ('INVERSE' BC) VV ; ELIM 0.01 MAFACC FATOT ; MMP = 'ELEM' MAFACC 'APPUYE' 'LARGEMENT' ('POINT' MAFACC FINAL) ; MC = 'DIFF' MAFACC MMP ; VVY = LY / NY * 0.5 ; VVVY = 0. VVY ; MACENT = 'PLUS' MC VVVY ; MACENT = 'COULEUR' MACENT 'ROUGE' ; 'ELIMINATION' 0.01 MACENT CETOT ; * *- on entre la vitesse on en deduit le flux aux faces * V = 'MANU' 'CHPO' FATOT 'NATURE' 'DISCRET' 2 'UX' 0. 'UY' 1.; MOT1 = 'MOTS' UX UY ; VAVN = 'PSCAL' V CHYB2 MOT1 MOT1 ; VAVN = 'NOMC' 'SCAL' VAVN ; QFACE = VAVN * CHYB1 ; QFACE = 'NOMC' QFACE 'FLUX' ; * *-coefficient de diffusion * VK = 1. ; MAT1 = 'MATERIAU' MODHYB 'K' VK ; * *- ce qui est indépendant du composant et du temps * EPSS = 0.005 ; DELTAT = 0.5D0 ; TETA = 1.00D0 ; BBBAS = 'BLOQ' CEAB 'TH' ; * ******************************************************** * CALCUL CHI1 ******************************************************** TABDON = 'OBJET' DONCHI1 ; TABDON%GIDEN ('LECT' 5 4 103 50) ; COMP1 = 'OBJET' LINVCOMP ; COMP1%COM_IDEN 75 ; COMP1%COM_NOM X075 ; COMP1%COM_CHAR 0 ; TABDON%GNVCOMP 1 COMP1 ; TABESP1= 'OBJET' LIESPECE ; TABESP1%ESP_IDEN 1815 ; TABESP1%ESP_LOGK 10.; TABESP1%ESP_ITYP 2 ; TABESP1%ESP_COMP ('LECT' 75 5) ; TABESP1%ESP_STOE ('PROG' 1. 1.) ; TABESP2= 'OBJET' LIESPECE ; TABESP2%ESP_IDEN 1816; TABESP2%ESP_LOGK 10. ; TABESP2%ESP_ITYP 2 ; TABESP2%ESP_COMP ('LECT' 75 4) ; TABESP2%ESP_STOE ('PROG' 1. 1. ) ; TABDON%GNVESP 1 TABESP1 ; TABDON%GNVESP 2 TABESP2 ; TABDON%GECHANGE ('LECT' 75) ; TABDON%GCLIM TYP3 ('LECT' 50) ; * TB1 = 'CHI1' TABDON 'COMP' emp1 'LOGK' emp1 ; * ******************************************************** * Initialisation du transport ******************************************************** * * CTOTC:concentrations au centre * CTOT:traces de concentrations * on se donne CTOT on en deduit CTOTC * TOTNA2 = 'MANU' 'CHPO' CEAB 1 X005 1.D-4; TOTNA = 'KCHT' MODHYB 'SCAL' 'FACE' 'COMP' X005 1.D-3 TOTNA2 ; TOTK2 = 'MANU' 'CHPO' CEAB 1 X004 1.D-3 ; TOTK = 'KCHT' MODHYB 'SCAL' 'FACE' COMP X004 1.D-5 TOTK2 ; TOTCL2 = 'MANU' 'CHPO' CEAB 1 X103 6.D-4 ; TOTCL = 'KCHT' MODHYB 'SCAL' 'FACE' COMP X103 5.1D-4 TOTCL2 ; TOTH = 'MANU' 'CHPO' FATOT 1 X050 0.D0 ; TOT75 = 'MANU' 'CHPO' FATOT 1 X075 5.D-4 ; CTOT = TOTNA + TOTK + TOTCL + TOTH + TOT75 ; TT1 = 'EXTR' CTOT 'COMP' ; NOCOMP = 'EXTR' TT1 1 ; CTOTC = 'MANU' 'CHPO' CETOT 1 NOCOMP 0. ; NBCOMP = 'DIME' TT1 ; MASHYB = 'MHYB' MODHYB MAT1 ; REPETER BOUC1 NBCOMP ; NOCOMP = 'EXTR' TT1 &BOUC1 ; TPR = 'EXCO' CTOT NOCOMP 'TH' ; TPC = 'HYBP' MODHYB MASHYB TPR ; TPC = 'NOMC' NOCOMP TPC ; CTOTC = CTOTC + TPC ; 'FIN' BOUC1 ; CFIONI = 'MANU' 'CHPO' CETOT 1 'SCAL' 0.001 ; CLOGC = 'MANU' 'CHPO' CETOT 5 X005 -2. X004 -2. X103 -2. X050 -4. X075 -5. ; CCLIM = 'MANU' 'CHPO' CETOT 1 W007 7.D0 ; FFIONI = 'MANU' 'CHPO' FATOT 1 'SCAL' 0.001 ; FLOGC = 'MANU' 'CHPO' FATOT 5 X005 -2. X004 -2. X103 -2. X050 -4. X075 -5. ; FCLIM = 'MANU' 'CHPO' FATOT 1 W007 7.D0 ; * * Initialisation des traces de concentrations aqueux * à l'aide d'un calcul CHI2 * TBPAR2 = 'OBJET' PARMCHI2 ; TBPAR2%GITMAX 80 ; TBPAR2%GEPS 1.D-5 ; TBPAR2%GNFI 4 ; TBPAR2%GITERSOL 15 ; TBPAR2%GIMPRIM ('LECT' 1) ; TBDO2 = 'OBJET' DONCHI2 ; TBDO2%GFIONI FFIONI ; TBDO2%GLOGC FLOGC ; TBDO2%GTOT CTOT ; TBDO2%GCLIM FCLIM ; * TB4 = 'CHI2' TB1 TBPAR2 TBDO2 ; * TAQU0 = TB4.AQUE ; TAQU = TAQU0 ; * LIMAB= 'REDU' TAQU CEAB ; ******************************************************** * TRANSPORT ******************************************************** * TABTRAN= TABLE ; TABTRAN.'SOUSTYPE' = MOT 'GEOCHIMIE' ; TABTRAN.'MODELE' = MODHYB ; TABTRAN.'DIFFUSION' = MAT1 ; TABTRAN.'POROSITE' = 'MANU' 'CHPO' CETOT 1 'CK' 1. ; TABTRAN.'CONVECTION' = QFACE ; TABTRAN.'CHIMI1' = TB1 ; TABTRAN.'TAQU' = TABLE; TABTRAN.'TAQU'. 0 = TAQU ; TABTRAN.ITMAX = 80; TABTRAN.EPS = 1.D-6 ; TABTRAN.NFI = 4 ; TABTRAN.ITERSOLI = 15 ; TABTRAN.FION = TABLE ; TABTRAN.FION. 0 = CFIONI ; TABTRAN.LOGC = TABLE ; TABTRAN.LOGC. 0 = CLOGC ; TABTRAN.TOT = TABLE ; TABTRAN.TOT. 0 = CTOTC ; TABTRAN.CLIM = CCLIM ; TABTRAN.SORTIE = 'MOTS' 'FION' ; TABTRAN.'BLOCAGE' = BBBAS ; TABTRAN.'TRACE_IMPOSE' = 'CHARGEMENT' LIMAB ('EVOL' 'MANU' ('PROG' 0. 45.) (PROG 1. 1.) ) ; *TABTRAN.'PRECISION' = 1.D-4 ; TABTRAN.'PAS_DE_TEMPS' = 0.5 ; *TABTRAN.'TEMPS_FINAL' = 45. ; TABTRAN.'TEMPS_FINAL' = 5. ; TABTRAN.'THETA' = 1.D0 ; * CHITRNSP TABTRAN ; * TITRE 'Test des flux ' ; IPPI = 1 ; IPPF = 10 ; VOLG0 = 'DOMA' MMG0 'VOLUME' ; QQG0 = (TABTRAN.TOT. IPPF - TABTRAN.TOT. (IPPI-1) ) * VOLG0 ; QQQQ = 'RESULT' QQG0 ; SI (GRAPH); LISMD = 'MOTS' 'X004' ; DBTE1 = TRACHIS TABTRAN 'FLUX' ('LECT' 1 5 10) LISMD MAFACC ; DESTRA DBTE1 ; DBTE2 = TRACHIS TABTRAN 'FIXE' ('LECT' 1 5 10) MACENT ; DESTRA DBTE2 ; LISMB = MOTS 'X005' ; DBTE3 = TRACHIS TABTRAN 'FLUX' ('LECT' 1 5 10) LISMB MAFACC ; DESTRA DBTE3 ; DBTE4 = TRACHIS TABTRAN 'FIXE' ('LECT' 1 5 10) LISMB MACENT ; DESTRA DBTE4 ; nnn7 = 'POINT' mafacc 7 ; nnn8 = 'POINT' mafacc 8 ; nnn9 = 'POINT' MAFACC 9 ; nnn10 = 'POINT' MAFACC 10 ; nnn11 = 'POINT' mafacc 11 ; nono = nnn7 'ET' nnn8 'ET' nnn9 'ET' nnn10 'ET' nnn11 ; DBTEE = TRACHIT TABTRAN FLUX LISMB NONO ; DESTRA DBTEE ; TBDES = TRACHIS TABTRAN 'TOT' ('LECT' 1 5 10) LISMD MACENT ; DESTRA TBDES ; TBDE7 = TRACHIS TABTRAN 'TAQU' ('LECT' 1 5 10) LISMD MAFACC ; DESTRA TBDE7 ; DESTRA TBDES ; DBTE8 = TRACHIS TABTRAN 'FLUX' ('LECT' 1 5 10) LISMC MAFACC ; DESTRA DBTE8 ; NORMA = 'DOMA' MODHYB 'NORMALE' ; LMOCOMP = 'EXTR' TABTRAN.'FLUX'.IPPF 'COMP' ; NBCOMP = 'DIME' LMOCOMP ; 'REPETER' BOUCMP NBCOMP ; MOCOMP= 'EXTR' LMOCOMP &BOUCMP ; TITRE MOCOMP ; FIFY = 'PSCAL' NORMA TABTRAN.'FLUX'.IPPF ('MOTS' 'UY') ('MOTS' MOCOMP); EVFY = 'EVOL' 'CHPO' FIFY 'SCAL' MAFACC ; 'DESSIN' EVFY ; 'FIN' BOUCMP ; 'FINSI' ; FIA = 'REDU' CEAB TABTRAN.'FLUX'.(IPPI) ; FIB = 'REDU' CECCDD TABTRAN.'FLUX'.(IPPI) ; SS1 = FIA + FIB ; NNCAL = IPPF - IPPI ; 'REPETER' BOUBOU NNCAL ; FIA = REDU CEAB TABTRAN.'FLUX'.(&BOUBOU + IPPI) ; FIB = REDU CECCDD TABTRAN.'FLUX'.(&BOUBOU + IPPI) ; SS1 = SS1 + FIA + FIB ; 'FIN' BOUBOU ; SS = ('RESULT' SS1) * DELTAT ; ERRFLU= 'RESULT' (SS + QQQQ) ; 'LISTE' ERRFLU ; DIFFLU= 'ABS' ERRFLU ; 'SI' (('MAXIMUM' DIFFLU) < 1.E-4 ) ; 'ERRE' 0 ; 'SINO' ; 'ERRE' 5 ; 'FINSI'; FIN ;