Télécharger @vi_hydr.procedur

Retour à la liste

Numérotation des lignes :

  1. * @VI_HYDR PROCEDUR FD218221 26/02/16 21:15:09 12474
  2. *---------------------------------------------------------------------*
  3. * PROCEDURE @VI_HYDR *
  4. * APPELLE PAR : UNPAS *
  5. *---------------------------------------------------------------------*
  6. * NOM : @VI_HYDR *
  7. * *
  8. * LANGAGE : GIBIANE-CAST3M *
  9. * AUTEUR : G. Sciumè (I2M - University of Bordeaux) *
  10. * COURRIEL : giuseppe.sciume@u-bordeuax.fr *
  11. *---------------------------------------------------------------------*
  12. * COMMENTAIRE: Mise a jour du degre d'hydratation *
  13. *---------------------------------------------------------------------*
  14. * VERSION : v1, 31/10/2024, version initiale *
  15. * HISTORIQUE : v2, XX/XX/20XX, *
  16. *---------------------------------------------------------------------*
  17. DEBPROC @VI_HYDR WORKTAB*'TABLE' CH_GLOB*'CHPOINT';
  18.  
  19.  
  20.  
  21. tab_zone = EXTR (WORKTAB . 'MOD_THM') 'ZONE';
  22. nzone = (dime tab_zone)/2;
  23.  
  24.  
  25. *** BOUCLE SUR LES DIFFERENTS ZONES THERMOHYDRIQUES
  26. indz = 1;
  27. 'REPETER' BOUCLE_Z nzone;
  28.  
  29. MOD_THM = tab_zone.indz;
  30. MAIL_THM = 'EXTR' MOD_THM 'MAIL';
  31. SOLU_W = 'REDU' MAIL_THM CH_GLOB;
  32. *HYDRA_1 = 'REDU' MAIL_THM (WORKTAB . 'HYD1');
  33.  
  34.  
  35. SI ('EXIS' PRECED . WTABLE 'VAR_THM1') ;
  36. VAR_THM1 = 'REDU' (PRECED . WTABLE . 'VAR_THM1' ) MOD_THM;
  37. SINO;
  38. VAR_THM1 = 'REDU' (PRECED . 'VARIABLES_THM' . 0) MOD_THM;
  39. FINS;
  40.  
  41. HYDRA_1 = 'EXCO' 'HYDR' VAR_THM1;
  42.  
  43. PARAM = 'REDU' MAIL_THM (PRECED . WTABLE . 'MAT_THM');
  44. THETA_W = WORKTAB . 'RELAXATION_THETA';
  45. DELTA_T = WORKTAB . 'DT';
  46. *
  47. **************************************************
  48. *
  49. T_W = REDU MAIL_THM ((EXCO 'T' SOLU_W) 'NOMC' 'SCAL');
  50. EAR = CHAN CHPO MOD_THM (('EXCO' 'EAR' PARAM) 'NOMC' 'SCAL');
  51. EASUTR = EAR * (T_W ** (-1.));
  52.  
  53. PC_W = REDU MAIL_THM ((EXCO 'PC' SOLU_W) 'NOMC' 'SCAL');
  54. FGPGW0 = ( 18.0153E-3 / 8.3145 ) * (T_W ** (-1.)) ;
  55. temp1 = 0.001 * FGPGW0;
  56. temp2 = (-1) * PC_W * temp1;
  57. HR_W = EXP(temp2);
  58.  
  59.  
  60. ********* Temperature effect ****************
  61. TK_EFF = EXP((-1.) * EASUTR);
  62.  
  63. ******** Relative humidity effect ***********
  64. AHR = 5.;
  65. HR_W = 'BORNER' HR_W 'SCAL' 'MAXIMUM' 1.;
  66. temp1 = AHR - (AHR * HR_W);
  67. temp1 = 'BORNER' temp1 'SCAL' 'MINIMUM' 0.;
  68. temp2 = temp1 ** 4.;
  69. temp3 = temp2 + 1.;
  70. HR_EFF = temp3 ** (-1);
  71. *HR_EFF = 1.;
  72.  
  73. ******** Chemical Affinity ******************
  74. AI = CHAN CHPO MOD_THM (('EXCO' 'AFF1' PARAM) 'NOMC' 'SCAL');
  75. AP = CHAN CHPO MOD_THM (('EXCO' 'AFF2' PARAM) 'NOMC' 'SCAL');
  76. GAP = CHAN CHPO MOD_THM (('EXCO' 'AFF3' PARAM) 'NOMC' 'SCAL');
  77. DEC = CHAN CHPO MOD_THM (('EXCO' 'AFF4' PARAM) 'NOMC' 'SCAL');
  78. *
  79. HYDRA_1 = (CHAN CHPO MOD_THM HYDRA_1) 'NOMC' 'SCAL';
  80. HYD_Wi = HYDRA_1;
  81.  
  82. ITE_HYDR = 1.;
  83.  
  84. 'REPETER' BO_HYDRA;
  85. temp1 = (GAP - HYD_Wi)*(GAP**(-1.));
  86. temp2 = 0.5*(temp1 + (ABS(temp1)));
  87. TEMP3 = ((SIN(90.*(1. - temp2)))*(AP - AI)) + AI;
  88. temp4 = (HYD_Wi - GAP)*((1. - GAP)**(-1.));
  89. temp5 = 0.5*(temp4 + (ABS(temp4)));
  90. * Thesi si dottorato 2013 (dopo passo da 4. a 2.5)
  91. * TEMP6 = 1. + ((temp5**(4.))*DEC);
  92. TEMP6 = 1. + ((temp5**(2.5))*DEC);
  93. TEMP7 = TEMP3 * (TEMP6**(-1.));
  94. da_sottr = (AP *((1. + DEC)**(-1.))) * temp5;
  95. CH_AFF = TEMP7 - da_sottr;
  96. CH_AFF = 'BORNER' CH_AFF 'SCAL' 'MINIMUM' 0.;
  97. *
  98. VIT_HYDR = CH_AFF * HR_EFF * TK_EFF;
  99.  
  100. HYDRA_2 = HYDRA_1 + (DELTA_T * VIT_HYDR);
  101. HYD_W_n = HYDRA_1 + (THETA_W * (HYDRA_2 - HYDRA_1));
  102.  
  103. DIFFER = HYD_W_n - HYD_Wi;
  104. CR_STOP = 'MAXI' (ABS(DIFFER));
  105. * LIST cr_stop;
  106. 'SI' (CR_STOP '<' 0.00001);
  107. HYD_Wi = HYD_W_n;
  108. VH_Wi = VIT_HYDR;
  109. 'QUITTER' BO_HYDRA;
  110. 'FINSI';
  111. 'SI' (ITE_HYDR '>' 20);
  112. 'MESS' '*** REDUIRE LE PAS DE TEMPS ********';
  113. 'MESS' '*** CRITERE HYDRATATION ***'; list CR_STOP;
  114. **************ETAB.'ERREUR' = VRAI;
  115. ********Se non converge passo esplicito *******************************
  116. HYD_Wi = HYDRA_1;
  117. temp1 = (GAP - HYD_Wi)*(GAP**-1.);
  118. temp2 = 0.5 * (temp1 + (ABS(temp1)));
  119. TEMP3 = ((SIN(90.*(1. - temp2)))*(AP - AI)) + AI;
  120. temp4 = (HYD_Wi - GAP)*((1. - GAP)**-1.);
  121. temp5 = 0.5 * (temp4 + (ABS(temp4)));
  122. TEMP6 = 1. + ((temp5**4.)*DEC);
  123. TEMP7 = temp3 * (temp6**-1.);
  124. da_sottr = (AP *((1. + DEC)**(-1.))) * temp5;
  125. CH_AFF = TEMP7 - da_sottr;
  126. CH_AFF = 'BORNER' CH_AFF 'SCAL' 'MINIMUM' 0.;
  127. VIT_HYDR = CH_AFF * HR_EFF * TK_EFF;
  128. VH_Wi = VIT_HYDR;
  129. ************************************************************************
  130. 'QUITTER' BO_HYDRA;
  131. 'FINSI';
  132. HYD_Wi = HYD_W_n ;
  133. VH_Wi = VIT_HYDR ;
  134.  
  135. ITE_HYDR = ITE_HYDR + 1;
  136. 'FIN' BO_HYDRA;
  137.  
  138.  
  139. HYD_Wi = 'CHAN' 'CHAM' HYD_Wi MOD_THM;
  140. VH_Wi = 'CHAN' 'CHAM' VH_Wi MOD_THM;
  141.  
  142.  
  143. 'SI' (indz EGA 1);
  144. HYD_W = HYD_Wi;
  145. VH_W = VH_Wi;
  146. 'SINON';
  147. HYD_W = HYD_W + HYD_Wi;
  148. VH_W = VH_W + VH_Wi;
  149. 'FINSI';
  150.  
  151. indz = indz + 2;
  152. 'FIN' BOUCLE_Z;
  153.  
  154. FINPROC VH_W HYD_W;
  155. ***********************************************************************
  156. * FIN PROCEDURE @VI_HYDR
  157. ***********************************************************************
  158.  
  159.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales