* @BET_THM PROCEDUR FD218221 26/02/16 21:15:05 12474 *---------------------------------------------------------------------* * @BET_THM PROCEDUR * * PROCEDURE @BET_THM * * APPELLE PAR : @MATETHM * *---------------------------------------------------------------------* * NOM : @BET_THM * * * * LANGAGE : GIBIANE-CAST3M * * AUTEURs : G. Sciumè (I2M - University of Bordeaux) * * S. Dal Pont (3SR - Université Grenoble-Alpes) * * COURRIEL : giuseppe.sciume@u-bordeaux.fr * * stefano.dalpont@univ-grenoble-alpes.fr * *---------------------------------------------------------------------* * VERSION : v1, 31/10/2025, version initiale * * HISTORIQUE : v2, XX/XX/20XX, * *---------------------------------------------------------------------* DEBP @BET_THM MO_THM*'MMODEL' CH_glob*'CHPOINT'; PRO_TRAC = FAUX; SI PRO_TRAC; 'MESS' ' ENTRA IN @BET_THM '; 'MESS' ' '; FINS; TAB_GEN = PRECED; WORKTAB = PRECED .'WTABLE' ; THETA_W = WORKTAB . 'RELAXATION_THETA'; DT = WORKTAB . 'DT'; SI (WORKTAB . 'HT_SOL1' 'EGA' 0.); CH_glob1 = CH_glob; CH_glob2 = CH_glob ; SINO; CH_glob1 = WORKTAB . 'HT_SOL1' ; CH_glob2 = WORKTAB . 'HT_SOL2' ; FINS; CH_W = CH_glob1 + ((CH_glob2 - CH_glob1) * THETA_W); *-------------------- CARACTERISTIQUES CONSTANTES --------------------* * * * RGP1 : Constante des gaz parfaits (J/mol/K) * * MMGA1 : Masse molaire de l'air (kg/m3) * * MMGW1 : Masse molaire de l'eau (kg/m3) * * RHOS1 : Masse volumique du solide (kg/m3) * * RHOW0 : Masse volumique de l'eau (kg/m3) * * CPS0 : CAPACITE CALORIFIQUE DU SOLIDE * * CPW1 : Capacite calorifique a P constante de l'eau (J/kg/K) * * CPGW1 : Capacite calorifique a P constante de la vapeur (J/kg/K) * * CPGA1 : Capacite calorifique a P constante de l'air (J/kg/K) * RGP1 = 8.3145 ; MMGA1 = 28.9645E-3 ; MMGW1 = 18.0153E-3 ; RHOS1 = 2625.8 ; RHOW0 = 1000.; CPW1 = 4181.0 ; CPGW1 = 1805.0 ; CPGA1 = 1005.7 ; DRHOWDT0 = 0.; *---------------------------------------------------------------------* *---------------------------------------------------------------------* *---------------------------------------------------------------------* *---------------------------------------------------------------------* * BOUCLE SUR LES DIFFERENTS ZONES THERMOHYDRIQUES * SI PRO_TRAC; 'MESS' ' '; FINS; *---------------------------------------------------------------------* *---------------------------------------------------------------------* *---------------------------------------------------------------------* indz = 1; REPETER BOUCLE_Z nzone; * MO_THMi = tab_zone.indz; *VIT_HYDR = CHAN CHPO MOD1 ('REDU' MAIL_REF VHW_tot); *HYDR = CHAN CHPO MOD1 ('REDU' MAIL_REF HW_tot ); *--------------------------------------------------------------------* * UPDATE OF PARAMETERS OF ZONEi * From this point the index i is omitted for sumplicity of notation * but all variables/parameters are those of the i-zone *--------------------------------------------------------------------* * * Construction of two CHPO (CHPO0 = 0 and CHPO1 = 1) * Construction of two CHELEM (CHEL0 = 0 and CHEL1 = 1) *--------------------------------------------------------------------* *--------------------------------------------------------------------* * EXTRACTION OF PRYMARY VARIABLE (W-value) * u = u(tn + theta*dt) *--------------------------------------------------------------------* SI PRO_TRAC; FINS; CHTCSC0 = CHTKSC0 - 273.15 ; * Variables de travail : CHTKSCM1 = CHTKSC0 ** -1 ; FGPGA0 = (MMGA1 / RGP1 )* CHTKSCM1 ; FGPGW0 = (MMGW1 / RGP1 )* CHTKSCM1 ; CHPGSCM1 = CHPGSC0 ** -1 ; CHPGSCM2 = CHPGSC0 ** -2 ; EASUTR = EAR * CHTKSCM1 ; *--------------------------------------------------------------------* *--------------------------------------------------------------------* * UPDATE OF CHEMICAL DAMAGE : (1-value) ---> (W-value) * - from DCH(tn) to DCH(tn + theta*dt) * - output : DCH and V_DCH (W-values) *--------------------------------------------------------------------* SI PRO_TRAC; FINS; VDCH_W DCH_W = @CH_DAMA WORKTAB CH_W; *--------------------------------------------------------------------* *--------------------------------------------------------------------* * UPDATE OF HYDRATION DEGREE : (1-value) ---> (W-value) * - from HYDR(tn) to HYDR(tn + theta*dt) * - output : HYDR and V_HYDR (W-values) *--------------------------------------------------------------------* SI PRO_TRAC; FINS; VH_W HYD_W = @VI_HYDR WORKTAB CH_W; *--------------------------------------------------------------------* *--------------------------------------------------------------------* * Vitesse de dehydratation V_DHYDR = -1. * HYDR * V_DCH * (1./(DT + 1.e-6)) * (DT/(DT + 1.e-6)); * Degree de hydratation equivalent HYDR = (1. - DCH) * HYDR; *--------------------------------------------------------------------* *--------------------------------------------------------------------* * UPDATE OF C AND K MATRICES *--------------------------------------------------------------------* SI PRO_TRAC; FINS; *---------------------------- SATURATION LIQU-------------------------* SW0 = @SATURA CHPCSC0 CHTKSC0 HYDR VGA VGB VGC GAM0; * Derivee de la staturation par rapport a Pc : Ok ! DSWDPC0 = (@SATURA (CHPCSC0 + 0.001) CHTKSC0 HYDR VGA VGB VGC GAM0) - (@SATURA (CHPCSC0 - 0.001) CHTKSC0 HYDR VGA VGB VGC GAM0) ; DSWDPC0 = DSWDPC0 * (1./0.002); * Derivee de la staturation par rapport a la temperature : Ok ! DSWDT0 = (@SATURA CHPCSC0 (CHTKSC0 + 0.001) HYDR VGA VGB VGC GAM0) - (@SATURA CHPCSC0 (CHTKSC0 - 0.001) HYDR VGA VGB VGC GAM0); DSWDT0 = DSWDT0 * (1./0.002); * Derivee de la saturation par rapport a Gamma : Ok ! DSWDHY0 = (@SATURA CHPCSC0 CHTKSC0 (HYDR + 0.001) VGA VGB VGC GAM0) - (@SATURA CHPCSC0 CHTKSC0 (HYDR - 0.001) VGA VGB VGC GAM0); DSWDHY0 = DSWDHY0 * (1./0.002); *---------------------------- SATURATION GAS--------------------------* SG0 = 1. - SW0 ; *----------------------------- POROSITE ------------------------------* N0 = N1 + (APOR * (1. - HYDR)); DNDHY = -1.* APOR; *------------------- PRESSION DE VAPEUR SATURANTE --------------------* * ENTREE * - Temperature (K) * SORTIES * - Pression de vapeur saturante (Pa) : CHPVSAT0 * - Derivee -/- T (Pa/K) : DPSATDT0 * PARAMETRES * GCi : facteurs polynomiaux GC1 = -5.8002206E+03 ; GC2 = 1.3914993E+00 ; GC3 = -4.8640239E-02 ; GC4 = 4.1764768E-05 ; GC5 = -1.4452093E-08 ; GC6 = 6.5459673E+00 ; * Pression de vapeur saturante : CHPVSAT0 = (GC1 * CHTKSCM1) + GC2 + (GC3 * CHTKSC0) + (GC4 * (CHTKSC0 ** 2)) + (GC5 * (CHTKSC0 ** 3)) + (GC6 * ('LOG'CHTKSC0)) ; CHPVSAT0 = 'EXP' CHPVSAT0 ; * Derivee -/- T : DPSATDT0 = (-1. * GC1 * (CHTKSCM1 ** 2)) + GC3 + (2. * GC4 * CHTKSC0) + (3. * GC5 * (CHTKSC0 ** 2)) + (GC6 * CHTKSCM1) ; DPSATDT0 = DPSATDT0 * CHPVSAT0 ; *--------------------- ENTHALPIE DE VAPORISATION ---------------------* HVAP0 = 2.5e6; DHVAPDT1 = 0.; *--------------------- PERMEABILITE INTRINSEQUE ----------------------* F_MAX = 100.; HYEFF_K = EXP (2.302585 * AK * (1. - HYDR)); P_ATM = 101325.; PG_EFF = (CHPGSC0 * (1./P_ATM))**0.36848; * Klinkemberg effect KK0L = KK0; BKLI = 1.635 * 1.E-8 * (KK0**-0.5227); PMBAR = CHPGSC0 * (1.E-5); KK0G = KK0 * (1. + (BKLI * (PMBAR**-1.))); KINTL = KK0L * HYEFF_K2 * PG_EFF; KINTG = KK0G * HYEFF_K2 * PG_EFF; *------------------- PERMEABILITE RELATIVE AU GAZ --------------------* * ENTREE * - Saturation (-) : SW0 * SORTIE * - Permeabilite relative au gaz (---) : KRG0 * PARAMETRES * SCR1 : Saturation critique * AG1 : exposant SCR1 = 1. ; AG1 = 2. ; KRG0 = 1. - ((SW0 / SCR1) ** AG1) ; *------------------- PERMEABILITE RELATIVE A L'EAU -------------------* * ENTREE * - Saturation (-) : SW0 * SORTIE * - Permeabilite relative a l'eau (---) : KRW0 * PARAMETRES * VGB temp1 = EXP(VGB*(LOG(SW0))); temp2 = 1 - temp1; temp3 = EXP((VGB**(-1.))*(LOG(temp2))); temp4 = 1 - temp3; temp5 = temp4**2; temp6 = SW0**(0.5); KRW0 = temp5 * temp6 ; *------------------------- VISCOSITE DE L'EAU ------------------------* * ENTREE * - Temperature (K) * SORTIE * - Viscosite de l'eau (---) : MUW0 * PARAMETRES * T0 : Temperature de reference (K) * ALPHW1 : coef. sur temperature * EXPOW1 : exposant T0 = 229. ; ALPHGW1 = 0.6612 ; EXPOW1 = -1.562 ; MUW0 = ALPHGW1 * ((CHTKSC0 - T0) ** EXPOW1) ; *------------------- VISCOSITE DE LA VAPEUR D'EAU --------------------* * ENTREE * - Temperature (C) * SORTIE * - Viscosite de la vapeur d'eau (---) : MUGW0 * PARAMETRES * MUGW1 : Viscosite a 0 degre Celcius * ALPHGW1 : coef. sur temperature MUGW1 = 8.85E-6 ; ALPHGW1 = 3.633E-8 ; MUGW0 = MUGW1 + (ALPHGW1 * CHTCSC0) ; *---------------------- VISCOSITE DE L'AIR SEC -----------------------* * ENTREE * - Temperature (C) * SORTIE * - Viscosite de l'air sec (---) : MUGA0 * PARAMETRES * MUGA1 : Viscosite a 0 degre Celcius * ALPHGA1 : coef. sur temperature * ALPHGA2 : coef. sur temperature au carre MUGA1 = 17.17E-6 ; ALPHGA1 = 4.733E-8 ; ALPHGA2 = -2.222E-11 ; MUGA0 = MUGA1 + (ALPHGA1 * CHTCSC0) + (ALPHGA2 * (CHTCSC0 ** 2)) ; *-------------- DIFFUSITE DE LA VAPEUR D'EAU DANS l'AIR --------------* * ENTREES * - Temperature (K) * - Pression gazeuse (Pa) * SORTIE * - Diffusivite de la vapeur d'eau dans l'air (---) : DGWGA0 * PARAMETRES * T0 : Temperature de reference (0 degre C) * P0 : Pression e reference (1 atm.) * DGWGA1 : Diffusite a (T0,P0) * ET1 : Exposant sur la temperature DGWGA1 = 2.58E-5 ; T0 = 273.15 ; P0 = 101325. ; ET1 = 1.88 ; DGWGA0 = DGWGA1 * (CHPGSCM1 * P0) * ((CHTKSC0 / T0) ** ET1) ; *------------------------ DIFFUSITE EFFECTIVE ------------------------* * ENTREES * - Saturation (-) : SW0 * - Porosite (-) : N0 * - Diffusivite de la vapeur d'eau dans l'air (---) : DGWGA0 * SORTIE * - Diffusivite effective (---) : DEFF0 HYEFF_D = HYEFF_K2; UNTIERS1 = 1. / 3. ; TORT1 = (N0 ** UNTIERS1) * (SG0 ** (7. * UNTIERS1)) ; TORT0 = HYEFF_D * TORT1; DEFF0 = SG0 * N0 * TORT0 * DGWGA0 ; *----------------- CONDUCTIVITE THERMIQUE DU SOLIDE ------------------* * ENTREES * - Temperature (K) * SORTIE * - Conductivite thermique du solide (W/m/K) : KS0 * PARAMETRES * T0 : Temperature de reference (25 degres C) * KS1 : Conductivite thermique a T0 * AKS1 : Coeff. de proportionalite en temperature T0 = 298. ; AKS1 = -1.017E-3 ; KS0 = KS1 + (AKS1 * (CHTKSC0 - T0)) ; *---------------------------------------------------------------------* * * * CALCUL DES TERMES DE LA MATRICE DU SYSTEME * * * *---------------------------------------------------------------------* *---------------------- Quantites intermediaires ---------------------* * Modificata Dal Pont & sciume 15/02/2018 * * CHPGWSC0 : Pression de vapeur d'eau (Pa, Clapeyron) : CHXX = -1. * FGPGW0 * (RHOW0 ** -1) ; CHPRE = CHPCSC0 - CHPGSC0 + CHPVSAT0; CHYY = 'EXP' (CHXX * CHPRE) ; CHPGWSC0 = CHPVSAT0 * CHYY; * * Derivées partielles de la pression de la vapeur * DPGWDPG0 : Derivee -/- Pg (-) : DPGWDPG0 = -1. * CHXX * CHPGWSC0; * DPGWDPC0 : Derivee -/- Pc (-) : DPGWDPC0 = -1. * DPGWDPG0; * DPGWDT0 : Derivee -/- T (Pa/K) : TEMP1 = ((CHPGWSC0 * (CHPVSAT0**-1.)) + DPGWDPC0) * DPSATDT0; TEMP2 = DPGWDPC0 * (-1. * CHPRE) * (((RHOW0**-1)* DRHOWDT0) + CHTKSCM1); DPGWDT0 = TEMP1 + TEMP2; * Derivées partielles de la pression de l'air sec * DPGADPG0 : Derivee -/- Pg (-) : DPGADPG0 = 1. - DPGWDPG0; * DPGADPC0 : Derivee -/- Pc (-) : DPGADPC0 = -1. * DPGWDPC0; * DPGADT0 : Derivee -/- T (Pa/K) : DPGADT0 = -1. * DPGWDT0; * Rho air sec et ses derivées partielles * RHOGA0 : Masse volumique de l'air sec (kg/m3) : RHOGA0 = (CHPGSC0 - CHPGWSC0) * FGPGA0 ; * DRHOGADT : Derivee -/- T (kg/m3/K) : Ok ! DRHOGADT = -1. * ((RHOGA0 * CHTKSCM1) + (FGPGA0 * DPGWDT0)) ; * DRHGADPG : Derivee -/- PG (kg/m3/Pa) : Ok ! DRHOGADG = FGPGA0 * DPGADPG0; * DRHGADPC : Derivee -/- PC (kg/m3/Pa) : Ok ! DRHOGADC = FGPGA0 * DPGADPC0; * Rho vapeur et ses derivées partielles * RHOGW0 : Masse volumique de la vapeur (kg/m3) : RHOGW0 = FGPGW0 * CHPGWSC0 ; * DRHOGWDT : Derivee -/- T (kg/m3/K) : Ok ! DRHOGWDT = (FGPGW0 * DPGWDT0) - (RHOGW0 * CHTKSCM1) ; * DRHOGWDPG : Derivee -/- PG (kg/m3/Pa) : Ok ! DRHOGWDG = FGPGW0 * DPGWDPG0 ; * DRHOGWDC : Derivee -/- PC (kg/m3/Pa) : Ok ! DRHOGWDC = FGPGW0 * DPGWDPC0 ; * MUG0 : Viscosite de la phase gazeuse : CHXX = (1. - (CHPGWSC0 * CHPGSCM1)) * MASQ1 ; MUG0 = MUGW0 + ((MUGA0 - MUGW0) * (CHXX ** 0.6083)) ; * RHOG0 : Masse volumique de la phase gazeuse (kg/m3) : RHOG0 = (FGPGA0 * CHPGSC0) + ((FGPGW0 - FGPGA0) * CHPGWSC0) ; * CPG0 : Capacite calorifique a P constante du gaz (J/kg/K) CPG0 = (RHOG0 * CPGA1) + (RHOGW0 * (CPGW1 - CPGA1)) ; * Masse Molaire du gaz (kg/mol) : MMG0 = MMGA1 + ((MMGW1 - MMGA1) * (CHPGWSC0 * CHPGSCM1)) ; *---------------------------------------------------------------------* *------------------------ Matrice de Capacite ------------------------* * Pression de Gaz (PG) : CGG0 = N0 * SG0 * DRHOGADG ; CGC0 = (N0 * SG0 * DRHOGADC) - (N0 * RHOGA0 * DSWDPC0); CGT0 = (N0 * SG0 * DRHOGADT) - (N0 * RHOGA0 * DSWDT0 ); CGU0 = 0; * Pression Capillaire (PC) : CCG0 = N0 * SG0 * DRHOGWDG; CCC0 = (N0 * SG0 * DRHOGWDC) + (N0 * (RHOW0 - RHOGW0) * DSWDPC0); CCT0 = (N0 * SG0 * DRHOGWDT) + (N0 * (RHOW0 - RHOGW0) * DSWDT0 ) + (N0 * SW0 * DRHOWDT0); CCU0 = 0.; * Temperature (T): CTVE = ((1. - N0) * RHOS1 * CPS0) + (N0 * SW0 * RHOW0 * CPW1); CTG0 = 0. ; CTC0 = -1. * HVAP0 * N0 * RHOW0 * DSWDPC0 ; CTT0 = CTVE - (HVAP0 * N0 * RHOW0 * DSWDT0) - (HVAP0*N0*SW0*DRHOWDT0); CTU0 = 0.; * Transformation en CHML pour la definition du materiau *---------------------- Matrice de conductivite ----------------------* * Pression de Gaz (PG) : RPERMGA0 = RHOGA0 * KINTG * KRG0 * (MUG0 ** -1) ; CHFDIFF0 = RHOG0 * MMGA1 * MMGW1 * (MMG0 ** -2) * DEFF0 ; KGG0 = RPERMGA0 + (-1. * CHFDIFF0 * CHPGSCM1 * (DPGWDPG0 - (CHPGWSC0*CHPGSCM1))); KGC0 = -1. * CHFDIFF0 * CHPGSCM1 * DPGWDPC0 ; KGT0 = -1. * CHFDIFF0 * CHPGSCM1 * DPGWDT0 ; KGU0 = 0. ; * Pression Capillaire (PC) : RPERMGW0 = RHOGW0 * KINTG * KRG0 * (MUG0 ** -1) ; RPERMW0 = RHOW0 * KINTL * KRW0 * (MUW0 ** -1) ; KCG0 = RPERMGW0 + RPERMW0 + (CHFDIFF0 * CHPGSCM1 * (DPGWDPG0 - (CHPGWSC0 * CHPGSCM1))); KCC0 = (-1. * RPERMW0) + (CHFDIFF0 * CHPGSCM1 * DPGWDPC0) ; KCT0 = -1. * KGT0 ; KCU0 = 0. ; * Temperature (T): KTG0 = -1. * HVAP0 * RPERMW0 ; KTC0 = -1. * KTG0 ; KTT0 = KS0 * ((4. * N0 * SW0 * RHOW0 * (((1. - N0) * RHOS1) ** -1)) + 1.) ; KTTGPG0 = 0. ; KTTGPC0 = 0. ; KTU0 = 0. ; * Transformation en CHML pour la definition du materiau KTGGT0 = 0. ; KTCGT0 = 0. ; *---------------------------------------------------------------------* * Calculation of swelling strain *----- Construction du MCHAML de Caracteristiques : appel a MATE -----* MAT1_ZOi = 'MATE' MO_THMi 'CGG' CGG0 'CGC' CGC0 'CGT' CGT0 'CCG' CCG0 'CCC' CCC0 'CCT' CCT0 'CTG' CTG0 'CTC' CTC0 'CTT' CTT0 'KGG' KGG0 'KGC' KGC0 'KGT' KGT0 'KCG' KCG0 'KCC' KCC0 'KCT' KCT0 'KTG' KTG0 'KTC' KTC0 'KTT' KTT0 'KTGG' KTGGT0 'KTCG' KTCGT0 'DSWE' 0. 'DHYD' 0. 'DDCH' 0.; MAT1_ZOi = MAT1_ZOi + PARA_i; *LIST 'RESUME' MAT1_ZOi; *TRAC MAIL_REF; *---------------------------------------------------------------------* * * * CALCUL DES TERMES DU SECOND MEMBRE * * * *---------------------------------------------------------------------* *** P_GAS ********************************************************* FG_HYD1 = ((RHOGA0 * N0 * DSWDHY0) + (RHOGA0 * SG0 * APOR)); FG_HYD = FG_HYD1 * (V_HYDR + V_DHYDR); ******************************************************************* *** P_CAP ********************************************************* FC_HYD1 = ((RHOW0 * SW0) + (RHOGW0 * SG0)) * APOR; FC_HYD2 = -1. * WINF ; FC_HYD3 = -1. * N0 * (RHOW0 - RHOGW0) * DSWDHY0 ; FC_HYD = (FC_HYD1 + FC_HYD2 + FC_HYD3) * (V_HYDR + V_DHYDR); ******************************************************************* * *** TEMPERATURE**************************************************** FT_HYD1 = QLAT ; FT_HYD2 = HVAP0 * WINF; FT_HYD3 = HVAP0 * RHOW0 * N0 * DSWDHY0; FT_HYD4 = HVAP0 * RHOW0 * SW0 * APOR * -1.; FT_HYD = (FT_HYD1 + FT_HYD2 + FT_HYD3 + FT_HYD4) * (V_HYDR + V_DHYDR); *FT0 = 'SOUR' MO_THMi FT0_TOT 'Q' ; ******************************************************************* * F0_ZOi = FG0 + FC0 + FT0 ; *********************************************************************** *********************************************************************** 'SI' (indz EGA 1); MAT1 = MAT1_ZOi; F0 = F0_ZOi; 'SINON'; MAT1 = MAT1 et MAT1_ZOi; F0 = F0 + F0_ZOi; 'FINSI'; indz = indz + 2; 'FIN' BOUCLE_Z; *********************************************************************** *********************************************************************** * Mis à jours hydratation FORSE NON SERVA PIUIR *********************************************************************** *********************************************************************** VH_W HYD_W = @VI_HYDR WORKTAB CH_W; WORKTAB . 'VAR_THM2' = (WORKTAB . 'VAR_THM1') + DE_HYD; SINO; WORKTAB . 'VAR_THM2' = (WORKTAB . 'VAR_THM1') + DE_HYD; FINS; *SALVARE DANNO CHIMICO = MOD; * Sauvegarde PRECED . 'VARIABLES_THM' . (I_COUR + 1) = WORKTAB .'VAR_THM2'; *********************************************************************** *********************************************************************** 'FINP' MAT1 F0; *---------------------------------------------------------------------*
© Cast3M 2003 - Tous droits réservés.
Mentions légales