weac.analysis.criteria_evaluator module¶
CriteriaEvaluator facade — public entry for fracture-criteria evaluations.
Envelope, coupled-criterion, and steady-state logic live in sibling modules;
this class holds CriteriaConfig and delegates.
- class weac.analysis.criteria_evaluator.CoupledCriterionHistory(skier_weights=<factory>, crack_lengths=<factory>, incr_energies=<factory>, sigma_maxs=<factory>, tau_maxs=<factory>, g_deltas=<factory>, dist_maxs=<factory>, dist_mins=<factory>)[source]¶
Bases:
objectStores the history of the coupled criterion evaluation.
Attributes:¶
- skier_weightslist[float]
Skier weights evaluated during the iteration.
- crack_lengthslist[float]
Crack lengths evaluated during the iteration.
- incr_energieslist[np.ndarray]
Incremental energy release rates for each evaluated state.
- sigma_maxslist[float]
Maximum normal stress values in kPa for each evaluated state. After iteration 1, values reuse the iteration-1 sample (uncracked rasterize is skipped; see main-loop stress bookkeeping).
- tau_maxslist[float]
Maximum shear stress values in kPa for each evaluated state. After iteration 1, values reuse the iteration-1 sample.
- g_deltaslist[float]
Fracture toughness envelope values for each evaluated state.
- dist_maxslist[float]
Maximum distances to the stress envelope for each evaluated state. After iteration 1, values reuse the iteration-1 sample.
- dist_minslist[float]
Minimum distances to the stress envelope for each evaluated state. After iteration 1, values reuse the iteration-1 sample.
- skier_weights: list[float]¶
- crack_lengths: list[float]¶
- incr_energies: list[ndarray]¶
- sigma_maxs: list[float]¶
- tau_maxs: list[float]¶
- g_deltas: list[float]¶
- dist_maxs: list[float]¶
- dist_mins: list[float]¶
- __init__(skier_weights=<factory>, crack_lengths=<factory>, incr_energies=<factory>, sigma_maxs=<factory>, tau_maxs=<factory>, g_deltas=<factory>, dist_maxs=<factory>, dist_mins=<factory>)¶
- Parameters:
skier_weights (list[float])
crack_lengths (list[float])
incr_energies (list[ndarray])
sigma_maxs (list[float])
tau_maxs (list[float])
g_deltas (list[float])
dist_maxs (list[float])
dist_mins (list[float])
- Return type:
None
- Parameters:
skier_weights (list[float])
crack_lengths (list[float])
incr_energies (list[ndarray])
sigma_maxs (list[float])
tau_maxs (list[float])
g_deltas (list[float])
dist_maxs (list[float])
dist_mins (list[float])
- class weac.analysis.criteria_evaluator.CoupledCriterionResult(converged, message, self_collapse, pure_stress_criteria, critical_skier_weight, initial_critical_skier_weight, crack_length, g_delta, dist_ERR_envelope, iterations, history, final_system, max_dist_stress, min_dist_stress)[source]¶
Bases:
objectHolds the results of the coupled criterion evaluation.
Attributes:¶
- convergedbool
Whether the algorithm converged.
- messagestr
The message of the evaluation.
- self_collapsebool
Whether the system collapsed.
- pure_stress_criteriabool
Whether the pure stress criteria is satisfied.
- critical_skier_weightfloat
The critical skier weight.
- initial_critical_skier_weightfloat
The initial critical skier weight.
- crack_lengthfloat
The crack length.
- g_deltafloat
The g_delta value.
- dist_ERR_envelopefloat
The distance to the ERR envelope.
- iterationsint
The number of iterations.
- historyCoupledCriterionHistory
The history of the evaluation.
- final_systemSystemModel
The final system model.
- max_dist_stressfloat
Maximum distance to the stress envelope for the returned
final_systemgeometry.- min_dist_stressfloat
Minimum distance to the stress envelope for the returned
final_systemgeometry.
- converged: bool¶
- message: str¶
- self_collapse: bool¶
- pure_stress_criteria: bool¶
- critical_skier_weight: float¶
- initial_critical_skier_weight: float¶
- crack_length: float¶
- g_delta: float¶
- dist_ERR_envelope: float¶
- iterations: int¶
- history: CoupledCriterionHistory | None¶
- final_system: SystemModel¶
- max_dist_stress: float¶
- min_dist_stress: float¶
- __init__(converged, message, self_collapse, pure_stress_criteria, critical_skier_weight, initial_critical_skier_weight, crack_length, g_delta, dist_ERR_envelope, iterations, history, final_system, max_dist_stress, min_dist_stress)¶
- Parameters:
converged (bool)
message (str)
self_collapse (bool)
pure_stress_criteria (bool)
critical_skier_weight (float)
initial_critical_skier_weight (float)
crack_length (float)
g_delta (float)
dist_ERR_envelope (float)
iterations (int)
history (CoupledCriterionHistory | None)
final_system (SystemModel)
max_dist_stress (float)
min_dist_stress (float)
- Return type:
None
- Parameters:
converged (bool)
message (str)
self_collapse (bool)
pure_stress_criteria (bool)
critical_skier_weight (float)
initial_critical_skier_weight (float)
crack_length (float)
g_delta (float)
dist_ERR_envelope (float)
iterations (int)
history (CoupledCriterionHistory | None)
final_system (SystemModel)
max_dist_stress (float)
min_dist_stress (float)
- class weac.analysis.criteria_evaluator.CriteriaEvaluator(criteria_config)[source]¶
Bases:
objectPublic facade for stability analysis of layered slabs on compliant elastic foundations.
- Parameters:
criteria_config (CriteriaConfig)
- __init__(criteria_config)[source]¶
Initialize the evaluator with criteria configuration.
- Parameters:
criteria_config (CriteriaConfig) – Configuration for failure criteria.
- criteria_config: CriteriaConfig¶
- fracture_toughness_envelope(G_I, G_II, weak_layer)[source]¶
Evaluate the fracture toughness criterion for Mode I / Mode II ERRs.
A value of 1 indicates the boundary of the fracture toughness envelope.
- Parameters:
G_I (float | ndarray)
G_II (float | ndarray)
weak_layer (WeakLayer)
- Return type:
float | ndarray
- stress_envelope(sigma, tau, weak_layer, method=None)[source]¶
Evaluate the stress envelope for given stress components.
Weak Layer failure is defined as the stress envelope crossing 1.
- Parameters:
sigma (float | ndarray)
tau (float | ndarray)
weak_layer (WeakLayer)
method (str | None)
- Return type:
ndarray
- evaluate_coupled_criterion(system, max_iterations=25, damping_ERR=0.0, tolerance_ERR=0.002, tolerance_stress=0.005, print_call_stats=False, _recursion_depth=0, _force_result=None)[source]¶
Evaluate the coupled criterion for anticrack nucleation.
- Parameters:
system (SystemModel)
max_iterations (int)
damping_ERR (float)
tolerance_ERR (float)
tolerance_stress (float)
print_call_stats (bool)
_recursion_depth (int)
_force_result (FindMinimumForceResult | None)
- Return type:
- evaluate_SteadyState(system, print_call_stats=False)[source]¶
Evaluate hybrid steady state from
system.Extracts layers, weak layer, and inclination φ from
SystemModel. Returns a structured result with independenttensileanderrblocks. Does not accept touchdown mode and does not force φ→0.Per-leg
elapsed_s/n_cut_samplesare always recorded inresult.diagnostics; setprint_call_stats=Trueto print them.Breaking change¶
Former flat-touchdown modes (
TouchdownMode/mode=) and the old flatSteadyStateResultfields (touchdown_distance, top-levelenergy_release_rate, singlemaximal_stress_result) are no longer part of this API. Useresult.tensile.critical_cut_lengthandresult.err.energy_release_rateinstead.- Parameters:
system (SystemModel)
print_call_stats (bool)
- Return type:
- find_minimum_force(system, tolerance_stress=0.0005, print_call_stats=False)[source]¶
Find the minimum skier weight to surpass the stress failure envelope.
- Parameters:
system (SystemModel)
tolerance_stress (float)
print_call_stats (bool)
- Return type:
- find_minimum_crack_length(system, search_interval=None, target=1)[source]¶
Find the minimum crack length to surpass the ERR envelope.
- Parameters:
system (SystemModel)
search_interval (tuple[float, float] | None)
target (float)
- Return type:
tuple[float, list[Segment]]
- check_crack_self_propagation(system, rm_skier_weight=False)[source]¶
Evaluate whether a crack will propagate without additional load.
- Parameters:
system (SystemModel)
rm_skier_weight (bool)
- Return type:
tuple[float, bool]
- find_crack_length_for_weight(system, skier_weight)[source]¶
Find anticrack length and segments for a given skier weight.
- Parameters:
system (SystemModel)
skier_weight (float)
- Return type:
tuple[float, list[Segment]]
- class weac.analysis.criteria_evaluator.FindMinimumForceResult(success, critical_skier_weight, new_segments, old_segments, iterations, max_dist_stress, min_dist_stress)[source]¶
Bases:
objectHolds the results of the find_minimum_force evaluation.
Attributes:¶
- successbool
Whether the algorithm converged.
- critical_skier_weightfloat
The critical skier weight.
- new_segmentslist[Segment]
The new segments.
- old_segmentslist[Segment]
The old segments.
- iterationsint
The number of iterations.
- max_dist_stressfloat
The maximum distance to failure.
- min_dist_stressfloat
The minimum distance to failure.
- success: bool¶
- critical_skier_weight: float¶
- iterations: int | None¶
- max_dist_stress: float¶
- min_dist_stress: float¶
- __init__(success, critical_skier_weight, new_segments, old_segments, iterations, max_dist_stress, min_dist_stress)¶
- class weac.analysis.criteria_evaluator.MaximalStressResult(principal_stress_kPa, Sxx_kPa, principal_stress_norm, Sxx_norm, max_principal_stress_norm, max_Sxx_norm, slab_tensile_criterion)[source]¶
Bases:
objectHolds the results of the maximal stress evaluation.
Attributes:¶
- principal_stress_kPa: np.ndarray
The principal stress in kPa.
- Sxx_kPa: np.ndarray
The axial normal stress in kPa.
- principal_stress_norm: np.ndarray
The normalized principal stress to the tensile strength of the layers.
- Sxx_norm: np.ndarray
The normalized axial normal stress to the tensile strength of the layers.
- max_principal_stress_norm: float
The normalized maximum principal stress to the tensile strength of the layers.
- max_Sxx_norm: float
The normalized maximum axial normal stress to the tensile strength of the layers.
- slab_tensile_criterion: float
The slab tensile criterion, i.e. the portion of the slab thickness that is prone to fail under tensile stresses in the steady state (between 0 and 1).
- principal_stress_kPa: ndarray¶
- Sxx_kPa: ndarray¶
- principal_stress_norm: ndarray¶
- Sxx_norm: ndarray¶
- max_principal_stress_norm: float¶
- max_Sxx_norm: float¶
- slab_tensile_criterion: float¶
- __init__(principal_stress_kPa, Sxx_kPa, principal_stress_norm, Sxx_norm, max_principal_stress_norm, max_Sxx_norm, slab_tensile_criterion)¶
- Parameters:
principal_stress_kPa (ndarray)
Sxx_kPa (ndarray)
principal_stress_norm (ndarray)
Sxx_norm (ndarray)
max_principal_stress_norm (float)
max_Sxx_norm (float)
slab_tensile_criterion (float)
- Return type:
None
- Parameters:
principal_stress_kPa (ndarray)
Sxx_kPa (ndarray)
principal_stress_norm (ndarray)
Sxx_norm (ndarray)
max_principal_stress_norm (float)
max_Sxx_norm (float)
slab_tensile_criterion (float)
- class weac.analysis.criteria_evaluator.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