Skip to content

API — Cracks ​

inverse_property_contribution and delta_inverse_property are Core-level generics shared with every other inclusion family; they are documented under API — Concentration & contribution.

MeanFieldHomogenization.Cracks Module
julia
MeanFieldHomogenization.Cracks

COD tensors, compliance contributions, SIF and DIF for flat cracks embedded in an elastic matrix of arbitrary anisotropy. Public entry points: cod_tensor, inverse_property_contribution, sif, dif.

MeanFieldHomogenization.Cracks.EllipticCrack Type
julia
EllipticCrack{T, S<:CrackShape, B<:AbstractBasis}

Flat elliptical crack with semi-axes   oriented by a local basis .

MeanFieldHomogenization.Cracks.RibbonCrack Type
julia
RibbonCrack{T, B<:AbstractBasis}

Ribbon-like (tunnel) crack of half-width along , unbounded along , with normal .

MeanFieldHomogenization.Cracks.PennyCrack Function
julia
PennyCrack(a; euler_angles=(0,0,0))

Convenience constructor for a circular (penny-shaped) flat crack.

MeanFieldHomogenization.Cracks.ConductiveCrack Type
julia
ConductiveCrack(crack, conductivity)
ConductiveCrack(a; conductivity, euler_angles = ())

A flat crack that conducts rather than blocks: the preferential flow path of a fractured rock.

conductivity is the fracture conductivity    — the intrinsic conductivity of the fluid-filled gap times its aperture, with units of conductivity × length. It is the quantity that stays finite as the crack flattens, and the one field data reports.

Mechanically a flowing crack is an ordinary open crack, so the whole elastic branch (cod_tensor, , , the delta_* seam) is inherited unchanged from the wrapped EllipticCrack; only the transport response differs.

julia
cr = ConductiveCrack(1.0; conductivity = 2.0e-13, euler_angles = (π/4, 0.0))
property_contribution(cr, TensISO{3}(1.0e-18))     # 𝕂, POSITIVE, in-plane

Penny shape only

The closed form above is derived for a circular crack. An elliptical one has a different in-plane structure and is rejected rather than approximated.

MeanFieldHomogenization.Cracks.fracture_conductivity Function

The fracture conductivity    of a ConductiveCrack.

MeanFieldHomogenization.Cracks.with_conductivity Function
julia
with_conductivity(c::ConductiveCrack, C) -> ConductiveCrack

The same fracture with a new conductivity — how the cubic aperture law   is applied during a simulation.

MeanFieldHomogenization.Cracks.cod_tensor Function
julia
cod_tensor(crack, C₀; method=:auto, abstol=1e-8, reltol=1e-6, maxiters=100_000)
    -> Tens{2,3}

Size-independent crack-opening-displacement (COD) tensor defined from the average displacement jump on the crack surface through

where is the semi-minor in-plane semi-axis (  ). factors the crack compliance tensor as

  • Elliptic:     ;

  • Ribbon:     ;

with    and      the second Hill tensor (Kachanov, 1992; Sevostianov and Kachanov, 2002; Barthélémy et al., 2021). The elliptic and ribbon factorizations are related by   .

For isotropic or aligned-TI matrices the kernel is analytical (Hoenig, 1978; Kanaun and Levin, 2009) with method = :auto or :analytical; an explicit numerical method is honored. For arbitrarily anisotropic matrices is the inverse of an integral over the directions of the crack plane of the reduced kernel (Barthélémy, 2026), itself a line integral along the normal (Kanaun and Levin, 2009), computed numerically: by nested adaptive quadrature (:nestedquadgk, the :auto choice), by the DECUHR cubature (:decuhr), or with the inner integral by residues (:residues). The flattening route of Barthélémy (2009), the first-order term of the Hill tensor of a flat ellipsoid in its aspect ratio, gives the same tensor.

Alias: B_tensor.

julia
cod_tensor(crack, K₀::AbstractTens{2,3}; method=:auto, kw...) -> Real

