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

class corrosion.CorrosionModel(pars)[source]

Bases: object

calibrate(field_data)[source]
copy()[source]
run()[source]

Solve for icorr and the corresponding section loss rate

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

copy()[source]

Return a deep copy of the 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