Skip to content

Releases: 2phi/weac

v3.2.0

Choose a tag to compare

@pillowbeast pillowbeast released this 06 Aug 11:37
6a2caf7

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_SteadyState as 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, and envelopes.py from CriteriaEvaluator, keeping evaluate_SteadyState as a thin facade.
  • WeakLayer Component: Split WeakLayer into weac.components.weak_layer, leaving slab layers in Layer.
  • 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 with rasterize_solution when surface_load != 0.

⚠️ Breaking changes

  • CriteriaEvaluator.evaluate_SteadyState inputs/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, and uv.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

Choose a tag to compare

@pillowbeast pillowbeast released this 21 May 13:38
206e897

What's Changed

Full Changelog: v3.1.8...v3.1.9

v3.1.8

Choose a tag to compare

@pillowbeast pillowbeast released this 21 May 13:29
2e4b0f3

What's Changed

Full Changelog: v3.1.7...v3.1.8

v3.1.7

Choose a tag to compare

@pillowbeast pillowbeast released this 27 Apr 14:50
2a595d3

What's Changed

Extract Sigma & Tau Max Values for history of iterations in Coupled Criterion Evaluation.

Full Changelog: v3.1.6...v3.1.7

v3.1.6

Choose a tag to compare

@pillowbeast pillowbeast released this 20 Apr 13:49
bfa7230

What's Changed

Full Changelog: v3.1.5...v3.1.6

v3.1.5

Choose a tag to compare

@pillowbeast pillowbeast released this 14 Apr 13:32
72062a5

CAAML Parser Update &

This update refines the snow profile parsing logic and enhances the physical accuracy of the slab tensile criterion. Key improvements include:

  1. Slab Criterion Enhancements: Introduced a configurable low-density threshold and updated the tensile criterion logic to better represent low-density slab behavior.
  2. Slope-Normal CAAML Transformation: Enhanced parsing functionality to automatically transform CAAML data to slope-normal coordinates and removed redundant fracture energy ($G_c$) calculations.
  3. SnowPylot: Bump version so that SLF CAAML also work.
  4. Parser Refactoring: Cleaned up redundant functions and standardized internal naming conventions for better maintainability.

🛠️ Code Maintenance

  1. Dependency Update: Updated snowpylot dependencies and clarified test skip messaging.
  2. Version Bump: Formalized the transition to v3.1.5 across project metadata (pyproject.toml, CITATION.cff, and uv.lock).
  3. 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

Choose a tag to compare

@pillowbeast pillowbeast released this 25 Feb 13:43
ad9e55a

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=True is only permitted when using the classic backend, preventing invalid simulation states.

🛠️ Code Maintenance

  • Dependency Update: Bumped ipykernel minimum version for better environment compatibility.
  • Refactored Tests: Standardized force decomposition tests to explicitly include the theta parameter.

🧪 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

Choose a tag to compare

@pillowbeast pillowbeast released this 03 Feb 09:03
8e45268

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

Choose a tag to compare

@pillowbeast pillowbeast released this 02 Feb 18:01
b639207

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

Choose a tag to compare

@pillowbeast pillowbeast released this 12 Jan 21:22
073a361

What's Changed

Full Changelog: v3.1.0...v3.1.1