From f2036980fcbbc8c3a832c0f92fe3f387db10c179 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 30 Sep 2026 05:44:33 -0700 Subject: [PATCH 1/2] feat(dfns): support shape bounds A shape extent is exact unless prefixed with an inequality operator (<, <=, >, >=), which may now bound any valid shape expression. Add split_bound() for consumers. Document bounds in the spec. The dev2 migration keeps v1's `<` marker as `<=`, marks confirmed upper bounds (maxbound, maxhfb, maxsig0, maxats), and fills in the missing sim-tdis and utl-ats perioddata shapes. Fix utl-ts shapes: sfacval is sized by time_series_names, the single SFAC value is a scalar, and time_series_names is no longer renamed to interpolation_method. Correct the spec on advanced package list shapes. Co-Authored-By: Claude Opus 5.5 --- .../__snapshots__/v2.0.0.dev2/chf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/chf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/chf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/chf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev2/chf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev2/chf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-ctp.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-ctp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-ctp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-esl.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-esl.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-esl.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwe-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/gwe-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/gwe-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/gwf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-csub.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-csub.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-csub.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-drn.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-drn.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-drn.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-evt.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-evt.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-evt.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-ghb.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-ghb.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-ghb.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-hfb.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-hfb.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-hfb.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/gwf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/gwf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/gwf-rch.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-rch.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-rch.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-riv.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-riv.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-riv.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-wel.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-wel.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwf-wel.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-cnc.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-cnc.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-cnc.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/gwt-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/gwt-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/gwt-src.json | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-src.toml | 2 +- .../__snapshots__/v2.0.0.dev2/gwt-src.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/olf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/olf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/olf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev2/olf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev2/olf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/prt-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/prt-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/prt-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/prt-prp.json | 10 +- .../__snapshots__/v2.0.0.dev2/prt-prp.toml | 6 + .../__snapshots__/v2.0.0.dev2/prt-prp.yaml | 4 + .../__snapshots__/v2.0.0.dev2/sim-tdis.json | 5 +- .../__snapshots__/v2.0.0.dev2/sim-tdis.toml | 3 + .../__snapshots__/v2.0.0.dev2/sim-tdis.yaml | 2 + .../__snapshots__/v2.0.0.dev2/swf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev2/swf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev2/swf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev2/swf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev2/swf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev2/swf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/utl-ats.json | 5 +- .../__snapshots__/v2.0.0.dev2/utl-ats.toml | 3 + .../__snapshots__/v2.0.0.dev2/utl-ats.yaml | 2 + .../__snapshots__/v2.0.0.dev2/utl-spc.json | 2 +- .../__snapshots__/v2.0.0.dev2/utl-spc.toml | 2 +- .../__snapshots__/v2.0.0.dev2/utl-spc.yaml | 2 +- .../__snapshots__/v2.0.0.dev2/utl-ts.json | 21 +- .../__snapshots__/v2.0.0.dev2/utl-ts.toml | 15 +- .../__snapshots__/v2.0.0.dev2/utl-ts.yaml | 13 +- .../__snapshots__/v2.0.0.dev3/chf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/chf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/chf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/chf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev3/chf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev3/chf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-ctp.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-ctp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-ctp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-esl.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-esl.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-esl.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwe-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/gwe-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/gwe-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/gwf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-csub.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-csub.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-csub.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-drn.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-drn.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-drn.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-evt.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-evt.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-evt.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-ghb.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-ghb.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-ghb.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-hfb.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-hfb.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-hfb.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/gwf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/gwf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/gwf-rch.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-rch.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-rch.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-riv.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-riv.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-riv.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-wel.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-wel.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwf-wel.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-cnc.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-cnc.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-cnc.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/gwt-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/gwt-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/gwt-src.json | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-src.toml | 2 +- .../__snapshots__/v2.0.0.dev3/gwt-src.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/olf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/olf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/olf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev3/olf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev3/olf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/prt-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/prt-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/prt-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/prt-prp.json | 10 +- .../__snapshots__/v2.0.0.dev3/prt-prp.toml | 6 + .../__snapshots__/v2.0.0.dev3/prt-prp.yaml | 4 + .../__snapshots__/v2.0.0.dev3/sim-tdis.json | 5 +- .../__snapshots__/v2.0.0.dev3/sim-tdis.toml | 3 + .../__snapshots__/v2.0.0.dev3/sim-tdis.yaml | 2 + .../__snapshots__/v2.0.0.dev3/swf-cdb.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-cdb.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-cdb.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-chd.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-chd.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-chd.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-evp.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-evp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-evp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-flw.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-flw.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-flw.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-oc.json | 10 +- .../__snapshots__/v2.0.0.dev3/swf-oc.toml | 6 + .../__snapshots__/v2.0.0.dev3/swf-oc.yaml | 4 + .../__snapshots__/v2.0.0.dev3/swf-pcp.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-pcp.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-pcp.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-zdg.json | 2 +- .../__snapshots__/v2.0.0.dev3/swf-zdg.toml | 2 +- .../__snapshots__/v2.0.0.dev3/swf-zdg.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/utl-ats.json | 5 +- .../__snapshots__/v2.0.0.dev3/utl-ats.toml | 3 + .../__snapshots__/v2.0.0.dev3/utl-ats.yaml | 2 + .../__snapshots__/v2.0.0.dev3/utl-spc.json | 2 +- .../__snapshots__/v2.0.0.dev3/utl-spc.toml | 2 +- .../__snapshots__/v2.0.0.dev3/utl-spc.yaml | 2 +- .../__snapshots__/v2.0.0.dev3/utl-ts.json | 21 +- .../__snapshots__/v2.0.0.dev3/utl-ts.toml | 15 +- .../__snapshots__/v2.0.0.dev3/utl-ts.yaml | 13 +- autotest/dfns/test_migrate.py | 79 ++++++++ autotest/dfns/test_schema.py | 6 + autotest/dfns/test_schema_dimensions.py | 67 +++++++ docs/md/dfnspec.md | 19 +- .../dfns/migrate_to_v2_0_0_dev2.py | 181 ++++++++++++++---- modflow_devtools/dfns/schema.py | 58 +++--- 264 files changed, 914 insertions(+), 338 deletions(-) diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.json index 14729e22..ae059e0f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.json @@ -130,7 +130,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.toml index 08efc7a0..e7225cdc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.toml @@ -66,7 +66,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.yaml index bc43aeb0..50782dbd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-cdb.yaml @@ -136,7 +136,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.json index 2cb1b4e9..0a5d3e7d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.toml index f446c0c9..273a906c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.yaml index 759bfa26..d8569481 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-chd.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.json index 7c942435..e6cd1d71 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.toml index ce835dba..e852eb31 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.yaml index 25b8a80e..d7f11dc8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-evp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.json index 171e430a..7eb93c2f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.toml index e70fb30b..5b7b864f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.yaml index 2ed1bf1e..b6a950bd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-flw.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json index 2c791a0b..10efb35d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml index 069eaf28..dd113fb0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml index 453fda14..7cdb656f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.json index 700a925f..c986198c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.toml index 7716d5a1..c1b8f1c3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.yaml index d18fee7a..86582db8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-pcp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.json index ee96502c..99f9b2fd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.json @@ -165,7 +165,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.toml index 096f6ed8..924aaab6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.toml @@ -85,7 +85,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.yaml index 7d672968..71296d88 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-zdg.yaml @@ -174,7 +174,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.json index bb5c54e9..5509af39 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.toml index dd85c5e4..f2c787cf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of constant temperatu [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.yaml index f8105b09..942db23d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-ctp.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.json index c26a818d..37e6a9d2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.toml index 3414f6b3..1d8c4244 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of source cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.yaml index c79891f4..90a52e35 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-esl.yaml @@ -149,7 +149,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json index e65b8442..15628040 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml index 034c9ffe..56770bf1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml index 4875a035..0bc2c9bc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.json index fabb5b4e..747b2313 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.json @@ -156,7 +156,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.toml index 9fcba65f..47a129af 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.toml @@ -98,7 +98,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.yaml index d1c82a35..fc2c1faa 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-chd.yaml @@ -154,7 +154,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json index 2ac147f8..635238c7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json @@ -500,7 +500,7 @@ } }, "shape": [ - "maxsig0" + "<=maxsig0" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml index 388df830..129c22e8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml @@ -433,7 +433,7 @@ tagged = false [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxsig0", + "<=maxsig0", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml index c5976e8f..65a47415 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml @@ -498,7 +498,7 @@ blocks: tagged: false time_series: true shape: - - maxsig0 + - <=maxsig0 header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.json index 889df36d..06a61629 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.json @@ -174,7 +174,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.toml index 784f11d5..31716dbe 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.toml @@ -109,7 +109,7 @@ description = "integer value specifying the maximum number of drains cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.yaml index 86e98509..2f379a64 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-drn.yaml @@ -181,7 +181,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.json index 433fb226..e3a515db 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.json @@ -216,7 +216,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.toml index 396a51aa..fd7d1947 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.toml @@ -112,7 +112,7 @@ description = "number of ET segments. Default is one. When NSEG is greater tha [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.yaml index b0a2feb5..a214274d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-evt.yaml @@ -225,7 +225,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.json index a3810ecc..a4a42df0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.json @@ -161,7 +161,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.toml index 108f5473..347e8663 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.toml @@ -96,7 +96,7 @@ description = "integer value specifying the maximum number of general-head bound [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.yaml index 992c90b3..079e42e0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-ghb.yaml @@ -163,7 +163,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json index 2a462c20..29ecac62 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json @@ -65,7 +65,7 @@ } }, "shape": [ - "maxhfb" + "<=maxhfb" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml index 249170a2..7038d269 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml @@ -21,7 +21,7 @@ description = "integer value specifying the maximum number of hydraulic flow bar [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxhfb", + "<=maxhfb", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml index 2f6a18c4..fcdf7977 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml @@ -64,7 +64,7 @@ blocks: calculated for the two cells would be multiplied by 1.5. tagged: false shape: - - maxhfb + - <=maxhfb header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json index 35cc425d..a7dfeaf2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml index dbce3f76..cce5295f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml index 908d8281..8fb7ff3d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.json index dbfcba13..e3060429 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.json @@ -155,7 +155,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.toml index 1f84d998..1b17df62 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.toml @@ -97,7 +97,7 @@ description = "integer value specifying the maximum number of recharge cells tha [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.yaml index 3d2fc00a..b0f9941d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-rch.yaml @@ -156,7 +156,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.json index 806d1bb3..1175ef01 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.json @@ -168,7 +168,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.toml index da1f439a..ade9e776 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.toml @@ -96,7 +96,7 @@ description = "integer value specifying the maximum number of rivers cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.yaml index 0c356766..2e44ff48 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-riv.yaml @@ -169,7 +169,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.json index 0709b75d..073d6e95 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.json @@ -184,7 +184,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.toml index 3ec8f0ec..1b793cd2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.toml @@ -124,7 +124,7 @@ description = "integer value specifying the maximum number of wells cells that w [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.yaml index 1bc97b88..4eee854b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-wel.yaml @@ -194,7 +194,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.json index 66858989..b4c6df13 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.toml index d905cca3..ef62b9c1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of constant concentra [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.yaml index 3266d879..c8e3421c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-cnc.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json index 89d77192..23ebdee2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml index e26ad0f7..cd452ae2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml index deb319d0..01576352 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.json index 2a46a077..5b818730 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.json @@ -155,7 +155,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.toml index 09c89a05..940931c8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.toml @@ -97,7 +97,7 @@ description = "integer value specifying the maximum number of sources cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.yaml index 9c02774f..9565d403 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-src.yaml @@ -164,7 +164,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.json index 8dbbc4f6..75412355 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.json @@ -129,7 +129,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.toml index ed8ec1ff..0014ed98 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.toml @@ -66,7 +66,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.yaml index 07d859e0..a5831b38 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-cdb.yaml @@ -135,7 +135,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.json index 6979d73a..6ed2ead4 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.toml index 23f88d5e..3e7d9b58 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.yaml index 2b0746a9..4817ab4b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-chd.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.json index c1f9799d..dc3478d2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.toml index 859aa794..a78a2fcc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.yaml index 43106688..3e9496b2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-evp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.json index 92f18bdf..cc46b8d1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.toml index 903b0010..4f4c456e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.yaml index e699255a..41293c02 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-flw.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json index 4277c621..a99fe4a0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml index 38d0a713..0414d266 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml index 826f9891..7f771604 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.json index b7eb6060..4a4e23b3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.toml index bdc7c092..bb41d3e5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.yaml index 01150451..4b824b99 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-pcp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.json index 88a3153b..68b951bb 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.json @@ -165,7 +165,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.toml index 32030bbc..a92cb224 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.toml @@ -85,7 +85,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.yaml index 4653b76a..15fdaffd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-zdg.yaml @@ -174,7 +174,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json index 34e9e21d..85160800 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json @@ -262,7 +262,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -309,7 +312,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml index 81af90ea..804b5045 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml @@ -233,6 +233,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -276,6 +279,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml index a6222301..682953e0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml @@ -229,6 +229,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -271,6 +273,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.json index b208ef48..3e72d450 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.json @@ -331,14 +331,20 @@ "steps": { "type": "array", "description": "release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] }, "fraction": { "type": "array", "description": "release particles after the specified fraction of the time step has elapsed. If FRACTION is not set, particles are released at the start of the specified time step(s). FRACTION must be a single value when used with ALL, FIRST, or FREQUENCY. When used with STEPS, FRACTION may be a single value or an array of the same length as STEPS. If a single FRACTION value is provided with STEPS, the fraction applies to all steps. NOTE: The FRACTION option has been removed. For fine control over release timing, specify times explicitly using the RELEASETIMES block.", "optional": true, "removed": "6.6.0", - "dtype": "double" + "dtype": "double", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.toml index 5897fa93..ef33d3cc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.toml @@ -300,6 +300,9 @@ description = "release at the specified time step frequency. This keyword may be type = "array" description = "release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.perioddata.item.arms.fraction] type = "array" @@ -307,6 +310,9 @@ description = "release particles after the specified fraction of the time step h optional = true removed = "6.6.0" dtype = "double" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.yaml index 29e34554..90efa435 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-prp.yaml @@ -351,6 +351,8 @@ blocks: description: release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options. dtype: integer + shape: + - <=nstp fraction: type: array description: 'release particles after the specified fraction of the time step has elapsed. @@ -363,6 +365,8 @@ blocks: optional: true removed: 6.6.0 dtype: double + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json index 4015c481..c001cbbc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json @@ -88,7 +88,10 @@ "tagged": false } } - } + }, + "shape": [ + "nper" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml index e35aa6ef..a52f82ea 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml @@ -51,6 +51,9 @@ default = [ 1.0, ], ] +shape = [ + "nper", +] [blocks.perioddata.fields.perioddata.item] type = "record" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml index 39f5995c..90af242c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml @@ -76,3 +76,5 @@ blocks: The length of the first time step, $Delta t_1$, is related to PERLEN, NSTP, and TSMULT by the relation $Delta t_1= perlen frac{tsmult - 1}{tsmult^{nstp}-1}$. tagged: false + shape: + - nper diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.json index e198bfb8..4eb56288 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.json @@ -129,7 +129,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.toml index 76f35159..6f0ca13a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.toml @@ -66,7 +66,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.yaml index 75351f7a..fe7c8bfc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-cdb.yaml @@ -136,7 +136,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.json index 1c9b8bee..314ccd58 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.toml index bcb1746d..76877a4b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.yaml index 08ae70ff..341fc658 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-chd.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.json index 15ad2681..d951d437 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.toml index 21e23415..46f073c7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.yaml index 71a64fe3..aca01327 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-evp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.json index 1902e02e..4087f390 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.toml index 4ce69aa4..104495c9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.yaml index 861a56f3..e7c2eba5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-flw.yaml @@ -148,7 +148,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json index da9c50f5..68905d2c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml index 72c2e12f..5c67958f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml index bb41142b..3e1485f1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.json index 709be478..44f966c1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.json @@ -149,7 +149,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.toml index bbce1a05..80fc20f5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.toml @@ -91,7 +91,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.yaml index a8fe5f27..7ce9bf53 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-pcp.yaml @@ -150,7 +150,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.json index 923b0559..e8dd0baf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.json @@ -164,7 +164,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.toml index fdd761f8..0349cb26 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.toml @@ -85,7 +85,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.yaml index 85b8c8d3..61365130 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-zdg.yaml @@ -174,7 +174,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.json index 7b17bd1c..ae9ad8ad 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.json @@ -68,7 +68,10 @@ "tagged": false } } - } + }, + "shape": [ + "<=maxats" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.toml index d02c2806..5a81573a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.toml @@ -17,6 +17,9 @@ default = 1 [blocks.perioddata.fields.perioddata] type = "list" longname = "stress period ats time information" +shape = [ + "<=maxats", +] [blocks.perioddata.fields.perioddata.item] type = "record" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.yaml index ef66c81d..425a4268 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ats.yaml @@ -80,3 +80,5 @@ blocks: tests with this variable should be set to 5.0 or larger to determine if convergence can be achieved. tagged: false + shape: + - <=maxats diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.json index 76d36a14..975d42d1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.json @@ -88,7 +88,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.toml index 45e34a52..926bb098 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.toml @@ -42,7 +42,7 @@ description = "integer value specifying the maximum number of spc cells that wil [blocks.period.fields.perioddata] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.perioddata.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.yaml index 628642a4..c40cca28 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-spc.yaml @@ -80,7 +80,7 @@ blocks: default, the TEMPERATURE for each boundary feature is zero. time_series: true shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.json index 08706934..b047bcc3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.json @@ -6,8 +6,8 @@ "multi": true, "subtype": "utility", "dims": { - "interpolation_method": { - "value": "len(interpolation_method)" + "time_series_names": { + "value": "len(time_series_names)" } }, "blocks": { @@ -42,7 +42,10 @@ "type": "array", "description": "Interpolation method, which is either STEPWISE or LINEAR.", "tagged": false, - "dtype": "string" + "dtype": "string", + "shape": [ + "time_series_names" + ] } } }, @@ -78,7 +81,10 @@ "type": "array", "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", "tagged": false, - "dtype": "double" + "dtype": "double", + "shape": [ + "time_series_names" + ] } } }, @@ -88,10 +94,9 @@ "optional": true, "fields": { "sfacval": { - "type": "array", + "type": "double", "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", - "tagged": false, - "dtype": "double" + "tagged": false } } }, @@ -121,7 +126,7 @@ "tagged": false, "dtype": "double", "shape": [ - "interpolation_method" + "time_series_names" ] } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.toml index 956367eb..7adc6a80 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.toml @@ -5,8 +5,8 @@ parent = "sim-nam" multi = true subtype = "utility" -[dims.interpolation_method] -value = "len(interpolation_method)" +[dims.time_series_names] +value = "len(time_series_names)" [blocks.attributes.fields.time_series_namerecord] type = "record" @@ -36,6 +36,9 @@ type = "array" description = "Interpolation method, which is either STEPWISE or LINEAR." tagged = false dtype = "string" +shape = [ + "time_series_names", +] [blocks.attributes.fields.interpolation_methodrecord_single] type = "record" @@ -70,6 +73,9 @@ type = "array" description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." tagged = false dtype = "double" +shape = [ + "time_series_names", +] [blocks.attributes.fields.sfacrecord_single] type = "record" @@ -77,10 +83,9 @@ description = "xxx" optional = true [blocks.attributes.fields.sfacrecord_single.fields.sfacval] -type = "array" +type = "double" description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." tagged = false -dtype = "double" [blocks.attributes.fields.sfac] type = "keyword" @@ -105,5 +110,5 @@ description = "A 2-D array of numeric, floating-point values, or a constant valu tagged = false dtype = "double" shape = [ - "interpolation_method", + "time_series_names", ] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.yaml index 5be55ae2..0e75ae6e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/utl-ts.yaml @@ -5,8 +5,8 @@ parent: sim-nam multi: true subtype: utility dims: - interpolation_method: - value: len(interpolation_method) + time_series_names: + value: len(time_series_names) blocks: attributes: fields: @@ -36,6 +36,8 @@ blocks: description: Interpolation method, which is either STEPWISE or LINEAR. tagged: false dtype: string + shape: + - time_series_names interpolation_methodrecord_single: type: record description: xxx @@ -65,17 +67,18 @@ blocks: optional attribute; if omitted, SFAC = 1.0. tagged: false dtype: double + shape: + - time_series_names sfacrecord_single: type: record description: xxx optional: true fields: sfacval: - type: array + type: double description: Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0. tagged: false - dtype: double sfac: type: keyword description: ' xxx' @@ -100,4 +103,4 @@ blocks: tagged: false dtype: double shape: - - interpolation_method + - time_series_names diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json index 49234c86..99625e8c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json @@ -141,7 +141,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml index 5aed6dba..0cc0b37a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml @@ -75,7 +75,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml index 5ccd2564..3d299149 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml @@ -143,7 +143,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json index ec218360..8639b2a6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml index c8ceecf9..388a866b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml index 32e03727..bdb856a6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json index 678dc1d0..46b55c79 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml index 3e66628a..ca1ae1e3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml index 3204e0f7..4e0965fa 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json index f39bbdb2..b0d2bfa9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml index c3ad643d..ecc90239 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml index c339f709..824ed363 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json index 170eca39..e47afe85 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml index 887d9712..8a309562 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml index 52e4fc9f..6a458c65 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json index d85a95d3..09426b1a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml index fbca2429..edb5f5a3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml index bf267b54..25f3a5d1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json index b3703708..fb7c7070 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json @@ -176,7 +176,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml index a4862320..e9f8d890 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml @@ -94,7 +94,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml index 1a90b685..430c317d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml @@ -181,7 +181,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json index 02b2432d..e62e4351 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml index bd824491..b95bb791 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of constant temperatu [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml index 215d734b..dbf1b103 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json index 8da750c0..c2068a1c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml index 1ebbf819..4caefe65 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of source cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml index 475e681a..9856b1bf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml @@ -156,7 +156,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json index d4763a7c..b9f13e2f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml index 0c0a4f06..e3c82ede 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml index e8e094da..c1ab9dc3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json index 967e01fa..415126e4 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json @@ -167,7 +167,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml index de4e649d..93469b40 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml @@ -107,7 +107,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml index e33ac350..83c5a6c7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml @@ -161,7 +161,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json index d2d21f30..1c605f4e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json @@ -508,7 +508,7 @@ } }, "shape": [ - "maxsig0" + "<=maxsig0" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml index 72bfc03b..a23b87f2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml @@ -439,7 +439,7 @@ tagged = false [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxsig0", + "<=maxsig0", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml index cf8d5bc6..b044793c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml @@ -503,7 +503,7 @@ blocks: tagged: false time_series: true shape: - - maxsig0 + - <=maxsig0 header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json index d1208cc4..995dcdd7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json @@ -185,7 +185,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml index f280bf7e..928e2bc1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml @@ -118,7 +118,7 @@ description = "integer value specifying the maximum number of drains cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml index 60bc7cbe..79c979a5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml @@ -188,7 +188,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json index a2d77acd..7cc7c5fb 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json @@ -227,7 +227,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml index 5ffebb1f..3882821f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml @@ -121,7 +121,7 @@ description = "number of ET segments. Default is one. When NSEG is greater tha [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml index 74a7266a..22da6452 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml @@ -232,7 +232,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json index d612ecaf..5aeb0a26 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json @@ -172,7 +172,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml index 8d07e84b..4cca579a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml @@ -105,7 +105,7 @@ description = "integer value specifying the maximum number of general-head bound [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml index 88187082..b826c32d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml @@ -170,7 +170,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json index bb28ecdf..d799e7e1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json @@ -65,7 +65,7 @@ } }, "shape": [ - "maxhfb" + "<=maxhfb" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml index 87ed116f..8f9384bc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml @@ -21,7 +21,7 @@ description = "integer value specifying the maximum number of hydraulic flow bar [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxhfb", + "<=maxhfb", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml index 0dec056a..9368d42c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml @@ -64,7 +64,7 @@ blocks: calculated for the two cells would be multiplied by 1.5. tagged: false shape: - - maxhfb + - <=maxhfb header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json index ca5a36bd..bfe56023 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml index 8f2e2e5f..766f67f8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml index 549e2fda..b8de4a7c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json index 9d79870e..b718bdac 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json @@ -166,7 +166,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml index 0e3a5a99..88d6ae9d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml @@ -106,7 +106,7 @@ description = "integer value specifying the maximum number of recharge cells tha [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml index edc4ccdc..517fd377 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml @@ -163,7 +163,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json index 6eabaf56..a39624f0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json @@ -179,7 +179,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml index 42451e16..47f29024 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml @@ -105,7 +105,7 @@ description = "integer value specifying the maximum number of rivers cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml index 97afe25a..479762b6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml @@ -176,7 +176,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json index 9321bdba..52a91518 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json @@ -195,7 +195,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml index 505efcb7..53bd9b9a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml @@ -133,7 +133,7 @@ description = "integer value specifying the maximum number of wells cells that w [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml index 38fce931..99dc4408 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml @@ -201,7 +201,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json index a58161f2..10bd84a2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml index b2062b9b..aeb86412 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of constant concentra [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml index 2faf16b8..1255b449 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json index 233ff31b..4b5d16e5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json @@ -157,7 +157,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -205,7 +208,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml index 805b5cb5..27b085be 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml @@ -142,6 +142,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -186,6 +189,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml index a0af5db2..e7477448 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml @@ -134,6 +134,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -177,6 +179,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json index fb421a8e..bc8316da 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json @@ -166,7 +166,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml index 53409025..8d74310f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml @@ -106,7 +106,7 @@ description = "integer value specifying the maximum number of sources cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml index 8bbfd540..b226dc01 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml @@ -171,7 +171,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json index 98ca01b0..4812431b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json @@ -140,7 +140,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml index f3899e08..474f8fda 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml @@ -75,7 +75,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml index caaa9f63..ce35a1b8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml @@ -142,7 +142,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json index ec4ee5cc..de460985 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml index 70b48093..d8af1b69 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml index 2404b817..d6a426d6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json index 04872595..563198a7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml index 73909305..97f562f1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml index 94cbf1fe..7cb27c38 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json index 00d1e4e8..7ffd0d59 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml index e1f18daa..45148c55 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml index 06b41684..893c4397 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json index c6c427f1..09ed671a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml index b4ca4fcb..fe3d1492 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml index 5be54094..7e66ed6c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json index 360576dd..b99b4aef 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml index f62608ed..633a4eb1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml index 289ad78e..bada7a20 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json index d3c8ddb5..f4c13768 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json @@ -176,7 +176,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml index 252be5f4..c3b7be7f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml @@ -94,7 +94,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml index 7e817326..da757ccb 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml @@ -181,7 +181,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json index bc0f4629..8145b4b3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json @@ -262,7 +262,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -309,7 +312,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml index 8f72d394..6cd3f4c7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml @@ -233,6 +233,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -276,6 +279,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml index 725c947d..749aab11 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml @@ -229,6 +229,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -271,6 +273,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json index a197e076..9557b5e8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json @@ -342,14 +342,20 @@ "steps": { "type": "array", "description": "release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] }, "fraction": { "type": "array", "description": "release particles after the specified fraction of the time step has elapsed. If FRACTION is not set, particles are released at the start of the specified time step(s). FRACTION must be a single value when used with ALL, FIRST, or FREQUENCY. When used with STEPS, FRACTION may be a single value or an array of the same length as STEPS. If a single FRACTION value is provided with STEPS, the fraction applies to all steps. NOTE: The FRACTION option has been removed. For fine control over release timing, specify times explicitly using the RELEASETIMES block.", "optional": true, "removed": "6.6.0", - "dtype": "double" + "dtype": "double", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml index 87a18e7a..27c6a8ef 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml @@ -309,6 +309,9 @@ description = "release at the specified time step frequency. This keyword may be type = "array" description = "release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.perioddata.item.arms.fraction] type = "array" @@ -316,6 +319,9 @@ description = "release particles after the specified fraction of the time step h optional = true removed = "6.6.0" dtype = "double" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml index 23b3fd97..1bf3132c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml @@ -358,6 +358,8 @@ blocks: description: release at the start of each step specified in STEPS. This option may be used in conjunction with other RELEASESETTING options. dtype: integer + shape: + - <=nstp fraction: type: array description: 'release particles after the specified fraction of the time step has elapsed. @@ -370,6 +372,8 @@ blocks: optional: true removed: 6.6.0 dtype: double + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json index dc3426a0..bc0faec6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json @@ -88,7 +88,10 @@ "tagged": false } } - } + }, + "shape": [ + "nper" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml index 985e0652..be31dce7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml @@ -51,6 +51,9 @@ default = [ 1.0, ], ] +shape = [ + "nper", +] [blocks.perioddata.fields.perioddata.item] type = "record" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml index 7816a3ac..5fe2b088 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml @@ -76,6 +76,8 @@ blocks: The length of the first time step, $Delta t_1$, is related to PERLEN, NSTP, and TSMULT by the relation $Delta t_1= perlen frac{tsmult - 1}{tsmult^{nstp}-1}$. tagged: false + shape: + - nper memory: nper: set_in: ar diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json index 4417fa79..cb85f426 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json @@ -140,7 +140,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml index 518f5934..ef40273c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml @@ -75,7 +75,7 @@ description = "integer value specifying the maximum number of critical depth bou [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml index 756ae467..330e122e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml @@ -143,7 +143,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json index 221514ee..e385cb99 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml index 9f84d152..7580f64a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of constant-head cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml index 33e989ac..b07791da 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json index 632b9805..ccf7df0a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml index ab3f6e79..49069518 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of evaporation cells [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml index a286be33..c8ab9631 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json index 258b9385..1afe01d0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml index 6255ee76..49455eb0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of inflow cells that [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml index 41716af1..cbc03e15 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml @@ -155,7 +155,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json index a12c6998..51d48181 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json @@ -175,7 +175,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } @@ -223,7 +226,10 @@ "steps": { "type": "array", "description": "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps.", - "dtype": "integer" + "dtype": "integer", + "shape": [ + "<=nstp" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml index 11020839..2e13b8cf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml @@ -158,6 +158,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.fields.output.item.arms.printrecord] type = "record" @@ -202,6 +205,9 @@ description = "save at the specified time step frequency. This keyword may be us type = "array" description = "save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." dtype = "integer" +shape = [ + "<=nstp", +] [blocks.period.header] fill_forward = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml index 732f9ada..5a5450f8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml @@ -148,6 +148,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp printrecord: type: record optional: true @@ -191,6 +193,8 @@ blocks: description: save for each step specified in STEPS. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. dtype: integer + shape: + - <=nstp header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json index d17c1d09..ede5d81e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json @@ -160,7 +160,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml index 927bb073..6c0f23de 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml @@ -100,7 +100,7 @@ description = "integer value specifying the maximum number of precipitation cell [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml index 43536e71..d961eef2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml @@ -157,7 +157,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json index f54cf350..bbfdb06e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json @@ -175,7 +175,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml index 1d6038c6..835747d6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml @@ -94,7 +94,7 @@ description = "integer value specifying the maximum number of zero-depth-gradien [blocks.period.fields.stress_period_data] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.stress_period_data.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml index c748a231..0810ea72 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml @@ -181,7 +181,7 @@ blocks: optional: true tagged: false shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json index 43960bce..e9c0dca0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json @@ -68,7 +68,10 @@ "tagged": false } } - } + }, + "shape": [ + "<=maxats" + ] } } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml index 771d14ee..e21fb586 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml @@ -17,6 +17,9 @@ default = 1 [blocks.perioddata.fields.perioddata] type = "list" longname = "stress period ats time information" +shape = [ + "<=maxats", +] [blocks.perioddata.fields.perioddata.item] type = "record" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml index 54fe29f3..6530fc2a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml @@ -80,6 +80,8 @@ blocks: tests with this variable should be set to 5.0 or larger to determine if convergence can be achieved. tagged: false + shape: + - <=maxats memory: maxats: set_in: ar diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json index d2d199d7..c866ca18 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json @@ -88,7 +88,7 @@ } }, "shape": [ - "maxbound" + "<=maxbound" ] } }, diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml index 7753acce..a44314b7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml @@ -42,7 +42,7 @@ description = "integer value specifying the maximum number of spc cells that wil [blocks.period.fields.perioddata] type = "list" shape = [ - "maxbound", + "<=maxbound", ] [blocks.period.fields.perioddata.item] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml index b421787a..334ce61c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml @@ -80,7 +80,7 @@ blocks: default, the TEMPERATURE for each boundary feature is zero. time_series: true shape: - - maxbound + - <=maxbound header: fill_forward: true field: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json index 13617494..b842504f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json @@ -6,8 +6,8 @@ "multi": true, "subtype": "utility", "dims": { - "interpolation_method": { - "value": "len(interpolation_method)" + "time_series_names": { + "value": "len(time_series_names)" } }, "blocks": { @@ -42,7 +42,10 @@ "type": "array", "description": "Interpolation method, which is either STEPWISE or LINEAR.", "tagged": false, - "dtype": "string" + "dtype": "string", + "shape": [ + "time_series_names" + ] } } }, @@ -78,7 +81,10 @@ "type": "array", "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", "tagged": false, - "dtype": "double" + "dtype": "double", + "shape": [ + "time_series_names" + ] } } }, @@ -88,10 +94,9 @@ "optional": true, "fields": { "sfacval": { - "type": "array", + "type": "double", "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", - "tagged": false, - "dtype": "double" + "tagged": false } } }, @@ -121,7 +126,7 @@ "tagged": false, "dtype": "double", "shape": [ - "interpolation_method" + "time_series_names" ] } } diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml index 65d0e22c..863160bc 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml @@ -5,8 +5,8 @@ parent = "sim-nam" multi = true subtype = "utility" -[dims.interpolation_method] -value = "len(interpolation_method)" +[dims.time_series_names] +value = "len(time_series_names)" [blocks.attributes.fields.time_series_namerecord] type = "record" @@ -36,6 +36,9 @@ type = "array" description = "Interpolation method, which is either STEPWISE or LINEAR." tagged = false dtype = "string" +shape = [ + "time_series_names", +] [blocks.attributes.fields.interpolation_methodrecord_single] type = "record" @@ -70,6 +73,9 @@ type = "array" description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." tagged = false dtype = "double" +shape = [ + "time_series_names", +] [blocks.attributes.fields.sfacrecord_single] type = "record" @@ -77,10 +83,9 @@ description = "xxx" optional = true [blocks.attributes.fields.sfacrecord_single.fields.sfacval] -type = "array" +type = "double" description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." tagged = false -dtype = "double" [blocks.attributes.fields.sfac] type = "keyword" @@ -105,5 +110,5 @@ description = "A 2-D array of numeric, floating-point values, or a constant valu tagged = false dtype = "double" shape = [ - "interpolation_method", + "time_series_names", ] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml index 490fdd04..2f7217ae 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml @@ -5,8 +5,8 @@ parent: sim-nam multi: true subtype: utility dims: - interpolation_method: - value: len(interpolation_method) + time_series_names: + value: len(time_series_names) blocks: attributes: fields: @@ -36,6 +36,8 @@ blocks: description: Interpolation method, which is either STEPWISE or LINEAR. tagged: false dtype: string + shape: + - time_series_names interpolation_methodrecord_single: type: record description: xxx @@ -65,17 +67,18 @@ blocks: optional attribute; if omitted, SFAC = 1.0. tagged: false dtype: double + shape: + - time_series_names sfacrecord_single: type: record description: xxx optional: true fields: sfacval: - type: array + type: double description: Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0. tagged: false - dtype: double sfac: type: keyword description: ' xxx' @@ -100,4 +103,4 @@ blocks: tagged: false dtype: double shape: - - interpolation_method + - time_series_names diff --git a/autotest/dfns/test_migrate.py b/autotest/dfns/test_migrate.py index bd175eed..9d8eae8c 100644 --- a/autotest/dfns/test_migrate.py +++ b/autotest/dfns/test_migrate.py @@ -8,6 +8,7 @@ from modflow_devtools.dfn.schema import Dfn from modflow_devtools.dfns import fetch_dfns, migrate +from modflow_devtools.dfns import schema as v2 from modflow_devtools.dfns.migrate_to_v2_0_0_dev2 import to_v2_0_0_dev2 from modflow_devtools.dfns.migrate_to_v2_0_0_dev3 import to_v2_0_0_dev3 @@ -202,3 +203,81 @@ def test_migrate_ssm_sources_write_if_empty_without_tag(name): fields, meta = _load_sources_fields(dfn_without_tag) component = to_v2_0_0_dev2(name, fields, meta) assert component.blocks["sources"].write_if_empty is True + + +def _migrate_dev3(dfn_dir: Path, name: str): + from modflow_devtools.dfn import schema as v1 + + with (dfn_dir / "common.dfn").open() as f: + common, _ = v1.Dfn.load_dfn(f) + with (dfn_dir / f"{name}.dfn").open() as f: + fields, meta = v1.Dfn.load_dfn(f, common=common) + return to_v2_0_0_dev3(name, fields, meta) + + +def _list_shape(component, block: str) -> list[str]: + return component.blocks[block].fields[block].shape + + +@pytest.mark.parametrize("name", ["gwf-oc", "gwt-oc", "gwe-oc", "prt-oc"]) +def test_migrate_keeps_v1_upper_bound(dfn_dir, name): + # v1's `shape (nper", (">", "nper")), + (">= nper", (">=", "nper")), + ("<=packagedata.ncon(ifno)", ("<=", "packagedata.ncon(ifno)")), + ], +) +def test_split_bound(element, expected): + assert split_bound(element) == expected + + +def test_validate_shape_element_bound_arithmetic(): + arr, pkg, known = _make_shape_validation_ctx({"ncol"}) + _validate_shape_element("<=ncol + 1", arr, pkg, None, known) + + +def test_validate_shape_element_bound_derived_dim(): + arr, pkg, known = _make_shape_validation_ctx({"nrow", "ncol"}, derived={"ncpl": "nrow * ncol"}) + _validate_shape_element("<=ncpl", arr, pkg, None, known) + + +def test_validate_shape_element_bound_invalid_expression(): + arr, pkg, known = _make_shape_validation_ctx({"nrow"}) + with pytest.raises(ValueError, match="invalid shape element"): + _validate_shape_element("<=nrow * 2", arr, pkg, None, known) + + +def test_validate_shape_element_bound_repeated_operator(): + arr, pkg, known = _make_shape_validation_ctx({"nrow"}) + with pytest.raises(ValueError, match="at most one bound operator"): + _validate_shape_element("<==maxbound"]) +def test_validate_list_shape_element_bound(element): + lst = List(name="stress_period_data", item=Record(name="item", fields={})) + _validate_list_shape_element(element, lst, {"maxbound"}) + + +def test_validate_list_shape_element_bound_arithmetic(): + lst = List(name="stress_period_data", item=Record(name="item", fields={})) + _validate_list_shape_element(">=maxbound - 1", lst, {"maxbound"}) + + +def test_validate_list_shape_element_bound_unknown_dim(): + lst = List(name="stress_period_data", item=Record(name="item", fields={})) + with pytest.raises(ValueError, match="does not resolve"): + _validate_list_shape_element("<=nope", lst, {"maxbound"}) + + +def test_validate_list_shape_element_bound_repeated_operator(): + lst = List(name="stress_period_data", item=Record(name="item", fields={})) + with pytest.raises(ValueError, match="at most one bound operator"): + _validate_list_shape_element("<<=maxbound", lst, {"maxbound"}) + + def _lookup_ctx(): """ Returns (array, enclosing_record, component, known_dims) for a valid @@ -389,6 +451,11 @@ def test_validate_shape_element_row_level_lookup(): _validate_shape_element("packagedata.nlakeconn(lakeno)", arr, pkg, enc, known) +def test_validate_shape_element_bound_row_level_lookup(): + arr, enc, pkg, known = _lookup_ctx() + _validate_shape_element("<=packagedata.nlakeconn(lakeno)", arr, pkg, enc, known) + + def test_validate_shape_element_on_top_level_array(): arr, _enc, pkg, known = _lookup_ctx() with pytest.raises(ValueError, match="not inside a record"): diff --git a/docs/md/dfnspec.md b/docs/md/dfnspec.md index 0497b17d..65668c08 100644 --- a/docs/md/dfnspec.md +++ b/docs/md/dfnspec.md @@ -84,6 +84,7 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [`shape`](#shape-1) - [Dimensions](#dimensions) - [Dimension sources](#dimension-sources) + - [Bounds](#bounds) - [Dimension scope](#dimension-scope) - [Primary/foreign keys](#primary-and-foreign-keys) - [Memory catalog](#memory-catalog) @@ -210,13 +211,13 @@ Optional discriminator indicating the package's functional role. Several package - `"solution"`: provides solving capability for models. Compatibility with a model is determined by the model's `solution` attribute. - `"exchange"`: connects two models, enabling them to share boundary conditions or state at their interface. Parent is the simulation. -- `"stress"`: imposes boundary conditions on a model. Period data is provided per stress period; each period block replaces the full set of stresses for that period. Stress packages always declare a `maxbound` integer dimension (the maximum number of boundary entries per stress period) and their period block list carries `shape: ["maxbound"]`. +- `"stress"`: imposes boundary conditions on a model. Period data is provided per stress period; each period block replaces the full set of stresses for that period. Stress packages always declare a `maxbound` integer dimension (the maximum number of boundary entries per stress period) and their period block list carries `shape: ["<=maxbound"]`, an upper bound (see [Bounds](#bounds)). - `"advanced"`: an advanced stress package. Differs from `"stress"` in three key ways: 1. Solves a continuity equation. Each feature (well, reach, lake cell, UZF cell) internally balances inflows, outflows, and change in storage. Traditional stress packages impose static conditions and do not have an internal water budget. **Note:** advanced packages can act as receivers in the Water Mover (MVR/MVE) package because they have an internal continuity equation to receive diverted water into. Traditional stress packages cannot. 2. Has dynamic state variables. Advanced packages compute a dependent variable (e.g., lake stage, well head, reach stage) that is part of the solution. Traditional stress packages use fixed/user-specified values. 3. Stress periods have feature replacement rather than block replacement semantics: when a new period block configuration is provided, traditional stress packages replace the entire previous configuration; advanced packages perform partial updates, modifying only features explicitly appearing in the new period block. **Note:** both simple and advanced packages fill-forward across omitted stress periods; the distinction is only in what happens when a new period block configuration is specified. - Advanced packages do **not** declare a `maxbound` dimension. Their list lengths (packagedata rows, period entries per feature, etc.) are determined at runtime — typically derived from a linked flow package's budget object or internal state — and are not declared in the DFN. Accordingly, their list fields carry `shape: []`. + Advanced packages do **not** declare a `maxbound` dimension. Lists counted by a declared dimension carry it as their shape, e.g. LAK `packagedata` (`["nlakes"]`), `outlets` (`["noutlets"]`) and `connectiondata` (`["nlakeconn"]`, derived as `sum(packagedata.nlakeconn)`), or MAW/SFR/UZF `packagedata` (`["nmawwells"]`, `["nreaches"]`, `["nuzfcells"]`). Lists whose length isn't declared in the DFN carry `shape: []`, e.g. period lists, or the `packagedata` of a transport-side package, whose features are counted by the linked flow package. - `"utility"`: an auxiliary package that may be attached to models or packages, such as time series, time-array series, or observations. Utility packages (`utl-*`) are distinguished from primary model input packages by providing configurational or cross-cutting concerns rather than representing a first-class hydrologic process. They may support `multi`. `subtype: null` (the default) covers packages that don't fall into any named category, such as output control packages. @@ -453,7 +454,7 @@ A 1D array appearing as a subfield of a record is called an **inline array**. In ###### `shape` -`[string] (default: [])`. The array's shape, as a list of shape expressions, one per dimension. An empty list means the array is 1-dimensional and **self-sizing** (see above). +`[string] (default: [])`. The array's shape, as a list of shape expressions, one per dimension. An empty list means the array is 1-dimensional and **self-sizing** (see above). Each extent is exact unless its expression is prefixed with an inequality operator (e.g. `"<=nstp"`); see [Bounds](#bounds). ###### `time_series` @@ -509,9 +510,9 @@ Untagged lists are tables: a block body of items, one per line, e.g. a stress pa `[string] (default: [])`. The list's shape, as a list of at most one shape expression (lists are necessarily 1-dimensional). -An **empty `shape`** means the list length is unconstrained at schema-definition time. This is the correct representation for any list whose length is determined at runtime rather than from a declared dimension — including all list fields in advanced packages (LAK, SFR, MAW, UZF, and their transport-side counterparts), whose lengths are derived from a linked flow package's budget or internal state and are never declared in the DFN. +An **empty `shape`** means the list length is unconstrained at schema-definition time. This is the correct representation for any list whose length is determined at runtime rather than from a declared dimension, e.g. an advanced package's period list or a transport-side advanced package's `packagedata`, whose rows are counted by the linked flow package. -A **non-empty `shape`** (exactly one element) names a declared dimension that bounds the list. The canonical case is a stress package's period block list, which carries `shape: ["maxbound"]`. The `maxbound` dimension is explicitly declared in the stress package's `dimensions` block as an integer field the user must supply. +A **non-empty `shape`** (exactly one element) relates the list's row count to a declared dimension. A bare expression means *exactly* that many rows, e.g. `sim-tdis` `perioddata` (`["nper"]`) or `gwf-mvr` `packages` (`["maxpackages"]`: MF6 requires exactly `maxpackages` rows despite the name). An expression prefixed with an inequality operator is a bound; see [Bounds](#bounds). The canonical case is a stress package's period block list, which carries `shape: ["<=maxbound"]`: at most `maxbound` rows per period. The `maxbound` dimension is explicitly declared in the stress package's `dimensions` block as an integer field the user must supply. **Note:** Some non-period lists in stress-type packages (e.g. `utl-spc`) also reference `maxbound`; these follow the same rule — `maxbound` must be an explicitly declared dimension for the shape to be meaningful. @@ -673,6 +674,14 @@ connectiondata: `packagedata.ncon(ifno)` means: follow `ifno`'s FK to identify the `packagedata` row, then read `ncon` from it. Each `connectiondata` row has a different number of `ic` values; each record is a variadic tuple, making the list jagged. +#### Bounds + +A shape expression gives an exact extent. Prefixed with one of the inequality operators `<`, `<=`, `>` or `>=`, it gives a bound on the extent instead: `"<=maxbound"` means at most `maxbound` rows. Any shape expression may be bounded, including a derived dimension, arithmetic offset, or row-level column lookup (`"<=packagedata.ncon(ifno)"`), with at most one operator per extent. Bounds apply to `list` and `array` shapes. Memory variable shapes can't be bounded; MF6 allocates memory arrays at a definite size. + +An unprefixed extent is exact, so a DFN must mark every bound. A consumer may reject input that doesn't satisfy the relation: too many or too few rows for an exact extent, too many for an upper bound. + +Legacy `.dfn` files use `<` to mean "at most", e.g. `shape (`) to the inclusive operator, so `( tuple[str, str]: + """ + Split a v1 shape element into a v2 bound operator and the bounded expression. + + v1 marks an upper bound with ``<`` (``shape (`` for a lower bound. v2 has the full set of inequalities, + where ``<`` is strict, so v1's markers become ``<=``/``>=``. + """ + if elem[:1] in ("<", ">"): + return f"{elem[0]}=", elem[1:].lstrip("=").strip() + return "", elem + def try_parse_bool(v: Any, default: bool = False) -> bool: """ @@ -89,16 +109,18 @@ def _parse_list_shape(s: str) -> list[str]: """ Parse a v1 recarray shape string into a ``List.shape`` value. - Only a bare identifier is accepted — complex expressions such as - ``sum(nlakeconn)`` cannot be represented in ``List.shape`` and are dropped. + Only a bare identifier, optionally bound-marked (`` 1: candidate = "max" + elem[1:] if candidate in raw_dim_names: - return [candidate] + return [f"{op or ''}{candidate}"] return None return _remap_list_shapes(blocks, _fn) @@ -207,7 +229,10 @@ def _sanitize_list_shapes( return _remap_list_shapes( blocks, lambda bname, fname, field: ( - [] if field.shape and any(elem not in known_dims for elem in field.shape) else None + [] + if field.shape + and any(v2.split_bound(elem)[1] not in known_dims for elem in field.shape) + else None ), ) @@ -232,6 +257,7 @@ def _scan(fields: Mapping[str, v2.InputField]) -> None: self_sizing.add(name) else: for elem in field.shape: + _, elem = v2.split_bound(elem) if _IDENT_RE.fullmatch(elem): shape_refs.add(elem) if isinstance(field, v2.Record): @@ -317,7 +343,7 @@ def _scan_record(record: v2.Record) -> None: for field in record.fields.values(): if isinstance(field, v2.Array): for dim in field.shape: - if m := _LOOKUP_RE.fullmatch(dim): + if m := _LOOKUP_RE.fullmatch(v2.split_bound(dim)[1]): pk_block, _, fk_fname = m.groups() sibling = record.fields.get(fk_fname) if sibling is not None and getattr(sibling, "fk", None) is None: @@ -628,7 +654,7 @@ def _item_array_dims(field: v2.List) -> set[str]: item_fields = item.fields if isinstance(item, v2.Record) else item.arms for f in item_fields.values(): if isinstance(f, v2.Array): - dims.update(f.shape) + dims.update(v2.split_bound(elem)[1] for elem in f.shape) return dims @@ -660,7 +686,7 @@ def _fill_named_list_shapes( if "period" not in bname for field in block.fields.values() if isinstance(field, v2.List) - for dim in field.shape + for dim in (v2.split_bound(elem)[1] for elem in field.shape) } _SKIP = {"auxiliary"} @@ -792,7 +818,11 @@ def _infer_list_shape_dims( shape_str = v1_shapes.get((bname, fname)) if not shape_str: continue - result = _translate_v1_shape_expr(shape_str, col_to_list) + s = shape_str.strip() + if s.startswith("(") and s.endswith(")"): + s = s[1:-1].strip() + op, s = _split_v1_bound(s) + result = _translate_v1_shape_expr(s, col_to_list) if not result: continue dim_name, v2_expr = result @@ -800,7 +830,7 @@ def _infer_list_shape_dims( if dim_name in existing_dims or dim_name in derived: continue derived[dim_name] = v2.InputDim(value=v2_expr, scope=scope) - new_fields[fname] = field.model_copy(update={"shape": [dim_name]}) + new_fields[fname] = field.model_copy(update={"shape": [f"{op}{dim_name}"]}) changed = True if changed: new_blocks[bname] = block.model_copy(update={"fields": new_fields}) @@ -1179,6 +1209,62 @@ def _fix_ssm_sources_write_if_empty(name: str, blocks: dict[str, v2.Block]) -> d return {**blocks, "sources": sources.model_copy(update={"write_if_empty": True})} +# List dims that MF6 treats as an upper bound (it reads up to that many rows and +# uses the count read), though v1 doesn't mark them `<`. Each is confirmed in the +# MF6 source: IDM's period list loader sets `nbound` from the rows read (every +# `maxbound`), HFB sets `nhfb` likewise, CSUB loops over the `nbound` read, and +# ATS reads PERIODDATA until the block ends. Unmarked dims are exact, whatever +# their name: MVR errors unless there are exactly `maxpackages` PACKAGES rows. +_UPPER_BOUND_LIST_DIMS = frozenset({"maxbound", "maxhfb", "maxsig0", "maxats"}) + +# Lists whose v1 recarray has no shape, though a declared dim counts its rows. +_MISSING_LIST_SHAPES: dict[tuple[str, str], str] = { + ("sim-tdis", "perioddata"): "nper", + ("utl-ats", "perioddata"): "maxats", +} + + +def _fix_list_shapes(name: str, blocks: dict[str, v2.Block]) -> dict[str, v2.Block]: + """ + Fill in list shapes v1 omits and mark upper bounds v1 leaves unmarked. + + Stopgap until the modflow6 DFNs carry ``shape (nper)``, ``shape ( dict[str, v2.Block]: + """ + Make ``utl-ts``'s SFAC scale factor a scalar. + + v1 shares one ``sfacval`` between the SFACS record (one factor per time + series) and the SFAC record (a single factor for all of them), so both map + to the SFACS array. MF6 reads one value after SFAC. + """ + if name != "utl-ts" or "attributes" not in blocks: + return blocks + block = blocks["attributes"] + record = block.fields.get("sfacrecord_single") + if not isinstance(record, v2.Record) or not isinstance( + sfacval := record.fields.get("sfacval"), v2.Array + ): + return blocks + shared = (set(v2.Double.model_fields) & sfacval.model_fields_set) - {"type"} + scalar = v2.Double(**{k: getattr(sfacval, k) for k in shared}) + record = record.model_copy(update={"fields": {**record.fields, "sfacval": scalar}}) + fields = {**block.fields, "sfacrecord_single": record} + return {**blocks, "attributes": block.model_copy(update={"fields": fields})} + + def _parse_valid(valid: Any, coerce=None) -> list | None: """Parse a v1 ``valid`` attribute to a list, optionally coercing each element.""" parts = valid.split() if isinstance(valid, str) else (list(valid) if valid else []) @@ -1273,7 +1359,7 @@ def to_v2_0_0_dev2(name: str, fields: OMD, meta: list[str]) -> v2.Component: def _map_field(f: v1.Field) -> v2.InputField: _name: str = f["name"] _type: str | None = f.get("type") - shape_str: str | None = f.get("shape") or None + shape_str: str | None = _V1_SHAPE_FIXES.get((name, _name), f.get("shape") or None) description: str | None = f.get("description") or None longname: str | None = f.get("longname") or None optional: bool = try_parse_bool(f.get("optional"), False) @@ -1304,41 +1390,48 @@ def _map_field(f: v1.Field) -> v2.InputField: else _default_raw ) + def _parse_shape_elem(elem: str) -> str | None: + if ";" in elem: + return "ncpl" + if elem in ("any1d", "unknown"): + return None + if m := _COL_FK_RE.fullmatch(elem): + col_name = m.group(1) + block_name = next( + ( + fi["block"] + for fi in fields.values(multi=True) + if fi["name"] == col_name + and fi["type"] == "integer" + and try_parse_bool(fi.get("in_record", False)) + ), + None, + ) + return f"{block_name}.{elem}" if block_name else None + # A dim that isn't itself a field (e.g. `naux`) is named for the + # string array it counts (`auxiliary`, shape `(naux)`). + if any(fi["name"] == elem for fi in fields.values(multi=True)): + return elem + provider = next( + ( + fi["name"] + for fi in fields.values(multi=True) + if fi["type"] == "string" + and (fi.get("shape") or "").strip() in (f"({elem})", elem) + ), + None, + ) + return provider if provider else elem + def _parse_shape(s: str) -> list[str]: result = [] s_clean = s.strip() if s_clean.startswith("(") and s_clean.endswith(")"): s_clean = s_clean[1:-1] for elem in (x.strip() for x in s_clean.split(",") if x.strip()): - if ";" in elem: - result.append("ncpl") - elif elem in ("any1d", "unknown") or elem.startswith("<") or elem.startswith(">"): - pass - elif m := _COL_FK_RE.fullmatch(elem): - col_name = m.group(1) - block_name = next( - ( - fi["block"] - for fi in fields.values(multi=True) - if fi["name"] == col_name - and fi["type"] == "integer" - and try_parse_bool(fi.get("in_record", False)) - ), - None, - ) - if block_name: - result.append(f"{block_name}.{elem}") - else: - provider = next( - ( - fi["name"] - for fi in fields.values(multi=True) - if fi["type"] == "string" - and (fi.get("shape") or "").strip() in (f"({elem})", elem) - ), - None, - ) - result.append(provider if provider else elem) + op, elem = _split_v1_bound(elem) + if (parsed := _parse_shape_elem(elem)) is not None: + result.append(f"{op}{parsed}") return result def _to_scalar() -> v2.Scalar: @@ -1634,7 +1727,9 @@ def _lookup(rname: str) -> dict | None: time_series=time_series, layered=layered, dtype="string", - shape=[], + # A string array is self-sizing unless another field + # counts it: `auxiliary`'s `(naux)` names itself. + shape=[e for e in _parse_shape(shape_str) if e != _name], ) # lenbigline is a character-length constraint (v1 overloading), # not an array dimension; fall through to _to_scalar() below. @@ -1696,6 +1791,8 @@ def _lookup(rname: str) -> dict | None: blocks = _fill_period_list_shapes(blocks, explicit_dims) blocks = _fill_named_list_shapes(blocks, explicit_dims) blocks, derived_dims = _infer_list_shape_dims(blocks, fields, _scope_for(parent), known_dims) + blocks = _fix_list_shapes(name, blocks) + blocks = _fix_ts_sfac(name, blocks) blocks = _wrap_oc_period_records(blocks) blocks = _wrap_repeating_records(blocks) blocks = _collapse_sto_keywords(blocks) diff --git a/modflow_devtools/dfns/schema.py b/modflow_devtools/dfns/schema.py index c757b16f..3b962249 100644 --- a/modflow_devtools/dfns/schema.py +++ b/modflow_devtools/dfns/schema.py @@ -857,6 +857,19 @@ class Package(ComponentBase): _ARITH_RE = re.compile(r"^([A-Za-z_]\w*)\s*[+-]\s*\d+$") +def split_bound(element: str) -> "tuple[str | None, str]": + """ + Split a shape element into its bound operator and the expression it bounds. + + A bare element (``"nper"``) is an exact extent; an element prefixed with an + inequality operator (``"<=maxbound"``) bounds the extent instead. Returns + ``(operator, expression)``, with ``operator`` ``None`` for an exact extent. + """ + if m := _BOUND_RE.match(element): + return m.group(), element[m.end() :].strip() + return None, element + + def _find_list_in_block(component: "ComponentBase", block_name: str) -> "List | None": """Return the first List field in the named block, or None.""" block = (component.blocks or {}).get(block_name) @@ -884,27 +897,21 @@ def _validate_shape_element( Must resolve in the 3-level scope: explicit → derived → grid dims. - Row-level column lookup ``^(\\w+)\\.(\\w+)\\((\\w+)\\)$`` Structural checks (see plan §Shape element parsing). + - Arithmetic offset (dim [+-] integer) + - Any of the above prefixed with a bound operator (<, >, <=, >=) Raises ValueError on any violation. """ - # strip bounds (<, >, <=, >=) and validate the core identifier - if bound_m := _BOUND_RE.match(element): - core = element[bound_m.end() :] - if not _DIM_RE.fullmatch(core): + # a bound (<, >, <=, >=) may prefix any expression valid on its own + op, core = split_bound(element) + if op is not None: + if split_bound(core)[0] is not None: raise ValueError( f"Array {array_field.name!r} has invalid shape element {element!r}: " - f"must be a plain identifier after the bound operator" + f"at most one bound operator is allowed" ) - if core in known_dims: - return - if enclosing_record is not None: - sibling = enclosing_record.fields.get(core) - if isinstance(sibling, Integer): - return - raise ValueError( - f"Array {array_field.name!r} shape element {element!r}: " - f"{core!r} does not resolve to a known dim (explicit, derived, or grid)" - ) + _validate_shape_element(core, array_field, component, enclosing_record, known_dims, spec) + return if _DIM_RE.fullmatch(element): if element in known_dims: @@ -1012,7 +1019,8 @@ def _validate_shape_element( raise ValueError( f"Array {array_field.name!r} has invalid shape element {element!r}: " f"must be a dim reference (^[A-Za-z_]\\w*$), an arithmetic offset " - f"(dim [+-] integer), or a row-level lookup (block.column(fk_field))" + f"(dim [+-] integer), or a row-level lookup (block.column(fk_field)), " + f"optionally prefixed by a bound (<, <=, >, >=)" ) @@ -1027,21 +1035,17 @@ def _validate_list_shape_element( Valid forms are a strict subset of array shape forms — no row-level lookup and no intra-record sibling reference, since lists are not inside records: - Plain dim reference - - Bound-annotated dim reference (<, >, <=, >=) - Arithmetic offset (dim [+-] integer) + - Any of the above prefixed with a bound operator (<, >, <=, >=) """ - if bound_m := _BOUND_RE.match(element): - core = element[bound_m.end() :] - if not _DIM_RE.fullmatch(core): + op, core = split_bound(element) + if op is not None: + if split_bound(core)[0] is not None: raise ValueError( f"List {list_field.name!r} has invalid shape element {element!r}: " - f"must be a plain identifier after the bound operator" - ) - if core not in known_dims: - raise ValueError( - f"List {list_field.name!r} shape element {element!r}: " - f"{core!r} does not resolve to a known dim" + f"at most one bound operator is allowed" ) + _validate_list_shape_element(core, list_field, known_dims) return if _DIM_RE.fullmatch(element): @@ -1064,7 +1068,7 @@ def _validate_list_shape_element( raise ValueError( f"List {list_field.name!r} has invalid shape element {element!r}: " f"must be a dim reference (^[A-Za-z_]\\w*$), an arithmetic offset " - f"(dim [+-] integer), or a bound-annotated dim (/>=dim)" + f"(dim [+-] integer), optionally prefixed by a bound (<, <=, >, >=)" ) From 413fb603ea88c9ef904c9f4eb7457c3b494dd2cd Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 30 Sep 2026 06:07:53 -0700 Subject: [PATCH 2/2] docs(dfns): describe shape bounds generally Keep the spec free of DFN specifics: use placeholder dimensions in shape examples and drop per-package details. Move the note on the legacy `<` marker and the migration's bound fix-ups to the migration docs. Co-Authored-By: Claude Opus 5.5 --- docs/md/dfns.md | 2 ++ docs/md/dfnspec.md | 14 ++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/md/dfns.md b/docs/md/dfns.md index 924b05af..b9baaecd 100644 --- a/docs/md/dfns.md +++ b/docs/md/dfns.md @@ -55,6 +55,8 @@ python -m modflow_devtools.dfns migrate -i -o -s `) to `<=` (and `>=`). The legacy format leaves most upper bounds unmarked, so the migration also marks the ones confirmed against the MODFLOW 6 source, and fills in list shapes the legacy files omit. These fix-ups live in `migrate_to_v2_0_0_dev2.py` until the upstream `.dfn` files carry the markers. + Supported schema versions are currently `"2.0.0.dev0"`, `"2.0.0.dev1"`, and `"2.0.0.dev2"` (`CURRENT_SCHEMA_VERSION`). Note that `2.0.0.dev2` is under active development and may change without warning. The default serialization format is YAML. Use `--format` / `-f` to select `yaml` (default), `toml`, or `json`. diff --git a/docs/md/dfnspec.md b/docs/md/dfnspec.md index 65668c08..2aba963e 100644 --- a/docs/md/dfnspec.md +++ b/docs/md/dfnspec.md @@ -217,7 +217,7 @@ Optional discriminator indicating the package's functional role. Several package 2. Has dynamic state variables. Advanced packages compute a dependent variable (e.g., lake stage, well head, reach stage) that is part of the solution. Traditional stress packages use fixed/user-specified values. 3. Stress periods have feature replacement rather than block replacement semantics: when a new period block configuration is provided, traditional stress packages replace the entire previous configuration; advanced packages perform partial updates, modifying only features explicitly appearing in the new period block. **Note:** both simple and advanced packages fill-forward across omitted stress periods; the distinction is only in what happens when a new period block configuration is specified. - Advanced packages do **not** declare a `maxbound` dimension. Lists counted by a declared dimension carry it as their shape, e.g. LAK `packagedata` (`["nlakes"]`), `outlets` (`["noutlets"]`) and `connectiondata` (`["nlakeconn"]`, derived as `sum(packagedata.nlakeconn)`), or MAW/SFR/UZF `packagedata` (`["nmawwells"]`, `["nreaches"]`, `["nuzfcells"]`). Lists whose length isn't declared in the DFN carry `shape: []`, e.g. period lists, or the `packagedata` of a transport-side package, whose features are counted by the linked flow package. + Advanced packages do **not** declare a `maxbound` dimension. Like any other list, a list whose row count is given by a declared or derived dimension carries it as its shape, and one whose length isn't declared in the DFN carries `shape: []`. - `"utility"`: an auxiliary package that may be attached to models or packages, such as time series, time-array series, or observations. Utility packages (`utl-*`) are distinguished from primary model input packages by providing configurational or cross-cutting concerns rather than representing a first-class hydrologic process. They may support `multi`. `subtype: null` (the default) covers packages that don't fall into any named category, such as output control packages. @@ -454,7 +454,7 @@ A 1D array appearing as a subfield of a record is called an **inline array**. In ###### `shape` -`[string] (default: [])`. The array's shape, as a list of shape expressions, one per dimension. An empty list means the array is 1-dimensional and **self-sizing** (see above). Each extent is exact unless its expression is prefixed with an inequality operator (e.g. `"<=nstp"`); see [Bounds](#bounds). +`[string] (default: [])`. The array's shape, as a list of shape expressions, one per dimension. An empty list means the array is 1-dimensional and **self-sizing** (see above). Each extent is exact unless its expression is prefixed with an inequality operator (e.g. `"<=n"`); see [Bounds](#bounds). ###### `time_series` @@ -510,9 +510,9 @@ Untagged lists are tables: a block body of items, one per line, e.g. a stress pa `[string] (default: [])`. The list's shape, as a list of at most one shape expression (lists are necessarily 1-dimensional). -An **empty `shape`** means the list length is unconstrained at schema-definition time. This is the correct representation for any list whose length is determined at runtime rather than from a declared dimension, e.g. an advanced package's period list or a transport-side advanced package's `packagedata`, whose rows are counted by the linked flow package. +An **empty `shape`** means the list length is unconstrained at schema-definition time. This is the correct representation for any list whose length is determined at runtime, or by another component, rather than by a declared dimension. -A **non-empty `shape`** (exactly one element) relates the list's row count to a declared dimension. A bare expression means *exactly* that many rows, e.g. `sim-tdis` `perioddata` (`["nper"]`) or `gwf-mvr` `packages` (`["maxpackages"]`: MF6 requires exactly `maxpackages` rows despite the name). An expression prefixed with an inequality operator is a bound; see [Bounds](#bounds). The canonical case is a stress package's period block list, which carries `shape: ["<=maxbound"]`: at most `maxbound` rows per period. The `maxbound` dimension is explicitly declared in the stress package's `dimensions` block as an integer field the user must supply. +A **non-empty `shape`** (exactly one element) relates the list's row count to a declared dimension. A bare expression means *exactly* that many rows (`["n"]`). An expression prefixed with an inequality operator is a bound (`["<=n"]`: at most `n` rows); see [Bounds](#bounds). Whether an extent is exact or a bound must be declared; it can't be inferred from the dimension's name. **Note:** Some non-period lists in stress-type packages (e.g. `utl-spc`) also reference `maxbound`; these follow the same rule — `maxbound` must be an explicitly declared dimension for the shape to be meaningful. @@ -676,11 +676,9 @@ connectiondata: #### Bounds -A shape expression gives an exact extent. Prefixed with one of the inequality operators `<`, `<=`, `>` or `>=`, it gives a bound on the extent instead: `"<=maxbound"` means at most `maxbound` rows. Any shape expression may be bounded, including a derived dimension, arithmetic offset, or row-level column lookup (`"<=packagedata.ncon(ifno)"`), with at most one operator per extent. Bounds apply to `list` and `array` shapes. Memory variable shapes can't be bounded; MF6 allocates memory arrays at a definite size. +A shape expression gives an exact extent. Prefixed with one of the inequality operators `<`, `<=`, `>` or `>=`, it gives a bound on the extent instead: `"<=n"` means at most `n`. Any shape expression may be bounded, including a derived dimension, arithmetic offset, or row-level column lookup (`"<=block.column(fk_field)"`), with at most one operator per extent. Bounds apply to `list` and `array` shapes. Memory variable shapes can't be bounded; MF6 allocates memory arrays at a definite size. -An unprefixed extent is exact, so a DFN must mark every bound. A consumer may reject input that doesn't satisfy the relation: too many or too few rows for an exact extent, too many for an upper bound. - -Legacy `.dfn` files use `<` to mean "at most", e.g. `shape (`) to the inclusive operator, so `(