Published
Edited
Aug 12, 2021
1 fork
Importers
Insert cell
Insert cell
Insert cell
specimen = ({
//////////////
// MATERIAL //
//////////////
f_cm: 40, // Mean Compressive Strength at 28th day (MPa)
E_cm: 35000, // Elastic Modulus at 28th day (MPa)
cement_hardtype: "N", // Cement Hardening Type (CEB-FIP 90 only; Choices: "SL", "N", "R", "RS")
cement_strengthclass: "32.5N", // Strength Class (fib MC 2010 only)
// Choices: "32.5N", "32.5R", "42.5N", "42.5R", "52.5N", "52.5R"
cement_type: "I", // Cement Type (CEB-FIP 90 Updated Knowledge and Model B3 only)
// Choices: "I", "II", "III"
// (Model BAZANT B4 uses different notation for cement type and for this
// model according to explanation just after the equation 43 (RILEM-B4 document)
// R: Type I, SL: Type II, RS: Type III are assumed to be consistent with the
// other codes.)

//////////////
// GEOMETRY //
//////////////

V_S: 150, // Volume to surface area ratio (mm)
L: 1000, // Specimen Length (mm)
notional_thickness_coef: 1.5, // notional thickness coefficient (CEB-FIP 78 only)
/////////////////
// ENVIRONMENT //
/////////////////
RH: 60, // Relative Humidity (%)
T: 35, // Temperature (C; CEB-FIP90, CEB-FIP2010, EN1992, and IRC2020 only)
Consider_Temperature_Adjusted_Age_of_Concrete: "No", // Options : "Yes" , "No"
// For CEB-FIP90, CEB-FIP2010,
// IRC112 2020 and EN1992/Eurocode 2004
includeHighStressEffect: "No", // Options: "Yes", "No"
// For CEB-FIP90, CEB-FIP2010, and EN1992/Eurocode 2004
//////////////////
// CONSTRUCTION //
//////////////////

t_s: 0, // age when shrinkage starts
t_0: 16, // age of loading

//////////
// LOAD //
//////////
P: -10000000, // Applied axial load (N)
Sigma: -20.833333, // Axial Compressive Stress (MPa) (P/(b*d))

////////////////////////////////////////////////
// ADDITIONAL PARAMETERS FOR MODELS B3 and B4 //
////////////////////////////////////////////////

// Material
c: 350, // Cement content (in kg/m^3) = 13.69 lb/ft^3
a_c: 5, // Aggregate to cement ratio
w_c: 0.5, // Water to cement ratio
w: 175, // Water content (kg/m^3; Model B3 only)
aggregate_type: "Unknown", // Aggregate type of concrete (Model B4 only)
// Choices: Diabase, Quartzite, Limestone, Sandstone, Granite, QuartzDiorite, Unknown
density: 2350, // density of concrete (Model B4 only)
simplifiedDesign: true, // (Model B4 only)
//If designer knows admixture class composition of concrete
admixtureClass_Shrinkage: "", // Admixture Class
admixtureClass_Creep: "",

// Geometry
specimen_geometry: "infinite square prism", // "infinite slab", "infinite cylinder", "infinite square prism", "sphere", "cube"

// Environment
T_cur: 20, // Ambient temperature while curing (Model B4 only)
curing_condition: "normalcuring", // Choices: "normalcuring", "steamcuring", "curedinwater" (Model B3 only)
// Construction
t_c: 16, // age when drying starts (for creep)
UH_R: 4000, // activation energy of hydration where R is the gas constant (Model B4 only)
US_R: 4000, // activation energy of moisture diffusion and of creep where R is the gas constant (Model B4 only)
///////////////////////////////////////////
// ADDITIONAL PARAMETERS FOR AS3600-2009 //
///////////////////////////////////////////
environmentVariable: 0.6, // (k4) Choices: 0.7 for arid, 0.65 for interior, 0.60 for temperate inland
basicCreepCoef: 0, // 3.1.8.2 (phi_cbb) if "basicCreepCoef: 0", default values are used based on Table 3.1.8.2
basicDryingShrinkageStrain: 0.0008, //3.1.7.2
});
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
CEB_FIP_78_Eps_cc = function(material, t) {
let msg = "";
let dbg = "CEB FIP 78 Creep";
let h = 2*material.V_S;
dbg = Utility_Add(dbg, "h", h);
let h_0 = (h *material.notional_thickness_coef) / 10; // [e.9]
dbg = Utility_Add(dbg, "h_0", h_0);
let K_1 = Math.exp(5.02 / h_0 + Math.log(6.95 * h_0 ** 1.25)); // (D-5.2)
dbg = Utility_Add(dbg, "K_1", K_1);
let K_2 = Math.exp(0.00144 * h_0 - 1.1 / h_0 - Math.log(1.005 * h_0 ** 0.2954)); // (D-5.3)
dbg = Utility_Add(dbg, "K_2", K_2);
let alpha; // Clause e.1.5
if (material.cement_hardtype == "SL" || material.cement_hardtype == "N")
alpha = 1;
else if (material.cement_hardtype == "R")
alpha = 2;
else if (material.cement_hardtype == "RS")
alpha = 3;
let t_adj; // Clause e.1.3.2 & [e.8]
if (material.Consider_Temperature_Adjusted_Age_of_Concrete == "Yes")
t_adj = alpha / 30 * (material.T + 10) * t;
else
t_adj = t * alpha;
dbg = Utility_Add(dbg, "t_adj", t_adj);
let t0_adj; // Clause e.1.3.2 & [e.8]
if (material.Consider_Temperature_Adjusted_Age_of_Concrete == "Yes")
t0_adj = alpha / 30 * (material.T + 10) * material.t_0;
else
t0_adj = material.t_0 * alpha;
dbg = Utility_Add(dbg, "t0_adj", t0_adj);
let Beta_f_t = (t_adj / (t_adj + K_1)) ** K_2; // (D-5.1)
dbg = Utility_Add(dbg, "Beta_f_t", Beta_f_t);
let Beta_f_t0 = (t0_adj / (t0_adj + K_1)) ** K_2; // (D-5.1)
dbg = Utility_Add(dbg, "Beta_f_t0", Beta_f_t0);

let Beta_d = ((t_adj - t0_adj) / (t_adj - t0_adj + 328)) ** (1/4.2); //(D-4)
dbg = Utility_Add(dbg, "Beta_d", Beta_d);

let Beta_a = 0.8 * (1 - (t0_adj / (t0_adj + 47)) ** (1 / 2.45)); // [e.4]
Beta_a = 0.0; // (LARSA 4D assumption)
msg += "Beta_a is taken as 0 (LARSA 4D assumption), ";
dbg = Utility_Add(dbg, "Beta_a", Beta_a);

let Phi_f1 = 4.45 - 0.035 * material.RH; //(D-6)
dbg = Utility_Add(dbg, "Phi_f1", Phi_f1);
let Phi_f2 = Math.exp(4.4 * 0.00001 * h_0 - 0.35 / h_0 - Math.log(h_0 ** 0.1667 / 2.6)); // (D-7)
dbg = Utility_Add(dbg, "Phi_f2", Phi_f2);
let Phi_f = Phi_f1 * Phi_f2; // taken form expalantion of [e.4]
dbg = Utility_Add(dbg, "Phi_f", Phi_f);

let Phi_d = 0.4; //denotes delayed modulus of elasticity, taken form expalantion of [e.4]
dbg = Utility_Add(dbg, "Phi_d", Phi_d);

let Phi_t_t0 = Beta_a + Phi_d * Beta_d + Phi_f * (Beta_f_t - Beta_f_t0); // [e.4]
dbg = Utility_Add(dbg, "Phi_t_t0", Phi_t_t0);

let CEB_FIP_78_Eps_cc = (material.Sigma * Phi_t_t0) / material.E_cm; // [e.1]

let disp = CEB_FIP_78_Eps_cc*material.L;
if (-material.Sigma > 0.4*(material.f_cm-8)) msg += "Applied stress is larger than 0.4f<sub>ck</sub>";

return ({value:disp, message:msg, debug:dbg});
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
CEB_FIP_90_upd_Eps_sh = function(material,t) {
let msg = ""; // holds the warning messages
let Alpha_as; // talen from explanation of eq (3.1-16 b)
if (material.cement_type == "I") Alpha_as = 700;
else if (material.cement_type == "II") Alpha_as = 800;
else if (material.cement_type == "III") Alpha_as = 600;
else return "Undefined Cement Type";
let t_1 = 1;
let f_cm_0 = 10;
let RH_0 = 100;
let h_0 = 100;

let Beta_as = 1-Math.exp(-0.2*(t/t_1)**0.5); // eq(3.1-16 b)

let Eps_caso = -Alpha_as*((material.f_cm/f_cm_0)/(6+material.f_cm/f_cm_0))**2.5 *10**-6; // eq(3.1-16 a)
//Autogeneous shrinkage
let Eps_cas = Eps_caso * Beta_as; // eq(3.1-15 b)

let alpha_ds1; // taken from explanation of eq(3.1-17 d)
if (material.cement_type == "I") alpha_ds1 = 4;
else if (material.cement_type == "II") alpha_ds1 = 3;
else if (material.cement_type == "III") alpha_ds1 = 6;
else return "Undefined Cement Type";

let alpha_ds2; // taken from explanation of eq(3.1-17 d)
if (material.cement_type == "I") alpha_ds2 = 0.11;
else if (material.cement_type == "II") alpha_ds2 = 0.13;
else if (material.cement_type == "III") alpha_ds2 =0.12;
else return "Undefined Cement Type";

let Eps_cdso = (220+110*alpha_ds1)*Math.exp((-alpha_ds2*material.f_cm)/f_cm_0)*0.000001; // eq(3.1-17 a)

let Beta_s1 = ((3.5*f_cm_0)/material.f_cm)** 0.1; // eq(3.1-17 d)

let Beta_RH; // eq(3.1-17 b)
if (material.RH < 99*Beta_s1) Beta_RH = -1.55*(1 -(material.RH/RH_0)**3);
else Beta_RH = 0.25;

let h = 2*material.V_S;

let Beta_ds =((t-material.t_s)/t_1/(350*(h/h_0)**2+(t-material.t_s)/t_1))**0.5; // eq(3.1-17 c)

// Drying shrinkage
let Eps_cds = Eps_cdso * Beta_RH * Beta_ds; // eq(3.1-15 c)

let CEB_FIP_90_upd_Eps_sh = Eps_cas + Eps_cds; // eq(3.1-15 a)

let disp = CEB_FIP_90_upd_Eps_sh*material.L;

return {value:disp, message: msg};
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
CEB_FIP_90_Eps_cc = function(material, t) {
let msg = "";
let dbgOutput = "CEB-FIP 90 Creep:";
let t_0_adj = material.t_0;
dbgOutput = Utility_Add(dbgOutput, "TempAdjTime",t_0_adj);
if (material.Consider_Temperature_Adjusted_Age_of_Concrete == "Yes")
t_0_adj = t_0_adj * Math.exp(13.65-(4000./(273.+material.T))); // eq(2.1-86)
dbgOutput = Utility_Add(dbgOutput, "TempAdjTime",t_0_adj);
let Alpha; // taken from explanation of eq(9-40)
if (material.cement_hardtype =="SL")
Alpha = -1;
else if (material.cement_hardtype == "R" || material.cement_hardtype == "N")
Alpha = 0;
else if (material.cement_hardtype == "RS")
Alpha = 1;
else return ({value:0.0, message:"Undefined Strength Class - Alpha parameter", debug:dbgOutput});

t_0_adj = t_0_adj*((9/(2+t_0_adj**(1.2)))+1)**Alpha; // eq(2.1-72)
dbgOutput = Utility_Add(dbgOutput, "t0",t_0_adj);
let RH_0 =100; // taken from explanation on page 55
let f_cm_0 = 10; // taken from explanation on page 55
let h_0 = 100; // taken from explanation on page 55

let t_1= 1; // taken from explanation on page 55
let h = 2*material.V_S;
let Beta_H; // eq(2.1-71)
if ((150*(1+(1.2*material.RH/RH_0)** 18)*(h/h_0) +250) <= 1500)
Beta_H =150*(1+(1.2*material.RH / RH_0)** 18)*(h/h_0)+250;
else
Beta_H = 1500;
dbgOutput = Utility_Add(dbgOutput, "Beta_H", Beta_H);

let Beta_c =(((t - t_0_adj)/t_1)/(Beta_H + (t-t_0_adj)/t_1))**0.3; // eq(2.1-70)
dbgOutput = Utility_Add(dbgOutput, "Beta_c", Beta_c);

let Beta_t0 = 1 / (0.1+(t_0_adj / t_1)**0.2); //eq (2.1-68)
dbgOutput = Utility_Add(dbgOutput, "Beta_t0", Beta_t0);

let Beta_fcm = 5.3/(material.f_cm/f_cm_0)**0.5; // eq(2.1-67)
dbgOutput = Utility_Add(dbgOutput, "Beta_fcm", Beta_fcm);
let Phi_RH =1 +(1-material.RH/RH_0)/(0.46 *(h/h_0)**(1/3)); // eq(2.1-66)
dbgOutput = Utility_Add(dbgOutput, "Phi_RH", Phi_RH);

let Phi_0 = Phi_RH * Beta_fcm * Beta_t0; // eq(2.1-65)
dbgOutput = Utility_Add(dbgOutput, "Phi_0", Phi_0);

let Phi = Phi_0 * Beta_c; // eq(2.1-64)
dbgOutput = Utility_Add(dbgOutput, "Phi", Phi);
//Effect of High Stress
let Phi_corrected = Phi;
if (material.includeHighStressEffect == "Yes") // if high stress effect is included
{
if (-material.Sigma<=0.4*material.f_cm) Phi_corrected = Phi; // eq(2.1-73b)
else Phi_corrected = Phi*Math.exp(1.5*(-material.Sigma/material.f_cm-0.4)); // eq(2.1-73a)
}
dbgOutput = Utility_Add(dbgOutput, "Phi_corrected", Phi_corrected);
let CEB_FIP_90_Eps_cc = (material.Sigma * Phi_corrected) / material.E_cm; // eq(2.1-61)

let disp = CEB_FIP_90_Eps_cc *material.L;
if (-material.Sigma> 0.6*material.f_cm) msg += "Applied stress is larger than 0.6f<sub>cm</sub>";
return ({value:disp, message:msg, debug:dbgOutput});
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
CEB_FIP_2010_Eps_sh = function(material,t,t_s) {
let msg = ""; // holds the warning messages
let Beta_s1; // eq(9-14)
if ((35 / material.f_cm) ** 0.1 <= 1) Beta_s1 = (35 / material.f_cm) ** 0.1;
else Beta_s1 = 1;

let Beta_RH; // eq(9-14)
if (material.RH < 99 * Beta_s1 && material.RH >= 40 * Beta_s1)
Beta_RH = -1.55 * (1 - (material.RH / 100) ** 3);
else if (material.RH >= 99 * Beta_s1) Beta_RH = 0.25;
else return "Undefined Relative Humidity - Beta_RH parameter";

let h = 2*material.V_S;
let Beta_ds =((t -t_s) /(0.035 * h ** 2 + (t -t_s))) ** 0.5; //eq(9-15)

let Alpha_ds1; // Table(9-2)
if (material.cement_strengthclass == "32.5N") Alpha_ds1 = 3;
else if (material.cement_strengthclass == "32.5R" || material.cement_strengthclass == "42.5N")
Alpha_ds1 = 4;
else if (material.cement_strengthclass == "42.5R" ||material.cement_strengthclass == "52.5N" ||material.cement_strengthclass == "52.5R")
Alpha_ds1 = 6;
else return "Undefined Cement Type - Alpha_ds1 parameter";
let Alpha_ds2; // Table(9-2)
if (material.cement_strengthclass == "32.5N") Alpha_ds2 = 0.013;
else if (material.cement_strengthclass == "32.5R" || material.cement_strengthclass == "42.5N")
Alpha_ds2 = 0.012;
else if (material.cement_strengthclass == "42.5R" ||material.cement_strengthclass == "52.5N" ||material.cement_strengthclass == "52.5R")
Alpha_ds2 = 0.012;
else return "Undefined Cement Type - Alpha_ds2 parameter";

let Eps_cds0 = ((220 + 110 * Alpha_ds1) * Math.exp(-Alpha_ds2 * material.f_cm) )* 0.000001; // eq(9-13)

let Eps_cds = Eps_cds0 * Beta_RH * Beta_ds; //drying shrinkage at time t. eq(9-10 c)

let Alpha_bs; // Table(9-2)
if (material.cement_strengthclass == "32.5N") Alpha_bs = 800;
else if (material.cement_strengthclass == "32.5R" || material.cement_strengthclass == "42.5N")
Alpha_bs = 700;
else if (material.cement_strengthclass == "42.5R" ||material.cement_strengthclass == "52.5N" ||material.cement_strengthclass == "52.5R")
Alpha_bs = 600;
else return "Undefined Cement Type - Alpha_bs parameter";

if (material.cement_hardtype == "SL")
Alpha_ds2 = 0.013;
else if (material.cement_hardtype == "N")
Alpha_ds2 = 0.012;
else
Alpha_ds2 = 0.012;
let Eps_cbs0 = -Alpha_bs * (((material.f_cm / 10 )/ (6 + material.f_cm / 10))**2.5) * 0.000001; // eq(9-11)

let Beta_bs = (1-Math.exp(-0.2*Math.sqrt(t))); // eq(9.12)

let Eps_cbs = Eps_cbs0 * Beta_bs; // basic shrinkage at time t. eq(9-10 b)

let CEB_FIP_2010_Eps_sh = Eps_cbs + Eps_cds; // eq(9-10 a)

let disp = CEB_FIP_2010_Eps_sh*material.L;

return {value: disp, message: msg};
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
IRC_112_2020_Eps_cc = function(material,t){
let msg = ""; // holds the warning messages
let dbgOutput = "IRC_112_2020 Creep"
let f_cm = material.f_cm; // mean compressive strength at age of 28 days !!! fcm=fck+10 in IRC !!!
let h_0 = 2 * material.V_S; // notional thickness, should be in mm
let t_0_adj = material.t_0; // age of loading
if(material.Consider_Temperature_Adjusted_Age_of_Concrete == "Yes") {
t_0_adj = (Math.exp(-(4000/(273+material.T)-13.65)))*t_0_adj; // eq(B.10)
dbgOutput = Utility_Add(dbgOutput, "Temp_Adj_T0",t_0_adj);
}
let a; // taken from explanation of (B.9)
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; // eq(B.9)
if (t_0_adj < 0.5) t_0_adj = 0.5;
dbgOutput = Utility_Add(dbgOutput, "t_0",t_0_adj);
let RH = material.RH; // relative humidity
let sigma = material.sigma; //MPa
let E_cm= 35000; // Elastic Modulus at 28th day (MPa)
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});
}
Insert cell
md `# Utility Functions`
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
_ = require('lodash')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more