Hybrid Steady-State Evaluation, Weak-Layer Split & Analysis Refactor
This release reworks steady-state PST evaluation, splits weak-layer modeling from slab layers, and reorganizes the analysis package. Key improvements include:
- Hybrid Steady-State Evaluation: Rewrote
evaluate_SteadyStateas a hybrid of independent critical-cut (tensile ease) and tip-contact / touchdown (ERR) PST configurations, with orientation winners chosen separately for each leg. - Analysis Package Split: Extracted
steady_state.py,coupled_criterion.py, andenvelopes.pyfromCriteriaEvaluator, keepingevaluate_SteadyStateas a thin facade. - WeakLayer Component: Split
WeakLayerintoweac.components.weak_layer, leaving slab layers inLayer. - Schöttner E(ρ) Elasticity: Derive weak-layer Young’s modulus from the Schöttner FC&DH density law (
E_method="schottner_fc_dh"); lowered weak-layer preset densities to 100/150/200 kg/m³ so named presets stay within the Schöttner ≤250 kg/m³ range. - Jamieson & Johnson Tensile Strength: Added
tensile_strength_method="jamieson_johnson"(now the default) for slab tensile strength. - Coupled-Criterion & Rasterization Refinements: Denser sampling near segment boundaries; improved CC search (damping, max iterations, reuse of min-force / x-coords).
- Surface-Load Stress Fix: Pointwise stress evaluation now passes
surface_load(qs) so CC envelope root-finding agrees withrasterize_solutionwhensurface_load != 0.
⚠️ Breaking changes
CriteriaEvaluator.evaluate_SteadyStateinputs/outputs differ from the previous flat result shape. Tensile and ERR now live under nested blocks (SteadyStateResult.tensile/.err).
🛠️ Code Maintenance
- Test Suite Migration: Migrated from unittest to pytest (CI +
pyproject.toml); removed the legacy test runner. - Version Bump: Formalized the transition to v3.2.0 across project metadata (
pyproject.toml,CITATION.cff, anduv.lock). - Linting: Applied ruff formatting across the analysis and component modules.
🧪 Testing
Added dedicated coverage for hybrid steady-state / critical-cut–touchdown workflows, denser boundary rasterization, Jamieson–Johnson tensile strength, and nonzero surface-load stress consistency.
📦 Pull Requests Included
- PR #54: Feat/Split WL and Layer + Feat/Add Schöttner E(ρ) elasticity + Chore/Test Suite to Pytest
- PR #56: Feat/hybrid steady-state evaluation and analysis package split (v3.2.0)
- PR #55: Fix/pass surface_load in pointwise stress evaluation
Full Changelog: v3.1.9...v3.2.0