Size-independent thermal crack-opening-displacement scalar for a flat crack in a conductor of 2nd-order conductivity tensor . Analog of the elasticity COD tensor: in the 2nd- order problem, the temperature jump across the crack is scalar and only the normal component of the heat flux drives it, so a single scalar captures the full crack flexibility. The associated size-independent resistivity contribution , returned by inverse_property_contribution(crack, K₀), is

The rank-1 direction is the crack normal for any : the null space of     is spanned by it. Apply delta_inverse_property to recover the dilute resistivity correction     (elliptic) or     (ribbon).

is normalized exactly like the elastic — by the in-plane half-width — so   with   and  . Because the order-2 acoustic form is a scalar, the closed form holds for every anisotropy, through a 2×2 eigenvalue problem on  ; see the theory page docs/src/theory/thermal_cracks.md and its derivation script scripts/16_cod_symbolic_thermal.jl.

These values changed in v0.4.0

The thermal closed forms up to v0.3.2 were too small by (elliptic) and (ribbon).

MeanFieldHomogenization.Cracks.B_tensor Function
julia
cod_tensor(crack, C₀; method=:auto, abstol=1e-8, reltol=1e-6, maxiters=100_000)
    -> Tens{2,3}

Size-independent crack-opening-displacement (COD) tensor defined from the average displacement jump on the crack surface through

where is the semi-minor in-plane semi-axis (  ). factors the crack compliance tensor as

  • Elliptic:     ;

  • Ribbon:     ;

with    and      the second Hill tensor (Kachanov, 1992; Sevostianov and Kachanov, 2002; Barthélémy et al., 2021). The elliptic and ribbon factorizations are related by   .

For isotropic or aligned-TI matrices the kernel is analytical (Hoenig, 1978; Kanaun and Levin, 2009) with method = :auto or :analytical; an explicit numerical method is honored. For arbitrarily anisotropic matrices is the inverse of an integral over the directions of the crack plane of the reduced kernel (Barthélémy, 2026), itself a line integral along the normal (Kanaun and Levin, 2009), computed numerically: by nested adaptive quadrature (:nestedquadgk, the :auto choice), by the DECUHR cubature (:decuhr), or with the inner integral by residues (:residues). The flattening route of Barthélémy (2009), the first-order term of the Hill tensor of a flat ellipsoid in its aspect ratio, gives the same tensor.

Alias: B_tensor.

julia
cod_tensor(crack, K₀::AbstractTens{2,3}; method=:auto, kw...) -> Real

Size-independent thermal crack-opening-displacement scalar for a flat crack in a conductor of 2nd-order conductivity tensor . Analog of the elasticity COD tensor: in the 2nd- order problem, the temperature jump across the crack is scalar and only the normal component of the heat flux drives it, so a single scalar captures the full crack flexibility. The associated size-independent resistivity contribution , returned by inverse_property_contribution(crack, K₀), is

The rank-1 direction is the crack normal for any : the null space of     is spanned by it. Apply delta_inverse_property to recover the dilute resistivity correction     (elliptic) or     (ribbon).

is normalized exactly like the elastic — by the in-plane half-width — so   with   and  . Because the order-2 acoustic form is a scalar, the closed form holds for every anisotropy, through a 2×2 eigenvalue problem on  ; see the theory page docs/src/theory/thermal_cracks.md and its derivation script scripts/16_cod_symbolic_thermal.jl.

These values changed in v0.4.0

The thermal closed forms up to v0.3.2 were too small by (elliptic) and (ribbon).

MeanFieldHomogenization.Cracks.crack_density_factor Function
julia
crack_density_factor(crack) -> Real

Geometric prefactor relating a density-like amount to the dilute effective correction, i.e. the single number shared by the two three-argument seams delta_inverse_property and delta_property:

julia
Δ = crack_density_factor(crack) * ε * X
  • for an elliptical (or penny-shaped) crack, whose Budiansky density is    ;

  • for a ribbon crack, whose density is   .

Dispatched on shape_trait, so a user-defined crack inherits the right prefactor for free. A flat morphology with a different density convention overrides this single method rather than the four delta_* ones.

See Budiansky and O'Connell (1976).

