* @VI_HYDR PROCEDUR FD218221 26/02/16 21:15:09 12474 *---------------------------------------------------------------------* * PROCEDURE @VI_HYDR * * APPELLE PAR : UNPAS * *---------------------------------------------------------------------* * NOM : @VI_HYDR * * * * LANGAGE : GIBIANE-CAST3M * * AUTEUR : G. Sciumè (I2M - University of Bordeaux) * * COURRIEL : giuseppe.sciume@u-bordeuax.fr * *---------------------------------------------------------------------* * COMMENTAIRE: Mise a jour du degre d'hydratation * *---------------------------------------------------------------------* * VERSION : v1, 31/10/2024, version initiale * * HISTORIQUE : v2, XX/XX/20XX, * *---------------------------------------------------------------------* DEBPROC @VI_HYDR WORKTAB*'TABLE' CH_GLOB*'CHPOINT'; *** BOUCLE SUR LES DIFFERENTS ZONES THERMOHYDRIQUES indz = 1; 'REPETER' BOUCLE_Z nzone; MOD_THM = tab_zone.indz; *HYDRA_1 = 'REDU' MAIL_THM (WORKTAB . 'HYD1'); SINO; FINS; THETA_W = WORKTAB . 'RELAXATION_THETA'; DELTA_T = WORKTAB . 'DT'; * ************************************************** * EASUTR = EAR * (T_W ** (-1.)); FGPGW0 = ( 18.0153E-3 / 8.3145 ) * (T_W ** (-1.)) ; temp1 = 0.001 * FGPGW0; temp2 = (-1) * PC_W * temp1; HR_W = EXP(temp2); ********* Temperature effect **************** TK_EFF = EXP((-1.) * EASUTR); ******** Relative humidity effect *********** AHR = 5.; HR_W = 'BORNER' HR_W 'SCAL' 'MAXIMUM' 1.; temp1 = AHR - (AHR * HR_W); temp1 = 'BORNER' temp1 'SCAL' 'MINIMUM' 0.; temp2 = temp1 ** 4.; temp3 = temp2 + 1.; HR_EFF = temp3 ** (-1); *HR_EFF = 1.; ******** Chemical Affinity ****************** * HYD_Wi = HYDRA_1; ITE_HYDR = 1.; 'REPETER' BO_HYDRA; temp1 = (GAP - HYD_Wi)*(GAP**(-1.)); temp2 = 0.5*(temp1 + (ABS(temp1))); TEMP3 = ((SIN(90.*(1. - temp2)))*(AP - AI)) + AI; temp4 = (HYD_Wi - GAP)*((1. - GAP)**(-1.)); temp5 = 0.5*(temp4 + (ABS(temp4))); * Thesi si dottorato 2013 (dopo passo da 4. a 2.5) * TEMP6 = 1. + ((temp5**(4.))*DEC); TEMP6 = 1. + ((temp5**(2.5))*DEC); TEMP7 = TEMP3 * (TEMP6**(-1.)); da_sottr = (AP *((1. + DEC)**(-1.))) * temp5; CH_AFF = TEMP7 - da_sottr; CH_AFF = 'BORNER' CH_AFF 'SCAL' 'MINIMUM' 0.; * VIT_HYDR = CH_AFF * HR_EFF * TK_EFF; HYDRA_2 = HYDRA_1 + (DELTA_T * VIT_HYDR); HYD_W_n = HYDRA_1 + (THETA_W * (HYDRA_2 - HYDRA_1)); DIFFER = HYD_W_n - HYD_Wi; * LIST cr_stop; 'SI' (CR_STOP '<' 0.00001); HYD_Wi = HYD_W_n; VH_Wi = VIT_HYDR; 'QUITTER' BO_HYDRA; 'FINSI'; 'SI' (ITE_HYDR '>' 20); **************ETAB.'ERREUR' = VRAI; ********Se non converge passo esplicito ******************************* HYD_Wi = HYDRA_1; temp1 = (GAP - HYD_Wi)*(GAP**-1.); temp2 = 0.5 * (temp1 + (ABS(temp1))); TEMP3 = ((SIN(90.*(1. - temp2)))*(AP - AI)) + AI; temp4 = (HYD_Wi - GAP)*((1. - GAP)**-1.); temp5 = 0.5 * (temp4 + (ABS(temp4))); TEMP6 = 1. + ((temp5**4.)*DEC); TEMP7 = temp3 * (temp6**-1.); da_sottr = (AP *((1. + DEC)**(-1.))) * temp5; CH_AFF = TEMP7 - da_sottr; CH_AFF = 'BORNER' CH_AFF 'SCAL' 'MINIMUM' 0.; VIT_HYDR = CH_AFF * HR_EFF * TK_EFF; VH_Wi = VIT_HYDR; ************************************************************************ 'QUITTER' BO_HYDRA; 'FINSI'; HYD_Wi = HYD_W_n ; VH_Wi = VIT_HYDR ; ITE_HYDR = ITE_HYDR + 1; 'FIN' BO_HYDRA; 'SI' (indz EGA 1); HYD_W = HYD_Wi; VH_W = VH_Wi; 'SINON'; HYD_W = HYD_W + HYD_Wi; VH_W = VH_W + VH_Wi; 'FINSI'; indz = indz + 2; 'FIN' BOUCLE_Z; FINPROC VH_W HYD_W; *********************************************************************** * FIN PROCEDURE @VI_HYDR ***********************************************************************
© Cast3M 2003 - Tous droits réservés.
Mentions légales