Skip to content

Poromechanics ​

Before this page

Homogenization schemes, which produces the drained stiffness every formula below starts from, and Cracks for the crack family of the second example.

Once a scheme has produced a drained stiffness , the poroelastic law of a saturated medium is closed without any further homogenization: for a solid phase with uniform elastic properties (compliance  ),

the Biot tensor and Biot modulus (Coussy, 2004) — here, and nowhere else in this documentation, denotes the Biot tensor rather than a crack opening displacement. They enter the constitutive law as

is generally anisotropic even for an isotropic solid, because the pore space need not be isotropic.

julia
using MeanFieldHomogenization, TensND

k_s, μ_s, φ = 20.0, 12.0, 0.2
C_s = TensISO{3}(3k_s, 2μ_s)

rve = RVE()
add_phase!(rve, :M, Ellipsoid(1.0), Dict(:C => C_s); fraction = :rest)
add_phase!(rve, :P, Ellipsoid(1.0), Dict(:C => TensISO{3}(1.0e-9, 1.0e-9));
           fraction = φ)

par = poroelastic_parameters(homogenize(rve, MoriTanaka()), C_s, φ)
(b = par.B[1, 1], invM = par.inverse_modulus, M = par.modulus)
(b = 0.35999999998920007, invM = 0.007999999999460003, M = 125.00000000843745)

Spherical pores give    with the familiar   . Aligned cracks do not:

julia
rve_c = RVE()
add_phase!(rve_c, :M, Ellipsoid(1.0), Dict(:C => C_s); fraction = :rest)
add_phase!(rve_c, :CR, PennyCrack(1.0), Dict(:C => C_s); density = 0.08)

B = biot_tensor(homogenize(rve_c, MoriTanaka()), C_s)
(B₁₁ = B[1, 1], B₃₃ = B[3, 3])       # normal to the cracks is e₃
(B₁₁ = 0.10810810810810823, B₃₃ = 0.32432432432432445)

Several solid phases ​

The formula for rests on a single solid phase. With several, the Biot tensor follows from Levin's theorem: the pore pressure is the prestress   of the pores, and of the cracks it fills, so that       , with the concentration tensors of the scheme (Concentration tensors of the phases). Stiff grains are added to the porous solid above:

julia
rve_g = RVE()
add_phase!(rve_g, :M, Ellipsoid(1.0), Dict(:C => C_s); fraction = :rest)
add_phase!(rve_g, :G, Ellipsoid(1.0), Dict(:C => TensISO{3}(3 * 60.0, 2 * 40.0));
           fraction = 0.3)
add_phase!(rve_g, :P, Ellipsoid(1.0), Dict(:C => TensISO{3}(1.0e-9, 1.0e-9));
           fraction = φ)

ct = concentration_tensors(rve_g, MoriTanaka(:M), :C)
𝟏 = TensISO{3}(1.0)
B_g = -levin_preflux(ct, Dict(:P => -𝟏))
(B₁₁ = B_g[1, 1], one_solid_formula = biot_tensor(ct.effective, C_s)[1, 1])
(B₁₁ = 0.41204819276603716, one_solid_formula = 0.1518072289015141)

The second number applies the single-solid formula as if the matrix were the only solid; it is not the Biot coefficient of this material.

The fluid is assumed incompressible

above holds for  . A compressible fluid adds a storage term . The distinction is not cosmetic: with an incompressible fluid and compressible grains the Skempton coefficient exceeds one, because the pore volume is held fixed while the grains themselves compress.

Effective stresses ​

Two different measures, easy to confuse:

drives
terzaghi_stress  the microstructure — crack opening and closure
biot_effective_stress  the macroscopic law, which it reduces to the drained one

They coincide only when  . That the Terzaghi measure is the one governing the pore space is the argument of (Barthélémy and Daniel, 2011) § 1.1: the loading splits into a dry problem under   , plus a uniform field that carries no strain singularity and so cannot open or close a flat crack.

Drained ↔ undrained ​

via undrained_stiffness and drained_stiffness, with skempton_tensor giving the pore pressure built up by an undrained stress increment,    .

Homogeneous solid phase only

These relations need a solid phase with uniform elastic properties — a rock matrix with pores or fractures. A medium built from two distinct solid constituents needs the general Levin/eigenstrain route, and is then not defined.

Where to go next ​

Sensitivities differentiates the effective properties of the preceding pages with respect to any input of their RVE. The Biot coefficients of this page are the material side of The coupled poroelastic problem, where a finite-element code consumes them, and Multiscale elasticity of a hydrating cement paste uses them to pass from drained to undrained moduli.