Releases: 2phi/weac
Release list
v3.2.0
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
v3.1.9
v3.1.8
What's Changed
- Enhance slab tensile criterion logic and update tests by @pillowbeast in #51
- Minor/fixes by @pillowbeast in #52
Full Changelog: v3.1.7...v3.1.8
v3.1.7
What's Changed
Extract Sigma & Tau Max Values for history of iterations in Coupled Criterion Evaluation.
- Feat/sigma-tau-extraction by @pillowbeast in #50
Full Changelog: v3.1.6...v3.1.7
v3.1.6
v3.1.5
CAAML Parser Update &
This update refines the snow profile parsing logic and enhances the physical accuracy of the slab tensile criterion. Key improvements include:
- Slab Criterion Enhancements: Introduced a configurable low-density threshold and updated the tensile criterion logic to better represent low-density slab behavior.
-
Slope-Normal CAAML Transformation: Enhanced parsing functionality to automatically transform CAAML data to slope-normal coordinates and removed redundant fracture energy (
$G_c$ ) calculations. - SnowPylot: Bump version so that SLF CAAML also work.
- Parser Refactoring: Cleaned up redundant functions and standardized internal naming conventions for better maintainability.
🛠️ Code Maintenance
- Dependency Update: Updated snowpylot dependencies and clarified test skip messaging.
- Version Bump: Formalized the transition to v3.1.5 across project metadata (pyproject.toml, CITATION.cff, and uv.lock).
- Linting: Applied ruff formatting across the snowpilot_parser.py module.
🧪 Testing
Implemented a dedicated test suite for the Slab Tensile Criterion to validate the new low-density threshold logic and ensure physical consistency across varying snowpack configurations.
📦 Pull Requests Included
PR #48: Dep/caaml-parser-update (Includes Slab Tensile Criterion updates and SnowPilot parsing enhancements).Full Changelog: v3.1.4...v3.1.5
v3.1.4
Fixes to Slab Failure Criterion & Weak Layer Presets
This update fixes slab failure criterion calculations and introduces standardized presets for quicker model setup. Key improvements include:
-
Slab Criterion Fix: Bug Fix + Finer resolution (
$dz=1$ instead of$dz=5$ ) for more accurate tensile criterion evaluation. -
Weak Layer Presets: Added a library of named presets (e.g.,
VERY_WEAK_LAYER,WEAK_LAYER) and a factory helper for easier instantiation. -
Strict Config Validation: Implemented model validators to ensure
touchdown=Trueis only permitted when using theclassicbackend, preventing invalid simulation states.
🛠️ Code Maintenance
- Dependency Update: Bumped
ipykernelminimum version for better environment compatibility. - Refactored Tests: Standardized force decomposition tests to explicitly include the
thetaparameter.
🧪 Testing
Expanded regression testing for the SteadyState module and added comprehensive validation tests to ensure the new configuration constraints and backend logic are enforced at runtime.
📦 Pull Requests Included
PR #45: Bugfix slab criterion + Weak Layer Presets + Regression Test Steady State.
Full Changelog: v3.1.3...v3.1.4
v3.1.3
What's Changed
🚀 Feature: Force Touchdown Mode
- Add forced touchdown mode to prevent floating-point precision issues by @pillowbeast in #41
Full Changelog: v3.1.2...v3.1.3
v3.1.2
Update to Steady State Evaluation
🚀 Configurable Touchdown Modes
You can now define specific steady-state behaviors for touchdown. New supported modes include:
- Free-hanging: Modeling the slab without external contact.
- Point contact: Initializing contact at a single specific point.
- In-contact (Default): Full contact state evaluation.
🛠️ Code Maintenance: Added internal documentation (TODOs) for future layer-related optimizations.
🧪 Testing
Expanded the test suite to include validation for all new touchdown mode configurations, ensuring stability across hanging, contact, and lying-down states.
📦 Pull Requests Included
PR #40: New states for steady state.
Full Changelog: v3.1.1...v3.1.2
v3.1.1
What's Changed
- Add slab tensile criterion to stress analysis + Fix #37 & more by @pillowbeast in #38
Full Changelog: v3.1.0...v3.1.1