Skip to content

API — Cracks

compliance_contribution, delta_compliance and delta_resistivity are Core-level generics shared with every other inclusion family; they are documented under API — Localization & 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, compliance_contribution, sif, dif.

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

Flat elliptical crack with semi-axes a ≥ b oriented by a local basis ℬ = (l̂, m̂, n̂).

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

Ribbon-like (tunnel) crack of half-width b 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))
conductivity_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

julia
(1/S) ∫_S [u] dS = b · B ·· n̂),

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

  • Elliptic:     ;

  • Ribbon:     ;

with    and      the second Hill tensor ([43], [58], [50]). The elliptic and ribbon factorizations are related by   .

For isotropic or aligned-TI matrices the kernel is analytical ([49], [48]); for arbitrarily anisotropic matrices the limit   is resolved numerically through the first-order Taylor term of the Hill tensor ([46]).

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   compliance_contribution(crack, K₀) is

julia
R = (3/4) b · n̂   (elliptic)
R = (2/π) b · n̂   (ribbon)

The rank-1 direction is the crack normal for any : the null space of   is spanned by it. Apply delta_resistivity 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

julia
(1/S) ∫_S [u] dS = b · B ·· n̂),

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

  • Elliptic:     ;

  • Ribbon:     ;

with    and      the second Hill tensor ([43], [58], [50]). The elliptic and ribbon factorizations are related by   .

For isotropic or aligned-TI matrices the kernel is analytical ([49], [48]); for arbitrarily anisotropic matrices the limit   is resolved numerically through the first-order Taylor term of the Hill tensor ([46]).

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   compliance_contribution(crack, K₀) is

julia
R = (3/4) b · n̂   (elliptic)
R = (2/π) b · n̂   (ribbon)

The rank-1 direction is the crack normal for any : the null space of   is spanned by it. Apply delta_resistivity 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 four three-argument seams delta_compliance, delta_stiffness, delta_conductivity and delta_resistivity:

julia
Δ = crack_density_factor(crack) · ε · X
  • 4π/3 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 [51].

MeanFieldHomogenization.Cracks.CrackShape Type
julia
CrackShape

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

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 ([52], [53], [54]; energy release rate identity    in [55], [56]).

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:

julia
= (3/8) π^{3/2} b (b ‖S† · ŷ₀★‖)
    · (B^𝓡(ν̂, n̂))⁻¹ · B^𝓔(m̂, n̂, η) · Σ·n̂ .

The central identity     is purely local ([57], [47], [48]).

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     :

julia
[[T]]_avg = b · (\hat{\mathbf n}·\boldsymbol\sigma^{\infty}) .

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}

Inverse of cod_from_compliance. Reconstruct from with the crack-shape-dependent factor .

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

julia
H = k (n̂ ˢ B ˢ n̂),   k = 3/4  (elliptic)  or  k = 2/π  (ribbon).

Dispatches on the crack type ([43], [50]).

Note

The pair compliance_from_cod / cod_from_compliance only preserves the component exactly; off-diagonal components involve Kelvin–Mandel pre-factors that are not inverted by the pair.

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.