weac.analysis.steady_state module¶
Hybrid steady-state evaluation — independent critical-cut + tip-contact legs.
Tensile ease comes from the critical-cut dual-orientation search (shorter
critical_cut_length wins). ERR comes from the tip-contact (touchdown-cut)
dual-orientation search (higher thickness fraction; public scalar is
energy_release_rate). Orientation winners are chosen independently.
PST builders, Brent cut search, tip-contact residual, ease selection, and
hybrid orchestration all live in this module. Helpers are importable for
tests but are not part of __all__.
- class weac.analysis.steady_state.SteadyStateErrBlock(energy_release_rate, cut_length, cut_direction_winner, converged, message, diagnostics=<factory>, maximal_stress_result=None, system=None)[source]¶
Bases:
objectERR block from the tip-contact (touchdown-cut) search.
- Parameters:
energy_release_rate (float)
cut_length (float)
cut_direction_winner (Literal['upslope', 'downslope'])
converged (bool)
message (str)
diagnostics (dict[str, Any])
maximal_stress_result (MaximalStressResult | None)
system (SystemModel | None)
- energy_release_rate: float¶
- cut_length: float¶
- cut_direction_winner: Literal['upslope', 'downslope']¶
- converged: bool¶
- message: str¶
- diagnostics: dict[str, Any]¶
- maximal_stress_result: MaximalStressResult | None = None¶
- system: SystemModel | None = None¶
- __init__(energy_release_rate, cut_length, cut_direction_winner, converged, message, diagnostics=<factory>, maximal_stress_result=None, system=None)¶
- Parameters:
energy_release_rate (float)
cut_length (float)
cut_direction_winner (Literal['upslope', 'downslope'])
converged (bool)
message (str)
diagnostics (dict[str, Any])
maximal_stress_result (MaximalStressResult | None)
system (SystemModel | None)
- Return type:
None
- class weac.analysis.steady_state.SteadyStateResult(tensile, err, phi)[source]¶
Bases:
objectStructured hybrid steady-state result with independent tensile / ERR legs.
Exposes
core_scalars()/diagnosticsfor comparison harnesses (characteristic_length= tensileL_crit,energy_release_rate= ERR-leg winner).- Parameters:
tensile (SteadyStateTensileBlock)
err (SteadyStateErrBlock)
phi (float)
- tensile: SteadyStateTensileBlock¶
- err: SteadyStateErrBlock¶
- phi: float¶
- property converged: bool¶
- property message: str¶
- property diagnostics: dict[str, Any]¶
- core_scalars()[source]¶
JSON-friendly top-level scalars for comparison runners.
- Return type:
dict[str, float | bool | str]
- __init__(tensile, err, phi)¶
- Parameters:
tensile (SteadyStateTensileBlock)
err (SteadyStateErrBlock)
phi (float)
- Return type:
None
- class weac.analysis.steady_state.SteadyStateTensileBlock(critical_cut_length, cut_direction_winner, converged, message, diagnostics=<factory>, maximal_stress_result=None, system=None)[source]¶
Bases:
objectTensile-ease block from the critical-cut search.
- Parameters:
critical_cut_length (float)
cut_direction_winner (Literal['upslope', 'downslope'])
converged (bool)
message (str)
diagnostics (dict[str, Any])
maximal_stress_result (MaximalStressResult | None)
system (SystemModel | None)
- critical_cut_length: float¶
- cut_direction_winner: Literal['upslope', 'downslope']¶
- converged: bool¶
- message: str¶
- diagnostics: dict[str, Any]¶
- maximal_stress_result: MaximalStressResult | None = None¶
- system: SystemModel | None = None¶
- __init__(critical_cut_length, cut_direction_winner, converged, message, diagnostics=<factory>, maximal_stress_result=None, system=None)¶
- Parameters:
critical_cut_length (float)
cut_direction_winner (Literal['upslope', 'downslope'])
converged (bool)
message (str)
diagnostics (dict[str, Any])
maximal_stress_result (MaximalStressResult | None)
system (SystemModel | None)
- Return type:
None
- weac.analysis.steady_state.evaluate_steady_state(system, *, print_call_stats=False)[source]¶
Evaluate hybrid steady state from a
SystemModel.Extracts layers, weak layer, and inclination φ from
system. Does not accept touchdown mode and does not force φ→0.- Parameters:
system (SystemModel)
print_call_stats (bool)
- Return type:
- weac.analysis.steady_state.evaluate_steady_state_from_layers(*, layers, weak_layer, phi, cut_min=CUT_MIN_MM, cut_max=CUT_MAX_MM, xtol=CUT_XTOL_MM, bedded_length=BEDDED_LENGTH_DEFAULT, print_call_stats=False)[source]¶
Dual-leg hybrid evaluator (independent orientation selection per block).
Tensile: critical-cut search; ease = shorter
critical_cut_length.ERR: tip-contact search; ease = higher thickness fraction; public scalar is
energy_release_rate.
Inclination
phiis taken as given — no flat-slab (φ→0) override. Per-legelapsed_s/n_cut_samplesare always written todiagnostics; printing occurs only whenprint_call_statsis True.- Parameters:
- Return type: