IRC_112_2020_Eps_cc = function(material,t){
let msg = "";
let dbgOutput = "IRC_112_2020 Creep"
let f_cm = material.f_cm;
let h_0 = 2 * material.V_S;
let t_0_adj = material.t_0;
if(material.Consider_Temperature_Adjusted_Age_of_Concrete == "Yes") {
t_0_adj = (Math.exp(-(4000/(273+material.T)-13.65)))*t_0_adj;
dbgOutput = Utility_Add(dbgOutput, "Temp_Adj_T0",t_0_adj);
}
let a;
if (material.cement_hardtype == "SL") a = -1;
else if (material.cement_hardtype == "N") a = 0;
else if (material.cement_hardtype == "R" || material.cement_hardtype == "RS") a =1;
else return ({value:0.0, mesage:"Undefined Cement Type - Alpha parameter", debug:dbgOutput});
t_0_adj = t_0_adj*(9/(2+t_0_adj**1.2)+1)**a;
if (t_0_adj < 0.5) t_0_adj = 0.5;
dbgOutput = Utility_Add(dbgOutput, "t_0",t_0_adj);
let RH = material.RH;
let sigma = material.sigma;
let E_cm= 35000;
dbgOutput = Utility_Add(dbgOutput, "f_cm",f_cm);
dbgOutput = Utility_Add(dbgOutput, "h_0",h_0);
dbgOutput = Utility_Add(dbgOutput, "RH",RH);
let beta_f_cm = 18.78/ (f_cm**(0.5));
dbgOutput = Utility_Add(dbgOutput, "beta_f_cm",beta_f_cm);
let beta_t_0 = 1/(0.1+(t_0_adj**(0.2)));
dbgOutput = Utility_Add(dbgOutput, "beta_t_0",beta_t_0);
let alpha_1 = (43.75/f_cm)**(0.7);
dbgOutput = Utility_Add(dbgOutput, "alpha_1",alpha_1);
let alpha_2 = (43.75/f_cm)**(0.2);
dbgOutput = Utility_Add(dbgOutput, "alpha_2",alpha_2);
let alpha_3 = (43.75/f_cm)**(0.5); // Where 45 in numerator and fcm in denominator has units of MPa
dbgOutput = Utility_Add(dbgOutput, "alpha_3",alpha_3);
let beta_H;
if (f_cm <= 45 && 1.5 * (1 + (0.012*RH)**18) * h_0 + 250 <= 1500) {
beta_H = 1.5 * (1 + (0.012*RH)**18) * h_0 + 250; //<=1500 for f_cm <= 45 MPa
}
else if (f_cm <= 45 && 1.5 * (1 + (0.012*RH)**18) * h_0 + 250 > 1500) beta_H =1500;
else if (f_cm>45 && 1.5 * (1 + (0.012*RH)** 18) * h_0 + 250 * alpha_3<= 1500*alpha_3) {
beta_H = 1.5 * (1 + (0.012*RH)** 18) * h_0 + 250 * alpha_3; //<=1500*alpha_3 for f_cm >= 45 MPa
}
else if (f_cm>45 && 1.5 * (1 + (0.012*RH)** 18) * h_0 + 250 * alpha_3> 1500*alpha_3) beta_H = 1500*alpha_3;
dbgOutput = Utility_Add(dbgOutput, "beta_H",beta_H);
let phi_RH;
if (f_cm <= 45) phi_RH = 1+ ((1-RH/100)/(0.1*(h_0**(1/3))));
else phi_RH = (1+ ((1-RH/100)/(0.1*(h_0**(1/3))))*alpha_1)*alpha_2;
dbgOutput = Utility_Add(dbgOutput, "phi_RH",phi_RH);
let phi_0 = phi_RH*beta_f_cm*beta_t_0;
dbgOutput = Utility_Add(dbgOutput, "phi_0",phi_0);
let beta_c = ((t - material.t_0) / (beta_H + (t - material.t_0)))** 0.3;
dbgOutput = Utility_Add(dbgOutput, "beta_c",beta_c);
let phi = phi_0*beta_c;
dbgOutput = Utility_Add(dbgOutput, "phi",phi);
let IRC_112_2020_Eps_cc = phi* material.Sigma / material.E_cm;
dbgOutput = Utility_Add(dbgOutput, "IRC_112_2020_Eps_cc",IRC_112_2020_Eps_cc);
let disp = IRC_112_2020_Eps_cc * material.L;
dbgOutput = Utility_Add(dbgOutput, "disp",disp);
return ({value:disp, message:msg, debug:dbgOutput});
}