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
MeanFieldHomogenization.CracksCOD 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
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
RibbonCrack{T, B<:AbstractBasis}Ribbon-like (tunnel) crack of half-width b along m̂, unbounded along l̂, with normal n̂.
MeanFieldHomogenization.Cracks.PennyCrack Function
PennyCrack(a; euler_angles=(0,0,0))Convenience constructor for a circular (penny-shaped) flat crack.
MeanFieldHomogenization.Cracks.ConductiveCrack Type
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
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.
cr = ConductiveCrack(1.0; conductivity = 2.0e-13, euler_angles = (π/4, 0.0))
conductivity_contribution(cr, TensISO{3}(1.0e-18)) # 𝕂, POSITIVE, in-planePenny 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 ConductiveCrack.
MeanFieldHomogenization.Cracks.with_conductivity Function
with_conductivity(c::ConductiveCrack, C) -> ConductiveCrackThe same fracture with a new conductivity — how the cubic aperture law
MeanFieldHomogenization.Cracks.cod_tensor Function
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
(1/S) ∫_S [u] dS = b · B · (Σ · n̂),where
Elliptic:
;Ribbon:
;
with
For isotropic or aligned-TI matrices the kernel is analytical ([49], [48]); for arbitrarily anisotropic matrices the limit
Alias: B_tensor.
cod_tensor(crack, K₀::AbstractTens{2,3}; method=:auto, kw...) -> RealSize-independent thermal crack-opening-displacement scalar compliance_contribution(crack, K₀) is
R = (3/4) b · n̂ ⊗ n̂ (elliptic)
R = (2/π) b · n̂ ⊗ n̂ (ribbon)The rank-1 direction is the crack normal delta_resistivity to recover the dilute resistivity correction
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
MeanFieldHomogenization.Cracks.B_tensor Function
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
(1/S) ∫_S [u] dS = b · B · (Σ · n̂),where
Elliptic:
;Ribbon:
;
with
For isotropic or aligned-TI matrices the kernel is analytical ([49], [48]); for arbitrarily anisotropic matrices the limit
Alias: B_tensor.
cod_tensor(crack, K₀::AbstractTens{2,3}; method=:auto, kw...) -> RealSize-independent thermal crack-opening-displacement scalar compliance_contribution(crack, K₀) is
R = (3/4) b · n̂ ⊗ n̂ (elliptic)
R = (2/π) b · n̂ ⊗ n̂ (ribbon)The rank-1 direction is the crack normal delta_resistivity to recover the dilute resistivity correction
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
MeanFieldHomogenization.Cracks.crack_density_factor Function
crack_density_factor(crack) -> RealGeometric 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:
Δ = crack_density_factor(crack) · ε · X4π/3for 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
CrackShapeAbstract 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
RibbonPlaceholder type tag for ribbon-like cracks. Mirrors the role of CrackShape for elliptical cracks.
MeanFieldHomogenization.Cracks.crack_basis Function
Return the local basis
MeanFieldHomogenization.Cracks.crack_normal Function
Return the unit normal
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
aspect_ratio(c)Aspect ratio zero(T) for a RibbonCrack (limit case).
MeanFieldHomogenization.Cracks.sif Function
sif(crack, C₀, Σ; y₀=nothing, method=:auto, kw...) -> (𝐊, (Kᴵ, Kᴵᴵ, Kᴵᴵᴵ))Stress intensity factor vector
For a ribbon crack (
K̂ = (3/8) π^{3/2} √b √(b ‖S† · ŷ₀★‖)
· (B^𝓡(ν̂, n̂))⁻¹ · B^𝓔(m̂, n̂, η) · Σ·n̂ .MeanFieldHomogenization.Cracks.dif Function
dif(crack, C₀, Σ; method=:auto, kw...) -> Tens{1,3}dif(crack, K₀::AbstractTens{2,3}, σ∞; method=:auto, kw...) -> RealTemperature intensity factor (analog of displacement intensity factor) for a flat crack driven by the remote vector
[[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
compliance_from_cod(B, crack, ℬ=get_basis(B)) -> Tens{4,3}Inverse of cod_from_compliance. Reconstruct
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
cod_from_compliance(H, crack, ℬ=get_basis(H)) -> Tens{2,3}Extract the size-independent COD tensor
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
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 RibbonCrack explicitly.