corrosion
Summary
2D electrochemical model and its regressed solution
icorr = f(moisture, temperature, oxygen availability)
Field data
Volumetric water content (TDR moisture sensor)
corrosion rate (LPR, corrosion sensor) to validate the model
- corrosion.C_f(T)[source]
Return BET model parameter C sampled from a normal distribution.
- Parameters:
T (float) – temperature [K]
Note
C varies from 10 to 50. This function is not applicable for elevated temperatures
- corrosion.Cs_g_f()[source]
Calculate the atmospheric O2 concentration in the gas phase on the boundary [mol/m^3], converted from 20.95% by volume
- corrosion.De_O2_f(pars)[source]
calculate the O2 effective diffusivity of concrete :param pars: :type pars: instance of Param object
- Returns:
O2 effective diffusivity of concrete
- Return type:
float, numpy array
Notes
important intermediate Parameters
epsilon_p : porosity of hardened cement paste,
RH : relative humidity [-%]
Gas diffusion along the aggregate-paste interface makes up for the lack of diffusion through the aggregate particles themselves. Therefore, the value of effective diffusivity is considered herein as a function of the porosity of hardened cement paste. [TODO: add temperature dependence]
- corrosion.RH_to_waterByMassHCP(pars)[source]
Return water content(g/g hardened cement paste) from RH in pores/environment based on water-cement ratio w_c, cement_type, temperature by using modified BET model
Note
Reference: Xi, Y., Bazant, Z. P., & Jennings, H. M. (1993). Moisture Diffusion in Cementitious Materials Adsorption Isotherms.
- class corrosion.SectionLossModel(pars)[source]
Bases:
object
- postproc(plot=False)[source]
calculate the Pf and beta from accumulated section loss and section loss limit
- Parameters:
plot (bool, optional) – if true plot the R S curve, by default False
- run(t_end)[source]
run model to solve the accumulated section loss at t_end by using x_loss_t_fun()
- Parameters:
t_end (int, float) – year
- section_loss_with_year(year_lis, plot=True, amplify=1)[source]
use x_loss_year() to report the accumulated section loss at each time step and the corresponding Pf and beta.
- Parameters:
year_lis (list) – a list of time step [year]
plot (bool, optional) – if true, plot the RS, pf, beta with time, by default True
amplify (int, optional) – scale factor to adjust the height of the distribution curve, by default 1
- Returns:
(pf_list, beta_list)
- Return type:
tuple
- corrosion.V_m_f(t, w_c, cement_type)[source]
Calculate V_m, a BET model parameter.
- Parameters:
t (float) – Curing time/concrete age [day]
w_c (float) – Water-cement ratio
cement_type (str) – ASTM C150 cement type, see note
- Returns:
V_m : BET model parameter
- Return type:
numpy array
Note
ASTM C150 cement type:
Cement Type Description
Type I : Normal
Type II : Moderate Sulfate Resistance
Type II (MH) : Moderate Heat of Hydration (and Moderate Sulfate Resistance)
Type III : High Early Strength
Type IV : Low Heat Hydration
Type V : High Sulfate Resistance
- corrosion.calibrate_f(raw_model, field_data)[source]
[TODO] A placeholder function for future development. field_data: temperature, theta_water, icorr_list
- corrosion.epsilon_p_f(pars)[source]
Calculate the porosity of the hardened cement paste from the concrete porosity
- Parameters:
pars (instance of Param object) –
- Return type:
float, numpy array
Note
[TODO: when the concrete porosity is not known, the calculated porosity is time dependent at young age, a function of concrete mix and t]
- corrosion.iL_f(pars)[source]
calculate O2 limiting current density :param pars: parameter object that contains the material properties listed in the note. :type pars: instance of Param object
- Returns:
O2 limiting current density [A/m^2]
- Return type:
float, numpy array
Note
intermediate parameters
z : number of charge, 4 for oxygen
delta : thickness of diffusion layer [m]
pars.De_O2 : diffusivity [m^2/s]
pars.Cs_g : bulk concentration [mol/m^3]
pars.epsilon_g : gas phase fraction
- corrosion.icorr_base(rho, T, iL, d)[source]
Calculate averaged corrosion current density over the rebar-concrete interface from resistivity, temperature, limiting current, and cover thickness.
- Parameters:
rho (float or numpy array) – Resistivity [ohm.m]
T (float or numpy array) – Temperature [K]
iL (float or numpy array) – Limiting current, oxygen diffusion [A/m^2]
d (float or numpy array) – Concrete cover depth [m]
- Returns:
icorr : Corrosion current density, treated as uniform corrosion [A/m^2]
- Return type:
numpy array
Notes
Reference: Pour-Ghaz, M., Isgor, O. B., & Ghods, P. (2009). The effect of temperature on the corrosion of steel in concrete. Part 1: Simulated polarization resistance tests and model development. Corrosion Science, 51(2), 415–425. https://doi.org/10.1016/j.corsci.2008.10.034 Parameters from the reference. SI units
- corrosion.icorr_f(pars)[source]
Calculate the corrosion current density using icorr_base() with volumetric water content.
- Parameters:
pars (Param) – An instance of the Param class containing the following attributes:
pars.theta_water (float) – Volumetric water content
pars.T (float or numpy array) – Temperature [K]
pars.iL (float or numpy array) – Limiting current, oxygen diffusion [A/m^2]
pars.d (float or numpy array) – Concrete cover depth [m]
pars.theta2rho_coeff_a (float) – Regression coefficient of theta2rho_fun
pars.theta2rho_coeff_b (float) – Regression coefficient of theta2rho_fun
- Returns:
icorr : corrosion current density [A/m^2]
- Return type:
float, numpy array
- corrosion.icorr_to_mmpy(icorr)[source]
Converts icorr [A/m^2] to corrosion rate [mm/year] using Faraday’s laws
- Parameters:
icorr (float or numpy array) – Corrosion current density [A/m^2]
- Returns:
Corrosion rate, section loss [mm/year]
- Return type:
float or numpy array
- corrosion.k_f(C_mean, w_c, t, cement_type)[source]
Return BET model parameter k
- Parameters:
C_mean (float) – Mean value of BET model parameter C
w_c (float) – Water-cement ratio
t (float) – Curing time/concrete age [day]
cement_type (str) – ASTM C150 cement type
- Returns:
k : BET model parameter
- Return type:
numpy array
- corrosion.mmpy_to_icorr(rate)[source]
Converts corrosion rate [mm/year] to icorr [A/m^2] using Faraday’s laws
- Parameters:
rate (float or numpy array) – Corrosion rate, section loss [mm/year]
- Returns:
Corrosion current density [A/m^2]
- Return type:
float or numpy array
- corrosion.theta2rho_fun(theta_water, a, b)[source]
Convert volumetric water content to resistivity using an exponential function.
- Parameters:
theta_water (float or numpy array) – Volumetric water content
a (float) – Regression coefficient
b (float) – Regression coefficient
- Returns:
Resistivity
- Return type:
float or numpy array
- corrosion.theta_water_to_waterByMassHCP(pars)[source]
convert water content from volumetric by concrete to volumetric in HCP to g/g in HCP, a reverse function of waterByMassHCP_to_theta_water()
- Parameters:
pars (Param) – An instance of the Param class containing the following attributes:
pars.theta_water (float) – volumetric water content in concrete
pars.rho_c (float) – Density of cement [kg/m^3]
pars.rho_a (float) – Density of aggregate [kg/m^3]
pars.a_c (float) – Aggregate-cement ratio
pars.w_c (float) – Water-cement ratio
- Returns:
waterByMassHCP : Water content by mass in hardened cement paste [g/g]
- Return type:
float
- corrosion.waterByMassHCP_to_RH(pars)[source]
Return RH in pores/environment from water content(g/g hardened cement paste) based on water-cement ratio w_c, cement type, temperature, a reverse function of RH_to_waterByMassHCP()
- corrosion.waterByMassHCP_to_theta_water(pars)[source]
Convert water content from g/g hardened cement paste (HCP) to volumetric in HCP to volumetric in concrete
- Parameters:
pars (Param) – An instance of the Param class containing the following attributes:
pars.waterByMassHCP (float) – Water content by mass in hardened cement paste [g/g]
pars.rho_c (float) – Density of cement [kg/m^3]
pars.rho_a (float) – Density of aggregate [kg/m^3]
pars.a_c (float) – aggregate-cement ratio
pars.w_c (float) – Water-cement ratio
- Returns:
theta_water : volumetric water content in concrete
- Return type:
float
- corrosion.x_loss_t_fun(t_end, n_step, x_loss_rate, p_active_t_curve)[source]
Return samples of x_loss at a given time t_end. The samples represent the distribution of all possible x_loss with different corrosion history
- Parameters:
t_end (float) – Year in which the x_loss is reported
n_step (int) – Number of time steps
x_loss_rate (float) – Averaged corrosion rate (x-loss rate)
p_active_t_curve (tuple) – (t_lis_curve, pf_lis_curve) - Probability curve data
- Returns:
Section loss at t_end year, a large sample from the distribution
- Return type:
numpy array
- corrosion.x_loss_year(model, year_lis, plot=True, amplify=80)[source]
Run x_loss_t_fun() function over time.
- Parameters:
model (SectionLossModel object) – An instance of the SectionLossModel class
year_lis (list) – List of years
plot (bool, optional) – Flag indicating whether to plot the results, by default True
amplify (int, optional) – Amplification factor for plotting, by default 80
- Returns:
list – List of probabilities of failure (Pf) at each year
list – List of reliability factors (beta) at each year