MeanFieldHomogenization.Cracks.CrackShape Type
julia
CrackShape

Abstract supertype used as the second type parameter of EllipticCrack. Concrete subtypes: Penny ( ) and EllipticShape ( ).

MeanFieldHomogenization.Cracks.EllipticShape Type

General flat elliptical crack: a > b.

MeanFieldHomogenization.Cracks.Penny Type

Circular (penny-shaped) flat crack: a == b.

MeanFieldHomogenization.Cracks.Ribbon Type
julia
Ribbon

Placeholder type tag for ribbon-like cracks. Mirrors the role of CrackShape for elliptical cracks.

MeanFieldHomogenization.Cracks.crack_basis Function

Return the local basis of the crack.

MeanFieldHomogenization.Cracks.crack_normal Function

Return the unit normal of the crack plane.

MeanFieldHomogenization.Cracks.semi_major Function

Semi-major axis of an elliptical crack.

MeanFieldHomogenization.Cracks.semi_minor Function

Semi-minor axis of an elliptical crack, or half-width of a ribbon crack.

MeanFieldHomogenization.Cracks.aspect_ratio Function
julia
aspect_ratio(c)

Aspect ratio   for an elliptical crack, or zero(T) for a RibbonCrack (limit case).

MeanFieldHomogenization.Cracks.sif Function
julia
sif(crack, C₀, Σ; y₀=nothing, method=:auto, kw...) -> (𝐊, (Kᴵ, Kᴵᴵ, Kᴵᴵᴵ))

Stress intensity factor vector at a point of the crack front, together with its decomposition on (after Irwin (1957), Kassir and Sih (1968), Willis (1968); energy release rate identity    in Barnett and Asaro (1972), Rice (1989)).

For a ribbon crack (  )     (independent of the matrix stiffness). For an elliptic crack, is obtained from the COD tensor of the actual crack and the COD tensor of the tangent ribbon crack at the observation point:

The central identity     is purely local (Kanaun, 1981; Kunin, 1983; Kanaun and Levin, 2009).

MeanFieldHomogenization.Cracks.dif Function
julia
dif(crack, C₀, Σ; method=:auto, kw...) -> Tens{1,3}
julia
dif(crack, K₀::AbstractTens{2,3}, σ∞; method=:auto, kw...) -> Real

Temperature intensity factor (analog of displacement intensity factor) for a flat crack driven by the remote vector     :

Same convention as the thermal sif: the driving vector is the transport twin of the remote stress, so the formula is the elastic one symbol for symbol. Returns a scalar (vs the Tens{1,3} returned by the elasticity dif) since the temperature field is scalar.

MeanFieldHomogenization.Cracks.compliance_from_cod Function
julia
compliance_from_cod(B, crack, ℬ=get_basis(B)) -> Tens{4,3}

    , with the crack-shape-dependent factor and the third vector of ℬ: what inverse_property_contribution returns from cod_tensor, and the exact inverse of cod_from_compliance.

julia
compliance_from_cod(B, ℬ=get_basis(B)) -> Tens{4,3}

Elliptic / 3D default: identical to compliance_from_cod(B, EllipticCrack-like, ℬ). Kept for back-compatibility.

MeanFieldHomogenization.Cracks.cod_from_compliance Function
julia
cod_from_compliance(H, crack, ℬ=get_basis(H)) -> Tens{2,3}

Extract the size-independent COD tensor from the crack compliance contribution tensor using

with   for an elliptic crack and   for a ribbon, and the third vector of ℬ, the crack normal when H comes from inverse_property_contribution. The exact inverse of compliance_from_cod.

Dispatches on the shape family of the crack.  is normalized by the half-width (Barthélémy, 2026), and the factor is derived in From B to the compliance H (Kachanov, 1992).

julia
cod_from_compliance(H, ℬ=get_basis(H)) -> Tens{2,3}

Elliptic / 3D default: identical to cod_from_compliance(H, EllipticCrack-like, ℬ) with the Kachanov factor  . Kept for back-compatibility with code that does not carry the crack object. For a ribbon, pass the RibbonCrack explicitly.