From 74b81f2158bb64718d6d3042afae350b86fa1247 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Tue, 23 Jun 2026 18:36:22 -0700 Subject: [PATCH 1/6] feat(dfns): add memory variable specification/schema --- .../__snapshots__/v2.0.0.dev2/chf-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/chf-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/chf-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/chf-sto.json | 1 - .../__snapshots__/v2.0.0.dev2/chf-sto.toml | 1 - .../__snapshots__/v2.0.0.dev2/chf-sto.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwe-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/gwe-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwe-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-csub.json | 1 - .../__snapshots__/v2.0.0.dev2/gwf-csub.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-csub.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-hfb.json | 1 - .../__snapshots__/v2.0.0.dev2/gwf-hfb.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-hfb.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-mvr.json | 1 - .../__snapshots__/v2.0.0.dev2/gwf-mvr.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-mvr.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/gwf-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-sto.json | 1 - .../__snapshots__/v2.0.0.dev2/gwf-sto.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwf-sto.yaml | 1 - .../__snapshots__/v2.0.0.dev2/gwt-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/gwt-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/gwt-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/olf-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/olf-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/olf-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/olf-sto.json | 1 - .../__snapshots__/v2.0.0.dev2/olf-sto.toml | 1 - .../__snapshots__/v2.0.0.dev2/olf-sto.yaml | 1 - .../__snapshots__/v2.0.0.dev2/prt-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/prt-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/prt-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/sim-tdis.json | 1 - .../__snapshots__/v2.0.0.dev2/sim-tdis.toml | 1 - .../__snapshots__/v2.0.0.dev2/sim-tdis.yaml | 1 - .../__snapshots__/v2.0.0.dev2/swf-oc.json | 1 - .../__snapshots__/v2.0.0.dev2/swf-oc.toml | 1 - .../__snapshots__/v2.0.0.dev2/swf-oc.yaml | 1 - .../__snapshots__/v2.0.0.dev2/swf-sto.json | 1 - .../__snapshots__/v2.0.0.dev2/swf-sto.toml | 1 - .../__snapshots__/v2.0.0.dev2/swf-sto.yaml | 1 - .../__snapshots__/v2.0.0.dev3/chf-cdb.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/chf-cdb.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/chf-cdb.yaml | 239 ++++ .../__snapshots__/v2.0.0.dev3/chf-chd.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/chf-chd.toml | 242 ++++ .../__snapshots__/v2.0.0.dev3/chf-chd.yaml | 234 ++++ .../__snapshots__/v2.0.0.dev3/chf-cxs.json | 119 ++ .../__snapshots__/v2.0.0.dev3/chf-cxs.toml | 91 ++ .../__snapshots__/v2.0.0.dev3/chf-cxs.yaml | 106 ++ .../__snapshots__/v2.0.0.dev3/chf-dfw.json | 160 +++ .../__snapshots__/v2.0.0.dev3/chf-dfw.toml | 142 ++ .../__snapshots__/v2.0.0.dev3/chf-dfw.yaml | 146 ++ .../__snapshots__/v2.0.0.dev3/chf-disv1d.json | 250 ++++ .../__snapshots__/v2.0.0.dev3/chf-disv1d.toml | 216 +++ .../__snapshots__/v2.0.0.dev3/chf-disv1d.yaml | 220 +++ .../__snapshots__/v2.0.0.dev3/chf-evp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/chf-evp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/chf-evp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/chf-flw.json | 270 ++++ .../__snapshots__/v2.0.0.dev3/chf-flw.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/chf-flw.yaml | 236 ++++ .../__snapshots__/v2.0.0.dev3/chf-ic.json | 53 + .../__snapshots__/v2.0.0.dev3/chf-ic.toml | 37 + .../__snapshots__/v2.0.0.dev3/chf-ic.yaml | 40 + .../__snapshots__/v2.0.0.dev3/chf-nam.json | 166 +++ .../__snapshots__/v2.0.0.dev3/chf-nam.toml | 146 ++ .../__snapshots__/v2.0.0.dev3/chf-nam.yaml | 158 +++ .../__snapshots__/v2.0.0.dev3/chf-oc.json | 211 +++ .../__snapshots__/v2.0.0.dev3/chf-oc.toml | 177 +++ .../__snapshots__/v2.0.0.dev3/chf-oc.yaml | 169 +++ .../__snapshots__/v2.0.0.dev3/chf-pcp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/chf-pcp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/chf-pcp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/chf-sto.json | 54 + .../__snapshots__/v2.0.0.dev3/chf-sto.toml | 40 + .../__snapshots__/v2.0.0.dev3/chf-sto.yaml | 42 + .../__snapshots__/v2.0.0.dev3/chf-zdg.json | 294 ++++ .../__snapshots__/v2.0.0.dev3/chf-zdg.toml | 268 ++++ .../__snapshots__/v2.0.0.dev3/chf-zdg.yaml | 269 ++++ .../__snapshots__/v2.0.0.dev3/exg-chfgwf.json | 121 ++ .../__snapshots__/v2.0.0.dev3/exg-chfgwf.toml | 97 ++ .../__snapshots__/v2.0.0.dev3/exg-chfgwf.yaml | 114 ++ .../__snapshots__/v2.0.0.dev3/exg-gwegwe.json | 232 ++++ .../__snapshots__/v2.0.0.dev3/exg-gwegwe.toml | 206 +++ .../__snapshots__/v2.0.0.dev3/exg-gwegwe.yaml | 221 +++ .../__snapshots__/v2.0.0.dev3/exg-gwfgwe.json | 7 + .../__snapshots__/v2.0.0.dev3/exg-gwfgwe.toml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwfgwe.yaml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwfgwf.json | 253 ++++ .../__snapshots__/v2.0.0.dev3/exg-gwfgwf.toml | 223 +++ .../__snapshots__/v2.0.0.dev3/exg-gwfgwf.yaml | 249 ++++ .../__snapshots__/v2.0.0.dev3/exg-gwfgwt.json | 7 + .../__snapshots__/v2.0.0.dev3/exg-gwfgwt.toml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwfgwt.yaml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwfprt.json | 7 + .../__snapshots__/v2.0.0.dev3/exg-gwfprt.toml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwfprt.yaml | 5 + .../__snapshots__/v2.0.0.dev3/exg-gwtgwt.json | 232 ++++ .../__snapshots__/v2.0.0.dev3/exg-gwtgwt.toml | 206 +++ .../__snapshots__/v2.0.0.dev3/exg-gwtgwt.yaml | 219 +++ .../__snapshots__/v2.0.0.dev3/exg-olfgwf.json | 121 ++ .../__snapshots__/v2.0.0.dev3/exg-olfgwf.toml | 97 ++ .../__snapshots__/v2.0.0.dev3/exg-olfgwf.yaml | 114 ++ .../__snapshots__/v2.0.0.dev3/gwe-adv.json | 29 + .../__snapshots__/v2.0.0.dev3/gwe-adv.toml | 21 + .../__snapshots__/v2.0.0.dev3/gwe-adv.yaml | 30 + .../__snapshots__/v2.0.0.dev3/gwe-cnd.json | 197 +++ .../__snapshots__/v2.0.0.dev3/gwe-cnd.toml | 181 +++ .../__snapshots__/v2.0.0.dev3/gwe-cnd.yaml | 185 +++ .../__snapshots__/v2.0.0.dev3/gwe-ctp.json | 283 ++++ .../__snapshots__/v2.0.0.dev3/gwe-ctp.toml | 257 ++++ .../__snapshots__/v2.0.0.dev3/gwe-ctp.yaml | 246 ++++ .../__snapshots__/v2.0.0.dev3/gwe-dis.json | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwe-dis.toml | 261 ++++ .../__snapshots__/v2.0.0.dev3/gwe-dis.yaml | 247 ++++ .../__snapshots__/v2.0.0.dev3/gwe-disu.json | 363 +++++ .../__snapshots__/v2.0.0.dev3/gwe-disu.toml | 325 +++++ .../__snapshots__/v2.0.0.dev3/gwe-disu.yaml | 345 +++++ .../__snapshots__/v2.0.0.dev3/gwe-disv.json | 313 +++++ .../__snapshots__/v2.0.0.dev3/gwe-disv.toml | 277 ++++ .../__snapshots__/v2.0.0.dev3/gwe-disv.yaml | 272 ++++ .../__snapshots__/v2.0.0.dev3/gwe-esl.json | 280 ++++ .../__snapshots__/v2.0.0.dev3/gwe-esl.toml | 254 ++++ .../__snapshots__/v2.0.0.dev3/gwe-esl.yaml | 245 ++++ .../__snapshots__/v2.0.0.dev3/gwe-est.json | 179 +++ .../__snapshots__/v2.0.0.dev3/gwe-est.toml | 163 +++ .../__snapshots__/v2.0.0.dev3/gwe-est.yaml | 170 +++ .../__snapshots__/v2.0.0.dev3/gwe-fmi.json | 63 + .../__snapshots__/v2.0.0.dev3/gwe-fmi.toml | 47 + .../__snapshots__/v2.0.0.dev3/gwe-fmi.yaml | 58 + .../__snapshots__/v2.0.0.dev3/gwe-ic.json | 65 + .../__snapshots__/v2.0.0.dev3/gwe-ic.toml | 49 + .../__snapshots__/v2.0.0.dev3/gwe-ic.yaml | 53 + .../__snapshots__/v2.0.0.dev3/gwe-lke.json | 385 +++++ .../__snapshots__/v2.0.0.dev3/gwe-lke.toml | 347 +++++ .../__snapshots__/v2.0.0.dev3/gwe-lke.yaml | 365 +++++ .../__snapshots__/v2.0.0.dev3/gwe-mve.json | 54 + .../__snapshots__/v2.0.0.dev3/gwe-mve.toml | 42 + .../__snapshots__/v2.0.0.dev3/gwe-mve.yaml | 45 + .../__snapshots__/v2.0.0.dev3/gwe-mwe.json | 340 +++++ .../__snapshots__/v2.0.0.dev3/gwe-mwe.toml | 302 ++++ .../__snapshots__/v2.0.0.dev3/gwe-mwe.yaml | 318 +++++ .../__snapshots__/v2.0.0.dev3/gwe-nam.json | 206 +++ .../__snapshots__/v2.0.0.dev3/gwe-nam.toml | 182 +++ .../__snapshots__/v2.0.0.dev3/gwe-nam.yaml | 185 +++ .../__snapshots__/v2.0.0.dev3/gwe-oc.json | 205 +++ .../__snapshots__/v2.0.0.dev3/gwe-oc.toml | 171 +++ .../__snapshots__/v2.0.0.dev3/gwe-oc.yaml | 164 +++ .../__snapshots__/v2.0.0.dev3/gwe-sfe.json | 405 ++++++ .../__snapshots__/v2.0.0.dev3/gwe-sfe.toml | 367 +++++ .../__snapshots__/v2.0.0.dev3/gwe-sfe.yaml | 381 +++++ .../__snapshots__/v2.0.0.dev3/gwe-ssm.json | 103 ++ .../__snapshots__/v2.0.0.dev3/gwe-ssm.toml | 81 ++ .../__snapshots__/v2.0.0.dev3/gwe-ssm.yaml | 110 ++ .../__snapshots__/v2.0.0.dev3/gwe-uze.json | 323 +++++ .../__snapshots__/v2.0.0.dev3/gwe-uze.toml | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwe-uze.yaml | 307 ++++ .../__snapshots__/v2.0.0.dev3/gwf-api.json | 90 ++ .../__snapshots__/v2.0.0.dev3/gwf-api.toml | 72 + .../__snapshots__/v2.0.0.dev3/gwf-api.yaml | 76 + .../__snapshots__/v2.0.0.dev3/gwf-buy.json | 120 ++ .../__snapshots__/v2.0.0.dev3/gwf-buy.toml | 96 ++ .../__snapshots__/v2.0.0.dev3/gwf-buy.yaml | 111 ++ .../__snapshots__/v2.0.0.dev3/gwf-chd.json | 289 ++++ .../__snapshots__/v2.0.0.dev3/gwf-chd.toml | 263 ++++ .../__snapshots__/v2.0.0.dev3/gwf-chd.yaml | 251 ++++ .../__snapshots__/v2.0.0.dev3/gwf-chdg.json | 267 ++++ .../__snapshots__/v2.0.0.dev3/gwf-chdg.toml | 245 ++++ .../__snapshots__/v2.0.0.dev3/gwf-chdg.yaml | 232 ++++ .../__snapshots__/v2.0.0.dev3/gwf-csub.json | 601 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-csub.toml | 547 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-csub.yaml | 560 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-dis.json | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwf-dis.toml | 261 ++++ .../__snapshots__/v2.0.0.dev3/gwf-dis.yaml | 247 ++++ .../__snapshots__/v2.0.0.dev3/gwf-disu.json | 365 +++++ .../__snapshots__/v2.0.0.dev3/gwf-disu.toml | 327 +++++ .../__snapshots__/v2.0.0.dev3/gwf-disu.yaml | 347 +++++ .../__snapshots__/v2.0.0.dev3/gwf-disv.json | 313 +++++ .../__snapshots__/v2.0.0.dev3/gwf-disv.toml | 277 ++++ .../__snapshots__/v2.0.0.dev3/gwf-disv.yaml | 272 ++++ .../__snapshots__/v2.0.0.dev3/gwf-drn.json | 309 +++++ .../__snapshots__/v2.0.0.dev3/gwf-drn.toml | 283 ++++ .../__snapshots__/v2.0.0.dev3/gwf-drn.yaml | 280 ++++ .../__snapshots__/v2.0.0.dev3/gwf-drng.json | 291 ++++ .../__snapshots__/v2.0.0.dev3/gwf-drng.toml | 269 ++++ .../__snapshots__/v2.0.0.dev3/gwf-drng.yaml | 262 ++++ .../__snapshots__/v2.0.0.dev3/gwf-evt.json | 353 +++++ .../__snapshots__/v2.0.0.dev3/gwf-evt.toml | 327 +++++ .../__snapshots__/v2.0.0.dev3/gwf-evt.yaml | 326 +++++ .../__snapshots__/v2.0.0.dev3/gwf-evta.json | 293 ++++ .../__snapshots__/v2.0.0.dev3/gwf-evta.toml | 273 ++++ .../__snapshots__/v2.0.0.dev3/gwf-evta.yaml | 258 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghb.json | 292 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghb.toml | 266 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghb.yaml | 259 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghbg.json | 274 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghbg.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml | 241 ++++ .../__snapshots__/v2.0.0.dev3/gwf-gnc.json | 111 ++ .../__snapshots__/v2.0.0.dev3/gwf-gnc.toml | 89 ++ .../__snapshots__/v2.0.0.dev3/gwf-gnc.yaml | 112 ++ .../__snapshots__/v2.0.0.dev3/gwf-hfb.json | 79 ++ .../__snapshots__/v2.0.0.dev3/gwf-hfb.toml | 57 + .../__snapshots__/v2.0.0.dev3/gwf-hfb.yaml | 70 + .../__snapshots__/v2.0.0.dev3/gwf-ic.json | 65 + .../__snapshots__/v2.0.0.dev3/gwf-ic.toml | 49 + .../__snapshots__/v2.0.0.dev3/gwf-ic.yaml | 57 + .../__snapshots__/v2.0.0.dev3/gwf-lak.json | 561 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-lak.toml | 499 +++++++ .../__snapshots__/v2.0.0.dev3/gwf-lak.yaml | 606 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-maw.json | 446 ++++++ .../__snapshots__/v2.0.0.dev3/gwf-maw.toml | 390 ++++++ .../__snapshots__/v2.0.0.dev3/gwf-maw.yaml | 516 +++++++ .../__snapshots__/v2.0.0.dev3/gwf-mvr.json | 176 +++ .../__snapshots__/v2.0.0.dev3/gwf-mvr.toml | 144 ++ .../__snapshots__/v2.0.0.dev3/gwf-mvr.yaml | 163 +++ .../__snapshots__/v2.0.0.dev3/gwf-nam.json | 214 +++ .../__snapshots__/v2.0.0.dev3/gwf-nam.toml | 188 +++ .../__snapshots__/v2.0.0.dev3/gwf-nam.yaml | 195 +++ .../__snapshots__/v2.0.0.dev3/gwf-npf.json | 477 +++++++ .../__snapshots__/v2.0.0.dev3/gwf-npf.toml | 453 ++++++ .../__snapshots__/v2.0.0.dev3/gwf-npf.yaml | 500 +++++++ .../__snapshots__/v2.0.0.dev3/gwf-oc.json | 199 +++ .../__snapshots__/v2.0.0.dev3/gwf-oc.toml | 167 +++ .../__snapshots__/v2.0.0.dev3/gwf-oc.yaml | 160 +++ .../__snapshots__/v2.0.0.dev3/gwf-rch.json | 284 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rch.toml | 258 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rch.yaml | 250 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rcha.json | 272 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rcha.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rcha.yaml | 243 ++++ .../__snapshots__/v2.0.0.dev3/gwf-riv.json | 299 ++++ .../__snapshots__/v2.0.0.dev3/gwf-riv.toml | 273 ++++ .../__snapshots__/v2.0.0.dev3/gwf-riv.yaml | 266 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rivg.json | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rivg.toml | 263 ++++ .../__snapshots__/v2.0.0.dev3/gwf-rivg.yaml | 249 ++++ .../__snapshots__/v2.0.0.dev3/gwf-sfr.json | 677 +++++++++ .../__snapshots__/v2.0.0.dev3/gwf-sfr.toml | 605 ++++++++ .../__snapshots__/v2.0.0.dev3/gwf-sfr.yaml | 714 ++++++++++ .../__snapshots__/v2.0.0.dev3/gwf-sto.json | 185 +++ .../__snapshots__/v2.0.0.dev3/gwf-sto.toml | 163 +++ .../__snapshots__/v2.0.0.dev3/gwf-sto.yaml | 161 +++ .../__snapshots__/v2.0.0.dev3/gwf-uzf.json | 380 +++++ .../__snapshots__/v2.0.0.dev3/gwf-uzf.toml | 340 +++++ .../__snapshots__/v2.0.0.dev3/gwf-uzf.yaml | 404 ++++++ .../__snapshots__/v2.0.0.dev3/gwf-vsc.json | 145 ++ .../__snapshots__/v2.0.0.dev3/gwf-vsc.toml | 121 ++ .../__snapshots__/v2.0.0.dev3/gwf-vsc.yaml | 148 ++ .../__snapshots__/v2.0.0.dev3/gwf-wel.json | 324 +++++ .../__snapshots__/v2.0.0.dev3/gwf-wel.toml | 296 ++++ .../__snapshots__/v2.0.0.dev3/gwf-wel.yaml | 295 ++++ .../__snapshots__/v2.0.0.dev3/gwf-welg.json | 302 ++++ .../__snapshots__/v2.0.0.dev3/gwf-welg.toml | 278 ++++ .../__snapshots__/v2.0.0.dev3/gwf-welg.yaml | 277 ++++ .../__snapshots__/v2.0.0.dev3/gwt-adv.json | 30 + .../__snapshots__/v2.0.0.dev3/gwt-adv.toml | 22 + .../__snapshots__/v2.0.0.dev3/gwt-adv.yaml | 31 + .../__snapshots__/v2.0.0.dev3/gwt-api.json | 90 ++ .../__snapshots__/v2.0.0.dev3/gwt-api.toml | 72 + .../__snapshots__/v2.0.0.dev3/gwt-api.yaml | 76 + .../__snapshots__/v2.0.0.dev3/gwt-cnc.json | 283 ++++ .../__snapshots__/v2.0.0.dev3/gwt-cnc.toml | 257 ++++ .../__snapshots__/v2.0.0.dev3/gwt-cnc.yaml | 246 ++++ .../__snapshots__/v2.0.0.dev3/gwt-dis.json | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwt-dis.toml | 261 ++++ .../__snapshots__/v2.0.0.dev3/gwt-dis.yaml | 247 ++++ .../__snapshots__/v2.0.0.dev3/gwt-disu.json | 365 +++++ .../__snapshots__/v2.0.0.dev3/gwt-disu.toml | 327 +++++ .../__snapshots__/v2.0.0.dev3/gwt-disu.yaml | 347 +++++ .../__snapshots__/v2.0.0.dev3/gwt-disv.json | 313 +++++ .../__snapshots__/v2.0.0.dev3/gwt-disv.toml | 277 ++++ .../__snapshots__/v2.0.0.dev3/gwt-disv.yaml | 272 ++++ .../__snapshots__/v2.0.0.dev3/gwt-dsp.json | 177 +++ .../__snapshots__/v2.0.0.dev3/gwt-dsp.toml | 161 +++ .../__snapshots__/v2.0.0.dev3/gwt-dsp.yaml | 166 +++ .../__snapshots__/v2.0.0.dev3/gwt-fmi.json | 63 + .../__snapshots__/v2.0.0.dev3/gwt-fmi.toml | 47 + .../__snapshots__/v2.0.0.dev3/gwt-fmi.yaml | 57 + .../__snapshots__/v2.0.0.dev3/gwt-ic.json | 65 + .../__snapshots__/v2.0.0.dev3/gwt-ic.toml | 49 + .../__snapshots__/v2.0.0.dev3/gwt-ic.yaml | 53 + .../__snapshots__/v2.0.0.dev3/gwt-ist.json | 357 +++++ .../__snapshots__/v2.0.0.dev3/gwt-ist.toml | 329 +++++ .../__snapshots__/v2.0.0.dev3/gwt-ist.yaml | 313 +++++ .../__snapshots__/v2.0.0.dev3/gwt-lkt.json | 353 +++++ .../__snapshots__/v2.0.0.dev3/gwt-lkt.toml | 315 +++++ .../__snapshots__/v2.0.0.dev3/gwt-lkt.yaml | 338 +++++ .../__snapshots__/v2.0.0.dev3/gwt-mst.json | 215 +++ .../__snapshots__/v2.0.0.dev3/gwt-mst.toml | 197 +++ .../__snapshots__/v2.0.0.dev3/gwt-mst.yaml | 199 +++ .../__snapshots__/v2.0.0.dev3/gwt-mvt.json | 54 + .../__snapshots__/v2.0.0.dev3/gwt-mvt.toml | 42 + .../__snapshots__/v2.0.0.dev3/gwt-mvt.yaml | 45 + .../__snapshots__/v2.0.0.dev3/gwt-mwt.json | 308 ++++ .../__snapshots__/v2.0.0.dev3/gwt-mwt.toml | 270 ++++ .../__snapshots__/v2.0.0.dev3/gwt-mwt.yaml | 290 ++++ .../__snapshots__/v2.0.0.dev3/gwt-nam.json | 206 +++ .../__snapshots__/v2.0.0.dev3/gwt-nam.toml | 182 +++ .../__snapshots__/v2.0.0.dev3/gwt-nam.yaml | 185 +++ .../__snapshots__/v2.0.0.dev3/gwt-oc.json | 205 +++ .../__snapshots__/v2.0.0.dev3/gwt-oc.toml | 171 +++ .../__snapshots__/v2.0.0.dev3/gwt-oc.yaml | 164 +++ .../__snapshots__/v2.0.0.dev3/gwt-sft.json | 373 +++++ .../__snapshots__/v2.0.0.dev3/gwt-sft.toml | 335 +++++ .../__snapshots__/v2.0.0.dev3/gwt-sft.yaml | 352 +++++ .../__snapshots__/v2.0.0.dev3/gwt-src.json | 291 ++++ .../__snapshots__/v2.0.0.dev3/gwt-src.toml | 265 ++++ .../__snapshots__/v2.0.0.dev3/gwt-src.yaml | 264 ++++ .../__snapshots__/v2.0.0.dev3/gwt-ssm.json | 103 ++ .../__snapshots__/v2.0.0.dev3/gwt-ssm.toml | 81 ++ .../__snapshots__/v2.0.0.dev3/gwt-ssm.yaml | 110 ++ .../__snapshots__/v2.0.0.dev3/gwt-uzt.json | 323 +++++ .../__snapshots__/v2.0.0.dev3/gwt-uzt.toml | 285 ++++ .../__snapshots__/v2.0.0.dev3/gwt-uzt.yaml | 308 ++++ .../__snapshots__/v2.0.0.dev3/olf-cdb.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/olf-cdb.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/olf-cdb.yaml | 239 ++++ .../__snapshots__/v2.0.0.dev3/olf-chd.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/olf-chd.toml | 242 ++++ .../__snapshots__/v2.0.0.dev3/olf-chd.yaml | 234 ++++ .../__snapshots__/v2.0.0.dev3/olf-cxs.json | 119 ++ .../__snapshots__/v2.0.0.dev3/olf-cxs.toml | 91 ++ .../__snapshots__/v2.0.0.dev3/olf-cxs.yaml | 106 ++ .../__snapshots__/v2.0.0.dev3/olf-dfw.json | 160 +++ .../__snapshots__/v2.0.0.dev3/olf-dfw.toml | 142 ++ .../__snapshots__/v2.0.0.dev3/olf-dfw.yaml | 146 ++ .../__snapshots__/v2.0.0.dev3/olf-dis2d.json | 207 +++ .../__snapshots__/v2.0.0.dev3/olf-dis2d.toml | 185 +++ .../__snapshots__/v2.0.0.dev3/olf-dis2d.yaml | 180 +++ .../__snapshots__/v2.0.0.dev3/olf-disv1d.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/olf-disv1d.toml | 234 ++++ .../__snapshots__/v2.0.0.dev3/olf-disv1d.yaml | 234 ++++ .../__snapshots__/v2.0.0.dev3/olf-disv2d.json | 237 ++++ .../__snapshots__/v2.0.0.dev3/olf-disv2d.toml | 203 +++ .../__snapshots__/v2.0.0.dev3/olf-disv2d.yaml | 206 +++ .../__snapshots__/v2.0.0.dev3/olf-evp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/olf-evp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/olf-evp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/olf-flw.json | 270 ++++ .../__snapshots__/v2.0.0.dev3/olf-flw.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/olf-flw.yaml | 236 ++++ .../__snapshots__/v2.0.0.dev3/olf-ic.json | 53 + .../__snapshots__/v2.0.0.dev3/olf-ic.toml | 37 + .../__snapshots__/v2.0.0.dev3/olf-ic.yaml | 40 + .../__snapshots__/v2.0.0.dev3/olf-nam.json | 166 +++ .../__snapshots__/v2.0.0.dev3/olf-nam.toml | 146 ++ .../__snapshots__/v2.0.0.dev3/olf-nam.yaml | 158 +++ .../__snapshots__/v2.0.0.dev3/olf-oc.json | 211 +++ .../__snapshots__/v2.0.0.dev3/olf-oc.toml | 177 +++ .../__snapshots__/v2.0.0.dev3/olf-oc.yaml | 169 +++ .../__snapshots__/v2.0.0.dev3/olf-pcp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/olf-pcp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/olf-pcp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/olf-sto.json | 54 + .../__snapshots__/v2.0.0.dev3/olf-sto.toml | 40 + .../__snapshots__/v2.0.0.dev3/olf-sto.yaml | 42 + .../__snapshots__/v2.0.0.dev3/olf-zdg.json | 294 ++++ .../__snapshots__/v2.0.0.dev3/olf-zdg.toml | 268 ++++ .../__snapshots__/v2.0.0.dev3/olf-zdg.yaml | 269 ++++ .../__snapshots__/v2.0.0.dev3/prt-dis.json | 280 ++++ .../__snapshots__/v2.0.0.dev3/prt-dis.toml | 256 ++++ .../__snapshots__/v2.0.0.dev3/prt-dis.yaml | 242 ++++ .../__snapshots__/v2.0.0.dev3/prt-disv.json | 310 +++++ .../__snapshots__/v2.0.0.dev3/prt-disv.toml | 274 ++++ .../__snapshots__/v2.0.0.dev3/prt-disv.yaml | 269 ++++ .../__snapshots__/v2.0.0.dev3/prt-fmi.json | 40 + .../__snapshots__/v2.0.0.dev3/prt-fmi.toml | 28 + .../__snapshots__/v2.0.0.dev3/prt-fmi.yaml | 30 + .../__snapshots__/v2.0.0.dev3/prt-mip.json | 90 ++ .../__snapshots__/v2.0.0.dev3/prt-mip.toml | 74 + .../__snapshots__/v2.0.0.dev3/prt-mip.yaml | 79 ++ .../__snapshots__/v2.0.0.dev3/prt-nam.json | 99 ++ .../__snapshots__/v2.0.0.dev3/prt-nam.toml | 81 ++ .../__snapshots__/v2.0.0.dev3/prt-nam.yaml | 93 ++ .../__snapshots__/v2.0.0.dev3/prt-oc.json | 309 +++++ .../__snapshots__/v2.0.0.dev3/prt-oc.toml | 261 ++++ .../__snapshots__/v2.0.0.dev3/prt-oc.yaml | 257 ++++ .../__snapshots__/v2.0.0.dev3/prt-prp.json | 525 +++++++ .../__snapshots__/v2.0.0.dev3/prt-prp.toml | 483 +++++++ .../__snapshots__/v2.0.0.dev3/prt-prp.yaml | 502 +++++++ .../__snapshots__/v2.0.0.dev3/sim-nam.json | 200 +++ .../__snapshots__/v2.0.0.dev3/sim-nam.toml | 166 +++ .../__snapshots__/v2.0.0.dev3/sim-nam.yaml | 169 +++ .../__snapshots__/v2.0.0.dev3/sim-tdis.json | 97 ++ .../__snapshots__/v2.0.0.dev3/sim-tdis.toml | 73 + .../__snapshots__/v2.0.0.dev3/sim-tdis.yaml | 77 + .../__snapshots__/v2.0.0.dev3/sln-ems.json | 21 + .../__snapshots__/v2.0.0.dev3/sln-ems.toml | 17 + .../__snapshots__/v2.0.0.dev3/sln-ems.yaml | 17 + .../__snapshots__/v2.0.0.dev3/sln-ims.json | 366 +++++ .../__snapshots__/v2.0.0.dev3/sln-ims.toml | 338 +++++ .../__snapshots__/v2.0.0.dev3/sln-ims.yaml | 477 +++++++ .../__snapshots__/v2.0.0.dev3/sln-pts.json | 95 ++ .../__snapshots__/v2.0.0.dev3/sln-pts.toml | 75 + .../__snapshots__/v2.0.0.dev3/sln-pts.yaml | 118 ++ .../__snapshots__/v2.0.0.dev3/swf-cdb.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/swf-cdb.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/swf-cdb.yaml | 239 ++++ .../__snapshots__/v2.0.0.dev3/swf-chd.json | 268 ++++ .../__snapshots__/v2.0.0.dev3/swf-chd.toml | 242 ++++ .../__snapshots__/v2.0.0.dev3/swf-chd.yaml | 234 ++++ .../__snapshots__/v2.0.0.dev3/swf-cxs.json | 119 ++ .../__snapshots__/v2.0.0.dev3/swf-cxs.toml | 91 ++ .../__snapshots__/v2.0.0.dev3/swf-cxs.yaml | 106 ++ .../__snapshots__/v2.0.0.dev3/swf-dfw.json | 160 +++ .../__snapshots__/v2.0.0.dev3/swf-dfw.toml | 142 ++ .../__snapshots__/v2.0.0.dev3/swf-dfw.yaml | 146 ++ .../__snapshots__/v2.0.0.dev3/swf-dis2d.json | 207 +++ .../__snapshots__/v2.0.0.dev3/swf-dis2d.toml | 185 +++ .../__snapshots__/v2.0.0.dev3/swf-dis2d.yaml | 180 +++ .../__snapshots__/v2.0.0.dev3/swf-disv1d.json | 250 ++++ .../__snapshots__/v2.0.0.dev3/swf-disv1d.toml | 216 +++ .../__snapshots__/v2.0.0.dev3/swf-disv1d.yaml | 220 +++ .../__snapshots__/v2.0.0.dev3/swf-disv2d.json | 237 ++++ .../__snapshots__/v2.0.0.dev3/swf-disv2d.toml | 203 +++ .../__snapshots__/v2.0.0.dev3/swf-disv2d.yaml | 206 +++ .../__snapshots__/v2.0.0.dev3/swf-evp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/swf-evp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/swf-evp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/swf-flw.json | 270 ++++ .../__snapshots__/v2.0.0.dev3/swf-flw.toml | 244 ++++ .../__snapshots__/v2.0.0.dev3/swf-flw.yaml | 236 ++++ .../__snapshots__/v2.0.0.dev3/swf-ic.json | 53 + .../__snapshots__/v2.0.0.dev3/swf-ic.toml | 37 + .../__snapshots__/v2.0.0.dev3/swf-ic.yaml | 40 + .../__snapshots__/v2.0.0.dev3/swf-nam.json | 166 +++ .../__snapshots__/v2.0.0.dev3/swf-nam.toml | 146 ++ .../__snapshots__/v2.0.0.dev3/swf-nam.yaml | 158 +++ .../__snapshots__/v2.0.0.dev3/swf-oc.json | 211 +++ .../__snapshots__/v2.0.0.dev3/swf-oc.toml | 177 +++ .../__snapshots__/v2.0.0.dev3/swf-oc.yaml | 169 +++ .../__snapshots__/v2.0.0.dev3/swf-pcp.json | 278 ++++ .../__snapshots__/v2.0.0.dev3/swf-pcp.toml | 252 ++++ .../__snapshots__/v2.0.0.dev3/swf-pcp.yaml | 244 ++++ .../__snapshots__/v2.0.0.dev3/swf-sto.json | 54 + .../__snapshots__/v2.0.0.dev3/swf-sto.toml | 40 + .../__snapshots__/v2.0.0.dev3/swf-sto.yaml | 42 + .../__snapshots__/v2.0.0.dev3/swf-zdg.json | 294 ++++ .../__snapshots__/v2.0.0.dev3/swf-zdg.toml | 268 ++++ .../__snapshots__/v2.0.0.dev3/swf-zdg.yaml | 269 ++++ .../__snapshots__/v2.0.0.dev3/utl-ats.json | 81 ++ .../__snapshots__/v2.0.0.dev3/utl-ats.toml | 63 + .../__snapshots__/v2.0.0.dev3/utl-ats.yaml | 85 ++ .../__snapshots__/v2.0.0.dev3/utl-hpc.json | 53 + .../__snapshots__/v2.0.0.dev3/utl-hpc.toml | 39 + .../__snapshots__/v2.0.0.dev3/utl-hpc.yaml | 40 + .../__snapshots__/v2.0.0.dev3/utl-laktab.json | 86 ++ .../__snapshots__/v2.0.0.dev3/utl-laktab.toml | 68 + .../__snapshots__/v2.0.0.dev3/utl-laktab.yaml | 72 + .../__snapshots__/v2.0.0.dev3/utl-ncf.json | 135 ++ .../__snapshots__/v2.0.0.dev3/utl-ncf.toml | 115 ++ .../__snapshots__/v2.0.0.dev3/utl-ncf.yaml | 120 ++ .../__snapshots__/v2.0.0.dev3/utl-obs.json | 62 + .../__snapshots__/v2.0.0.dev3/utl-obs.toml | 48 + .../__snapshots__/v2.0.0.dev3/utl-obs.yaml | 63 + .../__snapshots__/v2.0.0.dev3/utl-sfrtab.json | 80 ++ .../__snapshots__/v2.0.0.dev3/utl-sfrtab.toml | 62 + .../__snapshots__/v2.0.0.dev3/utl-sfrtab.yaml | 74 + .../__snapshots__/v2.0.0.dev3/utl-spc.json | 93 ++ .../__snapshots__/v2.0.0.dev3/utl-spc.toml | 67 + .../__snapshots__/v2.0.0.dev3/utl-spc.yaml | 77 + .../__snapshots__/v2.0.0.dev3/utl-spca.json | 62 + .../__snapshots__/v2.0.0.dev3/utl-spca.toml | 48 + .../__snapshots__/v2.0.0.dev3/utl-spca.yaml | 55 + .../__snapshots__/v2.0.0.dev3/utl-tas.json | 83 ++ .../__snapshots__/v2.0.0.dev3/utl-tas.toml | 63 + .../__snapshots__/v2.0.0.dev3/utl-tas.yaml | 62 + .../__snapshots__/v2.0.0.dev3/utl-ts.json | 128 ++ .../__snapshots__/v2.0.0.dev3/utl-ts.toml | 104 ++ .../__snapshots__/v2.0.0.dev3/utl-ts.yaml | 98 ++ .../__snapshots__/v2.0.0.dev3/utl-tvk.json | 76 + .../__snapshots__/v2.0.0.dev3/utl-tvk.toml | 58 + .../__snapshots__/v2.0.0.dev3/utl-tvk.yaml | 77 + .../__snapshots__/v2.0.0.dev3/utl-tvs.json | 76 + .../__snapshots__/v2.0.0.dev3/utl-tvs.toml | 58 + .../__snapshots__/v2.0.0.dev3/utl-tvs.yaml | 73 + autotest/dfns/test_migrate.py | 19 + autotest/dfns/test_schema.py | 183 ++- autotest/dfns/test_schema_dimensions.py | 49 +- autotest/models.toml | 11 + docs/md/dfnspec.md | 135 +- .../dfn/migrate_to_v2_0_0_dev0.py | 38 + modflow_devtools/dfns/__init__.py | 10 + modflow_devtools/dfns/migrate.py | 19 +- .../dfns/migrate_to_v2_0_0_dev2.py | 8 +- .../dfns/migrate_to_v2_0_0_dev3.py | 1234 +++++++++++++++++ modflow_devtools/dfns/schema.json | 424 +++++- modflow_devtools/dfns/schema.py | 258 +++- pyproject.toml | 1 + 496 files changed, 90538 insertions(+), 88 deletions(-) create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.yaml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.json create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.toml create mode 100644 autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.yaml create mode 100644 autotest/models.toml create mode 100644 modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py 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 fb990af3..f1d44e3b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "chf-oc", "parent": "chf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 a6630f80..27f73e8f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "chf-oc" parent = "chf-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 55e791bc..b51f6e6f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: chf-oc parent: chf-nam -subtype: stress blocks: options: fields: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.json index 6a8c9820..93257fc5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "chf-sto", "parent": "chf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.toml index 31fba011..18e4eae8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "chf-sto" parent = "chf-nam" -subtype = "stress" [blocks.options.fields.save_flows] type = "keyword" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.yaml index c9054f65..861c8777 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/chf-sto.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: chf-sto parent: chf-nam -subtype: stress blocks: options: fields: 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 9e13b851..51c88508 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwe-oc", "parent": "gwe-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 625601c7..fc318e38 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwe-oc" parent = "gwe-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 f0d4688c..e45408ac 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwe-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwe-oc parent: gwe-nam -subtype: stress blocks: options: fields: 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 c4acd683..be2bd90e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwf-csub", "parent": "gwf-nam", - "subtype": "stress", "dims": { "ninterbeds": { "value": "ninterbeds", 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 a1ae34d0..0e54bcf0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwf-csub" parent = "gwf-nam" -subtype = "stress" [dims.ninterbeds] value = "ninterbeds" 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 b258511b..e6a24b48 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-csub.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwf-csub parent: gwf-nam -subtype: stress dims: ninterbeds: value: ninterbeds 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 edbddea1..19411c94 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwf-hfb", "parent": "gwf-nam", - "subtype": "stress", "dims": { "maxhfb": { "value": "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 85e21e26..b49cb2dd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwf-hfb" parent = "gwf-nam" -subtype = "stress" [dims.maxhfb] value = "maxhfb" 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 6499c5b3..dea9c9a4 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-hfb.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwf-hfb parent: gwf-nam -subtype: stress dims: maxhfb: value: maxhfb diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.json index 9938fe2d..ef45259a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwf-mvr", "parent": "gwf-nam", - "subtype": "stress", "dims": { "maxmvr": { "value": "maxmvr", diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.toml index 614248ad..e8feb53d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwf-mvr" parent = "gwf-nam" -subtype = "stress" [dims.maxmvr] value = "maxmvr" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.yaml index 28783f85..c7e16654 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-mvr.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwf-mvr parent: gwf-nam -subtype: stress dims: maxmvr: value: maxmvr 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 880df834..8632a74d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwf-oc", "parent": "gwf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 3a3e4a22..66e109f5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwf-oc" parent = "gwf-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 75ebdaa0..96242c05 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwf-oc parent: gwf-nam -subtype: stress blocks: options: fields: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.json index 7dd2680f..78accf61 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwf-sto", "parent": "gwf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.toml index 8add2072..b7e12a03 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwf-sto" parent = "gwf-nam" -subtype = "stress" [blocks.options.fields.save_flows] type = "keyword" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.yaml index fe9e7fbe..9334a2ea 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwf-sto.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwf-sto parent: gwf-nam -subtype: stress blocks: options: fields: 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 b4138196..a98a0174 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "gwt-oc", "parent": "gwt-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 de34b461..d82bd001 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "gwt-oc" parent = "gwt-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 e12bfb7a..683047a2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/gwt-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: gwt-oc parent: gwt-nam -subtype: stress blocks: options: fields: 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 2b5453aa..7fade3d7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "olf-oc", "parent": "olf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 d2e09071..22b60ad6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "olf-oc" parent = "olf-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 dc14b08e..844d8aef 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: olf-oc parent: olf-nam -subtype: stress blocks: options: fields: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.json index 2e60864e..100e39b0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "olf-sto", "parent": "olf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.toml index 63e941a3..0dff0281 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "olf-sto" parent = "olf-nam" -subtype = "stress" [blocks.options.fields.save_flows] type = "keyword" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.yaml index 0cf1a6a1..0322e7c8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/olf-sto.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: olf-sto parent: olf-nam -subtype: stress blocks: options: fields: 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 2828f1fc..2bf0487b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "prt-oc", "parent": "prt-nam", - "subtype": "stress", "dims": { "ntracktimes": { "value": "ntracktimes", 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 4aae5be4..cf270a77 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "prt-oc" parent = "prt-nam" -subtype = "stress" [dims.ntracktimes] value = "ntracktimes" 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 fd4b39bb..485603e8 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/prt-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: prt-oc parent: prt-nam -subtype: stress dims: ntracktimes: value: ntracktimes 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 64ef1df2..def67c62 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "sim-tdis", "parent": "sim-nam", - "subtype": "stress", "dims": { "nper": { "value": "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 b5d0117e..43c9b62b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "sim-tdis" parent = "sim-nam" -subtype = "stress" [dims.nper] value = "nper" 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 50a88921..cf1ce6d7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/sim-tdis.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: sim-tdis parent: sim-nam -subtype: stress dims: nper: value: nper 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 507f4224..9a3e5412 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "swf-oc", "parent": "swf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { 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 bc5db3b9..6fa432bb 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "swf-oc" parent = "swf-nam" -subtype = "stress" [blocks.options.fields.budget_filerecord] type = "record" 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 60e5331d..91ce65fa 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-oc.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: swf-oc parent: swf-nam -subtype: stress blocks: options: fields: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.json index a0fe34de..5eca0972 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.json @@ -3,7 +3,6 @@ "schema_version": "2.0.0.dev2", "name": "swf-sto", "parent": "swf-nam", - "subtype": "stress", "blocks": { "options": { "fields": { diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.toml index be19cf44..0454b06b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.toml @@ -2,7 +2,6 @@ type = "package" schema_version = "2.0.0.dev2" name = "swf-sto" parent = "swf-nam" -subtype = "stress" [blocks.options.fields.save_flows] type = "keyword" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.yaml index 5393f192..14762f13 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev2/swf-sto.yaml @@ -2,7 +2,6 @@ type: package schema_version: 2.0.0.dev2 name: swf-sto parent: swf-nam -subtype: stress blocks: options: fields: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json new file mode 100644 index 00000000..7c9240a2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-cdb", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of critical depth boundaries", + "description": "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CDB", + "output": "ipakcb", + "obs_type": "CDB", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "CDB-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml new file mode 100644 index 00000000..5b6702e5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-cdb" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of critical depth boundaries" +description = "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CDB" +output = "ipakcb" +obs_type = "CDB" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "CDB-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml new file mode 100644 index 00000000..c55c8cdb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml @@ -0,0 +1,239 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-cdb +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of critical + depth boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of critical depth boundary information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of critical depth boundary flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that critical depth boundary flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of critical depth boundaries + description: integer value specifying the maximum number of critical depth boundary cells that + will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CDB + output: ipakcb + obs_type: CDB + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: CDB-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json new file mode 100644 index 00000000..f4d27176 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-chd", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of CHD head value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant-head cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print CHD flows to listing file", + "description": "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant heads", + "description": "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "head": { + "type": "double", + "longname": "head value assigned to constant head", + "description": "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant head boundary name", + "description": "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: head.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CHD", + "output": "ipakcb", + "obs_type": "CHD", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml new file mode 100644 index 00000000..530dd5de --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml @@ -0,0 +1,242 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-chd" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of CHD head value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant-head cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print CHD flows to listing file" +description = "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant heads" +description = "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.head] +type = "double" +longname = "head value assigned to constant head" +description = "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant head boundary name" +description = "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: head." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CHD" +output = "ipakcb" +obs_type = "CHD" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml new file mode 100644 index 00000000..3142e0c5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml @@ -0,0 +1,234 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-chd +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of CHD head value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant-head + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant-head information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print CHD flows to listing file + description: keyword to indicate that the list of constant-head flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that constant-head flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant heads + description: integer value specifying the maximum number of constant-head cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + head: + type: double + longname: head value assigned to constant head + description: is the head at the boundary. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant head. The + values of auxiliary variables must be present for each constant head. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant head boundary name + description: name of the constant head boundary cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: head.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CHD + output: ipakcb + obs_type: CHD + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.json new file mode 100644 index 00000000..f26a2db2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.json @@ -0,0 +1,119 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-cxs", + "parent": "chf-nam", + "dims": { + "nsections": { + "value": "nsections", + "scope": "model" + }, + "npoints": { + "value": "npoints", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nsections": { + "type": "integer", + "longname": "number of reaches", + "description": "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + }, + "npoints": { + "type": "integer", + "longname": "total number of points defined for all reaches", + "description": "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "idcxs": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once.", + "tagged": false + }, + "nxspoints": { + "type": "integer", + "longname": "number of points used to define cross section", + "description": "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than 1 or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension.", + "tagged": false + } + } + }, + "shape": [ + "nsections" + ] + } + } + }, + "crosssectiondata": { + "fields": { + "crosssectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "xfraction": { + "type": "double", + "longname": "fractional width", + "description": "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH).", + "tagged": false + }, + "height": { + "type": "double", + "longname": "depth", + "description": "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero.", + "tagged": false + }, + "manfraction": { + "type": "double", + "longname": "Manning's roughness coefficient", + "description": "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line.", + "tagged": false + } + } + }, + "shape": [ + "npoints" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "nsections": { + "set_in": "ar", + "source": "nsections", + "type": "integer" + }, + "npoints": { + "set_in": "ar", + "source": "npoints", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.toml new file mode 100644 index 00000000..c64e1e02 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.toml @@ -0,0 +1,91 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-cxs" +parent = "chf-nam" + +[dims.nsections] +value = "nsections" +scope = "model" + +[dims.npoints] +value = "npoints" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.dimensions.fields.nsections] +type = "integer" +longname = "number of reaches" +description = "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + +[blocks.dimensions.fields.npoints] +type = "integer" +longname = "total number of points defined for all reaches" +description = "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nsections", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.idcxs] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.nxspoints] +type = "integer" +longname = "number of points used to define cross section" +description = "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than 1 or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata] +type = "list" +shape = [ + "npoints", +] + +[blocks.crosssectiondata.fields.crosssectiondata.item] +type = "record" + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.xfraction] +type = "double" +longname = "fractional width" +description = "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH)." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.height] +type = "double" +longname = "depth" +description = "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.manfraction] +type = "double" +longname = "Manning's roughness coefficient" +description = "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line." +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.nsections] +set_in = "ar" +source = "nsections" +type = "integer" + +[memory.npoints] +set_in = "ar" +source = "npoints" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.yaml new file mode 100644 index 00000000..ab9f918d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cxs.yaml @@ -0,0 +1,106 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-cxs +parent: chf-nam +dims: + nsections: + value: nsections + scope: model + npoints: + value: npoints + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of stream reach information will be written to + the listing file immediately after it is read. + optional: true + dimensions: + fields: + nsections: + type: integer + longname: number of reaches + description: integer value specifying the number of cross sections that will be defined. There + must be NSECTIONS entries in the PACKAGEDATA block. + npoints: + type: integer + longname: total number of points defined for all reaches + description: integer value specifying the total number of cross-section points defined for all + reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + idcxs: + type: integer + longname: reach number for this entry + description: integer value that defines the cross section number associated with the specified + PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to + NSECTIONS. Information must be specified for every section or the program will terminate + with an error. The program will also terminate with an error if information for a section + is specified more than once. + tagged: false + nxspoints: + type: integer + longname: number of points used to define cross section + description: integer value that defines the number of points used to define the define the + shape of a section. NXSPOINTS must be greater than 1 or the program will terminate with + an error. NXSPOINTS defines the number of points that must be entered for the reach in + the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS + dimension. + tagged: false + shape: + - nsections + crosssectiondata: + fields: + crosssectiondata: + type: list + item: + type: record + fields: + xfraction: + type: double + longname: fractional width + description: real value that defines the station (x) data for the cross-section as a fraction + of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but + can be greater than one. XFRACTION values can be used to decrease or increase the width + of a reach from the specified reach width (WIDTH). + tagged: false + height: + type: double + longname: depth + description: real value that is the height relative to the top of the lowest elevation of + the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT + must be greater than or equal to zero and at least one cross-section height must be equal + to zero. + tagged: false + manfraction: + type: double + longname: Manning's roughness coefficient + description: real value that defines the Manning's roughness coefficient data for the cross-section + as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding + to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION + is applied from the XFRACTION value on the same line to the XFRACTION value on the next + line. + tagged: false + shape: + - npoints +memory: + iprpak: + set_in: ar + source: print_input + type: integer + nsections: + set_in: ar + source: nsections + type: integer + npoints: + set_in: ar + source: npoints + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.json new file mode 100644 index 00000000..551ae7d8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.json @@ -0,0 +1,160 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-dfw", + "parent": "chf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "central_in_space": { + "type": "keyword", + "longname": "use central in space weighting", + "description": "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches.", + "optional": true + }, + "length_conversion": { + "type": "double", + "longname": "length conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters.", + "optional": true + }, + "time_conversion": { + "type": "double", + "longname": "time conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save DFW flows", + "description": "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print DFW flows to listing file", + "description": "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells.", + "optional": true + }, + "save_velocity": { + "type": "keyword", + "longname": "keyword to save velocity", + "description": "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "dev_swr_conductance": { + "type": "keyword", + "longname": "use SWR conductance formulation", + "description": "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "manningsn": { + "type": "array", + "longname": "mannings roughness coefficient", + "description": "mannings roughness coefficient", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "longname": "cross section number", + "description": "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "icentral": { + "set_in": "ar", + "source": "central_in_space", + "type": "integer" + }, + "lengthconv": { + "set_in": "ar", + "source": "length_conversion", + "type": "double" + }, + "timeconv": { + "set_in": "ar", + "source": "time_conversion", + "type": "double" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "isavvelocity": { + "set_in": "ar", + "source": "save_velocity", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "iswrcond": { + "set_in": "ar", + "source": "dev_swr_conductance", + "type": "integer" + }, + "manningsn": { + "type": "array", + "set_in": "ar", + "source": "manningsn", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "set_in": "ar", + "source": "idcxs", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.toml new file mode 100644 index 00000000..81128eab --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.toml @@ -0,0 +1,142 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-dfw" +parent = "chf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.central_in_space] +type = "keyword" +longname = "use central in space weighting" +description = "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches." +optional = true + +[blocks.options.fields.length_conversion] +type = "double" +longname = "length conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters." +optional = true + +[blocks.options.fields.time_conversion] +type = "double" +longname = "time conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save DFW flows" +description = "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print DFW flows to listing file" +description = "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells." +optional = true + +[blocks.options.fields.save_velocity] +type = "keyword" +longname = "keyword to save velocity" +description = "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.dev_swr_conductance] +type = "keyword" +longname = "use SWR conductance formulation" +description = "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005." +optional = true + +[blocks.griddata.fields.manningsn] +type = "array" +longname = "mannings roughness coefficient" +description = "mannings roughness coefficient" +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idcxs] +type = "array" +longname = "cross section number" +description = "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[memory.icentral] +set_in = "ar" +source = "central_in_space" +type = "integer" + +[memory.lengthconv] +set_in = "ar" +source = "length_conversion" +type = "double" + +[memory.timeconv] +set_in = "ar" +source = "time_conversion" +type = "double" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.isavvelocity] +set_in = "ar" +source = "save_velocity" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.iswrcond] +set_in = "ar" +source = "dev_swr_conductance" +type = "integer" + +[memory.manningsn] +type = "array" +set_in = "ar" +source = "manningsn" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idcxs] +type = "array" +set_in = "ar" +source = "idcxs" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.yaml new file mode 100644 index 00000000..66b89744 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-dfw.yaml @@ -0,0 +1,146 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-dfw +parent: chf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + central_in_space: + type: keyword + longname: use central in space weighting + description: keyword to indicate conductance should be calculated using central-in-space weighting + instead of the default upstream weighting approach. This option should be used with caution + as it does not work well unless all of the stream reaches are saturated. With this option, + there is no way for water to flow into a dry reach from connected reaches. + optional: true + length_conversion: + type: double + longname: length conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 + when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. + LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters. + optional: true + time_conversion: + type: double + longname: time conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, + and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years + in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS + are seconds. + optional: true + save_flows: + type: keyword + longname: keyword to save DFW flows + description: keyword to indicate that budget flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + print_flows: + type: keyword + longname: keyword to print DFW flows to listing file + description: keyword to indicate that calculated flows between cells will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. + If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. This option can produce extremely large list + files because all cell-by-cell flows are printed. It should only be used with the DFW Package + for models that have a small number of cells. + optional: true + save_velocity: + type: keyword + longname: keyword to save velocity + description: keyword to indicate that x, y, and z components of velocity will be calculated at + cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output + Control. If this option is activated, then additional information may be required in the discretization + packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must + be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified + for the GWF Exchange as an auxiliary variable. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + dev_swr_conductance: + type: keyword + longname: use SWR conductance formulation + description: use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005. + optional: true + griddata: + fields: + manningsn: + type: array + longname: mannings roughness coefficient + description: mannings roughness coefficient + dtype: double + shape: + - nodes + idcxs: + type: array + longname: cross section number + description: integer value indication the cross section identifier in the Cross Section Package + that applies to the reach. If not provided then reach will be treated as hydraulically wide. + optional: true + dtype: integer + shape: + - nodes +memory: + icentral: + set_in: ar + source: central_in_space + type: integer + lengthconv: + set_in: ar + source: length_conversion + type: double + timeconv: + set_in: ar + source: time_conversion + type: double + ipakcb: + set_in: ar + source: save_flows + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + isavvelocity: + set_in: ar + source: save_velocity + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + iswrcond: + set_in: ar + source: dev_swr_conductance + type: integer + manningsn: + type: array + set_in: ar + source: manningsn + dtype: double + shape: + - nodes + idcxs: + type: array + set_in: ar + source: idcxs + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.json new file mode 100644 index 00000000..01279d69 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.json @@ -0,0 +1,250 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-disv1d", + "parent": "chf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of linear features", + "description": "is the number of linear cells." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y, z) vertex pairs used to characterize the model grid.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "width": { + "type": "array", + "longname": "width", + "description": "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "longname": "bottom elevation for the one-dimensional cell", + "description": "bottom elevation for the one-dimensional cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell1d": { + "fields": { + "cell1d": { + "type": "list", + "longname": "cell1d data", + "item": { + "type": "record", + "fields": { + "icell1d": { + "type": "integer", + "longname": "cell1d number", + "description": "is the cell1d number. Records in the cell1d block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "fdc": { + "type": "double", + "longname": "fractional distance to the cell center", + "description": "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "number of cell vertices", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "width": { + "type": "array", + "set_in": "ar", + "source": "width", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.toml new file mode 100644 index 00000000..878262f2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.toml @@ -0,0 +1,216 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-disv1d" +parent = "chf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of linear features" +description = "is the number of linear cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y, z) vertex pairs used to characterize the model grid." +optional = true + +[blocks.griddata.fields.width] +type = "array" +longname = "width" +description = "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bottom] +type = "array" +longname = "bottom elevation for the one-dimensional cell" +description = "bottom elevation for the one-dimensional cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell1d.fields.cell1d] +type = "list" +longname = "cell1d data" +shape = [ + "nodes", +] + +[blocks.cell1d.fields.cell1d.item] +type = "record" + +[blocks.cell1d.fields.cell1d.item.fields.icell1d] +type = "integer" +longname = "cell1d number" +description = "is the cell1d number. Records in the cell1d block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.fdc] +type = "double" +longname = "fractional distance to the cell center" +description = "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.icvert] +type = "array" +longname = "number of cell vertices" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.width] +type = "array" +set_in = "ar" +source = "width" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.yaml new file mode 100644 index 00000000..2ff1faea --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-disv1d.yaml @@ -0,0 +1,220 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-disv1d +parent: chf-nam +dims: + nodes: + value: nodes + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of linear features + description: is the number of linear cells. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y, z) vertex pairs used to characterize the model grid. + optional: true + griddata: + fields: + width: + type: array + longname: width + description: real value that defines the width for each one-dimensional cell. WIDTH must be greater + than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied + by the specified cross section x-fraction values. + dtype: double + shape: + - nodes + bottom: + type: array + longname: bottom elevation for the one-dimensional cell + description: bottom elevation for the one-dimensional cell. + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. + optional: true + dtype: integer + shape: + - nodes + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell1d: + fields: + cell1d: + type: list + longname: cell1d data + item: + type: record + fields: + icell1d: + type: integer + longname: cell1d number + description: is the cell1d number. Records in the cell1d block must be listed in consecutive + order from the first to the last. + tagged: false + fdc: + type: double + longname: fractional distance to the cell center + description: is the fractional distance to the cell center. FDC is relative to the first + vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center + of the line segment that defines the cell. If the value of FDC is 1, the cell center would + located at the last vertex. FDC values of 0 and 1 can be used to place the node at either + end of the cell which can be useful for cells with boundary conditions. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: number of cell vertices + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in the order that defines the line representing + the cell. Cells that are connected must share vertices. The bottom elevation of the cell + is calculated using the ZV of the first and last vertex point and FDC. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nvert: + set_in: ar + source: nvert + type: integer + width: + type: array + set_in: ar + source: width + dtype: double + shape: + - nodes + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json new file mode 100644 index 00000000..f4454243 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-evp", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of evaporation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of evaporation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print evaporation rates to listing file", + "description": "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save evaporation to budget file", + "description": "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of evaporation cells", + "description": "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "evaporation": { + "type": "double", + "longname": "evaporation rate", + "description": "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "evaporation name", + "description": "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "EVP", + "output": "ipakcb", + "obs_type": "EVP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml new file mode 100644 index 00000000..3eea31c4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-evp" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of evaporation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of evaporation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print evaporation rates to listing file" +description = "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save evaporation to budget file" +description = "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of evaporation cells" +description = "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.evaporation] +type = "double" +longname = "evaporation rate" +description = "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "evaporation name" +description = "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "EVP" +output = "ipakcb" +obs_type = "EVP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml new file mode 100644 index 00000000..f36c2d84 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-evp +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of evaporation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of evaporation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of evaporation information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print evaporation rates to listing file + description: keyword to indicate that the list of evaporation flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save evaporation to budget file + description: keyword to indicate that evaporation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of evaporation cells + description: integer value specifying the maximum number of evaporation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + evaporation: + type: double + longname: evaporation rate + description: is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the + program by the water surface area of the cell to calculate the volumetric evaporation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each evaporation. The + values of auxiliary variables must be present for each evaporation. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: evaporation name + description: name of the evaporation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: EVP + output: ipakcb + obs_type: EVP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json new file mode 100644 index 00000000..24488c65 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json @@ -0,0 +1,270 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-flw", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of flow rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of inflow cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of inflow", + "description": "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "q": { + "type": "double", + "longname": "well rate", + "description": "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "inflow name", + "description": "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: q.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "FLW", + "output": "ipakcb", + "obs_type": "FLW", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "FLW-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml new file mode 100644 index 00000000..989d656f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-flw" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of flow rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of inflow cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of inflow" +description = "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.q] +type = "double" +longname = "well rate" +description = "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "inflow name" +description = "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: q." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "FLW" +output = "ipakcb" +obs_type = "FLW" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "FLW-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml new file mode 100644 index 00000000..86a2f742 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml @@ -0,0 +1,236 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-flw +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of flow rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of inflow cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of inflow information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of inflow flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that inflow flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of inflow + description: integer value specifying the maximum number of inflow cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + q: + type: double + longname: well rate + description: is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative + values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each inflow. The values + of auxiliary variables must be present for each inflow. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: inflow name + description: name of the inflow cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: q.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: FLW + output: ipakcb + obs_type: FLW + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: FLW-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.json new file mode 100644 index 00000000..5f907706 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.json @@ -0,0 +1,53 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-ic", + "parent": "chf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting concentration", + "description": "is the initial (starting) stage---that is, stage at the beginning of the CHF Model simulation. STRT must be specified for all CHF Model simulations. One value is read for every model reach.", + "default": 0.0, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.toml new file mode 100644 index 00000000..e31a862b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.toml @@ -0,0 +1,37 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-ic" +parent = "chf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting concentration" +description = "is the initial (starting) stage---that is, stage at the beginning of the CHF Model simulation. STRT must be specified for all CHF Model simulations. One value is read for every model reach." +default = 0.0 +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.yaml new file mode 100644 index 00000000..8254718a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-ic.yaml @@ -0,0 +1,40 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-ic +parent: chf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + griddata: + fields: + strt: + type: array + longname: starting concentration + description: is the initial (starting) stage---that is, stage at the beginning of the CHF Model + simulation. STRT must be specified for all CHF Model simulations. One value is read for every + model reach. + default: 0.0 + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.json new file mode 100644 index 00000000..02fd2cf1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.json @@ -0,0 +1,166 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "chf-nam", + "parent": "sim-nam", + "dependent_variable": "stage", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this CHF model. If not specified, then the name of the list file will be the basename of the CHF model name file and the '.lst' extension. For example, if the CHF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "newtonoptions": { + "type": "record", + "longname": "newton keyword and options", + "description": "none", + "optional": true, + "fields": { + "newton": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson formulation", + "description": "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + }, + "under_relaxation": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson UNDER_RELAXATION option", + "description": "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied.", + "optional": true + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-chf}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single CHF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "x": { + "type": "array", + "set_in": "ca", + "description": "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "STAGE", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.toml new file mode 100644 index 00000000..d79d62b8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.toml @@ -0,0 +1,146 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "chf-nam" +parent = "sim-nam" +dependent_variable = "stage" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this CHF model. If not specified, then the name of the list file will be the basename of the CHF model name file and the '.lst' extension. For example, if the CHF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.newtonoptions] +type = "record" +longname = "newton keyword and options" +description = "none" +optional = true + +[blocks.options.fields.newtonoptions.fields.newton] +type = "keyword" +longname = "keyword to activate Newton-Raphson formulation" +description = "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + +[blocks.options.fields.newtonoptions.fields.under_relaxation] +type = "keyword" +longname = "keyword to activate Newton-Raphson UNDER_RELAXATION option" +description = "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied." +optional = true + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-chf}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single CHF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.x] +type = "array" +set_in = "ca" +description = "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "STAGE" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.yaml new file mode 100644 index 00000000..4c4e697b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-nam.yaml @@ -0,0 +1,158 @@ +type: model +schema_version: 2.0.0.dev3 +name: chf-nam +parent: sim-nam +dependent_variable: stage +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this CHF model. If not specified, then + the name of the list file will be the basename of the CHF model name file and the '.lst' extension. For + example, if the CHF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + newtonoptions: + type: record + longname: newton keyword and options + description: none + optional: true + fields: + newton: + type: keyword + longname: keyword to activate Newton-Raphson formulation + description: keyword that activates the Newton-Raphson formulation for surface water flow + between connected reaches and stress packages that support calculation of Newton-Raphson + terms. + under_relaxation: + type: keyword + longname: keyword to activate Newton-Raphson UNDER_RELAXATION option + description: keyword that indicates whether the surface water stage in a reach will be under-relaxed + when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson + UNDER_RELAXATION is not applied. + optional: true + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-chf}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single CHF Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + x: + type: array + set_in: ca + description: Stage for each model cell. Checked in from the solution-level dependent-variable vector + (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; + updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial + guesses and are overwritten by the solver. + obs_type: STAGE + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json new file mode 100644 index 00000000..ce596aba --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.json @@ -0,0 +1,211 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-oc", + "parent": "chf-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "qoutflow_filerecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "file", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow.", + "mode": "fileout" + } + } + }, + "stage_filerecord": { + "type": "record", + "optional": true, + "fields": { + "stage": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage.", + "mode": "fileout" + } + } + }, + "qoutflowprintrecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "keyword", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml new file mode 100644 index 00000000..a6b079d2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.toml @@ -0,0 +1,177 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-oc" +parent = "chf-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.qoutflow_filerecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflow_filerecord.fields.qoutflow] +type = "file" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." +mode = "fileout" + +[blocks.options.fields.stage_filerecord] +type = "record" +optional = true + +[blocks.options.fields.stage_filerecord.fields.stage] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." +mode = "fileout" + +[blocks.options.fields.qoutflowprintrecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflowprintrecord.fields.qoutflow] +type = "keyword" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." + +[blocks.options.fields.qoutflowprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml new file mode 100644 index 00000000..285bbcd4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-oc.yaml @@ -0,0 +1,169 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-oc +parent: chf-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + qoutflow_filerecord: + type: record + optional: true + fields: + qoutflow: + type: file + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + mode: fileout + stage_filerecord: + type: record + optional: true + fields: + stage: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to stage. + mode: fileout + qoutflowprintrecord: + type: record + optional: true + fields: + qoutflow: + type: keyword + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json new file mode 100644 index 00000000..6c26610e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-pcp", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of precipitation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of precipitation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print precipitation rates to listing file", + "description": "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save precipitation to budget file", + "description": "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of precipitation cells", + "description": "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "precipitation": { + "type": "double", + "longname": "precipitation rate", + "description": "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "precipitation name", + "description": "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "PCP", + "output": "ipakcb", + "obs_type": "PCP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml new file mode 100644 index 00000000..c9ae04da --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-pcp" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of precipitation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of precipitation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print precipitation rates to listing file" +description = "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save precipitation to budget file" +description = "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of precipitation cells" +description = "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.precipitation] +type = "double" +longname = "precipitation rate" +description = "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "precipitation name" +description = "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "PCP" +output = "ipakcb" +obs_type = "PCP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml new file mode 100644 index 00000000..70e13eb5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-pcp +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of precipitation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of precipitation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of precipitation information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print precipitation rates to listing file + description: keyword to indicate that the list of precipitation flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save precipitation to budget file + description: keyword to indicate that precipitation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of precipitation cells + description: integer value specifying the maximum number of precipitation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + precipitation: + type: double + longname: precipitation rate + description: is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside + the program by the surface area of the cell to calculate the volumetric precipitation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each precipitation. The + values of auxiliary variables must be present for each precipitation. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: precipitation name + description: name of the precipitation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: PCP + output: ipakcb + obs_type: PCP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.json new file mode 100644 index 00000000..65820fe3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.json @@ -0,0 +1,54 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-sto", + "parent": "chf-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "keyword to save NPF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files.", + "optional": true + } + } + }, + "period": { + "fields": { + "storage": { + "type": "string", + "longname": "storage state", + "description": "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block.", + "optional": true, + "valid": [ + "steady-state", + "transient" + ] + } + } + } + }, + "memory": { + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "steady_state": { + "set_in": "rp", + "type": "logical" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.toml new file mode 100644 index 00000000..70c6746b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.toml @@ -0,0 +1,40 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-sto" +parent = "chf-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save NPF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files." +optional = true + +[blocks.period.fields.storage] +type = "string" +longname = "storage state" +description = "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block." +optional = true +valid = [ + "steady-state", + "transient", +] + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.steady_state] +set_in = "rp" +type = "logical" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.yaml new file mode 100644 index 00000000..c68e2364 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-sto.yaml @@ -0,0 +1,42 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-sto +parent: chf-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: keyword to save NPF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input grid arrays, which already support the layered keyword, + should be written to layered ascii output files. + optional: true + period: + fields: + storage: + type: string + longname: storage state + description: keyword to indicate that stress period IPER is steady-state. Steady-state conditions + will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. + optional: true + valid: + - steady-state + - transient +memory: + ipakcb: + set_in: ar + source: save_flows + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + steady_state: + set_in: rp + type: logical diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json new file mode 100644 index 00000000..bfa31292 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json @@ -0,0 +1,294 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "chf-zdg", + "parent": "chf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of zero-depth-gradient boundaries", + "description": "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "slope": { + "type": "double", + "longname": "channel slope", + "description": "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rough": { + "type": "double", + "longname": "channel roughness", + "description": "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "ZDG", + "output": "ipakcb", + "obs_type": "ZDG", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "ZDG-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml new file mode 100644 index 00000000..b6f660c4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml @@ -0,0 +1,268 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "chf-zdg" +parent = "chf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of zero-depth-gradient boundaries" +description = "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.slope] +type = "double" +longname = "channel slope" +description = "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.rough] +type = "double" +longname = "channel roughness" +description = "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "ZDG" +output = "ipakcb" +obs_type = "ZDG" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "ZDG-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml new file mode 100644 index 00000000..220a3599 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml @@ -0,0 +1,269 @@ +type: package +schema_version: 2.0.0.dev3 +name: chf-zdg +parent: chf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of zero-depth-gradient + boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary information will + be written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary flow rates will + be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is + specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, + then flow rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that zero-depth-gradient boundary flow terms will be written + to the file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of zero-depth-gradient boundaries + description: integer value specifying the maximum number of zero-depth-gradient boundary cells + that will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + slope: + type: double + longname: channel slope + description: is the channel slope used to calculate flow to the zero-depth-gradient boundary. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + rough: + type: double + longname: channel roughness + description: is the Manning channel roughness value used to calculate flow to the zero-depth-gradient + boundary. If a cross section is associated with this boundary, the roughness value will + be multiplied by the roughness fraction for each part of the cross section. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a numeric + value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, + 2: slope, 3: rough.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: ZDG + output: ipakcb + obs_type: ZDG + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: ZDG-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.json new file mode 100644 index 00000000..6e0b751f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.json @@ -0,0 +1,121 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-chfgwf", + "parent": "sim-nam", + "multi": true, + "subtype": "exchange", + "dims": { + "nexg": { + "value": "nexg", + "scope": "simulation" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "keyword to print input to list file", + "description": "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print chfgwf flows to list file", + "description": "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control.", + "optional": true + }, + "fixed_conductance": { + "type": "keyword", + "longname": "keyword to indicate conductance is fixed", + "description": "keyword to indicate that the product of the bedleak and cfact input variables in the exchangedata block represents conductance. This conductance is fixed and does not change as a function of head in the surface water and groundwater models.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nexg": { + "type": "integer", + "longname": "number of exchanges", + "description": "keyword and integer value specifying the number of SWF-GWF exchanges." + } + } + }, + "exchangedata": { + "fields": { + "exchangedata": { + "type": "list", + "longname": "exchange data", + "item": { + "type": "record", + "fields": { + "cellidm1": { + "type": "integer", + "longname": "cellid of cell in surface water model", + "description": "is the cellid of the cell in model 1, which must be the surface water model. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell.", + "tagged": false + }, + "cellidm2": { + "type": "integer", + "longname": "cellid of cell in groundwater model", + "description": "is the cellid of the cell in model 2, which must be the groundwater model. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell.", + "tagged": false + }, + "bedleak": { + "type": "double", + "longname": "bed leakance", + "description": "is the leakance between the surface water and groundwater. bedleak has dimensions of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the thickness of the bed sediments.", + "tagged": false + }, + "cfact": { + "type": "double", + "longname": "factor used for conductance calculation", + "description": "is the factor used for the conductance calculation. The definition for this parameter depends the type of surface water model and whether or not the fixed_conductance option is specified. If the fixed_conductance option is specified, then the hydraulic conductance is calculated as the product of bedleak and cfact. In this case, the conductance is fixed and does not change as a function of the calculated surface water and groundwater head. If the fixed_conductance option is not specified, then the definition of cfact depends on whether the surface water model represents one-dimensional channel flow or two-dimensional overland flow. If the surface water model represents one-dimensional channel flow, then cfact is the length of the channel cell in the groundwater model cell. If the surface water model represents two-dimensional overland flow, then cfact is the intersection area of the overland flow cell and the underlying groundwater model cell.", + "tagged": false + } + } + }, + "shape": [ + "nexg" + ] + } + } + } + }, + "memory": { + "ipr_input": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "ipr_flow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ifixedcond": { + "set_in": "ar", + "source": "fixed_conductance", + "type": "integer" + }, + "nexg": { + "set_in": "ar", + "source": "nexg", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.toml new file mode 100644 index 00000000..c572d543 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.toml @@ -0,0 +1,97 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-chfgwf" +parent = "sim-nam" +multi = true +subtype = "exchange" + +[dims.nexg] +value = "nexg" +scope = "simulation" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "keyword to print input to list file" +description = "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print chfgwf flows to list file" +description = "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control." +optional = true + +[blocks.options.fields.fixed_conductance] +type = "keyword" +longname = "keyword to indicate conductance is fixed" +description = "keyword to indicate that the product of the bedleak and cfact input variables in the exchangedata block represents conductance. This conductance is fixed and does not change as a function of head in the surface water and groundwater models." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.nexg] +type = "integer" +longname = "number of exchanges" +description = "keyword and integer value specifying the number of SWF-GWF exchanges." + +[blocks.exchangedata.fields.exchangedata] +type = "list" +longname = "exchange data" +shape = [ + "nexg", +] + +[blocks.exchangedata.fields.exchangedata.item] +type = "record" + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm1] +type = "integer" +longname = "cellid of cell in surface water model" +description = "is the cellid of the cell in model 1, which must be the surface water model. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm2] +type = "integer" +longname = "cellid of cell in groundwater model" +description = "is the cellid of the cell in model 2, which must be the groundwater model. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.bedleak] +type = "double" +longname = "bed leakance" +description = "is the leakance between the surface water and groundwater. bedleak has dimensions of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the thickness of the bed sediments." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cfact] +type = "double" +longname = "factor used for conductance calculation" +description = "is the factor used for the conductance calculation. The definition for this parameter depends the type of surface water model and whether or not the fixed_conductance option is specified. If the fixed_conductance option is specified, then the hydraulic conductance is calculated as the product of bedleak and cfact. In this case, the conductance is fixed and does not change as a function of the calculated surface water and groundwater head. If the fixed_conductance option is not specified, then the definition of cfact depends on whether the surface water model represents one-dimensional channel flow or two-dimensional overland flow. If the surface water model represents one-dimensional channel flow, then cfact is the length of the channel cell in the groundwater model cell. If the surface water model represents two-dimensional overland flow, then cfact is the intersection area of the overland flow cell and the underlying groundwater model cell." +tagged = false + +[memory.ipr_input] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.ipr_flow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ifixedcond] +set_in = "ar" +source = "fixed_conductance" +type = "integer" + +[memory.nexg] +set_in = "ar" +source = "nexg" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.yaml new file mode 100644 index 00000000..1841e50f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-chfgwf.yaml @@ -0,0 +1,114 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-chfgwf +parent: sim-nam +multi: true +subtype: exchange +dims: + nexg: + value: nexg + scope: simulation +blocks: + options: + fields: + print_input: + type: keyword + longname: keyword to print input to list file + description: keyword to indicate that the list of exchange entries will be echoed to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: keyword to print chfgwf flows to list file + description: keyword to indicate that the list of exchange flow rates will be printed to the listing + file for every stress period in which 'SAVE BUDGET' is specified in Output Control. + optional: true + fixed_conductance: + type: keyword + longname: keyword to indicate conductance is fixed + description: keyword to indicate that the product of the bedleak and cfact input variables in + the exchangedata block represents conductance. This conductance is fixed and does not change + as a function of head in the surface water and groundwater models. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + nexg: + type: integer + longname: number of exchanges + description: keyword and integer value specifying the number of SWF-GWF exchanges. + exchangedata: + fields: + exchangedata: + type: list + longname: exchange data + item: + type: record + fields: + cellidm1: + type: integer + longname: cellid of cell in surface water model + description: is the cellid of the cell in model 1, which must be the surface water model. + For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM1 is the node number for the cell. + tagged: false + cellidm2: + type: integer + longname: cellid of cell in groundwater model + description: is the cellid of the cell in model 2, which must be the groundwater model. + For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM2 is the node number for the cell. + tagged: false + bedleak: + type: double + longname: bed leakance + description: is the leakance between the surface water and groundwater. bedleak has dimensions + of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the + thickness of the bed sediments. + tagged: false + cfact: + type: double + longname: factor used for conductance calculation + description: is the factor used for the conductance calculation. The definition for this + parameter depends the type of surface water model and whether or not the fixed_conductance + option is specified. If the fixed_conductance option is specified, then the hydraulic + conductance is calculated as the product of bedleak and cfact. In this case, the conductance + is fixed and does not change as a function of the calculated surface water and groundwater + head. If the fixed_conductance option is not specified, then the definition of cfact + depends on whether the surface water model represents one-dimensional channel flow or + two-dimensional overland flow. If the surface water model represents one-dimensional + channel flow, then cfact is the length of the channel cell in the groundwater model cell. If + the surface water model represents two-dimensional overland flow, then cfact is the intersection + area of the overland flow cell and the underlying groundwater model cell. + tagged: false + shape: + - nexg +memory: + ipr_input: + set_in: ar + source: print_input + type: integer + ipr_flow: + set_in: ar + source: print_flows + type: integer + ifixedcond: + set_in: ar + source: fixed_conductance + type: integer + nexg: + set_in: ar + source: nexg + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.json new file mode 100644 index 00000000..41f23731 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.json @@ -0,0 +1,232 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwegwe", + "parent": "sim-nam", + "multi": true, + "subtype": "exchange", + "dims": { + "nexg": { + "value": "nexg", + "scope": "simulation" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + } + }, + "blocks": { + "options": { + "fields": { + "gwfmodelname1": { + "type": "string", + "longname": "keyword to specify name of first corresponding GWF Model", + "description": "keyword to specify name of first corresponding GWF Model. In the simulation name file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1." + }, + "gwfmodelname2": { + "type": "string", + "longname": "keyword to specify name of second corresponding GWF Model", + "description": "keyword to specify name of second corresponding GWF Model. In the simulation name file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2." + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWE-GWE Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in the description of the DISU Package. If an auxiliary variable with the name 'CDIST' is found, then this information will be used as the straight-line connection distance, including the vertical component, between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge is calculated for either of the groundwater models.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of GWE Exchange cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "keyword to print input to list file", + "description": "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print gwfgwf flows to list file", + "description": "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save GWFGWF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option.", + "optional": true + }, + "adv_scheme": { + "type": "string", + "longname": "advective scheme", + "description": "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme.", + "optional": true, + "valid": [ + "upstream", + "central", + "tvd" + ] + }, + "cnd_xt3d_off": { + "type": "keyword", + "longname": "deactivate xt3d", + "description": "deactivate the xt3d method for the dispersive flux and use the faster and less accurate approximation for this exchange.", + "optional": true + }, + "cnd_xt3d_rhs": { + "type": "keyword", + "longname": "xt3d on right-hand side", + "description": "add xt3d dispersion terms to right-hand side, when possible, for this exchange.", + "optional": true + }, + "mve_filerecord": { + "type": "record", + "optional": true, + "fields": { + "mve6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an energy transport mover file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "dev_interfacemodel_on": { + "type": "keyword", + "longname": "activate interface model on exchange", + "description": "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nexg": { + "type": "integer", + "longname": "number of exchanges", + "description": "keyword and integer value specifying the number of GWE-GWE exchanges." + } + } + }, + "exchangedata": { + "fields": { + "exchangedata": { + "type": "list", + "longname": "exchange data", + "item": { + "type": "record", + "fields": { + "cellidm1": { + "type": "integer", + "longname": "cellid of first cell", + "description": "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell.", + "tagged": false + }, + "cellidm2": { + "type": "integer", + "longname": "cellid of second cell", + "description": "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell.", + "tagged": false + }, + "ihc": { + "type": "integer", + "longname": "integer flag for connection type", + "description": "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid.", + "tagged": false + }, + "cl1": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 1 and the its shared face with cell 2.", + "tagged": false + }, + "cl2": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 2 and the its shared face with cell 1.", + "tagged": false + }, + "hwva": { + "type": "double", + "longname": "horizontal cell width or area for vertical flow", + "description": "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each GWEGWE Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block.", + "optional": true, + "dtype": "double", + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "exchange boundname", + "description": "name of the GWE Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nexg" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "dev_ifmod_on": { + "set_in": "ar", + "source": "dev_interfacemodel_on", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "dtype": "double", + "shape": [ + "naux" + ] + }, + "nexg": { + "set_in": "ar", + "source": "nexg", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.toml new file mode 100644 index 00000000..7fcc36fb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.toml @@ -0,0 +1,206 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwegwe" +parent = "sim-nam" +multi = true +subtype = "exchange" + +[dims.nexg] +value = "nexg" +scope = "simulation" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[blocks.options.fields.gwfmodelname1] +type = "string" +longname = "keyword to specify name of first corresponding GWF Model" +description = "keyword to specify name of first corresponding GWF Model. In the simulation name file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1." + +[blocks.options.fields.gwfmodelname2] +type = "string" +longname = "keyword to specify name of second corresponding GWF Model" +description = "keyword to specify name of second corresponding GWF Model. In the simulation name file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2." + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWE-GWE Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in the description of the DISU Package. If an auxiliary variable with the name 'CDIST' is found, then this information will be used as the straight-line connection distance, including the vertical component, between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge is calculated for either of the groundwater models." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of GWE Exchange cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "keyword to print input to list file" +description = "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print gwfgwf flows to list file" +description = "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save GWFGWF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option." +optional = true + +[blocks.options.fields.adv_scheme] +type = "string" +longname = "advective scheme" +description = "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme." +optional = true +valid = [ + "upstream", + "central", + "tvd", +] + +[blocks.options.fields.cnd_xt3d_off] +type = "keyword" +longname = "deactivate xt3d" +description = "deactivate the xt3d method for the dispersive flux and use the faster and less accurate approximation for this exchange." +optional = true + +[blocks.options.fields.cnd_xt3d_rhs] +type = "keyword" +longname = "xt3d on right-hand side" +description = "add xt3d dispersion terms to right-hand side, when possible, for this exchange." +optional = true + +[blocks.options.fields.mve_filerecord] +type = "record" +optional = true + +[blocks.options.fields.mve_filerecord.fields.mve6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an energy transport mover file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.dev_interfacemodel_on] +type = "keyword" +longname = "activate interface model on exchange" +description = "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes." +optional = true + +[blocks.dimensions.fields.nexg] +type = "integer" +longname = "number of exchanges" +description = "keyword and integer value specifying the number of GWE-GWE exchanges." + +[blocks.exchangedata.fields.exchangedata] +type = "list" +longname = "exchange data" +shape = [ + "nexg", +] + +[blocks.exchangedata.fields.exchangedata.item] +type = "record" + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm1] +type = "integer" +longname = "cellid of first cell" +description = "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm2] +type = "integer" +longname = "cellid of second cell" +description = "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.ihc] +type = "integer" +longname = "integer flag for connection type" +description = "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl1] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 1 and the its shared face with cell 2." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl2] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 2 and the its shared face with cell 1." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.hwva] +type = "double" +longname = "horizontal cell width or area for vertical flow" +description = "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each GWEGWE Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block." +optional = true +dtype = "double" +shape = [ + "auxiliary", +] + +[blocks.exchangedata.fields.exchangedata.item.fields.boundname] +type = "string" +longname = "exchange boundname" +description = "name of the GWE Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.dev_ifmod_on] +set_in = "ar" +source = "dev_interfacemodel_on" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +dtype = "double" +shape = [ + "naux", +] + +[memory.nexg] +set_in = "ar" +source = "nexg" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.yaml new file mode 100644 index 00000000..8e23d62c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwegwe.yaml @@ -0,0 +1,221 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwegwe +parent: sim-nam +multi: true +subtype: exchange +dims: + nexg: + value: nexg + scope: simulation + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) +blocks: + options: + fields: + gwfmodelname1: + type: string + longname: keyword to specify name of first corresponding GWF Model + description: keyword to specify name of first corresponding GWF Model. In the simulation name + file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE + Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1. + gwfmodelname2: + type: string + longname: keyword to specify name of second corresponding GWF Model + description: keyword to specify name of second corresponding GWF Model. In the simulation name + file, the GWE6-GWE6 entry contains names for GWE Models (exgmnamea and exgmnameb). The GWE + Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2. + auxiliary: + type: array + longname: keyword to specify aux variables + description: an array of auxiliary variable names. There is no limit on the number of auxiliary + variables that can be provided. Most auxiliary variables will not be used by the GWE-GWE Exchange, + but they will be available for use by other parts of the program. If an auxiliary variable + with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided + in degrees) between the connection face normal and the x axis, where a value of zero indicates + that a normal vector points directly along the positive x axis. The connection face normal + is a normal vector on the cell face shared between the cell in model 1 and the cell in model + 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in + the description of the DISU Package. If an auxiliary variable with the name 'CDIST' is found, + then this information will be used as the straight-line connection distance, including the vertical + component, between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge + is calculated for either of the groundwater models. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of GWE Exchange + cells. + optional: true + print_input: + type: keyword + longname: keyword to print input to list file + description: keyword to indicate that the list of exchange entries will be echoed to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: keyword to print gwfgwf flows to list file + description: keyword to indicate that the list of exchange flow rates will be printed to the listing + file for every stress period in which 'SAVE BUDGET' is specified in Output Control. + optional: true + save_flows: + type: keyword + longname: keyword to save GWFGWF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the budget file + for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE + FILE' option. + optional: true + adv_scheme: + type: string + longname: advective scheme + description: scheme used to solve the advection term. Can be upstream, central, or TVD. If not + specified, upstream weighting is the default weighting scheme. + optional: true + valid: + - upstream + - central + - tvd + cnd_xt3d_off: + type: keyword + longname: deactivate xt3d + description: deactivate the xt3d method for the dispersive flux and use the faster and less accurate + approximation for this exchange. + optional: true + cnd_xt3d_rhs: + type: keyword + longname: xt3d on right-hand side + description: add xt3d dispersion terms to right-hand side, when possible, for this exchange. + optional: true + mve_filerecord: + type: record + optional: true + fields: + mve6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an energy transport mover file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dev_interfacemodel_on: + type: keyword + longname: activate interface model on exchange + description: activates the interface model mechanism for calculating the coefficients at (and + possibly near) the exchange. This keyword should only be used for development purposes. + optional: true + dimensions: + fields: + nexg: + type: integer + longname: number of exchanges + description: keyword and integer value specifying the number of GWE-GWE exchanges. + exchangedata: + fields: + exchangedata: + type: list + longname: exchange data + item: + type: record + fields: + cellidm1: + type: integer + longname: cellid of first cell + description: is the cellid of the cell in model 1 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM1 is the node number for the cell. + tagged: false + cellidm2: + type: integer + longname: cellid of second cell + description: is the cellid of the cell in model 2 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM2 is the node number for the cell. + tagged: false + ihc: + type: integer + longname: integer flag for connection type + description: is an integer flag indicating the direction between node n and all of its m + connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection + is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered + grid. + tagged: false + cl1: + type: double + longname: connection distance + description: is the distance between the center of cell 1 and the its shared face with cell + 2. + tagged: false + cl2: + type: double + longname: connection distance + description: is the distance between the center of cell 2 and the its shared face with cell + 1. + tagged: false + hwva: + type: double + longname: horizontal cell width or area for vertical flow + description: is the horizontal width of the flow connection between cell 1 and cell 2 if + IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between + cell 1 and cell 2 if IHC = 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each GWEGWE Exchange. + The values of auxiliary variables must be present for each exchange. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. + optional: true + dtype: double + shape: + - auxiliary + boundname: + type: string + longname: exchange boundname + description: name of the GWE Exchange cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nexg +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + type: integer + dev_ifmod_on: + set_in: ar + source: dev_interfacemodel_on + type: logical + auxvar: + type: array + source: aux + dtype: double + shape: + - naux + nexg: + set_in: ar + source: nexg + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.json new file mode 100644 index 00000000..82ab6553 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.json @@ -0,0 +1,7 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwfgwe", + "parent": "sim-nam", + "subtype": "exchange" +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.toml new file mode 100644 index 00000000..33698e71 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.toml @@ -0,0 +1,5 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwfgwe" +parent = "sim-nam" +subtype = "exchange" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.yaml new file mode 100644 index 00000000..8953b8d2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwe.yaml @@ -0,0 +1,5 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwfgwe +parent: sim-nam +subtype: exchange diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.json new file mode 100644 index 00000000..963937fc --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.json @@ -0,0 +1,253 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwfgwf", + "parent": "sim-nam", + "multi": true, + "subtype": "exchange", + "dims": { + "nexg": { + "value": "nexg", + "scope": "simulation" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWF-GWF Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' and when it is required is provided in the description of the DISU Package. If an auxiliary variable with the name 'CDIST' is found, then this information will be used in the calculation of specific discharge within model cells connected by the exchange. For a horizontal connection, CDIST should be specified as the horizontal distance between the cell centers, and should not include the vertical component. For vertical connections, CDIST should be specified as the difference in elevation between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge is calculated for either of the groundwater models.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of GWF Exchange cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "keyword to print input to list file", + "description": "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print gwfgwf flows to list file", + "description": "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save GWFGWF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option.", + "optional": true + }, + "cell_averaging": { + "type": "string", + "longname": "conductance weighting option", + "description": "is a keyword and text keyword to indicate the method that will be used for calculating the conductance for horizontal cell connections. The text value for CELL_AVERAGING can be 'HARMONIC', 'LOGARITHMIC', or 'AMT-LMK', which means 'arithmetic-mean thickness and logarithmic-mean hydraulic conductivity'. If the user does not specify a value for CELL_AVERAGING, then the harmonic-mean method will be used.", + "optional": true, + "valid": [ + "harmonic", + "logarithmic", + "amt-lmk" + ] + }, + "cvoptions": { + "type": "record", + "longname": "vertical conductance options", + "description": "none", + "optional": true, + "fields": { + "variablecv": { + "type": "keyword", + "longname": "keyword to activate VARIABLECV option", + "description": "keyword to indicate that the vertical conductance will be calculated using the saturated thickness and properties of the overlying cell and the thickness and properties of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top. If these keywords are not specified, then the default condition is to calculate the vertical conductance at the start of the simulation using the initial head and the cell properties. The vertical conductance remains constant for the entire simulation." + }, + "dewatered": { + "type": "keyword", + "longname": "keyword to activate DEWATERED option", + "description": "If the DEWATERED keyword is specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top.", + "optional": true + } + } + }, + "newton": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson", + "description": "keyword that activates the Newton-Raphson formulation for groundwater flow between connected, convertible groundwater cells. Cells will not dry when this option is used.", + "optional": true + }, + "xt3d": { + "type": "keyword", + "longname": "keyword to activate XT3D", + "description": "keyword that activates the XT3D formulation between the cells connected with this GWF-GWF Exchange.", + "optional": true + }, + "gnc_filerecord": { + "type": "record", + "optional": true, + "fields": { + "gnc6": { + "type": "file", + "longname": "gnc6 keyword", + "description": "keyword to specify that record corresponds to a ghost-node correction file.", + "mode": "filein" + } + } + }, + "mvr_filerecord": { + "type": "record", + "optional": true, + "fields": { + "mvr6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to a mover file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "dev_interfacemodel_on": { + "type": "keyword", + "longname": "activate interface model on exchange", + "description": "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nexg": { + "type": "integer", + "longname": "number of exchanges", + "description": "keyword and integer value specifying the number of GWF-GWF exchanges." + } + } + }, + "exchangedata": { + "fields": { + "exchangedata": { + "type": "list", + "longname": "exchange data", + "item": { + "type": "record", + "fields": { + "cellidm1": { + "type": "integer", + "longname": "cellid of first cell", + "description": "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell.", + "tagged": false + }, + "cellidm2": { + "type": "integer", + "longname": "cellid of second cell", + "description": "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell.", + "tagged": false + }, + "ihc": { + "type": "integer", + "longname": "integer flag for connection type", + "description": "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid.", + "tagged": false + }, + "cl1": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 1 and the its shared face with cell 2.", + "tagged": false + }, + "cl2": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 2 and the its shared face with cell 1.", + "tagged": false + }, + "hwva": { + "type": "double", + "longname": "horizontal cell width or area for vertical flow", + "description": "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each GWFGWF Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block.", + "optional": true, + "dtype": "double", + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "exchange boundname", + "description": "name of the GWF Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nexg" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "dev_ifmod_on": { + "set_in": "ar", + "source": "dev_interfacemodel_on", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "dtype": "double", + "shape": [ + "naux" + ] + }, + "nexg": { + "set_in": "ar", + "source": "nexg", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.toml new file mode 100644 index 00000000..27abe2d3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.toml @@ -0,0 +1,223 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwfgwf" +parent = "sim-nam" +multi = true +subtype = "exchange" + +[dims.nexg] +value = "nexg" +scope = "simulation" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWF-GWF Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' and when it is required is provided in the description of the DISU Package. If an auxiliary variable with the name 'CDIST' is found, then this information will be used in the calculation of specific discharge within model cells connected by the exchange. For a horizontal connection, CDIST should be specified as the horizontal distance between the cell centers, and should not include the vertical component. For vertical connections, CDIST should be specified as the difference in elevation between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge is calculated for either of the groundwater models." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of GWF Exchange cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "keyword to print input to list file" +description = "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print gwfgwf flows to list file" +description = "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save GWFGWF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option." +optional = true + +[blocks.options.fields.cell_averaging] +type = "string" +longname = "conductance weighting option" +description = "is a keyword and text keyword to indicate the method that will be used for calculating the conductance for horizontal cell connections. The text value for CELL_AVERAGING can be 'HARMONIC', 'LOGARITHMIC', or 'AMT-LMK', which means 'arithmetic-mean thickness and logarithmic-mean hydraulic conductivity'. If the user does not specify a value for CELL_AVERAGING, then the harmonic-mean method will be used." +optional = true +valid = [ + "harmonic", + "logarithmic", + "amt-lmk", +] + +[blocks.options.fields.cvoptions] +type = "record" +longname = "vertical conductance options" +description = "none" +optional = true + +[blocks.options.fields.cvoptions.fields.variablecv] +type = "keyword" +longname = "keyword to activate VARIABLECV option" +description = "keyword to indicate that the vertical conductance will be calculated using the saturated thickness and properties of the overlying cell and the thickness and properties of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top. If these keywords are not specified, then the default condition is to calculate the vertical conductance at the start of the simulation using the initial head and the cell properties. The vertical conductance remains constant for the entire simulation." + +[blocks.options.fields.cvoptions.fields.dewatered] +type = "keyword" +longname = "keyword to activate DEWATERED option" +description = "If the DEWATERED keyword is specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top." +optional = true + +[blocks.options.fields.newton] +type = "keyword" +longname = "keyword to activate Newton-Raphson" +description = "keyword that activates the Newton-Raphson formulation for groundwater flow between connected, convertible groundwater cells. Cells will not dry when this option is used." +optional = true + +[blocks.options.fields.xt3d] +type = "keyword" +longname = "keyword to activate XT3D" +description = "keyword that activates the XT3D formulation between the cells connected with this GWF-GWF Exchange." +optional = true + +[blocks.options.fields.gnc_filerecord] +type = "record" +optional = true + +[blocks.options.fields.gnc_filerecord.fields.gnc6] +type = "file" +longname = "gnc6 keyword" +description = "keyword to specify that record corresponds to a ghost-node correction file." +mode = "filein" + +[blocks.options.fields.mvr_filerecord] +type = "record" +optional = true + +[blocks.options.fields.mvr_filerecord.fields.mvr6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to a mover file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.dev_interfacemodel_on] +type = "keyword" +longname = "activate interface model on exchange" +description = "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes." +optional = true + +[blocks.dimensions.fields.nexg] +type = "integer" +longname = "number of exchanges" +description = "keyword and integer value specifying the number of GWF-GWF exchanges." + +[blocks.exchangedata.fields.exchangedata] +type = "list" +longname = "exchange data" +shape = [ + "nexg", +] + +[blocks.exchangedata.fields.exchangedata.item] +type = "record" + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm1] +type = "integer" +longname = "cellid of first cell" +description = "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm2] +type = "integer" +longname = "cellid of second cell" +description = "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.ihc] +type = "integer" +longname = "integer flag for connection type" +description = "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl1] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 1 and the its shared face with cell 2." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl2] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 2 and the its shared face with cell 1." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.hwva] +type = "double" +longname = "horizontal cell width or area for vertical flow" +description = "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each GWFGWF Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block." +optional = true +dtype = "double" +shape = [ + "auxiliary", +] + +[blocks.exchangedata.fields.exchangedata.item.fields.boundname] +type = "string" +longname = "exchange boundname" +description = "name of the GWF Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.dev_ifmod_on] +set_in = "ar" +source = "dev_interfacemodel_on" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +dtype = "double" +shape = [ + "naux", +] + +[memory.nexg] +set_in = "ar" +source = "nexg" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.yaml new file mode 100644 index 00000000..4e6da572 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwf.yaml @@ -0,0 +1,249 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwfgwf +parent: sim-nam +multi: true +subtype: exchange +dims: + nexg: + value: nexg + scope: simulation + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: an array of auxiliary variable names. There is no limit on the number of auxiliary + variables that can be provided. Most auxiliary variables will not be used by the GWF-GWF Exchange, + but they will be available for use by other parts of the program. If an auxiliary variable + with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided + in degrees) between the connection face normal and the x axis, where a value of zero indicates + that a normal vector points directly along the positive x axis. The connection face normal + is a normal vector on the cell face shared between the cell in model 1 and the cell in model + 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' and when it is + required is provided in the description of the DISU Package. If an auxiliary variable with + the name 'CDIST' is found, then this information will be used in the calculation of specific + discharge within model cells connected by the exchange. For a horizontal connection, CDIST + should be specified as the horizontal distance between the cell centers, and should not include + the vertical component. For vertical connections, CDIST should be specified as the difference + in elevation between the two cell centers. Both ANGLDEGX and CDIST are required if specific + discharge is calculated for either of the groundwater models. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of GWF Exchange + cells. + optional: true + print_input: + type: keyword + longname: keyword to print input to list file + description: keyword to indicate that the list of exchange entries will be echoed to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: keyword to print gwfgwf flows to list file + description: keyword to indicate that the list of exchange flow rates will be printed to the listing + file for every stress period in which 'SAVE BUDGET' is specified in Output Control. + optional: true + save_flows: + type: keyword + longname: keyword to save GWFGWF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the budget file + for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE + FILE' option. + optional: true + cell_averaging: + type: string + longname: conductance weighting option + description: is a keyword and text keyword to indicate the method that will be used for calculating + the conductance for horizontal cell connections. The text value for CELL_AVERAGING can be 'HARMONIC', + 'LOGARITHMIC', or 'AMT-LMK', which means 'arithmetic-mean thickness and logarithmic-mean hydraulic + conductivity'. If the user does not specify a value for CELL_AVERAGING, then the harmonic-mean + method will be used. + optional: true + valid: + - harmonic + - logarithmic + - amt-lmk + cvoptions: + type: record + longname: vertical conductance options + description: none + optional: true + fields: + variablecv: + type: keyword + longname: keyword to activate VARIABLECV option + description: keyword to indicate that the vertical conductance will be calculated using the + saturated thickness and properties of the overlying cell and the thickness and properties + of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance + is calculated using only the saturated thickness and properties of the overlying cell if + the head in the underlying cell is below its top. If these keywords are not specified, + then the default condition is to calculate the vertical conductance at the start of the + simulation using the initial head and the cell properties. The vertical conductance remains + constant for the entire simulation. + dewatered: + type: keyword + longname: keyword to activate DEWATERED option + description: If the DEWATERED keyword is specified, then the vertical conductance is calculated + using only the saturated thickness and properties of the overlying cell if the head in the + underlying cell is below its top. + optional: true + newton: + type: keyword + longname: keyword to activate Newton-Raphson + description: keyword that activates the Newton-Raphson formulation for groundwater flow between + connected, convertible groundwater cells. Cells will not dry when this option is used. + optional: true + xt3d: + type: keyword + longname: keyword to activate XT3D + description: keyword that activates the XT3D formulation between the cells connected with this + GWF-GWF Exchange. + optional: true + gnc_filerecord: + type: record + optional: true + fields: + gnc6: + type: file + longname: gnc6 keyword + description: keyword to specify that record corresponds to a ghost-node correction file. + mode: filein + mvr_filerecord: + type: record + optional: true + fields: + mvr6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to a mover file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dev_interfacemodel_on: + type: keyword + longname: activate interface model on exchange + description: activates the interface model mechanism for calculating the coefficients at (and + possibly near) the exchange. This keyword should only be used for development purposes. + optional: true + dimensions: + fields: + nexg: + type: integer + longname: number of exchanges + description: keyword and integer value specifying the number of GWF-GWF exchanges. + exchangedata: + fields: + exchangedata: + type: list + longname: exchange data + item: + type: record + fields: + cellidm1: + type: integer + longname: cellid of first cell + description: is the cellid of the cell in model 1 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM1 is the node number for the cell. + tagged: false + cellidm2: + type: integer + longname: cellid of second cell + description: is the cellid of the cell in model 2 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM2 is the node number for the cell. + tagged: false + ihc: + type: integer + longname: integer flag for connection type + description: is an integer flag indicating the direction between node n and all of its m + connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection + is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered + grid. + tagged: false + cl1: + type: double + longname: connection distance + description: is the distance between the center of cell 1 and the its shared face with cell + 2. + tagged: false + cl2: + type: double + longname: connection distance + description: is the distance between the center of cell 2 and the its shared face with cell + 1. + tagged: false + hwva: + type: double + longname: horizontal cell width or area for vertical flow + description: is the horizontal width of the flow connection between cell 1 and cell 2 if + IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between + cell 1 and cell 2 if IHC = 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each GWFGWF Exchange. + The values of auxiliary variables must be present for each exchange. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. + optional: true + dtype: double + shape: + - auxiliary + boundname: + type: string + longname: exchange boundname + description: name of the GWF Exchange cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nexg +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + type: integer + dev_ifmod_on: + set_in: ar + source: dev_interfacemodel_on + type: logical + auxvar: + type: array + source: aux + dtype: double + shape: + - naux + nexg: + set_in: ar + source: nexg + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.json new file mode 100644 index 00000000..46dbfc30 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.json @@ -0,0 +1,7 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwfgwt", + "parent": "sim-nam", + "subtype": "exchange" +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.toml new file mode 100644 index 00000000..40c5138f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.toml @@ -0,0 +1,5 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwfgwt" +parent = "sim-nam" +subtype = "exchange" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.yaml new file mode 100644 index 00000000..dfcca465 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfgwt.yaml @@ -0,0 +1,5 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwfgwt +parent: sim-nam +subtype: exchange diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.json new file mode 100644 index 00000000..7184180f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.json @@ -0,0 +1,7 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwfprt", + "parent": "sim-nam", + "subtype": "exchange" +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.toml new file mode 100644 index 00000000..83fcaeb4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.toml @@ -0,0 +1,5 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwfprt" +parent = "sim-nam" +subtype = "exchange" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.yaml new file mode 100644 index 00000000..dad706b8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwfprt.yaml @@ -0,0 +1,5 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwfprt +parent: sim-nam +subtype: exchange diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.json new file mode 100644 index 00000000..a42c2eb1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.json @@ -0,0 +1,232 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-gwtgwt", + "parent": "sim-nam", + "multi": true, + "subtype": "exchange", + "dims": { + "nexg": { + "value": "nexg", + "scope": "simulation" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + } + }, + "blocks": { + "options": { + "fields": { + "gwfmodelname1": { + "type": "string", + "longname": "keyword to specify name of first corresponding GWF Model", + "description": "keyword to specify name of first corresponding GWF Model. In the simulation name file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1." + }, + "gwfmodelname2": { + "type": "string", + "longname": "keyword to specify name of second corresponding GWF Model", + "description": "keyword to specify name of second corresponding GWF Model. In the simulation name file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2." + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWT-GWT Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in the description of the DISU Package. ANGLDEGX must be specified if dispersion is simulated in the connected GWT models.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of GWT Exchange cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "keyword to print input to list file", + "description": "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print gwfgwf flows to list file", + "description": "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save GWFGWF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option.", + "optional": true + }, + "adv_scheme": { + "type": "string", + "longname": "advective scheme", + "description": "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme.", + "optional": true, + "valid": [ + "upstream", + "central", + "tvd" + ] + }, + "dsp_xt3d_off": { + "type": "keyword", + "longname": "deactivate xt3d", + "description": "deactivate the xt3d method for the dispersive flux and use the faster and less accurate approximation for this exchange.", + "optional": true + }, + "dsp_xt3d_rhs": { + "type": "keyword", + "longname": "xt3d on right-hand side", + "description": "add xt3d dispersion terms to right-hand side, when possible, for this exchange.", + "optional": true + }, + "mvt_filerecord": { + "type": "record", + "optional": true, + "fields": { + "mvt6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to a transport mover file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "dev_interfacemodel_on": { + "type": "keyword", + "longname": "activate interface model on exchange", + "description": "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nexg": { + "type": "integer", + "longname": "number of exchanges", + "description": "keyword and integer value specifying the number of GWT-GWT exchanges." + } + } + }, + "exchangedata": { + "fields": { + "exchangedata": { + "type": "list", + "longname": "exchange data", + "item": { + "type": "record", + "fields": { + "cellidm1": { + "type": "integer", + "longname": "cellid of first cell", + "description": "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell.", + "tagged": false + }, + "cellidm2": { + "type": "integer", + "longname": "cellid of second cell", + "description": "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell.", + "tagged": false + }, + "ihc": { + "type": "integer", + "longname": "integer flag for connection type", + "description": "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid.", + "tagged": false + }, + "cl1": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 1 and the its shared face with cell 2.", + "tagged": false + }, + "cl2": { + "type": "double", + "longname": "connection distance", + "description": "is the distance between the center of cell 2 and the its shared face with cell 1.", + "tagged": false + }, + "hwva": { + "type": "double", + "longname": "horizontal cell width or area for vertical flow", + "description": "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each GWTGWT Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block.", + "optional": true, + "dtype": "double", + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "exchange boundname", + "description": "name of the GWT Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nexg" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "dev_ifmod_on": { + "set_in": "ar", + "source": "dev_interfacemodel_on", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "dtype": "double", + "shape": [ + "naux" + ] + }, + "nexg": { + "set_in": "ar", + "source": "nexg", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.toml new file mode 100644 index 00000000..92025458 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.toml @@ -0,0 +1,206 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-gwtgwt" +parent = "sim-nam" +multi = true +subtype = "exchange" + +[dims.nexg] +value = "nexg" +scope = "simulation" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[blocks.options.fields.gwfmodelname1] +type = "string" +longname = "keyword to specify name of first corresponding GWF Model" +description = "keyword to specify name of first corresponding GWF Model. In the simulation name file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1." + +[blocks.options.fields.gwfmodelname2] +type = "string" +longname = "keyword to specify name of second corresponding GWF Model" +description = "keyword to specify name of second corresponding GWF Model. In the simulation name file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2." + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "an array of auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided. Most auxiliary variables will not be used by the GWT-GWT Exchange, but they will be available for use by other parts of the program. If an auxiliary variable with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided in degrees) between the connection face normal and the x axis, where a value of zero indicates that a normal vector points directly along the positive x axis. The connection face normal is a normal vector on the cell face shared between the cell in model 1 and the cell in model 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in the description of the DISU Package. ANGLDEGX must be specified if dispersion is simulated in the connected GWT models." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of GWT Exchange cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "keyword to print input to list file" +description = "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print gwfgwf flows to list file" +description = "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save GWFGWF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the budget file for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE FILE' option." +optional = true + +[blocks.options.fields.adv_scheme] +type = "string" +longname = "advective scheme" +description = "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme." +optional = true +valid = [ + "upstream", + "central", + "tvd", +] + +[blocks.options.fields.dsp_xt3d_off] +type = "keyword" +longname = "deactivate xt3d" +description = "deactivate the xt3d method for the dispersive flux and use the faster and less accurate approximation for this exchange." +optional = true + +[blocks.options.fields.dsp_xt3d_rhs] +type = "keyword" +longname = "xt3d on right-hand side" +description = "add xt3d dispersion terms to right-hand side, when possible, for this exchange." +optional = true + +[blocks.options.fields.mvt_filerecord] +type = "record" +optional = true + +[blocks.options.fields.mvt_filerecord.fields.mvt6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to a transport mover file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.dev_interfacemodel_on] +type = "keyword" +longname = "activate interface model on exchange" +description = "activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes." +optional = true + +[blocks.dimensions.fields.nexg] +type = "integer" +longname = "number of exchanges" +description = "keyword and integer value specifying the number of GWT-GWT exchanges." + +[blocks.exchangedata.fields.exchangedata] +type = "list" +longname = "exchange data" +shape = [ + "nexg", +] + +[blocks.exchangedata.fields.exchangedata.item] +type = "record" + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm1] +type = "integer" +longname = "cellid of first cell" +description = "is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm2] +type = "integer" +longname = "cellid of second cell" +description = "is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.ihc] +type = "integer" +longname = "integer flag for connection type" +description = "is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl1] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 1 and the its shared face with cell 2." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cl2] +type = "double" +longname = "connection distance" +description = "is the distance between the center of cell 2 and the its shared face with cell 1." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.hwva] +type = "double" +longname = "horizontal cell width or area for vertical flow" +description = "is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each GWTGWT Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block." +optional = true +dtype = "double" +shape = [ + "auxiliary", +] + +[blocks.exchangedata.fields.exchangedata.item.fields.boundname] +type = "string" +longname = "exchange boundname" +description = "name of the GWT Exchange cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.dev_ifmod_on] +set_in = "ar" +source = "dev_interfacemodel_on" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +dtype = "double" +shape = [ + "naux", +] + +[memory.nexg] +set_in = "ar" +source = "nexg" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.yaml new file mode 100644 index 00000000..2897a101 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-gwtgwt.yaml @@ -0,0 +1,219 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-gwtgwt +parent: sim-nam +multi: true +subtype: exchange +dims: + nexg: + value: nexg + scope: simulation + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) +blocks: + options: + fields: + gwfmodelname1: + type: string + longname: keyword to specify name of first corresponding GWF Model + description: keyword to specify name of first corresponding GWF Model. In the simulation name + file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT + Model with the name exgmnamea must correspond to the GWF Model with the name gwfmodelname1. + gwfmodelname2: + type: string + longname: keyword to specify name of second corresponding GWF Model + description: keyword to specify name of second corresponding GWF Model. In the simulation name + file, the GWT6-GWT6 entry contains names for GWT Models (exgmnamea and exgmnameb). The GWT + Model with the name exgmnameb must correspond to the GWF Model with the name gwfmodelname2. + auxiliary: + type: array + longname: keyword to specify aux variables + description: an array of auxiliary variable names. There is no limit on the number of auxiliary + variables that can be provided. Most auxiliary variables will not be used by the GWT-GWT Exchange, + but they will be available for use by other parts of the program. If an auxiliary variable + with the name 'ANGLDEGX' is found, then this information will be used as the angle (provided + in degrees) between the connection face normal and the x axis, where a value of zero indicates + that a normal vector points directly along the positive x axis. The connection face normal + is a normal vector on the cell face shared between the cell in model 1 and the cell in model + 2 pointing away from the model 1 cell. Additional information on 'ANGLDEGX' is provided in + the description of the DISU Package. ANGLDEGX must be specified if dispersion is simulated + in the connected GWT models. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of GWT Exchange + cells. + optional: true + print_input: + type: keyword + longname: keyword to print input to list file + description: keyword to indicate that the list of exchange entries will be echoed to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: keyword to print gwfgwf flows to list file + description: keyword to indicate that the list of exchange flow rates will be printed to the listing + file for every stress period in which 'SAVE BUDGET' is specified in Output Control. + optional: true + save_flows: + type: keyword + longname: keyword to save GWFGWF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the budget file + for each model provided that the Output Control for the models are set up with the 'BUDGET SAVE + FILE' option. + optional: true + adv_scheme: + type: string + longname: advective scheme + description: scheme used to solve the advection term. Can be upstream, central, or TVD. If not + specified, upstream weighting is the default weighting scheme. + optional: true + valid: + - upstream + - central + - tvd + dsp_xt3d_off: + type: keyword + longname: deactivate xt3d + description: deactivate the xt3d method for the dispersive flux and use the faster and less accurate + approximation for this exchange. + optional: true + dsp_xt3d_rhs: + type: keyword + longname: xt3d on right-hand side + description: add xt3d dispersion terms to right-hand side, when possible, for this exchange. + optional: true + mvt_filerecord: + type: record + optional: true + fields: + mvt6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to a transport mover file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dev_interfacemodel_on: + type: keyword + longname: activate interface model on exchange + description: activates the interface model mechanism for calculating the coefficients at (and + possibly near) the exchange. This keyword should only be used for development purposes. + optional: true + dimensions: + fields: + nexg: + type: integer + longname: number of exchanges + description: keyword and integer value specifying the number of GWT-GWT exchanges. + exchangedata: + fields: + exchangedata: + type: list + longname: exchange data + item: + type: record + fields: + cellidm1: + type: integer + longname: cellid of first cell + description: is the cellid of the cell in model 1 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM1 is the node number for the cell. + tagged: false + cellidm2: + type: integer + longname: cellid of second cell + description: is the cellid of the cell in model 2 as specified in the simulation name file. + For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM2 is the node number for the cell. + tagged: false + ihc: + type: integer + longname: integer flag for connection type + description: is an integer flag indicating the direction between node n and all of its m + connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection + is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered + grid. + tagged: false + cl1: + type: double + longname: connection distance + description: is the distance between the center of cell 1 and the its shared face with cell + 2. + tagged: false + cl2: + type: double + longname: connection distance + description: is the distance between the center of cell 2 and the its shared face with cell + 1. + tagged: false + hwva: + type: double + longname: horizontal cell width or area for vertical flow + description: is the horizontal width of the flow connection between cell 1 and cell 2 if + IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between + cell 1 and cell 2 if IHC = 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each GWTGWT Exchange. + The values of auxiliary variables must be present for each exchange. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. + optional: true + dtype: double + shape: + - auxiliary + boundname: + type: string + longname: exchange boundname + description: name of the GWT Exchange cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nexg +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + type: integer + dev_ifmod_on: + set_in: ar + source: dev_interfacemodel_on + type: logical + auxvar: + type: array + source: aux + dtype: double + shape: + - naux + nexg: + set_in: ar + source: nexg + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.json new file mode 100644 index 00000000..7ab3d3ac --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.json @@ -0,0 +1,121 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "exg-olfgwf", + "parent": "sim-nam", + "multi": true, + "subtype": "exchange", + "dims": { + "nexg": { + "value": "nexg", + "scope": "simulation" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "keyword to print input to list file", + "description": "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print olfgwf flows to list file", + "description": "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control.", + "optional": true + }, + "fixed_conductance": { + "type": "keyword", + "longname": "keyword to indicate conductance is fixed", + "description": "keyword to indicate that the product of the bedleak and cfact input variables in the exchangedata block represents conductance. This conductance is fixed and does not change as a function of head in the surface water and groundwater models.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nexg": { + "type": "integer", + "longname": "number of exchanges", + "description": "keyword and integer value specifying the number of SWF-GWF exchanges." + } + } + }, + "exchangedata": { + "fields": { + "exchangedata": { + "type": "list", + "longname": "exchange data", + "item": { + "type": "record", + "fields": { + "cellidm1": { + "type": "integer", + "longname": "cellid of cell in surface water model", + "description": "is the cellid of the cell in model 1, which must be the surface water model. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell.", + "tagged": false + }, + "cellidm2": { + "type": "integer", + "longname": "cellid of cell in groundwater model", + "description": "is the cellid of the cell in model 2, which must be the groundwater model. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell.", + "tagged": false + }, + "bedleak": { + "type": "double", + "longname": "bed leakance", + "description": "is the leakance between the surface water and groundwater. bedleak has dimensions of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the thickness of the bed sediments.", + "tagged": false + }, + "cfact": { + "type": "double", + "longname": "factor used for conductance calculation", + "description": "is the factor used for the conductance calculation. The definition for this parameter depends the type of surface water model and whether or not the fixed_conductance option is specified. If the fixed_conductance option is specified, then the hydraulic conductance is calculated as the product of bedleak and cfact. In this case, the conductance is fixed and does not change as a function of the calculated surface water and groundwater head. If the fixed_conductance option is not specified, then the definition of cfact depends on whether the surface water model represents one-dimensional channel flow or two-dimensional overland flow. If the surface water model represents one-dimensional channel flow, then cfact is the length of the channel cell in the groundwater model cell. If the surface water model represents two-dimensional overland flow, then cfact is the intersection area of the overland flow cell and the underlying groundwater model cell.", + "tagged": false + } + } + }, + "shape": [ + "nexg" + ] + } + } + } + }, + "memory": { + "ipr_input": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "ipr_flow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ifixedcond": { + "set_in": "ar", + "source": "fixed_conductance", + "type": "integer" + }, + "nexg": { + "set_in": "ar", + "source": "nexg", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.toml new file mode 100644 index 00000000..42933aaa --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.toml @@ -0,0 +1,97 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "exg-olfgwf" +parent = "sim-nam" +multi = true +subtype = "exchange" + +[dims.nexg] +value = "nexg" +scope = "simulation" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "keyword to print input to list file" +description = "keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print olfgwf flows to list file" +description = "keyword to indicate that the list of exchange flow rates will be printed to the listing file for every stress period in which 'SAVE BUDGET' is specified in Output Control." +optional = true + +[blocks.options.fields.fixed_conductance] +type = "keyword" +longname = "keyword to indicate conductance is fixed" +description = "keyword to indicate that the product of the bedleak and cfact input variables in the exchangedata block represents conductance. This conductance is fixed and does not change as a function of head in the surface water and groundwater models." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.nexg] +type = "integer" +longname = "number of exchanges" +description = "keyword and integer value specifying the number of SWF-GWF exchanges." + +[blocks.exchangedata.fields.exchangedata] +type = "list" +longname = "exchange data" +shape = [ + "nexg", +] + +[blocks.exchangedata.fields.exchangedata.item] +type = "record" + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm1] +type = "integer" +longname = "cellid of cell in surface water model" +description = "is the cellid of the cell in model 1, which must be the surface water model. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cellidm2] +type = "integer" +longname = "cellid of cell in groundwater model" +description = "is the cellid of the cell in model 2, which must be the groundwater model. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.bedleak] +type = "double" +longname = "bed leakance" +description = "is the leakance between the surface water and groundwater. bedleak has dimensions of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the thickness of the bed sediments." +tagged = false + +[blocks.exchangedata.fields.exchangedata.item.fields.cfact] +type = "double" +longname = "factor used for conductance calculation" +description = "is the factor used for the conductance calculation. The definition for this parameter depends the type of surface water model and whether or not the fixed_conductance option is specified. If the fixed_conductance option is specified, then the hydraulic conductance is calculated as the product of bedleak and cfact. In this case, the conductance is fixed and does not change as a function of the calculated surface water and groundwater head. If the fixed_conductance option is not specified, then the definition of cfact depends on whether the surface water model represents one-dimensional channel flow or two-dimensional overland flow. If the surface water model represents one-dimensional channel flow, then cfact is the length of the channel cell in the groundwater model cell. If the surface water model represents two-dimensional overland flow, then cfact is the intersection area of the overland flow cell and the underlying groundwater model cell." +tagged = false + +[memory.ipr_input] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.ipr_flow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ifixedcond] +set_in = "ar" +source = "fixed_conductance" +type = "integer" + +[memory.nexg] +set_in = "ar" +source = "nexg" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.yaml new file mode 100644 index 00000000..5b008d71 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/exg-olfgwf.yaml @@ -0,0 +1,114 @@ +type: package +schema_version: 2.0.0.dev3 +name: exg-olfgwf +parent: sim-nam +multi: true +subtype: exchange +dims: + nexg: + value: nexg + scope: simulation +blocks: + options: + fields: + print_input: + type: keyword + longname: keyword to print input to list file + description: keyword to indicate that the list of exchange entries will be echoed to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: keyword to print olfgwf flows to list file + description: keyword to indicate that the list of exchange flow rates will be printed to the listing + file for every stress period in which 'SAVE BUDGET' is specified in Output Control. + optional: true + fixed_conductance: + type: keyword + longname: keyword to indicate conductance is fixed + description: keyword to indicate that the product of the bedleak and cfact input variables in + the exchangedata block represents conductance. This conductance is fixed and does not change + as a function of head in the surface water and groundwater models. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + nexg: + type: integer + longname: number of exchanges + description: keyword and integer value specifying the number of SWF-GWF exchanges. + exchangedata: + fields: + exchangedata: + type: list + longname: exchange data + item: + type: record + fields: + cellidm1: + type: integer + longname: cellid of cell in surface water model + description: is the cellid of the cell in model 1, which must be the surface water model. + For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM1 is the node number for the cell. + tagged: false + cellidm2: + type: integer + longname: cellid of cell in groundwater model + description: is the cellid of the cell in model 2, which must be the groundwater model. + For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer + number and CELL2D number for the two cells. If the model uses the unstructured discretization + (DISU) input file, then CELLIDM2 is the node number for the cell. + tagged: false + bedleak: + type: double + longname: bed leakance + description: is the leakance between the surface water and groundwater. bedleak has dimensions + of 1/T and is equal to the hydraulic conductivity of the bed sediments divided by the + thickness of the bed sediments. + tagged: false + cfact: + type: double + longname: factor used for conductance calculation + description: is the factor used for the conductance calculation. The definition for this + parameter depends the type of surface water model and whether or not the fixed_conductance + option is specified. If the fixed_conductance option is specified, then the hydraulic + conductance is calculated as the product of bedleak and cfact. In this case, the conductance + is fixed and does not change as a function of the calculated surface water and groundwater + head. If the fixed_conductance option is not specified, then the definition of cfact + depends on whether the surface water model represents one-dimensional channel flow or + two-dimensional overland flow. If the surface water model represents one-dimensional + channel flow, then cfact is the length of the channel cell in the groundwater model cell. If + the surface water model represents two-dimensional overland flow, then cfact is the intersection + area of the overland flow cell and the underlying groundwater model cell. + tagged: false + shape: + - nexg +memory: + ipr_input: + set_in: ar + source: print_input + type: integer + ipr_flow: + set_in: ar + source: print_flows + type: integer + ifixedcond: + set_in: ar + source: fixed_conductance + type: integer + nexg: + set_in: ar + source: nexg + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.json new file mode 100644 index 00000000..ffd67a7f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.json @@ -0,0 +1,29 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-adv", + "parent": "gwe-nam", + "blocks": { + "options": { + "fields": { + "scheme": { + "type": "string", + "longname": "advective scheme", + "description": "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme.", + "optional": true, + "valid": [ + "central", + "upstream", + "tvd" + ] + }, + "ats_percel": { + "type": "double", + "longname": "fractional cell distance used for time step calculation", + "description": "fractional cell distance submitted by the ADV Package to the adaptive time stepping (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation will be made for each cell based on flow through the cell and cell properties. The largest time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is not exceeded for any active cell in the grid. This time-step constraint will be submitted to the ATS Package, perhaps with constraints submitted by other packages, in the calculation of the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL the program will automatically reset it to an internal no data value to indicate that time steps should not be subject to this constraint.", + "optional": true + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.toml new file mode 100644 index 00000000..892d3f3c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.toml @@ -0,0 +1,21 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-adv" +parent = "gwe-nam" + +[blocks.options.fields.scheme] +type = "string" +longname = "advective scheme" +description = "scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme." +optional = true +valid = [ + "central", + "upstream", + "tvd", +] + +[blocks.options.fields.ats_percel] +type = "double" +longname = "fractional cell distance used for time step calculation" +description = "fractional cell distance submitted by the ADV Package to the adaptive time stepping (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation will be made for each cell based on flow through the cell and cell properties. The largest time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is not exceeded for any active cell in the grid. This time-step constraint will be submitted to the ATS Package, perhaps with constraints submitted by other packages, in the calculation of the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL the program will automatically reset it to an internal no data value to indicate that time steps should not be subject to this constraint." +optional = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.yaml new file mode 100644 index 00000000..ca1b348a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-adv.yaml @@ -0,0 +1,30 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-adv +parent: gwe-nam +blocks: + options: + fields: + scheme: + type: string + longname: advective scheme + description: scheme used to solve the advection term. Can be upstream, central, or TVD. If not + specified, upstream weighting is the default weighting scheme. + optional: true + valid: + - central + - upstream + - tvd + ats_percel: + type: double + longname: fractional cell distance used for time step calculation + description: fractional cell distance submitted by the ADV Package to the adaptive time stepping + (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation + will be made for each cell based on flow through the cell and cell properties. The largest + time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is + not exceeded for any active cell in the grid. This time-step constraint will be submitted to + the ATS Package, perhaps with constraints submitted by other packages, in the calculation of + the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL + the program will automatically reset it to an internal no data value to indicate that time steps + should not be subject to this constraint. + optional: true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.json new file mode 100644 index 00000000..f263708a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.json @@ -0,0 +1,197 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-cnd", + "parent": "gwe-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "xt3d_off": { + "type": "keyword", + "longname": "deactivate xt3d", + "description": "deactivate the xt3d method and use the faster and less accurate approximation. This option may provide a fast and accurate solution under some circumstances, such as when flow aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and transverse dispersivities are equal. This option may also be used to assess the computational demand of the XT3D approach by noting the run time differences with and without this option on.", + "optional": true + }, + "xt3d_rhs": { + "type": "keyword", + "longname": "xt3d on right-hand side", + "description": "add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "alh": { + "type": "array", + "longname": "longitudinal dispersivity in horizontal direction", + "description": "longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alv": { + "type": "array", + "longname": "longitudinal dispersivity in vertical direction", + "description": "longitudinal dispersivity in vertical direction. If flow is strictly vertical, then this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ALH.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath1": { + "type": "array", + "longname": "transverse dispersivity in horizontal direction", + "description": "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the y direction. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath2": { + "type": "array", + "longname": "transverse dispersivity in horizontal direction", + "description": "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the z direction. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH1.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "atv": { + "type": "array", + "longname": "transverse dispersivity when flow is in vertical direction", + "description": "transverse dispersivity when flow is in vertical direction. If flow is strictly vertical and directed in the z direction, then this value controls spreading in the x and y directions. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH2.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ktw": { + "type": "array", + "longname": "thermal conductivity of the simulated fluid", + "description": "thermal conductivity of the simulated fluid. Note that the CND Package does not account for the tortuosity of the flow paths when solving for the conductive spread of heat. If tortuosity plays an important role in the thermal conductivity calculation, its effect should be reflected in the value specified for KTW.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "kts": { + "type": "array", + "longname": "thermal conductivity of the aquifer material", + "description": "thermal conductivity of the solid aquifer material", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "alh": { + "type": "array", + "set_in": "ar", + "source": "alh", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alv": { + "type": "array", + "set_in": "ar", + "source": "alv", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath1": { + "type": "array", + "set_in": "ar", + "source": "ath1", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath2": { + "type": "array", + "set_in": "ar", + "source": "ath2", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "atv": { + "type": "array", + "set_in": "ar", + "source": "atv", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ktw": { + "type": "array", + "set_in": "ar", + "source": "ktw", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "kts": { + "type": "array", + "set_in": "ar", + "source": "kts", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.toml new file mode 100644 index 00000000..28d7564e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.toml @@ -0,0 +1,181 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-cnd" +parent = "gwe-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.xt3d_off] +type = "keyword" +longname = "deactivate xt3d" +description = "deactivate the xt3d method and use the faster and less accurate approximation. This option may provide a fast and accurate solution under some circumstances, such as when flow aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and transverse dispersivities are equal. This option may also be used to assess the computational demand of the XT3D approach by noting the run time differences with and without this option on." +optional = true + +[blocks.options.fields.xt3d_rhs] +type = "keyword" +longname = "xt3d on right-hand side" +description = "add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.alh] +type = "array" +longname = "longitudinal dispersivity in horizontal direction" +description = "longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.alv] +type = "array" +longname = "longitudinal dispersivity in vertical direction" +description = "longitudinal dispersivity in vertical direction. If flow is strictly vertical, then this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ALH." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ath1] +type = "array" +longname = "transverse dispersivity in horizontal direction" +description = "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the y direction. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ath2] +type = "array" +longname = "transverse dispersivity in horizontal direction" +description = "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the z direction. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH1." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.atv] +type = "array" +longname = "transverse dispersivity when flow is in vertical direction" +description = "transverse dispersivity when flow is in vertical direction. If flow is strictly vertical and directed in the z direction, then this value controls spreading in the x and y directions. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH2." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ktw] +type = "array" +longname = "thermal conductivity of the simulated fluid" +description = "thermal conductivity of the simulated fluid. Note that the CND Package does not account for the tortuosity of the flow paths when solving for the conductive spread of heat. If tortuosity plays an important role in the thermal conductivity calculation, its effect should be reflected in the value specified for KTW." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.kts] +type = "array" +longname = "thermal conductivity of the aquifer material" +description = "thermal conductivity of the solid aquifer material" +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.alh] +type = "array" +set_in = "ar" +source = "alh" +dtype = "double" +shape = [ + "nodes", +] + +[memory.alv] +type = "array" +set_in = "ar" +source = "alv" +dtype = "double" +shape = [ + "nodes", +] + +[memory.ath1] +type = "array" +set_in = "ar" +source = "ath1" +dtype = "double" +shape = [ + "nodes", +] + +[memory.ath2] +type = "array" +set_in = "ar" +source = "ath2" +dtype = "double" +shape = [ + "nodes", +] + +[memory.atv] +type = "array" +set_in = "ar" +source = "atv" +dtype = "double" +shape = [ + "nodes", +] + +[memory.ktw] +type = "array" +set_in = "ar" +source = "ktw" +dtype = "double" +shape = [ + "nodes", +] + +[memory.kts] +type = "array" +set_in = "ar" +source = "kts" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.yaml new file mode 100644 index 00000000..04b04a08 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-cnd.yaml @@ -0,0 +1,185 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-cnd +parent: gwe-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + xt3d_off: + type: keyword + longname: deactivate xt3d + description: deactivate the xt3d method and use the faster and less accurate approximation. This + option may provide a fast and accurate solution under some circumstances, such as when flow + aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and + transverse dispersivities are equal. This option may also be used to assess the computational + demand of the XT3D approach by noting the run time differences with and without this option + on. + optional: true + xt3d_rhs: + type: keyword + longname: xt3d on right-hand side + description: add xt3d terms to right-hand side, when possible. This option uses less memory, + but may require more iterations. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + alh: + type: array + longname: longitudinal dispersivity in horizontal direction + description: longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, + then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal + or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If + mechanical dispersion is represented (by specifying any dispersivity values) then this array + is required. + optional: true + netcdf: true + dtype: double + shape: + - nodes + alv: + type: array + longname: longitudinal dispersivity in vertical direction + description: longitudinal dispersivity in vertical direction. If flow is strictly vertical, then + this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal + or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If + this value is not specified and mechanical dispersion is represented, then this array is set + equal to ALH. + optional: true + netcdf: true + dtype: double + shape: + - nodes + ath1: + type: array + longname: transverse dispersivity in horizontal direction + description: transverse dispersivity in horizontal direction. This is the transverse dispersivity + value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction + (along a row for a regular grid), then this value controls spreading in the y direction. If + mechanical dispersion is represented (by specifying any dispersivity values) then this array + is required. + optional: true + netcdf: true + dtype: double + shape: + - nodes + ath2: + type: array + longname: transverse dispersivity in horizontal direction + description: transverse dispersivity in horizontal direction. This is the transverse dispersivity + value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction + (along a row for a regular grid), then this value controls spreading in the z direction. If + this value is not specified and mechanical dispersion is represented, then this array is set + equal to ATH1. + optional: true + netcdf: true + dtype: double + shape: + - nodes + atv: + type: array + longname: transverse dispersivity when flow is in vertical direction + description: transverse dispersivity when flow is in vertical direction. If flow is strictly + vertical and directed in the z direction, then this value controls spreading in the x and y + directions. If this value is not specified and mechanical dispersion is represented, then this + array is set equal to ATH2. + optional: true + netcdf: true + dtype: double + shape: + - nodes + ktw: + type: array + longname: thermal conductivity of the simulated fluid + description: thermal conductivity of the simulated fluid. Note that the CND Package does not + account for the tortuosity of the flow paths when solving for the conductive spread of heat. If + tortuosity plays an important role in the thermal conductivity calculation, its effect should + be reflected in the value specified for KTW. + optional: true + netcdf: true + dtype: double + shape: + - nodes + kts: + type: array + longname: thermal conductivity of the aquifer material + description: thermal conductivity of the solid aquifer material + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + alh: + type: array + set_in: ar + source: alh + dtype: double + shape: + - nodes + alv: + type: array + set_in: ar + source: alv + dtype: double + shape: + - nodes + ath1: + type: array + set_in: ar + source: ath1 + dtype: double + shape: + - nodes + ath2: + type: array + set_in: ar + source: ath2 + dtype: double + shape: + - nodes + atv: + type: array + set_in: ar + source: atv + dtype: double + shape: + - nodes + ktw: + type: array + set_in: ar + source: ktw + dtype: double + shape: + - nodes + kts: + type: array + set_in: ar + source: kts + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json new file mode 100644 index 00000000..b1242745 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json @@ -0,0 +1,283 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-ctp", + "parent": "gwe-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of temperature value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant temperature cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant temperature information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of constant temperature flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save constant temperature flows to budget file", + "description": "keyword to indicate that constant temperature flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "time series keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant temperatures", + "description": "integer value specifying the maximum number of constant temperature cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "temp": { + "type": "double", + "longname": "constant temperature value", + "description": "is the constant temperature value. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant temperature. The values of auxiliary variables must be present for each constant temperature. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant temperature name", + "description": "name of the constant temperature cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprflow": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "iprpak": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "tspvar": { + "set_in": "ad", + "source": "temp", + "type": "double" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: temp.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CTP", + "output": "ipakcb", + "obs_type": "CTP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml new file mode 100644 index 00000000..2c0c80cf --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml @@ -0,0 +1,257 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-ctp" +parent = "gwe-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of temperature value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant temperature cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant temperature information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of constant temperature flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save constant temperature flows to budget file" +description = "keyword to indicate that constant temperature flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "time series keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant temperatures" +description = "integer value specifying the maximum number of constant temperature cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.temp] +type = "double" +longname = "constant temperature value" +description = "is the constant temperature value. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant temperature. The values of auxiliary variables must be present for each constant temperature. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant temperature name" +description = "name of the constant temperature cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprflow] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.iprpak] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.tspvar] +set_in = "ad" +source = "temp" +type = "double" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: temp." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CTP" +output = "ipakcb" +obs_type = "CTP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml new file mode 100644 index 00000000..19a1b599 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml @@ -0,0 +1,246 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-ctp +parent: gwe-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of temperature value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant + temperature cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant temperature information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of constant temperature flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save constant temperature flows to budget file + description: keyword to indicate that constant temperature flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: time series keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant temperatures + description: integer value specifying the maximum number of constant temperature cells that will + be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + temp: + type: double + longname: constant temperature value + description: is the constant temperature value. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant temperature. + The values of auxiliary variables must be present for each constant temperature. The values + must be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant temperature name + description: name of the constant temperature cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprflow: + set_in: ar + source: print_input + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + iprpak: + set_in: ar + source: save_flows + type: integer + tspvar: + set_in: ad + source: temp + type: double + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: temp.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CTP + output: ipakcb + obs_type: CTP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.json new file mode 100644 index 00000000..9cbbddb8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.json @@ -0,0 +1,285 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-dis", + "parent": "gwe-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nlay * nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "3", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid.", + "default": 1 + }, + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.toml new file mode 100644 index 00000000..d2ab4567 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.toml @@ -0,0 +1,261 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-dis" +parent = "gwe-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nlay * nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "3" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." +default = 1 + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the top model layer." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.yaml new file mode 100644 index 00000000..0d77a1e0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-dis.yaml @@ -0,0 +1,247 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-dis +parent: gwe-nam +dims: + nlay: + value: nlay + scope: model + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nlay * nrow * ncol + scope: model + ncelldim: + value: '3' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + default: 1 + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - nrow + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the top model layer. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + botm: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncol + - nrow + - nlay +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncol + - nrow + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.json new file mode 100644 index 00000000..bc6c7fc0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.json @@ -0,0 +1,363 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-disu", + "parent": "gwe-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nja": { + "value": "nja", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + }, + "njas": { + "value": "(nja - nodes) / 2" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "vertical_offset_tolerance": { + "type": "double", + "longname": "vertical length dimension for top and bottom checking", + "description": "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used.", + "optional": true, + "default": 0.0 + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of cells in the model grid." + }, + "nja": { + "type": "integer", + "longname": "number of columns", + "description": "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + }, + "nvert": { + "type": "integer", + "longname": "number of vertices", + "description": "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the model grid.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "longname": "cell surface area", + "description": "is the cell surface area (in plan view).", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "connectiondata": { + "fields": { + "iac": { + "type": "array", + "longname": "number of cell connections", + "description": "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "ja": { + "type": "array", + "longname": "grid connectivity", + "description": "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWE cells and their connections to the other GWE cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "ihc": { + "type": "array", + "longname": "connection type", + "description": "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "cl12": { + "type": "array", + "longname": "connection lengths", + "description": "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "hwva": { + "type": "array", + "longname": "connection lengths", + "description": "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "angldegx": { + "type": "array", + "longname": "angle of face normal to connection", + "description": "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians.", + "optional": true, + "dtype": "double", + "shape": [ + "nja" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "voffsettol": { + "set_in": "ar", + "source": "vertical_offset_tolerance", + "type": "double" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nja": { + "set_in": "ar", + "source": "nja", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "set_in": "ar", + "source": "bot", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.toml new file mode 100644 index 00000000..7266bb41 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.toml @@ -0,0 +1,325 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-disu" +parent = "gwe-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nja] +value = "nja" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[dims.njas] +value = "(nja - nodes) / 2" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.vertical_offset_tolerance] +type = "double" +longname = "vertical length dimension for top and bottom checking" +description = "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used." +optional = true +default = 0.0 + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of layers" +description = "is the number of cells in the model grid." + +[blocks.dimensions.fields.nja] +type = "integer" +longname = "number of columns" +description = "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of vertices" +description = "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required." +optional = true + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the model grid." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bot] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.area] +type = "array" +longname = "cell surface area" +description = "is the cell surface area (in plan view)." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.iac] +type = "array" +longname = "number of cell connections" +description = "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA." +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.ja] +type = "array" +longname = "grid connectivity" +description = "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWE cells and their connections to the other GWE cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.ihc] +type = "array" +longname = "connection type" +description = "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.cl12] +type = "array" +longname = "connection lengths" +description = "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.hwva] +type = "array" +longname = "connection lengths" +description = "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.angldegx] +type = "array" +longname = "angle of face normal to connection" +description = "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians." +optional = true +dtype = "double" +shape = [ + "nja", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.voffsettol] +set_in = "ar" +source = "vertical_offset_tolerance" +type = "double" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nja] +set_in = "ar" +source = "nja" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bot] +type = "array" +set_in = "ar" +source = "bot" +dtype = "double" +shape = [ + "nodes", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.yaml new file mode 100644 index 00000000..5397f1d2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disu.yaml @@ -0,0 +1,345 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-disu +parent: gwe-nam +dims: + nodes: + value: nodes + scope: model + nja: + value: nja + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model + njas: + value: (nja - nodes) / 2 +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + vertical_offset_tolerance: + type: double + longname: vertical length dimension for top and bottom checking + description: checks are performed to ensure that the top of a cell is not higher than the bottom + of an overlying cell. This option can be used to specify the tolerance that is used for checking. If + top of a cell is above the bottom of an overlying cell by a value less than this tolerance, + then the program will not terminate with an error. The default value is zero. This option + should generally not be used. + optional: true + default: 0.0 + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of layers + description: is the number of cells in the model grid. + nja: + type: integer + longname: number of columns + description: is the sum of the number of connections and NODES. When calculating the total number + of connections, the connection between cell n and cell m is considered to be different from + the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, + including n to m and m to n, and the total number of cells. + nvert: + type: integer + longname: number of vertices + description: is the total number of (x, y) vertex pairs used to define the plan-view shape of + each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES + and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks + should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are + specified in the NPF Package, then this information is required. + optional: true + griddata: + fields: + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the model grid. + dtype: double + shape: + - nodes + bot: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - nodes + area: + type: array + longname: cell surface area + description: is the cell surface area (in plan view). + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values + of -1 cannot be specified for the DISU Package. + optional: true + dtype: integer + shape: + - nodes + connectiondata: + fields: + iac: + type: array + longname: number of cell connections + description: is the number of connections (plus 1) for each cell. The sum of all the entries + in IAC must be equal to NJA. + dtype: integer + shape: + - nodes + ja: + type: array + longname: grid connectivity + description: is a list of cell number (n) followed by its connecting cell numbers (m) for each + of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This + list is sequentially provided for the first to the last cell. The first value in the list must + be cell n itself, and the remaining cells must be listed in an increasing order (sorted from + lowest number to highest). Note that the cell and its connections are only supplied for the + GWE cells and their connections to the other GWE cells. Also note that the JA list input may + be divided such that every node and its connectivity list can be on a separate line for ease + in readability of the file. To further ease readability of the file, the node number of the + cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign + of which is subsequently converted to positive by the code. + dtype: integer + shape: + - nja + ihc: + type: array + longname: connection type + description: is an index array indicating the direction between node n and all of its m connections. If + IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell + m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is + less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If + IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection + is vertically staggered. A vertically staggered connection is one in which a cell is horizontally + connected to more than one cell in a horizontal connection. + dtype: integer + shape: + - nja + cl12: + type: array + longname: connection lengths + description: is the array containing connection lengths between the center of cell n and the shared + face with each adjacent m cell. + dtype: double + shape: + - nja + hwva: + type: array + longname: connection lengths + description: is a symmetric array of size NJA. For horizontal connections, entries in HWVA are + the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the + vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and + area. Entries in the HWVA array have a one-to-one correspondence with the connections specified + in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA + array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries + in the HWVA array must be symmetric; the program will terminate with an error if the value for + HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m + connection. + dtype: double + shape: + - nja + angldegx: + type: array + longname: angle of face normal to connection + description: is the angle (in degrees) between the horizontal x-axis and the outward normal to + the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, + where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive + y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF + Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option + is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions + are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the + diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from + MODFLOW-USG, which reads a similar variable (ANGLEX) in radians. + optional: true + dtype: double + shape: + - nja + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the cell2d number. Records in the CELL2D block must be listed in consecutive + order from 1 to NODES. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + voffsettol: + set_in: ar + source: vertical_offset_tolerance + type: double + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nja: + set_in: ar + source: nja + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - nodes + bot: + type: array + set_in: ar + source: bot + dtype: double + shape: + - nodes + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.json new file mode 100644 index 00000000..ffffb876 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.json @@ -0,0 +1,313 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-disv", + "parent": "gwe-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "ncpl": { + "value": "ncpl", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "nodes": { + "value": "nlay * ncpl", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid." + }, + "ncpl": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "model top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "ncpl": { + "set_in": "ar", + "source": "ncpl", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.toml new file mode 100644 index 00000000..70e9b6ef --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.toml @@ -0,0 +1,277 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-disv" +parent = "gwe-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.ncpl] +value = "ncpl" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.nodes] +value = "nlay * ncpl" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." + +[blocks.dimensions.fields.ncpl] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.top] +type = "array" +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +netcdf = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +netcdf = true +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "ncpl", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.ncpl] +set_in = "ar" +source = "ncpl" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncpl", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.yaml new file mode 100644 index 00000000..b958c51f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-disv.yaml @@ -0,0 +1,272 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-disv +parent: gwe-nam +dims: + nlay: + value: nlay + scope: model + ncpl: + value: ncpl + scope: model + nvert: + value: nvert + scope: model + nodes: + value: nlay * ncpl + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + ncpl: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + top: + type: array + longname: model top elevation + description: is the top elevation for each cell in the top model layer. + netcdf: true + dtype: double + shape: + - ncpl + botm: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + netcdf: true + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncpl + - nlay + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - ncpl +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + ncpl: + set_in: ar + source: ncpl + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncpl + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncpl + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json new file mode 100644 index 00000000..0527fa5f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json @@ -0,0 +1,280 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-esl", + "parent": "gwe-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of energy loading rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of energy source loading cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of energy source loading information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of energy source loading flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that energy source loading flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of sources", + "description": "integer value specifying the maximum number of source cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "senerrate": { + "type": "double", + "longname": "energy source loading rate", + "description": "is the energy source loading rate. A positive value indicates addition of energy and a negative value indicates removal of energy. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each energy source. The values of auxiliary variables must be present for each energy source. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the energy source cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: senerrate.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "ESL", + "output": "ipakcb", + "obs_type": "ESL", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "ESL-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml new file mode 100644 index 00000000..e7cee8dd --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml @@ -0,0 +1,254 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-esl" +parent = "gwe-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of energy loading rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of energy source loading cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of energy source loading information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of energy source loading flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that energy source loading flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of sources" +description = "integer value specifying the maximum number of source cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.senerrate] +type = "double" +longname = "energy source loading rate" +description = "is the energy source loading rate. A positive value indicates addition of energy and a negative value indicates removal of energy. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each energy source. The values of auxiliary variables must be present for each energy source. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the energy source cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: senerrate." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "ESL" +output = "ipakcb" +obs_type = "ESL" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "ESL-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml new file mode 100644 index 00000000..c2ab8963 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml @@ -0,0 +1,245 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-esl +parent: gwe-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of energy loading rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of energy source + loading cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of energy source loading information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of energy source loading flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that energy source loading flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of sources + description: integer value specifying the maximum number of source cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + senerrate: + type: double + longname: energy source loading rate + description: is the energy source loading rate. A positive value indicates addition of energy + and a negative value indicates removal of energy. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each energy source. The + values of auxiliary variables must be present for each energy source. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the energy source cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: senerrate.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: ESL + output: ipakcb + obs_type: ESL + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: ESL-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.json new file mode 100644 index 00000000..b9c101fb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.json @@ -0,0 +1,179 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-est", + "parent": "gwe-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save calculated flows to budget file", + "description": "keyword to indicate that EST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "zero_order_decay_water": { + "type": "keyword", + "longname": "activate zero-order decay in aqueous phase", + "description": "is a text keyword to indicate that zero-order decay will occur in the aqueous phase. That is, decay occurs in the water and is a rate per volume of water only, not per volume of aquifer (i.e., grid cell). Use of this keyword requires that DECAY_WATER is specified in the GRIDDATA block.", + "optional": true + }, + "zero_order_decay_solid": { + "type": "keyword", + "longname": "activate zero-order decay in solid phase", + "description": "is a text keyword to indicate that zero-order decay will occur in the solid phase. That is, decay occurs in the solid and is a rate per mass (not volume) of solid only. Use of this keyword requires that DECAY_SOLID is specified in the GRIDDATA block.", + "optional": true + }, + "density_water": { + "type": "double", + "longname": "density of water", + "description": "density of water used by calculations related to heat storage and conduction. This value is set to 1,000 kg/m3 if no overriding value is specified. A user-specified value should be provided for models that use units other than kilograms and meters or if it is necessary to use a value other than the default.", + "optional": true, + "default": 1000.0 + }, + "heat_capacity_water": { + "type": "double", + "longname": "heat capacity of water", + "description": "heat capacity of water used by calculations related to heat storage and conduction. This value is set to 4,184 J/kg/C if no overriding value is specified. A user-specified value should be provided for models that use units other than kilograms, joules, and degrees Celsius or it is necessary to use a value other than the default.", + "optional": true, + "default": 4184.0 + }, + "latent_heat_vaporization": { + "type": "double", + "longname": "latent heat of vaporization", + "description": "latent heat of vaporization is the amount of energy that is required to convert a given quantity of liquid into a gas and is associated with evaporative cooling. While the EST package does not simulate evaporation, multiple other packages in a GWE simulation may. To avoid having to specify the latent heat of vaporization in multiple packages, it is specified in a single location and accessed wherever it is needed. For example, evaporation may occur from the surface of streams or lakes and the energy consumed by the change in phase would be needed in both the SFE and LKE packages. This value is set to 2,453,500 J/kg if no overriding value is specified. A user-specified value should be provided for models that use units other than joules and kilograms or if it is necessary to use a value other than the default.", + "optional": true, + "default": 2453500.0 + } + } + }, + "griddata": { + "fields": { + "porosity": { + "type": "array", + "longname": "porosity", + "description": "is the mobile domain porosity, defined as the mobile domain pore volume per mobile domain volume. The GWE model does not support the concept of an immobile domain in the context of heat transport.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_water": { + "type": "array", + "longname": "aqueous phase decay rate coefficient", + "description": "is the rate coefficient for zero-order decay for the aqueous phase of the mobile domain. A negative value indicates heat (energy) production. The dimensions of zero-order decay in the aqueous phase are energy per length cubed (volume of water) per time. Zero-order decay in the aqueous phase will have no effect on simulation results unless ZERO_ORDER_DECAY_WATER is specified in the options block.", + "optional": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_solid": { + "type": "array", + "longname": "solid phase decay rate coefficient", + "description": "is the rate coefficient for zero-order decay for the solid phase. A negative value indicates heat (energy) production. The dimensions of zero-order decay in the solid phase are energy per mass of solid per time. Zero-order decay in the solid phase will have no effect on simulation results unless ZERO_ORDER_DECAY_SOLID is specified in the options block.", + "optional": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "heat_capacity_solid": { + "type": "array", + "longname": "heat capacity of the aquifer material", + "description": "is the mass-based heat capacity of dry solids (aquifer material). For example, units of J/kg/C may be used (or equivalent).", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "density_solid": { + "type": "array", + "longname": "density of aquifer material", + "description": "is a user-specified value of the density of aquifer material not considering the voids. Value will remain fixed for the entire simulation. For example, if working in SI units, values may be entered as kilograms per cubic meter.", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "ord0_decay_water": { + "set_in": "ar", + "source": "zero_order_decay_water", + "type": "logical" + }, + "ord0_decay_solid": { + "set_in": "ar", + "source": "zero_order_decay_solid", + "type": "logical" + }, + "rhow": { + "set_in": "ar", + "source": "density_water", + "type": "double" + }, + "cpw": { + "set_in": "ar", + "source": "heat_capacity_water", + "type": "double" + }, + "latheatvap": { + "set_in": "ar", + "source": "latent_heat_vaporization", + "type": "double" + }, + "cps": { + "type": "array", + "set_in": "ar", + "source": "heat_capacity_solid", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "rhos": { + "type": "array", + "set_in": "ar", + "source": "density_solid", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "porosity": { + "type": "array", + "set_in": "ar", + "source": "porosity", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_water": { + "type": "array", + "set_in": "ar", + "source": "decay_water", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_solid": { + "type": "array", + "set_in": "ar", + "source": "decay_solid", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.toml new file mode 100644 index 00000000..31c77a80 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.toml @@ -0,0 +1,163 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-est" +parent = "gwe-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flows to budget file" +description = "keyword to indicate that EST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.zero_order_decay_water] +type = "keyword" +longname = "activate zero-order decay in aqueous phase" +description = "is a text keyword to indicate that zero-order decay will occur in the aqueous phase. That is, decay occurs in the water and is a rate per volume of water only, not per volume of aquifer (i.e., grid cell). Use of this keyword requires that DECAY_WATER is specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.zero_order_decay_solid] +type = "keyword" +longname = "activate zero-order decay in solid phase" +description = "is a text keyword to indicate that zero-order decay will occur in the solid phase. That is, decay occurs in the solid and is a rate per mass (not volume) of solid only. Use of this keyword requires that DECAY_SOLID is specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.density_water] +type = "double" +longname = "density of water" +description = "density of water used by calculations related to heat storage and conduction. This value is set to 1,000 kg/m3 if no overriding value is specified. A user-specified value should be provided for models that use units other than kilograms and meters or if it is necessary to use a value other than the default." +optional = true +default = 1000.0 + +[blocks.options.fields.heat_capacity_water] +type = "double" +longname = "heat capacity of water" +description = "heat capacity of water used by calculations related to heat storage and conduction. This value is set to 4,184 J/kg/C if no overriding value is specified. A user-specified value should be provided for models that use units other than kilograms, joules, and degrees Celsius or it is necessary to use a value other than the default." +optional = true +default = 4184.0 + +[blocks.options.fields.latent_heat_vaporization] +type = "double" +longname = "latent heat of vaporization" +description = "latent heat of vaporization is the amount of energy that is required to convert a given quantity of liquid into a gas and is associated with evaporative cooling. While the EST package does not simulate evaporation, multiple other packages in a GWE simulation may. To avoid having to specify the latent heat of vaporization in multiple packages, it is specified in a single location and accessed wherever it is needed. For example, evaporation may occur from the surface of streams or lakes and the energy consumed by the change in phase would be needed in both the SFE and LKE packages. This value is set to 2,453,500 J/kg if no overriding value is specified. A user-specified value should be provided for models that use units other than joules and kilograms or if it is necessary to use a value other than the default." +optional = true +default = 2453500.0 + +[blocks.griddata.fields.porosity] +type = "array" +longname = "porosity" +description = "is the mobile domain porosity, defined as the mobile domain pore volume per mobile domain volume. The GWE model does not support the concept of an immobile domain in the context of heat transport." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay_water] +type = "array" +longname = "aqueous phase decay rate coefficient" +description = "is the rate coefficient for zero-order decay for the aqueous phase of the mobile domain. A negative value indicates heat (energy) production. The dimensions of zero-order decay in the aqueous phase are energy per length cubed (volume of water) per time. Zero-order decay in the aqueous phase will have no effect on simulation results unless ZERO_ORDER_DECAY_WATER is specified in the options block." +optional = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay_solid] +type = "array" +longname = "solid phase decay rate coefficient" +description = "is the rate coefficient for zero-order decay for the solid phase. A negative value indicates heat (energy) production. The dimensions of zero-order decay in the solid phase are energy per mass of solid per time. Zero-order decay in the solid phase will have no effect on simulation results unless ZERO_ORDER_DECAY_SOLID is specified in the options block." +optional = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.heat_capacity_solid] +type = "array" +longname = "heat capacity of the aquifer material" +description = "is the mass-based heat capacity of dry solids (aquifer material). For example, units of J/kg/C may be used (or equivalent)." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.density_solid] +type = "array" +longname = "density of aquifer material" +description = "is a user-specified value of the density of aquifer material not considering the voids. Value will remain fixed for the entire simulation. For example, if working in SI units, values may be entered as kilograms per cubic meter." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ord0_decay_water] +set_in = "ar" +source = "zero_order_decay_water" +type = "logical" + +[memory.ord0_decay_solid] +set_in = "ar" +source = "zero_order_decay_solid" +type = "logical" + +[memory.rhow] +set_in = "ar" +source = "density_water" +type = "double" + +[memory.cpw] +set_in = "ar" +source = "heat_capacity_water" +type = "double" + +[memory.latheatvap] +set_in = "ar" +source = "latent_heat_vaporization" +type = "double" + +[memory.cps] +type = "array" +set_in = "ar" +source = "heat_capacity_solid" +dtype = "double" +shape = [ + "nodes", +] + +[memory.rhos] +type = "array" +set_in = "ar" +source = "density_solid" +dtype = "double" +shape = [ + "nodes", +] + +[memory.porosity] +type = "array" +set_in = "ar" +source = "porosity" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay_water] +type = "array" +set_in = "ar" +source = "decay_water" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay_solid] +type = "array" +set_in = "ar" +source = "decay_solid" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.yaml new file mode 100644 index 00000000..8004561a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-est.yaml @@ -0,0 +1,170 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-est +parent: gwe-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + save_flows: + type: keyword + longname: save calculated flows to budget file + description: keyword to indicate that EST flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + zero_order_decay_water: + type: keyword + longname: activate zero-order decay in aqueous phase + description: is a text keyword to indicate that zero-order decay will occur in the aqueous phase. + That is, decay occurs in the water and is a rate per volume of water only, not per volume of + aquifer (i.e., grid cell). Use of this keyword requires that DECAY_WATER is specified in the + GRIDDATA block. + optional: true + zero_order_decay_solid: + type: keyword + longname: activate zero-order decay in solid phase + description: is a text keyword to indicate that zero-order decay will occur in the solid phase. + That is, decay occurs in the solid and is a rate per mass (not volume) of solid only. Use of + this keyword requires that DECAY_SOLID is specified in the GRIDDATA block. + optional: true + density_water: + type: double + longname: density of water + description: density of water used by calculations related to heat storage and conduction. This + value is set to 1,000 kg/m3 if no overriding value is specified. A user-specified value should + be provided for models that use units other than kilograms and meters or if it is necessary + to use a value other than the default. + optional: true + default: 1000.0 + heat_capacity_water: + type: double + longname: heat capacity of water + description: heat capacity of water used by calculations related to heat storage and conduction. This + value is set to 4,184 J/kg/C if no overriding value is specified. A user-specified value should + be provided for models that use units other than kilograms, joules, and degrees Celsius or it + is necessary to use a value other than the default. + optional: true + default: 4184.0 + latent_heat_vaporization: + type: double + longname: latent heat of vaporization + description: latent heat of vaporization is the amount of energy that is required to convert a + given quantity of liquid into a gas and is associated with evaporative cooling. While the EST + package does not simulate evaporation, multiple other packages in a GWE simulation may. To + avoid having to specify the latent heat of vaporization in multiple packages, it is specified + in a single location and accessed wherever it is needed. For example, evaporation may occur + from the surface of streams or lakes and the energy consumed by the change in phase would be + needed in both the SFE and LKE packages. This value is set to 2,453,500 J/kg if no overriding + value is specified. A user-specified value should be provided for models that use units other + than joules and kilograms or if it is necessary to use a value other than the default. + optional: true + default: 2453500.0 + griddata: + fields: + porosity: + type: array + longname: porosity + description: is the mobile domain porosity, defined as the mobile domain pore volume per mobile + domain volume. The GWE model does not support the concept of an immobile domain in the context + of heat transport. + dtype: double + shape: + - nodes + decay_water: + type: array + longname: aqueous phase decay rate coefficient + description: is the rate coefficient for zero-order decay for the aqueous phase of the mobile + domain. A negative value indicates heat (energy) production. The dimensions of zero-order + decay in the aqueous phase are energy per length cubed (volume of water) per time. Zero-order + decay in the aqueous phase will have no effect on simulation results unless ZERO_ORDER_DECAY_WATER + is specified in the options block. + optional: true + dtype: double + shape: + - nodes + decay_solid: + type: array + longname: solid phase decay rate coefficient + description: is the rate coefficient for zero-order decay for the solid phase. A negative value + indicates heat (energy) production. The dimensions of zero-order decay in the solid phase are + energy per mass of solid per time. Zero-order decay in the solid phase will have no effect on + simulation results unless ZERO_ORDER_DECAY_SOLID is specified in the options block. + optional: true + dtype: double + shape: + - nodes + heat_capacity_solid: + type: array + longname: heat capacity of the aquifer material + description: is the mass-based heat capacity of dry solids (aquifer material). For example, units + of J/kg/C may be used (or equivalent). + dtype: double + shape: + - nodes + density_solid: + type: array + longname: density of aquifer material + description: is a user-specified value of the density of aquifer material not considering the + voids. Value will remain fixed for the entire simulation. For example, if working in SI units, + values may be entered as kilograms per cubic meter. + dtype: double + shape: + - nodes +memory: + ord0_decay_water: + set_in: ar + source: zero_order_decay_water + type: logical + ord0_decay_solid: + set_in: ar + source: zero_order_decay_solid + type: logical + rhow: + set_in: ar + source: density_water + type: double + cpw: + set_in: ar + source: heat_capacity_water + type: double + latheatvap: + set_in: ar + source: latent_heat_vaporization + type: double + cps: + type: array + set_in: ar + source: heat_capacity_solid + dtype: double + shape: + - nodes + rhos: + type: array + set_in: ar + source: density_solid + dtype: double + shape: + - nodes + porosity: + type: array + set_in: ar + source: porosity + dtype: double + shape: + - nodes + decay_water: + type: array + set_in: ar + source: decay_water + dtype: double + shape: + - nodes + decay_solid: + type: array + set_in: ar + source: decay_solid + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.json new file mode 100644 index 00000000..e9971ed8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.json @@ -0,0 +1,63 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-fmi", + "parent": "gwe-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save calculated flow imbalance correction to budget file", + "description": "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "flow_imbalance_correction": { + "type": "keyword", + "longname": "correct for flow imbalance", + "description": "correct for an imbalance in flows by assuming that any residual flow error comes in or leaves at the temperature of the cell. When this option is activated, the GWE Model budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that is added to offset the error caused by an imprecise flow balance. If these terms are not relatively small, the flow model should be rerun with stricter convergence tolerances.", + "optional": true + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "longname": "flowtype list", + "optional": true, + "item": { + "type": "record", + "fields": { + "flowtype": { + "type": "string", + "longname": "flow type", + "description": "is the word GWFBUDGET, GWFHEAD, GWFGRID, GWFMOVER or the name of an advanced GWF stress package from a previous model run. If GWFBUDGET is specified, then the corresponding file must be a budget file. If GWFHEAD is specified, the file must be a head file. If GWFGRID is specified, the file must be a binary grid file. If GWFMOVER is specified, the file must be a mover file. If an advanced GWF stress package name appears then the corresponding file must be the budget file saved by a LAK, SFR, MAW or UZF Package.", + "tagged": false + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing flows. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + } + } + } + } + } + } + }, + "memory": { + "imbalancecorrect": { + "set_in": "ar", + "source": "flow_imbalance_correction", + "type": "logical" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.toml new file mode 100644 index 00000000..5e7b957a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.toml @@ -0,0 +1,47 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-fmi" +parent = "gwe-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flow imbalance correction to budget file" +description = "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.flow_imbalance_correction] +type = "keyword" +longname = "correct for flow imbalance" +description = "correct for an imbalance in flows by assuming that any residual flow error comes in or leaves at the temperature of the cell. When this option is activated, the GWE Model budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that is added to offset the error caused by an imprecise flow balance. If these terms are not relatively small, the flow model should be rerun with stricter convergence tolerances." +optional = true + +[blocks.packagedata.fields.packagedata] +type = "list" +longname = "flowtype list" +optional = true + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.flowtype] +type = "string" +longname = "flow type" +description = "is the word GWFBUDGET, GWFHEAD, GWFGRID, GWFMOVER or the name of an advanced GWF stress package from a previous model run. If GWFBUDGET is specified, then the corresponding file must be a budget file. If GWFHEAD is specified, the file must be a head file. If GWFGRID is specified, the file must be a binary grid file. If GWFMOVER is specified, the file must be a mover file. If an advanced GWF stress package name appears then the corresponding file must be the budget file saved by a LAK, SFR, MAW or UZF Package." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.packagedata.fields.packagedata.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing flows. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[memory.imbalancecorrect] +set_in = "ar" +source = "flow_imbalance_correction" +type = "logical" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.yaml new file mode 100644 index 00000000..a32a420e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-fmi.yaml @@ -0,0 +1,58 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-fmi +parent: gwe-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: save calculated flow imbalance correction to budget file + description: keyword to indicate that FMI flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + flow_imbalance_correction: + type: keyword + longname: correct for flow imbalance + description: 'correct for an imbalance in flows by assuming that any residual flow error comes + in or leaves at the temperature of the cell. When this option is activated, the GWE Model budget + written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These + two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that + is added to offset the error caused by an imprecise flow balance. If these terms are not relatively + small, the flow model should be rerun with stricter convergence tolerances.' + optional: true + packagedata: + fields: + packagedata: + type: list + longname: flowtype list + optional: true + item: + type: record + fields: + flowtype: + type: string + longname: flow type + description: is the word GWFBUDGET, GWFHEAD, GWFGRID, GWFMOVER or the name of an advanced + GWF stress package from a previous model run. If GWFBUDGET is specified, then the corresponding + file must be a budget file. If GWFHEAD is specified, the file must be a head file. If + GWFGRID is specified, the file must be a binary grid file. If GWFMOVER is specified, the + file must be a mover file. If an advanced GWF stress package name appears then the corresponding + file must be the budget file saved by a LAK, SFR, MAW or UZF Package. + tagged: false + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + fname: + type: string + longname: file name + description: is the name of the file containing flows. The path to the file should be included + if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true +memory: + imbalancecorrect: + set_in: ar + source: flow_imbalance_correction + type: logical diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.json new file mode 100644 index 00000000..89535ace --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.json @@ -0,0 +1,65 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-ic", + "parent": "gwe-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting temperature", + "description": "is the initial (starting) temperature---that is, the temperature at the beginning of the GWE Model simulation. STRT must be specified for all GWE Model simulations. One value is read for every model cell.", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.toml new file mode 100644 index 00000000..337d3130 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.toml @@ -0,0 +1,49 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-ic" +parent = "gwe-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting temperature" +description = "is the initial (starting) temperature---that is, the temperature at the beginning of the GWE Model simulation. STRT must be specified for all GWE Model simulations. One value is read for every model cell." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.yaml new file mode 100644 index 00000000..8facc854 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ic.yaml @@ -0,0 +1,53 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-ic +parent: gwe-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + strt: + type: array + longname: starting temperature + description: is the initial (starting) temperature---that is, the temperature at the beginning + of the GWE Model simulation. STRT must be specified for all GWE Model simulations. One value + is read for every model cell. + default: 0.0 + netcdf: true + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.json new file mode 100644 index 00000000..c2a7b848 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.json @@ -0,0 +1,385 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-lke", + "parent": "gwe-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of temperature auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of lake cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_temperature": { + "type": "keyword", + "longname": "print calculated temperatures to listing file", + "description": "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save lake flows to budget file", + "description": "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "temperature_filerecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "lakeno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the lake number associated with the specified PACKAGEDATA data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting lake temperature", + "description": "real value that defines the starting temperature for the lake.", + "tagged": false + }, + "ktf": { + "type": "double", + "longname": "boundary thermal conductivity", + "description": "is the thermal conductivity of the material between the aquifer cell and the lake. The thickness of the material is defined by the variable RBTHCND.", + "tagged": false + }, + "rbthcnd": { + "type": "double", + "longname": "streambed thickness", + "description": "real value that defines the thickness of the lakebed material through which conduction occurs. Must be greater than 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "lake name", + "description": "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "lakeperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "lakeno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the lake number associated with the specified PERIOD data on the line. LAKENO must be greater than zero and less than or equal to NLAKES.", + "tagged": false + }, + "laksetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Lake Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the lake at the calculated temperature of the lake.", + "arms": { + "status": { + "type": "string", + "longname": "lake temperature status", + "description": "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the lake. If a lake is inactive, then there will be no energy fluxes into or out of the lake and the inactive value will be written for the lake temperature. If a lake is constant, then the temperature for the lake will be fixed at the user specified value." + }, + "temperature": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature." + }, + "rainfall": { + "type": "string", + "longname": "rainfall temperature", + "description": "real or character value that defines the rainfall temperature for the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation temperature", + "description": "use of the EVAPORATION keyword is allowed in the LKE package; however, the specified value is not currently used in LKE calculations. Instead, the latent heat of evaporation is multiplied by the simulated evaporation rate for determining the thermal energy lost from a stream reach.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff temperature", + "description": "real or character value that defines the temperature of runoff for the lake. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "ext-inflow": { + "type": "string", + "longname": "ext-inflow temperature", + "description": "real or character value that defines the temperature of external inflow for the lake. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting temperature for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed temperature for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage temperature flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "temprain": { + "type": "array", + "set_in": "rp", + "description": "Rainfall temperature for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempevap": { + "type": "array", + "set_in": "rp", + "description": "Evaporation temperature for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "temproff": { + "type": "array", + "set_in": "rp", + "description": "Runoff temperature for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempiflw": { + "type": "array", + "set_in": "rp", + "description": "External inflow temperature for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ktf": { + "type": "array", + "set_in": "ar", + "source": "ktf", + "description": "Thermal conductivity of the lakebed (E/T/L/Deg).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "rfeatthk": { + "type": "array", + "set_in": "ar", + "source": "rbthcnd", + "description": "Thickness of the lakebed conduction layer (L).", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.toml new file mode 100644 index 00000000..ff68913a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.toml @@ -0,0 +1,347 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-lke" +parent = "gwe-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of temperature auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of lake cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_temperature] +type = "keyword" +longname = "print calculated temperatures to listing file" +description = "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save lake flows to budget file" +description = "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.temperature_filerecord] +type = "record" +optional = true + +[blocks.options.fields.temperature_filerecord.fields.temperature] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.lakeno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the lake number associated with the specified PACKAGEDATA data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting lake temperature" +description = "real value that defines the starting temperature for the lake." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ktf] +type = "double" +longname = "boundary thermal conductivity" +description = "is the thermal conductivity of the material between the aquifer cell and the lake. The thickness of the material is defined by the variable RBTHCND." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rbthcnd] +type = "double" +longname = "streambed thickness" +description = "real value that defines the thickness of the lakebed material through which conduction occurs. Must be greater than 0." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "lake name" +description = "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.lakeperioddata] +type = "list" + +[blocks.period.fields.lakeperioddata.item] +type = "record" + +[blocks.period.fields.lakeperioddata.item.fields.lakeno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the lake number associated with the specified PERIOD data on the line. LAKENO must be greater than zero and less than or equal to NLAKES." +tagged = false + +[blocks.period.fields.lakeperioddata.item.fields.laksetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Lake Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the lake at the calculated temperature of the lake." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.status] +type = "string" +longname = "lake temperature status" +description = "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the lake. If a lake is inactive, then there will be no energy fluxes into or out of the lake and the inactive value will be written for the lake temperature. If a lake is constant, then the temperature for the lake will be fixed at the user specified value." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.temperature] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.rainfall] +type = "string" +longname = "rainfall temperature" +description = "real or character value that defines the rainfall temperature for the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.evaporation] +type = "string" +longname = "evaporation temperature" +description = "use of the EVAPORATION keyword is allowed in the LKE package; however, the specified value is not currently used in LKE calculations. Instead, the latent heat of evaporation is multiplied by the simulated evaporation rate for determining the thermal energy lost from a stream reach." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.runoff] +type = "string" +longname = "runoff temperature" +description = "real or character value that defines the temperature of runoff for the lake. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.ext-inflow] +type = "string" +longname = "ext-inflow temperature" +description = "real or character value that defines the temperature of external inflow for the lake. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting temperature for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed temperature for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage temperature flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.temprain] +type = "array" +set_in = "rp" +description = "Rainfall temperature for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempevap] +type = "array" +set_in = "rp" +description = "Evaporation temperature for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.temproff] +type = "array" +set_in = "rp" +description = "Runoff temperature for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempiflw] +type = "array" +set_in = "rp" +description = "External inflow temperature for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ktf] +type = "array" +set_in = "ar" +source = "ktf" +description = "Thermal conductivity of the lakebed (E/T/L/Deg)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.rfeatthk] +type = "array" +set_in = "ar" +source = "rbthcnd" +description = "Thickness of the lakebed conduction layer (L)." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.yaml new file mode 100644 index 00000000..ba0c5ab2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-lke.yaml @@ -0,0 +1,365 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-lke +parent: gwe-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWE name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of temperature auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated temperatures from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of lake cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of lake information will be written to the listing + file immediately after it is read. + optional: true + print_temperature: + type: keyword + longname: print calculated temperatures to listing file + description: keyword to indicate that the list of lake {#2} will be printed to the listing file + for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of lake flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save lake flows to budget file + description: keyword to indicate that lake flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + temperature_filerecord: + type: record + optional: true + fields: + temperature: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + lakeno: + type: integer + longname: lake number for this entry + description: integer value that defines the lake number associated with the specified PACKAGEDATA + data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. Lake + information must be specified for every lake or the program will terminate with an error. The + program will also terminate with an error if information for a lake is specified more + than once. + tagged: false + strt: + type: double + longname: starting lake temperature + description: real value that defines the starting temperature for the lake. + tagged: false + ktf: + type: double + longname: boundary thermal conductivity + description: is the thermal conductivity of the material between the aquifer cell and the + lake. The thickness of the material is defined by the variable RBTHCND. + tagged: false + rbthcnd: + type: double + longname: streambed thickness + description: real value that defines the thickness of the lakebed material through which + conduction occurs. Must be greater than 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each lake. The values + of auxiliary variables must be present for each lake. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: lake name + description: name of the lake cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + lakeperioddata: + type: list + item: + type: record + fields: + lakeno: + type: integer + longname: lake number for this entry + description: integer value that defines the lake number associated with the specified PERIOD + data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. + tagged: false + laksetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the LAKSETTING string include: STATUS, TEMPERATURE, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature + associated with the corresponding flow terms. Temperatures cannot be specified for all + flow terms. For example, the Lake Package supports a ''WITHDRAWAL'' flow term. If this + withdrawal term is active, then water will be withdrawn from the lake at the calculated + temperature of the lake.' + arms: + status: + type: string + longname: lake temperature status + description: keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated + for the lake. If a lake is inactive, then there will be no energy fluxes into or + out of the lake and the inactive value will be written for the lake temperature. If + a lake is constant, then the temperature for the lake will be fixed at the user specified + value. + temperature: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + rainfall: + type: string + longname: rainfall temperature + description: real or character value that defines the rainfall temperature for the lake. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name + in place of a numeric value. + time_series: true + evaporation: + type: string + longname: evaporation temperature + description: use of the EVAPORATION keyword is allowed in the LKE package; however, + the specified value is not currently used in LKE calculations. Instead, the latent + heat of evaporation is multiplied by the simulated evaporation rate for determining + the thermal energy lost from a stream reach. + time_series: true + runoff: + type: string + longname: runoff temperature + description: real or character value that defines the temperature of runoff for the + lake. Users are free to use whatever temperature scale they want, which might include + negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the + 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + ext-inflow: + type: string + longname: ext-inflow temperature + description: real or character value that defines the temperature of external inflow + for the lake. Users are free to use whatever temperature scale they want, which might + include negative temperatures. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting temperature for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current temperature for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Temperature from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed temperature for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage temperature flow contribution for each control volume. + dtype: double + shape: + - ncv + temprain: + type: array + set_in: rp + description: Rainfall temperature for each lake. + dtype: double + shape: + - ncv + tempevap: + type: array + set_in: rp + description: Evaporation temperature for each lake. + dtype: double + shape: + - ncv + temproff: + type: array + set_in: rp + description: Runoff temperature for each lake. + dtype: double + shape: + - ncv + tempiflw: + type: array + set_in: rp + description: External inflow temperature for each lake. + dtype: double + shape: + - ncv + ktf: + type: array + set_in: ar + source: ktf + description: Thermal conductivity of the lakebed (E/T/L/Deg). + dtype: double + shape: + - ncv + rfeatthk: + type: array + set_in: ar + source: rbthcnd + description: Thickness of the lakebed conduction layer (L). + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.json new file mode 100644 index 00000000..21e02e16 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.json @@ -0,0 +1,54 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-mve", + "parent": "gwe-nam", + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of mover information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save lake flows to budget file", + "description": "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.toml new file mode 100644 index 00000000..c49bfa5a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.toml @@ -0,0 +1,42 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-mve" +parent = "gwe-nam" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of mover information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save lake flows to budget file" +description = "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.yaml new file mode 100644 index 00000000..8a4a879e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mve.yaml @@ -0,0 +1,45 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-mve +parent: gwe-nam +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of mover information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of lake flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save lake flows to budget file + description: keyword to indicate that lake flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.json new file mode 100644 index 00000000..d4cca815 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.json @@ -0,0 +1,340 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-mwe", + "parent": "gwe-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of temperature auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of well cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of well information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_temperature": { + "type": "keyword", + "longname": "print calculated temperatures to listing file", + "description": "keyword to indicate that the list of well {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "temperature_filerecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "mawno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the well number associated with the specified PACKAGEDATA data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. Well information must be specified for every well or the program will terminate with an error. The program will also terminate with an error if information for a well is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting well temperature", + "description": "real value that defines the starting temperature for the well.", + "tagged": false + }, + "ktf": { + "type": "double", + "longname": "thermal conductivity of the feature", + "description": "is the thermal conductivity of the material between the aquifer cell and the feature. The thickness of the material is defined by the variable FTHK.", + "tagged": false + }, + "fthk": { + "type": "double", + "longname": "thickness of the well feature", + "description": "real value that defines the thickness of the material through which conduction occurs. Must be greater than 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "mweperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "mawno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the well number associated with the specified PERIOD data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS.", + "tagged": false + }, + "mwesetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MWESETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature of associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Multi-Aquifer Well Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the well at the calculated temperature of the well.", + "arms": { + "status": { + "type": "string", + "longname": "well temperature status", + "description": "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the well. If a well is inactive, then there will be no solute mass fluxes into or out of the well and the inactive value will be written for the well temperature. If a well is constant, then the temperature for the well will be fixed at the user specified value." + }, + "temperature": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature." + }, + "rate": { + "type": "string", + "longname": "well injection temperature", + "description": "real or character value that defines the injection temperature $(e.g.,:^{circ}C:or:^{circ}F)$ for the well. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting temperature for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed temperature for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage temperature flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "temprate": { + "type": "array", + "set_in": "rp", + "description": "Pumping-rate temperature for each multi-aquifer well.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ktf": { + "type": "array", + "set_in": "ar", + "source": "ktf", + "description": "Thermal conductivity of the well casing (E/T/L/Deg).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "rfeatthk": { + "type": "array", + "set_in": "ar", + "source": "fthk", + "description": "Thickness of the well casing conduction layer (L).", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.toml new file mode 100644 index 00000000..106548d9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.toml @@ -0,0 +1,302 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-mwe" +parent = "gwe-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of temperature auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of well cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of well information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_temperature] +type = "keyword" +longname = "print calculated temperatures to listing file" +description = "keyword to indicate that the list of well {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.temperature_filerecord] +type = "record" +optional = true + +[blocks.options.fields.temperature_filerecord.fields.temperature] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.mawno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the well number associated with the specified PACKAGEDATA data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. Well information must be specified for every well or the program will terminate with an error. The program will also terminate with an error if information for a well is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting well temperature" +description = "real value that defines the starting temperature for the well." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ktf] +type = "double" +longname = "thermal conductivity of the feature" +description = "is the thermal conductivity of the material between the aquifer cell and the feature. The thickness of the material is defined by the variable FTHK." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.fthk] +type = "double" +longname = "thickness of the well feature" +description = "real value that defines the thickness of the material through which conduction occurs. Must be greater than 0." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.mweperioddata] +type = "list" + +[blocks.period.fields.mweperioddata.item] +type = "record" + +[blocks.period.fields.mweperioddata.item.fields.mawno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the well number associated with the specified PERIOD data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS." +tagged = false + +[blocks.period.fields.mweperioddata.item.fields.mwesetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MWESETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature of associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Multi-Aquifer Well Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the well at the calculated temperature of the well." + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.status] +type = "string" +longname = "well temperature status" +description = "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the well. If a well is inactive, then there will be no solute mass fluxes into or out of the well and the inactive value will be written for the well temperature. If a well is constant, then the temperature for the well will be fixed at the user specified value." + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.temperature] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.rate] +type = "string" +longname = "well injection temperature" +description = "real or character value that defines the injection temperature $(e.g.,:^{circ}C:or:^{circ}F)$ for the well. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.mweperioddata.item.fields.mwesetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting temperature for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed temperature for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage temperature flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.temprate] +type = "array" +set_in = "rp" +description = "Pumping-rate temperature for each multi-aquifer well." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ktf] +type = "array" +set_in = "ar" +source = "ktf" +description = "Thermal conductivity of the well casing (E/T/L/Deg)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.rfeatthk] +type = "array" +set_in = "ar" +source = "fthk" +description = "Thickness of the well casing conduction layer (L)." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.yaml new file mode 100644 index 00000000..c7d7f62b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-mwe.yaml @@ -0,0 +1,318 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-mwe +parent: gwe-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWE name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of temperature auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated temperatures from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of well cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of well information will be written to the listing + file immediately after it is read. + optional: true + print_temperature: + type: keyword + longname: print calculated temperatures to listing file + description: keyword to indicate that the list of well {#2} will be printed to the listing file + for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of well flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that well flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + temperature_filerecord: + type: record + optional: true + fields: + temperature: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + mawno: + type: integer + longname: well number for this entry + description: integer value that defines the well number associated with the specified PACKAGEDATA + data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. + Well information must be specified for every well or the program will terminate with an + error. The program will also terminate with an error if information for a well is specified + more than once. + tagged: false + strt: + type: double + longname: starting well temperature + description: real value that defines the starting temperature for the well. + tagged: false + ktf: + type: double + longname: thermal conductivity of the feature + description: is the thermal conductivity of the material between the aquifer cell and the + feature. The thickness of the material is defined by the variable FTHK. + tagged: false + fthk: + type: double + longname: thickness of the well feature + description: real value that defines the thickness of the material through which conduction + occurs. Must be greater than 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each well. The values + of auxiliary variables must be present for each well. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the well cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + mweperioddata: + type: list + item: + type: record + fields: + mawno: + type: integer + longname: well number for this entry + description: integer value that defines the well number associated with the specified PERIOD + data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. + tagged: false + mwesetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the MWESETTING string include: STATUS, TEMPERATURE, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature + of associated with the corresponding flow terms. Temperatures cannot be specified for + all flow terms. For example, the Multi-Aquifer Well Package supports a ''WITHDRAWAL'' + flow term. If this withdrawal term is active, then water will be withdrawn from the well + at the calculated temperature of the well.' + arms: + status: + type: string + longname: well temperature status + description: keyword option to define well status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated + for the well. If a well is inactive, then there will be no solute mass fluxes into + or out of the well and the inactive value will be written for the well temperature. If + a well is constant, then the temperature for the well will be fixed at the user specified + value. + temperature: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + rate: + type: string + longname: well injection temperature + description: real or character value that defines the injection temperature $(e.g.,:^{circ}C:or:^{circ}F)$ + for the well. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting temperature for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current temperature for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Temperature from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed temperature for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage temperature flow contribution for each control volume. + dtype: double + shape: + - ncv + temprate: + type: array + set_in: rp + description: Pumping-rate temperature for each multi-aquifer well. + dtype: double + shape: + - ncv + ktf: + type: array + set_in: ar + source: ktf + description: Thermal conductivity of the well casing (E/T/L/Deg). + dtype: double + shape: + - ncv + rfeatthk: + type: array + set_in: ar + source: fthk + description: Thickness of the well casing conduction layer (L). + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.json new file mode 100644 index 00000000..6f4bbbc8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.json @@ -0,0 +1,206 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "gwe-nam", + "parent": "sim-nam", + "dependent_variable": "temperature", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this GWE model. If not specified, then the name of the list file will be the basename of the GWE model name file and the '.lst' extension. For example, if the GWE name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "dependent_variable_scaling": { + "type": "keyword", + "longname": "flag to scale X and RHS", + "description": "flag to scale X and RHS to avoid very large positive or negative dependent variable values", + "optional": true + }, + "nc_mesh2d_filerecord": { + "type": "record", + "description": "NetCDF layered mesh fileout record.", + "optional": true, + "fields": { + "netcdf_mesh2d": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a layered mesh NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_structured_filerecord": { + "type": "record", + "description": "NetCDF structured fileout record.", + "optional": true, + "fields": { + "netcdf_structured": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a structured NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_filerecord": { + "type": "record", + "description": "NetCDF filerecord", + "optional": true, + "fields": { + "netcdf": { + "type": "file", + "longname": "netcdf keyword", + "description": "keyword to specify that record corresponds to a NetCDF input file.", + "mode": "filein" + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwe}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWE Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "idv_scale": { + "set_in": "ar", + "source": "dependent_variable_scaling", + "type": "integer" + }, + "netcdf_struct": { + "set_in": "ar", + "source": "netcdf_structured", + "type": "logical" + }, + "netcdf_fname": { + "set_in": "ar", + "type": "string" + }, + "x": { + "type": "array", + "set_in": "ca", + "description": "Temperature for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "TEMPERATURE", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.toml new file mode 100644 index 00000000..7b86fe77 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.toml @@ -0,0 +1,182 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "gwe-nam" +parent = "sim-nam" +dependent_variable = "temperature" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this GWE model. If not specified, then the name of the list file will be the basename of the GWE model name file and the '.lst' extension. For example, if the GWE name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.dependent_variable_scaling] +type = "keyword" +longname = "flag to scale X and RHS" +description = "flag to scale X and RHS to avoid very large positive or negative dependent variable values" +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord] +type = "record" +description = "NetCDF layered mesh fileout record." +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord.fields.netcdf_mesh2d] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a layered mesh NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_structured_filerecord] +type = "record" +description = "NetCDF structured fileout record." +optional = true + +[blocks.options.fields.nc_structured_filerecord.fields.netcdf_structured] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a structured NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_filerecord] +type = "record" +description = "NetCDF filerecord" +optional = true + +[blocks.options.fields.nc_filerecord.fields.netcdf] +type = "file" +longname = "netcdf keyword" +description = "keyword to specify that record corresponds to a NetCDF input file." +mode = "filein" + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwe}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWE Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.idv_scale] +set_in = "ar" +source = "dependent_variable_scaling" +type = "integer" + +[memory.netcdf_struct] +set_in = "ar" +source = "netcdf_structured" +type = "logical" + +[memory.netcdf_fname] +set_in = "ar" +type = "string" + +[memory.x] +type = "array" +set_in = "ca" +description = "Temperature for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "TEMPERATURE" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.yaml new file mode 100644 index 00000000..aba0a5ce --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-nam.yaml @@ -0,0 +1,185 @@ +type: model +schema_version: 2.0.0.dev3 +name: gwe-nam +parent: sim-nam +dependent_variable: temperature +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this GWE model. If not specified, then + the name of the list file will be the basename of the GWE model name file and the '.lst' extension. For + example, if the GWE name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + dependent_variable_scaling: + type: keyword + longname: flag to scale X and RHS + description: flag to scale X and RHS to avoid very large positive or negative dependent variable + values + optional: true + nc_mesh2d_filerecord: + type: record + description: NetCDF layered mesh fileout record. + optional: true + fields: + netcdf_mesh2d: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a layered mesh NetCDF file. + mode: fileout + nc_structured_filerecord: + type: record + description: NetCDF structured fileout record. + optional: true + fields: + netcdf_structured: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a structured NetCDF file. + mode: fileout + nc_filerecord: + type: record + description: NetCDF filerecord + optional: true + fields: + netcdf: + type: file + longname: netcdf keyword + description: keyword to specify that record corresponds to a NetCDF input file. + mode: filein + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-gwe}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single GWE Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + idv_scale: + set_in: ar + source: dependent_variable_scaling + type: integer + netcdf_struct: + set_in: ar + source: netcdf_structured + type: logical + netcdf_fname: + set_in: ar + type: string + x: + type: array + set_in: ca + description: Temperature for each model cell. Checked in from the solution-level dependent-variable + vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard + iteration (CA). API-written values serve as initial guesses and are overwritten by the solver. + obs_type: TEMPERATURE + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json new file mode 100644 index 00000000..97027392 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.json @@ -0,0 +1,205 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-oc", + "parent": "gwe-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "temperature_filerecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "file", + "longname": "temperature keyword", + "description": "keyword to specify that record corresponds to temperature.", + "mode": "fileout" + } + } + }, + "temperatureprintrecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "keyword", + "longname": "temperature keyword", + "description": "keyword to specify that record corresponds to temperature." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or TEMPERATURE.", + "tagged": false, + "valid": [ + "TEMPERATURE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or TEMPERATURE.", + "tagged": false, + "valid": [ + "TEMPERATURE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "tempfile": { + "set_in": "ar", + "type": "string" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml new file mode 100644 index 00000000..2b2aa43b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.toml @@ -0,0 +1,171 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-oc" +parent = "gwe-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.temperature_filerecord] +type = "record" +optional = true + +[blocks.options.fields.temperature_filerecord.fields.temperature] +type = "file" +longname = "temperature keyword" +description = "keyword to specify that record corresponds to temperature." +mode = "fileout" + +[blocks.options.fields.temperatureprintrecord] +type = "record" +optional = true + +[blocks.options.fields.temperatureprintrecord.fields.temperature] +type = "keyword" +longname = "temperature keyword" +description = "keyword to specify that record corresponds to temperature." + +[blocks.options.fields.temperatureprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.temperatureprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.temperatureprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.temperatureprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.temperatureprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.temperatureprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or TEMPERATURE." +tagged = false +valid = [ + "TEMPERATURE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or TEMPERATURE." +tagged = false +valid = [ + "TEMPERATURE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" + +[memory.tempfile] +set_in = "ar" +type = "string" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml new file mode 100644 index 00000000..72213415 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-oc.yaml @@ -0,0 +1,164 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-oc +parent: gwe-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + temperature_filerecord: + type: record + optional: true + fields: + temperature: + type: file + longname: temperature keyword + description: keyword to specify that record corresponds to temperature. + mode: fileout + temperatureprintrecord: + type: record + optional: true + fields: + temperature: + type: keyword + longname: temperature keyword + description: keyword to specify that record corresponds to temperature. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or TEMPERATURE. + tagged: false + valid: + - TEMPERATURE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or TEMPERATURE. + tagged: false + valid: + - TEMPERATURE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 +memory: + tempfile: + set_in: ar + type: string diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.json new file mode 100644 index 00000000..6c8849f5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.json @@ -0,0 +1,405 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-sfe", + "parent": "gwe-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of temperature auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable provided in the corresponding flow package (i.e., FLOW_PACKAGE_NAME). If specified, then the simulated temperatures from this advanced energy transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced energy transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of reach cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of reach information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_temperature": { + "type": "keyword", + "longname": "print calculated temperature to listing file", + "description": "keyword to indicate that the list of reach {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save reach flows to budget file", + "description": "keyword to indicate that reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "temperature_filerecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "file", + "longname": "temperature keyword", + "description": "keyword to specify that record corresponds to temperature.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "rno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the reach number associated with the specified PACKAGEDATA data on the line. RNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting reach temperature", + "description": "real value that defines the starting temperature for the reach.", + "tagged": false + }, + "ktf": { + "type": "double", + "longname": "boundary thermal conductivity", + "description": "is the thermal conductivity of the material between the aquifer cell and the stream reach. The thickness of the material is defined by the variable RBTHCND.", + "tagged": false + }, + "rbthcnd": { + "type": "double", + "longname": "streambed thickness", + "description": "real value that defines the thickness of the streambed material through which conduction occurs. Must be greater than 0.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each reach. The values of auxiliary variables must be present for each reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "reachperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "rno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the reach number associated with the specified PERIOD data on the line. RNO must be greater than zero and less than or equal to NREACHES.", + "tagged": false + }, + "reachsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the REACHSETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature of associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Streamflow Package supports a 'DIVERSION' flow term. Diversion water will be routed using the calculated temperature of the reach.", + "arms": { + "status": { + "type": "string", + "longname": "reach temperature status", + "description": "keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the reach. If a reach is inactive, then there will be no energy fluxes into or out of the reach and the inactive value will be written for the reach temperature. If a reach is constant, then the temperature for the reach will be fixed at the user specified value." + }, + "temperature": { + "type": "keyword", + "longname": "temperature keyword", + "description": "keyword to specify that record corresponds to temperature." + }, + "rainfall": { + "type": "string", + "longname": "rainfall temperature", + "description": "real or character value that defines the rainfall temperature $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation temperature", + "description": "use of the EVAPORATION keyword is allowed in the SFE package; however, the specified value is not currently used in SFE calculations. Instead, the latent heat of evaporation is multiplied by the simulated evaporation rate for determining the thermal energy lost from a stream reach.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff temperature", + "description": "real or character value that defines the temperature of runoff $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "inflow": { + "type": "string", + "longname": "inflow temperature", + "description": "real or character value that defines the temperature of inflow $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting temperature for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed temperature for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage temperature flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "temprain": { + "type": "array", + "set_in": "rp", + "description": "Rainfall temperature for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempevap": { + "type": "array", + "set_in": "rp", + "description": "Evaporation temperature for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "temproff": { + "type": "array", + "set_in": "rp", + "description": "Runoff temperature for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempiflw": { + "type": "array", + "set_in": "rp", + "description": "Inflow temperature for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "vnew": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Reach water volume at the end of the current time step.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "vold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Reach water volume at the start of the current time step.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ktf": { + "type": "array", + "set_in": "ar", + "source": "ktf", + "description": "Thermal conductivity of the streambed (E/T/L/Deg).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "rfeatthk": { + "type": "array", + "set_in": "ar", + "source": "rbthcnd", + "description": "Thickness of the streambed conduction layer (L).", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.toml new file mode 100644 index 00000000..fa7e8b4b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.toml @@ -0,0 +1,367 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-sfe" +parent = "gwe-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of temperature auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable provided in the corresponding flow package (i.e., FLOW_PACKAGE_NAME). If specified, then the simulated temperatures from this advanced energy transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced energy transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of reach cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_temperature] +type = "keyword" +longname = "print calculated temperature to listing file" +description = "keyword to indicate that the list of reach {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save reach flows to budget file" +description = "keyword to indicate that reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.temperature_filerecord] +type = "record" +optional = true + +[blocks.options.fields.temperature_filerecord.fields.temperature] +type = "file" +longname = "temperature keyword" +description = "keyword to specify that record corresponds to temperature." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.rno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the reach number associated with the specified PACKAGEDATA data on the line. RNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting reach temperature" +description = "real value that defines the starting temperature for the reach." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ktf] +type = "double" +longname = "boundary thermal conductivity" +description = "is the thermal conductivity of the material between the aquifer cell and the stream reach. The thickness of the material is defined by the variable RBTHCND." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rbthcnd] +type = "double" +longname = "streambed thickness" +description = "real value that defines the thickness of the streambed material through which conduction occurs. Must be greater than 0." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each reach. The values of auxiliary variables must be present for each reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.reachperioddata] +type = "list" + +[blocks.period.fields.reachperioddata.item] +type = "record" + +[blocks.period.fields.reachperioddata.item.fields.rno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the reach number associated with the specified PERIOD data on the line. RNO must be greater than zero and less than or equal to NREACHES." +tagged = false + +[blocks.period.fields.reachperioddata.item.fields.reachsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the REACHSETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature of associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Streamflow Package supports a 'DIVERSION' flow term. Diversion water will be routed using the calculated temperature of the reach." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.status] +type = "string" +longname = "reach temperature status" +description = "keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the reach. If a reach is inactive, then there will be no energy fluxes into or out of the reach and the inactive value will be written for the reach temperature. If a reach is constant, then the temperature for the reach will be fixed at the user specified value." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.temperature] +type = "keyword" +longname = "temperature keyword" +description = "keyword to specify that record corresponds to temperature." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.rainfall] +type = "string" +longname = "rainfall temperature" +description = "real or character value that defines the rainfall temperature $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.evaporation] +type = "string" +longname = "evaporation temperature" +description = "use of the EVAPORATION keyword is allowed in the SFE package; however, the specified value is not currently used in SFE calculations. Instead, the latent heat of evaporation is multiplied by the simulated evaporation rate for determining the thermal energy lost from a stream reach." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.runoff] +type = "string" +longname = "runoff temperature" +description = "real or character value that defines the temperature of runoff $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.inflow] +type = "string" +longname = "inflow temperature" +description = "real or character value that defines the temperature of inflow $(e.g.,:^{circ}C:or:^{circ}F)$ for the reach. Users are free to use whatever temperature scale they want, which might include negative temperatures. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting temperature for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed temperature for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage temperature flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.temprain] +type = "array" +set_in = "rp" +description = "Rainfall temperature for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempevap] +type = "array" +set_in = "rp" +description = "Evaporation temperature for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.temproff] +type = "array" +set_in = "rp" +description = "Runoff temperature for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempiflw] +type = "array" +set_in = "rp" +description = "Inflow temperature for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.vnew] +type = "array" +readonly = true +set_in = "cq" +description = "Reach water volume at the end of the current time step." +dtype = "double" +shape = [ + "ncv", +] + +[memory.vold] +type = "array" +readonly = true +set_in = "ad" +description = "Reach water volume at the start of the current time step." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ktf] +type = "array" +set_in = "ar" +source = "ktf" +description = "Thermal conductivity of the streambed (E/T/L/Deg)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.rfeatthk] +type = "array" +set_in = "ar" +source = "rbthcnd" +description = "Thickness of the streambed conduction layer (L)." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.yaml new file mode 100644 index 00000000..8cc00e7a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-sfe.yaml @@ -0,0 +1,381 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-sfe +parent: gwe-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWE name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of temperature auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable provided in the corresponding + flow package (i.e., FLOW_PACKAGE_NAME). If specified, then the simulated temperatures from + this advanced energy transport package will be copied into the auxiliary variable specified + with this name. Note that the flow package must have an auxiliary variable with this name or + the program will terminate with an error. If the flows for this advanced energy transport package + are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of reach cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of reach information will be written to the listing + file immediately after it is read. + optional: true + print_temperature: + type: keyword + longname: print calculated temperature to listing file + description: keyword to indicate that the list of reach {#2} will be printed to the listing file + for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of reach flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save reach flows to budget file + description: keyword to indicate that reach flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + temperature_filerecord: + type: record + optional: true + fields: + temperature: + type: file + longname: temperature keyword + description: keyword to specify that record corresponds to temperature. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + rno: + type: integer + longname: reach number for this entry + description: integer value that defines the reach number associated with the specified PACKAGEDATA + data on the line. RNO must be greater than zero and less than or equal to NREACHES. Reach + information must be specified for every reach or the program will terminate with an error. The + program will also terminate with an error if information for a reach is specified more + than once. + tagged: false + strt: + type: double + longname: starting reach temperature + description: real value that defines the starting temperature for the reach. + tagged: false + ktf: + type: double + longname: boundary thermal conductivity + description: is the thermal conductivity of the material between the aquifer cell and the + stream reach. The thickness of the material is defined by the variable RBTHCND. + tagged: false + rbthcnd: + type: double + longname: streambed thickness + description: real value that defines the thickness of the streambed material through which + conduction occurs. Must be greater than 0. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each reach. The values + of auxiliary variables must be present for each reach. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the reach cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + reachperioddata: + type: list + item: + type: record + fields: + rno: + type: integer + longname: reach number for this entry + description: integer value that defines the reach number associated with the specified PERIOD + data on the line. RNO must be greater than zero and less than or equal to NREACHES. + tagged: false + reachsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the REACHSETTING string include: STATUS, TEMPERATURE, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature + of associated with the corresponding flow terms. Temperatures cannot be specified for + all flow terms. For example, the Streamflow Package supports a ''DIVERSION'' flow term. Diversion + water will be routed using the calculated temperature of the reach.' + arms: + status: + type: string + longname: reach temperature status + description: keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated + for the reach. If a reach is inactive, then there will be no energy fluxes into or + out of the reach and the inactive value will be written for the reach temperature. If + a reach is constant, then the temperature for the reach will be fixed at the user + specified value. + temperature: + type: keyword + longname: temperature keyword + description: keyword to specify that record corresponds to temperature. + rainfall: + type: string + longname: rainfall temperature + description: real or character value that defines the rainfall temperature $(e.g.,:^{circ}C:or:^{circ}F)$ + for the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + time_series: true + evaporation: + type: string + longname: evaporation temperature + description: use of the EVAPORATION keyword is allowed in the SFE package; however, + the specified value is not currently used in SFE calculations. Instead, the latent + heat of evaporation is multiplied by the simulated evaporation rate for determining + the thermal energy lost from a stream reach. + time_series: true + runoff: + type: string + longname: runoff temperature + description: real or character value that defines the temperature of runoff $(e.g.,:^{circ}C:or:^{circ}F)$ + for the reach. Users are free to use whatever temperature scale they want, which + might include negative temperatures. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + time_series: true + inflow: + type: string + longname: inflow temperature + description: real or character value that defines the temperature of inflow $(e.g.,:^{circ}C:or:^{circ}F)$ + for the reach. Users are free to use whatever temperature scale they want, which might + include negative temperatures. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting temperature for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current temperature for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Temperature from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed temperature for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage temperature flow contribution for each control volume. + dtype: double + shape: + - ncv + temprain: + type: array + set_in: rp + description: Rainfall temperature for each reach. + dtype: double + shape: + - ncv + tempevap: + type: array + set_in: rp + description: Evaporation temperature for each reach. + dtype: double + shape: + - ncv + temproff: + type: array + set_in: rp + description: Runoff temperature for each reach. + dtype: double + shape: + - ncv + tempiflw: + type: array + set_in: rp + description: Inflow temperature for each reach. + dtype: double + shape: + - ncv + vnew: + type: array + readonly: true + set_in: cq + description: Reach water volume at the end of the current time step. + dtype: double + shape: + - ncv + vold: + type: array + readonly: true + set_in: ad + description: Reach water volume at the start of the current time step. + dtype: double + shape: + - ncv + ktf: + type: array + set_in: ar + source: ktf + description: Thermal conductivity of the streambed (E/T/L/Deg). + dtype: double + shape: + - ncv + rfeatthk: + type: array + set_in: ar + source: rbthcnd + description: Thickness of the streambed conduction layer (L). + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.json new file mode 100644 index 00000000..697ac71c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.json @@ -0,0 +1,103 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-ssm", + "parent": "gwe-nam", + "blocks": { + "options": { + "fields": { + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of SSM flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save calculated flows to budget file", + "description": "keyword to indicate that SSM flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + } + } + }, + "sources": { + "fields": { + "sources": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "pname": { + "type": "string", + "longname": "package name", + "description": "name of the flow package for which an auxiliary variable contains a source temperature. If this flow package is represented using an advanced transport package (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified here.", + "tagged": false + }, + "srctype": { + "type": "string", + "longname": "source type", + "description": "keyword indicating how temperature will be assigned for sources and sinks. Keyword must be specified as either AUX or AUXMIXED. For both options the user must provide an auxiliary variable in the corresponding flow package. The auxiliary variable must have the same name as the AUXNAME value that follows. If the AUX keyword is specified, then the auxiliary variable specified by the user will be assigned as the temperature value for groundwater sources (flows with a positive sign). For negative flow rates (sinks), groundwater will be withdrawn from the cell at the simulated temperature of the cell. The AUXMIXED option provides an alternative method for how to determine the temperature of sinks. If the cell temperature is larger than the user-specified auxiliary temperature, then the temperature of groundwater withdrawn from the cell will be assigned as the user-specified temperature. Alternatively, if the user-specified auxiliary temperature is larger than the cell temperature, then groundwater will be withdrawn at the cell temperature. Thus, the AUXMIXED option is designed to work with the Evapotranspiration (EVT) and Recharge (RCH) Packages where water may be withdrawn at a temperature that is less than the cell temperature.", + "tagged": false + }, + "auxname": { + "type": "string", + "longname": "auxiliary variable name", + "description": "name of the auxiliary variable in the package PNAME. This auxiliary variable must exist and be specified by the user in that package. The values in this auxiliary variable will be used to set the temperature associated with the flows for that boundary package.", + "tagged": false + } + } + } + } + } + }, + "fileinput": { + "fields": { + "fileinput": { + "type": "list", + "optional": true, + "item": { + "type": "record", + "fields": { + "pname": { + "type": "string", + "longname": "package name", + "description": "name of the flow package for which an auxiliary variable contains a source temperature. If this flow package is represented using an advanced transport package (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified here.", + "tagged": false + }, + "spc6": { + "type": "keyword", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a source sink mixing input file." + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "spc6_filename": { + "type": "string", + "longname": "spc file name", + "description": "character string that defines the path and filename for the file containing source and sink input data for the flow package. The SPC6_FILENAME file is a flexible input file that allows temperatures to be specified by stress period and with time series. Instructions for creating the SPC6_FILENAME input file are provided in the next section on file input for boundary temperatures.", + "tagged": false, + "case_sensitive": true + }, + "mixed": { + "type": "keyword", + "longname": "mixed keyword", + "description": "keyword to specify that these stress package boundaries will have the mixed condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED condition allows for water to be withdrawn at a temperature that is less than the cell temperature. It is intended primarily for representing evapotranspiration.", + "optional": true + } + } + } + } + } + } + }, + "memory": { + "pname_sources": { + "source": "pname", + "type": "string" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.toml new file mode 100644 index 00000000..088dc7e5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.toml @@ -0,0 +1,81 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-ssm" +parent = "gwe-nam" + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of SSM flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flows to budget file" +description = "keyword to indicate that SSM flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.sources.fields.sources] +type = "list" +longname = "package list" + +[blocks.sources.fields.sources.item] +type = "record" + +[blocks.sources.fields.sources.item.fields.pname] +type = "string" +longname = "package name" +description = "name of the flow package for which an auxiliary variable contains a source temperature. If this flow package is represented using an advanced transport package (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified here." +tagged = false + +[blocks.sources.fields.sources.item.fields.srctype] +type = "string" +longname = "source type" +description = "keyword indicating how temperature will be assigned for sources and sinks. Keyword must be specified as either AUX or AUXMIXED. For both options the user must provide an auxiliary variable in the corresponding flow package. The auxiliary variable must have the same name as the AUXNAME value that follows. If the AUX keyword is specified, then the auxiliary variable specified by the user will be assigned as the temperature value for groundwater sources (flows with a positive sign). For negative flow rates (sinks), groundwater will be withdrawn from the cell at the simulated temperature of the cell. The AUXMIXED option provides an alternative method for how to determine the temperature of sinks. If the cell temperature is larger than the user-specified auxiliary temperature, then the temperature of groundwater withdrawn from the cell will be assigned as the user-specified temperature. Alternatively, if the user-specified auxiliary temperature is larger than the cell temperature, then groundwater will be withdrawn at the cell temperature. Thus, the AUXMIXED option is designed to work with the Evapotranspiration (EVT) and Recharge (RCH) Packages where water may be withdrawn at a temperature that is less than the cell temperature." +tagged = false + +[blocks.sources.fields.sources.item.fields.auxname] +type = "string" +longname = "auxiliary variable name" +description = "name of the auxiliary variable in the package PNAME. This auxiliary variable must exist and be specified by the user in that package. The values in this auxiliary variable will be used to set the temperature associated with the flows for that boundary package." +tagged = false + +[blocks.fileinput.fields.fileinput] +type = "list" +optional = true + +[blocks.fileinput.fields.fileinput.item] +type = "record" + +[blocks.fileinput.fields.fileinput.item.fields.pname] +type = "string" +longname = "package name" +description = "name of the flow package for which an auxiliary variable contains a source temperature. If this flow package is represented using an advanced transport package (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified here." +tagged = false + +[blocks.fileinput.fields.fileinput.item.fields.spc6] +type = "keyword" +longname = "head keyword" +description = "keyword to specify that record corresponds to a source sink mixing input file." + +[blocks.fileinput.fields.fileinput.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.fileinput.fields.fileinput.item.fields.spc6_filename] +type = "string" +longname = "spc file name" +description = "character string that defines the path and filename for the file containing source and sink input data for the flow package. The SPC6_FILENAME file is a flexible input file that allows temperatures to be specified by stress period and with time series. Instructions for creating the SPC6_FILENAME input file are provided in the next section on file input for boundary temperatures." +tagged = false +case_sensitive = true + +[blocks.fileinput.fields.fileinput.item.fields.mixed] +type = "keyword" +longname = "mixed keyword" +description = "keyword to specify that these stress package boundaries will have the mixed condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED condition allows for water to be withdrawn at a temperature that is less than the cell temperature. It is intended primarily for representing evapotranspiration." +optional = true + +[memory.pname_sources] +source = "pname" +type = "string" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.yaml new file mode 100644 index 00000000..12863965 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ssm.yaml @@ -0,0 +1,110 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-ssm +parent: gwe-nam +blocks: + options: + fields: + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of SSM flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save calculated flows to budget file + description: keyword to indicate that SSM flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + sources: + fields: + sources: + type: list + longname: package list + item: + type: record + fields: + pname: + type: string + longname: package name + description: name of the flow package for which an auxiliary variable contains a source + temperature. If this flow package is represented using an advanced transport package + (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified + here. + tagged: false + srctype: + type: string + longname: source type + description: keyword indicating how temperature will be assigned for sources and sinks. Keyword + must be specified as either AUX or AUXMIXED. For both options the user must provide an + auxiliary variable in the corresponding flow package. The auxiliary variable must have + the same name as the AUXNAME value that follows. If the AUX keyword is specified, then + the auxiliary variable specified by the user will be assigned as the temperature value + for groundwater sources (flows with a positive sign). For negative flow rates (sinks), + groundwater will be withdrawn from the cell at the simulated temperature of the cell. The + AUXMIXED option provides an alternative method for how to determine the temperature of + sinks. If the cell temperature is larger than the user-specified auxiliary temperature, + then the temperature of groundwater withdrawn from the cell will be assigned as the user-specified + temperature. Alternatively, if the user-specified auxiliary temperature is larger than + the cell temperature, then groundwater will be withdrawn at the cell temperature. Thus, + the AUXMIXED option is designed to work with the Evapotranspiration (EVT) and Recharge + (RCH) Packages where water may be withdrawn at a temperature that is less than the cell + temperature. + tagged: false + auxname: + type: string + longname: auxiliary variable name + description: name of the auxiliary variable in the package PNAME. This auxiliary variable + must exist and be specified by the user in that package. The values in this auxiliary + variable will be used to set the temperature associated with the flows for that boundary + package. + tagged: false + fileinput: + fields: + fileinput: + type: list + optional: true + item: + type: record + fields: + pname: + type: string + longname: package name + description: name of the flow package for which an auxiliary variable contains a source + temperature. If this flow package is represented using an advanced transport package + (SFE, LKE, MWE, or UZE), then the advanced transport package will override SSM terms specified + here. + tagged: false + spc6: + type: keyword + longname: head keyword + description: keyword to specify that record corresponds to a source sink mixing input file. + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + spc6_filename: + type: string + longname: spc file name + description: character string that defines the path and filename for the file containing + source and sink input data for the flow package. The SPC6_FILENAME file is a flexible + input file that allows temperatures to be specified by stress period and with time series. + Instructions for creating the SPC6_FILENAME input file are provided in the next section + on file input for boundary temperatures. + tagged: false + case_sensitive: true + mixed: + type: keyword + longname: mixed keyword + description: keyword to specify that these stress package boundaries will have the mixed + condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED + condition allows for water to be withdrawn at a temperature that is less than the cell + temperature. It is intended primarily for representing evapotranspiration. + optional: true +memory: + pname_sources: + source: pname + type: string diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.json new file mode 100644 index 00000000..61652a89 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.json @@ -0,0 +1,323 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwe-uze", + "parent": "gwe-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of concentration auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of unsaturated zone flow cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of unsaturated zone flow information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_temperature": { + "type": "keyword", + "longname": "print calculated temperatures to listing file", + "description": "keyword to indicate that the list of UZF cell {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of unsaturated zone flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save UZE cell flows to budget file", + "description": "keyword to indicate that unsaturated zone flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "temperature_filerecord": { + "type": "record", + "optional": true, + "fields": { + "temperature": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "uzfno": { + "type": "integer", + "longname": "UZF cell number for this entry", + "description": "integer value that defines the UZF cell number associated with the specified PACKAGEDATA data on the line. UZFNO must be greater than zero and less than or equal to NUZFCELLS. Unsaturated zone flow information must be specified for every UZF cell or the program will terminate with an error. The program also will terminate with an error if information for a UZF cell is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting UZF cell temperature", + "description": "real value that defines the starting temperature for the unsaturated zone flow cell.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each unsaturated zone flow. The values of auxiliary variables must be present for each unsaturated zone flow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "UZF cell name", + "description": "name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "uzeperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "uzfno": { + "type": "integer", + "longname": "unsaturated zone flow cell number for this entry", + "description": "integer value that defines the UZF cell number associated with the specified PERIOD data on the line. UZFNO must be greater than zero and less than or equal to NUZFCELLS.", + "tagged": false + }, + "uzesetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the UZESETTING string include: STATUS, TEMPERATURE, INFILTRATION, UZET, and AUXILIARY. These settings are used to assign the temperature associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms.", + "arms": { + "status": { + "type": "string", + "longname": "unsaturated zone flow cell temperature status", + "description": "keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the UZF cell. If a UZF cell is inactive, then there will be no energy fluxes into or out of the UZF cell and the inactive value will be written for the UZF cell temperature. If a UZF cell is constant, then the temperature for the UZF cell will be fixed at the user specified value." + }, + "temperature": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to temperature." + }, + "infiltration": { + "type": "string", + "longname": "infiltration temperature", + "description": "real or character value that defines the temperature of the infiltration $(e.g.,:^{circ}C:or:^{circ}F)$ for the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "uzet": { + "type": "string", + "longname": "unsaturated zone et temperature", + "description": "real or character value that states what fraction of the simulated unsaturated zone evapotranspiration is associated with evaporation. The evaporative losses from the unsaturated zone moisture content will have an evaporative cooling effect on the GWE cell from which the evaporation originated. If this value is larger than 1, then it will be reset to 1. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting temperature for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed temperature for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage temperature flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempinfl": { + "type": "array", + "set_in": "rp", + "description": "Infiltration temperature for each UZF cell.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "tempuzet": { + "type": "array", + "set_in": "rp", + "description": "ET temperature for each UZF cell.", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.toml new file mode 100644 index 00000000..58803b61 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.toml @@ -0,0 +1,285 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwe-uze" +parent = "gwe-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of concentration auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of unsaturated zone flow cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of unsaturated zone flow information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_temperature] +type = "keyword" +longname = "print calculated temperatures to listing file" +description = "keyword to indicate that the list of UZF cell {#2} will be printed to the listing file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of unsaturated zone flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save UZE cell flows to budget file" +description = "keyword to indicate that unsaturated zone flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.temperature_filerecord] +type = "record" +optional = true + +[blocks.options.fields.temperature_filerecord.fields.temperature] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.uzfno] +type = "integer" +longname = "UZF cell number for this entry" +description = "integer value that defines the UZF cell number associated with the specified PACKAGEDATA data on the line. UZFNO must be greater than zero and less than or equal to NUZFCELLS. Unsaturated zone flow information must be specified for every UZF cell or the program will terminate with an error. The program also will terminate with an error if information for a UZF cell is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting UZF cell temperature" +description = "real value that defines the starting temperature for the unsaturated zone flow cell." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each unsaturated zone flow. The values of auxiliary variables must be present for each unsaturated zone flow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "UZF cell name" +description = "name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.uzeperioddata] +type = "list" + +[blocks.period.fields.uzeperioddata.item] +type = "record" + +[blocks.period.fields.uzeperioddata.item.fields.uzfno] +type = "integer" +longname = "unsaturated zone flow cell number for this entry" +description = "integer value that defines the UZF cell number associated with the specified PERIOD data on the line. UZFNO must be greater than zero and less than or equal to NUZFCELLS." +tagged = false + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the UZESETTING string include: STATUS, TEMPERATURE, INFILTRATION, UZET, and AUXILIARY. These settings are used to assign the temperature associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms." + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.status] +type = "string" +longname = "unsaturated zone flow cell temperature status" +description = "keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the UZF cell. If a UZF cell is inactive, then there will be no energy fluxes into or out of the UZF cell and the inactive value will be written for the UZF cell temperature. If a UZF cell is constant, then the temperature for the UZF cell will be fixed at the user specified value." + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.temperature] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to temperature." + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.infiltration] +type = "string" +longname = "infiltration temperature" +description = "real or character value that defines the temperature of the infiltration $(e.g.,:^{circ}C:or:^{circ}F)$ for the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.uzet] +type = "string" +longname = "unsaturated zone et temperature" +description = "real or character value that states what fraction of the simulated unsaturated zone evapotranspiration is associated with evaporation. The evaporative losses from the unsaturated zone moisture content will have an evaporative cooling effect on the GWE cell from which the evaporation originated. If this value is larger than 1, then it will be reset to 1. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.uzeperioddata.item.fields.uzesetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting temperature for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current temperature for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Temperature from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed temperature for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage temperature flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempinfl] +type = "array" +set_in = "rp" +description = "Infiltration temperature for each UZF cell." +dtype = "double" +shape = [ + "ncv", +] + +[memory.tempuzet] +type = "array" +set_in = "rp" +description = "ET temperature for each UZF cell." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.yaml new file mode 100644 index 00000000..6829e34b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-uze.yaml @@ -0,0 +1,307 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwe-uze +parent: gwe-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWE name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of concentration auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated temperatures from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of unsaturated + zone flow cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of unsaturated zone flow information will be written + to the listing file immediately after it is read. + optional: true + print_temperature: + type: keyword + longname: print calculated temperatures to listing file + description: keyword to indicate that the list of UZF cell {#2} will be printed to the listing + file for every stress period in which 'TEMPERATURE PRINT' is specified in Output Control. If + there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the + last time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of unsaturated zone flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save UZE cell flows to budget file + description: keyword to indicate that unsaturated zone flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + temperature_filerecord: + type: record + optional: true + fields: + temperature: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + uzfno: + type: integer + longname: UZF cell number for this entry + description: integer value that defines the UZF cell number associated with the specified + PACKAGEDATA data on the line. UZFNO must be greater than zero and less than or equal to + NUZFCELLS. Unsaturated zone flow information must be specified for every UZF cell or the + program will terminate with an error. The program also will terminate with an error if + information for a UZF cell is specified more than once. + tagged: false + strt: + type: double + longname: starting UZF cell temperature + description: real value that defines the starting temperature for the unsaturated zone flow + cell. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each unsaturated zone + flow. The values of auxiliary variables must be present for each unsaturated zone flow. + The values must be specified in the order of the auxiliary variables specified in the + OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: UZF cell name + description: name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + uzeperioddata: + type: list + item: + type: record + fields: + uzfno: + type: integer + longname: unsaturated zone flow cell number for this entry + description: integer value that defines the UZF cell number associated with the specified + PERIOD data on the line. UZFNO must be greater than zero and less than or equal to NUZFCELLS. + tagged: false + uzesetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the UZESETTING string include: STATUS, TEMPERATURE, INFILTRATION, + UZET, and AUXILIARY. These settings are used to assign the temperature associated with + the corresponding flow terms. Temperatures cannot be specified for all flow terms.' + arms: + status: + type: string + longname: unsaturated zone flow cell temperature status + description: keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated + for the UZF cell. If a UZF cell is inactive, then there will be no energy fluxes + into or out of the UZF cell and the inactive value will be written for the UZF cell + temperature. If a UZF cell is constant, then the temperature for the UZF cell will + be fixed at the user specified value. + temperature: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to temperature. + infiltration: + type: string + longname: infiltration temperature + description: real or character value that defines the temperature of the infiltration + $(e.g.,:^{circ}C:or:^{circ}F)$ for the UZF cell. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + time_series: true + uzet: + type: string + longname: unsaturated zone et temperature + description: real or character value that states what fraction of the simulated unsaturated + zone evapotranspiration is associated with evaporation. The evaporative losses from + the unsaturated zone moisture content will have an evaporative cooling effect on the + GWE cell from which the evaporation originated. If this value is larger than 1, then + it will be reset to 1. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting temperature for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current temperature for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Temperature from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed temperature for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage temperature flow contribution for each control volume. + dtype: double + shape: + - ncv + tempinfl: + type: array + set_in: rp + description: Infiltration temperature for each UZF cell. + dtype: double + shape: + - ncv + tempuzet: + type: array + set_in: rp + description: ET temperature for each UZF cell. + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.json new file mode 100644 index 00000000..30078f44 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.json @@ -0,0 +1,90 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-api", + "parent": "gwf-nam", + "multi": true, + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of api boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of api boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of api boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save api flows to budget file", + "description": "keyword to indicate that api boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the api boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of user-defined api boundaries", + "description": "integer value specifying the maximum number of api boundary cells that will be specified for use during any stress period." + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "maxbound": { + "set_in": "ar", + "source": "maxbound", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.toml new file mode 100644 index 00000000..f1824eaa --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.toml @@ -0,0 +1,72 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-api" +parent = "gwf-nam" +multi = true + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of api boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of api boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of api boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save api flows to budget file" +description = "keyword to indicate that api boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the api boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of user-defined api boundaries" +description = "integer value specifying the maximum number of api boundary cells that will be specified for use during any stress period." + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.maxbound] +set_in = "ar" +source = "maxbound" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.yaml new file mode 100644 index 00000000..4db34e80 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-api.yaml @@ -0,0 +1,76 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-api +parent: gwf-nam +multi: true +dims: + maxbound: + value: maxbound + scope: model +blocks: + options: + fields: + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of api boundary + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of api boundary information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of api boundary flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save api flows to budget file + description: keyword to indicate that api boundary flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the api boundary Package can be used with + the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of user-defined api boundaries + description: integer value specifying the maximum number of api boundary cells that will be specified + for use during any stress period. +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + type: integer + maxbound: + set_in: ar + source: maxbound + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.json new file mode 100644 index 00000000..007677ec --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.json @@ -0,0 +1,120 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-buy", + "parent": "gwf-nam", + "dims": { + "nrhospecies": { + "value": "nrhospecies", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "hhformulation_rhs": { + "type": "keyword", + "longname": "hh formulation on right-hand side", + "description": "use the variable-density hydraulic head formulation and add off-diagonal terms to the right-hand. This option will prevent the BUY Package from adding asymmetric terms to the flow matrix.", + "optional": true + }, + "denseref": { + "type": "double", + "longname": "reference density", + "description": "fluid reference density used in the equation of state. This value is set to 1000. if not specified as an option.", + "optional": true, + "default": 1000.0 + }, + "density_filerecord": { + "type": "record", + "optional": true, + "fields": { + "density": { + "type": "file", + "longname": "density keyword", + "description": "keyword to specify that record corresponds to density.", + "mode": "fileout" + } + } + }, + "dev_efh_formulation": { + "type": "keyword", + "longname": "use equivalent freshwater head formulation", + "description": "use the variable-density equivalent freshwater head formulation instead of the hydraulic head head formulation. This dev option has only been implemented for confined aquifer conditions and should generally not be used.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nrhospecies": { + "type": "integer", + "longname": "number of species used in density equation of state", + "description": "number of species used in density equation of state. This value must be one or greater if the BUY package is activated." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "irhospec": { + "type": "integer", + "longname": "species number for this entry", + "description": "integer value that defines the species number associated with the specified PACKAGEDATA data on the line. IRHOSPECIES must be greater than zero and less than or equal to NRHOSPECIES. Information must be specified for each of the NRHOSPECIES species or the program will terminate with an error. The program will also terminate with an error if information for a species is specified more than once.", + "tagged": false + }, + "drhodc": { + "type": "double", + "longname": "slope of the density-concentration line", + "description": "real value that defines the slope of the density-concentration line for this species used in the density equation of state.", + "tagged": false + }, + "crhoref": { + "type": "double", + "longname": "reference concentration value", + "description": "real value that defines the reference concentration value used for this species in the density equation of state.", + "tagged": false + }, + "modelname": { + "type": "string", + "longname": "modelname", + "description": "name of a GWT or GWE model used to simulate a species that will be used in the density equation of state. This name will have no effect if the simulation does not include a GWT or GWE model that corresponds to this GWF model.", + "tagged": false + }, + "auxspeciesname": { + "type": "string", + "longname": "auxspeciesname", + "description": "name of an auxiliary variable in a GWF stress package that will be used for this species to calculate a density value. If a density value is needed by the Buoyancy Package then it will use the concentration values in this AUXSPECIESNAME column in the density equation of state. For advanced stress packages (LAK, SFR, MAW, and UZF) that have an associated advanced transport package (LKT, SFT, MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME option in the advanced transport package can be used to transfer simulated concentrations into the flow package auxiliary variable. In this manner, the Buoyancy Package can calculate density values for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells using simulated concentrations.", + "tagged": false + } + } + }, + "shape": [ + "nrhospecies" + ] + } + } + } + }, + "memory": { + "hhform_rhs": { + "set_in": "ar", + "source": "hhformulation_rhs", + "type": "logical" + }, + "dev_efh_form": { + "set_in": "ar", + "source": "dev_efh_formulation", + "type": "logical" + }, + "nrhospecies": { + "set_in": "ar", + "source": "nrhospecies", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.toml new file mode 100644 index 00000000..ed3abf87 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.toml @@ -0,0 +1,96 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-buy" +parent = "gwf-nam" + +[dims.nrhospecies] +value = "nrhospecies" +scope = "model" + +[blocks.options.fields.hhformulation_rhs] +type = "keyword" +longname = "hh formulation on right-hand side" +description = "use the variable-density hydraulic head formulation and add off-diagonal terms to the right-hand. This option will prevent the BUY Package from adding asymmetric terms to the flow matrix." +optional = true + +[blocks.options.fields.denseref] +type = "double" +longname = "reference density" +description = "fluid reference density used in the equation of state. This value is set to 1000. if not specified as an option." +optional = true +default = 1000.0 + +[blocks.options.fields.density_filerecord] +type = "record" +optional = true + +[blocks.options.fields.density_filerecord.fields.density] +type = "file" +longname = "density keyword" +description = "keyword to specify that record corresponds to density." +mode = "fileout" + +[blocks.options.fields.dev_efh_formulation] +type = "keyword" +longname = "use equivalent freshwater head formulation" +description = "use the variable-density equivalent freshwater head formulation instead of the hydraulic head head formulation. This dev option has only been implemented for confined aquifer conditions and should generally not be used." +optional = true + +[blocks.dimensions.fields.nrhospecies] +type = "integer" +longname = "number of species used in density equation of state" +description = "number of species used in density equation of state. This value must be one or greater if the BUY package is activated." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nrhospecies", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.irhospec] +type = "integer" +longname = "species number for this entry" +description = "integer value that defines the species number associated with the specified PACKAGEDATA data on the line. IRHOSPECIES must be greater than zero and less than or equal to NRHOSPECIES. Information must be specified for each of the NRHOSPECIES species or the program will terminate with an error. The program will also terminate with an error if information for a species is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.drhodc] +type = "double" +longname = "slope of the density-concentration line" +description = "real value that defines the slope of the density-concentration line for this species used in the density equation of state." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.crhoref] +type = "double" +longname = "reference concentration value" +description = "real value that defines the reference concentration value used for this species in the density equation of state." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.modelname] +type = "string" +longname = "modelname" +description = "name of a GWT or GWE model used to simulate a species that will be used in the density equation of state. This name will have no effect if the simulation does not include a GWT or GWE model that corresponds to this GWF model." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.auxspeciesname] +type = "string" +longname = "auxspeciesname" +description = "name of an auxiliary variable in a GWF stress package that will be used for this species to calculate a density value. If a density value is needed by the Buoyancy Package then it will use the concentration values in this AUXSPECIESNAME column in the density equation of state. For advanced stress packages (LAK, SFR, MAW, and UZF) that have an associated advanced transport package (LKT, SFT, MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME option in the advanced transport package can be used to transfer simulated concentrations into the flow package auxiliary variable. In this manner, the Buoyancy Package can calculate density values for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells using simulated concentrations." +tagged = false + +[memory.hhform_rhs] +set_in = "ar" +source = "hhformulation_rhs" +type = "logical" + +[memory.dev_efh_form] +set_in = "ar" +source = "dev_efh_formulation" +type = "logical" + +[memory.nrhospecies] +set_in = "ar" +source = "nrhospecies" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.yaml new file mode 100644 index 00000000..f1c44012 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-buy.yaml @@ -0,0 +1,111 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-buy +parent: gwf-nam +dims: + nrhospecies: + value: nrhospecies + scope: model +blocks: + options: + fields: + hhformulation_rhs: + type: keyword + longname: hh formulation on right-hand side + description: use the variable-density hydraulic head formulation and add off-diagonal terms to + the right-hand. This option will prevent the BUY Package from adding asymmetric terms to the + flow matrix. + optional: true + denseref: + type: double + longname: reference density + description: fluid reference density used in the equation of state. This value is set to 1000. + if not specified as an option. + optional: true + default: 1000.0 + density_filerecord: + type: record + optional: true + fields: + density: + type: file + longname: density keyword + description: keyword to specify that record corresponds to density. + mode: fileout + dev_efh_formulation: + type: keyword + longname: use equivalent freshwater head formulation + description: use the variable-density equivalent freshwater head formulation instead of the hydraulic + head head formulation. This dev option has only been implemented for confined aquifer conditions + and should generally not be used. + optional: true + dimensions: + fields: + nrhospecies: + type: integer + longname: number of species used in density equation of state + description: number of species used in density equation of state. This value must be one or greater + if the BUY package is activated. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + irhospec: + type: integer + longname: species number for this entry + description: integer value that defines the species number associated with the specified + PACKAGEDATA data on the line. IRHOSPECIES must be greater than zero and less than or equal + to NRHOSPECIES. Information must be specified for each of the NRHOSPECIES species or the + program will terminate with an error. The program will also terminate with an error if + information for a species is specified more than once. + tagged: false + drhodc: + type: double + longname: slope of the density-concentration line + description: real value that defines the slope of the density-concentration line for this + species used in the density equation of state. + tagged: false + crhoref: + type: double + longname: reference concentration value + description: real value that defines the reference concentration value used for this species + in the density equation of state. + tagged: false + modelname: + type: string + longname: modelname + description: name of a GWT or GWE model used to simulate a species that will be used in + the density equation of state. This name will have no effect if the simulation does not + include a GWT or GWE model that corresponds to this GWF model. + tagged: false + auxspeciesname: + type: string + longname: auxspeciesname + description: name of an auxiliary variable in a GWF stress package that will be used for + this species to calculate a density value. If a density value is needed by the Buoyancy + Package then it will use the concentration values in this AUXSPECIESNAME column in the + density equation of state. For advanced stress packages (LAK, SFR, MAW, and UZF) that + have an associated advanced transport package (LKT, SFT, MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME + option in the advanced transport package can be used to transfer simulated concentrations + into the flow package auxiliary variable. In this manner, the Buoyancy Package can calculate + density values for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells + using simulated concentrations. + tagged: false + shape: + - nrhospecies +memory: + hhform_rhs: + set_in: ar + source: hhformulation_rhs + type: logical + dev_efh_form: + set_in: ar + source: dev_efh_formulation + type: logical + nrhospecies: + set_in: ar + source: nrhospecies + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json new file mode 100644 index 00000000..0e627e9f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json @@ -0,0 +1,289 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-chd", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of CHD head value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant-head cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print CHD flows to listing file", + "description": "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "dev_no_newton": { + "type": "keyword", + "longname": "turn off Newton for unconfined cells", + "description": "turn off Newton for unconfined cells", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant heads", + "description": "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "head": { + "type": "double", + "longname": "head value assigned to constant head", + "description": "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant head boundary name", + "description": "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "inewton": { + "set_in": "ar", + "source": "dev_no_newton", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: head.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CHD", + "output": "ipakcb", + "obs_type": "CHD", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml new file mode 100644 index 00000000..27c1f6e2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml @@ -0,0 +1,263 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-chd" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of CHD head value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant-head cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print CHD flows to listing file" +description = "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.dev_no_newton] +type = "keyword" +longname = "turn off Newton for unconfined cells" +description = "turn off Newton for unconfined cells" +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant heads" +description = "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.head] +type = "double" +longname = "head value assigned to constant head" +description = "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant head boundary name" +description = "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.inewton] +set_in = "ar" +source = "dev_no_newton" +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: head." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CHD" +output = "ipakcb" +obs_type = "CHD" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml new file mode 100644 index 00000000..92b2da9e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml @@ -0,0 +1,251 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-chd +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of CHD head value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant-head + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant-head information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print CHD flows to listing file + description: keyword to indicate that the list of constant-head flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that constant-head flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dev_no_newton: + type: keyword + longname: turn off Newton for unconfined cells + description: turn off Newton for unconfined cells + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant heads + description: integer value specifying the maximum number of constant-head cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + head: + type: double + longname: head value assigned to constant head + description: is the head at the boundary. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant head. The + values of auxiliary variables must be present for each constant head. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant head boundary name + description: name of the constant head boundary cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + inewton: + set_in: ar + source: dev_no_newton + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: head.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CHD + output: ipakcb + obs_type: CHD + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json new file mode 100644 index 00000000..33906a6d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json @@ -0,0 +1,267 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-chdg", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readarraygrid": { + "type": "keyword", + "longname": "use array-based grid input", + "description": "indicates that array-based grid input will be used for the constant head package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30).", + "default": "true", + "developmode": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of CHD head value.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print CHD flows to listing file", + "description": "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "dev_no_newton": { + "type": "keyword", + "longname": "turn off Newton for unconfined cells", + "description": "turn off Newton for unconfined cells", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant head cells in any stress period", + "description": "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period.", + "optional": true + } + } + }, + "period": { + "fields": { + "head": { + "type": "array", + "longname": "head value assigned to constant head", + "description": "is the head at the boundary.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "aux": { + "type": "array", + "longname": "constant head auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the head array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "inewton": { + "set_in": "ar", + "source": "dev_no_newton", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CHD", + "output": "ipakcb", + "obs_type": "CHD", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml new file mode 100644 index 00000000..59e446f4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml @@ -0,0 +1,245 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-chdg" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readarraygrid] +type = "keyword" +longname = "use array-based grid input" +description = "indicates that array-based grid input will be used for the constant head package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30)." +default = "true" +developmode = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of CHD head value." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print CHD flows to listing file" +description = "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.dev_no_newton] +type = "keyword" +longname = "turn off Newton for unconfined cells" +description = "turn off Newton for unconfined cells" +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant head cells in any stress period" +description = "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." +optional = true + +[blocks.period.fields.head] +type = "array" +longname = "head value assigned to constant head" +description = "is the head at the boundary." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.aux] +type = "array" +longname = "constant head auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the head array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.inewton] +set_in = "ar" +source = "dev_no_newton" +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CHD" +output = "ipakcb" +obs_type = "CHD" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml new file mode 100644 index 00000000..a0f449de --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml @@ -0,0 +1,232 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-chdg +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readarraygrid: + type: keyword + longname: use array-based grid input + description: indicates that array-based grid input will be used for the constant head package. This + keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values + must be provided for every cell within a model grid, even those cells that have an IDOMAIN value + less than one. Values assigned to cells with IDOMAIN values less than one are not used and + have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30). + default: 'true' + developmode: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of CHD head value. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant-head information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print CHD flows to listing file + description: keyword to indicate that the list of constant-head flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that constant-head flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dev_no_newton: + type: keyword + longname: turn off Newton for unconfined cells + description: turn off Newton for unconfined cells + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant head cells in any stress period + description: integer value specifying the maximum number of constant-head cells that will be specified + for use during any stress period. + optional: true + period: + fields: + head: + type: array + longname: head value assigned to constant head + description: is the head at the boundary. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + aux: + type: array + longname: constant head auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If the value specified here for the auxiliary + variable is the same as auxmultname, then the head array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + inewton: + set_in: ar + source: dev_no_newton + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CHD + output: ipakcb + obs_type: CHD + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json new file mode 100644 index 00000000..460174b5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.json @@ -0,0 +1,601 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-csub", + "parent": "gwf-nam", + "dims": { + "ninterbeds": { + "value": "ninterbeds", + "scope": "model" + }, + "maxsig0": { + "value": "maxsig0", + "scope": "model" + }, + "ncelldim": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of CSUB cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of CSUB information will be written to the listing file immediately after it is read.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save CSUB flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "gammaw": { + "type": "double", + "longname": "unit weight of water", + "description": "unit weight of water. For freshwater, GAMMAW is 9806.65 Newtons/cubic meters or 62.48 lb/cubic foot in SI and English units, respectively. By default, GAMMAW is 9806.65 Newtons/cubic meters.", + "optional": true, + "default": 9806.65 + }, + "beta": { + "type": "double", + "longname": "compressibility of water", + "description": "compressibility of water. Typical values of BETA are 4.6512e-10 1/Pa or 2.2270e-8 lb/square foot in SI and English units, respectively. By default, BETA is 4.6512e-10 1/Pa.", + "optional": true, + "default": 4.6512e-10 + }, + "head_based": { + "type": "keyword", + "longname": "keyword to indicate the head-based formulation will be used", + "description": "keyword to indicate the head-based formulation will be used to simulate coarse-grained aquifer materials and no-delay and delay interbeds. Specifying HEAD_BASED also specifies the INITIAL_PRECONSOLIDATION_HEAD option.", + "optional": true + }, + "initial_preconsolidation_head": { + "type": "keyword", + "longname": "keyword to indicate that preconsolidation heads will be specified", + "description": "keyword to indicate that preconsolidation heads will be specified for no-delay and delay interbeds in the PACKAGEDATA block. If the SPECIFIED_INITIAL_INTERBED_STATE option is specified in the OPTIONS block, user-specified preconsolidation heads in the PACKAGEDATA block are absolute values. Otherwise, user-specified preconsolidation heads in the PACKAGEDATA block are relative to steady-state or initial heads.", + "optional": true + }, + "ndelaycells": { + "type": "integer", + "longname": "number of interbed cell nodes", + "description": "number of nodes used to discretize delay interbeds. If not specified, then a default value of 19 is assigned.", + "optional": true + }, + "compression_indices": { + "type": "keyword", + "longname": "keyword to indicate CR and CC are read instead of SSE and SSV", + "description": "keyword to indicate that the recompression (CR) and compression (CC) indices are specified instead of the elastic specific storage (SSE) and inelastic specific storage (SSV) coefficients. If not specified, then elastic specific storage (SSE) and inelastic specific storage (SSV) coefficients must be specified.", + "optional": true + }, + "update_material_properties": { + "type": "keyword", + "longname": "keyword to indicate material properties can change during the simulations", + "description": "keyword to indicate that the thickness and void ratio of coarse-grained and interbed sediments (delay and no-delay) will vary during the simulation. If not specified, the thickness and void ratio of coarse-grained and interbed sediments will not vary during the simulation.", + "optional": true + }, + "cell_fraction": { + "type": "keyword", + "longname": "keyword to indicate cell fraction interbed thickness", + "description": "keyword to indicate that the thickness of interbeds will be specified in terms of the fraction of cell thickness. If not specified, interbed thicknness must be specified.", + "optional": true + }, + "specified_initial_interbed_state": { + "type": "keyword", + "longname": "keyword to indicate that absolute initial states will be specified", + "description": "keyword to indicate that absolute preconsolidation stresses (heads) and delay bed heads will be specified for interbeds defined in the PACKAGEDATA block. The SPECIFIED_INITIAL_INTERBED_STATE option is equivalent to specifying the SPECIFIED_INITIAL_PRECONSOLITATION_STRESS and SPECIFIED_INITIAL_DELAY_HEAD. If SPECIFIED_INITIAL_INTERBED_STATE is not specified then preconsolidation stress (head) and delay bed head values specified in the PACKAGEDATA block are relative to simulated values of the first stress period if steady-state or initial stresses and GWF heads if the first stress period is transient.", + "optional": true + }, + "specified_initial_preconsolidation_stress": { + "type": "keyword", + "longname": "keyword to indicate that absolute initial preconsolidation stresses (head) will be specified", + "description": "keyword to indicate that absolute preconsolidation stresses (heads) will be specified for interbeds defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_PRECONSOLITATION_STRESS and SPECIFIED_INITIAL_INTERBED_STATE are not specified then preconsolidation stress (head) values specified in the PACKAGEDATA block are relative to simulated values if the first stress period is steady-state or initial stresses (heads) if the first stress period is transient.", + "optional": true + }, + "specified_initial_delay_head": { + "type": "keyword", + "longname": "keyword to indicate that absolute initial delay bed heads will be specified", + "description": "keyword to indicate that absolute initial delay bed head will be specified for interbeds defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_DELAY_HEAD and SPECIFIED_INITIAL_INTERBED_STATE are not specified then delay bed head values specified in the PACKAGEDATA block are relative to simulated values if the first stress period is steady-state or initial GWF heads if the first stress period is transient.", + "optional": true + }, + "effective_stress_lag": { + "type": "keyword", + "longname": "keyword to indicate that specific storage will be calculate using the effective stress from the previous time step", + "description": "keyword to indicate the effective stress from the previous time step will be used to calculate specific storage values. This option can 1) help with convergence in models with thin cells and water table elevations close to land surface; 2) is identical to the approach used in the SUBWT package for MODFLOW-2005; and 3) is only used if the effective-stress formulation is being used. By default, current effective stress values are used to calculate specific storage values.", + "optional": true + }, + "strainib_filerecord": { + "type": "record", + "optional": true, + "fields": { + "strain_csv_interbed": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify the record that corresponds to final interbed strain output.", + "mode": "fileout" + } + } + }, + "straincg_filerecord": { + "type": "record", + "optional": true, + "fields": { + "strain_csv_coarse": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify the record that corresponds to final coarse-grained material strain output.", + "mode": "fileout" + } + } + }, + "compaction_filerecord": { + "type": "record", + "optional": true, + "fields": { + "compaction": { + "type": "file", + "longname": "compaction keyword", + "description": "keyword to specify that record corresponds to the compaction.", + "mode": "fileout" + } + } + }, + "compaction_elastic_filerecord": { + "type": "record", + "optional": true, + "fields": { + "compaction_elastic": { + "type": "file", + "longname": "elastic interbed compaction keyword", + "description": "keyword to specify that record corresponds to the elastic interbed compaction binary file.", + "mode": "fileout" + } + } + }, + "compaction_inelastic_filerecord": { + "type": "record", + "optional": true, + "fields": { + "compaction_inelastic": { + "type": "file", + "longname": "inelastic interbed compaction keyword", + "description": "keyword to specify that record corresponds to the inelastic interbed compaction binary file.", + "mode": "fileout" + } + } + }, + "compaction_interbed_filerecord": { + "type": "record", + "optional": true, + "fields": { + "compaction_interbed": { + "type": "file", + "longname": "interbed compaction keyword", + "description": "keyword to specify that record corresponds to the interbed compaction binary file.", + "mode": "fileout" + } + } + }, + "compaction_coarse_filerecord": { + "type": "record", + "optional": true, + "fields": { + "compaction_coarse": { + "type": "file", + "longname": "coarse compaction keyword", + "description": "keyword to specify that record corresponds to the elastic coarse-grained material compaction binary file.", + "mode": "fileout" + } + } + }, + "zdisplacement_filerecord": { + "type": "record", + "optional": true, + "fields": { + "zdisplacement": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the z-displacement binary file.", + "mode": "fileout" + } + } + }, + "package_convergence_filerecord": { + "type": "record", + "optional": true, + "fields": { + "package_convergence": { + "type": "file", + "longname": "package_convergence keyword", + "description": "keyword to specify that record corresponds to the package convergence comma spaced values file. Package convergence data is for delay interbeds. A warning message will be issued if package convergence data is requested but delay interbeds are not included in the package.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "ninterbeds": { + "type": "integer", + "longname": "number of CSUB interbed systems", + "description": "is the number of CSUB interbed systems. More than 1 CSUB interbed systems can be assigned to a GWF cell; however, only 1 GWF cell can be assigned to a single CSUB interbed system." + }, + "maxsig0": { + "type": "integer", + "longname": "maximum number of stress offset cells", + "description": "is the maximum number of cells that can have a specified stress offset. More than 1 stress offset can be assigned to a GWF cell. By default, MAXSIG0 is 0.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "cg_ske_cr": { + "type": "array", + "longname": "elastic coarse specific storage", + "description": "is the initial elastic coarse-grained material specific storage or recompression index. The recompression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated elastic coarse-grained material specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block.", + "default": 1e-05, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cg_theta": { + "type": "array", + "longname": "initial coarse-grained material porosity", + "description": "is the initial porosity of coarse-grained materials.", + "default": 0.2, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sgm": { + "type": "array", + "longname": "specific gravity of moist sediments", + "description": "is the specific gravity of moist or unsaturated sediments. If not specified, then a default value of 1.7 is assigned.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sgs": { + "type": "array", + "longname": "specific gravity of saturated sediments", + "description": "is the specific gravity of saturated sediments. If not specified, then a default value of 2.0 is assigned.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "optional": true, + "item": { + "type": "record", + "fields": { + "icsubno": { + "type": "integer", + "longname": "CSUB id number for this entry", + "description": "integer value that defines the CSUB interbed number associated with the specified PACKAGEDATA data on the line. CSUBNO must be greater than zero and less than or equal to NINTERBEDS. CSUB information must be specified for every CSUB cell or the program will terminate with an error. The program will also terminate with an error if information for a CSUB interbed number is specified more than once.", + "tagged": false + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "cdelay": { + "type": "string", + "longname": "delay type", + "description": "character string that defines the subsidence delay type for the interbed. Possible subsidence package CDELAY strings include: NODELAY--character keyword to indicate that delay will not be simulated in the interbed. DELAY--character keyword to indicate that delay will be simulated in the interbed.", + "tagged": false + }, + "pcs0": { + "type": "double", + "longname": "initial stress", + "description": "is the initial offset from the calculated initial effective stress or initial preconsolidation stress in the interbed, in units of height of a column of water. PCS0 is the initial preconsolidation stress if SPECIFIED_INITIAL_INTERBED_STATE or SPECIFIED_INITIAL_PRECONSOLIDATION_STRESS are specified in the OPTIONS block. If HEAD_BASED is specified in the OPTIONS block, PCS0 is the initial offset from the calculated initial head or initial preconsolidation head in the CSUB interbed and the initial preconsolidation stress is calculated from the calculated initial effective stress or calculated initial geostatic stress, respectively.", + "tagged": false + }, + "thick_frac": { + "type": "double", + "longname": "interbed thickness or cell fraction", + "description": "is the interbed thickness or cell fraction of the interbed. Interbed thickness is specified as a fraction of the cell thickness if CELL_FRACTION is specified in the OPTIONS block.", + "tagged": false + }, + "rnb": { + "type": "double", + "longname": "delay interbed material factor", + "description": "is the interbed material factor equivalent number of interbeds in the interbed system represented by the interbed. RNB must be greater than or equal to 1 if CDELAY is DELAY. Otherwise, RNB can be any value.", + "tagged": false + }, + "ssv_cc": { + "type": "double", + "longname": "initial interbed inelastic specific storage", + "description": "is the initial inelastic specific storage or compression index of the interbed. The compression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated interbed inelastic specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block.", + "tagged": false + }, + "sse_cr": { + "type": "double", + "longname": "initial interbed elastic specific storage", + "description": "is the initial elastic coarse-grained material specific storage or recompression index of the interbed. The recompression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated interbed elastic specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block.", + "tagged": false + }, + "theta": { + "type": "double", + "longname": "initial interbed porosity", + "description": "is the initial porosity of the interbed.", + "default": 0.2, + "tagged": false + }, + "kv": { + "type": "double", + "longname": "delay interbed vertical hydraulic conductivity", + "description": "is the vertical hydraulic conductivity of the delay interbed. KV must be greater than 0 if CDELAY is DELAY. Otherwise, KV can be any value.", + "tagged": false + }, + "h0": { + "type": "double", + "longname": "initial delay interbed head", + "description": "is the initial offset from the head in cell cellid or the initial head in the delay interbed. H0 is the initial head in the delay bed if SPECIFIED_INITIAL_INTERBED_STATE or SPECIFIED_INITIAL_DELAY_HEAD are specified in the OPTIONS block. H0 can be any value if CDELAY is NODELAY.", + "tagged": false + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the CSUB cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "ninterbeds" + ] + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "sig0": { + "type": "double", + "longname": "well stress offset", + "description": "is the stress offset for the cell. SIG0 is added to the calculated geostatic stress for the cell. SIG0 is specified only if MAXSIG0 is specified to be greater than 0 in the DIMENSIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + }, + "shape": [ + "maxsig0" + ] + } + } + } + }, + "memory": { + "precon_head": { + "set_in": "ar", + "source": "initial_preconsolidation_head", + "type": "logical" + }, + "icompress": { + "set_in": "ar", + "source": "compression_indices", + "type": "logical" + }, + "matprop": { + "set_in": "ar", + "source": "update_material_properties", + "type": "logical" + }, + "interbed_state": { + "set_in": "ar", + "source": "specified_initial_interbed_state", + "type": "integer" + }, + "precon_stress": { + "set_in": "ar", + "source": "specified_initial_preconsolidation_stress", + "type": "logical" + }, + "delay_head": { + "set_in": "ar", + "source": "specified_initial_delay_head", + "type": "logical" + }, + "stress_lag": { + "set_in": "ar", + "source": "effective_stress_lag", + "type": "logical" + }, + "csvinterbed": { + "set_in": "ar", + "source": "strain_csv_interbed", + "type": "logical" + }, + "interbedstrainfn": { + "set_in": "ar", + "type": "string" + }, + "csvcoarse": { + "set_in": "ar", + "source": "strain_csv_coarse", + "type": "logical" + }, + "coarsestrainfn": { + "set_in": "ar", + "type": "string" + }, + "cmpfn": { + "set_in": "ar", + "type": "string" + }, + "cmpelastic": { + "set_in": "ar", + "source": "compaction_elastic", + "type": "logical" + }, + "elasticcmpfn": { + "set_in": "ar", + "type": "string" + }, + "cmpinelastic": { + "set_in": "ar", + "source": "compaction_inelastic", + "type": "logical" + }, + "inelasticcmpfn": { + "set_in": "ar", + "type": "string" + }, + "cmpinterbed": { + "set_in": "ar", + "source": "compaction_interbed", + "type": "logical" + }, + "interbedcmpfn": { + "set_in": "ar", + "type": "string" + }, + "cmpcoarse": { + "set_in": "ar", + "source": "compaction_coarse", + "type": "logical" + }, + "cmpcoarsefn": { + "set_in": "ar", + "type": "string" + }, + "zdispfn": { + "set_in": "ar", + "type": "string" + }, + "pkgconverge": { + "set_in": "ar", + "source": "package_convergence", + "type": "logical" + }, + "pkgconvergefn": { + "set_in": "ar", + "type": "string" + }, + "maxbound": { + "set_in": "ar", + "source": "maxsig0", + "type": "integer" + }, + "cellid_pkgdata": { + "type": "array", + "set_in": "ar", + "source": "cellid", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "ninterbeds": { + "set_in": "ar", + "source": "ninterbeds", + "type": "integer" + }, + "cg_ske_cr": { + "type": "array", + "set_in": "ar", + "source": "cg_ske_cr", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cg_theta": { + "type": "array", + "set_in": "ar", + "source": "cg_theta", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sgm": { + "type": "array", + "set_in": "ar", + "source": "sgm", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sgs": { + "type": "array", + "set_in": "ar", + "source": "sgs", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml new file mode 100644 index 00000000..13d07ada --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.toml @@ -0,0 +1,547 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-csub" +parent = "gwf-nam" + +[dims.ninterbeds] +value = "ninterbeds" +scope = "model" + +[dims.maxsig0] +value = "maxsig0" +scope = "model" + +[dims.ncelldim] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of CSUB cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of CSUB information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save CSUB flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.gammaw] +type = "double" +longname = "unit weight of water" +description = "unit weight of water. For freshwater, GAMMAW is 9806.65 Newtons/cubic meters or 62.48 lb/cubic foot in SI and English units, respectively. By default, GAMMAW is 9806.65 Newtons/cubic meters." +optional = true +default = 9806.65 + +[blocks.options.fields.beta] +type = "double" +longname = "compressibility of water" +description = "compressibility of water. Typical values of BETA are 4.6512e-10 1/Pa or 2.2270e-8 lb/square foot in SI and English units, respectively. By default, BETA is 4.6512e-10 1/Pa." +optional = true +default = 4.6512e-10 + +[blocks.options.fields.head_based] +type = "keyword" +longname = "keyword to indicate the head-based formulation will be used" +description = "keyword to indicate the head-based formulation will be used to simulate coarse-grained aquifer materials and no-delay and delay interbeds. Specifying HEAD_BASED also specifies the INITIAL_PRECONSOLIDATION_HEAD option." +optional = true + +[blocks.options.fields.initial_preconsolidation_head] +type = "keyword" +longname = "keyword to indicate that preconsolidation heads will be specified" +description = "keyword to indicate that preconsolidation heads will be specified for no-delay and delay interbeds in the PACKAGEDATA block. If the SPECIFIED_INITIAL_INTERBED_STATE option is specified in the OPTIONS block, user-specified preconsolidation heads in the PACKAGEDATA block are absolute values. Otherwise, user-specified preconsolidation heads in the PACKAGEDATA block are relative to steady-state or initial heads." +optional = true + +[blocks.options.fields.ndelaycells] +type = "integer" +longname = "number of interbed cell nodes" +description = "number of nodes used to discretize delay interbeds. If not specified, then a default value of 19 is assigned." +optional = true + +[blocks.options.fields.compression_indices] +type = "keyword" +longname = "keyword to indicate CR and CC are read instead of SSE and SSV" +description = "keyword to indicate that the recompression (CR) and compression (CC) indices are specified instead of the elastic specific storage (SSE) and inelastic specific storage (SSV) coefficients. If not specified, then elastic specific storage (SSE) and inelastic specific storage (SSV) coefficients must be specified." +optional = true + +[blocks.options.fields.update_material_properties] +type = "keyword" +longname = "keyword to indicate material properties can change during the simulations" +description = "keyword to indicate that the thickness and void ratio of coarse-grained and interbed sediments (delay and no-delay) will vary during the simulation. If not specified, the thickness and void ratio of coarse-grained and interbed sediments will not vary during the simulation." +optional = true + +[blocks.options.fields.cell_fraction] +type = "keyword" +longname = "keyword to indicate cell fraction interbed thickness" +description = "keyword to indicate that the thickness of interbeds will be specified in terms of the fraction of cell thickness. If not specified, interbed thicknness must be specified." +optional = true + +[blocks.options.fields.specified_initial_interbed_state] +type = "keyword" +longname = "keyword to indicate that absolute initial states will be specified" +description = "keyword to indicate that absolute preconsolidation stresses (heads) and delay bed heads will be specified for interbeds defined in the PACKAGEDATA block. The SPECIFIED_INITIAL_INTERBED_STATE option is equivalent to specifying the SPECIFIED_INITIAL_PRECONSOLITATION_STRESS and SPECIFIED_INITIAL_DELAY_HEAD. If SPECIFIED_INITIAL_INTERBED_STATE is not specified then preconsolidation stress (head) and delay bed head values specified in the PACKAGEDATA block are relative to simulated values of the first stress period if steady-state or initial stresses and GWF heads if the first stress period is transient." +optional = true + +[blocks.options.fields.specified_initial_preconsolidation_stress] +type = "keyword" +longname = "keyword to indicate that absolute initial preconsolidation stresses (head) will be specified" +description = "keyword to indicate that absolute preconsolidation stresses (heads) will be specified for interbeds defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_PRECONSOLITATION_STRESS and SPECIFIED_INITIAL_INTERBED_STATE are not specified then preconsolidation stress (head) values specified in the PACKAGEDATA block are relative to simulated values if the first stress period is steady-state or initial stresses (heads) if the first stress period is transient." +optional = true + +[blocks.options.fields.specified_initial_delay_head] +type = "keyword" +longname = "keyword to indicate that absolute initial delay bed heads will be specified" +description = "keyword to indicate that absolute initial delay bed head will be specified for interbeds defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_DELAY_HEAD and SPECIFIED_INITIAL_INTERBED_STATE are not specified then delay bed head values specified in the PACKAGEDATA block are relative to simulated values if the first stress period is steady-state or initial GWF heads if the first stress period is transient." +optional = true + +[blocks.options.fields.effective_stress_lag] +type = "keyword" +longname = "keyword to indicate that specific storage will be calculate using the effective stress from the previous time step" +description = "keyword to indicate the effective stress from the previous time step will be used to calculate specific storage values. This option can 1) help with convergence in models with thin cells and water table elevations close to land surface; 2) is identical to the approach used in the SUBWT package for MODFLOW-2005; and 3) is only used if the effective-stress formulation is being used. By default, current effective stress values are used to calculate specific storage values." +optional = true + +[blocks.options.fields.strainib_filerecord] +type = "record" +optional = true + +[blocks.options.fields.strainib_filerecord.fields.strain_csv_interbed] +type = "file" +longname = "budget keyword" +description = "keyword to specify the record that corresponds to final interbed strain output." +mode = "fileout" + +[blocks.options.fields.straincg_filerecord] +type = "record" +optional = true + +[blocks.options.fields.straincg_filerecord.fields.strain_csv_coarse] +type = "file" +longname = "budget keyword" +description = "keyword to specify the record that corresponds to final coarse-grained material strain output." +mode = "fileout" + +[blocks.options.fields.compaction_filerecord] +type = "record" +optional = true + +[blocks.options.fields.compaction_filerecord.fields.compaction] +type = "file" +longname = "compaction keyword" +description = "keyword to specify that record corresponds to the compaction." +mode = "fileout" + +[blocks.options.fields.compaction_elastic_filerecord] +type = "record" +optional = true + +[blocks.options.fields.compaction_elastic_filerecord.fields.compaction_elastic] +type = "file" +longname = "elastic interbed compaction keyword" +description = "keyword to specify that record corresponds to the elastic interbed compaction binary file." +mode = "fileout" + +[blocks.options.fields.compaction_inelastic_filerecord] +type = "record" +optional = true + +[blocks.options.fields.compaction_inelastic_filerecord.fields.compaction_inelastic] +type = "file" +longname = "inelastic interbed compaction keyword" +description = "keyword to specify that record corresponds to the inelastic interbed compaction binary file." +mode = "fileout" + +[blocks.options.fields.compaction_interbed_filerecord] +type = "record" +optional = true + +[blocks.options.fields.compaction_interbed_filerecord.fields.compaction_interbed] +type = "file" +longname = "interbed compaction keyword" +description = "keyword to specify that record corresponds to the interbed compaction binary file." +mode = "fileout" + +[blocks.options.fields.compaction_coarse_filerecord] +type = "record" +optional = true + +[blocks.options.fields.compaction_coarse_filerecord.fields.compaction_coarse] +type = "file" +longname = "coarse compaction keyword" +description = "keyword to specify that record corresponds to the elastic coarse-grained material compaction binary file." +mode = "fileout" + +[blocks.options.fields.zdisplacement_filerecord] +type = "record" +optional = true + +[blocks.options.fields.zdisplacement_filerecord.fields.zdisplacement] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the z-displacement binary file." +mode = "fileout" + +[blocks.options.fields.package_convergence_filerecord] +type = "record" +optional = true + +[blocks.options.fields.package_convergence_filerecord.fields.package_convergence] +type = "file" +longname = "package_convergence keyword" +description = "keyword to specify that record corresponds to the package convergence comma spaced values file. Package convergence data is for delay interbeds. A warning message will be issued if package convergence data is requested but delay interbeds are not included in the package." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.ninterbeds] +type = "integer" +longname = "number of CSUB interbed systems" +description = "is the number of CSUB interbed systems. More than 1 CSUB interbed systems can be assigned to a GWF cell; however, only 1 GWF cell can be assigned to a single CSUB interbed system." + +[blocks.dimensions.fields.maxsig0] +type = "integer" +longname = "maximum number of stress offset cells" +description = "is the maximum number of cells that can have a specified stress offset. More than 1 stress offset can be assigned to a GWF cell. By default, MAXSIG0 is 0." +optional = true + +[blocks.griddata.fields.cg_ske_cr] +type = "array" +longname = "elastic coarse specific storage" +description = "is the initial elastic coarse-grained material specific storage or recompression index. The recompression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated elastic coarse-grained material specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block." +default = 1e-05 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.cg_theta] +type = "array" +longname = "initial coarse-grained material porosity" +description = "is the initial porosity of coarse-grained materials." +default = 0.2 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.sgm] +type = "array" +longname = "specific gravity of moist sediments" +description = "is the specific gravity of moist or unsaturated sediments. If not specified, then a default value of 1.7 is assigned." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.sgs] +type = "array" +longname = "specific gravity of saturated sediments" +description = "is the specific gravity of saturated sediments. If not specified, then a default value of 2.0 is assigned." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.packagedata.fields.packagedata] +type = "list" +optional = true +shape = [ + "ninterbeds", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.icsubno] +type = "integer" +longname = "CSUB id number for this entry" +description = "integer value that defines the CSUB interbed number associated with the specified PACKAGEDATA data on the line. CSUBNO must be greater than zero and less than or equal to NINTERBEDS. CSUB information must be specified for every CSUB cell or the program will terminate with an error. The program will also terminate with an error if information for a CSUB interbed number is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.packagedata.fields.packagedata.item.fields.cdelay] +type = "string" +longname = "delay type" +description = "character string that defines the subsidence delay type for the interbed. Possible subsidence package CDELAY strings include: NODELAY--character keyword to indicate that delay will not be simulated in the interbed. DELAY--character keyword to indicate that delay will be simulated in the interbed." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.pcs0] +type = "double" +longname = "initial stress" +description = "is the initial offset from the calculated initial effective stress or initial preconsolidation stress in the interbed, in units of height of a column of water. PCS0 is the initial preconsolidation stress if SPECIFIED_INITIAL_INTERBED_STATE or SPECIFIED_INITIAL_PRECONSOLIDATION_STRESS are specified in the OPTIONS block. If HEAD_BASED is specified in the OPTIONS block, PCS0 is the initial offset from the calculated initial head or initial preconsolidation head in the CSUB interbed and the initial preconsolidation stress is calculated from the calculated initial effective stress or calculated initial geostatic stress, respectively." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.thick_frac] +type = "double" +longname = "interbed thickness or cell fraction" +description = "is the interbed thickness or cell fraction of the interbed. Interbed thickness is specified as a fraction of the cell thickness if CELL_FRACTION is specified in the OPTIONS block." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rnb] +type = "double" +longname = "delay interbed material factor" +description = "is the interbed material factor equivalent number of interbeds in the interbed system represented by the interbed. RNB must be greater than or equal to 1 if CDELAY is DELAY. Otherwise, RNB can be any value." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ssv_cc] +type = "double" +longname = "initial interbed inelastic specific storage" +description = "is the initial inelastic specific storage or compression index of the interbed. The compression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated interbed inelastic specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.sse_cr] +type = "double" +longname = "initial interbed elastic specific storage" +description = "is the initial elastic coarse-grained material specific storage or recompression index of the interbed. The recompression index is specified if COMPRESSION_INDICES is specified in the OPTIONS block. Specified or calculated interbed elastic specific storage values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.theta] +type = "double" +longname = "initial interbed porosity" +description = "is the initial porosity of the interbed." +default = 0.2 +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.kv] +type = "double" +longname = "delay interbed vertical hydraulic conductivity" +description = "is the vertical hydraulic conductivity of the delay interbed. KV must be greater than 0 if CDELAY is DELAY. Otherwise, KV can be any value." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.h0] +type = "double" +longname = "initial delay interbed head" +description = "is the initial offset from the head in cell cellid or the initial head in the delay interbed. H0 is the initial head in the delay bed if SPECIFIED_INITIAL_INTERBED_STATE or SPECIFIED_INITIAL_DELAY_HEAD are specified in the OPTIONS block. H0 can be any value if CDELAY is NODELAY." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the CSUB cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxsig0", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.sig0] +type = "double" +longname = "well stress offset" +description = "is the stress offset for the cell. SIG0 is added to the calculated geostatic stress for the cell. SIG0 is specified only if MAXSIG0 is specified to be greater than 0 in the DIMENSIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.precon_head] +set_in = "ar" +source = "initial_preconsolidation_head" +type = "logical" + +[memory.icompress] +set_in = "ar" +source = "compression_indices" +type = "logical" + +[memory.matprop] +set_in = "ar" +source = "update_material_properties" +type = "logical" + +[memory.interbed_state] +set_in = "ar" +source = "specified_initial_interbed_state" +type = "integer" + +[memory.precon_stress] +set_in = "ar" +source = "specified_initial_preconsolidation_stress" +type = "logical" + +[memory.delay_head] +set_in = "ar" +source = "specified_initial_delay_head" +type = "logical" + +[memory.stress_lag] +set_in = "ar" +source = "effective_stress_lag" +type = "logical" + +[memory.csvinterbed] +set_in = "ar" +source = "strain_csv_interbed" +type = "logical" + +[memory.interbedstrainfn] +set_in = "ar" +type = "string" + +[memory.csvcoarse] +set_in = "ar" +source = "strain_csv_coarse" +type = "logical" + +[memory.coarsestrainfn] +set_in = "ar" +type = "string" + +[memory.cmpfn] +set_in = "ar" +type = "string" + +[memory.cmpelastic] +set_in = "ar" +source = "compaction_elastic" +type = "logical" + +[memory.elasticcmpfn] +set_in = "ar" +type = "string" + +[memory.cmpinelastic] +set_in = "ar" +source = "compaction_inelastic" +type = "logical" + +[memory.inelasticcmpfn] +set_in = "ar" +type = "string" + +[memory.cmpinterbed] +set_in = "ar" +source = "compaction_interbed" +type = "logical" + +[memory.interbedcmpfn] +set_in = "ar" +type = "string" + +[memory.cmpcoarse] +set_in = "ar" +source = "compaction_coarse" +type = "logical" + +[memory.cmpcoarsefn] +set_in = "ar" +type = "string" + +[memory.zdispfn] +set_in = "ar" +type = "string" + +[memory.pkgconverge] +set_in = "ar" +source = "package_convergence" +type = "logical" + +[memory.pkgconvergefn] +set_in = "ar" +type = "string" + +[memory.maxbound] +set_in = "ar" +source = "maxsig0" +type = "integer" + +[memory.cellid_pkgdata] +type = "array" +set_in = "ar" +source = "cellid" +dtype = "integer" +shape = [ + "ncelldim", +] + +[memory.ninterbeds] +set_in = "ar" +source = "ninterbeds" +type = "integer" + +[memory.cg_ske_cr] +type = "array" +set_in = "ar" +source = "cg_ske_cr" +dtype = "double" +shape = [ + "nodes", +] + +[memory.cg_theta] +type = "array" +set_in = "ar" +source = "cg_theta" +dtype = "double" +shape = [ + "nodes", +] + +[memory.sgm] +type = "array" +set_in = "ar" +source = "sgm" +dtype = "double" +shape = [ + "nodes", +] + +[memory.sgs] +type = "array" +set_in = "ar" +source = "sgs" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml new file mode 100644 index 00000000..9a37b1c6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-csub.yaml @@ -0,0 +1,560 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-csub +parent: gwf-nam +dims: + ninterbeds: + value: ninterbeds + scope: model + maxsig0: + value: maxsig0 + scope: model + ncelldim: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of CSUB cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of CSUB information will be written to the listing + file immediately after it is read. + optional: true + save_flows: + type: keyword + longname: keyword to save CSUB flows + description: keyword to indicate that cell-by-cell flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + gammaw: + type: double + longname: unit weight of water + description: unit weight of water. For freshwater, GAMMAW is 9806.65 Newtons/cubic meters or 62.48 + lb/cubic foot in SI and English units, respectively. By default, GAMMAW is 9806.65 Newtons/cubic + meters. + optional: true + default: 9806.65 + beta: + type: double + longname: compressibility of water + description: compressibility of water. Typical values of BETA are 4.6512e-10 1/Pa or 2.2270e-8 + lb/square foot in SI and English units, respectively. By default, BETA is 4.6512e-10 1/Pa. + optional: true + default: 4.6512e-10 + head_based: + type: keyword + longname: keyword to indicate the head-based formulation will be used + description: keyword to indicate the head-based formulation will be used to simulate coarse-grained + aquifer materials and no-delay and delay interbeds. Specifying HEAD_BASED also specifies the + INITIAL_PRECONSOLIDATION_HEAD option. + optional: true + initial_preconsolidation_head: + type: keyword + longname: keyword to indicate that preconsolidation heads will be specified + description: keyword to indicate that preconsolidation heads will be specified for no-delay and + delay interbeds in the PACKAGEDATA block. If the SPECIFIED_INITIAL_INTERBED_STATE option is + specified in the OPTIONS block, user-specified preconsolidation heads in the PACKAGEDATA block + are absolute values. Otherwise, user-specified preconsolidation heads in the PACKAGEDATA block + are relative to steady-state or initial heads. + optional: true + ndelaycells: + type: integer + longname: number of interbed cell nodes + description: number of nodes used to discretize delay interbeds. If not specified, then a default + value of 19 is assigned. + optional: true + compression_indices: + type: keyword + longname: keyword to indicate CR and CC are read instead of SSE and SSV + description: keyword to indicate that the recompression (CR) and compression (CC) indices are + specified instead of the elastic specific storage (SSE) and inelastic specific storage (SSV) + coefficients. If not specified, then elastic specific storage (SSE) and inelastic specific storage + (SSV) coefficients must be specified. + optional: true + update_material_properties: + type: keyword + longname: keyword to indicate material properties can change during the simulations + description: keyword to indicate that the thickness and void ratio of coarse-grained and interbed + sediments (delay and no-delay) will vary during the simulation. If not specified, the thickness + and void ratio of coarse-grained and interbed sediments will not vary during the simulation. + optional: true + cell_fraction: + type: keyword + longname: keyword to indicate cell fraction interbed thickness + description: keyword to indicate that the thickness of interbeds will be specified in terms of + the fraction of cell thickness. If not specified, interbed thicknness must be specified. + optional: true + specified_initial_interbed_state: + type: keyword + longname: keyword to indicate that absolute initial states will be specified + description: keyword to indicate that absolute preconsolidation stresses (heads) and delay bed + heads will be specified for interbeds defined in the PACKAGEDATA block. The SPECIFIED_INITIAL_INTERBED_STATE + option is equivalent to specifying the SPECIFIED_INITIAL_PRECONSOLITATION_STRESS and SPECIFIED_INITIAL_DELAY_HEAD. + If SPECIFIED_INITIAL_INTERBED_STATE is not specified then preconsolidation stress (head) and + delay bed head values specified in the PACKAGEDATA block are relative to simulated values of + the first stress period if steady-state or initial stresses and GWF heads if the first stress + period is transient. + optional: true + specified_initial_preconsolidation_stress: + type: keyword + longname: keyword to indicate that absolute initial preconsolidation stresses (head) will be specified + description: keyword to indicate that absolute preconsolidation stresses (heads) will be specified + for interbeds defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_PRECONSOLITATION_STRESS + and SPECIFIED_INITIAL_INTERBED_STATE are not specified then preconsolidation stress (head) values + specified in the PACKAGEDATA block are relative to simulated values if the first stress period + is steady-state or initial stresses (heads) if the first stress period is transient. + optional: true + specified_initial_delay_head: + type: keyword + longname: keyword to indicate that absolute initial delay bed heads will be specified + description: keyword to indicate that absolute initial delay bed head will be specified for interbeds + defined in the PACKAGEDATA block. If SPECIFIED_INITIAL_DELAY_HEAD and SPECIFIED_INITIAL_INTERBED_STATE + are not specified then delay bed head values specified in the PACKAGEDATA block are relative + to simulated values if the first stress period is steady-state or initial GWF heads if the first + stress period is transient. + optional: true + effective_stress_lag: + type: keyword + longname: keyword to indicate that specific storage will be calculate using the effective stress + from the previous time step + description: keyword to indicate the effective stress from the previous time step will be used + to calculate specific storage values. This option can 1) help with convergence in models with + thin cells and water table elevations close to land surface; 2) is identical to the approach + used in the SUBWT package for MODFLOW-2005; and 3) is only used if the effective-stress formulation + is being used. By default, current effective stress values are used to calculate specific storage + values. + optional: true + strainib_filerecord: + type: record + optional: true + fields: + strain_csv_interbed: + type: file + longname: budget keyword + description: keyword to specify the record that corresponds to final interbed strain output. + mode: fileout + straincg_filerecord: + type: record + optional: true + fields: + strain_csv_coarse: + type: file + longname: budget keyword + description: keyword to specify the record that corresponds to final coarse-grained material + strain output. + mode: fileout + compaction_filerecord: + type: record + optional: true + fields: + compaction: + type: file + longname: compaction keyword + description: keyword to specify that record corresponds to the compaction. + mode: fileout + compaction_elastic_filerecord: + type: record + optional: true + fields: + compaction_elastic: + type: file + longname: elastic interbed compaction keyword + description: keyword to specify that record corresponds to the elastic interbed compaction + binary file. + mode: fileout + compaction_inelastic_filerecord: + type: record + optional: true + fields: + compaction_inelastic: + type: file + longname: inelastic interbed compaction keyword + description: keyword to specify that record corresponds to the inelastic interbed compaction + binary file. + mode: fileout + compaction_interbed_filerecord: + type: record + optional: true + fields: + compaction_interbed: + type: file + longname: interbed compaction keyword + description: keyword to specify that record corresponds to the interbed compaction binary + file. + mode: fileout + compaction_coarse_filerecord: + type: record + optional: true + fields: + compaction_coarse: + type: file + longname: coarse compaction keyword + description: keyword to specify that record corresponds to the elastic coarse-grained material + compaction binary file. + mode: fileout + zdisplacement_filerecord: + type: record + optional: true + fields: + zdisplacement: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the z-displacement binary file. + mode: fileout + package_convergence_filerecord: + type: record + optional: true + fields: + package_convergence: + type: file + longname: package_convergence keyword + description: keyword to specify that record corresponds to the package convergence comma spaced + values file. Package convergence data is for delay interbeds. A warning message will be + issued if package convergence data is requested but delay interbeds are not included in + the package. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + ninterbeds: + type: integer + longname: number of CSUB interbed systems + description: is the number of CSUB interbed systems. More than 1 CSUB interbed systems can be + assigned to a GWF cell; however, only 1 GWF cell can be assigned to a single CSUB interbed system. + maxsig0: + type: integer + longname: maximum number of stress offset cells + description: is the maximum number of cells that can have a specified stress offset. More than + 1 stress offset can be assigned to a GWF cell. By default, MAXSIG0 is 0. + optional: true + griddata: + fields: + cg_ske_cr: + type: array + longname: elastic coarse specific storage + description: is the initial elastic coarse-grained material specific storage or recompression + index. The recompression index is specified if COMPRESSION_INDICES is specified in the OPTIONS + block. Specified or calculated elastic coarse-grained material specific storage values are + not adjusted from initial values if HEAD_BASED is specified in the OPTIONS block. + default: 1.0e-05 + netcdf: true + dtype: double + shape: + - nodes + cg_theta: + type: array + longname: initial coarse-grained material porosity + description: is the initial porosity of coarse-grained materials. + default: 0.2 + netcdf: true + dtype: double + shape: + - nodes + sgm: + type: array + longname: specific gravity of moist sediments + description: is the specific gravity of moist or unsaturated sediments. If not specified, then + a default value of 1.7 is assigned. + optional: true + netcdf: true + dtype: double + shape: + - nodes + sgs: + type: array + longname: specific gravity of saturated sediments + description: is the specific gravity of saturated sediments. If not specified, then a default + value of 2.0 is assigned. + optional: true + netcdf: true + dtype: double + shape: + - nodes + packagedata: + fields: + packagedata: + type: list + optional: true + item: + type: record + fields: + icsubno: + type: integer + longname: CSUB id number for this entry + description: integer value that defines the CSUB interbed number associated with the specified + PACKAGEDATA data on the line. CSUBNO must be greater than zero and less than or equal + to NINTERBEDS. CSUB information must be specified for every CSUB cell or the program + will terminate with an error. The program will also terminate with an error if information + for a CSUB interbed number is specified more than once. + tagged: false + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + cdelay: + type: string + longname: delay type + description: 'character string that defines the subsidence delay type for the interbed. + Possible subsidence package CDELAY strings include: NODELAY--character keyword to indicate + that delay will not be simulated in the interbed. DELAY--character keyword to indicate + that delay will be simulated in the interbed.' + tagged: false + pcs0: + type: double + longname: initial stress + description: is the initial offset from the calculated initial effective stress or initial + preconsolidation stress in the interbed, in units of height of a column of water. PCS0 + is the initial preconsolidation stress if SPECIFIED_INITIAL_INTERBED_STATE or SPECIFIED_INITIAL_PRECONSOLIDATION_STRESS + are specified in the OPTIONS block. If HEAD_BASED is specified in the OPTIONS block, PCS0 + is the initial offset from the calculated initial head or initial preconsolidation head + in the CSUB interbed and the initial preconsolidation stress is calculated from the calculated + initial effective stress or calculated initial geostatic stress, respectively. + tagged: false + thick_frac: + type: double + longname: interbed thickness or cell fraction + description: is the interbed thickness or cell fraction of the interbed. Interbed thickness + is specified as a fraction of the cell thickness if CELL_FRACTION is specified in the + OPTIONS block. + tagged: false + rnb: + type: double + longname: delay interbed material factor + description: is the interbed material factor equivalent number of interbeds in the interbed + system represented by the interbed. RNB must be greater than or equal to 1 if CDELAY is + DELAY. Otherwise, RNB can be any value. + tagged: false + ssv_cc: + type: double + longname: initial interbed inelastic specific storage + description: is the initial inelastic specific storage or compression index of the interbed. + The compression index is specified if COMPRESSION_INDICES is specified in the OPTIONS + block. Specified or calculated interbed inelastic specific storage values are not adjusted + from initial values if HEAD_BASED is specified in the OPTIONS block. + tagged: false + sse_cr: + type: double + longname: initial interbed elastic specific storage + description: is the initial elastic coarse-grained material specific storage or recompression + index of the interbed. The recompression index is specified if COMPRESSION_INDICES is + specified in the OPTIONS block. Specified or calculated interbed elastic specific storage + values are not adjusted from initial values if HEAD_BASED is specified in the OPTIONS + block. + tagged: false + theta: + type: double + longname: initial interbed porosity + description: is the initial porosity of the interbed. + default: 0.2 + tagged: false + kv: + type: double + longname: delay interbed vertical hydraulic conductivity + description: is the vertical hydraulic conductivity of the delay interbed. KV must be greater + than 0 if CDELAY is DELAY. Otherwise, KV can be any value. + tagged: false + h0: + type: double + longname: initial delay interbed head + description: is the initial offset from the head in cell cellid or the initial head in the + delay interbed. H0 is the initial head in the delay bed if SPECIFIED_INITIAL_INTERBED_STATE + or SPECIFIED_INITIAL_DELAY_HEAD are specified in the OPTIONS block. H0 can be any value + if CDELAY is NODELAY. + tagged: false + boundname: + type: string + longname: well name + description: name of the CSUB cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + shape: + - ninterbeds + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + sig0: + type: double + longname: well stress offset + description: is the stress offset for the cell. SIG0 is added to the calculated geostatic + stress for the cell. SIG0 is specified only if MAXSIG0 is specified to be greater than + 0 in the DIMENSIONS block. If the Options block includes a TIMESERIESFILE entry (see the + 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + tagged: false + time_series: true + shape: + - maxsig0 +memory: + precon_head: + set_in: ar + source: initial_preconsolidation_head + type: logical + icompress: + set_in: ar + source: compression_indices + type: logical + matprop: + set_in: ar + source: update_material_properties + type: logical + interbed_state: + set_in: ar + source: specified_initial_interbed_state + type: integer + precon_stress: + set_in: ar + source: specified_initial_preconsolidation_stress + type: logical + delay_head: + set_in: ar + source: specified_initial_delay_head + type: logical + stress_lag: + set_in: ar + source: effective_stress_lag + type: logical + csvinterbed: + set_in: ar + source: strain_csv_interbed + type: logical + interbedstrainfn: + set_in: ar + type: string + csvcoarse: + set_in: ar + source: strain_csv_coarse + type: logical + coarsestrainfn: + set_in: ar + type: string + cmpfn: + set_in: ar + type: string + cmpelastic: + set_in: ar + source: compaction_elastic + type: logical + elasticcmpfn: + set_in: ar + type: string + cmpinelastic: + set_in: ar + source: compaction_inelastic + type: logical + inelasticcmpfn: + set_in: ar + type: string + cmpinterbed: + set_in: ar + source: compaction_interbed + type: logical + interbedcmpfn: + set_in: ar + type: string + cmpcoarse: + set_in: ar + source: compaction_coarse + type: logical + cmpcoarsefn: + set_in: ar + type: string + zdispfn: + set_in: ar + type: string + pkgconverge: + set_in: ar + source: package_convergence + type: logical + pkgconvergefn: + set_in: ar + type: string + maxbound: + set_in: ar + source: maxsig0 + type: integer + cellid_pkgdata: + type: array + set_in: ar + source: cellid + dtype: integer + shape: + - ncelldim + ninterbeds: + set_in: ar + source: ninterbeds + type: integer + cg_ske_cr: + type: array + set_in: ar + source: cg_ske_cr + dtype: double + shape: + - nodes + cg_theta: + type: array + set_in: ar + source: cg_theta + dtype: double + shape: + - nodes + sgm: + type: array + set_in: ar + source: sgm + dtype: double + shape: + - nodes + sgs: + type: array + set_in: ar + source: sgs + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.json new file mode 100644 index 00000000..4274988e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.json @@ -0,0 +1,285 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-dis", + "parent": "gwf-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nlay * nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "3", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid.", + "default": 1 + }, + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.toml new file mode 100644 index 00000000..fcfbd7e3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.toml @@ -0,0 +1,261 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-dis" +parent = "gwf-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nlay * nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "3" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." +default = 1 + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the top model layer." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.yaml new file mode 100644 index 00000000..61caa366 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-dis.yaml @@ -0,0 +1,247 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-dis +parent: gwf-nam +dims: + nlay: + value: nlay + scope: model + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nlay * nrow * ncol + scope: model + ncelldim: + value: '3' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + default: 1 + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - nrow + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the top model layer. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + botm: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN + value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncol + - nrow + - nlay +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncol + - nrow + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.json new file mode 100644 index 00000000..da504d87 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.json @@ -0,0 +1,365 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-disu", + "parent": "gwf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nja": { + "value": "nja", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + }, + "njas": { + "value": "(nja - nodes) / 2" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "vertical_offset_tolerance": { + "type": "double", + "longname": "vertical length dimension for top and bottom checking", + "description": "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used.", + "optional": true, + "default": 0.0 + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of cells in the model grid." + }, + "nja": { + "type": "integer", + "longname": "number of columns", + "description": "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + }, + "nvert": { + "type": "integer", + "longname": "number of vertices", + "description": "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the model grid.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "longname": "cell surface area", + "description": "is the cell surface area (in plan view).", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "connectiondata": { + "fields": { + "iac": { + "type": "array", + "longname": "number of cell connections", + "description": "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "ja": { + "type": "array", + "longname": "grid connectivity", + "description": "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWF cells and their connections to the other GWF cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "ihc": { + "type": "array", + "longname": "connection type", + "description": "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "cl12": { + "type": "array", + "longname": "connection lengths", + "description": "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "hwva": { + "type": "array", + "longname": "connection lengths", + "description": "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "angldegx": { + "type": "array", + "longname": "angle of face normal to connection", + "description": "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians.", + "optional": true, + "dtype": "double", + "shape": [ + "nja" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "optional": true, + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "optional": true, + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "voffsettol": { + "set_in": "ar", + "source": "vertical_offset_tolerance", + "type": "double" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nja": { + "set_in": "ar", + "source": "nja", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "set_in": "ar", + "source": "bot", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.toml new file mode 100644 index 00000000..25665573 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.toml @@ -0,0 +1,327 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-disu" +parent = "gwf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nja] +value = "nja" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[dims.njas] +value = "(nja - nodes) / 2" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.vertical_offset_tolerance] +type = "double" +longname = "vertical length dimension for top and bottom checking" +description = "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used." +optional = true +default = 0.0 + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of layers" +description = "is the number of cells in the model grid." + +[blocks.dimensions.fields.nja] +type = "integer" +longname = "number of columns" +description = "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of vertices" +description = "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required." +optional = true + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the model grid." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bot] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.area] +type = "array" +longname = "cell surface area" +description = "is the cell surface area (in plan view)." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.iac] +type = "array" +longname = "number of cell connections" +description = "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA." +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.ja] +type = "array" +longname = "grid connectivity" +description = "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWF cells and their connections to the other GWF cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.ihc] +type = "array" +longname = "connection type" +description = "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.cl12] +type = "array" +longname = "connection lengths" +description = "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.hwva] +type = "array" +longname = "connection lengths" +description = "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.angldegx] +type = "array" +longname = "angle of face normal to connection" +description = "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians." +optional = true +dtype = "double" +shape = [ + "nja", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +optional = true +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +optional = true +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.voffsettol] +set_in = "ar" +source = "vertical_offset_tolerance" +type = "double" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nja] +set_in = "ar" +source = "nja" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bot] +type = "array" +set_in = "ar" +source = "bot" +dtype = "double" +shape = [ + "nodes", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.yaml new file mode 100644 index 00000000..8ddcb02b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disu.yaml @@ -0,0 +1,347 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-disu +parent: gwf-nam +dims: + nodes: + value: nodes + scope: model + nja: + value: nja + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model + njas: + value: (nja - nodes) / 2 +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + vertical_offset_tolerance: + type: double + longname: vertical length dimension for top and bottom checking + description: checks are performed to ensure that the top of a cell is not higher than the bottom + of an overlying cell. This option can be used to specify the tolerance that is used for checking. If + top of a cell is above the bottom of an overlying cell by a value less than this tolerance, + then the program will not terminate with an error. The default value is zero. This option + should generally not be used. + optional: true + default: 0.0 + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of layers + description: is the number of cells in the model grid. + nja: + type: integer + longname: number of columns + description: is the sum of the number of connections and NODES. When calculating the total number + of connections, the connection between cell n and cell m is considered to be different from + the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, + including n to m and m to n, and the total number of cells. + nvert: + type: integer + longname: number of vertices + description: is the total number of (x, y) vertex pairs used to define the plan-view shape of + each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES + and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks + should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are + specified in the NPF Package, then this information is required. + optional: true + griddata: + fields: + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the model grid. + dtype: double + shape: + - nodes + bot: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - nodes + area: + type: array + longname: cell surface area + description: is the cell surface area (in plan view). + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values + of -1 cannot be specified for the DISU Package. + optional: true + dtype: integer + shape: + - nodes + connectiondata: + fields: + iac: + type: array + longname: number of cell connections + description: is the number of connections (plus 1) for each cell. The sum of all the entries + in IAC must be equal to NJA. + dtype: integer + shape: + - nodes + ja: + type: array + longname: grid connectivity + description: is a list of cell number (n) followed by its connecting cell numbers (m) for each + of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This + list is sequentially provided for the first to the last cell. The first value in the list must + be cell n itself, and the remaining cells must be listed in an increasing order (sorted from + lowest number to highest). Note that the cell and its connections are only supplied for the + GWF cells and their connections to the other GWF cells. Also note that the JA list input may + be divided such that every node and its connectivity list can be on a separate line for ease + in readability of the file. To further ease readability of the file, the node number of the + cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign + of which is subsequently converted to positive by the code. + dtype: integer + shape: + - nja + ihc: + type: array + longname: connection type + description: is an index array indicating the direction between node n and all of its m connections. If + IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell + m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is + less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If + IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection + is vertically staggered. A vertically staggered connection is one in which a cell is horizontally + connected to more than one cell in a horizontal connection. + dtype: integer + shape: + - nja + cl12: + type: array + longname: connection lengths + description: is the array containing connection lengths between the center of cell n and the shared + face with each adjacent m cell. + dtype: double + shape: + - nja + hwva: + type: array + longname: connection lengths + description: is a symmetric array of size NJA. For horizontal connections, entries in HWVA are + the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the + vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and + area. Entries in the HWVA array have a one-to-one correspondence with the connections specified + in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA + array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries + in the HWVA array must be symmetric; the program will terminate with an error if the value for + HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m + connection. + dtype: double + shape: + - nja + angldegx: + type: array + longname: angle of face normal to connection + description: is the angle (in degrees) between the horizontal x-axis and the outward normal to + the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, + where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive + y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF + Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option + is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions + are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the + diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from + MODFLOW-USG, which reads a similar variable (ANGLEX) in radians. + optional: true + dtype: double + shape: + - nja + vertices: + fields: + vertices: + type: list + longname: vertices data + optional: true + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + optional: true + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the cell2d number. Records in the CELL2D block must be listed in consecutive + order from 1 to NODES. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + voffsettol: + set_in: ar + source: vertical_offset_tolerance + type: double + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nja: + set_in: ar + source: nja + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - nodes + bot: + type: array + set_in: ar + source: bot + dtype: double + shape: + - nodes + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.json new file mode 100644 index 00000000..f4369991 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.json @@ -0,0 +1,313 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-disv", + "parent": "gwf-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "ncpl": { + "value": "ncpl", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "nodes": { + "value": "nlay * ncpl", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid." + }, + "ncpl": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "model top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "ncpl": { + "set_in": "ar", + "source": "ncpl", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.toml new file mode 100644 index 00000000..9160c06f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.toml @@ -0,0 +1,277 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-disv" +parent = "gwf-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.ncpl] +value = "ncpl" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.nodes] +value = "nlay * ncpl" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." + +[blocks.dimensions.fields.ncpl] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.top] +type = "array" +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +netcdf = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +netcdf = true +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "ncpl", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.ncpl] +set_in = "ar" +source = "ncpl" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncpl", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.yaml new file mode 100644 index 00000000..8825d1a7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-disv.yaml @@ -0,0 +1,272 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-disv +parent: gwf-nam +dims: + nlay: + value: nlay + scope: model + ncpl: + value: ncpl + scope: model + nvert: + value: nvert + scope: model + nodes: + value: nlay * ncpl + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + ncpl: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + top: + type: array + longname: model top elevation + description: is the top elevation for each cell in the top model layer. + netcdf: true + dtype: double + shape: + - ncpl + botm: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + netcdf: true + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN + value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncpl + - nlay + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - ncpl +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + ncpl: + set_in: ar + source: ncpl + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncpl + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncpl + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json new file mode 100644 index 00000000..61069060 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json @@ -0,0 +1,309 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-drn", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of drain conductance.", + "optional": true + }, + "auxdepthname": { + "type": "string", + "longname": "name of auxiliary variable for drainage depth", + "description": "name of a variable listed in AUXILIARY that defines the depth at which drainage discharge will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling option is described in more detail in Chapter 3 of the Supplemental Technical Information.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of drain cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of drain information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of drain flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that drain flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the Drain Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "dev_cubic_scaling": { + "type": "keyword", + "longname": "cubic-scaling", + "description": "cubic-scaling is used to scale the drain conductance", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of drains", + "description": "integer value specifying the maximum number of drains cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "elev": { + "type": "double", + "longname": "drain elevation", + "description": "is the elevation of the drain. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "cond": { + "type": "double", + "longname": "drain conductance", + "description": "is the hydraulic conductance of the interface between the aquifer and the drain. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each drain. The values of auxiliary variables must be present for each drain. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "drain name", + "description": "name of the drain cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "icubicsfac": { + "set_in": "ar", + "source": "dev_cubic_scaling", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: elev, 1: cond.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "DRN", + "output": "ipakcb", + "obs_type": "DRN", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "DRN-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml new file mode 100644 index 00000000..79268c7f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml @@ -0,0 +1,283 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-drn" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of drain conductance." +optional = true + +[blocks.options.fields.auxdepthname] +type = "string" +longname = "name of auxiliary variable for drainage depth" +description = "name of a variable listed in AUXILIARY that defines the depth at which drainage discharge will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling option is described in more detail in Chapter 3 of the Supplemental Technical Information." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of drain cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of drain information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of drain flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that drain flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the Drain Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.dev_cubic_scaling] +type = "keyword" +longname = "cubic-scaling" +description = "cubic-scaling is used to scale the drain conductance" +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of drains" +description = "integer value specifying the maximum number of drains cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.elev] +type = "double" +longname = "drain elevation" +description = "is the elevation of the drain. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.cond] +type = "double" +longname = "drain conductance" +description = "is the hydraulic conductance of the interface between the aquifer and the drain. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each drain. The values of auxiliary variables must be present for each drain. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "drain name" +description = "name of the drain cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.icubicsfac] +set_in = "ar" +source = "dev_cubic_scaling" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: elev, 1: cond." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "DRN" +output = "ipakcb" +obs_type = "DRN" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "DRN-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml new file mode 100644 index 00000000..47b22152 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml @@ -0,0 +1,280 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-drn +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of drain conductance. + optional: true + auxdepthname: + type: string + longname: name of auxiliary variable for drainage depth + description: name of a variable listed in AUXILIARY that defines the depth at which drainage discharge + will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then + ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN + is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor + is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation + at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) + scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) + when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling + option is described in more detail in Chapter 3 of the Supplemental Technical Information. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of drain cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of drain information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of drain flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that drain flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the Drain Package can be used with the + Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + dev_cubic_scaling: + type: keyword + longname: cubic-scaling + description: cubic-scaling is used to scale the drain conductance + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of drains + description: integer value specifying the maximum number of drains cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + elev: + type: double + longname: drain elevation + description: is the elevation of the drain. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + cond: + type: double + longname: drain conductance + description: is the hydraulic conductance of the interface between the aquifer and the drain. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each drain. The values + of auxiliary variables must be present for each drain. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: drain name + description: name of the drain cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + icubicsfac: + set_in: ar + source: dev_cubic_scaling + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: elev, 1: cond.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: DRN + output: ipakcb + obs_type: DRN + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: DRN-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json new file mode 100644 index 00000000..e4a56277 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json @@ -0,0 +1,291 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-drng", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readarraygrid": { + "type": "keyword", + "longname": "use array-based grid input", + "description": "indicates that array-based grid input will be used for the drain package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30).", + "default": "true", + "developmode": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of drain conductance.", + "optional": true + }, + "auxdepthname": { + "type": "string", + "longname": "name of auxiliary variable for drainage depth", + "description": "name of a variable listed in AUXILIARY that defines the depth at which drainage discharge will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling option is described in more detail in Chapter 3 of the Supplemental Technical Information.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of drain information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of drain flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save DRNG flows to budget file", + "description": "keyword to indicate that drain flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the Drain Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "dev_cubic_scaling": { + "type": "keyword", + "longname": "cubic-scaling", + "description": "cubic-scaling is used to scale the drain conductance", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of drain cells in any stress period", + "description": "integer value specifying the maximum number of drains cells that will be specified for use during any stress period.", + "optional": true + } + } + }, + "period": { + "fields": { + "elev": { + "type": "array", + "longname": "drain elevation", + "description": "is the elevation of the drain.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cond": { + "type": "array", + "longname": "drain conductance", + "description": "is the hydraulic conductance of the interface between the aquifer and the drain.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "aux": { + "type": "array", + "longname": "drain auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "icubicsfac": { + "set_in": "ar", + "source": "dev_cubic_scaling", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "DRN", + "output": "ipakcb", + "obs_type": "DRN", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "DRN-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml new file mode 100644 index 00000000..9a53383c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml @@ -0,0 +1,269 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-drng" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readarraygrid] +type = "keyword" +longname = "use array-based grid input" +description = "indicates that array-based grid input will be used for the drain package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30)." +default = "true" +developmode = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of drain conductance." +optional = true + +[blocks.options.fields.auxdepthname] +type = "string" +longname = "name of auxiliary variable for drainage depth" +description = "name of a variable listed in AUXILIARY that defines the depth at which drainage discharge will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling option is described in more detail in Chapter 3 of the Supplemental Technical Information." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of drain information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of drain flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save DRNG flows to budget file" +description = "keyword to indicate that drain flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the Drain Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.dev_cubic_scaling] +type = "keyword" +longname = "cubic-scaling" +description = "cubic-scaling is used to scale the drain conductance" +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of drain cells in any stress period" +description = "integer value specifying the maximum number of drains cells that will be specified for use during any stress period." +optional = true + +[blocks.period.fields.elev] +type = "array" +longname = "drain elevation" +description = "is the elevation of the drain." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.cond] +type = "array" +longname = "drain conductance" +description = "is the hydraulic conductance of the interface between the aquifer and the drain." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.aux] +type = "array" +longname = "drain auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.icubicsfac] +set_in = "ar" +source = "dev_cubic_scaling" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "DRN" +output = "ipakcb" +obs_type = "DRN" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "DRN-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml new file mode 100644 index 00000000..33f162e0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml @@ -0,0 +1,262 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-drng +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readarraygrid: + type: keyword + longname: use array-based grid input + description: indicates that array-based grid input will be used for the drain package. This keyword + must be specified to use array-based grid input. When READARRAYGRID is specified, values must + be provided for every cell within a model grid, even those cells that have an IDOMAIN value + less than one. Values assigned to cells with IDOMAIN values less than one are not used and + have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30). + default: 'true' + developmode: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of drain conductance. + optional: true + auxdepthname: + type: string + longname: name of auxiliary variable for drainage depth + description: name of a variable listed in AUXILIARY that defines the depth at which drainage discharge + will be scaled. If a positive value is specified for the AUXDEPTHNAME AUXILIARY variable, then + ELEV is the elevation at which the drain starts to discharge and ELEV + DDRN (assuming DDRN + is the AUXDEPTHNAME variable) is the elevation when the drain conductance (COND) scaling factor + is 1. If a negative drainage depth value is specified for DDRN, then ELEV + DDRN is the elevation + at which the drain starts to discharge and ELEV is the elevation when the conductance (COND) + scaling factor is 1. A linear- or cubic-scaling is used to scale the drain conductance (COND) + when the Standard or Newton-Raphson Formulation is used, respectively. This discharge scaling + option is described in more detail in Chapter 3 of the Supplemental Technical Information. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of drain information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of drain flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save DRNG flows to budget file + description: keyword to indicate that drain flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the Drain Package can be used with the + Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dev_cubic_scaling: + type: keyword + longname: cubic-scaling + description: cubic-scaling is used to scale the drain conductance + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of drain cells in any stress period + description: integer value specifying the maximum number of drains cells that will be specified + for use during any stress period. + optional: true + period: + fields: + elev: + type: array + longname: drain elevation + description: is the elevation of the drain. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + cond: + type: array + longname: drain conductance + description: is the hydraulic conductance of the interface between the aquifer and the drain. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + aux: + type: array + longname: drain auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If the value specified here for the auxiliary + variable is the same as auxmultname, then the conductance array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + icubicsfac: + set_in: ar + source: dev_cubic_scaling + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: DRN + output: ipakcb + obs_type: DRN + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: DRN-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json new file mode 100644 index 00000000..202c9358 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json @@ -0,0 +1,353 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-evt", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "nseg": { + "value": "nseg", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "fixed_cell": { + "type": "keyword", + "longname": "if cell is dry do not apply evapotranspiration to underlying cell", + "description": "indicates that evapotranspiration will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive.", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of evapotranspiration rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of evapotranspiration cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of evapotranspiration information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print evapotranspiration rates to listing file", + "description": "keyword to indicate that the list of evapotranspiration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save evapotranspiration rates to budget file", + "description": "keyword to indicate that evapotranspiration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "surf_rate_specified": { + "type": "keyword", + "longname": "specify proportion of evapotranspiration rate at ET surface", + "description": "indicates that the proportion of the evapotranspiration rate at the ET surface will be specified as PETM0 in list input.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of evapotranspiration cells", + "description": "integer value specifying the maximum number of evapotranspiration cells that will be specified for use during any stress period." + }, + "nseg": { + "type": "integer", + "longname": "number of ET segments", + "description": "number of ET segments. Default is one. When NSEG is greater than 1, the PXDP and PETM arrays must be of size NSEG - 1 and be listed in order from the uppermost segment down. Values for PXDP must be listed first followed by the values for PETM. PXDP defines the extinction-depth proportion at the bottom of a segment. PETM defines the proportion of the maximum ET flux rate at the bottom of a segment." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "surface": { + "type": "double", + "longname": "ET surface", + "description": "is the elevation of the ET surface ($L$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rate": { + "type": "double", + "longname": "maximum ET rate", + "description": "is the maximum ET flux rate ($LT^{-1}$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "depth": { + "type": "double", + "longname": "ET extinction depth", + "description": "is the ET extinction depth ($L$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "pxdp": { + "type": "array", + "longname": "proportion of ET extinction depth", + "description": "is the proportion of the ET extinction depth at the bottom of a segment (dimensionless). pxdp is an array of size (nseg - 1). Values in pxdp must be greater than 0.0 and less than 1.0. pxdp values for a cell must increase monotonically. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "nseg-1" + ] + }, + "petm": { + "type": "array", + "longname": "proportion of maximum ET rate", + "description": "is the proportion of the maximum ET flux rate at the bottom of a segment (dimensionless). petm is an array of size (nseg - 1). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "nseg-1" + ] + }, + "petm0": { + "type": "double", + "longname": "proportion of maximum ET rate at ET surface", + "description": "is the proportion of the maximum ET flux rate that will apply when head is at or above the ET surface (dimensionless). PETM0 is read only when the SURF_RATE_SPECIFIED option is used. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each evapotranspiration. The values of auxiliary variables must be present for each evapotranspiration. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "evapotranspiration name", + "description": "name of the evapotranspiration cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "surfratespec": { + "set_in": "ar", + "source": "surf_rate_specified", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nseg": { + "set_in": "ar", + "source": "nseg", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: surface, 1: rate, 2: depth, 3: petm0.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "EVT", + "output": "ipakcb", + "obs_type": "EVT", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml new file mode 100644 index 00000000..105fbf80 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml @@ -0,0 +1,327 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-evt" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.nseg] +value = "nseg" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.fixed_cell] +type = "keyword" +longname = "if cell is dry do not apply evapotranspiration to underlying cell" +description = "indicates that evapotranspiration will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of evapotranspiration rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of evapotranspiration cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of evapotranspiration information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print evapotranspiration rates to listing file" +description = "keyword to indicate that the list of evapotranspiration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save evapotranspiration rates to budget file" +description = "keyword to indicate that evapotranspiration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.surf_rate_specified] +type = "keyword" +longname = "specify proportion of evapotranspiration rate at ET surface" +description = "indicates that the proportion of the evapotranspiration rate at the ET surface will be specified as PETM0 in list input." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of evapotranspiration cells" +description = "integer value specifying the maximum number of evapotranspiration cells that will be specified for use during any stress period." + +[blocks.dimensions.fields.nseg] +type = "integer" +longname = "number of ET segments" +description = "number of ET segments. Default is one. When NSEG is greater than 1, the PXDP and PETM arrays must be of size NSEG - 1 and be listed in order from the uppermost segment down. Values for PXDP must be listed first followed by the values for PETM. PXDP defines the extinction-depth proportion at the bottom of a segment. PETM defines the proportion of the maximum ET flux rate at the bottom of a segment." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.surface] +type = "double" +longname = "ET surface" +description = "is the elevation of the ET surface ($L$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.rate] +type = "double" +longname = "maximum ET rate" +description = "is the maximum ET flux rate ($LT^{-1}$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.depth] +type = "double" +longname = "ET extinction depth" +description = "is the ET extinction depth ($L$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.pxdp] +type = "array" +longname = "proportion of ET extinction depth" +description = "is the proportion of the ET extinction depth at the bottom of a segment (dimensionless). pxdp is an array of size (nseg - 1). Values in pxdp must be greater than 0.0 and less than 1.0. pxdp values for a cell must increase monotonically. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "nseg-1", +] + +[blocks.period.fields.stress_period_data.item.fields.petm] +type = "array" +longname = "proportion of maximum ET rate" +description = "is the proportion of the maximum ET flux rate at the bottom of a segment (dimensionless). petm is an array of size (nseg - 1). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "nseg-1", +] + +[blocks.period.fields.stress_period_data.item.fields.petm0] +type = "double" +longname = "proportion of maximum ET rate at ET surface" +description = "is the proportion of the maximum ET flux rate that will apply when head is at or above the ET surface (dimensionless). PETM0 is read only when the SURF_RATE_SPECIFIED option is used. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each evapotranspiration. The values of auxiliary variables must be present for each evapotranspiration. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "evapotranspiration name" +description = "name of the evapotranspiration cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.surfratespec] +set_in = "ar" +source = "surf_rate_specified" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nseg] +set_in = "ar" +source = "nseg" +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: surface, 1: rate, 2: depth, 3: petm0." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "EVT" +output = "ipakcb" +obs_type = "EVT" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml new file mode 100644 index 00000000..efec3bf8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml @@ -0,0 +1,326 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-evt +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + nseg: + value: nseg + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + fixed_cell: + type: keyword + longname: if cell is dry do not apply evapotranspiration to underlying cell + description: indicates that evapotranspiration will not be reassigned to a cell underlying the + cell specified in the list if the specified cell is inactive. + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of evapotranspiration rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of evapotranspiration + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of evapotranspiration information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print evapotranspiration rates to listing file + description: keyword to indicate that the list of evapotranspiration flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save evapotranspiration rates to budget file + description: keyword to indicate that evapotranspiration flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + surf_rate_specified: + type: keyword + longname: specify proportion of evapotranspiration rate at ET surface + description: indicates that the proportion of the evapotranspiration rate at the ET surface will + be specified as PETM0 in list input. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of evapotranspiration cells + description: integer value specifying the maximum number of evapotranspiration cells that will + be specified for use during any stress period. + nseg: + type: integer + longname: number of ET segments + description: number of ET segments. Default is one. When NSEG is greater than 1, the PXDP and + PETM arrays must be of size NSEG - 1 and be listed in order from the uppermost segment down. + Values for PXDP must be listed first followed by the values for PETM. PXDP defines the extinction-depth + proportion at the bottom of a segment. PETM defines the proportion of the maximum ET flux rate + at the bottom of a segment. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + surface: + type: double + longname: ET surface + description: is the elevation of the ET surface ($L$). If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + rate: + type: double + longname: maximum ET rate + description: is the maximum ET flux rate ($LT^{-1}$). If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + depth: + type: double + longname: ET extinction depth + description: is the ET extinction depth ($L$). If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + pxdp: + type: array + longname: proportion of ET extinction depth + description: is the proportion of the ET extinction depth at the bottom of a segment (dimensionless). + pxdp is an array of size (nseg - 1). Values in pxdp must be greater than 0.0 and less + than 1.0. pxdp values for a cell must increase monotonically. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - nseg-1 + petm: + type: array + longname: proportion of maximum ET rate + description: is the proportion of the maximum ET flux rate at the bottom of a segment (dimensionless). + petm is an array of size (nseg - 1). If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - nseg-1 + petm0: + type: double + longname: proportion of maximum ET rate at ET surface + description: is the proportion of the maximum ET flux rate that will apply when head is + at or above the ET surface (dimensionless). PETM0 is read only when the SURF_RATE_SPECIFIED + option is used. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each evapotranspiration. + The values of auxiliary variables must be present for each evapotranspiration. The values + must be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: evapotranspiration name + description: name of the evapotranspiration cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + surfratespec: + set_in: ar + source: surf_rate_specified + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nseg: + set_in: ar + source: nseg + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: surface, 1: rate, + 2: depth, 3: petm0.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: EVT + output: ipakcb + obs_type: EVT + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json new file mode 100644 index 00000000..00f58478 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json @@ -0,0 +1,293 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-evta", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readasarrays": { + "type": "keyword", + "longname": "use array-based input", + "description": "indicates that array-based input will be used for the Evapotranspiration Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results.", + "default": "true" + }, + "fixed_cell": { + "type": "keyword", + "longname": "if cell is dry do not apply evapotranspiration to underlying cell", + "description": "indicates that evapotranspiration will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive.", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of evapotranspiration rate.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of evapotranspiration information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print evapotranspiration rates to listing file", + "description": "keyword to indicate that the list of evapotranspiration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that evapotranspiration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "tas_filerecord": { + "type": "record", + "optional": true, + "fields": { + "tas6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-array-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "period": { + "fields": { + "ievt": { + "type": "array", + "longname": "layer number for evapotranspiration", + "description": "IEVT is the layer number that defines the layer in each vertical column where evapotranspiration is applied. If IEVT is omitted, evapotranspiration by default is applied to cells in layer 1. If IEVT is specified, it must be specified as the first variable in the PERIOD block or MODFLOW will terminate with an error.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncpl" + ] + }, + "surface": { + "type": "array", + "longname": "evapotranspiration surface", + "description": "is the elevation of the ET surface ($L$).", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "rate": { + "type": "array", + "longname": "evapotranspiration surface", + "description": "is the maximum ET flux rate ($LT^{-1}$).", + "default": 0.001, + "netcdf": true, + "dtype": "double", + "time_series": true, + "shape": [ + "ncpl" + ] + }, + "depth": { + "type": "array", + "longname": "extinction depth", + "description": "is the ET extinction depth ($L$).", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "aux": { + "type": "array", + "longname": "evapotranspiration auxiliary variable iaux", + "description": "is an array of values for auxiliary variable AUX(IAUX), where iaux is a value from 1 to NAUX, and AUX(IAUX) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If an array is not specified for an auxiliary variable, then a value of zero is assigned. If the value specified here for the auxiliary variable is the same as auxmultname, then the evapotranspiration rate will be multiplied by this array.", + "netcdf": true, + "dtype": "double", + "time_series": true, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "EVTA", + "output": "ipakcb", + "obs_type": "EVT", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml new file mode 100644 index 00000000..a4b240e3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml @@ -0,0 +1,273 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-evta" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readasarrays] +type = "keyword" +longname = "use array-based input" +description = "indicates that array-based input will be used for the Evapotranspiration Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results." +default = "true" + +[blocks.options.fields.fixed_cell] +type = "keyword" +longname = "if cell is dry do not apply evapotranspiration to underlying cell" +description = "indicates that evapotranspiration will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of evapotranspiration rate." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of evapotranspiration information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print evapotranspiration rates to listing file" +description = "keyword to indicate that the list of evapotranspiration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that evapotranspiration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.tas_filerecord] +type = "record" +optional = true + +[blocks.options.fields.tas_filerecord.fields.tas6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-array-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.period.fields.ievt] +type = "array" +longname = "layer number for evapotranspiration" +description = "IEVT is the layer number that defines the layer in each vertical column where evapotranspiration is applied. If IEVT is omitted, evapotranspiration by default is applied to cells in layer 1. If IEVT is specified, it must be specified as the first variable in the PERIOD block or MODFLOW will terminate with an error." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncpl", +] + +[blocks.period.fields.surface] +type = "array" +longname = "evapotranspiration surface" +description = "is the elevation of the ET surface ($L$)." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.period.fields.rate] +type = "array" +longname = "evapotranspiration surface" +description = "is the maximum ET flux rate ($LT^{-1}$)." +default = 0.001 +netcdf = true +dtype = "double" +time_series = true +shape = [ + "ncpl", +] + +[blocks.period.fields.depth] +type = "array" +longname = "extinction depth" +description = "is the ET extinction depth ($L$)." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.period.fields.aux] +type = "array" +longname = "evapotranspiration auxiliary variable iaux" +description = "is an array of values for auxiliary variable AUX(IAUX), where iaux is a value from 1 to NAUX, and AUX(IAUX) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If an array is not specified for an auxiliary variable, then a value of zero is assigned. If the value specified here for the auxiliary variable is the same as auxmultname, then the evapotranspiration rate will be multiplied by this array." +netcdf = true +dtype = "double" +time_series = true +shape = [ + "ncpl", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "EVTA" +output = "ipakcb" +obs_type = "EVT" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml new file mode 100644 index 00000000..47942344 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml @@ -0,0 +1,258 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-evta +parent: gwf-nam +multi: true +subtype: stress +dims: + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readasarrays: + type: keyword + longname: use array-based input + description: indicates that array-based input will be used for the Evapotranspiration Package. This + keyword must be specified to use array-based input. When READASARRAYS is specified, values + must be provided for every cell within a model layer, even those cells that have an IDOMAIN + value less than one. Values assigned to cells with IDOMAIN values less than one are not used + and have no effect on simulation results. + default: 'true' + fixed_cell: + type: keyword + longname: if cell is dry do not apply evapotranspiration to underlying cell + description: indicates that evapotranspiration will not be reassigned to a cell underlying the + cell specified in the list if the specified cell is inactive. + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of evapotranspiration rate. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of evapotranspiration information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print evapotranspiration rates to listing file + description: keyword to indicate that the list of evapotranspiration flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that evapotranspiration flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + tas_filerecord: + type: record + optional: true + fields: + tas6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-array-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + period: + fields: + ievt: + type: array + longname: layer number for evapotranspiration + description: IEVT is the layer number that defines the layer in each vertical column where evapotranspiration + is applied. If IEVT is omitted, evapotranspiration by default is applied to cells in layer 1. If + IEVT is specified, it must be specified as the first variable in the PERIOD block or MODFLOW + will terminate with an error. + optional: true + netcdf: true + dtype: integer + shape: + - ncpl + surface: + type: array + longname: evapotranspiration surface + description: is the elevation of the ET surface ($L$). + default: 0.0 + netcdf: true + dtype: double + shape: + - ncpl + rate: + type: array + longname: evapotranspiration surface + description: is the maximum ET flux rate ($LT^{-1}$). + default: 0.001 + netcdf: true + dtype: double + time_series: true + shape: + - ncpl + depth: + type: array + longname: extinction depth + description: is the ET extinction depth ($L$). + default: 1.0 + netcdf: true + dtype: double + shape: + - ncpl + aux: + type: array + longname: evapotranspiration auxiliary variable iaux + description: is an array of values for auxiliary variable AUX(IAUX), where iaux is a value from + 1 to NAUX, and AUX(IAUX) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If an array is not specified for an auxiliary + variable, then a value of zero is assigned. If the value specified here for the auxiliary variable + is the same as auxmultname, then the evapotranspiration rate will be multiplied by this array. + netcdf: true + dtype: double + time_series: true + shape: + - ncpl +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: EVTA + output: ipakcb + obs_type: EVT + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json new file mode 100644 index 00000000..d5a53e78 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json @@ -0,0 +1,292 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-ghb", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of general-head boundary conductance.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of general-head boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of general-head boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of general-head boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that general-head boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the General-Head Boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of general-head boundaries", + "description": "integer value specifying the maximum number of general-head boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "bhead": { + "type": "double", + "longname": "boundary head", + "description": "is the boundary head. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "cond": { + "type": "double", + "longname": "boundary conductance", + "description": "is the hydraulic conductance of the interface between the aquifer cell and the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each general-head boundary. The values of auxiliary variables must be present for each general-head boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "general-head boundary name", + "description": "name of the general-head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: bhead, 1: cond.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "GHB", + "output": "ipakcb", + "obs_type": "GHB", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "GHB-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml new file mode 100644 index 00000000..29197a8f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml @@ -0,0 +1,266 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-ghb" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of general-head boundary conductance." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of general-head boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of general-head boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of general-head boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that general-head boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the General-Head Boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of general-head boundaries" +description = "integer value specifying the maximum number of general-head boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.bhead] +type = "double" +longname = "boundary head" +description = "is the boundary head. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.cond] +type = "double" +longname = "boundary conductance" +description = "is the hydraulic conductance of the interface between the aquifer cell and the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each general-head boundary. The values of auxiliary variables must be present for each general-head boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "general-head boundary name" +description = "name of the general-head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: bhead, 1: cond." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "GHB" +output = "ipakcb" +obs_type = "GHB" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "GHB-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml new file mode 100644 index 00000000..b32e6c7f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml @@ -0,0 +1,259 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-ghb +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of general-head boundary conductance. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of general-head + boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of general-head boundary information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of general-head boundary flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that general-head boundary flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the General-Head Boundary Package can be + used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory + is allocated within the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of general-head boundaries + description: integer value specifying the maximum number of general-head boundary cells that will + be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + bhead: + type: double + longname: boundary head + description: is the boundary head. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + tagged: false + time_series: true + cond: + type: double + longname: boundary conductance + description: is the hydraulic conductance of the interface between the aquifer cell and + the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each general-head boundary. + The values of auxiliary variables must be present for each general-head boundary. The + values must be specified in the order of the auxiliary variables specified in the OPTIONS + block. If the package supports time series and the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: general-head boundary name + description: name of the general-head boundary cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: bhead, 1: cond.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: GHB + output: ipakcb + obs_type: GHB + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: GHB-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json new file mode 100644 index 00000000..8875894f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json @@ -0,0 +1,274 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-ghbg", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readarraygrid": { + "type": "keyword", + "longname": "use array-based grid input", + "description": "indicates that array-based grid input will be used for the general-head boundary package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30).", + "default": "true", + "developmode": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of general-head boundary conductance.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of general-head boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of general-head boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save GHBG flows to budget file", + "description": "keyword to indicate that general-head boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the General-Head Boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of general-head boundaries in any stress period", + "description": "integer value specifying the maximum number of general-head boundary cells that will be specified for use during any stress period.", + "optional": true + } + } + }, + "period": { + "fields": { + "bhead": { + "type": "array", + "longname": "boundary head", + "description": "is the boundary head.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cond": { + "type": "array", + "longname": "boundary conductance", + "description": "is the hydraulic conductance of the interface between the aquifer cell and the boundary.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "aux": { + "type": "array", + "longname": "general-head boundary auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "GHB", + "output": "ipakcb", + "obs_type": "GHB", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "GHB-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml new file mode 100644 index 00000000..b73fa7d6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-ghbg" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readarraygrid] +type = "keyword" +longname = "use array-based grid input" +description = "indicates that array-based grid input will be used for the general-head boundary package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30)." +default = "true" +developmode = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of general-head boundary conductance." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of general-head boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of general-head boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save GHBG flows to budget file" +description = "keyword to indicate that general-head boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the General-Head Boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of general-head boundaries in any stress period" +description = "integer value specifying the maximum number of general-head boundary cells that will be specified for use during any stress period." +optional = true + +[blocks.period.fields.bhead] +type = "array" +longname = "boundary head" +description = "is the boundary head." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.cond] +type = "array" +longname = "boundary conductance" +description = "is the hydraulic conductance of the interface between the aquifer cell and the boundary." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.aux] +type = "array" +longname = "general-head boundary auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "GHB" +output = "ipakcb" +obs_type = "GHB" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "GHB-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml new file mode 100644 index 00000000..a72f8720 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml @@ -0,0 +1,241 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-ghbg +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readarraygrid: + type: keyword + longname: use array-based grid input + description: indicates that array-based grid input will be used for the general-head boundary + package. This keyword must be specified to use array-based grid input. When READARRAYGRID + is specified, values must be provided for every cell within a model grid, even those cells that + have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than + one are not used and have no effect on simulation results. No data cells should contain the + value DNODATA (3.0E+30). + default: 'true' + developmode: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of general-head boundary conductance. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of general-head boundary information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of general-head boundary flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save GHBG flows to budget file + description: keyword to indicate that general-head boundary flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the General-Head Boundary Package can be + used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory + is allocated within the package to store the available, provided, and received water. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of general-head boundaries in any stress period + description: integer value specifying the maximum number of general-head boundary cells that will + be specified for use during any stress period. + optional: true + period: + fields: + bhead: + type: array + longname: boundary head + description: is the boundary head. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + cond: + type: array + longname: boundary conductance + description: is the hydraulic conductance of the interface between the aquifer cell and the boundary. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + aux: + type: array + longname: general-head boundary auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If the value specified here for the auxiliary + variable is the same as auxmultname, then the conductance array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: GHB + output: ipakcb + obs_type: GHB + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: GHB-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.json new file mode 100644 index 00000000..0be4b014 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.json @@ -0,0 +1,111 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-gnc", + "parent": "gwf-nam", + "dims": { + "numgnc": { + "value": "numgnc", + "scope": "model" + }, + "numalphaj": { + "value": "numalphaj", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of GNC information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print simulated flows to listing file", + "description": "keyword to indicate that the list of GNC flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "explicit": { + "type": "keyword", + "longname": "use explicit GNC formulation", + "description": "keyword to indicate that the ghost node correction is applied in an explicit manner on the right-hand side of the matrix. The explicit approach will likely require additional outer iterations. If the keyword is not specified, then the correction will be applied in an implicit manner on the left-hand side. The implicit approach will likely converge better, but may require additional memory. If the EXPLICIT keyword is not specified, then the BICGSTAB linear acceleration option should be specified within the LINEAR block of the Sparse Matrix Solver.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "numgnc": { + "type": "integer", + "longname": "number of ghost node corrections", + "description": "is the number of GNC entries." + }, + "numalphaj": { + "type": "integer", + "longname": "number of contributing factors", + "description": "is the number of contributing factors." + } + } + }, + "gncdata": { + "fields": { + "gncdata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellidn": { + "type": "integer", + "longname": "GNC cellid n", + "description": "is the cellid of the cell, $n$, in which the ghost node is located. For a structured grid that uses the DIS input file, CELLIDN is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDN is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDN is the node number for the cell.", + "tagged": false + }, + "cellidm": { + "type": "integer", + "longname": "GNC cellid n", + "description": "is the cellid of the connecting cell, $m$, to which flow occurs from the ghost node. For a structured grid that uses the DIS input file, CELLIDM is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM is the node number for the cell.", + "tagged": false + }, + "cellidsj": { + "type": "array", + "longname": "GNC contributing cells", + "description": "is the array of CELLIDS for the contributing j cells, which contribute to the interpolated head value at the ghost node. This item contains one CELLID for each of the contributing cells of the ghost node. Note that if the number of actual contributing cells needed by the user is less than NUMALPHAJ for any ghost node, then a dummy CELLID of zero(s) should be inserted with an associated contributing factor of zero. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLID is the layer number and cell2d number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "numalphaj" + ] + }, + "alphasj": { + "type": "array", + "longname": "GNC contributing factors", + "description": "is the contributing factors for each contributing node in CELLIDSJ. Note that if the number of actual contributing cells is less than NUMALPHAJ for any ghost node, then dummy CELLIDS should be inserted with an associated contributing factor of zero. The sum of ALPHASJ should be less than one. This is because one minus the sum of ALPHASJ is equal to the alpha term (alpha n in equation 4-61 of the GWF Model report) that is multiplied by the head in cell n.", + "dtype": "double", + "shape": [ + "numalphaj" + ] + } + } + }, + "shape": [ + "numgnc" + ] + } + } + } + }, + "memory": { + "numgnc": { + "set_in": "ar", + "source": "numgnc", + "type": "integer" + }, + "numalphaj": { + "set_in": "ar", + "source": "numalphaj", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.toml new file mode 100644 index 00000000..a9ae4ebd --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.toml @@ -0,0 +1,89 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-gnc" +parent = "gwf-nam" + +[dims.numgnc] +value = "numgnc" +scope = "model" + +[dims.numalphaj] +value = "numalphaj" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of GNC information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print simulated flows to listing file" +description = "keyword to indicate that the list of GNC flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.explicit] +type = "keyword" +longname = "use explicit GNC formulation" +description = "keyword to indicate that the ghost node correction is applied in an explicit manner on the right-hand side of the matrix. The explicit approach will likely require additional outer iterations. If the keyword is not specified, then the correction will be applied in an implicit manner on the left-hand side. The implicit approach will likely converge better, but may require additional memory. If the EXPLICIT keyword is not specified, then the BICGSTAB linear acceleration option should be specified within the LINEAR block of the Sparse Matrix Solver." +optional = true + +[blocks.dimensions.fields.numgnc] +type = "integer" +longname = "number of ghost node corrections" +description = "is the number of GNC entries." + +[blocks.dimensions.fields.numalphaj] +type = "integer" +longname = "number of contributing factors" +description = "is the number of contributing factors." + +[blocks.gncdata.fields.gncdata] +type = "list" +shape = [ + "numgnc", +] + +[blocks.gncdata.fields.gncdata.item] +type = "record" + +[blocks.gncdata.fields.gncdata.item.fields.cellidn] +type = "integer" +longname = "GNC cellid n" +description = "is the cellid of the cell, $n$, in which the ghost node is located. For a structured grid that uses the DIS input file, CELLIDN is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDN is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDN is the node number for the cell." +tagged = false + +[blocks.gncdata.fields.gncdata.item.fields.cellidm] +type = "integer" +longname = "GNC cellid n" +description = "is the cellid of the connecting cell, $m$, to which flow occurs from the ghost node. For a structured grid that uses the DIS input file, CELLIDM is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM is the node number for the cell." +tagged = false + +[blocks.gncdata.fields.gncdata.item.fields.cellidsj] +type = "array" +longname = "GNC contributing cells" +description = "is the array of CELLIDS for the contributing j cells, which contribute to the interpolated head value at the ghost node. This item contains one CELLID for each of the contributing cells of the ghost node. Note that if the number of actual contributing cells needed by the user is less than NUMALPHAJ for any ghost node, then a dummy CELLID of zero(s) should be inserted with an associated contributing factor of zero. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLID is the layer number and cell2d number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "numalphaj", +] + +[blocks.gncdata.fields.gncdata.item.fields.alphasj] +type = "array" +longname = "GNC contributing factors" +description = "is the contributing factors for each contributing node in CELLIDSJ. Note that if the number of actual contributing cells is less than NUMALPHAJ for any ghost node, then dummy CELLIDS should be inserted with an associated contributing factor of zero. The sum of ALPHASJ should be less than one. This is because one minus the sum of ALPHASJ is equal to the alpha term (alpha n in equation 4-61 of the GWF Model report) that is multiplied by the head in cell n." +dtype = "double" +shape = [ + "numalphaj", +] + +[memory.numgnc] +set_in = "ar" +source = "numgnc" +type = "integer" + +[memory.numalphaj] +set_in = "ar" +source = "numalphaj" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.yaml new file mode 100644 index 00000000..b1fa7128 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-gnc.yaml @@ -0,0 +1,112 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-gnc +parent: gwf-nam +dims: + numgnc: + value: numgnc + scope: model + numalphaj: + value: numalphaj + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of GNC information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print simulated flows to listing file + description: keyword to indicate that the list of GNC flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + explicit: + type: keyword + longname: use explicit GNC formulation + description: keyword to indicate that the ghost node correction is applied in an explicit manner + on the right-hand side of the matrix. The explicit approach will likely require additional + outer iterations. If the keyword is not specified, then the correction will be applied in an + implicit manner on the left-hand side. The implicit approach will likely converge better, but + may require additional memory. If the EXPLICIT keyword is not specified, then the BICGSTAB + linear acceleration option should be specified within the LINEAR block of the Sparse Matrix + Solver. + optional: true + dimensions: + fields: + numgnc: + type: integer + longname: number of ghost node corrections + description: is the number of GNC entries. + numalphaj: + type: integer + longname: number of contributing factors + description: is the number of contributing factors. + gncdata: + fields: + gncdata: + type: list + item: + type: record + fields: + cellidn: + type: integer + longname: GNC cellid n + description: is the cellid of the cell, $n$, in which the ghost node is located. For a structured + grid that uses the DIS input file, CELLIDN is the layer, row, and column numbers of the + cell. For a grid that uses the DISV input file, CELLIDN is the layer number and CELL2D + number for the two cells. If the model uses the unstructured discretization (DISU) input + file, then CELLIDN is the node number for the cell. + tagged: false + cellidm: + type: integer + longname: GNC cellid n + description: is the cellid of the connecting cell, $m$, to which flow occurs from the ghost + node. For a structured grid that uses the DIS input file, CELLIDM is the layer, row, and + column numbers of the cell. For a grid that uses the DISV input file, CELLIDM is the + layer number and CELL2D number for the two cells. If the model uses the unstructured + discretization (DISU) input file, then CELLIDM is the node number for the cell. + tagged: false + cellidsj: + type: array + longname: GNC contributing cells + description: is the array of CELLIDS for the contributing j cells, which contribute to the + interpolated head value at the ghost node. This item contains one CELLID for each of the + contributing cells of the ghost node. Note that if the number of actual contributing cells + needed by the user is less than NUMALPHAJ for any ghost node, then a dummy CELLID of zero(s) + should be inserted with an associated contributing factor of zero. For a structured grid + that uses the DIS input file, CELLID is the layer, row, and column numbers of the cell. For + a grid that uses the DISV input file, CELLID is the layer number and cell2d number for + the two cells. If the model uses the unstructured discretization (DISU) input file, then + CELLID is the node number for the cell. + dtype: integer + shape: + - numalphaj + alphasj: + type: array + longname: GNC contributing factors + description: is the contributing factors for each contributing node in CELLIDSJ. Note that + if the number of actual contributing cells is less than NUMALPHAJ for any ghost node, + then dummy CELLIDS should be inserted with an associated contributing factor of zero. The + sum of ALPHASJ should be less than one. This is because one minus the sum of ALPHASJ + is equal to the alpha term (alpha n in equation 4-61 of the GWF Model report) that is + multiplied by the head in cell n. + dtype: double + shape: + - numalphaj + shape: + - numgnc +memory: + numgnc: + set_in: ar + source: numgnc + type: integer + numalphaj: + set_in: ar + source: numalphaj + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json new file mode 100644 index 00000000..af2608f0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.json @@ -0,0 +1,79 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-hfb", + "parent": "gwf-nam", + "dims": { + "maxhfb": { + "value": "maxhfb", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "model print input to listing file", + "description": "keyword to indicate that the list of hydraulic flow barriers will be written to the listing file immediately after it is read.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxhfb": { + "type": "integer", + "longname": "maximum number of barriers", + "description": "integer value specifying the maximum number of hydraulic flow barriers that will be entered in this input file. The value of MAXHFB is used to allocate memory for the hydraulic flow barriers." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid1": { + "type": "array", + "longname": "first cell adjacent to barrier", + "description": "identifier for the first cell. For a structured grid that uses the DIS input file, CELLID1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLID1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLID1 is the node numbers for the cell. The barrier is located between cells designated as CELLID1 and CELLID2. For models that use the DIS and DISV grid types, the layer number for CELLID1 and CELLID2 must be the same. For all grid types, cells must be horizontally or vertically adjacent.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "cellid2": { + "type": "array", + "longname": "second cell adjacent to barrier", + "description": "identifier for the second cell. See CELLID1 for description of how to specify.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "hydchr": { + "type": "double", + "longname": "barrier hydraulic characteristic", + "description": "is the hydraulic characteristic of the hydraulic-flow barrier. The hydraulic characteristic is the barrier hydraulic conductivity divided by the width of the hydraulic-flow barrier. If the hydraulic characteristic is negative, then the absolute value of HYDCHR acts as a multiplier to the conductance between the two model cells specified as containing the barrier. For example, if the value for HYDCHR was specified as -1.5, the conductance calculated for the two cells would be multiplied by 1.5.", + "tagged": false + } + } + }, + "shape": [ + "maxhfb" + ] + } + } + } + }, + "memory": { + "maxbound": { + "set_in": "ar", + "source": "maxhfb", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml new file mode 100644 index 00000000..3fe7851a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.toml @@ -0,0 +1,57 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-hfb" +parent = "gwf-nam" + +[dims.maxhfb] +value = "maxhfb" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "model print input to listing file" +description = "keyword to indicate that the list of hydraulic flow barriers will be written to the listing file immediately after it is read." +optional = true + +[blocks.dimensions.fields.maxhfb] +type = "integer" +longname = "maximum number of barriers" +description = "integer value specifying the maximum number of hydraulic flow barriers that will be entered in this input file. The value of MAXHFB is used to allocate memory for the hydraulic flow barriers." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxhfb", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid1] +type = "array" +longname = "first cell adjacent to barrier" +description = "identifier for the first cell. For a structured grid that uses the DIS input file, CELLID1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLID1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLID1 is the node numbers for the cell. The barrier is located between cells designated as CELLID1 and CELLID2. For models that use the DIS and DISV grid types, the layer number for CELLID1 and CELLID2 must be the same. For all grid types, cells must be horizontally or vertically adjacent." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.cellid2] +type = "array" +longname = "second cell adjacent to barrier" +description = "identifier for the second cell. See CELLID1 for description of how to specify." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.hydchr] +type = "double" +longname = "barrier hydraulic characteristic" +description = "is the hydraulic characteristic of the hydraulic-flow barrier. The hydraulic characteristic is the barrier hydraulic conductivity divided by the width of the hydraulic-flow barrier. If the hydraulic characteristic is negative, then the absolute value of HYDCHR acts as a multiplier to the conductance between the two model cells specified as containing the barrier. For example, if the value for HYDCHR was specified as -1.5, the conductance calculated for the two cells would be multiplied by 1.5." +tagged = false + +[memory.maxbound] +set_in = "ar" +source = "maxhfb" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml new file mode 100644 index 00000000..02ed4369 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-hfb.yaml @@ -0,0 +1,70 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-hfb +parent: gwf-nam +dims: + maxhfb: + value: maxhfb + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: model print input to listing file + description: keyword to indicate that the list of hydraulic flow barriers will be written to the + listing file immediately after it is read. + optional: true + dimensions: + fields: + maxhfb: + type: integer + longname: maximum number of barriers + description: integer value specifying the maximum number of hydraulic flow barriers that will + be entered in this input file. The value of MAXHFB is used to allocate memory for the hydraulic + flow barriers. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid1: + type: array + longname: first cell adjacent to barrier + description: identifier for the first cell. For a structured grid that uses the DIS input + file, CELLID1 is the layer, row, and column numbers of the cell. For a grid that uses + the DISV input file, CELLID1 is the layer number and CELL2D number for the two cells. If + the model uses the unstructured discretization (DISU) input file, then CELLID1 is the + node numbers for the cell. The barrier is located between cells designated as CELLID1 + and CELLID2. For models that use the DIS and DISV grid types, the layer number for CELLID1 + and CELLID2 must be the same. For all grid types, cells must be horizontally or vertically + adjacent. + dtype: integer + shape: + - ncelldim + cellid2: + type: array + longname: second cell adjacent to barrier + description: identifier for the second cell. See CELLID1 for description of how to specify. + dtype: integer + shape: + - ncelldim + hydchr: + type: double + longname: barrier hydraulic characteristic + description: is the hydraulic characteristic of the hydraulic-flow barrier. The hydraulic + characteristic is the barrier hydraulic conductivity divided by the width of the hydraulic-flow + barrier. If the hydraulic characteristic is negative, then the absolute value of HYDCHR + acts as a multiplier to the conductance between the two model cells specified as containing + the barrier. For example, if the value for HYDCHR was specified as -1.5, the conductance + calculated for the two cells would be multiplied by 1.5. + tagged: false + shape: + - maxhfb +memory: + maxbound: + set_in: ar + source: maxhfb + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.json new file mode 100644 index 00000000..af9bb39d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.json @@ -0,0 +1,65 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-ic", + "parent": "gwf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting head", + "description": "is the initial (starting) head---that is, head at the beginning of the GWF Model simulation. STRT must be specified for all simulations, including steady-state simulations. One value is read for every model cell. For simulations in which the first stress period is steady state, the values used for STRT generally do not affect the simulation (exceptions may occur if cells go dry and (or) rewet). The execution time, however, will be less if STRT includes hydraulic heads that are close to the steady-state solution. A head value lower than the cell bottom can be provided if a cell should start as dry.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.toml new file mode 100644 index 00000000..2d60e3c4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.toml @@ -0,0 +1,49 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-ic" +parent = "gwf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting head" +description = "is the initial (starting) head---that is, head at the beginning of the GWF Model simulation. STRT must be specified for all simulations, including steady-state simulations. One value is read for every model cell. For simulations in which the first stress period is steady state, the values used for STRT generally do not affect the simulation (exceptions may occur if cells go dry and (or) rewet). The execution time, however, will be less if STRT includes hydraulic heads that are close to the steady-state solution. A head value lower than the cell bottom can be provided if a cell should start as dry." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.yaml new file mode 100644 index 00000000..f3b33a7c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ic.yaml @@ -0,0 +1,57 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-ic +parent: gwf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + strt: + type: array + longname: starting head + description: is the initial (starting) head---that is, head at the beginning of the GWF Model + simulation. STRT must be specified for all simulations, including steady-state simulations. + One value is read for every model cell. For simulations in which the first stress period is + steady state, the values used for STRT generally do not affect the simulation (exceptions may + occur if cells go dry and (or) rewet). The execution time, however, will be less if STRT includes + hydraulic heads that are close to the steady-state solution. A head value lower than the cell + bottom can be provided if a cell should start as dry. + default: 1.0 + netcdf: true + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.json new file mode 100644 index 00000000..cae6ea3a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.json @@ -0,0 +1,561 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-lak", + "parent": "gwf-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "nlakes": { + "value": "nlakes", + "scope": "model" + }, + "noutlets": { + "value": "noutlets", + "scope": "model" + }, + "ntables": { + "value": "ntables", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "nlakeconn": { + "value": "sum(packagedata.nlakeconn)", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of lake cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_stage": { + "type": "keyword", + "longname": "print calculated stages to listing file", + "description": "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save lake flows to budget file", + "description": "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "stage_filerecord": { + "type": "record", + "optional": true, + "fields": { + "stage": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "package_convergence_filerecord": { + "type": "record", + "optional": true, + "fields": { + "package_convergence": { + "type": "file", + "longname": "package_convergence keyword", + "description": "keyword to specify that record corresponds to the package convergence comma spaced values file.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the LAK Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "surfdep": { + "type": "double", + "longname": "surface depression depth", + "description": "real value that defines the surface depression depth for VERTICAL lake-GWF connections. If specified, SURFDEP must be greater than or equal to zero. If SURFDEP is not specified, a default value of zero is used for all vertical lake-GWF connections.", + "optional": true + }, + "maximum_iterations": { + "type": "integer", + "longname": "LAK Newton-Raphson iterations", + "description": "integer value that defines the maximum number of Newton-Raphson iterations allowed for a lake. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS would only need to be increased from the default value if one or more lakes in a simulation has a large water budget error.", + "optional": true + }, + "maximum_stage_change": { + "type": "double", + "longname": "stage closure tolerance", + "description": "real value that defines the lake stage closure tolerance. By default, MAXIMUM_STAGE_CHANGE is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased from the default value if the water budget error for one or more lakes is too small or too large, respectively.", + "optional": true + }, + "time_conversion": { + "type": "double", + "longname": "time conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients or gravitational acceleration used to calculate outlet flows from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if no lake outlets are specified or TIME_UNITS are seconds.", + "optional": true + }, + "length_conversion": { + "type": "double", + "longname": "length conversion factor", + "description": "real value that is used to convert outlet user-specified Manning's roughness coefficients or gravitational acceleration used to calculate outlet flows from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if no lake outlets are specified or LENGTH_UNITS are meters.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nlakes": { + "type": "integer", + "longname": "number of lakes", + "description": "value specifying the number of lakes that will be simulated for all stress periods." + }, + "noutlets": { + "type": "integer", + "longname": "number of outlets", + "description": "value specifying the number of outlets that will be simulated for all stress periods. If NOUTLETS is not specified, a default value of zero is used." + }, + "ntables": { + "type": "integer", + "longname": "number of tables", + "description": "value specifying the number of lakes tables that will be used to define the lake stage, volume relation, and surface area. If NTABLES is not specified, a default value of zero is used." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting lake stage", + "description": "real value that defines the starting stage for the lake.", + "tagged": false + }, + "nlakeconn": { + "type": "integer", + "longname": "number of lake connections", + "description": "integer value that defines the number of GWF cells connected to this (IFNO) lake. There can only be one vertical lake connection to each GWF cell. NLAKECONN must be greater than zero.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nlakes" + ] + } + } + }, + "connectiondata": { + "fields": { + "connectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once.", + "tagged": false + }, + "iconn": { + "type": "integer", + "longname": "connection number for this entry", + "description": "integer value that defines the GWF connection number for this lake connection entry. ICONN must be greater than zero and less than or equal to NLAKECONN for lake IFNO.", + "tagged": false + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "claktype": { + "type": "string", + "longname": "lake connection type", + "description": "character string that defines the lake-GWF connection type for the lake connection. Possible lake-GWF connection type strings include: VERTICAL--character keyword to indicate the lake-GWF connection is vertical and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{33}$ tensor component defined for CELLID in the NPF package. HORIZONTAL--character keyword to indicate the lake-GWF connection is horizontal and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{11}$ tensor component defined for CELLID in the NPF package. EMBEDDEDH--character keyword to indicate the lake-GWF connection is embedded in a single cell and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{11}$ tensor component defined for CELLID in the NPF package. EMBEDDEDV--character keyword to indicate the lake-GWF connection is embedded in a single cell and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{33}$ tensor component defined for CELLID in the NPF package. Embedded lakes can only be connected to a single cell (NLAKECONN = 1) and there must be a lake table associated with each embedded lake.", + "tagged": false + }, + "bedleak": { + "type": "string", + "longname": "bed leakance", + "description": "real value or character string that defines the bed leakance for the lake-GWF connection. BEDLEAK must be greater than or equal to zero, equal to the DNODATA value (3.0E+30), or specified to be NONE. If DNODATA or NONE is specified for BEDLEAK, the lake-GWF connection conductance is solely a function of aquifer properties in the connected GWF cell and lakebed sediments are assumed to be absent. Warning messages will be issued if NONE is specified. Eventually the ability to specify NONE will be deprecated and cause MODFLOW 6 to terminate with an error.", + "tagged": false + }, + "belev": { + "type": "double", + "longname": "bottom elevation", + "description": "real value that defines the bottom elevation for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE is HORIZONTAL and BELEV is not equal to TELEV, BELEV must be greater than or equal to the bottom of the GWF cell CELLID. If BELEV is equal to TELEV, BELEV is reset to the bottom of the GWF cell CELLID.", + "tagged": false + }, + "telev": { + "type": "double", + "longname": "top elevation", + "description": "real value that defines the top elevation for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE is HORIZONTAL and TELEV is not equal to BELEV, TELEV must be less than or equal to the top of the GWF cell CELLID. If TELEV is equal to BELEV, TELEV is reset to the top of the GWF cell CELLID.", + "tagged": false + }, + "connlen": { + "type": "double", + "longname": "connection length", + "description": "real value that defines the distance between the connected GWF CELLID node and the lake for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. CONLENN must be greater than zero for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL.", + "tagged": false + }, + "connwidth": { + "type": "double", + "longname": "connection width", + "description": "real value that defines the connection face width for a HORIZONTAL lake-GWF connection. CONNWIDTH must be greater than zero for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV.", + "tagged": false + } + } + }, + "shape": [ + "nlakeconn" + ] + } + } + }, + "tables": { + "fields": { + "tables": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once.", + "tagged": false + }, + "tab6": { + "type": "keyword", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a table file." + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "tab6_filename": { + "type": "string", + "longname": "table file name", + "description": "character string that defines the path and filename for the file containing lake table data for the lake connection. The TAB6_FILENAME file includes the number of entries in the file and the relation between stage, volume, and surface area for each entry in the file. Lake table files for EMBEDDEDH and EMBEDDEDV lake-GWF connections also include lake-GWF exchange area data for each entry in the file. Instructions for creating the TAB6_FILENAME input file are provided in Lake Table Input File section.", + "tagged": false, + "case_sensitive": true + } + } + }, + "shape": [ + "ntables" + ] + } + } + }, + "outlets": { + "fields": { + "outlets": { + "type": "list", + "item": { + "type": "record", + "fields": { + "outletno": { + "type": "integer", + "longname": "outlet number for this entry", + "description": "integer value that defines the outlet number associated with the specified OUTLETS data on the line. OUTLETNO must be greater than zero and less than or equal to NOUTLETS. Outlet information must be specified for every outlet or the program will terminate with an error. The program will also terminate with an error if information for a outlet is specified more than once.", + "tagged": false + }, + "lakein": { + "type": "integer", + "longname": "lake number for upstream lake", + "description": "integer value that defines the lake number that outlet is connected to. LAKEIN must be greater than zero and less than or equal to NLAKES.", + "tagged": false + }, + "lakeout": { + "type": "integer", + "longname": "lake number for downstream lake", + "description": "integer value that defines the lake number that outlet discharge from lake outlet OUTLETNO is routed to. LAKEOUT must be greater than or equal to zero and less than or equal to NLAKES. If LAKEOUT is zero, outlet discharge from lake outlet OUTLETNO is discharged to an external boundary.", + "tagged": false + }, + "couttype": { + "type": "string", + "longname": "outlet type", + "description": "character string that defines the outlet type for the outlet OUTLETNO. Possible COUTTYPE strings include: SPECIFIED--character keyword to indicate the outlet is defined as a specified flow. MANNING--character keyword to indicate the outlet is defined using Manning's equation. WEIR--character keyword to indicate the outlet is defined using a sharp weir equation.", + "tagged": false + }, + "invert": { + "type": "double", + "longname": "invert elevation", + "description": "real value that defines the invert elevation for the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "width": { + "type": "double", + "longname": "outlet width", + "description": "real value that defines the width of the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rough": { + "type": "double", + "longname": "roughness coefficient", + "description": "real value that defines the roughness coefficient for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "slope": { + "type": "double", + "longname": "bed slope", + "description": "real value that defines the bed slope for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + }, + "shape": [ + "noutlets" + ] + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "number": { + "type": "integer", + "longname": "lake or outlet number for this entry", + "description": "integer value that defines the lake or outlet number associated with the specified PERIOD data on the line. NUMBER must be greater than zero and less than or equal to NLAKES for a lake number and less than or equal to NOUTLETS for an outlet number.", + "tagged": false + }, + "laksetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include both keywords for lake settings and keywords for outlet settings. Keywords for lake settings include: STATUS, STAGE, RAINFALL, EVAPORATION, RUNOFF, INFLOW, WITHDRAWAL, and AUXILIARY. Keywords for outlet settings include RATE, INVERT, WIDTH, SLOPE, and ROUGH.", + "arms": { + "status": { + "type": "string", + "longname": "lake status", + "description": "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE." + }, + "stage": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage." + }, + "rainfall": { + "type": "string", + "longname": "rainfall rate", + "description": "real or character value that defines the rainfall rate $(LT^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation rate", + "description": "real or character value that defines the maximum evaporation rate $(LT^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff rate", + "description": "real or character value that defines the runoff rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "inflow": { + "type": "string", + "longname": "inflow rate", + "description": "real or character value that defines the volumetric inflow rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, inflow rates are zero for each lake.", + "time_series": true + }, + "withdrawal": { + "type": "string", + "longname": "maximum withdrawal rate", + "description": "real or character value that defines the maximum withdrawal rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "rate": { + "type": "string", + "longname": "extraction rate", + "description": "real or character value that defines the extraction rate for the lake outflow. A positive value indicates inflow and a negative value indicates outflow from the lake. RATE only applies to outlets associated with active lakes (STATUS is ACTIVE). A specified RATE is only applied if COUTTYPE for the OUTLETNO is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the RATE for each SPECIFIED lake outlet is zero.", + "time_series": true + }, + "invert": { + "type": "double", + "longname": "invert elevation", + "description": "real value that defines the invert elevation for the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "width": { + "type": "double", + "longname": "outlet width", + "description": "real value that defines the width of the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "slope": { + "type": "double", + "longname": "bed slope", + "description": "real value that defines the bed slope for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rough": { + "type": "double", + "longname": "roughness coefficient", + "description": "real value that defines the roughness coefficient for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "nlakes": { + "set_in": "ar", + "source": "nlakes", + "type": "integer" + }, + "noutlets": { + "set_in": "ar", + "source": "noutlets", + "type": "integer" + }, + "ntables": { + "set_in": "ar", + "source": "ntables", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.toml new file mode 100644 index 00000000..f47c2af7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.toml @@ -0,0 +1,499 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-lak" +parent = "gwf-nam" +multi = true +subtype = "advanced" + +[dims.nlakes] +value = "nlakes" +scope = "model" + +[dims.noutlets] +value = "noutlets" +scope = "model" + +[dims.ntables] +value = "ntables" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.nlakeconn] +value = "sum(packagedata.nlakeconn)" +scope = "model" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of lake cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_stage] +type = "keyword" +longname = "print calculated stages to listing file" +description = "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save lake flows to budget file" +description = "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.stage_filerecord] +type = "record" +optional = true + +[blocks.options.fields.stage_filerecord.fields.stage] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.package_convergence_filerecord] +type = "record" +optional = true + +[blocks.options.fields.package_convergence_filerecord.fields.package_convergence] +type = "file" +longname = "package_convergence keyword" +description = "keyword to specify that record corresponds to the package convergence comma spaced values file." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the LAK Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.surfdep] +type = "double" +longname = "surface depression depth" +description = "real value that defines the surface depression depth for VERTICAL lake-GWF connections. If specified, SURFDEP must be greater than or equal to zero. If SURFDEP is not specified, a default value of zero is used for all vertical lake-GWF connections." +optional = true + +[blocks.options.fields.maximum_iterations] +type = "integer" +longname = "LAK Newton-Raphson iterations" +description = "integer value that defines the maximum number of Newton-Raphson iterations allowed for a lake. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS would only need to be increased from the default value if one or more lakes in a simulation has a large water budget error." +optional = true + +[blocks.options.fields.maximum_stage_change] +type = "double" +longname = "stage closure tolerance" +description = "real value that defines the lake stage closure tolerance. By default, MAXIMUM_STAGE_CHANGE is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased from the default value if the water budget error for one or more lakes is too small or too large, respectively." +optional = true + +[blocks.options.fields.time_conversion] +type = "double" +longname = "time conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients or gravitational acceleration used to calculate outlet flows from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if no lake outlets are specified or TIME_UNITS are seconds." +optional = true + +[blocks.options.fields.length_conversion] +type = "double" +longname = "length conversion factor" +description = "real value that is used to convert outlet user-specified Manning's roughness coefficients or gravitational acceleration used to calculate outlet flows from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if no lake outlets are specified or LENGTH_UNITS are meters." +optional = true + +[blocks.dimensions.fields.nlakes] +type = "integer" +longname = "number of lakes" +description = "value specifying the number of lakes that will be simulated for all stress periods." + +[blocks.dimensions.fields.noutlets] +type = "integer" +longname = "number of outlets" +description = "value specifying the number of outlets that will be simulated for all stress periods. If NOUTLETS is not specified, a default value of zero is used." + +[blocks.dimensions.fields.ntables] +type = "integer" +longname = "number of tables" +description = "value specifying the number of lakes tables that will be used to define the lake stage, volume relation, and surface area. If NTABLES is not specified, a default value of zero is used." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nlakes", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting lake stage" +description = "real value that defines the starting stage for the lake." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.nlakeconn] +type = "integer" +longname = "number of lake connections" +description = "integer value that defines the number of GWF cells connected to this (IFNO) lake. There can only be one vertical lake connection to each GWF cell. NLAKECONN must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.connectiondata.fields.connectiondata] +type = "list" +shape = [ + "nlakeconn", +] + +[blocks.connectiondata.fields.connectiondata.item] +type = "record" + +[blocks.connectiondata.fields.connectiondata.item.fields.ifno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.iconn] +type = "integer" +longname = "connection number for this entry" +description = "integer value that defines the GWF connection number for this lake connection entry. ICONN must be greater than zero and less than or equal to NLAKECONN for lake IFNO." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.connectiondata.fields.connectiondata.item.fields.claktype] +type = "string" +longname = "lake connection type" +description = "character string that defines the lake-GWF connection type for the lake connection. Possible lake-GWF connection type strings include: VERTICAL--character keyword to indicate the lake-GWF connection is vertical and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{33}$ tensor component defined for CELLID in the NPF package. HORIZONTAL--character keyword to indicate the lake-GWF connection is horizontal and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{11}$ tensor component defined for CELLID in the NPF package. EMBEDDEDH--character keyword to indicate the lake-GWF connection is embedded in a single cell and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{11}$ tensor component defined for CELLID in the NPF package. EMBEDDEDV--character keyword to indicate the lake-GWF connection is embedded in a single cell and connection conductance calculations use the hydraulic conductivity corresponding to the $K_{33}$ tensor component defined for CELLID in the NPF package. Embedded lakes can only be connected to a single cell (NLAKECONN = 1) and there must be a lake table associated with each embedded lake." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.bedleak] +type = "string" +longname = "bed leakance" +description = "real value or character string that defines the bed leakance for the lake-GWF connection. BEDLEAK must be greater than or equal to zero, equal to the DNODATA value (3.0E+30), or specified to be NONE. If DNODATA or NONE is specified for BEDLEAK, the lake-GWF connection conductance is solely a function of aquifer properties in the connected GWF cell and lakebed sediments are assumed to be absent. Warning messages will be issued if NONE is specified. Eventually the ability to specify NONE will be deprecated and cause MODFLOW 6 to terminate with an error." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.belev] +type = "double" +longname = "bottom elevation" +description = "real value that defines the bottom elevation for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE is HORIZONTAL and BELEV is not equal to TELEV, BELEV must be greater than or equal to the bottom of the GWF cell CELLID. If BELEV is equal to TELEV, BELEV is reset to the bottom of the GWF cell CELLID." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.telev] +type = "double" +longname = "top elevation" +description = "real value that defines the top elevation for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE is HORIZONTAL and TELEV is not equal to BELEV, TELEV must be less than or equal to the top of the GWF cell CELLID. If TELEV is equal to BELEV, TELEV is reset to the top of the GWF cell CELLID." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.connlen] +type = "double" +longname = "connection length" +description = "real value that defines the distance between the connected GWF CELLID node and the lake for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. CONLENN must be greater than zero for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.connwidth] +type = "double" +longname = "connection width" +description = "real value that defines the connection face width for a HORIZONTAL lake-GWF connection. CONNWIDTH must be greater than zero for a HORIZONTAL lake-GWF connection. Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV." +tagged = false + +[blocks.tables.fields.tables] +type = "list" +shape = [ + "ntables", +] + +[blocks.tables.fields.tables.item] +type = "record" + +[blocks.tables.fields.tables.item.fields.ifno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once." +tagged = false + +[blocks.tables.fields.tables.item.fields.tab6] +type = "keyword" +longname = "head keyword" +description = "keyword to specify that record corresponds to a table file." + +[blocks.tables.fields.tables.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.tables.fields.tables.item.fields.tab6_filename] +type = "string" +longname = "table file name" +description = "character string that defines the path and filename for the file containing lake table data for the lake connection. The TAB6_FILENAME file includes the number of entries in the file and the relation between stage, volume, and surface area for each entry in the file. Lake table files for EMBEDDEDH and EMBEDDEDV lake-GWF connections also include lake-GWF exchange area data for each entry in the file. Instructions for creating the TAB6_FILENAME input file are provided in Lake Table Input File section." +tagged = false +case_sensitive = true + +[blocks.outlets.fields.outlets] +type = "list" +shape = [ + "noutlets", +] + +[blocks.outlets.fields.outlets.item] +type = "record" + +[blocks.outlets.fields.outlets.item.fields.outletno] +type = "integer" +longname = "outlet number for this entry" +description = "integer value that defines the outlet number associated with the specified OUTLETS data on the line. OUTLETNO must be greater than zero and less than or equal to NOUTLETS. Outlet information must be specified for every outlet or the program will terminate with an error. The program will also terminate with an error if information for a outlet is specified more than once." +tagged = false + +[blocks.outlets.fields.outlets.item.fields.lakein] +type = "integer" +longname = "lake number for upstream lake" +description = "integer value that defines the lake number that outlet is connected to. LAKEIN must be greater than zero and less than or equal to NLAKES." +tagged = false + +[blocks.outlets.fields.outlets.item.fields.lakeout] +type = "integer" +longname = "lake number for downstream lake" +description = "integer value that defines the lake number that outlet discharge from lake outlet OUTLETNO is routed to. LAKEOUT must be greater than or equal to zero and less than or equal to NLAKES. If LAKEOUT is zero, outlet discharge from lake outlet OUTLETNO is discharged to an external boundary." +tagged = false + +[blocks.outlets.fields.outlets.item.fields.couttype] +type = "string" +longname = "outlet type" +description = "character string that defines the outlet type for the outlet OUTLETNO. Possible COUTTYPE strings include: SPECIFIED--character keyword to indicate the outlet is defined as a specified flow. MANNING--character keyword to indicate the outlet is defined using Manning's equation. WEIR--character keyword to indicate the outlet is defined using a sharp weir equation." +tagged = false + +[blocks.outlets.fields.outlets.item.fields.invert] +type = "double" +longname = "invert elevation" +description = "real value that defines the invert elevation for the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.outlets.fields.outlets.item.fields.width] +type = "double" +longname = "outlet width" +description = "real value that defines the width of the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.outlets.fields.outlets.item.fields.rough] +type = "double" +longname = "roughness coefficient" +description = "real value that defines the roughness coefficient for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.outlets.fields.outlets.item.fields.slope] +type = "double" +longname = "bed slope" +description = "real value that defines the bed slope for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.number] +type = "integer" +longname = "lake or outlet number for this entry" +description = "integer value that defines the lake or outlet number associated with the specified PERIOD data on the line. NUMBER must be greater than zero and less than or equal to NLAKES for a lake number and less than or equal to NOUTLETS for an outlet number." +tagged = false + +[blocks.period.fields.perioddata.item.fields.laksetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include both keywords for lake settings and keywords for outlet settings. Keywords for lake settings include: STATUS, STAGE, RAINFALL, EVAPORATION, RUNOFF, INFLOW, WITHDRAWAL, and AUXILIARY. Keywords for outlet settings include RATE, INVERT, WIDTH, SLOPE, and ROUGH." + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.status] +type = "string" +longname = "lake status" +description = "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE." + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.stage] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.rainfall] +type = "string" +longname = "rainfall rate" +description = "real or character value that defines the rainfall rate $(LT^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.evaporation] +type = "string" +longname = "evaporation rate" +description = "real or character value that defines the maximum evaporation rate $(LT^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.runoff] +type = "string" +longname = "runoff rate" +description = "real or character value that defines the runoff rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.inflow] +type = "string" +longname = "inflow rate" +description = "real or character value that defines the volumetric inflow rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, inflow rates are zero for each lake." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.withdrawal] +type = "string" +longname = "maximum withdrawal rate" +description = "real or character value that defines the maximum withdrawal rate $(L^3 T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.rate] +type = "string" +longname = "extraction rate" +description = "real or character value that defines the extraction rate for the lake outflow. A positive value indicates inflow and a negative value indicates outflow from the lake. RATE only applies to outlets associated with active lakes (STATUS is ACTIVE). A specified RATE is only applied if COUTTYPE for the OUTLETNO is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the RATE for each SPECIFIED lake outlet is zero." +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.invert] +type = "double" +longname = "invert elevation" +description = "real value that defines the invert elevation for the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.width] +type = "double" +longname = "outlet width" +description = "real value that defines the width of the lake outlet. Any value can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.slope] +type = "double" +longname = "bed slope" +description = "real value that defines the bed slope for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.rough] +type = "double" +longname = "roughness coefficient" +description = "real value that defines the roughness coefficient for the lake outlet. Any value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.perioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.nlakes] +set_in = "ar" +source = "nlakes" +type = "integer" + +[memory.noutlets] +set_in = "ar" +source = "noutlets" +type = "integer" + +[memory.ntables] +set_in = "ar" +source = "ntables" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.yaml new file mode 100644 index 00000000..2edb3c78 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-lak.yaml @@ -0,0 +1,606 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-lak +parent: gwf-nam +multi: true +subtype: advanced +dims: + nlakes: + value: nlakes + scope: model + noutlets: + value: noutlets + scope: model + ntables: + value: ntables + scope: model + auxiliary: + value: len(auxiliary) + nlakeconn: + value: sum(packagedata.nlakeconn) + scope: model +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of lake cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of lake information will be written to the listing + file immediately after it is read. + optional: true + print_stage: + type: keyword + longname: print calculated stages to listing file + description: keyword to indicate that the list of lake {#2} will be printed to the listing file + for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no + Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step + of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of lake flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save lake flows to budget file + description: keyword to indicate that lake flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + stage_filerecord: + type: record + optional: true + fields: + stage: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to stage. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + package_convergence_filerecord: + type: record + optional: true + fields: + package_convergence: + type: file + longname: package_convergence keyword + description: keyword to specify that record corresponds to the package convergence comma spaced + values file. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the LAK Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + surfdep: + type: double + longname: surface depression depth + description: real value that defines the surface depression depth for VERTICAL lake-GWF connections. + If specified, SURFDEP must be greater than or equal to zero. If SURFDEP is not specified, a + default value of zero is used for all vertical lake-GWF connections. + optional: true + maximum_iterations: + type: integer + longname: LAK Newton-Raphson iterations + description: integer value that defines the maximum number of Newton-Raphson iterations allowed + for a lake. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS would only need + to be increased from the default value if one or more lakes in a simulation has a large water + budget error. + optional: true + maximum_stage_change: + type: double + longname: stage closure tolerance + description: real value that defines the lake stage closure tolerance. By default, MAXIMUM_STAGE_CHANGE + is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased + from the default value if the water budget error for one or more lakes is too small or too large, + respectively. + optional: true + time_conversion: + type: double + longname: time conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + or gravitational acceleration used to calculate outlet flows from seconds to model time units. + TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time + units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. + TIME_CONVERSION does not need to be specified if no lake outlets are specified or TIME_UNITS + are seconds. + optional: true + length_conversion: + type: double + longname: length conversion factor + description: real value that is used to convert outlet user-specified Manning's roughness coefficients + or gravitational acceleration used to calculate outlet flows from meters to model length units. + LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) + of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not + need to be specified if no lake outlets are specified or LENGTH_UNITS are meters. + optional: true + dimensions: + fields: + nlakes: + type: integer + longname: number of lakes + description: value specifying the number of lakes that will be simulated for all stress periods. + noutlets: + type: integer + longname: number of outlets + description: value specifying the number of outlets that will be simulated for all stress periods. + If NOUTLETS is not specified, a default value of zero is used. + ntables: + type: integer + longname: number of tables + description: value specifying the number of lakes tables that will be used to define the lake + stage, volume relation, and surface area. If NTABLES is not specified, a default value of zero + is used. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: lake number for this entry + description: integer value that defines the feature (lake) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NLAKES. Lake information must be specified for every lake or the program will terminate + with an error. The program will also terminate with an error if information for a lake + is specified more than once. + tagged: false + strt: + type: double + longname: starting lake stage + description: real value that defines the starting stage for the lake. + tagged: false + nlakeconn: + type: integer + longname: number of lake connections + description: integer value that defines the number of GWF cells connected to this (IFNO) + lake. There can only be one vertical lake connection to each GWF cell. NLAKECONN must + be greater than zero. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each lake. The values + of auxiliary variables must be present for each lake. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the lake cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + shape: + - nlakes + connectiondata: + fields: + connectiondata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: lake number for this entry + description: integer value that defines the feature (lake) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NLAKES. Lake information must be specified for every lake or the program will terminate + with an error. The program will also terminate with an error if information for a lake + is specified more than once. + tagged: false + iconn: + type: integer + longname: connection number for this entry + description: integer value that defines the GWF connection number for this lake connection + entry. ICONN must be greater than zero and less than or equal to NLAKECONN for lake IFNO. + tagged: false + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + claktype: + type: string + longname: lake connection type + description: 'character string that defines the lake-GWF connection type for the lake connection. + Possible lake-GWF connection type strings include: VERTICAL--character keyword to indicate + the lake-GWF connection is vertical and connection conductance calculations use the hydraulic + conductivity corresponding to the $K_{33}$ tensor component defined for CELLID in the + NPF package. HORIZONTAL--character keyword to indicate the lake-GWF connection is horizontal + and connection conductance calculations use the hydraulic conductivity corresponding to + the $K_{11}$ tensor component defined for CELLID in the NPF package. EMBEDDEDH--character + keyword to indicate the lake-GWF connection is embedded in a single cell and connection + conductance calculations use the hydraulic conductivity corresponding to the $K_{11}$ + tensor component defined for CELLID in the NPF package. EMBEDDEDV--character keyword to + indicate the lake-GWF connection is embedded in a single cell and connection conductance + calculations use the hydraulic conductivity corresponding to the $K_{33}$ tensor component + defined for CELLID in the NPF package. Embedded lakes can only be connected to a single + cell (NLAKECONN = 1) and there must be a lake table associated with each embedded lake.' + tagged: false + bedleak: + type: string + longname: bed leakance + description: real value or character string that defines the bed leakance for the lake-GWF + connection. BEDLEAK must be greater than or equal to zero, equal to the DNODATA value + (3.0E+30), or specified to be NONE. If DNODATA or NONE is specified for BEDLEAK, the lake-GWF + connection conductance is solely a function of aquifer properties in the connected GWF + cell and lakebed sediments are assumed to be absent. Warning messages will be issued if + NONE is specified. Eventually the ability to specify NONE will be deprecated and cause + MODFLOW 6 to terminate with an error. + tagged: false + belev: + type: double + longname: bottom elevation + description: real value that defines the bottom elevation for a HORIZONTAL lake-GWF connection. + Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE + is HORIZONTAL and BELEV is not equal to TELEV, BELEV must be greater than or equal to + the bottom of the GWF cell CELLID. If BELEV is equal to TELEV, BELEV is reset to the bottom + of the GWF cell CELLID. + tagged: false + telev: + type: double + longname: top elevation + description: real value that defines the top elevation for a HORIZONTAL lake-GWF connection. + Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. If CLAKTYPE + is HORIZONTAL and TELEV is not equal to BELEV, TELEV must be less than or equal to the + top of the GWF cell CELLID. If TELEV is equal to BELEV, TELEV is reset to the top of the + GWF cell CELLID. + tagged: false + connlen: + type: double + longname: connection length + description: real value that defines the distance between the connected GWF CELLID node + and the lake for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. CONLENN must + be greater than zero for a HORIZONTAL, EMBEDDEDH, or EMBEDDEDV lake-GWF connection. Any + value can be specified if CLAKTYPE is VERTICAL. + tagged: false + connwidth: + type: double + longname: connection width + description: real value that defines the connection face width for a HORIZONTAL lake-GWF + connection. CONNWIDTH must be greater than zero for a HORIZONTAL lake-GWF connection. + Any value can be specified if CLAKTYPE is VERTICAL, EMBEDDEDH, or EMBEDDEDV. + tagged: false + shape: + - nlakeconn + tables: + fields: + tables: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: lake number for this entry + description: integer value that defines the feature (lake) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NLAKES. Lake information must be specified for every lake or the program will terminate + with an error. The program will also terminate with an error if information for a lake + is specified more than once. + tagged: false + tab6: + type: keyword + longname: head keyword + description: keyword to specify that record corresponds to a table file. + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + tab6_filename: + type: string + longname: table file name + description: character string that defines the path and filename for the file containing + lake table data for the lake connection. The TAB6_FILENAME file includes the number of + entries in the file and the relation between stage, volume, and surface area for each + entry in the file. Lake table files for EMBEDDEDH and EMBEDDEDV lake-GWF connections also + include lake-GWF exchange area data for each entry in the file. Instructions for creating + the TAB6_FILENAME input file are provided in Lake Table Input File section. + tagged: false + case_sensitive: true + shape: + - ntables + outlets: + fields: + outlets: + type: list + item: + type: record + fields: + outletno: + type: integer + longname: outlet number for this entry + description: integer value that defines the outlet number associated with the specified + OUTLETS data on the line. OUTLETNO must be greater than zero and less than or equal to + NOUTLETS. Outlet information must be specified for every outlet or the program will terminate + with an error. The program will also terminate with an error if information for a outlet + is specified more than once. + tagged: false + lakein: + type: integer + longname: lake number for upstream lake + description: integer value that defines the lake number that outlet is connected to. LAKEIN + must be greater than zero and less than or equal to NLAKES. + tagged: false + lakeout: + type: integer + longname: lake number for downstream lake + description: integer value that defines the lake number that outlet discharge from lake + outlet OUTLETNO is routed to. LAKEOUT must be greater than or equal to zero and less than + or equal to NLAKES. If LAKEOUT is zero, outlet discharge from lake outlet OUTLETNO is + discharged to an external boundary. + tagged: false + couttype: + type: string + longname: outlet type + description: 'character string that defines the outlet type for the outlet OUTLETNO. Possible + COUTTYPE strings include: SPECIFIED--character keyword to indicate the outlet is defined + as a specified flow. MANNING--character keyword to indicate the outlet is defined using + Manning''s equation. WEIR--character keyword to indicate the outlet is defined using a + sharp weir equation.' + tagged: false + invert: + type: double + longname: invert elevation + description: real value that defines the invert elevation for the lake outlet. Any value + can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + width: + type: double + longname: outlet width + description: real value that defines the width of the lake outlet. Any value can be specified + if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE entry (see the + 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + tagged: false + time_series: true + rough: + type: double + longname: roughness coefficient + description: real value that defines the roughness coefficient for the lake outlet. Any + value can be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + slope: + type: double + longname: bed slope + description: real value that defines the bed slope for the lake outlet. Any value can be + specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + tagged: false + time_series: true + shape: + - noutlets + period: + fields: + perioddata: + type: list + item: + type: record + fields: + number: + type: integer + longname: lake or outlet number for this entry + description: integer value that defines the lake or outlet number associated with the specified + PERIOD data on the line. NUMBER must be greater than zero and less than or equal to NLAKES + for a lake number and less than or equal to NOUTLETS for an outlet number. + tagged: false + laksetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the LAKSETTING string include both keywords for lake settings + and keywords for outlet settings. Keywords for lake settings include: STATUS, STAGE, + RAINFALL, EVAPORATION, RUNOFF, INFLOW, WITHDRAWAL, and AUXILIARY. Keywords for outlet + settings include RATE, INVERT, WIDTH, SLOPE, and ROUGH.' + arms: + status: + type: string + longname: lake status + description: keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE. + stage: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to stage. + rainfall: + type: string + longname: rainfall rate + description: real or character value that defines the rainfall rate $(LT^{-1})$ for + the lake. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + evaporation: + type: string + longname: evaporation rate + description: real or character value that defines the maximum evaporation rate $(LT^{-1})$ + for the lake. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + runoff: + type: string + longname: runoff rate + description: real or character value that defines the runoff rate $(L^3 T^{-1})$ for + the lake. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + inflow: + type: string + longname: inflow rate + description: real or character value that defines the volumetric inflow rate $(L^3 T^{-1})$ + for the lake. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. By + default, inflow rates are zero for each lake. + time_series: true + withdrawal: + type: string + longname: maximum withdrawal rate + description: real or character value that defines the maximum withdrawal rate $(L^3 + T^{-1})$ for the lake. Value must be greater than or equal to zero. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. + time_series: true + rate: + type: string + longname: extraction rate + description: real or character value that defines the extraction rate for the lake outflow. + A positive value indicates inflow and a negative value indicates outflow from the + lake. RATE only applies to outlets associated with active lakes (STATUS is ACTIVE). + A specified RATE is only applied if COUTTYPE for the OUTLETNO is SPECIFIED. If the + Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place + of a numeric value. By default, the RATE for each SPECIFIED lake outlet is zero. + time_series: true + invert: + type: double + longname: invert elevation + description: real value that defines the invert elevation for the lake outlet. Any value + can be specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + width: + type: double + longname: outlet width + description: real value that defines the width of the lake outlet. Any value can be + specified if COUTTYPE is SPECIFIED. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + slope: + type: double + longname: bed slope + description: real value that defines the bed slope for the lake outlet. Any value can + be specified if COUTTYPE is not MANNING. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + rough: + type: double + longname: roughness coefficient + description: real value that defines the roughness coefficient for the lake outlet. + Any value can be specified if COUTTYPE is not MANNING. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + nlakes: + set_in: ar + source: nlakes + type: integer + noutlets: + set_in: ar + source: noutlets + type: integer + ntables: + set_in: ar + source: ntables + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.json new file mode 100644 index 00000000..45301fcb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.json @@ -0,0 +1,446 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-maw", + "parent": "gwf-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "nmawwells": { + "value": "nmawwells", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of multi-aquifer well cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of multi-aquifer well information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_head": { + "type": "keyword", + "longname": "print calculated heads to listing file", + "description": "keyword to indicate that the list of multi-aquifer well {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of multi-aquifer well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that multi-aquifer well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "head_filerecord": { + "type": "record", + "optional": true, + "fields": { + "head": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to head.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "no_well_storage": { + "type": "keyword", + "longname": "deactivate well storage", + "description": "keyword that deactivates inclusion of well storage contributions to the multi-aquifer well package continuity equation.", + "optional": true + }, + "flow_correction": { + "type": "keyword", + "longname": "activate flow correction", + "description": "keyword that activates flow corrections in cases where the head in a multi-aquifer well is below the bottom of the screen for a connection or the head in a convertible cell connected to a multi-aquifer well is below the cell bottom. When flow corrections are activated, unit head gradients are used to calculate the flow between a multi-aquifer well and a connected GWF cell. By default, flow corrections are not made.", + "optional": true + }, + "flowing_wells": { + "type": "keyword", + "longname": "activate flowing wells", + "description": "keyword that activates the flowing wells option for the multi-aquifer well package.", + "optional": true + }, + "shutdown_theta": { + "type": "double", + "longname": "shutdown theta", + "description": "value that defines the weight applied to discharge rate for wells that limit the water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period data). SHUTDOWN_THETA is used to control discharge rate oscillations when the flow rate from the aquifer is less than the specified flow rate from the aquifer to the well. Values range between 0.0 and 1.0, and larger values increase the weight (decrease under-relaxation) applied to the well discharge rate. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, SHUTDOWN_THETA is 0.7.", + "optional": true + }, + "shutdown_kappa": { + "type": "double", + "longname": "shutdown kappa", + "description": "value that defines the weight applied to discharge rate for wells that limit the water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period data). SHUTDOWN_KAPPA is used to control discharge rate oscillations when the flow rate from the aquifer is less than the specified flow rate from the aquifer to the well. Values range between 0.0 and 1.0, and larger values increase the weight applied to the well discharge rate. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, SHUTDOWN_KAPPA is 0.0001.", + "optional": true + }, + "mfrcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "maw_flow_reduce_csv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the output option in which a new record is written for each multi-aquifer well and for each time step in which the user-requested extraction or injection rate is reduced by the program.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the MAW Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nmawwells": { + "type": "integer", + "longname": "number of MAW wells", + "description": "integer value specifying the number of multi-aquifer wells that will be simulated for all stress periods." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well or the program will terminate with an error. The program will also terminate with an error if information for a multi-aquifer well is specified more than once.", + "tagged": false + }, + "radius": { + "type": "double", + "longname": "well radius", + "description": "radius for the multi-aquifer well. The program will terminate with an error if the radius is less than or equal to zero.", + "tagged": false + }, + "bottom": { + "type": "double", + "longname": "well bottom", + "description": "bottom elevation of the multi-aquifer well. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, BOTTOM is set to the cell bottom in the lowermost GWF cell connection in cases where the specified well bottom is above the bottom of this GWF cell. If CONDEQN is MEAN, BOTTOM is set to the lowermost GWF cell connection screen bottom in cases where the specified well bottom is above this value. The bottom elevation defines the lowest well head that will be simulated when the NEWTON UNDER_RELAXATION option is specified in the GWF model name file. The bottom elevation is also used to calculate volumetric storage in the well.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting head", + "description": "starting head for the multi-aquifer well. The program will terminate with an error if the starting head is less than the specified well bottom.", + "tagged": false + }, + "condeqn": { + "type": "string", + "longname": "conductance equation", + "description": "character string that defines the conductance equation that is used to calculate the saturated conductance for the multi-aquifer well. Possible multi-aquifer well CONDEQN strings include: SPECIFIED--character keyword to indicate the multi-aquifer well saturated conductance will be specified. THIEM--character keyword to indicate the multi-aquifer well saturated conductance will be calculated using the Thiem equation, which considers the cell top and bottom, aquifer hydraulic conductivity, and effective cell and well radius. SKIN--character keyword to indicate that the multi-aquifer well saturated conductance will be calculated using the cell top and bottom, aquifer and screen hydraulic conductivity, and well and skin radius. CUMULATIVE--character keyword to indicate that the multi-aquifer well saturated conductance will be calculated using a combination of the Thiem and SKIN equations. MEAN--character keyword to indicate the multi-aquifer well saturated conductance will be calculated using the aquifer and screen top and bottom, aquifer and screen hydraulic conductivity, and well and skin radius. The CUMULATIVE conductance equation is identical to the SKIN LOSSTYPE in the Multi-Node Well (MNW2) package for MODFLOW-2005. The program will terminate with an error condition if CONDEQN is SKIN or CUMULATIVE and the calculated saturated conductance is less than zero; if an error condition occurs, it is suggested that the THIEM or MEAN conductance equations be used for these multi-aquifer wells.", + "tagged": false + }, + "ngwfnodes": { + "type": "integer", + "longname": "number of connected GWF cells", + "description": "integer value that defines the number of GWF nodes connected to this (IFNO) multi-aquifer well. NGWFNODES must be greater than zero.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each multi-aquifer well. The values of auxiliary variables must be present for each multi-aquifer well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the multi-aquifer well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nmawwells" + ] + } + } + }, + "connectiondata": { + "fields": { + "connectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well or the program will terminate with an error. The program will also terminate with an error if information for a multi-aquifer well is specified more than once.", + "tagged": false + }, + "icon": { + "type": "integer", + "longname": "connection number", + "description": "integer value that defines the GWF connection number for this multi-aquifer well connection entry. ICONN must be greater than zero and less than or equal to NGWFNODES for multi-aquifer well IFNO.", + "tagged": false + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell. One or more screened intervals can be connected to the same CELLID if CONDEQN for a well is MEAN. The program will terminate with an error if MAW wells using SPECIFIED, THIEM, SKIN, or CUMULATIVE conductance equations have more than one connection to the same CELLID.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "scrn_top": { + "type": "double", + "longname": "screen top", + "description": "value that defines the top elevation of the screen for the multi-aquifer well connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_TOP can be any value and is set to the top of the cell. If CONDEQN is MEAN, SCRN_TOP is set to the multi-aquifer well connection cell top if the specified value is greater than the cell top. The program will terminate with an error if the screen top is less than the screen bottom.", + "tagged": false + }, + "scrn_bot": { + "type": "double", + "longname": "screen bottom", + "description": "value that defines the bottom elevation of the screen for the multi-aquifer well connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_BOT can be any value and is set to the bottom of the cell. If CONDEQN is MEAN, SCRN_BOT is set to the multi-aquifer well connection cell bottom if the specified value is less than the cell bottom. The program will terminate with an error if the screen bottom is greater than the screen top.", + "tagged": false + }, + "hk_skin": { + "type": "double", + "longname": "skin data", + "description": "value that defines the skin (filter pack) hydraulic conductivity (if CONDEQN for the multi-aquifer well is SKIN, CUMULATIVE, or MEAN) or conductance (if CONDEQN for the multi-aquifer well is SPECIFIED) for each GWF node connected to the multi-aquifer well (NGWFNODES). If CONDEQN is SPECIFIED, HK_SKIN must be greater than or equal to zero. HK_SKIN can be any value if CONDEQN is THIEM. Otherwise, HK_SKIN must be greater than zero. If CONDEQN is SKIN, the contrast between the cell transmissivity (the product of geometric mean horizontal hydraulic conductivity and the cell thickness) and the well transmissivity (the product of HK_SKIN and the screen thicknesses) must be greater than one in node CELLID or the program will terminate with an error condition; if an error condition occurs, it is suggested that the HK_SKIN be reduced to a value less than K11 and K22 in node CELLID or the THIEM or MEAN conductance equations be used for these multi-aquifer wells.", + "tagged": false + }, + "radius_skin": { + "type": "double", + "longname": "skin radius", + "description": "real value that defines the skin radius (filter pack radius) for the multi-aquifer well. RADIUS_SKIN can be any value if CONDEQN is SPECIFIED or THIEM. If CONDEQN is SKIN, CUMULATIVE, or MEAN, the program will terminate with an error if RADIUS_SKIN is less than or equal to the RADIUS for the multi-aquifer well.", + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the well number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS.", + "tagged": false + }, + "mawsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MAWSETTING string include: STATUS, FLOWING_WELL, RATE, WELL_HEAD, HEAD_LIMIT, SHUT_OFF, RATE_SCALING, and AUXILIARY.", + "arms": { + "status": { + "type": "string", + "longname": "well status", + "description": "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE." + }, + "flowing_wellrecord": { + "type": "record", + "fields": { + "flowing_well": { + "type": "keyword", + "longname": "well is a flowing well", + "description": "keyword to indicate the well is a flowing well. The FLOWING_WELL option can be used to simulate flowing wells when the simulated well head exceeds the specified drainage elevation." + }, + "fwelev": { + "type": "double", + "longname": "flowing well elevation", + "description": "elevation used to determine whether or not the well is flowing.", + "tagged": false + }, + "fwcond": { + "type": "double", + "longname": "well flowing well conductance", + "description": "conductance used to calculate the discharge of a free flowing well. Flow occurs when the head in the well is above the well top elevation (FWELEV).", + "tagged": false + }, + "fwrlen": { + "type": "double", + "longname": "flowing well reduction length", + "description": "length used to reduce the conductance of the flowing well. When the head in the well drops below the well top plus the reduction length, then the conductance is reduced. This reduction length can be used to improve the stability of simulations with flowing wells so that there is not an abrupt change in flowing well rates.", + "tagged": false + } + } + }, + "rate": { + "type": "double", + "longname": "well pumping rate", + "description": "is the volumetric pumping rate for the multi-aquifer well. A positive value indicates recharge and a negative value indicates discharge (pumping). RATE only applies to active (STATUS is ACTIVE) multi-aquifer wells. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the RATE for each multi-aquifer well is zero.", + "time_series": true + }, + "well_head": { + "type": "double", + "longname": "well head", + "description": "is the head in the multi-aquifer well. WELL_HEAD is only applied to constant head (STATUS is CONSTANT) and inactive (STATUS is INACTIVE) multi-aquifer wells. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. The program will terminate with an error if WELL_HEAD is less than the bottom of the well.", + "time_series": true + }, + "head_limit": { + "type": "string", + "longname": "head limit", + "description": "is the limiting water level (head) in the well, which is the minimum of the well RATE or the well inflow rate from the aquifer. HEAD_LIMIT can be applied to extraction wells (RATE $<$ 0) or injection wells (RATE $>$ 0). HEAD_LIMIT can be deactivated by specifying the text string `OFF'. The HEAD_LIMIT option is based on the HEAD_LIMIT functionality available in the MNW2~citep{konikow2009} package for MODFLOW-2005. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, HEAD_LIMIT is `OFF'." + }, + "shutoffrecord": { + "type": "record", + "fields": { + "shut_off": { + "type": "keyword", + "longname": "shut off well", + "description": "keyword for activating well shut off capability. Subsequent values define the minimum and maximum pumping rate that a well must exceed to shutoff or reactivate a well, respectively, during a stress period. SHUT_OFF is only applied to injection wells (RATE$<0$) and if HEAD_LIMIT is specified (not set to `OFF'). If HEAD_LIMIT is specified, SHUT_OFF can be deactivated by specifying a minimum value equal to zero. The SHUT_OFF option is based on the SHUT_OFF functionality available in the MNW2~citep{konikow2009} package for MODFLOW-2005. The SHUT_OFF option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the SHUT_OFF option is recommended. By default, SHUT_OFF is not used." + }, + "minrate": { + "type": "double", + "longname": "minimum shutoff rate", + "description": "is the minimum rate that a well must exceed to shutoff a well during a stress period. The well will shut down during a time step if the flow rate to the well from the aquifer is less than MINRATE. If a well is shut down during a time step, reactivation of the well cannot occur until the next time step to reduce oscillations. MINRATE must be less than maxrate.", + "tagged": false + }, + "maxrate": { + "type": "double", + "longname": "maximum shutoff rate", + "description": "is the maximum rate that a well must exceed to reactivate a well during a stress period. The well will reactivate during a timestep if the well was shutdown during the previous time step and the flow rate to the well from the aquifer exceeds maxrate. Reactivation of the well cannot occur until the next time step if a well is shutdown to reduce oscillations. maxrate must be greater than MINRATE.", + "tagged": false + } + } + }, + "rate_scalingrecord": { + "type": "record", + "fields": { + "rate_scaling": { + "type": "keyword", + "longname": "rate scaling", + "description": "activate rate scaling. If RATE_SCALING is specified, both PUMP_ELEVATION and SCALING_LENGTH must be specified. RATE_SCALING cannot be used with HEAD_LIMIT. RATE_SCALING can be used for extraction or injection wells. For extraction wells, the extraction rate will start to decrease once the head in the well lowers to a level equal to the pump elevation plus the scaling length. If the head in the well drops below the pump elevation, then the extraction rate is calculated to be zero. For an injection well, the injection rate will begin to decrease once the head in the well rises above the specified pump elevation. If the head in the well rises above the pump elevation plus the scaling length, then the injection rate will be set to zero." + }, + "pump_elevation": { + "type": "double", + "longname": "pump elevation", + "description": "is the elevation of the multi-aquifer well pump (PUMP_ELEVATION). PUMP_ELEVATION should not be less than the bottom elevation (BOTTOM) of the multi-aquifer well.", + "tagged": false + }, + "scaling_length": { + "type": "double", + "description": "height above the pump elevation (SCALING_LENGTH). If the simulated well head is below this elevation (pump elevation plus the scaling length), then the pumping rate is reduced.", + "tagged": false + } + } + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "nmawwells": { + "set_in": "ar", + "source": "nmawwells", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.toml new file mode 100644 index 00000000..05705437 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.toml @@ -0,0 +1,390 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-maw" +parent = "gwf-nam" +multi = true +subtype = "advanced" + +[dims.nmawwells] +value = "nmawwells" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of multi-aquifer well cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of multi-aquifer well information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_head] +type = "keyword" +longname = "print calculated heads to listing file" +description = "keyword to indicate that the list of multi-aquifer well {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of multi-aquifer well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that multi-aquifer well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.head_filerecord] +type = "record" +optional = true + +[blocks.options.fields.head_filerecord.fields.head] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to head." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.no_well_storage] +type = "keyword" +longname = "deactivate well storage" +description = "keyword that deactivates inclusion of well storage contributions to the multi-aquifer well package continuity equation." +optional = true + +[blocks.options.fields.flow_correction] +type = "keyword" +longname = "activate flow correction" +description = "keyword that activates flow corrections in cases where the head in a multi-aquifer well is below the bottom of the screen for a connection or the head in a convertible cell connected to a multi-aquifer well is below the cell bottom. When flow corrections are activated, unit head gradients are used to calculate the flow between a multi-aquifer well and a connected GWF cell. By default, flow corrections are not made." +optional = true + +[blocks.options.fields.flowing_wells] +type = "keyword" +longname = "activate flowing wells" +description = "keyword that activates the flowing wells option for the multi-aquifer well package." +optional = true + +[blocks.options.fields.shutdown_theta] +type = "double" +longname = "shutdown theta" +description = "value that defines the weight applied to discharge rate for wells that limit the water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period data). SHUTDOWN_THETA is used to control discharge rate oscillations when the flow rate from the aquifer is less than the specified flow rate from the aquifer to the well. Values range between 0.0 and 1.0, and larger values increase the weight (decrease under-relaxation) applied to the well discharge rate. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, SHUTDOWN_THETA is 0.7." +optional = true + +[blocks.options.fields.shutdown_kappa] +type = "double" +longname = "shutdown kappa" +description = "value that defines the weight applied to discharge rate for wells that limit the water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period data). SHUTDOWN_KAPPA is used to control discharge rate oscillations when the flow rate from the aquifer is less than the specified flow rate from the aquifer to the well. Values range between 0.0 and 1.0, and larger values increase the weight applied to the well discharge rate. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, SHUTDOWN_KAPPA is 0.0001." +optional = true + +[blocks.options.fields.mfrcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.mfrcsv_filerecord.fields.maw_flow_reduce_csv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the output option in which a new record is written for each multi-aquifer well and for each time step in which the user-requested extraction or injection rate is reduced by the program." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the MAW Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.nmawwells] +type = "integer" +longname = "number of MAW wells" +description = "integer value specifying the number of multi-aquifer wells that will be simulated for all stress periods." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nmawwells", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well or the program will terminate with an error. The program will also terminate with an error if information for a multi-aquifer well is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.radius] +type = "double" +longname = "well radius" +description = "radius for the multi-aquifer well. The program will terminate with an error if the radius is less than or equal to zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.bottom] +type = "double" +longname = "well bottom" +description = "bottom elevation of the multi-aquifer well. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, BOTTOM is set to the cell bottom in the lowermost GWF cell connection in cases where the specified well bottom is above the bottom of this GWF cell. If CONDEQN is MEAN, BOTTOM is set to the lowermost GWF cell connection screen bottom in cases where the specified well bottom is above this value. The bottom elevation defines the lowest well head that will be simulated when the NEWTON UNDER_RELAXATION option is specified in the GWF model name file. The bottom elevation is also used to calculate volumetric storage in the well." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting head" +description = "starting head for the multi-aquifer well. The program will terminate with an error if the starting head is less than the specified well bottom." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.condeqn] +type = "string" +longname = "conductance equation" +description = "character string that defines the conductance equation that is used to calculate the saturated conductance for the multi-aquifer well. Possible multi-aquifer well CONDEQN strings include: SPECIFIED--character keyword to indicate the multi-aquifer well saturated conductance will be specified. THIEM--character keyword to indicate the multi-aquifer well saturated conductance will be calculated using the Thiem equation, which considers the cell top and bottom, aquifer hydraulic conductivity, and effective cell and well radius. SKIN--character keyword to indicate that the multi-aquifer well saturated conductance will be calculated using the cell top and bottom, aquifer and screen hydraulic conductivity, and well and skin radius. CUMULATIVE--character keyword to indicate that the multi-aquifer well saturated conductance will be calculated using a combination of the Thiem and SKIN equations. MEAN--character keyword to indicate the multi-aquifer well saturated conductance will be calculated using the aquifer and screen top and bottom, aquifer and screen hydraulic conductivity, and well and skin radius. The CUMULATIVE conductance equation is identical to the SKIN LOSSTYPE in the Multi-Node Well (MNW2) package for MODFLOW-2005. The program will terminate with an error condition if CONDEQN is SKIN or CUMULATIVE and the calculated saturated conductance is less than zero; if an error condition occurs, it is suggested that the THIEM or MEAN conductance equations be used for these multi-aquifer wells." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ngwfnodes] +type = "integer" +longname = "number of connected GWF cells" +description = "integer value that defines the number of GWF nodes connected to this (IFNO) multi-aquifer well. NGWFNODES must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each multi-aquifer well. The values of auxiliary variables must be present for each multi-aquifer well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the multi-aquifer well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.connectiondata.fields.connectiondata] +type = "list" + +[blocks.connectiondata.fields.connectiondata.item] +type = "record" + +[blocks.connectiondata.fields.connectiondata.item.fields.ifno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well or the program will terminate with an error. The program will also terminate with an error if information for a multi-aquifer well is specified more than once." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.icon] +type = "integer" +longname = "connection number" +description = "integer value that defines the GWF connection number for this multi-aquifer well connection entry. ICONN must be greater than zero and less than or equal to NGWFNODES for multi-aquifer well IFNO." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell. One or more screened intervals can be connected to the same CELLID if CONDEQN for a well is MEAN. The program will terminate with an error if MAW wells using SPECIFIED, THIEM, SKIN, or CUMULATIVE conductance equations have more than one connection to the same CELLID." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.connectiondata.fields.connectiondata.item.fields.scrn_top] +type = "double" +longname = "screen top" +description = "value that defines the top elevation of the screen for the multi-aquifer well connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_TOP can be any value and is set to the top of the cell. If CONDEQN is MEAN, SCRN_TOP is set to the multi-aquifer well connection cell top if the specified value is greater than the cell top. The program will terminate with an error if the screen top is less than the screen bottom." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.scrn_bot] +type = "double" +longname = "screen bottom" +description = "value that defines the bottom elevation of the screen for the multi-aquifer well connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_BOT can be any value and is set to the bottom of the cell. If CONDEQN is MEAN, SCRN_BOT is set to the multi-aquifer well connection cell bottom if the specified value is less than the cell bottom. The program will terminate with an error if the screen bottom is greater than the screen top." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.hk_skin] +type = "double" +longname = "skin data" +description = "value that defines the skin (filter pack) hydraulic conductivity (if CONDEQN for the multi-aquifer well is SKIN, CUMULATIVE, or MEAN) or conductance (if CONDEQN for the multi-aquifer well is SPECIFIED) for each GWF node connected to the multi-aquifer well (NGWFNODES). If CONDEQN is SPECIFIED, HK_SKIN must be greater than or equal to zero. HK_SKIN can be any value if CONDEQN is THIEM. Otherwise, HK_SKIN must be greater than zero. If CONDEQN is SKIN, the contrast between the cell transmissivity (the product of geometric mean horizontal hydraulic conductivity and the cell thickness) and the well transmissivity (the product of HK_SKIN and the screen thicknesses) must be greater than one in node CELLID or the program will terminate with an error condition; if an error condition occurs, it is suggested that the HK_SKIN be reduced to a value less than K11 and K22 in node CELLID or the THIEM or MEAN conductance equations be used for these multi-aquifer wells." +tagged = false + +[blocks.connectiondata.fields.connectiondata.item.fields.radius_skin] +type = "double" +longname = "skin radius" +description = "real value that defines the skin radius (filter pack radius) for the multi-aquifer well. RADIUS_SKIN can be any value if CONDEQN is SPECIFIED or THIEM. If CONDEQN is SKIN, CUMULATIVE, or MEAN, the program will terminate with an error if RADIUS_SKIN is less than or equal to the RADIUS for the multi-aquifer well." +tagged = false + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.ifno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the well number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MAWSETTING string include: STATUS, FLOWING_WELL, RATE, WELL_HEAD, HEAD_LIMIT, SHUT_OFF, RATE_SCALING, and AUXILIARY." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.status] +type = "string" +longname = "well status" +description = "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.flowing_wellrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.flowing_wellrecord.fields.flowing_well] +type = "keyword" +longname = "well is a flowing well" +description = "keyword to indicate the well is a flowing well. The FLOWING_WELL option can be used to simulate flowing wells when the simulated well head exceeds the specified drainage elevation." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.flowing_wellrecord.fields.fwelev] +type = "double" +longname = "flowing well elevation" +description = "elevation used to determine whether or not the well is flowing." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.flowing_wellrecord.fields.fwcond] +type = "double" +longname = "well flowing well conductance" +description = "conductance used to calculate the discharge of a free flowing well. Flow occurs when the head in the well is above the well top elevation (FWELEV)." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.flowing_wellrecord.fields.fwrlen] +type = "double" +longname = "flowing well reduction length" +description = "length used to reduce the conductance of the flowing well. When the head in the well drops below the well top plus the reduction length, then the conductance is reduced. This reduction length can be used to improve the stability of simulations with flowing wells so that there is not an abrupt change in flowing well rates." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.rate] +type = "double" +longname = "well pumping rate" +description = "is the volumetric pumping rate for the multi-aquifer well. A positive value indicates recharge and a negative value indicates discharge (pumping). RATE only applies to active (STATUS is ACTIVE) multi-aquifer wells. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the RATE for each multi-aquifer well is zero." +time_series = true + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.well_head] +type = "double" +longname = "well head" +description = "is the head in the multi-aquifer well. WELL_HEAD is only applied to constant head (STATUS is CONSTANT) and inactive (STATUS is INACTIVE) multi-aquifer wells. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. The program will terminate with an error if WELL_HEAD is less than the bottom of the well." +time_series = true + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.head_limit] +type = "string" +longname = "head limit" +description = "is the limiting water level (head) in the well, which is the minimum of the well RATE or the well inflow rate from the aquifer. HEAD_LIMIT can be applied to extraction wells (RATE $<$ 0) or injection wells (RATE $>$ 0). HEAD_LIMIT can be deactivated by specifying the text string `OFF'. The HEAD_LIMIT option is based on the HEAD_LIMIT functionality available in the MNW2~citep{konikow2009} package for MODFLOW-2005. The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. By default, HEAD_LIMIT is `OFF'." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.shutoffrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.shutoffrecord.fields.shut_off] +type = "keyword" +longname = "shut off well" +description = "keyword for activating well shut off capability. Subsequent values define the minimum and maximum pumping rate that a well must exceed to shutoff or reactivate a well, respectively, during a stress period. SHUT_OFF is only applied to injection wells (RATE$<0$) and if HEAD_LIMIT is specified (not set to `OFF'). If HEAD_LIMIT is specified, SHUT_OFF can be deactivated by specifying a minimum value equal to zero. The SHUT_OFF option is based on the SHUT_OFF functionality available in the MNW2~citep{konikow2009} package for MODFLOW-2005. The SHUT_OFF option has been included to facilitate backward compatibility with previous versions of MODFLOW but use of the RATE_SCALING option instead of the SHUT_OFF option is recommended. By default, SHUT_OFF is not used." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.shutoffrecord.fields.minrate] +type = "double" +longname = "minimum shutoff rate" +description = "is the minimum rate that a well must exceed to shutoff a well during a stress period. The well will shut down during a time step if the flow rate to the well from the aquifer is less than MINRATE. If a well is shut down during a time step, reactivation of the well cannot occur until the next time step to reduce oscillations. MINRATE must be less than maxrate." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.shutoffrecord.fields.maxrate] +type = "double" +longname = "maximum shutoff rate" +description = "is the maximum rate that a well must exceed to reactivate a well during a stress period. The well will reactivate during a timestep if the well was shutdown during the previous time step and the flow rate to the well from the aquifer exceeds maxrate. Reactivation of the well cannot occur until the next time step if a well is shutdown to reduce oscillations. maxrate must be greater than MINRATE." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.rate_scalingrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.rate_scalingrecord.fields.rate_scaling] +type = "keyword" +longname = "rate scaling" +description = "activate rate scaling. If RATE_SCALING is specified, both PUMP_ELEVATION and SCALING_LENGTH must be specified. RATE_SCALING cannot be used with HEAD_LIMIT. RATE_SCALING can be used for extraction or injection wells. For extraction wells, the extraction rate will start to decrease once the head in the well lowers to a level equal to the pump elevation plus the scaling length. If the head in the well drops below the pump elevation, then the extraction rate is calculated to be zero. For an injection well, the injection rate will begin to decrease once the head in the well rises above the specified pump elevation. If the head in the well rises above the pump elevation plus the scaling length, then the injection rate will be set to zero." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.rate_scalingrecord.fields.pump_elevation] +type = "double" +longname = "pump elevation" +description = "is the elevation of the multi-aquifer well pump (PUMP_ELEVATION). PUMP_ELEVATION should not be less than the bottom elevation (BOTTOM) of the multi-aquifer well." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.rate_scalingrecord.fields.scaling_length] +type = "double" +description = "height above the pump elevation (SCALING_LENGTH). If the simulated well head is below this elevation (pump elevation plus the scaling length), then the pumping rate is reduced." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mawsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.nmawwells] +set_in = "ar" +source = "nmawwells" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.yaml new file mode 100644 index 00000000..b05750c8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-maw.yaml @@ -0,0 +1,516 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-maw +parent: gwf-nam +multi: true +subtype: advanced +dims: + nmawwells: + value: nmawwells + scope: model + auxiliary: + value: len(auxiliary) +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of multi-aquifer + well cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of multi-aquifer well information will be written + to the listing file immediately after it is read. + optional: true + print_head: + type: keyword + longname: print calculated heads to listing file + description: keyword to indicate that the list of multi-aquifer well {#2} will be printed to the + listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If + there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the + last time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of multi-aquifer well flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that multi-aquifer well flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + head_filerecord: + type: record + optional: true + fields: + head: + type: file + longname: head keyword + description: keyword to specify that record corresponds to head. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + no_well_storage: + type: keyword + longname: deactivate well storage + description: keyword that deactivates inclusion of well storage contributions to the multi-aquifer + well package continuity equation. + optional: true + flow_correction: + type: keyword + longname: activate flow correction + description: keyword that activates flow corrections in cases where the head in a multi-aquifer + well is below the bottom of the screen for a connection or the head in a convertible cell connected + to a multi-aquifer well is below the cell bottom. When flow corrections are activated, unit + head gradients are used to calculate the flow between a multi-aquifer well and a connected GWF + cell. By default, flow corrections are not made. + optional: true + flowing_wells: + type: keyword + longname: activate flowing wells + description: keyword that activates the flowing wells option for the multi-aquifer well package. + optional: true + shutdown_theta: + type: double + longname: shutdown theta + description: value that defines the weight applied to discharge rate for wells that limit the + water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period + data). SHUTDOWN_THETA is used to control discharge rate oscillations when the flow rate from + the aquifer is less than the specified flow rate from the aquifer to the well. Values range + between 0.0 and 1.0, and larger values increase the weight (decrease under-relaxation) applied + to the well discharge rate. The HEAD_LIMIT option has been included to facilitate backward compatibility + with previous versions of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT + option is recommended. By default, SHUTDOWN_THETA is 0.7. + optional: true + shutdown_kappa: + type: double + longname: shutdown kappa + description: value that defines the weight applied to discharge rate for wells that limit the + water level in a discharging well (defined using the HEAD_LIMIT keyword in the stress period + data). SHUTDOWN_KAPPA is used to control discharge rate oscillations when the flow rate from + the aquifer is less than the specified flow rate from the aquifer to the well. Values range + between 0.0 and 1.0, and larger values increase the weight applied to the well discharge rate. + The HEAD_LIMIT option has been included to facilitate backward compatibility with previous versions + of MODFLOW but use of the RATE_SCALING option instead of the HEAD_LIMIT option is recommended. + By default, SHUTDOWN_KAPPA is 0.0001. + optional: true + mfrcsv_filerecord: + type: record + optional: true + fields: + maw_flow_reduce_csv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the output option in which a new + record is written for each multi-aquifer well and for each time step in which the user-requested + extraction or injection rate is reduced by the program. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the MAW Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + nmawwells: + type: integer + longname: number of MAW wells + description: integer value specifying the number of multi-aquifer wells that will be simulated + for all stress periods. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: well number for this entry + description: integer value that defines the feature (well) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well + or the program will terminate with an error. The program will also terminate with an + error if information for a multi-aquifer well is specified more than once. + tagged: false + radius: + type: double + longname: well radius + description: radius for the multi-aquifer well. The program will terminate with an error + if the radius is less than or equal to zero. + tagged: false + bottom: + type: double + longname: well bottom + description: bottom elevation of the multi-aquifer well. If CONDEQN is SPECIFIED, THIEM, + SKIN, or CUMULATIVE, BOTTOM is set to the cell bottom in the lowermost GWF cell connection + in cases where the specified well bottom is above the bottom of this GWF cell. If CONDEQN + is MEAN, BOTTOM is set to the lowermost GWF cell connection screen bottom in cases where + the specified well bottom is above this value. The bottom elevation defines the lowest + well head that will be simulated when the NEWTON UNDER_RELAXATION option is specified + in the GWF model name file. The bottom elevation is also used to calculate volumetric + storage in the well. + tagged: false + strt: + type: double + longname: starting head + description: starting head for the multi-aquifer well. The program will terminate with an + error if the starting head is less than the specified well bottom. + tagged: false + condeqn: + type: string + longname: conductance equation + description: 'character string that defines the conductance equation that is used to calculate + the saturated conductance for the multi-aquifer well. Possible multi-aquifer well CONDEQN + strings include: SPECIFIED--character keyword to indicate the multi-aquifer well saturated + conductance will be specified. THIEM--character keyword to indicate the multi-aquifer + well saturated conductance will be calculated using the Thiem equation, which considers + the cell top and bottom, aquifer hydraulic conductivity, and effective cell and well radius. SKIN--character + keyword to indicate that the multi-aquifer well saturated conductance will be calculated + using the cell top and bottom, aquifer and screen hydraulic conductivity, and well and + skin radius. CUMULATIVE--character keyword to indicate that the multi-aquifer well saturated + conductance will be calculated using a combination of the Thiem and SKIN equations. MEAN--character + keyword to indicate the multi-aquifer well saturated conductance will be calculated using + the aquifer and screen top and bottom, aquifer and screen hydraulic conductivity, and + well and skin radius. The CUMULATIVE conductance equation is identical to the SKIN LOSSTYPE + in the Multi-Node Well (MNW2) package for MODFLOW-2005. The program will terminate with + an error condition if CONDEQN is SKIN or CUMULATIVE and the calculated saturated conductance + is less than zero; if an error condition occurs, it is suggested that the THIEM or MEAN + conductance equations be used for these multi-aquifer wells.' + tagged: false + ngwfnodes: + type: integer + longname: number of connected GWF cells + description: integer value that defines the number of GWF nodes connected to this (IFNO) + multi-aquifer well. NGWFNODES must be greater than zero. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each multi-aquifer well. + The values of auxiliary variables must be present for each multi-aquifer well. The values + must be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the multi-aquifer well cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nmawwells + connectiondata: + fields: + connectiondata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: well number for this entry + description: integer value that defines the feature (well) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NMAWWELLS. Multi-aquifer well information must be specified for every multi-aquifer well + or the program will terminate with an error. The program will also terminate with an + error if information for a multi-aquifer well is specified more than once. + tagged: false + icon: + type: integer + longname: connection number + description: integer value that defines the GWF connection number for this multi-aquifer + well connection entry. ICONN must be greater than zero and less than or equal to NGWFNODES + for multi-aquifer well IFNO. + tagged: false + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. One or more screened intervals can be connected to the same + CELLID if CONDEQN for a well is MEAN. The program will terminate with an error if MAW + wells using SPECIFIED, THIEM, SKIN, or CUMULATIVE conductance equations have more than + one connection to the same CELLID. + dtype: integer + shape: + - ncelldim + scrn_top: + type: double + longname: screen top + description: value that defines the top elevation of the screen for the multi-aquifer well + connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_TOP can be any value + and is set to the top of the cell. If CONDEQN is MEAN, SCRN_TOP is set to the multi-aquifer + well connection cell top if the specified value is greater than the cell top. The program + will terminate with an error if the screen top is less than the screen bottom. + tagged: false + scrn_bot: + type: double + longname: screen bottom + description: value that defines the bottom elevation of the screen for the multi-aquifer + well connection. If CONDEQN is SPECIFIED, THIEM, SKIN, or CUMULATIVE, SCRN_BOT can be + any value and is set to the bottom of the cell. If CONDEQN is MEAN, SCRN_BOT is set to + the multi-aquifer well connection cell bottom if the specified value is less than the + cell bottom. The program will terminate with an error if the screen bottom is greater + than the screen top. + tagged: false + hk_skin: + type: double + longname: skin data + description: value that defines the skin (filter pack) hydraulic conductivity (if CONDEQN + for the multi-aquifer well is SKIN, CUMULATIVE, or MEAN) or conductance (if CONDEQN for + the multi-aquifer well is SPECIFIED) for each GWF node connected to the multi-aquifer + well (NGWFNODES). If CONDEQN is SPECIFIED, HK_SKIN must be greater than or equal to zero. HK_SKIN + can be any value if CONDEQN is THIEM. Otherwise, HK_SKIN must be greater than zero. If + CONDEQN is SKIN, the contrast between the cell transmissivity (the product of geometric + mean horizontal hydraulic conductivity and the cell thickness) and the well transmissivity + (the product of HK_SKIN and the screen thicknesses) must be greater than one in node CELLID + or the program will terminate with an error condition; if an error condition occurs, it + is suggested that the HK_SKIN be reduced to a value less than K11 and K22 in node CELLID + or the THIEM or MEAN conductance equations be used for these multi-aquifer wells. + tagged: false + radius_skin: + type: double + longname: skin radius + description: real value that defines the skin radius (filter pack radius) for the multi-aquifer + well. RADIUS_SKIN can be any value if CONDEQN is SPECIFIED or THIEM. If CONDEQN is SKIN, + CUMULATIVE, or MEAN, the program will terminate with an error if RADIUS_SKIN is less + than or equal to the RADIUS for the multi-aquifer well. + tagged: false + period: + fields: + perioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: well number for this entry + description: integer value that defines the well number associated with the specified PERIOD + data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. + tagged: false + mawsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the MAWSETTING string include: STATUS, FLOWING_WELL, RATE, WELL_HEAD, + HEAD_LIMIT, SHUT_OFF, RATE_SCALING, and AUXILIARY.' + arms: + status: + type: string + longname: well status + description: keyword option to define well status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE. + flowing_wellrecord: + type: record + fields: + flowing_well: + type: keyword + longname: well is a flowing well + description: keyword to indicate the well is a flowing well. The FLOWING_WELL option + can be used to simulate flowing wells when the simulated well head exceeds the + specified drainage elevation. + fwelev: + type: double + longname: flowing well elevation + description: elevation used to determine whether or not the well is flowing. + tagged: false + fwcond: + type: double + longname: well flowing well conductance + description: conductance used to calculate the discharge of a free flowing well. Flow + occurs when the head in the well is above the well top elevation (FWELEV). + tagged: false + fwrlen: + type: double + longname: flowing well reduction length + description: length used to reduce the conductance of the flowing well. When the + head in the well drops below the well top plus the reduction length, then the + conductance is reduced. This reduction length can be used to improve the stability + of simulations with flowing wells so that there is not an abrupt change in flowing + well rates. + tagged: false + rate: + type: double + longname: well pumping rate + description: is the volumetric pumping rate for the multi-aquifer well. A positive value + indicates recharge and a negative value indicates discharge (pumping). RATE only applies + to active (STATUS is ACTIVE) multi-aquifer wells. If the Options block includes a + TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. By + default, the RATE for each multi-aquifer well is zero. + time_series: true + well_head: + type: double + longname: well head + description: is the head in the multi-aquifer well. WELL_HEAD is only applied to constant + head (STATUS is CONSTANT) and inactive (STATUS is INACTIVE) multi-aquifer wells. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place + of a numeric value. The program will terminate with an error if WELL_HEAD is less + than the bottom of the well. + time_series: true + head_limit: + type: string + longname: head limit + description: is the limiting water level (head) in the well, which is the minimum of + the well RATE or the well inflow rate from the aquifer. HEAD_LIMIT can be applied + to extraction wells (RATE $<$ 0) or injection wells (RATE $>$ 0). HEAD_LIMIT can be + deactivated by specifying the text string `OFF'. The HEAD_LIMIT option is based on + the HEAD_LIMIT functionality available in the MNW2~citep{konikow2009} package for + MODFLOW-2005. The HEAD_LIMIT option has been included to facilitate backward compatibility + with previous versions of MODFLOW but use of the RATE_SCALING option instead of the + HEAD_LIMIT option is recommended. By default, HEAD_LIMIT is `OFF'. + shutoffrecord: + type: record + fields: + shut_off: + type: keyword + longname: shut off well + description: keyword for activating well shut off capability. Subsequent values + define the minimum and maximum pumping rate that a well must exceed to shutoff + or reactivate a well, respectively, during a stress period. SHUT_OFF is only applied + to injection wells (RATE$<0$) and if HEAD_LIMIT is specified (not set to `OFF'). If + HEAD_LIMIT is specified, SHUT_OFF can be deactivated by specifying a minimum value + equal to zero. The SHUT_OFF option is based on the SHUT_OFF functionality available + in the MNW2~citep{konikow2009} package for MODFLOW-2005. The SHUT_OFF option has + been included to facilitate backward compatibility with previous versions of MODFLOW + but use of the RATE_SCALING option instead of the SHUT_OFF option is recommended. + By default, SHUT_OFF is not used. + minrate: + type: double + longname: minimum shutoff rate + description: is the minimum rate that a well must exceed to shutoff a well during + a stress period. The well will shut down during a time step if the flow rate to + the well from the aquifer is less than MINRATE. If a well is shut down during + a time step, reactivation of the well cannot occur until the next time step to + reduce oscillations. MINRATE must be less than maxrate. + tagged: false + maxrate: + type: double + longname: maximum shutoff rate + description: is the maximum rate that a well must exceed to reactivate a well during + a stress period. The well will reactivate during a timestep if the well was shutdown + during the previous time step and the flow rate to the well from the aquifer exceeds + maxrate. Reactivation of the well cannot occur until the next time step if a well + is shutdown to reduce oscillations. maxrate must be greater than MINRATE. + tagged: false + rate_scalingrecord: + type: record + fields: + rate_scaling: + type: keyword + longname: rate scaling + description: activate rate scaling. If RATE_SCALING is specified, both PUMP_ELEVATION + and SCALING_LENGTH must be specified. RATE_SCALING cannot be used with HEAD_LIMIT. RATE_SCALING + can be used for extraction or injection wells. For extraction wells, the extraction + rate will start to decrease once the head in the well lowers to a level equal + to the pump elevation plus the scaling length. If the head in the well drops + below the pump elevation, then the extraction rate is calculated to be zero. For + an injection well, the injection rate will begin to decrease once the head in + the well rises above the specified pump elevation. If the head in the well rises + above the pump elevation plus the scaling length, then the injection rate will + be set to zero. + pump_elevation: + type: double + longname: pump elevation + description: is the elevation of the multi-aquifer well pump (PUMP_ELEVATION). PUMP_ELEVATION + should not be less than the bottom elevation (BOTTOM) of the multi-aquifer well. + tagged: false + scaling_length: + type: double + description: height above the pump elevation (SCALING_LENGTH). If the simulated + well head is below this elevation (pump elevation plus the scaling length), then + the pumping rate is reduced. + tagged: false + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + nmawwells: + set_in: ar + source: nmawwells + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.json new file mode 100644 index 00000000..f28f2f8f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.json @@ -0,0 +1,176 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-mvr", + "parent": "gwf-nam", + "dims": { + "maxmvr": { + "value": "maxmvr", + "scope": "model" + }, + "maxpackages": { + "value": "maxpackages", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of MVR information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of MVR flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "modelnames": { + "type": "keyword", + "longname": "precede all package names with model names", + "description": "keyword to indicate that all package names will be preceded by the model name for the package. Model names are required when the Mover Package is used with a GWF-GWF Exchange. The MODELNAME keyword should not be used for a Mover Package that is for a single GWF Model.", + "optional": true + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxmvr": { + "type": "integer", + "longname": "maximum number of movers", + "description": "integer value specifying the maximum number of water mover entries that will specified for any stress period." + }, + "maxpackages": { + "type": "integer", + "longname": "number of packages to be used with the mover", + "description": "integer value specifying the number of unique packages that are included in this water mover input file." + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "item": { + "type": "record", + "fields": { + "mname": { + "type": "string", + "description": "name of model containing the package. Model names are assigned by the user in the simulation name file.", + "optional": true, + "tagged": false + }, + "pname": { + "type": "string", + "description": "is the name of a package that may be included in a subsequent stress period block. The package name is assigned in the name file for the GWF Model. Package names are optionally provided in the name file. If they are not provided by the user, then packages are assigned a default value, which is the package acronym followed by a hyphen and the package number. For example, the first Drain Package is named DRN-1. The second Drain Package is named DRN-2, and so forth.", + "tagged": false + } + } + }, + "shape": [ + "maxpackages" + ] + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "mname1": { + "type": "string", + "description": "name of model containing the package, PNAME1.", + "optional": true, + "tagged": false + }, + "pname1": { + "type": "string", + "longname": "provider package name", + "description": "is the package name for the provider. The package PNAME1 must be designated to provide water through the MVR Package by specifying the keyword 'MOVER' in its OPTIONS block.", + "tagged": false + }, + "id1": { + "type": "integer", + "longname": "provider reach", + "description": "is the identifier for the provider. For the standard boundary packages, the provider identifier is the number of the boundary as it is listed in the package input file. (Note that the order of these boundaries may change by stress period, which must be accounted for in the Mover Package.) So the first well has an identifier of one. The second is two, and so forth. For the advanced packages, the identifier is the reach number (SFR Package), well number (MAW Package), or UZF cell number. For the Lake Package, ID1 is the lake outlet number. Thus, outflows from a single lake can be routed to different streams, for example.", + "tagged": false + }, + "mname2": { + "type": "string", + "description": "name of model containing the package, PNAME2.", + "optional": true, + "tagged": false + }, + "pname2": { + "type": "string", + "longname": "receiver package name", + "description": "is the package name for the receiver. The package PNAME2 must be designated to receive water from the MVR Package by specifying the keyword 'MOVER' in its OPTIONS block.", + "tagged": false + }, + "id2": { + "type": "integer", + "longname": "receiver reach", + "description": "is the identifier for the receiver. The receiver identifier is the reach number (SFR Package), Lake number (LAK Package), well number (MAW Package), or UZF cell number.", + "tagged": false + }, + "mvrtype": { + "type": "string", + "longname": "mover type", + "description": "is the character string signifying the method for determining how much water will be moved. Supported values are 'FACTOR' 'EXCESS' 'THRESHOLD' and 'UPTO'. These four options determine how the receiver flow rate, $Q_R$, is calculated. These options mirror the options defined for the cprior variable in the SFR package, with the term 'FACTOR' being functionally equivalent to the 'FRACTION' option for cprior.", + "tagged": false + }, + "value": { + "type": "double", + "longname": "mover value", + "description": "is the value to be used in the equation for calculating the amount of water to move. For the 'FACTOR' option, VALUE is the $alpha$ factor. For the remaining options, VALUE is the specified flow rate, $Q_S$.", + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "maxmvr": { + "set_in": "ar", + "source": "maxmvr", + "type": "integer" + }, + "maxpackages": { + "set_in": "ar", + "source": "maxpackages", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.toml new file mode 100644 index 00000000..913af2b3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.toml @@ -0,0 +1,144 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-mvr" +parent = "gwf-nam" + +[dims.maxmvr] +value = "maxmvr" +scope = "model" + +[dims.maxpackages] +value = "maxpackages" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of MVR information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of MVR flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.modelnames] +type = "keyword" +longname = "precede all package names with model names" +description = "keyword to indicate that all package names will be preceded by the model name for the package. Model names are required when the Mover Package is used with a GWF-GWF Exchange. The MODELNAME keyword should not be used for a Mover Package that is for a single GWF Model." +optional = true + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.dimensions.fields.maxmvr] +type = "integer" +longname = "maximum number of movers" +description = "integer value specifying the maximum number of water mover entries that will specified for any stress period." + +[blocks.dimensions.fields.maxpackages] +type = "integer" +longname = "number of packages to be used with the mover" +description = "integer value specifying the number of unique packages that are included in this water mover input file." + +[blocks.packages.fields.packages] +type = "list" +shape = [ + "maxpackages", +] + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.mname] +type = "string" +description = "name of model containing the package. Model names are assigned by the user in the simulation name file." +optional = true +tagged = false + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +description = "is the name of a package that may be included in a subsequent stress period block. The package name is assigned in the name file for the GWF Model. Package names are optionally provided in the name file. If they are not provided by the user, then packages are assigned a default value, which is the package acronym followed by a hyphen and the package number. For example, the first Drain Package is named DRN-1. The second Drain Package is named DRN-2, and so forth." +tagged = false + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.mname1] +type = "string" +description = "name of model containing the package, PNAME1." +optional = true +tagged = false + +[blocks.period.fields.perioddata.item.fields.pname1] +type = "string" +longname = "provider package name" +description = "is the package name for the provider. The package PNAME1 must be designated to provide water through the MVR Package by specifying the keyword 'MOVER' in its OPTIONS block." +tagged = false + +[blocks.period.fields.perioddata.item.fields.id1] +type = "integer" +longname = "provider reach" +description = "is the identifier for the provider. For the standard boundary packages, the provider identifier is the number of the boundary as it is listed in the package input file. (Note that the order of these boundaries may change by stress period, which must be accounted for in the Mover Package.) So the first well has an identifier of one. The second is two, and so forth. For the advanced packages, the identifier is the reach number (SFR Package), well number (MAW Package), or UZF cell number. For the Lake Package, ID1 is the lake outlet number. Thus, outflows from a single lake can be routed to different streams, for example." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mname2] +type = "string" +description = "name of model containing the package, PNAME2." +optional = true +tagged = false + +[blocks.period.fields.perioddata.item.fields.pname2] +type = "string" +longname = "receiver package name" +description = "is the package name for the receiver. The package PNAME2 must be designated to receive water from the MVR Package by specifying the keyword 'MOVER' in its OPTIONS block." +tagged = false + +[blocks.period.fields.perioddata.item.fields.id2] +type = "integer" +longname = "receiver reach" +description = "is the identifier for the receiver. The receiver identifier is the reach number (SFR Package), Lake number (LAK Package), well number (MAW Package), or UZF cell number." +tagged = false + +[blocks.period.fields.perioddata.item.fields.mvrtype] +type = "string" +longname = "mover type" +description = "is the character string signifying the method for determining how much water will be moved. Supported values are 'FACTOR' 'EXCESS' 'THRESHOLD' and 'UPTO'. These four options determine how the receiver flow rate, $Q_R$, is calculated. These options mirror the options defined for the cprior variable in the SFR package, with the term 'FACTOR' being functionally equivalent to the 'FRACTION' option for cprior." +tagged = false + +[blocks.period.fields.perioddata.item.fields.value] +type = "double" +longname = "mover value" +description = "is the value to be used in the equation for calculating the amount of water to move. For the 'FACTOR' option, VALUE is the $alpha$ factor. For the remaining options, VALUE is the specified flow rate, $Q_S$." +tagged = false + +[memory.maxmvr] +set_in = "ar" +source = "maxmvr" +type = "integer" + +[memory.maxpackages] +set_in = "ar" +source = "maxpackages" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.yaml new file mode 100644 index 00000000..673c3826 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-mvr.yaml @@ -0,0 +1,163 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-mvr +parent: gwf-nam +dims: + maxmvr: + value: maxmvr + scope: model + maxpackages: + value: maxpackages + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of MVR information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of MVR flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + modelnames: + type: keyword + longname: precede all package names with model names + description: keyword to indicate that all package names will be preceded by the model name for + the package. Model names are required when the Mover Package is used with a GWF-GWF Exchange. The + MODELNAME keyword should not be used for a Mover Package that is for a single GWF Model. + optional: true + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + dimensions: + fields: + maxmvr: + type: integer + longname: maximum number of movers + description: integer value specifying the maximum number of water mover entries that will specified + for any stress period. + maxpackages: + type: integer + longname: number of packages to be used with the mover + description: integer value specifying the number of unique packages that are included in this + water mover input file. + packages: + fields: + packages: + type: list + item: + type: record + fields: + mname: + type: string + description: name of model containing the package. Model names are assigned by the user + in the simulation name file. + optional: true + tagged: false + pname: + type: string + description: is the name of a package that may be included in a subsequent stress period + block. The package name is assigned in the name file for the GWF Model. Package names + are optionally provided in the name file. If they are not provided by the user, then + packages are assigned a default value, which is the package acronym followed by a hyphen + and the package number. For example, the first Drain Package is named DRN-1. The second + Drain Package is named DRN-2, and so forth. + tagged: false + shape: + - maxpackages + period: + fields: + perioddata: + type: list + item: + type: record + fields: + mname1: + type: string + description: name of model containing the package, PNAME1. + optional: true + tagged: false + pname1: + type: string + longname: provider package name + description: is the package name for the provider. The package PNAME1 must be designated + to provide water through the MVR Package by specifying the keyword 'MOVER' in its OPTIONS + block. + tagged: false + id1: + type: integer + longname: provider reach + description: is the identifier for the provider. For the standard boundary packages, the + provider identifier is the number of the boundary as it is listed in the package input + file. (Note that the order of these boundaries may change by stress period, which must + be accounted for in the Mover Package.) So the first well has an identifier of one. The + second is two, and so forth. For the advanced packages, the identifier is the reach number + (SFR Package), well number (MAW Package), or UZF cell number. For the Lake Package, ID1 + is the lake outlet number. Thus, outflows from a single lake can be routed to different + streams, for example. + tagged: false + mname2: + type: string + description: name of model containing the package, PNAME2. + optional: true + tagged: false + pname2: + type: string + longname: receiver package name + description: is the package name for the receiver. The package PNAME2 must be designated + to receive water from the MVR Package by specifying the keyword 'MOVER' in its OPTIONS + block. + tagged: false + id2: + type: integer + longname: receiver reach + description: is the identifier for the receiver. The receiver identifier is the reach number + (SFR Package), Lake number (LAK Package), well number (MAW Package), or UZF cell number. + tagged: false + mvrtype: + type: string + longname: mover type + description: is the character string signifying the method for determining how much water + will be moved. Supported values are 'FACTOR' 'EXCESS' 'THRESHOLD' and 'UPTO'. These + four options determine how the receiver flow rate, $Q_R$, is calculated. These options + mirror the options defined for the cprior variable in the SFR package, with the term 'FACTOR' + being functionally equivalent to the 'FRACTION' option for cprior. + tagged: false + value: + type: double + longname: mover value + description: is the value to be used in the equation for calculating the amount of water + to move. For the 'FACTOR' option, VALUE is the $alpha$ factor. For the remaining options, + VALUE is the specified flow rate, $Q_S$. + tagged: false +memory: + maxmvr: + set_in: ar + source: maxmvr + type: integer + maxpackages: + set_in: ar + source: maxpackages + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.json new file mode 100644 index 00000000..10dbc53d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.json @@ -0,0 +1,214 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "gwf-nam", + "parent": "sim-nam", + "dependent_variable": "head", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this GWF model. If not specified, then the name of the list file will be the basename of the GWF model name file and the '.lst' extension. For example, if the GWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "newtonoptions": { + "type": "record", + "longname": "newton keyword and options", + "description": "none", + "optional": true, + "fields": { + "newton": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson formulation", + "description": "keyword that activates the Newton-Raphson formulation for groundwater flow between connected, convertible groundwater cells and stress packages that support calculation of Newton-Raphson terms for groundwater exchanges. Cells will not dry when this option is used. By default, the Newton-Raphson formulation is not applied." + }, + "under_relaxation": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson UNDER_RELAXATION option", + "description": "keyword that indicates whether the groundwater head in a cell will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied.", + "optional": true + } + } + }, + "nc_mesh2d_filerecord": { + "type": "record", + "description": "NetCDF layered mesh fileout record.", + "optional": true, + "fields": { + "netcdf_mesh2d": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a layered mesh NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_structured_filerecord": { + "type": "record", + "description": "NetCDF structured fileout record.", + "optional": true, + "fields": { + "netcdf_structured": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a structured NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_filerecord": { + "type": "record", + "description": "NetCDF filerecord", + "optional": true, + "fields": { + "netcdf": { + "type": "file", + "longname": "netcdf keyword", + "description": "keyword to specify that record corresponds to a NetCDF input file.", + "mode": "filein" + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwf}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "netcdf_struct": { + "set_in": "ar", + "source": "netcdf_structured", + "type": "logical" + }, + "netcdf_fname": { + "set_in": "ar", + "type": "string" + }, + "x": { + "type": "array", + "set_in": "ca", + "description": "Hydraulic head for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "HEAD", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.toml new file mode 100644 index 00000000..48937051 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.toml @@ -0,0 +1,188 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "gwf-nam" +parent = "sim-nam" +dependent_variable = "head" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this GWF model. If not specified, then the name of the list file will be the basename of the GWF model name file and the '.lst' extension. For example, if the GWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.newtonoptions] +type = "record" +longname = "newton keyword and options" +description = "none" +optional = true + +[blocks.options.fields.newtonoptions.fields.newton] +type = "keyword" +longname = "keyword to activate Newton-Raphson formulation" +description = "keyword that activates the Newton-Raphson formulation for groundwater flow between connected, convertible groundwater cells and stress packages that support calculation of Newton-Raphson terms for groundwater exchanges. Cells will not dry when this option is used. By default, the Newton-Raphson formulation is not applied." + +[blocks.options.fields.newtonoptions.fields.under_relaxation] +type = "keyword" +longname = "keyword to activate Newton-Raphson UNDER_RELAXATION option" +description = "keyword that indicates whether the groundwater head in a cell will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied." +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord] +type = "record" +description = "NetCDF layered mesh fileout record." +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord.fields.netcdf_mesh2d] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a layered mesh NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_structured_filerecord] +type = "record" +description = "NetCDF structured fileout record." +optional = true + +[blocks.options.fields.nc_structured_filerecord.fields.netcdf_structured] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a structured NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_filerecord] +type = "record" +description = "NetCDF filerecord" +optional = true + +[blocks.options.fields.nc_filerecord.fields.netcdf] +type = "file" +longname = "netcdf keyword" +description = "keyword to specify that record corresponds to a NetCDF input file." +mode = "filein" + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwf}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.netcdf_struct] +set_in = "ar" +source = "netcdf_structured" +type = "logical" + +[memory.netcdf_fname] +set_in = "ar" +type = "string" + +[memory.x] +type = "array" +set_in = "ca" +description = "Hydraulic head for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "HEAD" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.yaml new file mode 100644 index 00000000..69e434f8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-nam.yaml @@ -0,0 +1,195 @@ +type: model +schema_version: 2.0.0.dev3 +name: gwf-nam +parent: sim-nam +dependent_variable: head +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this GWF model. If not specified, then + the name of the list file will be the basename of the GWF model name file and the '.lst' extension. For + example, if the GWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + newtonoptions: + type: record + longname: newton keyword and options + description: none + optional: true + fields: + newton: + type: keyword + longname: keyword to activate Newton-Raphson formulation + description: keyword that activates the Newton-Raphson formulation for groundwater flow between + connected, convertible groundwater cells and stress packages that support calculation of + Newton-Raphson terms for groundwater exchanges. Cells will not dry when this option is used. + By default, the Newton-Raphson formulation is not applied. + under_relaxation: + type: keyword + longname: keyword to activate Newton-Raphson UNDER_RELAXATION option + description: keyword that indicates whether the groundwater head in a cell will be under-relaxed + when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson + UNDER_RELAXATION is not applied. + optional: true + nc_mesh2d_filerecord: + type: record + description: NetCDF layered mesh fileout record. + optional: true + fields: + netcdf_mesh2d: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a layered mesh NetCDF file. + mode: fileout + nc_structured_filerecord: + type: record + description: NetCDF structured fileout record. + optional: true + fields: + netcdf_structured: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a structured NetCDF file. + mode: fileout + nc_filerecord: + type: record + description: NetCDF filerecord + optional: true + fields: + netcdf: + type: file + longname: netcdf keyword + description: keyword to specify that record corresponds to a NetCDF input file. + mode: filein + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-gwf}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single GWF Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + netcdf_struct: + set_in: ar + source: netcdf_structured + type: logical + netcdf_fname: + set_in: ar + type: string + x: + type: array + set_in: ca + description: Hydraulic head for each model cell. Checked in from the solution-level dependent-variable + vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard + iteration (CA). API-written values serve as initial guesses and are overwritten by the solver. + obs_type: HEAD + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.json new file mode 100644 index 00000000..eb9b9b71 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.json @@ -0,0 +1,477 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-npf", + "parent": "gwf-nam", + "dims": { + "njas": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "keyword to save NPF flows", + "description": "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print NPF flows to listing file", + "description": "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the NPF Package for models that have a small number of cells.", + "optional": true + }, + "alternative_cell_averaging": { + "type": "string", + "longname": "conductance weighting option", + "description": "is a text keyword to indicate that an alternative method will be used for calculating the conductance for horizontal cell connections. The text value for ALTERNATIVE_CELL_AVERAGING can be 'LOGARITHMIC', 'AMT-LMK', or 'AMT-HMK'. 'AMT-LMK' signifies that the conductance will be calculated using arithmetic-mean thickness and logarithmic-mean hydraulic conductivity. 'AMT-HMK' signifies that the conductance will be calculated using arithmetic-mean thickness and harmonic-mean hydraulic conductivity. If the user does not specify a value for ALTERNATIVE_CELL_AVERAGING, then the harmonic-mean method will be used. This option cannot be used if the XT3D option is invoked. The AMT-HMK ALTERNATIVE_CELL_AVERAGING option, in combination with the DRY_CELL_SATURATION option, can be used to calculate the same horizontal conductance as MODFLOW-USG when upstream weighting is used (LAYCON=4).", + "optional": true, + "valid": [ + "logarithmic", + "amt-lmk", + "amt-hmk" + ] + }, + "thickstrt": { + "type": "keyword", + "longname": "keyword to activate THICKSTRT option", + "description": "indicates that cells having a negative ICELLTYPE are confined, and their cell thickness for conductance calculations will be computed as STRT-BOT rather than TOP-BOT. This option should be used with caution as it only affects conductance calculations in the NPF Package.", + "optional": true + }, + "cvoptions": { + "type": "record", + "longname": "vertical conductance options", + "description": "none", + "optional": true, + "fields": { + "variablecv": { + "type": "keyword", + "longname": "keyword to activate VARIABLECV option", + "description": "keyword to indicate that the vertical conductance will be calculated using the saturated thickness and properties of the overlying cell and the thickness and properties of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top. If these keywords are not specified, then the default condition is to calculate the vertical conductance at the start of the simulation using the initial head and the cell properties. The vertical conductance remains constant for the entire simulation." + }, + "dewatered": { + "type": "keyword", + "longname": "keyword to activate DEWATERED option", + "description": "If the DEWATERED keyword is specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top.", + "optional": true + } + } + }, + "perched": { + "type": "keyword", + "longname": "keyword to activate PERCHED option", + "description": "keyword to indicate that when a cell is overlying a dewatered convertible cell, the head difference used in Darcy's Law is equal to the head in the overlying cell minus the bottom elevation of the overlying cell. If not specified, then the default is to use the head difference between the two cells.", + "optional": true + }, + "rewet_record": { + "type": "record", + "optional": true, + "fields": { + "rewet": { + "type": "keyword", + "longname": "keyword to activate rewetting", + "description": "activates model rewetting. Rewetting is off by default." + }, + "wetfct": { + "type": "double", + "longname": "wetting factor to use for rewetting", + "description": "is a keyword and factor that is included in the calculation of the head that is initially established at a cell when that cell is converted from dry to wet." + }, + "iwetit": { + "type": "integer", + "longname": "interval to use for rewetting", + "description": "is a keyword and iteration interval for attempting to wet cells. Wetting is attempted every IWETIT iteration. This applies to outer iterations and not inner iterations. If IWETIT is specified as zero or less, then the value is changed to 1." + }, + "ihdwet": { + "type": "integer", + "longname": "flag to determine wetting equation", + "description": "is a keyword and integer flag that determines which equation is used to define the initial head at cells that become wet. If IHDWET is 0, h = BOT + WETFCT (hm - BOT). If IHDWET is not 0, h = BOT + WETFCT (THRESH)." + } + } + }, + "xt3doptions": { + "type": "record", + "longname": "keyword to activate XT3D", + "description": "none", + "optional": true, + "fields": { + "xt3d": { + "type": "keyword", + "longname": "keyword to activate XT3D", + "description": "keyword indicating that the XT3D formulation will be used. If the RHS keyword is also included, then the XT3D additional terms will be added to the right-hand side. If the RHS keyword is excluded, then the XT3D terms will be put into the coefficient matrix. Use of XT3D will substantially increase the computational effort, but will result in improved accuracy for anisotropic conductivity fields and for unstructured grids in which the CVFD requirement is violated. XT3D requires additional information about the shapes of grid cells. If XT3D is active and the DISU Package is used, then the user will need to provide in the DISU Package the angldegx array in the CONNECTIONDATA block and the VERTICES and CELL2D blocks." + }, + "rhs": { + "type": "keyword", + "longname": "keyword to XT3D on right hand side", + "description": "If the RHS keyword is also included, then the XT3D additional terms will be added to the right-hand side. If the RHS keyword is excluded, then the XT3D terms will be put into the coefficient matrix.", + "optional": true + } + } + }, + "highest_cell_saturation": { + "type": "keyword", + "longname": "keyword to activate HIGHEST_CELL_SATURATION option", + "description": "keyword indicating that the maximum cell bottom will be used to calculate the saturation used to calculate the horizontal conductance between cells. This option is intended to prevent flow from leaving a dry cell and is based on~cite{painter2008robust}. This option is only applied when the Newton-Raphson formulation is used, A warning will be issued if this option is specified and the Newton-Raphson formulation is not specified in the GWF name file. This option, in combination with the AMT-HMK ALTERNATIVE_CELL_AVERAGING option, can be used to calculate the same horizontal conductance as MODFLOW-USG when upstream weighting is used (LAYCON=4).", + "optional": true + }, + "save_specific_discharge": { + "type": "keyword", + "longname": "keyword to save specific discharge", + "description": "keyword to indicate that x, y, and z components of specific discharge will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable.", + "optional": true + }, + "save_saturation": { + "type": "keyword", + "longname": "keyword to save saturation", + "description": "keyword to indicate that cell saturation will be written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. Saturation will be saved to the budget file as an auxiliary variable saved with the DATA-SAT text label. Saturation is a cell variable that ranges from zero to one and can be used by post processing programs to determine how much of a cell volume is saturated. If ICELLTYPE is 0, then saturation is always one.", + "optional": true + }, + "k22overk": { + "type": "keyword", + "longname": "keyword to indicate that specified K22 is a ratio", + "description": "keyword to indicate that specified K22 is a ratio of K22 divided by K. If this option is specified, then the K22 array entered in the NPF Package will be multiplied by K after being read.", + "optional": true + }, + "k33overk": { + "type": "keyword", + "longname": "keyword to indicate that specified K33 is a ratio", + "description": "keyword to indicate that specified K33 is a ratio of K33 divided by K. If this option is specified, then the K33 array entered in the NPF Package will be multiplied by K after being read.", + "optional": true + }, + "tvk_filerecord": { + "type": "record", + "optional": true, + "fields": { + "tvk6": { + "type": "file", + "longname": "tvk keyword", + "description": "keyword to specify that record corresponds to a time-varying hydraulic conductivity (TVK) file. The behavior of TVK and a description of the input file is provided separately.", + "mode": "filein" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "dev_no_newton": { + "type": "keyword", + "longname": "turn off Newton for unconfined cells", + "description": "turn off Newton for unconfined cells", + "optional": true + }, + "dev_omega": { + "type": "double", + "longname": "set saturation omega value", + "description": "set saturation omega value", + "optional": true + } + } + }, + "griddata": { + "fields": { + "icelltype": { + "type": "array", + "longname": "confined or convertible indicator", + "description": "flag for each cell that specifies how saturated thickness is treated. 0 means saturated thickness is held constant; $>$0 means saturated thickness varies with computed head when head is below the cell top; $<$0 means saturated thickness varies with computed head unless the THICKSTRT option is in effect. When THICKSTRT is in effect, a negative value for ICELLTYPE indicates that the saturated thickness value used in conductance calculations in the NPF Package will be computed as STRT-BOT and held constant. If the THICKSTRT option is not in effect, then negative values provided by the user for ICELLTYPE are automatically reassigned by the program to a value of one.", + "default": 0, + "netcdf": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "k": { + "type": "array", + "longname": "hydraulic conductivity (L/T)", + "description": "is the hydraulic conductivity. For the common case in which the user would like to specify the horizontal hydraulic conductivity and the vertical hydraulic conductivity, then K should be assigned as the horizontal hydraulic conductivity, K33 should be assigned as the vertical hydraulic conductivity, and K22 and the three rotation angles should not be specified. When more sophisticated anisotropy is required, then K corresponds to the K11 hydraulic conductivity axis. All included cells (IDOMAIN $>$ 0) must have a K value greater than zero.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "k22": { + "type": "array", + "longname": "hydraulic conductivity of second ellipsoid axis", + "description": "is the hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K if the K22OVERK option is specified); for an unrotated case this is the hydraulic conductivity in the y direction. If K22 is not included in the GRIDDATA block, then K22 is set equal to K. For a regular MODFLOW grid (DIS Package is used) in which no rotation angles are specified, K22 is the hydraulic conductivity along columns in the y direction. For an unstructured DISU grid, the user must assign principal x and y axes and provide the angle for each cell face relative to the assigned x direction. All included cells (IDOMAIN $>$ 0) must have a K22 value greater than zero.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "k33": { + "type": "array", + "longname": "hydraulic conductivity of third ellipsoid axis (L/T)", + "description": "is the hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K if the K33OVERK option is specified); for an unrotated case, this is the vertical hydraulic conductivity. When anisotropy is applied, K33 corresponds to the K33 tensor component. All included cells (IDOMAIN $>$ 0) must have a K33 value greater than zero.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle1": { + "type": "array", + "longname": "first anisotropy rotation angle (degrees)", + "description": "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the first of three sequential rotations of the hydraulic conductivity ellipsoid. With the K11, K22, and K33 axes of the ellipsoid initially aligned with the x, y, and z coordinate axes, respectively, ANGLE1 rotates the ellipsoid about its K33 axis (within the x - y plane). A positive value represents counter-clockwise rotation when viewed from any point on the positive K33 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - z plane. If ANGLE1 is not specified, default values of zero are assigned to ANGLE1, ANGLE2, and ANGLE3, in which case the K11, K22, and K33 axes are aligned with the x, y, and z axes, respectively.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle2": { + "type": "array", + "longname": "second anisotropy rotation angle (degrees)", + "description": "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the second of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotation by ANGLE1 described above, ANGLE2 rotates the ellipsoid about its K22 axis (out of the x - y plane). An array can be specified for ANGLE2 only if ANGLE1 is also specified. A positive value of ANGLE2 represents clockwise rotation when viewed from any point on the positive K22 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - y plane. If ANGLE2 is not specified, default values of zero are assigned to ANGLE2 and ANGLE3; connections that are not user-designated as vertical are assumed to be strictly horizontal (that is, to have no z component to their orientation); and connection lengths are based on horizontal distances.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle3": { + "type": "array", + "longname": "third anisotropy rotation angle (degrees)", + "description": "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the third of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotations by ANGLE1 and ANGLE2 described above, ANGLE3 rotates the ellipsoid about its K11 axis. An array can be specified for ANGLE3 only if ANGLE1 and ANGLE2 are also specified. An array must be specified for ANGLE3 if ANGLE2 is specified. A positive value of ANGLE3 represents clockwise rotation when viewed from any point on the positive K11 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K22 axis lies within the x - y plane.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "wetdry": { + "type": "array", + "longname": "wetdry threshold and factor", + "description": "is a combination of the wetting threshold and a flag to indicate which neighboring cells can cause a cell to become wet. If WETDRY $<$ 0, only a cell below a dry cell can cause the cell to become wet. If WETDRY $>$ 0, the cell below a dry cell and horizontally adjacent cells can cause a cell to become wet. If WETDRY is 0, the cell cannot be wetted. The absolute value of WETDRY is the wetting threshold. When the sum of BOT and the absolute value of WETDRY at a dry cell is equaled or exceeded by the head at an adjacent cell, the cell is wetted. WETDRY must be specified if 'REWET' is specified in the OPTIONS block. If 'REWET' is not specified in the options block, then WETDRY can be entered, and memory will be allocated for it, even though it is not used.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "cellavg": { + "set_in": "ar", + "source": "alternative_cell_averaging", + "type": "string" + }, + "ithickstrt": { + "set_in": "ar", + "source": "thickstrt", + "type": "integer" + }, + "ivarcv": { + "set_in": "ar", + "source": "variablecv", + "type": "integer" + }, + "idewatcv": { + "set_in": "ar", + "source": "dewatered", + "type": "integer" + }, + "iperched": { + "set_in": "ar", + "source": "perched", + "type": "integer" + }, + "irewet": { + "set_in": "ar", + "source": "rewet", + "type": "integer" + }, + "ixt3d": { + "set_in": "ar", + "source": "xt3d", + "type": "integer" + }, + "ixt3drhs": { + "set_in": "ar", + "source": "rhs", + "type": "integer" + }, + "ihighcellsat": { + "set_in": "ar", + "source": "highest_cell_saturation", + "type": "integer" + }, + "isavspdis": { + "set_in": "ar", + "source": "save_specific_discharge", + "type": "integer" + }, + "isavsat": { + "set_in": "ar", + "source": "save_saturation", + "type": "integer" + }, + "ik22overk": { + "set_in": "ar", + "source": "k22overk", + "type": "integer" + }, + "ik33overk": { + "set_in": "ar", + "source": "k33overk", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "inewton": { + "set_in": "ar", + "source": "dev_no_newton", + "type": "integer" + }, + "satomega": { + "set_in": "ar", + "source": "dev_omega", + "type": "double" + }, + "icelltype": { + "type": "array", + "set_in": "ar", + "source": "icelltype", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "k22": { + "type": "array", + "set_in": "ar", + "source": "k22", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "k33": { + "type": "array", + "set_in": "ar", + "source": "k33", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle1": { + "type": "array", + "set_in": "ar", + "source": "angle1", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle2": { + "type": "array", + "set_in": "ar", + "source": "angle2", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "angle3": { + "type": "array", + "set_in": "ar", + "source": "angle3", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "wetdry": { + "type": "array", + "set_in": "ar", + "source": "wetdry", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "k11": { + "type": "array", + "source": "k", + "description": "Hydraulic conductivity along the major (K11) axis. Loaded from the K griddata field. Used directly when XT3D is active; otherwise feeds into CONDSAT. Recomputed each time step when TVK is active.", + "dtype": "double", + "set_in": [ + "ar", + "ad" + ], + "shape": [ + "nodes" + ] + }, + "condsat": { + "type": "array", + "description": "Saturated intercell conductance. Computed once during AR from hydraulic conductivity and cell geometry. Recomputed each time step when TVK or VSC is active. Inoperative under XT3D.", + "dtype": "double", + "set_in": [ + "ar", + "ad" + ], + "source": [ + "k11", + "k22", + "k33" + ], + "shape": [ + "njas" + ] + }, + "sat": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Cell saturation (0-1). Recomputed each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.toml new file mode 100644 index 00000000..b1c03340 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.toml @@ -0,0 +1,453 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-npf" +parent = "gwf-nam" + +[dims.njas] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save NPF flows" +description = "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print NPF flows to listing file" +description = "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the NPF Package for models that have a small number of cells." +optional = true + +[blocks.options.fields.alternative_cell_averaging] +type = "string" +longname = "conductance weighting option" +description = "is a text keyword to indicate that an alternative method will be used for calculating the conductance for horizontal cell connections. The text value for ALTERNATIVE_CELL_AVERAGING can be 'LOGARITHMIC', 'AMT-LMK', or 'AMT-HMK'. 'AMT-LMK' signifies that the conductance will be calculated using arithmetic-mean thickness and logarithmic-mean hydraulic conductivity. 'AMT-HMK' signifies that the conductance will be calculated using arithmetic-mean thickness and harmonic-mean hydraulic conductivity. If the user does not specify a value for ALTERNATIVE_CELL_AVERAGING, then the harmonic-mean method will be used. This option cannot be used if the XT3D option is invoked. The AMT-HMK ALTERNATIVE_CELL_AVERAGING option, in combination with the DRY_CELL_SATURATION option, can be used to calculate the same horizontal conductance as MODFLOW-USG when upstream weighting is used (LAYCON=4)." +optional = true +valid = [ + "logarithmic", + "amt-lmk", + "amt-hmk", +] + +[blocks.options.fields.thickstrt] +type = "keyword" +longname = "keyword to activate THICKSTRT option" +description = "indicates that cells having a negative ICELLTYPE are confined, and their cell thickness for conductance calculations will be computed as STRT-BOT rather than TOP-BOT. This option should be used with caution as it only affects conductance calculations in the NPF Package." +optional = true + +[blocks.options.fields.cvoptions] +type = "record" +longname = "vertical conductance options" +description = "none" +optional = true + +[blocks.options.fields.cvoptions.fields.variablecv] +type = "keyword" +longname = "keyword to activate VARIABLECV option" +description = "keyword to indicate that the vertical conductance will be calculated using the saturated thickness and properties of the overlying cell and the thickness and properties of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top. If these keywords are not specified, then the default condition is to calculate the vertical conductance at the start of the simulation using the initial head and the cell properties. The vertical conductance remains constant for the entire simulation." + +[blocks.options.fields.cvoptions.fields.dewatered] +type = "keyword" +longname = "keyword to activate DEWATERED option" +description = "If the DEWATERED keyword is specified, then the vertical conductance is calculated using only the saturated thickness and properties of the overlying cell if the head in the underlying cell is below its top." +optional = true + +[blocks.options.fields.perched] +type = "keyword" +longname = "keyword to activate PERCHED option" +description = "keyword to indicate that when a cell is overlying a dewatered convertible cell, the head difference used in Darcy's Law is equal to the head in the overlying cell minus the bottom elevation of the overlying cell. If not specified, then the default is to use the head difference between the two cells." +optional = true + +[blocks.options.fields.rewet_record] +type = "record" +optional = true + +[blocks.options.fields.rewet_record.fields.rewet] +type = "keyword" +longname = "keyword to activate rewetting" +description = "activates model rewetting. Rewetting is off by default." + +[blocks.options.fields.rewet_record.fields.wetfct] +type = "double" +longname = "wetting factor to use for rewetting" +description = "is a keyword and factor that is included in the calculation of the head that is initially established at a cell when that cell is converted from dry to wet." + +[blocks.options.fields.rewet_record.fields.iwetit] +type = "integer" +longname = "interval to use for rewetting" +description = "is a keyword and iteration interval for attempting to wet cells. Wetting is attempted every IWETIT iteration. This applies to outer iterations and not inner iterations. If IWETIT is specified as zero or less, then the value is changed to 1." + +[blocks.options.fields.rewet_record.fields.ihdwet] +type = "integer" +longname = "flag to determine wetting equation" +description = "is a keyword and integer flag that determines which equation is used to define the initial head at cells that become wet. If IHDWET is 0, h = BOT + WETFCT (hm - BOT). If IHDWET is not 0, h = BOT + WETFCT (THRESH)." + +[blocks.options.fields.xt3doptions] +type = "record" +longname = "keyword to activate XT3D" +description = "none" +optional = true + +[blocks.options.fields.xt3doptions.fields.xt3d] +type = "keyword" +longname = "keyword to activate XT3D" +description = "keyword indicating that the XT3D formulation will be used. If the RHS keyword is also included, then the XT3D additional terms will be added to the right-hand side. If the RHS keyword is excluded, then the XT3D terms will be put into the coefficient matrix. Use of XT3D will substantially increase the computational effort, but will result in improved accuracy for anisotropic conductivity fields and for unstructured grids in which the CVFD requirement is violated. XT3D requires additional information about the shapes of grid cells. If XT3D is active and the DISU Package is used, then the user will need to provide in the DISU Package the angldegx array in the CONNECTIONDATA block and the VERTICES and CELL2D blocks." + +[blocks.options.fields.xt3doptions.fields.rhs] +type = "keyword" +longname = "keyword to XT3D on right hand side" +description = "If the RHS keyword is also included, then the XT3D additional terms will be added to the right-hand side. If the RHS keyword is excluded, then the XT3D terms will be put into the coefficient matrix." +optional = true + +[blocks.options.fields.highest_cell_saturation] +type = "keyword" +longname = "keyword to activate HIGHEST_CELL_SATURATION option" +description = "keyword indicating that the maximum cell bottom will be used to calculate the saturation used to calculate the horizontal conductance between cells. This option is intended to prevent flow from leaving a dry cell and is based on~cite{painter2008robust}. This option is only applied when the Newton-Raphson formulation is used, A warning will be issued if this option is specified and the Newton-Raphson formulation is not specified in the GWF name file. This option, in combination with the AMT-HMK ALTERNATIVE_CELL_AVERAGING option, can be used to calculate the same horizontal conductance as MODFLOW-USG when upstream weighting is used (LAYCON=4)." +optional = true + +[blocks.options.fields.save_specific_discharge] +type = "keyword" +longname = "keyword to save specific discharge" +description = "keyword to indicate that x, y, and z components of specific discharge will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable." +optional = true + +[blocks.options.fields.save_saturation] +type = "keyword" +longname = "keyword to save saturation" +description = "keyword to indicate that cell saturation will be written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. Saturation will be saved to the budget file as an auxiliary variable saved with the DATA-SAT text label. Saturation is a cell variable that ranges from zero to one and can be used by post processing programs to determine how much of a cell volume is saturated. If ICELLTYPE is 0, then saturation is always one." +optional = true + +[blocks.options.fields.k22overk] +type = "keyword" +longname = "keyword to indicate that specified K22 is a ratio" +description = "keyword to indicate that specified K22 is a ratio of K22 divided by K. If this option is specified, then the K22 array entered in the NPF Package will be multiplied by K after being read." +optional = true + +[blocks.options.fields.k33overk] +type = "keyword" +longname = "keyword to indicate that specified K33 is a ratio" +description = "keyword to indicate that specified K33 is a ratio of K33 divided by K. If this option is specified, then the K33 array entered in the NPF Package will be multiplied by K after being read." +optional = true + +[blocks.options.fields.tvk_filerecord] +type = "record" +optional = true + +[blocks.options.fields.tvk_filerecord.fields.tvk6] +type = "file" +longname = "tvk keyword" +description = "keyword to specify that record corresponds to a time-varying hydraulic conductivity (TVK) file. The behavior of TVK and a description of the input file is provided separately." +mode = "filein" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.dev_no_newton] +type = "keyword" +longname = "turn off Newton for unconfined cells" +description = "turn off Newton for unconfined cells" +optional = true + +[blocks.options.fields.dev_omega] +type = "double" +longname = "set saturation omega value" +description = "set saturation omega value" +optional = true + +[blocks.griddata.fields.icelltype] +type = "array" +longname = "confined or convertible indicator" +description = "flag for each cell that specifies how saturated thickness is treated. 0 means saturated thickness is held constant; $>$0 means saturated thickness varies with computed head when head is below the cell top; $<$0 means saturated thickness varies with computed head unless the THICKSTRT option is in effect. When THICKSTRT is in effect, a negative value for ICELLTYPE indicates that the saturated thickness value used in conductance calculations in the NPF Package will be computed as STRT-BOT and held constant. If the THICKSTRT option is not in effect, then negative values provided by the user for ICELLTYPE are automatically reassigned by the program to a value of one." +default = 0 +netcdf = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.griddata.fields.k] +type = "array" +longname = "hydraulic conductivity (L/T)" +description = "is the hydraulic conductivity. For the common case in which the user would like to specify the horizontal hydraulic conductivity and the vertical hydraulic conductivity, then K should be assigned as the horizontal hydraulic conductivity, K33 should be assigned as the vertical hydraulic conductivity, and K22 and the three rotation angles should not be specified. When more sophisticated anisotropy is required, then K corresponds to the K11 hydraulic conductivity axis. All included cells (IDOMAIN $>$ 0) must have a K value greater than zero." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.k22] +type = "array" +longname = "hydraulic conductivity of second ellipsoid axis" +description = "is the hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K if the K22OVERK option is specified); for an unrotated case this is the hydraulic conductivity in the y direction. If K22 is not included in the GRIDDATA block, then K22 is set equal to K. For a regular MODFLOW grid (DIS Package is used) in which no rotation angles are specified, K22 is the hydraulic conductivity along columns in the y direction. For an unstructured DISU grid, the user must assign principal x and y axes and provide the angle for each cell face relative to the assigned x direction. All included cells (IDOMAIN $>$ 0) must have a K22 value greater than zero." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.k33] +type = "array" +longname = "hydraulic conductivity of third ellipsoid axis (L/T)" +description = "is the hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K if the K33OVERK option is specified); for an unrotated case, this is the vertical hydraulic conductivity. When anisotropy is applied, K33 corresponds to the K33 tensor component. All included cells (IDOMAIN $>$ 0) must have a K33 value greater than zero." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.angle1] +type = "array" +longname = "first anisotropy rotation angle (degrees)" +description = "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the first of three sequential rotations of the hydraulic conductivity ellipsoid. With the K11, K22, and K33 axes of the ellipsoid initially aligned with the x, y, and z coordinate axes, respectively, ANGLE1 rotates the ellipsoid about its K33 axis (within the x - y plane). A positive value represents counter-clockwise rotation when viewed from any point on the positive K33 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - z plane. If ANGLE1 is not specified, default values of zero are assigned to ANGLE1, ANGLE2, and ANGLE3, in which case the K11, K22, and K33 axes are aligned with the x, y, and z axes, respectively." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.angle2] +type = "array" +longname = "second anisotropy rotation angle (degrees)" +description = "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the second of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotation by ANGLE1 described above, ANGLE2 rotates the ellipsoid about its K22 axis (out of the x - y plane). An array can be specified for ANGLE2 only if ANGLE1 is also specified. A positive value of ANGLE2 represents clockwise rotation when viewed from any point on the positive K22 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - y plane. If ANGLE2 is not specified, default values of zero are assigned to ANGLE2 and ANGLE3; connections that are not user-designated as vertical are assumed to be strictly horizontal (that is, to have no z component to their orientation); and connection lengths are based on horizontal distances." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.angle3] +type = "array" +longname = "third anisotropy rotation angle (degrees)" +description = "is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the third of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotations by ANGLE1 and ANGLE2 described above, ANGLE3 rotates the ellipsoid about its K11 axis. An array can be specified for ANGLE3 only if ANGLE1 and ANGLE2 are also specified. An array must be specified for ANGLE3 if ANGLE2 is specified. A positive value of ANGLE3 represents clockwise rotation when viewed from any point on the positive K11 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K22 axis lies within the x - y plane." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.wetdry] +type = "array" +longname = "wetdry threshold and factor" +description = "is a combination of the wetting threshold and a flag to indicate which neighboring cells can cause a cell to become wet. If WETDRY $<$ 0, only a cell below a dry cell can cause the cell to become wet. If WETDRY $>$ 0, the cell below a dry cell and horizontally adjacent cells can cause a cell to become wet. If WETDRY is 0, the cell cannot be wetted. The absolute value of WETDRY is the wetting threshold. When the sum of BOT and the absolute value of WETDRY at a dry cell is equaled or exceeded by the head at an adjacent cell, the cell is wetted. WETDRY must be specified if 'REWET' is specified in the OPTIONS block. If 'REWET' is not specified in the options block, then WETDRY can be entered, and memory will be allocated for it, even though it is not used." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.cellavg] +set_in = "ar" +source = "alternative_cell_averaging" +type = "string" + +[memory.ithickstrt] +set_in = "ar" +source = "thickstrt" +type = "integer" + +[memory.ivarcv] +set_in = "ar" +source = "variablecv" +type = "integer" + +[memory.idewatcv] +set_in = "ar" +source = "dewatered" +type = "integer" + +[memory.iperched] +set_in = "ar" +source = "perched" +type = "integer" + +[memory.irewet] +set_in = "ar" +source = "rewet" +type = "integer" + +[memory.ixt3d] +set_in = "ar" +source = "xt3d" +type = "integer" + +[memory.ixt3drhs] +set_in = "ar" +source = "rhs" +type = "integer" + +[memory.ihighcellsat] +set_in = "ar" +source = "highest_cell_saturation" +type = "integer" + +[memory.isavspdis] +set_in = "ar" +source = "save_specific_discharge" +type = "integer" + +[memory.isavsat] +set_in = "ar" +source = "save_saturation" +type = "integer" + +[memory.ik22overk] +set_in = "ar" +source = "k22overk" +type = "integer" + +[memory.ik33overk] +set_in = "ar" +source = "k33overk" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.inewton] +set_in = "ar" +source = "dev_no_newton" +type = "integer" + +[memory.satomega] +set_in = "ar" +source = "dev_omega" +type = "double" + +[memory.icelltype] +type = "array" +set_in = "ar" +source = "icelltype" +dtype = "integer" +shape = [ + "nodes", +] + +[memory.k22] +type = "array" +set_in = "ar" +source = "k22" +dtype = "double" +shape = [ + "nodes", +] + +[memory.k33] +type = "array" +set_in = "ar" +source = "k33" +dtype = "double" +shape = [ + "nodes", +] + +[memory.angle1] +type = "array" +set_in = "ar" +source = "angle1" +dtype = "double" +shape = [ + "nodes", +] + +[memory.angle2] +type = "array" +set_in = "ar" +source = "angle2" +dtype = "double" +shape = [ + "nodes", +] + +[memory.angle3] +type = "array" +set_in = "ar" +source = "angle3" +dtype = "double" +shape = [ + "nodes", +] + +[memory.wetdry] +type = "array" +set_in = "ar" +source = "wetdry" +dtype = "double" +shape = [ + "nodes", +] + +[memory.k11] +type = "array" +source = "k" +description = "Hydraulic conductivity along the major (K11) axis. Loaded from the K griddata field. Used directly when XT3D is active; otherwise feeds into CONDSAT. Recomputed each time step when TVK is active." +dtype = "double" +set_in = [ + "ar", + "ad", +] +shape = [ + "nodes", +] + +[memory.condsat] +type = "array" +description = "Saturated intercell conductance. Computed once during AR from hydraulic conductivity and cell geometry. Recomputed each time step when TVK or VSC is active. Inoperative under XT3D." +dtype = "double" +set_in = [ + "ar", + "ad", +] +source = [ + "k11", + "k22", + "k33", +] +shape = [ + "njas", +] + +[memory.sat] +type = "array" +readonly = true +set_in = "fc" +description = "Cell saturation (0-1). Recomputed each solver iteration." +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.yaml new file mode 100644 index 00000000..293371a3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-npf.yaml @@ -0,0 +1,500 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-npf +parent: gwf-nam +dims: + njas: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + save_flows: + type: keyword + longname: keyword to save NPF flows + description: keyword to indicate that budget flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + print_flows: + type: keyword + longname: keyword to print NPF flows to listing file + description: keyword to indicate that calculated flows between cells will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. + If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. This option can produce extremely large list + files because all cell-by-cell flows are printed. It should only be used with the NPF Package + for models that have a small number of cells. + optional: true + alternative_cell_averaging: + type: string + longname: conductance weighting option + description: is a text keyword to indicate that an alternative method will be used for calculating + the conductance for horizontal cell connections. The text value for ALTERNATIVE_CELL_AVERAGING + can be 'LOGARITHMIC', 'AMT-LMK', or 'AMT-HMK'. 'AMT-LMK' signifies that the conductance will + be calculated using arithmetic-mean thickness and logarithmic-mean hydraulic conductivity. 'AMT-HMK' + signifies that the conductance will be calculated using arithmetic-mean thickness and harmonic-mean + hydraulic conductivity. If the user does not specify a value for ALTERNATIVE_CELL_AVERAGING, + then the harmonic-mean method will be used. This option cannot be used if the XT3D option is + invoked. The AMT-HMK ALTERNATIVE_CELL_AVERAGING option, in combination with the DRY_CELL_SATURATION + option, can be used to calculate the same horizontal conductance as MODFLOW-USG when upstream + weighting is used (LAYCON=4). + optional: true + valid: + - logarithmic + - amt-lmk + - amt-hmk + thickstrt: + type: keyword + longname: keyword to activate THICKSTRT option + description: indicates that cells having a negative ICELLTYPE are confined, and their cell thickness + for conductance calculations will be computed as STRT-BOT rather than TOP-BOT. This option + should be used with caution as it only affects conductance calculations in the NPF Package. + optional: true + cvoptions: + type: record + longname: vertical conductance options + description: none + optional: true + fields: + variablecv: + type: keyword + longname: keyword to activate VARIABLECV option + description: keyword to indicate that the vertical conductance will be calculated using the + saturated thickness and properties of the overlying cell and the thickness and properties + of the underlying cell. If the DEWATERED keyword is also specified, then the vertical conductance + is calculated using only the saturated thickness and properties of the overlying cell if + the head in the underlying cell is below its top. If these keywords are not specified, + then the default condition is to calculate the vertical conductance at the start of the + simulation using the initial head and the cell properties. The vertical conductance remains + constant for the entire simulation. + dewatered: + type: keyword + longname: keyword to activate DEWATERED option + description: If the DEWATERED keyword is specified, then the vertical conductance is calculated + using only the saturated thickness and properties of the overlying cell if the head in the + underlying cell is below its top. + optional: true + perched: + type: keyword + longname: keyword to activate PERCHED option + description: keyword to indicate that when a cell is overlying a dewatered convertible cell, the + head difference used in Darcy's Law is equal to the head in the overlying cell minus the bottom + elevation of the overlying cell. If not specified, then the default is to use the head difference + between the two cells. + optional: true + rewet_record: + type: record + optional: true + fields: + rewet: + type: keyword + longname: keyword to activate rewetting + description: activates model rewetting. Rewetting is off by default. + wetfct: + type: double + longname: wetting factor to use for rewetting + description: is a keyword and factor that is included in the calculation of the head that + is initially established at a cell when that cell is converted from dry to wet. + iwetit: + type: integer + longname: interval to use for rewetting + description: is a keyword and iteration interval for attempting to wet cells. Wetting is attempted + every IWETIT iteration. This applies to outer iterations and not inner iterations. If IWETIT + is specified as zero or less, then the value is changed to 1. + ihdwet: + type: integer + longname: flag to determine wetting equation + description: is a keyword and integer flag that determines which equation is used to define + the initial head at cells that become wet. If IHDWET is 0, h = BOT + WETFCT (hm - BOT). + If IHDWET is not 0, h = BOT + WETFCT (THRESH). + xt3doptions: + type: record + longname: keyword to activate XT3D + description: none + optional: true + fields: + xt3d: + type: keyword + longname: keyword to activate XT3D + description: keyword indicating that the XT3D formulation will be used. If the RHS keyword + is also included, then the XT3D additional terms will be added to the right-hand side. If + the RHS keyword is excluded, then the XT3D terms will be put into the coefficient matrix. Use + of XT3D will substantially increase the computational effort, but will result in improved + accuracy for anisotropic conductivity fields and for unstructured grids in which the CVFD + requirement is violated. XT3D requires additional information about the shapes of grid + cells. If XT3D is active and the DISU Package is used, then the user will need to provide + in the DISU Package the angldegx array in the CONNECTIONDATA block and the VERTICES and + CELL2D blocks. + rhs: + type: keyword + longname: keyword to XT3D on right hand side + description: If the RHS keyword is also included, then the XT3D additional terms will be added + to the right-hand side. If the RHS keyword is excluded, then the XT3D terms will be put + into the coefficient matrix. + optional: true + highest_cell_saturation: + type: keyword + longname: keyword to activate HIGHEST_CELL_SATURATION option + description: keyword indicating that the maximum cell bottom will be used to calculate the saturation + used to calculate the horizontal conductance between cells. This option is intended to prevent + flow from leaving a dry cell and is based on~cite{painter2008robust}. This option is only applied + when the Newton-Raphson formulation is used, A warning will be issued if this option is specified + and the Newton-Raphson formulation is not specified in the GWF name file. This option, in combination + with the AMT-HMK ALTERNATIVE_CELL_AVERAGING option, can be used to calculate the same horizontal + conductance as MODFLOW-USG when upstream weighting is used (LAYCON=4). + optional: true + save_specific_discharge: + type: keyword + longname: keyword to save specific discharge + description: keyword to indicate that x, y, and z components of specific discharge will be calculated + at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in + Output Control. If this option is activated, then additional information may be required in + the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, + ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also + be specified for the GWF Exchange as an auxiliary variable. + optional: true + save_saturation: + type: keyword + longname: keyword to save saturation + description: keyword to indicate that cell saturation will be written to the budget file, which + is specified with 'BUDGET SAVE FILE' in Output Control. Saturation will be saved to the budget + file as an auxiliary variable saved with the DATA-SAT text label. Saturation is a cell variable + that ranges from zero to one and can be used by post processing programs to determine how much + of a cell volume is saturated. If ICELLTYPE is 0, then saturation is always one. + optional: true + k22overk: + type: keyword + longname: keyword to indicate that specified K22 is a ratio + description: keyword to indicate that specified K22 is a ratio of K22 divided by K. If this option + is specified, then the K22 array entered in the NPF Package will be multiplied by K after being + read. + optional: true + k33overk: + type: keyword + longname: keyword to indicate that specified K33 is a ratio + description: keyword to indicate that specified K33 is a ratio of K33 divided by K. If this option + is specified, then the K33 array entered in the NPF Package will be multiplied by K after being + read. + optional: true + tvk_filerecord: + type: record + optional: true + fields: + tvk6: + type: file + longname: tvk keyword + description: keyword to specify that record corresponds to a time-varying hydraulic conductivity + (TVK) file. The behavior of TVK and a description of the input file is provided separately. + mode: filein + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dev_no_newton: + type: keyword + longname: turn off Newton for unconfined cells + description: turn off Newton for unconfined cells + optional: true + dev_omega: + type: double + longname: set saturation omega value + description: set saturation omega value + optional: true + griddata: + fields: + icelltype: + type: array + longname: confined or convertible indicator + description: flag for each cell that specifies how saturated thickness is treated. 0 means saturated + thickness is held constant; $>$0 means saturated thickness varies with computed head when head + is below the cell top; $<$0 means saturated thickness varies with computed head unless the THICKSTRT + option is in effect. When THICKSTRT is in effect, a negative value for ICELLTYPE indicates + that the saturated thickness value used in conductance calculations in the NPF Package will + be computed as STRT-BOT and held constant. If the THICKSTRT option is not in effect, then negative + values provided by the user for ICELLTYPE are automatically reassigned by the program to a value + of one. + default: 0 + netcdf: true + dtype: integer + shape: + - nodes + k: + type: array + longname: hydraulic conductivity (L/T) + description: is the hydraulic conductivity. For the common case in which the user would like + to specify the horizontal hydraulic conductivity and the vertical hydraulic conductivity, then + K should be assigned as the horizontal hydraulic conductivity, K33 should be assigned as the + vertical hydraulic conductivity, and K22 and the three rotation angles should not be specified. When + more sophisticated anisotropy is required, then K corresponds to the K11 hydraulic conductivity + axis. All included cells (IDOMAIN $>$ 0) must have a K value greater than zero. + default: 1.0 + netcdf: true + dtype: double + shape: + - nodes + k22: + type: array + longname: hydraulic conductivity of second ellipsoid axis + description: is the hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K + if the K22OVERK option is specified); for an unrotated case this is the hydraulic conductivity + in the y direction. If K22 is not included in the GRIDDATA block, then K22 is set equal to + K. For a regular MODFLOW grid (DIS Package is used) in which no rotation angles are specified, + K22 is the hydraulic conductivity along columns in the y direction. For an unstructured DISU + grid, the user must assign principal x and y axes and provide the angle for each cell face relative + to the assigned x direction. All included cells (IDOMAIN $>$ 0) must have a K22 value greater + than zero. + optional: true + netcdf: true + dtype: double + shape: + - nodes + k33: + type: array + longname: hydraulic conductivity of third ellipsoid axis (L/T) + description: is the hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K + if the K33OVERK option is specified); for an unrotated case, this is the vertical hydraulic + conductivity. When anisotropy is applied, K33 corresponds to the K33 tensor component. All + included cells (IDOMAIN $>$ 0) must have a K33 value greater than zero. + optional: true + netcdf: true + dtype: double + shape: + - nodes + angle1: + type: array + longname: first anisotropy rotation angle (degrees) + description: is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents + the first of three sequential rotations of the hydraulic conductivity ellipsoid. With the K11, + K22, and K33 axes of the ellipsoid initially aligned with the x, y, and z coordinate axes, respectively, + ANGLE1 rotates the ellipsoid about its K33 axis (within the x - y plane). A positive value represents + counter-clockwise rotation when viewed from any point on the positive K33 axis, looking toward + the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - + z plane. If ANGLE1 is not specified, default values of zero are assigned to ANGLE1, ANGLE2, + and ANGLE3, in which case the K11, K22, and K33 axes are aligned with the x, y, and z axes, + respectively. + optional: true + netcdf: true + dtype: double + shape: + - nodes + angle2: + type: array + longname: second anisotropy rotation angle (degrees) + description: is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents + the second of three sequential rotations of the hydraulic conductivity ellipsoid. Following + the rotation by ANGLE1 described above, ANGLE2 rotates the ellipsoid about its K22 axis (out + of the x - y plane). An array can be specified for ANGLE2 only if ANGLE1 is also specified. + A positive value of ANGLE2 represents clockwise rotation when viewed from any point on the positive + K22 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 + axis lies within the x - y plane. If ANGLE2 is not specified, default values of zero are assigned + to ANGLE2 and ANGLE3; connections that are not user-designated as vertical are assumed to be + strictly horizontal (that is, to have no z component to their orientation); and connection lengths + are based on horizontal distances. + optional: true + netcdf: true + dtype: double + shape: + - nodes + angle3: + type: array + longname: third anisotropy rotation angle (degrees) + description: is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents + the third of three sequential rotations of the hydraulic conductivity ellipsoid. Following the + rotations by ANGLE1 and ANGLE2 described above, ANGLE3 rotates the ellipsoid about its K11 axis. + An array can be specified for ANGLE3 only if ANGLE1 and ANGLE2 are also specified. An array + must be specified for ANGLE3 if ANGLE2 is specified. A positive value of ANGLE3 represents clockwise + rotation when viewed from any point on the positive K11 axis, looking toward the center of the + ellipsoid. A value of zero indicates that the K22 axis lies within the x - y plane. + optional: true + netcdf: true + dtype: double + shape: + - nodes + wetdry: + type: array + longname: wetdry threshold and factor + description: is a combination of the wetting threshold and a flag to indicate which neighboring + cells can cause a cell to become wet. If WETDRY $<$ 0, only a cell below a dry cell can cause + the cell to become wet. If WETDRY $>$ 0, the cell below a dry cell and horizontally adjacent + cells can cause a cell to become wet. If WETDRY is 0, the cell cannot be wetted. The absolute + value of WETDRY is the wetting threshold. When the sum of BOT and the absolute value of WETDRY + at a dry cell is equaled or exceeded by the head at an adjacent cell, the cell is wetted. WETDRY + must be specified if 'REWET' is specified in the OPTIONS block. If 'REWET' is not specified + in the options block, then WETDRY can be entered, and memory will be allocated for it, even + though it is not used. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + ipakcb: + set_in: ar + source: save_flows + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + cellavg: + set_in: ar + source: alternative_cell_averaging + type: string + ithickstrt: + set_in: ar + source: thickstrt + type: integer + ivarcv: + set_in: ar + source: variablecv + type: integer + idewatcv: + set_in: ar + source: dewatered + type: integer + iperched: + set_in: ar + source: perched + type: integer + irewet: + set_in: ar + source: rewet + type: integer + ixt3d: + set_in: ar + source: xt3d + type: integer + ixt3drhs: + set_in: ar + source: rhs + type: integer + ihighcellsat: + set_in: ar + source: highest_cell_saturation + type: integer + isavspdis: + set_in: ar + source: save_specific_discharge + type: integer + isavsat: + set_in: ar + source: save_saturation + type: integer + ik22overk: + set_in: ar + source: k22overk + type: integer + ik33overk: + set_in: ar + source: k33overk + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + inewton: + set_in: ar + source: dev_no_newton + type: integer + satomega: + set_in: ar + source: dev_omega + type: double + icelltype: + type: array + set_in: ar + source: icelltype + dtype: integer + shape: + - nodes + k22: + type: array + set_in: ar + source: k22 + dtype: double + shape: + - nodes + k33: + type: array + set_in: ar + source: k33 + dtype: double + shape: + - nodes + angle1: + type: array + set_in: ar + source: angle1 + dtype: double + shape: + - nodes + angle2: + type: array + set_in: ar + source: angle2 + dtype: double + shape: + - nodes + angle3: + type: array + set_in: ar + source: angle3 + dtype: double + shape: + - nodes + wetdry: + type: array + set_in: ar + source: wetdry + dtype: double + shape: + - nodes + k11: + type: array + source: k + description: Hydraulic conductivity along the major (K11) axis. Loaded from the K griddata field. + Used directly when XT3D is active; otherwise feeds into CONDSAT. Recomputed each time step when + TVK is active. + dtype: double + set_in: + - ar + - ad + shape: + - nodes + condsat: + type: array + description: Saturated intercell conductance. Computed once during AR from hydraulic conductivity + and cell geometry. Recomputed each time step when TVK or VSC is active. Inoperative under XT3D. + dtype: double + set_in: + - ar + - ad + source: + - k11 + - k22 + - k33 + shape: + - njas + sat: + type: array + readonly: true + set_in: fc + description: Cell saturation (0-1). Recomputed each solver iteration. + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json new file mode 100644 index 00000000..2904876f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.json @@ -0,0 +1,199 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-oc", + "parent": "gwf-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "head_filerecord": { + "type": "record", + "optional": true, + "fields": { + "head": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to head.", + "mode": "fileout" + } + } + }, + "headprintrecord": { + "type": "record", + "optional": true, + "fields": { + "head": { + "type": "keyword", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to head." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or HEAD.", + "tagged": false, + "valid": [ + "HEAD", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or HEAD.", + "tagged": false, + "valid": [ + "HEAD", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml new file mode 100644 index 00000000..b1a79274 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.toml @@ -0,0 +1,167 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-oc" +parent = "gwf-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.head_filerecord] +type = "record" +optional = true + +[blocks.options.fields.head_filerecord.fields.head] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to head." +mode = "fileout" + +[blocks.options.fields.headprintrecord] +type = "record" +optional = true + +[blocks.options.fields.headprintrecord.fields.head] +type = "keyword" +longname = "head keyword" +description = "keyword to specify that record corresponds to head." + +[blocks.options.fields.headprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.headprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.headprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.headprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.headprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.headprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or HEAD." +tagged = false +valid = [ + "HEAD", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or HEAD." +tagged = false +valid = [ + "HEAD", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml new file mode 100644 index 00000000..c1ae0090 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-oc.yaml @@ -0,0 +1,160 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-oc +parent: gwf-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + head_filerecord: + type: record + optional: true + fields: + head: + type: file + longname: head keyword + description: keyword to specify that record corresponds to head. + mode: fileout + headprintrecord: + type: record + optional: true + fields: + head: + type: keyword + longname: head keyword + description: keyword to specify that record corresponds to head. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or HEAD. + tagged: false + valid: + - HEAD + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or HEAD. + tagged: false + valid: + - HEAD + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json new file mode 100644 index 00000000..521241e5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json @@ -0,0 +1,284 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-rch", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "fixed_cell": { + "type": "keyword", + "longname": "if cell is dry do not apply recharge to underlying cell", + "description": "indicates that recharge will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive.", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of recharge.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of recharge cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of recharge information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print recharge rates to listing file", + "description": "keyword to indicate that the list of recharge flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save recharge to budget file", + "description": "keyword to indicate that recharge flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of recharge cells", + "description": "integer value specifying the maximum number of recharge cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "recharge": { + "type": "double", + "longname": "recharge rate", + "description": "is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric recharge rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each recharge. The values of auxiliary variables must be present for each recharge. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "recharge name", + "description": "name of the recharge cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: recharge.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "RCH", + "output": "ipakcb", + "obs_type": "RCH", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml new file mode 100644 index 00000000..4683323c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml @@ -0,0 +1,258 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-rch" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.fixed_cell] +type = "keyword" +longname = "if cell is dry do not apply recharge to underlying cell" +description = "indicates that recharge will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of recharge." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of recharge cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of recharge information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print recharge rates to listing file" +description = "keyword to indicate that the list of recharge flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save recharge to budget file" +description = "keyword to indicate that recharge flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of recharge cells" +description = "integer value specifying the maximum number of recharge cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.recharge] +type = "double" +longname = "recharge rate" +description = "is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric recharge rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each recharge. The values of auxiliary variables must be present for each recharge. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "recharge name" +description = "name of the recharge cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: recharge." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "RCH" +output = "ipakcb" +obs_type = "RCH" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml new file mode 100644 index 00000000..7317afb3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml @@ -0,0 +1,250 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-rch +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + fixed_cell: + type: keyword + longname: if cell is dry do not apply recharge to underlying cell + description: indicates that recharge will not be reassigned to a cell underlying the cell specified + in the list if the specified cell is inactive. + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of recharge. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of recharge + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of recharge information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print recharge rates to listing file + description: keyword to indicate that the list of recharge flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save recharge to budget file + description: keyword to indicate that recharge flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of recharge cells + description: integer value specifying the maximum number of recharge cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + recharge: + type: double + longname: recharge rate + description: is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the + program by the surface area of the cell to calculate the volumetric recharge rate. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each recharge. The values + of auxiliary variables must be present for each recharge. The values must be specified + in the order of the auxiliary variables specified in the OPTIONS block. If the package + supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: recharge name + description: name of the recharge cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: recharge.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: RCH + output: ipakcb + obs_type: RCH + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json new file mode 100644 index 00000000..e9ab1838 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json @@ -0,0 +1,272 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-rcha", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readasarrays": { + "type": "keyword", + "longname": "use array-based input", + "description": "indicates that array-based input will be used for the Recharge Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results.", + "default": "true" + }, + "fixed_cell": { + "type": "keyword", + "longname": "if cell is dry do not apply recharge to underlying cell", + "description": "indicates that recharge will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive.", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of recharge.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of recharge information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print recharge rates to listing file", + "description": "keyword to indicate that the list of recharge flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that recharge flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "tas_filerecord": { + "type": "record", + "optional": true, + "fields": { + "tas6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-array-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "period": { + "fields": { + "irch": { + "type": "array", + "longname": "layer number for recharge", + "description": "IRCH is the layer number that defines the layer in each vertical column where recharge is applied. If IRCH is omitted, recharge by default is applied to cells in layer 1. IRCH can only be used if READASARRAYS is specified in the OPTIONS block. If IRCH is specified, it must be specified as the first variable in the PERIOD block or MODFLOW will terminate with an error.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncpl" + ] + }, + "recharge": { + "type": "array", + "longname": "recharge rate", + "description": "is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric recharge rate. The recharge array may be defined by a time-array series (see the 'Using Time-Array Series in a Package' section).", + "default": 0.001, + "netcdf": true, + "dtype": "double", + "time_series": true, + "shape": [ + "ncpl" + ] + }, + "aux": { + "type": "array", + "longname": "recharge auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If an array is not specified for an auxiliary variable, then a value of zero is assigned. If the value specified here for the auxiliary variable is the same as auxmultname, then the recharge array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "time_series": true, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "RCHA", + "output": "ipakcb", + "obs_type": "RCH", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml new file mode 100644 index 00000000..58422108 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-rcha" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readasarrays] +type = "keyword" +longname = "use array-based input" +description = "indicates that array-based input will be used for the Recharge Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results." +default = "true" + +[blocks.options.fields.fixed_cell] +type = "keyword" +longname = "if cell is dry do not apply recharge to underlying cell" +description = "indicates that recharge will not be reassigned to a cell underlying the cell specified in the list if the specified cell is inactive." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of recharge." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of recharge information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print recharge rates to listing file" +description = "keyword to indicate that the list of recharge flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that recharge flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.tas_filerecord] +type = "record" +optional = true + +[blocks.options.fields.tas_filerecord.fields.tas6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-array-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.period.fields.irch] +type = "array" +longname = "layer number for recharge" +description = "IRCH is the layer number that defines the layer in each vertical column where recharge is applied. If IRCH is omitted, recharge by default is applied to cells in layer 1. IRCH can only be used if READASARRAYS is specified in the OPTIONS block. If IRCH is specified, it must be specified as the first variable in the PERIOD block or MODFLOW will terminate with an error." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncpl", +] + +[blocks.period.fields.recharge] +type = "array" +longname = "recharge rate" +description = "is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric recharge rate. The recharge array may be defined by a time-array series (see the 'Using Time-Array Series in a Package' section)." +default = 0.001 +netcdf = true +dtype = "double" +time_series = true +shape = [ + "ncpl", +] + +[blocks.period.fields.aux] +type = "array" +longname = "recharge auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If an array is not specified for an auxiliary variable, then a value of zero is assigned. If the value specified here for the auxiliary variable is the same as auxmultname, then the recharge array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +time_series = true +shape = [ + "ncpl", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "RCHA" +output = "ipakcb" +obs_type = "RCH" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml new file mode 100644 index 00000000..072094b8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml @@ -0,0 +1,243 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-rcha +parent: gwf-nam +multi: true +subtype: stress +dims: + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readasarrays: + type: keyword + longname: use array-based input + description: indicates that array-based input will be used for the Recharge Package. This keyword + must be specified to use array-based input. When READASARRAYS is specified, values must be + provided for every cell within a model layer, even those cells that have an IDOMAIN value less + than one. Values assigned to cells with IDOMAIN values less than one are not used and have + no effect on simulation results. + default: 'true' + fixed_cell: + type: keyword + longname: if cell is dry do not apply recharge to underlying cell + description: indicates that recharge will not be reassigned to a cell underlying the cell specified + in the list if the specified cell is inactive. + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of recharge. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of recharge information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print recharge rates to listing file + description: keyword to indicate that the list of recharge flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that recharge flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + tas_filerecord: + type: record + optional: true + fields: + tas6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-array-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + period: + fields: + irch: + type: array + longname: layer number for recharge + description: IRCH is the layer number that defines the layer in each vertical column where recharge + is applied. If IRCH is omitted, recharge by default is applied to cells in layer 1. IRCH can + only be used if READASARRAYS is specified in the OPTIONS block. If IRCH is specified, it must + be specified as the first variable in the PERIOD block or MODFLOW will terminate with an error. + optional: true + netcdf: true + dtype: integer + shape: + - ncpl + recharge: + type: array + longname: recharge rate + description: is the recharge flux rate ($LT^{-1}$). This rate is multiplied inside the program + by the surface area of the cell to calculate the volumetric recharge rate. The recharge array + may be defined by a time-array series (see the 'Using Time-Array Series in a Package' section). + default: 0.001 + netcdf: true + dtype: double + time_series: true + shape: + - ncpl + aux: + type: array + longname: recharge auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If an array is not specified for an auxiliary + variable, then a value of zero is assigned. If the value specified here for the auxiliary variable + is the same as auxmultname, then the recharge array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + time_series: true + shape: + - ncpl +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: RCHA + output: ipakcb + obs_type: RCH + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json new file mode 100644 index 00000000..4df87167 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json @@ -0,0 +1,299 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-riv", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of riverbed conductance.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of river cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of river information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of river flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that river flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the River Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of rivers", + "description": "integer value specifying the maximum number of rivers cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "stage": { + "type": "double", + "longname": "river stage", + "description": "is the head in the river. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "cond": { + "type": "double", + "longname": "river conductance", + "description": "is the riverbed hydraulic conductance. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rbot": { + "type": "double", + "longname": "river bottom elevation", + "description": "is the elevation of the bottom of the riverbed. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each river. The values of auxiliary variables must be present for each river. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "drain name", + "description": "name of the river cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: stage, 1: cond, 2: rbot.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "RIV", + "output": "ipakcb", + "obs_type": "RIV", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "RIV-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml new file mode 100644 index 00000000..87fd237b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml @@ -0,0 +1,273 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-riv" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of riverbed conductance." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of river cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of river information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of river flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that river flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the River Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of rivers" +description = "integer value specifying the maximum number of rivers cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.stage] +type = "double" +longname = "river stage" +description = "is the head in the river. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.cond] +type = "double" +longname = "river conductance" +description = "is the riverbed hydraulic conductance. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.rbot] +type = "double" +longname = "river bottom elevation" +description = "is the elevation of the bottom of the riverbed. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each river. The values of auxiliary variables must be present for each river. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "drain name" +description = "name of the river cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: stage, 1: cond, 2: rbot." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "RIV" +output = "ipakcb" +obs_type = "RIV" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "RIV-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml new file mode 100644 index 00000000..ae60ddff --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml @@ -0,0 +1,266 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-riv +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of riverbed conductance. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of river cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of river information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of river flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that river flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the River Package can be used with the + Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of rivers + description: integer value specifying the maximum number of rivers cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + stage: + type: double + longname: river stage + description: is the head in the river. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + tagged: false + time_series: true + cond: + type: double + longname: river conductance + description: is the riverbed hydraulic conductance. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + rbot: + type: double + longname: river bottom elevation + description: is the elevation of the bottom of the riverbed. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each river. The values + of auxiliary variables must be present for each river. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: drain name + description: name of the river cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: stage, 1: cond, + 2: rbot.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: RIV + output: ipakcb + obs_type: RIV + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: RIV-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json new file mode 100644 index 00000000..2f159d9b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json @@ -0,0 +1,285 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-rivg", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readarraygrid": { + "type": "keyword", + "longname": "use array-based grid input", + "description": "indicates that array-based grid input will be used for the river package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30).", + "default": true, + "developmode": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of riverbed conductance.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of river information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of river flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save RIV flows to budget file", + "description": "keyword to indicate that river flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the River Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of river cells in any stress period", + "description": "integer value specifying the maximum number of rivers cells that will be specified for use during any stress period.", + "optional": true + } + } + }, + "period": { + "fields": { + "stage": { + "type": "array", + "longname": "river stage", + "description": "is the head in the river.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cond": { + "type": "array", + "longname": "river conductnace", + "description": "is the riverbed hydraulic conductance.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "rbot": { + "type": "array", + "longname": "river bottom elevation", + "description": "is the elevation of the bottom of the riverbed.", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "aux": { + "type": "array", + "longname": "river auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "RIV", + "output": "ipakcb", + "obs_type": "RIV", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "RIV-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml new file mode 100644 index 00000000..0495edbd --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml @@ -0,0 +1,263 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-rivg" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readarraygrid] +type = "keyword" +longname = "use array-based grid input" +description = "indicates that array-based grid input will be used for the river package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30)." +default = true +developmode = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of riverbed conductance." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of river information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of river flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save RIV flows to budget file" +description = "keyword to indicate that river flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the River Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of river cells in any stress period" +description = "integer value specifying the maximum number of rivers cells that will be specified for use during any stress period." +optional = true + +[blocks.period.fields.stage] +type = "array" +longname = "river stage" +description = "is the head in the river." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.cond] +type = "array" +longname = "river conductnace" +description = "is the riverbed hydraulic conductance." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.rbot] +type = "array" +longname = "river bottom elevation" +description = "is the elevation of the bottom of the riverbed." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.aux] +type = "array" +longname = "river auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the conductance array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "RIV" +output = "ipakcb" +obs_type = "RIV" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "RIV-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml new file mode 100644 index 00000000..97894913 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml @@ -0,0 +1,249 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-rivg +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readarraygrid: + type: keyword + longname: use array-based grid input + description: indicates that array-based grid input will be used for the river package. This keyword + must be specified to use array-based grid input. When READARRAYGRID is specified, values must + be provided for every cell within a model grid, even those cells that have an IDOMAIN value + less than one. Values assigned to cells with IDOMAIN values less than one are not used and + have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30). + default: true + developmode: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of riverbed conductance. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of river information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of river flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save RIV flows to budget file + description: keyword to indicate that river flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the River Package can be used with the + Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of river cells in any stress period + description: integer value specifying the maximum number of rivers cells that will be specified + for use during any stress period. + optional: true + period: + fields: + stage: + type: array + longname: river stage + description: is the head in the river. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + cond: + type: array + longname: river conductnace + description: is the riverbed hydraulic conductance. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + rbot: + type: array + longname: river bottom elevation + description: is the elevation of the bottom of the riverbed. + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + aux: + type: array + longname: river auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If the value specified here for the auxiliary + variable is the same as auxmultname, then the conductance array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: RIV + output: ipakcb + obs_type: RIV + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: RIV-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.json new file mode 100644 index 00000000..860ea0f2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.json @@ -0,0 +1,677 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-sfr", + "parent": "gwf-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "nreaches": { + "value": "nreaches", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "maxbound": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "storage": { + "type": "keyword", + "longname": "activate reach storage", + "description": "keyword that activates storage contributions to the stream-flow routing package continuity equation.", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of stream reach cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_stage": { + "type": "keyword", + "longname": "print calculated stages to listing file", + "description": "keyword to indicate that the list of stream reach {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of stream reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save stream reach flows to budget file", + "description": "keyword to indicate that stream reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "stage_filerecord": { + "type": "record", + "optional": true, + "fields": { + "stage": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "package_convergence_filerecord": { + "type": "record", + "optional": true, + "fields": { + "package_convergence": { + "type": "file", + "longname": "package_convergence keyword", + "description": "keyword to specify that record corresponds to the package convergence comma spaced values file.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the SFR Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "maximum_picard_iterations": { + "type": "integer", + "longname": "SFR picard iterations", + "description": "integer value that defines the maximum number of Streamflow Routing picard iterations allowed when solving for reach stages and flows as part of the GWF formulate step. Picard iterations are used to minimize differences in SFR package results between subsequent GWF picard (non-linear) iterations as a result of non-optimal reach numbering. If reaches are numbered in order, from upstream to downstream, MAXIMUM_PICARD_ITERATIONS can be set to 1 to reduce model run time. By default, MAXIMUM_PICARD_ITERATIONS is equal to 100.", + "optional": true + }, + "maximum_iterations": { + "type": "integer", + "longname": "SFR Newton-Raphson iterations", + "description": "integer value that defines the maximum number of Streamflow Routing Newton-Raphson iterations allowed for a reach. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS would only need to be increased from the default value if one or more reach in a simulation has a large water budget error.", + "optional": true + }, + "maximum_depth_change": { + "type": "double", + "longname": "depth closure tolerance", + "description": "real value that defines the depth closure tolerance. By default, MAXIMUM_DEPTH_CHANGE is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased from the default value if the water budget error for one or more reach is too small or too large, respectively.", + "optional": true + }, + "unit_conversion": { + "type": "double", + "longname": "conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from seconds per meters$^{1/3}$ to model length and time units. A constant of 1.486 is used for flow units of cubic feet per second, and a constant of 1.0 is used for units of cubic meters per second. The constant must be multiplied by 86,400 when using time units of days in the simulation.", + "optional": true + }, + "length_conversion": { + "type": "double", + "longname": "length conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters.", + "optional": true + }, + "time_conversion": { + "type": "double", + "longname": "time conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds.", + "optional": true + }, + "dev_storage_weight": { + "type": "double", + "longname": "reach storage time weighting", + "description": "real number value that defines the time weighting factor used to calculate the change in channel storage. STORAGE_WEIGHT must have a value between 0.5 and 1. Default STORAGE_WEIGHT value is 1.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nreaches": { + "type": "integer", + "longname": "maximum number reaches", + "description": "integer value specifying the number of stream reaches. There must be NREACHES entries in the PACKAGEDATA block." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false, + "pk": true + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell. For reaches that are not connected to an underlying GWF cell, a zero should be specified for each grid dimension. For example, for a DIS grid a CELLID of 0 0 0 should be specified. Reach-aquifer flow is not calculated for unconnected reaches. The keyword NONE can be still be specified to identify unconnected reaches for backward compatibility with previous versions of MODFLOW 6 but eventually NONE will be deprecated and will cause MODFLOW 6 to terminate with an error.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "rlen": { + "type": "double", + "longname": "reach length", + "description": "real value that defines the reach length. RLEN must be greater than zero.", + "tagged": false + }, + "rwid": { + "type": "double", + "longname": "reach width", + "description": "real value that defines the reach width. RWID must be greater than zero.", + "tagged": false + }, + "rgrd": { + "type": "double", + "longname": "stream gradient", + "description": "real value that defines the stream gradient (slope) across the reach. RGRD must be greater than zero.", + "tagged": false + }, + "rtp": { + "type": "double", + "longname": "reach streambed top elevation", + "description": "real value that defines the top elevation of the streambed of a reach.", + "tagged": false + }, + "rbth": { + "type": "double", + "longname": "streambed thickness", + "description": "real value that defines the thickness of the reach streambed. RBTH can be any value if the reach is not connected to an underlying GWF cell. Otherwise, RBTH must be greater than zero.", + "tagged": false + }, + "rhk": { + "type": "double", + "longname": "reach bed hydraulic conductivity", + "description": "real or character value that defines the hydraulic conductivity of the reach streambed. RHK can be any positive value if the reach is not connected to an underlying GWF cell. Otherwise, RHK must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "man": { + "type": "string", + "longname": "Manning's roughness coefficient", + "description": "real or character value that defines the Manning's roughness coefficient for the reach. MAN must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "ncon": { + "type": "integer", + "longname": "number of connected reaches", + "description": "integer value that defines the number of reaches connected to the reach. If a value of zero is specified for NCON an entry for IFNO is still required in the subsequent CONNECTIONDATA block.", + "tagged": false + }, + "ustrf": { + "type": "double", + "longname": "fraction of upstream flow", + "description": "real value that defines the fraction of upstream flow from each upstream reach that is applied as upstream inflow to the reach. The sum of all USTRF values for all reaches connected to the same upstream reach must be equal to one and USTRF must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "ndv": { + "type": "integer", + "longname": "number of downstream reaches", + "description": "integer value that defines the number of downstream diversions for the reach.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each stream reach. The values of auxiliary variables must be present for each stream reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the stream reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nreaches" + ] + } + } + }, + "crosssections": { + "fields": { + "crosssections": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false + }, + "tab6": { + "type": "keyword", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a cross-section table file." + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "tab6_filename": { + "type": "string", + "longname": "table file name", + "description": "character string that defines the path and filename for the file containing cross-section table data for the reach. The TAB6_FILENAME file includes the number of entries in the file and the station elevation data in terms of the fractional width and the reach depth. Instructions for creating the TAB6_FILENAME input file are provided in SFR Reach Cross-Section Table Input File section.", + "tagged": false, + "case_sensitive": true + } + } + } + } + } + }, + "connectiondata": { + "fields": { + "connectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false, + "fk": "packagedata.ifno" + }, + "ic": { + "type": "array", + "longname": "connected reach numbers", + "description": "integer value that defines the reach number of the reach connected to the current reach and whether it is connected to the upstream or downstream end of the reach. Negative IC numbers indicate connected reaches are connected to the downstream end of the current reach. Positive IC numbers indicate connected reaches are connected to the upstream end of the current reach. The absolute value of IC must be greater than zero and less than or equal to NREACHES. IC should not be specified when NCON is zero but must be specified otherwise.", + "optional": true, + "dtype": "integer", + "shape": [ + "packagedata.ncon(ifno)" + ] + } + } + } + } + } + }, + "diversions": { + "fields": { + "diversions": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false + }, + "idv": { + "type": "integer", + "longname": "downstream diversion number", + "description": "integer value that defines the downstream diversion number for the diversion for reach IFNO. IDV must be greater than zero and less than or equal to NDV for reach IFNO.", + "tagged": false + }, + "iconr": { + "type": "integer", + "longname": "downstream reach number for diversion", + "description": "integer value that defines the downstream reach that will receive the diverted water. IDV must be greater than zero and less than or equal to NREACHES. Furthermore, reach ICONR must be a downstream connection for reach IFNO.", + "tagged": false + }, + "cprior": { + "type": "string", + "longname": "iprior code", + "description": "character string value that defines the the prioritization system for the diversion, such as when insufficient water is available to meet all diversion stipulations, and is used in conjunction with the value of FLOW value specified in the STRESS_PERIOD_DATA section. Available diversion options include: (1) CPRIOR = `FRACTION', then the amount of the diversion is computed as a fraction of the streamflow leaving reach IFNO ($Q_{DS}$); in this case, 0.0 $le$ DIVFLOW $le$ 1.0. (2) CPRIOR = `EXCESS', a diversion is made only if $Q_{DS}$ for reach IFNO exceeds the value of DIVFLOW. If this occurs, then the quantity of water diverted is the excess flow ($Q_{DS} -$ DIVFLOW) and $Q_{DS}$ from reach IFNO is set equal to DIVFLOW. This represents a flood-control type of diversion, as described by Danskin and Hanson (2002). (3) CPRIOR = `THRESHOLD', then if $Q_{DS}$ in reach IFNO is less than the specified diversion flow DIVFLOW, no water is diverted from reach IFNO. If $Q_{DS}$ in reach IFNO is greater than or equal to DIVFLOW, DIVFLOW is diverted and $Q_{DS}$ is set to the remainder ($Q_{DS} -$ DIVFLOW)). This approach assumes that once flow in the stream is sufficiently low, diversions from the stream cease, and is the `priority' algorithm that originally was programmed into the STR1 Package (Prudic, 1989). (4) CPRIOR = `UPTO' -- if $Q_{DS}$ in reach IFNO is greater than or equal to the specified diversion flow DIVFLOW, $Q_{DS}$ is reduced by DIVFLOW. If $Q_{DS}$ in reach IFNO is less than DIVFLOW, DIVFLOW is set to $Q_{DS}$ and there will be no flow available for reaches connected to downstream end of reach IFNO.", + "tagged": false + } + } + } + } + } + }, + "initialstages": { + "fields": { + "initialstages": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false + }, + "initialstage": { + "type": "double", + "longname": "initial reach stage", + "description": "real value that defines the initial stage for the reach. The program will terminate with an error if INITIALSTAGE is less than the RTP value for reach IFNO defined in the PACKAGEDATA block. INITIALSTAGE data are used only if STORAGE is specified in the Options block and the first stress period is transient or for reaches defined to use the SIMPLE STATUS in the Period block.", + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES.", + "tagged": false + }, + "sfrsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the SFRSETTING string include: STATUS, BEDK, MANNING, STAGE, INFLOW, RAINFALL, EVAPORATION, RUNOFF, DIVERSION, UPSTREAM_FRACTION, and AUXILIARY.", + "arms": { + "status": { + "type": "string", + "longname": "reach status", + "description": "keyword option to define stream reach status. STATUS can be ACTIVE, INACTIVE, or SIMPLE. The SIMPLE STATUS option simulates streamflow using a user-specified stage for a reach or a stage set to the top of the reach (depth = 0). In cases where the simulated leakage calculated using the specified stage exceeds the sum of inflows to the reach, the stage is set to the top of the reach and leakage is set equal to the sum of inflows. Upstream fractions should be changed using the UPSTREAM_FRACTION SFRSETTING if the status for one or more reaches is changed to ACTIVE or INACTIVE. For example, if one of two downstream connections for a reach is inactivated, the upstream fraction for the active and inactive downstream reach should be changed to 1.0 and 0.0, respectively, to ensure that the active reach receives all of the downstream outflow from the upstream reach. By default, STATUS is ACTIVE." + }, + "bedk": { + "type": "string", + "longname": "reach bed hydraulic conductivity", + "description": "real or character value that defines the hydraulic conductivity of the reach streambed. BEDK can be any positive value if the reach is not connected to an underlying GWF cell. Otherwise, BEDK must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "manning": { + "type": "string", + "longname": "reach Manning's roughness coefficient", + "description": "real or character value that defines the Manning's roughness coefficient for the reach. MANNING must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "stage": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage." + }, + "inflow": { + "type": "string", + "longname": "inflow rate", + "description": "real or character value that defines the volumetric inflow rate for the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, inflow rates are zero for each reach.", + "time_series": true + }, + "rainfall": { + "type": "string", + "longname": "rainfall rate", + "description": "real or character value that defines the volumetric rate per unit area of water added by precipitation directly on the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, rainfall rates are zero for each reach.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation rate", + "description": "real or character value that defines the volumetric rate per unit area of water subtracted by evaporation from the streamflow routing reach. A positive evaporation rate should be provided. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. If the volumetric evaporation rate for a reach exceeds the sources of water to the reach (upstream and specified inflows, rainfall, and runoff but excluding groundwater leakage into the reach) the volumetric evaporation rate is limited to the sources of water to the reach. By default, evaporation rates are zero for each reach.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff rate", + "description": "real or character value that defines the volumetric rate of diffuse overland runoff that enters the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. If the volumetric runoff rate for a reach is negative and exceeds inflows to the reach (upstream and specified inflows, and rainfall but excluding groundwater leakage into the reach) the volumetric runoff rate is limited to inflows to the reach and the volumetric evaporation rate for the reach is set to zero. By default, runoff rates are zero for each reach.", + "time_series": true + }, + "diversionrecord": { + "type": "record", + "fields": { + "diversion": { + "type": "keyword", + "longname": "diversion keyword", + "description": "keyword to indicate diversion record." + }, + "idv": { + "type": "integer", + "longname": "downstream diversion number", + "description": "integer value that defines the downstream diversion number for the diversion for reach IFNO. IDV must be greater than zero and less than or equal to NDV for reach IFNO.", + "tagged": false + }, + "divflow": { + "type": "double", + "longname": "volumetric diversion flow rate", + "description": "real or character value that defines the volumetric diversion (DIVFLOW) rate for the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + }, + "upstream_fraction": { + "type": "double", + "longname": "fraction of upstream flow", + "description": "real value that defines the fraction of upstream flow (USTRF) from each upstream reach that is applied as upstream inflow to the reach. The sum of all USTRF values for all reaches connected to the same upstream reach must be equal to one." + }, + "cross_sectionrecord": { + "type": "record", + "fields": { + "cross_section": { + "type": "file", + "longname": "cross_section keyword", + "description": "keyword to specify that record corresponds to a reach cross-section.", + "mode": "filein" + }, + "tab6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a cross-section table file.", + "mode": "filein" + } + } + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "nreaches": { + "set_in": "ar", + "source": "nreaches", + "type": "integer" + }, + "length": { + "type": "array", + "set_in": "ar", + "source": "rlen", + "description": "Reach length (L).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "width": { + "type": "array", + "set_in": "ar", + "source": "rwid", + "description": "Reach width (L).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "slope": { + "type": "array", + "set_in": "ar", + "source": "rgrd", + "description": "Reach gradient (dimensionless).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "strtop": { + "type": "array", + "set_in": "ar", + "source": "rtp", + "description": "Top elevation of the reach streambed (L).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "bthick": { + "type": "array", + "set_in": "ar", + "source": "rbth", + "description": "Thickness of the reach streambed (L).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "hk": { + "type": "array", + "set_in": "ar", + "source": "rhk", + "description": "Hydraulic conductivity of the reach streambed (L/T).", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "rough": { + "type": "array", + "set_in": "ar", + "source": "man", + "description": "Manning's roughness coefficient.", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "nconnreach": { + "type": "array", + "readonly": true, + "set_in": "ar", + "source": "ncon", + "description": "Number of connections for each reach.", + "dtype": "integer", + "shape": [ + "maxbound" + ] + }, + "ustrf": { + "type": "array", + "set_in": "ar", + "source": "ustrf", + "description": "Upstream fraction of flow for each reach.", + "dtype": "double", + "shape": [ + "maxbound" + ] + }, + "ndiv": { + "type": "array", + "readonly": true, + "set_in": "ar", + "source": "ndv", + "description": "Number of diversions for each reach.", + "dtype": "integer", + "shape": [ + "maxbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.toml new file mode 100644 index 00000000..7efaa31f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.toml @@ -0,0 +1,605 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-sfr" +parent = "gwf-nam" +multi = true +subtype = "advanced" + +[dims.nreaches] +value = "nreaches" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.maxbound] +set_in = "ar" + +[blocks.options.fields.storage] +type = "keyword" +longname = "activate reach storage" +description = "keyword that activates storage contributions to the stream-flow routing package continuity equation." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of stream reach cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_stage] +type = "keyword" +longname = "print calculated stages to listing file" +description = "keyword to indicate that the list of stream reach {#2} will be printed to the listing file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of stream reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save stream reach flows to budget file" +description = "keyword to indicate that stream reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.stage_filerecord] +type = "record" +optional = true + +[blocks.options.fields.stage_filerecord.fields.stage] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.package_convergence_filerecord] +type = "record" +optional = true + +[blocks.options.fields.package_convergence_filerecord.fields.package_convergence] +type = "file" +longname = "package_convergence keyword" +description = "keyword to specify that record corresponds to the package convergence comma spaced values file." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the SFR Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.maximum_picard_iterations] +type = "integer" +longname = "SFR picard iterations" +description = "integer value that defines the maximum number of Streamflow Routing picard iterations allowed when solving for reach stages and flows as part of the GWF formulate step. Picard iterations are used to minimize differences in SFR package results between subsequent GWF picard (non-linear) iterations as a result of non-optimal reach numbering. If reaches are numbered in order, from upstream to downstream, MAXIMUM_PICARD_ITERATIONS can be set to 1 to reduce model run time. By default, MAXIMUM_PICARD_ITERATIONS is equal to 100." +optional = true + +[blocks.options.fields.maximum_iterations] +type = "integer" +longname = "SFR Newton-Raphson iterations" +description = "integer value that defines the maximum number of Streamflow Routing Newton-Raphson iterations allowed for a reach. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS would only need to be increased from the default value if one or more reach in a simulation has a large water budget error." +optional = true + +[blocks.options.fields.maximum_depth_change] +type = "double" +longname = "depth closure tolerance" +description = "real value that defines the depth closure tolerance. By default, MAXIMUM_DEPTH_CHANGE is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased from the default value if the water budget error for one or more reach is too small or too large, respectively." +optional = true + +[blocks.options.fields.unit_conversion] +type = "double" +longname = "conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from seconds per meters$^{1/3}$ to model length and time units. A constant of 1.486 is used for flow units of cubic feet per second, and a constant of 1.0 is used for units of cubic meters per second. The constant must be multiplied by 86,400 when using time units of days in the simulation." +optional = true + +[blocks.options.fields.length_conversion] +type = "double" +longname = "length conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters." +optional = true + +[blocks.options.fields.time_conversion] +type = "double" +longname = "time conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds." +optional = true + +[blocks.options.fields.dev_storage_weight] +type = "double" +longname = "reach storage time weighting" +description = "real number value that defines the time weighting factor used to calculate the change in channel storage. STORAGE_WEIGHT must have a value between 0.5 and 1. Default STORAGE_WEIGHT value is 1." +optional = true + +[blocks.dimensions.fields.nreaches] +type = "integer" +longname = "maximum number reaches" +description = "integer value specifying the number of stream reaches. There must be NREACHES entries in the PACKAGEDATA block." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nreaches", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false +pk = true + +[blocks.packagedata.fields.packagedata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell. For reaches that are not connected to an underlying GWF cell, a zero should be specified for each grid dimension. For example, for a DIS grid a CELLID of 0 0 0 should be specified. Reach-aquifer flow is not calculated for unconnected reaches. The keyword NONE can be still be specified to identify unconnected reaches for backward compatibility with previous versions of MODFLOW 6 but eventually NONE will be deprecated and will cause MODFLOW 6 to terminate with an error." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.packagedata.fields.packagedata.item.fields.rlen] +type = "double" +longname = "reach length" +description = "real value that defines the reach length. RLEN must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rwid] +type = "double" +longname = "reach width" +description = "real value that defines the reach width. RWID must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rgrd] +type = "double" +longname = "stream gradient" +description = "real value that defines the stream gradient (slope) across the reach. RGRD must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rtp] +type = "double" +longname = "reach streambed top elevation" +description = "real value that defines the top elevation of the streambed of a reach." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rbth] +type = "double" +longname = "streambed thickness" +description = "real value that defines the thickness of the reach streambed. RBTH can be any value if the reach is not connected to an underlying GWF cell. Otherwise, RBTH must be greater than zero." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.rhk] +type = "double" +longname = "reach bed hydraulic conductivity" +description = "real or character value that defines the hydraulic conductivity of the reach streambed. RHK can be any positive value if the reach is not connected to an underlying GWF cell. Otherwise, RHK must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.packagedata.fields.packagedata.item.fields.man] +type = "string" +longname = "Manning's roughness coefficient" +description = "real or character value that defines the Manning's roughness coefficient for the reach. MAN must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.packagedata.fields.packagedata.item.fields.ncon] +type = "integer" +longname = "number of connected reaches" +description = "integer value that defines the number of reaches connected to the reach. If a value of zero is specified for NCON an entry for IFNO is still required in the subsequent CONNECTIONDATA block." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ustrf] +type = "double" +longname = "fraction of upstream flow" +description = "real value that defines the fraction of upstream flow from each upstream reach that is applied as upstream inflow to the reach. The sum of all USTRF values for all reaches connected to the same upstream reach must be equal to one and USTRF must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.packagedata.fields.packagedata.item.fields.ndv] +type = "integer" +longname = "number of downstream reaches" +description = "integer value that defines the number of downstream diversions for the reach." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each stream reach. The values of auxiliary variables must be present for each stream reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the stream reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.crosssections.fields.crosssections] +type = "list" + +[blocks.crosssections.fields.crosssections.item] +type = "record" + +[blocks.crosssections.fields.crosssections.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false + +[blocks.crosssections.fields.crosssections.item.fields.tab6] +type = "keyword" +longname = "head keyword" +description = "keyword to specify that record corresponds to a cross-section table file." + +[blocks.crosssections.fields.crosssections.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.crosssections.fields.crosssections.item.fields.tab6_filename] +type = "string" +longname = "table file name" +description = "character string that defines the path and filename for the file containing cross-section table data for the reach. The TAB6_FILENAME file includes the number of entries in the file and the station elevation data in terms of the fractional width and the reach depth. Instructions for creating the TAB6_FILENAME input file are provided in SFR Reach Cross-Section Table Input File section." +tagged = false +case_sensitive = true + +[blocks.connectiondata.fields.connectiondata] +type = "list" + +[blocks.connectiondata.fields.connectiondata.item] +type = "record" + +[blocks.connectiondata.fields.connectiondata.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false +fk = "packagedata.ifno" + +[blocks.connectiondata.fields.connectiondata.item.fields.ic] +type = "array" +longname = "connected reach numbers" +description = "integer value that defines the reach number of the reach connected to the current reach and whether it is connected to the upstream or downstream end of the reach. Negative IC numbers indicate connected reaches are connected to the downstream end of the current reach. Positive IC numbers indicate connected reaches are connected to the upstream end of the current reach. The absolute value of IC must be greater than zero and less than or equal to NREACHES. IC should not be specified when NCON is zero but must be specified otherwise." +optional = true +dtype = "integer" +shape = [ + "packagedata.ncon(ifno)", +] + +[blocks.diversions.fields.diversions] +type = "list" + +[blocks.diversions.fields.diversions.item] +type = "record" + +[blocks.diversions.fields.diversions.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false + +[blocks.diversions.fields.diversions.item.fields.idv] +type = "integer" +longname = "downstream diversion number" +description = "integer value that defines the downstream diversion number for the diversion for reach IFNO. IDV must be greater than zero and less than or equal to NDV for reach IFNO." +tagged = false + +[blocks.diversions.fields.diversions.item.fields.iconr] +type = "integer" +longname = "downstream reach number for diversion" +description = "integer value that defines the downstream reach that will receive the diverted water. IDV must be greater than zero and less than or equal to NREACHES. Furthermore, reach ICONR must be a downstream connection for reach IFNO." +tagged = false + +[blocks.diversions.fields.diversions.item.fields.cprior] +type = "string" +longname = "iprior code" +description = "character string value that defines the the prioritization system for the diversion, such as when insufficient water is available to meet all diversion stipulations, and is used in conjunction with the value of FLOW value specified in the STRESS_PERIOD_DATA section. Available diversion options include: (1) CPRIOR = `FRACTION', then the amount of the diversion is computed as a fraction of the streamflow leaving reach IFNO ($Q_{DS}$); in this case, 0.0 $le$ DIVFLOW $le$ 1.0. (2) CPRIOR = `EXCESS', a diversion is made only if $Q_{DS}$ for reach IFNO exceeds the value of DIVFLOW. If this occurs, then the quantity of water diverted is the excess flow ($Q_{DS} -$ DIVFLOW) and $Q_{DS}$ from reach IFNO is set equal to DIVFLOW. This represents a flood-control type of diversion, as described by Danskin and Hanson (2002). (3) CPRIOR = `THRESHOLD', then if $Q_{DS}$ in reach IFNO is less than the specified diversion flow DIVFLOW, no water is diverted from reach IFNO. If $Q_{DS}$ in reach IFNO is greater than or equal to DIVFLOW, DIVFLOW is diverted and $Q_{DS}$ is set to the remainder ($Q_{DS} -$ DIVFLOW)). This approach assumes that once flow in the stream is sufficiently low, diversions from the stream cease, and is the `priority' algorithm that originally was programmed into the STR1 Package (Prudic, 1989). (4) CPRIOR = `UPTO' -- if $Q_{DS}$ in reach IFNO is greater than or equal to the specified diversion flow DIVFLOW, $Q_{DS}$ is reduced by DIVFLOW. If $Q_{DS}$ in reach IFNO is less than DIVFLOW, DIVFLOW is set to $Q_{DS}$ and there will be no flow available for reaches connected to downstream end of reach IFNO." +tagged = false + +[blocks.initialstages.fields.initialstages] +type = "list" + +[blocks.initialstages.fields.initialstages.item] +type = "record" + +[blocks.initialstages.fields.initialstages.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false + +[blocks.initialstages.fields.initialstages.item.fields.initialstage] +type = "double" +longname = "initial reach stage" +description = "real value that defines the initial stage for the reach. The program will terminate with an error if INITIALSTAGE is less than the RTP value for reach IFNO defined in the PACKAGEDATA block. INITIALSTAGE data are used only if STORAGE is specified in the Options block and the first stress period is transient or for reaches defined to use the SIMPLE STATUS in the Period block." +tagged = false + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES." +tagged = false + +[blocks.period.fields.perioddata.item.fields.sfrsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the SFRSETTING string include: STATUS, BEDK, MANNING, STAGE, INFLOW, RAINFALL, EVAPORATION, RUNOFF, DIVERSION, UPSTREAM_FRACTION, and AUXILIARY." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.status] +type = "string" +longname = "reach status" +description = "keyword option to define stream reach status. STATUS can be ACTIVE, INACTIVE, or SIMPLE. The SIMPLE STATUS option simulates streamflow using a user-specified stage for a reach or a stage set to the top of the reach (depth = 0). In cases where the simulated leakage calculated using the specified stage exceeds the sum of inflows to the reach, the stage is set to the top of the reach and leakage is set equal to the sum of inflows. Upstream fractions should be changed using the UPSTREAM_FRACTION SFRSETTING if the status for one or more reaches is changed to ACTIVE or INACTIVE. For example, if one of two downstream connections for a reach is inactivated, the upstream fraction for the active and inactive downstream reach should be changed to 1.0 and 0.0, respectively, to ensure that the active reach receives all of the downstream outflow from the upstream reach. By default, STATUS is ACTIVE." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.bedk] +type = "string" +longname = "reach bed hydraulic conductivity" +description = "real or character value that defines the hydraulic conductivity of the reach streambed. BEDK can be any positive value if the reach is not connected to an underlying GWF cell. Otherwise, BEDK must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.manning] +type = "string" +longname = "reach Manning's roughness coefficient" +description = "real or character value that defines the Manning's roughness coefficient for the reach. MANNING must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.stage] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.inflow] +type = "string" +longname = "inflow rate" +description = "real or character value that defines the volumetric inflow rate for the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, inflow rates are zero for each reach." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.rainfall] +type = "string" +longname = "rainfall rate" +description = "real or character value that defines the volumetric rate per unit area of water added by precipitation directly on the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, rainfall rates are zero for each reach." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.evaporation] +type = "string" +longname = "evaporation rate" +description = "real or character value that defines the volumetric rate per unit area of water subtracted by evaporation from the streamflow routing reach. A positive evaporation rate should be provided. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. If the volumetric evaporation rate for a reach exceeds the sources of water to the reach (upstream and specified inflows, rainfall, and runoff but excluding groundwater leakage into the reach) the volumetric evaporation rate is limited to the sources of water to the reach. By default, evaporation rates are zero for each reach." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.runoff] +type = "string" +longname = "runoff rate" +description = "real or character value that defines the volumetric rate of diffuse overland runoff that enters the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. If the volumetric runoff rate for a reach is negative and exceeds inflows to the reach (upstream and specified inflows, and rainfall but excluding groundwater leakage into the reach) the volumetric runoff rate is limited to inflows to the reach and the volumetric evaporation rate for the reach is set to zero. By default, runoff rates are zero for each reach." +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.diversionrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.diversionrecord.fields.diversion] +type = "keyword" +longname = "diversion keyword" +description = "keyword to indicate diversion record." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.diversionrecord.fields.idv] +type = "integer" +longname = "downstream diversion number" +description = "integer value that defines the downstream diversion number for the diversion for reach IFNO. IDV must be greater than zero and less than or equal to NDV for reach IFNO." +tagged = false + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.diversionrecord.fields.divflow] +type = "double" +longname = "volumetric diversion flow rate" +description = "real or character value that defines the volumetric diversion (DIVFLOW) rate for the streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.upstream_fraction] +type = "double" +longname = "fraction of upstream flow" +description = "real value that defines the fraction of upstream flow (USTRF) from each upstream reach that is applied as upstream inflow to the reach. The sum of all USTRF values for all reaches connected to the same upstream reach must be equal to one." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.cross_sectionrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.cross_sectionrecord.fields.cross_section] +type = "file" +longname = "cross_section keyword" +description = "keyword to specify that record corresponds to a reach cross-section." +mode = "filein" + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.cross_sectionrecord.fields.tab6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a cross-section table file." +mode = "filein" + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.perioddata.item.fields.sfrsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.nreaches] +set_in = "ar" +source = "nreaches" +type = "integer" + +[memory.length] +type = "array" +set_in = "ar" +source = "rlen" +description = "Reach length (L)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.width] +type = "array" +set_in = "ar" +source = "rwid" +description = "Reach width (L)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.slope] +type = "array" +set_in = "ar" +source = "rgrd" +description = "Reach gradient (dimensionless)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.strtop] +type = "array" +set_in = "ar" +source = "rtp" +description = "Top elevation of the reach streambed (L)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.bthick] +type = "array" +set_in = "ar" +source = "rbth" +description = "Thickness of the reach streambed (L)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.hk] +type = "array" +set_in = "ar" +source = "rhk" +description = "Hydraulic conductivity of the reach streambed (L/T)." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.rough] +type = "array" +set_in = "ar" +source = "man" +description = "Manning's roughness coefficient." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.nconnreach] +type = "array" +readonly = true +set_in = "ar" +source = "ncon" +description = "Number of connections for each reach." +dtype = "integer" +shape = [ + "maxbound", +] + +[memory.ustrf] +type = "array" +set_in = "ar" +source = "ustrf" +description = "Upstream fraction of flow for each reach." +dtype = "double" +shape = [ + "maxbound", +] + +[memory.ndiv] +type = "array" +readonly = true +set_in = "ar" +source = "ndv" +description = "Number of diversions for each reach." +dtype = "integer" +shape = [ + "maxbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.yaml new file mode 100644 index 00000000..ed61325b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sfr.yaml @@ -0,0 +1,714 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-sfr +parent: gwf-nam +multi: true +subtype: advanced +dims: + nreaches: + value: nreaches + scope: model + auxiliary: + value: len(auxiliary) + maxbound: + set_in: ar +blocks: + options: + fields: + storage: + type: keyword + longname: activate reach storage + description: keyword that activates storage contributions to the stream-flow routing package continuity + equation. + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of stream reach + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of stream reach information will be written to + the listing file immediately after it is read. + optional: true + print_stage: + type: keyword + longname: print calculated stages to listing file + description: keyword to indicate that the list of stream reach {#2} will be printed to the listing + file for every stress period in which 'HEAD PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of stream reach flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save stream reach flows to budget file + description: keyword to indicate that stream reach flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + stage_filerecord: + type: record + optional: true + fields: + stage: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to stage. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + package_convergence_filerecord: + type: record + optional: true + fields: + package_convergence: + type: file + longname: package_convergence keyword + description: keyword to specify that record corresponds to the package convergence comma spaced + values file. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the SFR Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + maximum_picard_iterations: + type: integer + longname: SFR picard iterations + description: integer value that defines the maximum number of Streamflow Routing picard iterations + allowed when solving for reach stages and flows as part of the GWF formulate step. Picard iterations + are used to minimize differences in SFR package results between subsequent GWF picard (non-linear) + iterations as a result of non-optimal reach numbering. If reaches are numbered in order, from + upstream to downstream, MAXIMUM_PICARD_ITERATIONS can be set to 1 to reduce model run time. + By default, MAXIMUM_PICARD_ITERATIONS is equal to 100. + optional: true + maximum_iterations: + type: integer + longname: SFR Newton-Raphson iterations + description: integer value that defines the maximum number of Streamflow Routing Newton-Raphson + iterations allowed for a reach. By default, MAXIMUM_ITERATIONS is equal to 100. MAXIMUM_ITERATIONS + would only need to be increased from the default value if one or more reach in a simulation + has a large water budget error. + optional: true + maximum_depth_change: + type: double + longname: depth closure tolerance + description: real value that defines the depth closure tolerance. By default, MAXIMUM_DEPTH_CHANGE + is equal to $1 times 10^{-5}$. The MAXIMUM_STAGE_CHANGE would only need to be increased or decreased + from the default value if the water budget error for one or more reach is too small or too large, + respectively. + optional: true + unit_conversion: + type: double + longname: conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from seconds per meters$^{1/3}$ to model length and time units. A constant of 1.486 is used + for flow units of cubic feet per second, and a constant of 1.0 is used for units of cubic meters + per second. The constant must be multiplied by 86,400 when using time units of days in the simulation. + optional: true + length_conversion: + type: double + longname: length conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 + when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. + LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters. + optional: true + time_conversion: + type: double + longname: time conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, + and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years + in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS + are seconds. + optional: true + dev_storage_weight: + type: double + longname: reach storage time weighting + description: real number value that defines the time weighting factor used to calculate the change + in channel storage. STORAGE_WEIGHT must have a value between 0.5 and 1. Default STORAGE_WEIGHT + value is 1. + optional: true + dimensions: + fields: + nreaches: + type: integer + longname: maximum number reaches + description: integer value specifying the number of stream reaches. There must be NREACHES entries + in the PACKAGEDATA block. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + pk: true + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, + and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. + If the model uses the unstructured discretization (DISU) input file, CELLID is the node + number for the cell. For reaches that are not connected to an underlying GWF cell, a zero + should be specified for each grid dimension. For example, for a DIS grid a CELLID of 0 + 0 0 should be specified. Reach-aquifer flow is not calculated for unconnected reaches. + The keyword NONE can be still be specified to identify unconnected reaches for backward + compatibility with previous versions of MODFLOW 6 but eventually NONE will be deprecated + and will cause MODFLOW 6 to terminate with an error. + dtype: integer + shape: + - ncelldim + rlen: + type: double + longname: reach length + description: real value that defines the reach length. RLEN must be greater than zero. + tagged: false + rwid: + type: double + longname: reach width + description: real value that defines the reach width. RWID must be greater than zero. + tagged: false + rgrd: + type: double + longname: stream gradient + description: real value that defines the stream gradient (slope) across the reach. RGRD + must be greater than zero. + tagged: false + rtp: + type: double + longname: reach streambed top elevation + description: real value that defines the top elevation of the streambed of a reach. + tagged: false + rbth: + type: double + longname: streambed thickness + description: real value that defines the thickness of the reach streambed. RBTH can be any + value if the reach is not connected to an underlying GWF cell. Otherwise, RBTH must be + greater than zero. + tagged: false + rhk: + type: double + longname: reach bed hydraulic conductivity + description: real or character value that defines the hydraulic conductivity of the reach + streambed. RHK can be any positive value if the reach is not connected to an underlying + GWF cell. Otherwise, RHK must be greater than zero. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + man: + type: string + longname: Manning's roughness coefficient + description: real or character value that defines the Manning's roughness coefficient for + the reach. MAN must be greater than zero. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + ncon: + type: integer + longname: number of connected reaches + description: integer value that defines the number of reaches connected to the reach. If + a value of zero is specified for NCON an entry for IFNO is still required in the subsequent + CONNECTIONDATA block. + tagged: false + ustrf: + type: double + longname: fraction of upstream flow + description: real value that defines the fraction of upstream flow from each upstream reach + that is applied as upstream inflow to the reach. The sum of all USTRF values for all reaches + connected to the same upstream reach must be equal to one and USTRF must be greater than + or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + ndv: + type: integer + longname: number of downstream reaches + description: integer value that defines the number of downstream diversions for the reach. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each stream reach. The + values of auxiliary variables must be present for each stream reach. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the stream reach cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nreaches + crosssections: + fields: + crosssections: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + tab6: + type: keyword + longname: head keyword + description: keyword to specify that record corresponds to a cross-section table file. + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + tab6_filename: + type: string + longname: table file name + description: character string that defines the path and filename for the file containing + cross-section table data for the reach. The TAB6_FILENAME file includes the number of + entries in the file and the station elevation data in terms of the fractional width and + the reach depth. Instructions for creating the TAB6_FILENAME input file are provided in + SFR Reach Cross-Section Table Input File section. + tagged: false + case_sensitive: true + connectiondata: + fields: + connectiondata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + fk: packagedata.ifno + ic: + type: array + longname: connected reach numbers + description: integer value that defines the reach number of the reach connected to the current + reach and whether it is connected to the upstream or downstream end of the reach. Negative + IC numbers indicate connected reaches are connected to the downstream end of the current + reach. Positive IC numbers indicate connected reaches are connected to the upstream end + of the current reach. The absolute value of IC must be greater than zero and less than + or equal to NREACHES. IC should not be specified when NCON is zero but must be specified + otherwise. + optional: true + dtype: integer + shape: + - packagedata.ncon(ifno) + diversions: + fields: + diversions: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + idv: + type: integer + longname: downstream diversion number + description: integer value that defines the downstream diversion number for the diversion + for reach IFNO. IDV must be greater than zero and less than or equal to NDV for reach + IFNO. + tagged: false + iconr: + type: integer + longname: downstream reach number for diversion + description: integer value that defines the downstream reach that will receive the diverted + water. IDV must be greater than zero and less than or equal to NREACHES. Furthermore, + reach ICONR must be a downstream connection for reach IFNO. + tagged: false + cprior: + type: string + longname: iprior code + description: 'character string value that defines the the prioritization system for the + diversion, such as when insufficient water is available to meet all diversion stipulations, + and is used in conjunction with the value of FLOW value specified in the STRESS_PERIOD_DATA + section. Available diversion options include: (1) CPRIOR = `FRACTION'', then the amount + of the diversion is computed as a fraction of the streamflow leaving reach IFNO ($Q_{DS}$); + in this case, 0.0 $le$ DIVFLOW $le$ 1.0. (2) CPRIOR = `EXCESS'', a diversion is made + only if $Q_{DS}$ for reach IFNO exceeds the value of DIVFLOW. If this occurs, then the + quantity of water diverted is the excess flow ($Q_{DS} -$ DIVFLOW) and $Q_{DS}$ from reach + IFNO is set equal to DIVFLOW. This represents a flood-control type of diversion, as described + by Danskin and Hanson (2002). (3) CPRIOR = `THRESHOLD'', then if $Q_{DS}$ in reach IFNO + is less than the specified diversion flow DIVFLOW, no water is diverted from reach IFNO. + If $Q_{DS}$ in reach IFNO is greater than or equal to DIVFLOW, DIVFLOW is diverted and + $Q_{DS}$ is set to the remainder ($Q_{DS} -$ DIVFLOW)). This approach assumes that once + flow in the stream is sufficiently low, diversions from the stream cease, and is the `priority'' + algorithm that originally was programmed into the STR1 Package (Prudic, 1989). (4) CPRIOR + = `UPTO'' -- if $Q_{DS}$ in reach IFNO is greater than or equal to the specified diversion + flow DIVFLOW, $Q_{DS}$ is reduced by DIVFLOW. If $Q_{DS}$ in reach IFNO is less than DIVFLOW, + DIVFLOW is set to $Q_{DS}$ and there will be no flow available for reaches connected to + downstream end of reach IFNO.' + tagged: false + initialstages: + fields: + initialstages: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + initialstage: + type: double + longname: initial reach stage + description: real value that defines the initial stage for the reach. The program will terminate + with an error if INITIALSTAGE is less than the RTP value for reach IFNO defined in the + PACKAGEDATA block. INITIALSTAGE data are used only if STORAGE is specified in the Options + block and the first stress period is transient or for reaches defined to use the SIMPLE + STATUS in the Period block. + tagged: false + period: + fields: + perioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES. + tagged: false + sfrsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the SFRSETTING string include: STATUS, BEDK, MANNING, STAGE, + INFLOW, RAINFALL, EVAPORATION, RUNOFF, DIVERSION, UPSTREAM_FRACTION, and AUXILIARY.' + arms: + status: + type: string + longname: reach status + description: keyword option to define stream reach status. STATUS can be ACTIVE, INACTIVE, + or SIMPLE. The SIMPLE STATUS option simulates streamflow using a user-specified stage + for a reach or a stage set to the top of the reach (depth = 0). In cases where the + simulated leakage calculated using the specified stage exceeds the sum of inflows + to the reach, the stage is set to the top of the reach and leakage is set equal to + the sum of inflows. Upstream fractions should be changed using the UPSTREAM_FRACTION + SFRSETTING if the status for one or more reaches is changed to ACTIVE or INACTIVE. + For example, if one of two downstream connections for a reach is inactivated, the + upstream fraction for the active and inactive downstream reach should be changed to + 1.0 and 0.0, respectively, to ensure that the active reach receives all of the downstream + outflow from the upstream reach. By default, STATUS is ACTIVE. + bedk: + type: string + longname: reach bed hydraulic conductivity + description: real or character value that defines the hydraulic conductivity of the + reach streambed. BEDK can be any positive value if the reach is not connected to an + underlying GWF cell. Otherwise, BEDK must be greater than zero. If the Options block + includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can + be obtained from a time series by entering the time-series name in place of a numeric + value. + time_series: true + manning: + type: string + longname: reach Manning's roughness coefficient + description: real or character value that defines the Manning's roughness coefficient + for the reach. MANNING must be greater than zero. If the Options block includes a + TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + stage: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to stage. + inflow: + type: string + longname: inflow rate + description: real or character value that defines the volumetric inflow rate for the + streamflow routing reach. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. By default, inflow rates are zero + for each reach. + time_series: true + rainfall: + type: string + longname: rainfall rate + description: real or character value that defines the volumetric rate per unit area + of water added by precipitation directly on the streamflow routing reach. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. By default, rainfall rates are zero for each reach. + time_series: true + evaporation: + type: string + longname: evaporation rate + description: real or character value that defines the volumetric rate per unit area + of water subtracted by evaporation from the streamflow routing reach. A positive evaporation + rate should be provided. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. If the volumetric evaporation rate + for a reach exceeds the sources of water to the reach (upstream and specified inflows, + rainfall, and runoff but excluding groundwater leakage into the reach) the volumetric + evaporation rate is limited to the sources of water to the reach. By default, evaporation + rates are zero for each reach. + time_series: true + runoff: + type: string + longname: runoff rate + description: real or character value that defines the volumetric rate of diffuse overland + runoff that enters the streamflow routing reach. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. If the volumetric + runoff rate for a reach is negative and exceeds inflows to the reach (upstream and + specified inflows, and rainfall but excluding groundwater leakage into the reach) + the volumetric runoff rate is limited to inflows to the reach and the volumetric evaporation + rate for the reach is set to zero. By default, runoff rates are zero for each reach. + time_series: true + diversionrecord: + type: record + fields: + diversion: + type: keyword + longname: diversion keyword + description: keyword to indicate diversion record. + idv: + type: integer + longname: downstream diversion number + description: integer value that defines the downstream diversion number for the + diversion for reach IFNO. IDV must be greater than zero and less than or equal + to NDV for reach IFNO. + tagged: false + divflow: + type: double + longname: volumetric diversion flow rate + description: real or character value that defines the volumetric diversion (DIVFLOW) + rate for the streamflow routing reach. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + upstream_fraction: + type: double + longname: fraction of upstream flow + description: real value that defines the fraction of upstream flow (USTRF) from each + upstream reach that is applied as upstream inflow to the reach. The sum of all USTRF + values for all reaches connected to the same upstream reach must be equal to one. + cross_sectionrecord: + type: record + fields: + cross_section: + type: file + longname: cross_section keyword + description: keyword to specify that record corresponds to a reach cross-section. + mode: filein + tab6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a cross-section table + file. + mode: filein + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a + TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + nreaches: + set_in: ar + source: nreaches + type: integer + length: + type: array + set_in: ar + source: rlen + description: Reach length (L). + dtype: double + shape: + - maxbound + width: + type: array + set_in: ar + source: rwid + description: Reach width (L). + dtype: double + shape: + - maxbound + slope: + type: array + set_in: ar + source: rgrd + description: Reach gradient (dimensionless). + dtype: double + shape: + - maxbound + strtop: + type: array + set_in: ar + source: rtp + description: Top elevation of the reach streambed (L). + dtype: double + shape: + - maxbound + bthick: + type: array + set_in: ar + source: rbth + description: Thickness of the reach streambed (L). + dtype: double + shape: + - maxbound + hk: + type: array + set_in: ar + source: rhk + description: Hydraulic conductivity of the reach streambed (L/T). + dtype: double + shape: + - maxbound + rough: + type: array + set_in: ar + source: man + description: Manning's roughness coefficient. + dtype: double + shape: + - maxbound + nconnreach: + type: array + readonly: true + set_in: ar + source: ncon + description: Number of connections for each reach. + dtype: integer + shape: + - maxbound + ustrf: + type: array + set_in: ar + source: ustrf + description: Upstream fraction of flow for each reach. + dtype: double + shape: + - maxbound + ndiv: + type: array + readonly: true + set_in: ar + source: ndv + description: Number of diversions for each reach. + dtype: integer + shape: + - maxbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.json new file mode 100644 index 00000000..79d0418e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.json @@ -0,0 +1,185 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-sto", + "parent": "gwf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "keyword to save NPF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "storagecoefficient": { + "type": "keyword", + "longname": "keyword to indicate SS is read as storage coefficient", + "description": "keyword to indicate that the SS array is read as storage coefficient rather than specific storage.", + "optional": true + }, + "ss_confined_only": { + "type": "keyword", + "longname": "keyword to indicate specific storage only applied under confined conditions", + "description": "keyword to indicate that compressible storage is only calculated for a convertible cell (ICONVERT>0) when the cell is under confined conditions (head greater than or equal to the top of the cell). This option has no effect on cells that are marked as being always confined (ICONVERT=0). This option is identical to the approach used to calculate storage changes under confined conditions in MODFLOW-2005.", + "optional": true + }, + "tvs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "tvs6": { + "type": "file", + "longname": "tvs keyword", + "description": "keyword to specify that record corresponds to a time-varying storage (TVS) file. The behavior of TVS and a description of the input file is provided separately.", + "mode": "filein" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "dev_original_specific_storage": { + "type": "keyword", + "longname": "development option for original specific storage", + "description": "flag indicating the original storage specific storage formulation should be used", + "optional": true + }, + "dev_oldstorageformulation": { + "type": "keyword", + "longname": "development option flag for old storage formulation", + "description": "development option flag for old storage formulation", + "optional": true + } + } + }, + "griddata": { + "fields": { + "iconvert": { + "type": "array", + "longname": "convertible indicator", + "description": "is a flag for each cell that specifies whether or not a cell is convertible for the storage calculation. 0 indicates confined storage is used. $>$0 indicates confined storage is used when head is above cell top and a mixed formulation of unconfined and confined storage is used when head is below cell top.", + "default": 0, + "netcdf": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "ss": { + "type": "array", + "longname": "specific storage", + "description": "is specific storage (or the storage coefficient if STORAGECOEFFICIENT is specified as an option). Specific storage values must be greater than or equal to 0. If the CSUB Package is included in the GWF model, specific storage must be zero for every cell.", + "default": 1e-05, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sy": { + "type": "array", + "longname": "specific yield", + "description": "is specific yield. Specific yield values must be greater than or equal to 0. Specific yield does not have to be specified if there are no convertible cells (ICONVERT=0 in every cell).", + "default": 0.15, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + }, + "period": { + "fields": { + "storage": { + "type": "string", + "longname": "storage state", + "description": "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. If the CSUB Package is included in the GWF model, only the first and last stress period can be steady-state.", + "optional": true, + "valid": [ + "steady-state", + "transient" + ] + } + } + } + }, + "memory": { + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "istor_coef": { + "set_in": "ar", + "source": "storagecoefficient", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "iorig_ss": { + "set_in": "ar", + "source": "dev_original_specific_storage", + "type": "integer" + }, + "iconf_ss": { + "set_in": "ar", + "source": "dev_oldstorageformulation", + "type": "integer" + }, + "steady_state": { + "set_in": "rp", + "type": "logical" + }, + "iconvert": { + "type": "array", + "set_in": "ar", + "source": "iconvert", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "ss": { + "type": "array", + "set_in": "ar", + "source": "ss", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sy": { + "type": "array", + "set_in": "ar", + "source": "sy", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.toml new file mode 100644 index 00000000..c8609a25 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.toml @@ -0,0 +1,163 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-sto" +parent = "gwf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save NPF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.storagecoefficient] +type = "keyword" +longname = "keyword to indicate SS is read as storage coefficient" +description = "keyword to indicate that the SS array is read as storage coefficient rather than specific storage." +optional = true + +[blocks.options.fields.ss_confined_only] +type = "keyword" +longname = "keyword to indicate specific storage only applied under confined conditions" +description = "keyword to indicate that compressible storage is only calculated for a convertible cell (ICONVERT>0) when the cell is under confined conditions (head greater than or equal to the top of the cell). This option has no effect on cells that are marked as being always confined (ICONVERT=0). This option is identical to the approach used to calculate storage changes under confined conditions in MODFLOW-2005." +optional = true + +[blocks.options.fields.tvs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.tvs_filerecord.fields.tvs6] +type = "file" +longname = "tvs keyword" +description = "keyword to specify that record corresponds to a time-varying storage (TVS) file. The behavior of TVS and a description of the input file is provided separately." +mode = "filein" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.dev_original_specific_storage] +type = "keyword" +longname = "development option for original specific storage" +description = "flag indicating the original storage specific storage formulation should be used" +optional = true + +[blocks.options.fields.dev_oldstorageformulation] +type = "keyword" +longname = "development option flag for old storage formulation" +description = "development option flag for old storage formulation" +optional = true + +[blocks.griddata.fields.iconvert] +type = "array" +longname = "convertible indicator" +description = "is a flag for each cell that specifies whether or not a cell is convertible for the storage calculation. 0 indicates confined storage is used. $>$0 indicates confined storage is used when head is above cell top and a mixed formulation of unconfined and confined storage is used when head is below cell top." +default = 0 +netcdf = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ss] +type = "array" +longname = "specific storage" +description = "is specific storage (or the storage coefficient if STORAGECOEFFICIENT is specified as an option). Specific storage values must be greater than or equal to 0. If the CSUB Package is included in the GWF model, specific storage must be zero for every cell." +default = 1e-05 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.sy] +type = "array" +longname = "specific yield" +description = "is specific yield. Specific yield values must be greater than or equal to 0. Specific yield does not have to be specified if there are no convertible cells (ICONVERT=0 in every cell)." +default = 0.15 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.storage] +type = "string" +longname = "storage state" +description = "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. If the CSUB Package is included in the GWF model, only the first and last stress period can be steady-state." +optional = true +valid = [ + "steady-state", + "transient", +] + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.istor_coef] +set_in = "ar" +source = "storagecoefficient" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.iorig_ss] +set_in = "ar" +source = "dev_original_specific_storage" +type = "integer" + +[memory.iconf_ss] +set_in = "ar" +source = "dev_oldstorageformulation" +type = "integer" + +[memory.steady_state] +set_in = "rp" +type = "logical" + +[memory.iconvert] +type = "array" +set_in = "ar" +source = "iconvert" +dtype = "integer" +shape = [ + "nodes", +] + +[memory.ss] +type = "array" +set_in = "ar" +source = "ss" +dtype = "double" +shape = [ + "nodes", +] + +[memory.sy] +type = "array" +set_in = "ar" +source = "sy" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.yaml new file mode 100644 index 00000000..fba4e1ce --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-sto.yaml @@ -0,0 +1,161 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-sto +parent: gwf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + save_flows: + type: keyword + longname: keyword to save NPF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + storagecoefficient: + type: keyword + longname: keyword to indicate SS is read as storage coefficient + description: keyword to indicate that the SS array is read as storage coefficient rather than + specific storage. + optional: true + ss_confined_only: + type: keyword + longname: keyword to indicate specific storage only applied under confined conditions + description: keyword to indicate that compressible storage is only calculated for a convertible + cell (ICONVERT>0) when the cell is under confined conditions (head greater than or equal to + the top of the cell). This option has no effect on cells that are marked as being always confined + (ICONVERT=0). This option is identical to the approach used to calculate storage changes under + confined conditions in MODFLOW-2005. + optional: true + tvs_filerecord: + type: record + optional: true + fields: + tvs6: + type: file + longname: tvs keyword + description: keyword to specify that record corresponds to a time-varying storage (TVS) file. The + behavior of TVS and a description of the input file is provided separately. + mode: filein + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input grid arrays, which already support the layered keyword, + should be written to layered ascii output files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dev_original_specific_storage: + type: keyword + longname: development option for original specific storage + description: flag indicating the original storage specific storage formulation should be used + optional: true + dev_oldstorageformulation: + type: keyword + longname: development option flag for old storage formulation + description: development option flag for old storage formulation + optional: true + griddata: + fields: + iconvert: + type: array + longname: convertible indicator + description: is a flag for each cell that specifies whether or not a cell is convertible for the + storage calculation. 0 indicates confined storage is used. $>$0 indicates confined storage is + used when head is above cell top and a mixed formulation of unconfined and confined storage + is used when head is below cell top. + default: 0 + netcdf: true + dtype: integer + shape: + - nodes + ss: + type: array + longname: specific storage + description: is specific storage (or the storage coefficient if STORAGECOEFFICIENT is specified + as an option). Specific storage values must be greater than or equal to 0. If the CSUB Package + is included in the GWF model, specific storage must be zero for every cell. + default: 1.0e-05 + netcdf: true + dtype: double + shape: + - nodes + sy: + type: array + longname: specific yield + description: is specific yield. Specific yield values must be greater than or equal to 0. Specific + yield does not have to be specified if there are no convertible cells (ICONVERT=0 in every cell). + default: 0.15 + netcdf: true + dtype: double + shape: + - nodes + period: + fields: + storage: + type: string + longname: storage state + description: keyword to indicate that stress period IPER is steady-state. Steady-state conditions + will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. If the + CSUB Package is included in the GWF model, only the first and last stress period can be steady-state. + optional: true + valid: + - steady-state + - transient +memory: + ipakcb: + set_in: ar + source: save_flows + type: integer + istor_coef: + set_in: ar + source: storagecoefficient + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + iorig_ss: + set_in: ar + source: dev_original_specific_storage + type: integer + iconf_ss: + set_in: ar + source: dev_oldstorageformulation + type: integer + steady_state: + set_in: rp + type: logical + iconvert: + type: array + set_in: ar + source: iconvert + dtype: integer + shape: + - nodes + ss: + type: array + set_in: ar + source: ss + dtype: double + shape: + - nodes + sy: + type: array + set_in: ar + source: sy + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.json new file mode 100644 index 00000000..519e74e5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.json @@ -0,0 +1,380 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-uzf", + "parent": "gwf-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "nuzfcells": { + "value": "nuzfcells", + "scope": "model" + }, + "ntrailwaves": { + "value": "ntrailwaves", + "scope": "model" + }, + "nwavesets": { + "value": "nwavesets", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of GWF cell area used by UZF cell.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of UZF cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of UZF information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of UZF flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that UZF flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "wc_filerecord": { + "type": "record", + "optional": true, + "fields": { + "water_content": { + "type": "file", + "longname": "water_content keyword", + "description": "keyword to specify that record corresponds to unsaturated zone water contents.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "package_convergence_filerecord": { + "type": "record", + "optional": true, + "fields": { + "package_convergence": { + "type": "file", + "longname": "package_convergence keyword", + "description": "keyword to specify that record corresponds to the package convergence comma spaced values file.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the UZF Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "simulate_et": { + "type": "keyword", + "description": "keyword specifying that ET in the unsaturated (UZF) and saturated zones (GWF) will be simulated. ET can be simulated in the UZF cell and not the GWF cell by omitting keywords LINEAR_GWET and SQUARE_GWET.", + "optional": true + }, + "linear_gwet": { + "type": "keyword", + "longname": "use linear evapotranspiration", + "description": "keyword specifying that groundwater ET will be simulated using the original ET formulation of MODFLOW-2005.", + "optional": true + }, + "square_gwet": { + "type": "keyword", + "longname": "use square evapotranspiration", + "description": "keyword specifying that groundwater ET will be simulated by assuming a constant ET rate for groundwater levels between land surface (TOP) and land surface minus the ET extinction depth (TOP-EXTDP). Groundwater ET is smoothly reduced from the PET rate to zero over a nominal interval at TOP-EXTDP.", + "optional": true + }, + "simulate_gwseep": { + "type": "keyword", + "longname": "activate seepage", + "description": "keyword specifying that groundwater discharge (GWSEEP) to land surface will be simulated. Groundwater discharge is nonzero when groundwater head is greater than land surface. This option is no longer recommended; a better approach is to use the Drain Package with discharge scaling as a way to handle seepage to land surface. The Drain Package with discharge scaling is described in Chapter 3 of the Supplemental Technical Information.", + "optional": true + }, + "unsat_etwc": { + "type": "keyword", + "longname": "use PET for theta greater than extwc", + "description": "keyword specifying that ET in the unsaturated zone will be simulated as a function of the specified PET rate while the water content (THETA) is greater than the ET extinction water content (EXTWC).", + "optional": true + }, + "unsat_etae": { + "type": "keyword", + "longname": "use root potential", + "description": "keyword specifying that ET in the unsaturated zone will be simulated using a capillary pressure based formulation. Capillary pressure is calculated using the Brooks-Corey retention function.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nuzfcells": { + "type": "integer", + "longname": "number of UZF cells", + "description": "is the number of UZF cells. More than one UZF cell can be assigned to a GWF cell; however, only one GWF cell can be assigned to a single UZF cell. If more than one UZF cell is assigned to a GWF cell, then an auxiliary variable should be used to reduce the surface area of the UZF cell with the AUXMULTNAME option." + }, + "ntrailwaves": { + "type": "integer", + "longname": "number of trailing waves", + "description": "is the number of trailing waves. A recommended value of 7 can be used for NTRAILWAVES. This value can be increased to lower mass balance error in the unsaturated zone.", + "default": 7 + }, + "nwavesets": { + "type": "integer", + "longname": "number of wave sets", + "description": "is the number of wave sets. A recommended value of 40 can be used for NWAVESETS. This value can be increased if more waves are required to resolve variations in water content within the unsaturated zone.", + "default": 40 + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "uzf id number for this entry", + "description": "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once.", + "tagged": false + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "landflag": { + "type": "integer", + "longname": "land flag", + "description": "integer value set to one for land surface cells indicating that boundary conditions can be applied and data can be specified in the PERIOD block. A value of 0 specifies a non-land surface cell.", + "tagged": false + }, + "ivertcon": { + "type": "integer", + "longname": "vertical connection flag", + "description": "integer value set to specify underlying UZF cell that receives water flowing to bottom of cell. If unsaturated zone flow reaches the water table before the cell bottom, then water is added to the GWF cell instead of flowing to the underlying UZF cell. A value of 0 indicates the UZF cell is not connected to an underlying UZF cell.", + "tagged": false + }, + "surfdep": { + "type": "double", + "longname": "surface depression depth", + "description": "is the surface depression depth of the UZF cell.", + "tagged": false + }, + "vks": { + "type": "double", + "longname": "vertical saturated hydraulic conductivity", + "description": "is the saturated vertical hydraulic conductivity of the UZF cell. This value is used with the Brooks-Corey function and the simulated water content to calculate the partially saturated hydraulic conductivity.", + "tagged": false + }, + "thtr": { + "type": "double", + "longname": "residual water content", + "description": "is the residual (irreducible) water content of the UZF cell. This residual water is not available to plants and will not drain into underlying aquifer cells.", + "tagged": false + }, + "thts": { + "type": "double", + "longname": "saturated water content", + "description": "is the saturated water content of the UZF cell. The values for saturated and residual water content should be set in a manner that is consistent with the specific yield value specified in the Storage Package. The saturated water content must be greater than the residual content.", + "tagged": false + }, + "thti": { + "type": "double", + "longname": "initial water content", + "description": "is the initial water content of the UZF cell. The value must be greater than or equal to the residual water content and less than or equal to the saturated water content.", + "tagged": false + }, + "eps": { + "type": "double", + "longname": "Brooks-Corey exponent", + "description": "is the exponent used in the Brooks-Corey function. The Brooks-Corey function is used by UZF to calculated hydraulic conductivity under partially saturated conditions as a function of water content and the user-specified saturated hydraulic conductivity.", + "tagged": false + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the UZF cell cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nuzfcells" + ] + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "uzf id number for this entry", + "description": "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once.", + "tagged": false + }, + "finf": { + "type": "string", + "longname": "infiltration rate", + "description": "real or character value that defines the applied infiltration rate of the UZF cell ($LT^{-1}$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "pet": { + "type": "string", + "longname": "potential ET rate", + "description": "real or character value that defines the potential evapotranspiration rate of the UZF cell and specified GWF cell. Evapotranspiration is first removed from the unsaturated zone and any remaining potential evapotranspiration is applied to the saturated zone. If IVERTCON is greater than zero then residual potential evapotranspiration not satisfied in the UZF cell is applied to the underlying UZF and GWF cells. PET is always specified, but is only used if SIMULATE_ET is specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "extdp": { + "type": "string", + "longname": "extinction depth", + "description": "real or character value that defines the evapotranspiration extinction depth of the UZF cell. If IVERTCON is greater than zero and EXTDP extends below the GWF cell bottom then remaining potential evapotranspiration is applied to the underlying UZF and GWF cells. EXTDP is always specified, but is only used if SIMULATE_ET is specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "extwc": { + "type": "string", + "longname": "extinction water content", + "description": "real or character value that defines the evapotranspiration extinction water content of the UZF cell. EXTWC is always specified, but is only used if SIMULATE_ET and UNSAT_ETWC are specified in the OPTIONS block. The evapotranspiration rate from the unsaturated zone will be set to zero when the calculated water content is at or less than this value. The value for EXTWC cannot be less than the residual water content, and if it is specified as being less than the residual water content it is set to the residual water content. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "ha": { + "type": "string", + "longname": "air entry potential", + "description": "real or character value that defines the air entry potential (head) of the UZF cell. HA is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "hroot": { + "type": "string", + "longname": "root potential", + "description": "real or character value that defines the root potential (head) of the UZF cell. HROOT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rootact": { + "type": "string", + "longname": "root activity function", + "description": "real or character value that defines the root activity function of the UZF cell. ROOTACT is the length of roots in a given volume of soil divided by that volume. Values range from 0 to about 3 $cm^{-2}$, depending on the plant community and its stage of development. ROOTACT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each UZF. The values of auxiliary variables must be present for each UZF. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + } + } + } + } + } + } + }, + "memory": { + "nuzfcells": { + "set_in": "ar", + "source": "nuzfcells", + "type": "integer" + }, + "ntrailwaves": { + "set_in": "ar", + "source": "ntrailwaves", + "type": "integer" + }, + "nwavesets": { + "set_in": "ar", + "source": "nwavesets", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.toml new file mode 100644 index 00000000..86bc3be3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.toml @@ -0,0 +1,340 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-uzf" +parent = "gwf-nam" +multi = true +subtype = "advanced" + +[dims.nuzfcells] +value = "nuzfcells" +scope = "model" + +[dims.ntrailwaves] +value = "ntrailwaves" +scope = "model" + +[dims.nwavesets] +value = "nwavesets" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of GWF cell area used by UZF cell." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of UZF cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of UZF information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of UZF flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that UZF flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.wc_filerecord] +type = "record" +optional = true + +[blocks.options.fields.wc_filerecord.fields.water_content] +type = "file" +longname = "water_content keyword" +description = "keyword to specify that record corresponds to unsaturated zone water contents." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.package_convergence_filerecord] +type = "record" +optional = true + +[blocks.options.fields.package_convergence_filerecord.fields.package_convergence] +type = "file" +longname = "package_convergence keyword" +description = "keyword to specify that record corresponds to the package convergence comma spaced values file." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the UZF Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.simulate_et] +type = "keyword" +description = "keyword specifying that ET in the unsaturated (UZF) and saturated zones (GWF) will be simulated. ET can be simulated in the UZF cell and not the GWF cell by omitting keywords LINEAR_GWET and SQUARE_GWET." +optional = true + +[blocks.options.fields.linear_gwet] +type = "keyword" +longname = "use linear evapotranspiration" +description = "keyword specifying that groundwater ET will be simulated using the original ET formulation of MODFLOW-2005." +optional = true + +[blocks.options.fields.square_gwet] +type = "keyword" +longname = "use square evapotranspiration" +description = "keyword specifying that groundwater ET will be simulated by assuming a constant ET rate for groundwater levels between land surface (TOP) and land surface minus the ET extinction depth (TOP-EXTDP). Groundwater ET is smoothly reduced from the PET rate to zero over a nominal interval at TOP-EXTDP." +optional = true + +[blocks.options.fields.simulate_gwseep] +type = "keyword" +longname = "activate seepage" +description = "keyword specifying that groundwater discharge (GWSEEP) to land surface will be simulated. Groundwater discharge is nonzero when groundwater head is greater than land surface. This option is no longer recommended; a better approach is to use the Drain Package with discharge scaling as a way to handle seepage to land surface. The Drain Package with discharge scaling is described in Chapter 3 of the Supplemental Technical Information." +optional = true + +[blocks.options.fields.unsat_etwc] +type = "keyword" +longname = "use PET for theta greater than extwc" +description = "keyword specifying that ET in the unsaturated zone will be simulated as a function of the specified PET rate while the water content (THETA) is greater than the ET extinction water content (EXTWC)." +optional = true + +[blocks.options.fields.unsat_etae] +type = "keyword" +longname = "use root potential" +description = "keyword specifying that ET in the unsaturated zone will be simulated using a capillary pressure based formulation. Capillary pressure is calculated using the Brooks-Corey retention function." +optional = true + +[blocks.dimensions.fields.nuzfcells] +type = "integer" +longname = "number of UZF cells" +description = "is the number of UZF cells. More than one UZF cell can be assigned to a GWF cell; however, only one GWF cell can be assigned to a single UZF cell. If more than one UZF cell is assigned to a GWF cell, then an auxiliary variable should be used to reduce the surface area of the UZF cell with the AUXMULTNAME option." + +[blocks.dimensions.fields.ntrailwaves] +type = "integer" +longname = "number of trailing waves" +description = "is the number of trailing waves. A recommended value of 7 can be used for NTRAILWAVES. This value can be increased to lower mass balance error in the unsaturated zone." +default = 7 + +[blocks.dimensions.fields.nwavesets] +type = "integer" +longname = "number of wave sets" +description = "is the number of wave sets. A recommended value of 40 can be used for NWAVESETS. This value can be increased if more waves are required to resolve variations in water content within the unsaturated zone." +default = 40 + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nuzfcells", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "uzf id number for this entry" +description = "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.packagedata.fields.packagedata.item.fields.landflag] +type = "integer" +longname = "land flag" +description = "integer value set to one for land surface cells indicating that boundary conditions can be applied and data can be specified in the PERIOD block. A value of 0 specifies a non-land surface cell." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.ivertcon] +type = "integer" +longname = "vertical connection flag" +description = "integer value set to specify underlying UZF cell that receives water flowing to bottom of cell. If unsaturated zone flow reaches the water table before the cell bottom, then water is added to the GWF cell instead of flowing to the underlying UZF cell. A value of 0 indicates the UZF cell is not connected to an underlying UZF cell." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.surfdep] +type = "double" +longname = "surface depression depth" +description = "is the surface depression depth of the UZF cell." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.vks] +type = "double" +longname = "vertical saturated hydraulic conductivity" +description = "is the saturated vertical hydraulic conductivity of the UZF cell. This value is used with the Brooks-Corey function and the simulated water content to calculate the partially saturated hydraulic conductivity." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.thtr] +type = "double" +longname = "residual water content" +description = "is the residual (irreducible) water content of the UZF cell. This residual water is not available to plants and will not drain into underlying aquifer cells." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.thts] +type = "double" +longname = "saturated water content" +description = "is the saturated water content of the UZF cell. The values for saturated and residual water content should be set in a manner that is consistent with the specific yield value specified in the Storage Package. The saturated water content must be greater than the residual content." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.thti] +type = "double" +longname = "initial water content" +description = "is the initial water content of the UZF cell. The value must be greater than or equal to the residual water content and less than or equal to the saturated water content." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.eps] +type = "double" +longname = "Brooks-Corey exponent" +description = "is the exponent used in the Brooks-Corey function. The Brooks-Corey function is used by UZF to calculated hydraulic conductivity under partially saturated conditions as a function of water content and the user-specified saturated hydraulic conductivity." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the UZF cell cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.ifno] +type = "integer" +longname = "uzf id number for this entry" +description = "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once." +tagged = false + +[blocks.period.fields.perioddata.item.fields.finf] +type = "string" +longname = "infiltration rate" +description = "real or character value that defines the applied infiltration rate of the UZF cell ($LT^{-1}$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.pet] +type = "string" +longname = "potential ET rate" +description = "real or character value that defines the potential evapotranspiration rate of the UZF cell and specified GWF cell. Evapotranspiration is first removed from the unsaturated zone and any remaining potential evapotranspiration is applied to the saturated zone. If IVERTCON is greater than zero then residual potential evapotranspiration not satisfied in the UZF cell is applied to the underlying UZF and GWF cells. PET is always specified, but is only used if SIMULATE_ET is specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.extdp] +type = "string" +longname = "extinction depth" +description = "real or character value that defines the evapotranspiration extinction depth of the UZF cell. If IVERTCON is greater than zero and EXTDP extends below the GWF cell bottom then remaining potential evapotranspiration is applied to the underlying UZF and GWF cells. EXTDP is always specified, but is only used if SIMULATE_ET is specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.extwc] +type = "string" +longname = "extinction water content" +description = "real or character value that defines the evapotranspiration extinction water content of the UZF cell. EXTWC is always specified, but is only used if SIMULATE_ET and UNSAT_ETWC are specified in the OPTIONS block. The evapotranspiration rate from the unsaturated zone will be set to zero when the calculated water content is at or less than this value. The value for EXTWC cannot be less than the residual water content, and if it is specified as being less than the residual water content it is set to the residual water content. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.ha] +type = "string" +longname = "air entry potential" +description = "real or character value that defines the air entry potential (head) of the UZF cell. HA is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.hroot] +type = "string" +longname = "root potential" +description = "real or character value that defines the root potential (head) of the UZF cell. HROOT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.rootact] +type = "string" +longname = "root activity function" +description = "real or character value that defines the root activity function of the UZF cell. ROOTACT is the length of roots in a given volume of soil divided by that volume. Values range from 0 to about 3 $cm^{-2}$, depending on the plant community and its stage of development. ROOTACT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.perioddata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each UZF. The values of auxiliary variables must be present for each UZF. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[memory.nuzfcells] +set_in = "ar" +source = "nuzfcells" +type = "integer" + +[memory.ntrailwaves] +set_in = "ar" +source = "ntrailwaves" +type = "integer" + +[memory.nwavesets] +set_in = "ar" +source = "nwavesets" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.yaml new file mode 100644 index 00000000..7587a48f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-uzf.yaml @@ -0,0 +1,404 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-uzf +parent: gwf-nam +multi: true +subtype: advanced +dims: + nuzfcells: + value: nuzfcells + scope: model + ntrailwaves: + value: ntrailwaves + scope: model + nwavesets: + value: nwavesets + scope: model + auxiliary: + value: len(auxiliary) +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of GWF cell area used by UZF + cell. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of UZF cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of UZF information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of UZF flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that UZF flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + wc_filerecord: + type: record + optional: true + fields: + water_content: + type: file + longname: water_content keyword + description: keyword to specify that record corresponds to unsaturated zone water contents. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + package_convergence_filerecord: + type: record + optional: true + fields: + package_convergence: + type: file + longname: package_convergence keyword + description: keyword to specify that record corresponds to the package convergence comma spaced + values file. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the UZF Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + simulate_et: + type: keyword + description: keyword specifying that ET in the unsaturated (UZF) and saturated zones (GWF) will + be simulated. ET can be simulated in the UZF cell and not the GWF cell by omitting keywords + LINEAR_GWET and SQUARE_GWET. + optional: true + linear_gwet: + type: keyword + longname: use linear evapotranspiration + description: keyword specifying that groundwater ET will be simulated using the original ET formulation + of MODFLOW-2005. + optional: true + square_gwet: + type: keyword + longname: use square evapotranspiration + description: keyword specifying that groundwater ET will be simulated by assuming a constant ET + rate for groundwater levels between land surface (TOP) and land surface minus the ET extinction + depth (TOP-EXTDP). Groundwater ET is smoothly reduced from the PET rate to zero over a nominal + interval at TOP-EXTDP. + optional: true + simulate_gwseep: + type: keyword + longname: activate seepage + description: keyword specifying that groundwater discharge (GWSEEP) to land surface will be simulated. + Groundwater discharge is nonzero when groundwater head is greater than land surface. This option + is no longer recommended; a better approach is to use the Drain Package with discharge scaling + as a way to handle seepage to land surface. The Drain Package with discharge scaling is described + in Chapter 3 of the Supplemental Technical Information. + optional: true + unsat_etwc: + type: keyword + longname: use PET for theta greater than extwc + description: keyword specifying that ET in the unsaturated zone will be simulated as a function + of the specified PET rate while the water content (THETA) is greater than the ET extinction + water content (EXTWC). + optional: true + unsat_etae: + type: keyword + longname: use root potential + description: keyword specifying that ET in the unsaturated zone will be simulated using a capillary + pressure based formulation. Capillary pressure is calculated using the Brooks-Corey retention + function. + optional: true + dimensions: + fields: + nuzfcells: + type: integer + longname: number of UZF cells + description: is the number of UZF cells. More than one UZF cell can be assigned to a GWF cell; + however, only one GWF cell can be assigned to a single UZF cell. If more than one UZF cell is + assigned to a GWF cell, then an auxiliary variable should be used to reduce the surface area + of the UZF cell with the AUXMULTNAME option. + ntrailwaves: + type: integer + longname: number of trailing waves + description: is the number of trailing waves. A recommended value of 7 can be used for NTRAILWAVES. This + value can be increased to lower mass balance error in the unsaturated zone. + default: 7 + nwavesets: + type: integer + longname: number of wave sets + description: is the number of wave sets. A recommended value of 40 can be used for NWAVESETS. This + value can be increased if more waves are required to resolve variations in water content within + the unsaturated zone. + default: 40 + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: uzf id number for this entry + description: integer value that defines the feature (UZF object) number associated with + the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than + or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program + will terminate with an error. The program will also terminate with an error if information + for a UZF cell is specified more than once. + tagged: false + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + landflag: + type: integer + longname: land flag + description: integer value set to one for land surface cells indicating that boundary conditions + can be applied and data can be specified in the PERIOD block. A value of 0 specifies a + non-land surface cell. + tagged: false + ivertcon: + type: integer + longname: vertical connection flag + description: integer value set to specify underlying UZF cell that receives water flowing + to bottom of cell. If unsaturated zone flow reaches the water table before the cell bottom, + then water is added to the GWF cell instead of flowing to the underlying UZF cell. A value + of 0 indicates the UZF cell is not connected to an underlying UZF cell. + tagged: false + surfdep: + type: double + longname: surface depression depth + description: is the surface depression depth of the UZF cell. + tagged: false + vks: + type: double + longname: vertical saturated hydraulic conductivity + description: is the saturated vertical hydraulic conductivity of the UZF cell. This value + is used with the Brooks-Corey function and the simulated water content to calculate the + partially saturated hydraulic conductivity. + tagged: false + thtr: + type: double + longname: residual water content + description: is the residual (irreducible) water content of the UZF cell. This residual + water is not available to plants and will not drain into underlying aquifer cells. + tagged: false + thts: + type: double + longname: saturated water content + description: is the saturated water content of the UZF cell. The values for saturated and + residual water content should be set in a manner that is consistent with the specific + yield value specified in the Storage Package. The saturated water content must be greater + than the residual content. + tagged: false + thti: + type: double + longname: initial water content + description: is the initial water content of the UZF cell. The value must be greater than + or equal to the residual water content and less than or equal to the saturated water content. + tagged: false + eps: + type: double + longname: Brooks-Corey exponent + description: is the exponent used in the Brooks-Corey function. The Brooks-Corey function + is used by UZF to calculated hydraulic conductivity under partially saturated conditions + as a function of water content and the user-specified saturated hydraulic conductivity. + tagged: false + boundname: + type: string + longname: well name + description: name of the UZF cell cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nuzfcells + period: + fields: + perioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: uzf id number for this entry + description: integer value that defines the feature (UZF object) number associated with + the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than + or equal to NUZFCELLS. UZF information must be specified for every UZF cell or the program + will terminate with an error. The program will also terminate with an error if information + for a UZF cell is specified more than once. + tagged: false + finf: + type: string + longname: infiltration rate + description: real or character value that defines the applied infiltration rate of the UZF + cell ($LT^{-1}$). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + pet: + type: string + longname: potential ET rate + description: real or character value that defines the potential evapotranspiration rate + of the UZF cell and specified GWF cell. Evapotranspiration is first removed from the unsaturated + zone and any remaining potential evapotranspiration is applied to the saturated zone. + If IVERTCON is greater than zero then residual potential evapotranspiration not satisfied + in the UZF cell is applied to the underlying UZF and GWF cells. PET is always specified, + but is only used if SIMULATE_ET is specified in the OPTIONS block. If the Options block + includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be + obtained from a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + extdp: + type: string + longname: extinction depth + description: real or character value that defines the evapotranspiration extinction depth + of the UZF cell. If IVERTCON is greater than zero and EXTDP extends below the GWF cell + bottom then remaining potential evapotranspiration is applied to the underlying UZF and + GWF cells. EXTDP is always specified, but is only used if SIMULATE_ET is specified in + the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + extwc: + type: string + longname: extinction water content + description: real or character value that defines the evapotranspiration extinction water + content of the UZF cell. EXTWC is always specified, but is only used if SIMULATE_ET and + UNSAT_ETWC are specified in the OPTIONS block. The evapotranspiration rate from the unsaturated + zone will be set to zero when the calculated water content is at or less than this value. The + value for EXTWC cannot be less than the residual water content, and if it is specified + as being less than the residual water content it is set to the residual water content. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + ha: + type: string + longname: air entry potential + description: real or character value that defines the air entry potential (head) of the + UZF cell. HA is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified + in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + hroot: + type: string + longname: root potential + description: real or character value that defines the root potential (head) of the UZF cell. + HROOT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE are specified + in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + rootact: + type: string + longname: root activity function + description: real or character value that defines the root activity function of the UZF + cell. ROOTACT is the length of roots in a given volume of soil divided by that volume. + Values range from 0 to about 3 $cm^{-2}$, depending on the plant community and its stage + of development. ROOTACT is always specified, but is only used if SIMULATE_ET and UNSAT_ETAE + are specified in the OPTIONS block. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each UZF. The values of + auxiliary variables must be present for each UZF. The values must be specified in the + order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary +memory: + nuzfcells: + set_in: ar + source: nuzfcells + type: integer + ntrailwaves: + set_in: ar + source: ntrailwaves + type: integer + nwavesets: + set_in: ar + source: nwavesets + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.json new file mode 100644 index 00000000..568d137d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.json @@ -0,0 +1,145 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-vsc", + "parent": "gwf-nam", + "dims": { + "nviscspecies": { + "value": "nviscspecies", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "viscref": { + "type": "double", + "longname": "reference viscosity", + "description": "fluid reference viscosity used in the equation of state. This value is set to 1.0 if not specified as an option.", + "optional": true, + "default": 1.0 + }, + "temperature_species_name": { + "type": "string", + "longname": "auxspeciesname that corresponds to temperature", + "description": "string used to identify the auxspeciesname in PACKAGEDATA that corresponds to the temperature species. There can be only one occurrence of this temperature species name in the PACKAGEDATA block or the program will terminate with an error. This value has no effect if viscosity does not depend on temperature.", + "optional": true + }, + "thermal_formulation": { + "type": "string", + "longname": "keyword to specify viscosity formulation for the temperature species", + "description": "may be used for specifying which viscosity formulation to use for the temperature species. Can be either LINEAR or NONLINEAR. The LINEAR viscosity formulation is the default.", + "optional": true, + "valid": [ + "linear", + "nonlinear" + ] + }, + "thermal_a2": { + "type": "double", + "longname": "coefficient used in nonlinear viscosity function", + "description": "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A2 is not specified, a default value of 10.0 is assigned (Voss, 1984).", + "optional": true, + "default": 10.0 + }, + "thermal_a3": { + "type": "double", + "longname": "coefficient used in nonlinear viscosity function", + "description": "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A3 is not specified, a default value of 248.37 is assigned (Voss, 1984).", + "optional": true, + "default": 248.37 + }, + "thermal_a4": { + "type": "double", + "longname": "coefficient used in nonlinear viscosity function", + "description": "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A4 is not specified, a default value of 133.15 is assigned (Voss, 1984).", + "optional": true, + "default": 133.15 + }, + "viscosity_filerecord": { + "type": "record", + "optional": true, + "fields": { + "viscosity": { + "type": "file", + "longname": "viscosity keyword", + "description": "keyword to specify that record corresponds to viscosity.", + "mode": "fileout" + } + } + } + } + }, + "dimensions": { + "fields": { + "nviscspecies": { + "type": "integer", + "longname": "number of species used in viscosity equation of state", + "description": "number of species used in the viscosity equation of state. If either concentrations or temperature (or both) are used to update viscosity then nviscspecies needs to be at least one." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "iviscspec": { + "type": "integer", + "longname": "species number for this entry", + "description": "integer value that defines the species number associated with the specified PACKAGEDATA data entered on each line. IVISCSPECIES must be greater than zero and less than or equal to NVISCSPECIES. Information must be specified for each of the NVISCSPECIES species or the program will terminate with an error. The program will also terminate with an error if information for a species is specified more than once.", + "tagged": false + }, + "dviscdc": { + "type": "double", + "longname": "slope of the line that defines the linear relationship between viscosity and temperature or between viscosity and concentration, depending on the type of species entered on each line.", + "description": "real value that defines the slope of the line defining the linear relationship between viscosity and temperature or between viscosity and concentration, depending on the type of species entered on each line. If the value of AUXSPECIESNAME entered on a line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), this value will be used when VISCOSITY_FUNC is equal to LINEAR (the default) in the OPTIONS block. When VISCOSITY_FUNC is set to NONLINEAR, a value for DVISCDC must be specified though it is not used.", + "tagged": false + }, + "cviscref": { + "type": "double", + "longname": "reference temperature value or reference concentration value", + "description": "real value that defines the reference temperature or reference concentration value used for this species in the viscosity equation of state. If AUXSPECIESNAME entered on a line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), then CVISCREF refers to a reference temperature, otherwise it refers to a reference concentration.", + "tagged": false + }, + "modelname": { + "type": "string", + "longname": "modelname", + "description": "name of a GWT or GWE model used to simulate a species that will be used in the viscosity equation of state. This name will have no effect if the simulation does not include a GWT or GWE model that corresponds to this GWF model.", + "tagged": false + }, + "auxspeciesname": { + "type": "string", + "longname": "auxspeciesname", + "description": "name of an auxiliary variable in a GWF stress package that will be used for this species to calculate the viscosity values. If a viscosity value is needed by the Viscosity Package then it will use the temperature or concentration values associated with this AUXSPECIESNAME in the viscosity equation of state. For advanced stress packages (LAK, SFR, MAW, and UZF) that have an associated advanced transport package (LKT, SFT, MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME option in the advanced transport package can be used to transfer simulated temperature or concentration(s) into the flow package auxiliary variable. In this manner, the Viscosity Package can calculate viscosity values for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells using simulated concentrations.", + "tagged": false + } + } + }, + "shape": [ + "nviscspecies" + ] + } + } + } + }, + "memory": { + "temp_specname": { + "set_in": "ar", + "source": "temperature_species_name", + "type": "string" + }, + "thermal_form": { + "set_in": "ar", + "source": "thermal_formulation", + "type": "string" + }, + "nviscspecies": { + "set_in": "ar", + "source": "nviscspecies", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.toml new file mode 100644 index 00000000..6c1e10b3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.toml @@ -0,0 +1,121 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-vsc" +parent = "gwf-nam" + +[dims.nviscspecies] +value = "nviscspecies" +scope = "model" + +[blocks.options.fields.viscref] +type = "double" +longname = "reference viscosity" +description = "fluid reference viscosity used in the equation of state. This value is set to 1.0 if not specified as an option." +optional = true +default = 1.0 + +[blocks.options.fields.temperature_species_name] +type = "string" +longname = "auxspeciesname that corresponds to temperature" +description = "string used to identify the auxspeciesname in PACKAGEDATA that corresponds to the temperature species. There can be only one occurrence of this temperature species name in the PACKAGEDATA block or the program will terminate with an error. This value has no effect if viscosity does not depend on temperature." +optional = true + +[blocks.options.fields.thermal_formulation] +type = "string" +longname = "keyword to specify viscosity formulation for the temperature species" +description = "may be used for specifying which viscosity formulation to use for the temperature species. Can be either LINEAR or NONLINEAR. The LINEAR viscosity formulation is the default." +optional = true +valid = [ + "linear", + "nonlinear", +] + +[blocks.options.fields.thermal_a2] +type = "double" +longname = "coefficient used in nonlinear viscosity function" +description = "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A2 is not specified, a default value of 10.0 is assigned (Voss, 1984)." +optional = true +default = 10.0 + +[blocks.options.fields.thermal_a3] +type = "double" +longname = "coefficient used in nonlinear viscosity function" +description = "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A3 is not specified, a default value of 248.37 is assigned (Voss, 1984)." +optional = true +default = 248.37 + +[blocks.options.fields.thermal_a4] +type = "double" +longname = "coefficient used in nonlinear viscosity function" +description = "is an empirical parameter specified by the user for calculating viscosity using a nonlinear formulation. If A4 is not specified, a default value of 133.15 is assigned (Voss, 1984)." +optional = true +default = 133.15 + +[blocks.options.fields.viscosity_filerecord] +type = "record" +optional = true + +[blocks.options.fields.viscosity_filerecord.fields.viscosity] +type = "file" +longname = "viscosity keyword" +description = "keyword to specify that record corresponds to viscosity." +mode = "fileout" + +[blocks.dimensions.fields.nviscspecies] +type = "integer" +longname = "number of species used in viscosity equation of state" +description = "number of species used in the viscosity equation of state. If either concentrations or temperature (or both) are used to update viscosity then nviscspecies needs to be at least one." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nviscspecies", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.iviscspec] +type = "integer" +longname = "species number for this entry" +description = "integer value that defines the species number associated with the specified PACKAGEDATA data entered on each line. IVISCSPECIES must be greater than zero and less than or equal to NVISCSPECIES. Information must be specified for each of the NVISCSPECIES species or the program will terminate with an error. The program will also terminate with an error if information for a species is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.dviscdc] +type = "double" +longname = "slope of the line that defines the linear relationship between viscosity and temperature or between viscosity and concentration, depending on the type of species entered on each line." +description = "real value that defines the slope of the line defining the linear relationship between viscosity and temperature or between viscosity and concentration, depending on the type of species entered on each line. If the value of AUXSPECIESNAME entered on a line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), this value will be used when VISCOSITY_FUNC is equal to LINEAR (the default) in the OPTIONS block. When VISCOSITY_FUNC is set to NONLINEAR, a value for DVISCDC must be specified though it is not used." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.cviscref] +type = "double" +longname = "reference temperature value or reference concentration value" +description = "real value that defines the reference temperature or reference concentration value used for this species in the viscosity equation of state. If AUXSPECIESNAME entered on a line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), then CVISCREF refers to a reference temperature, otherwise it refers to a reference concentration." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.modelname] +type = "string" +longname = "modelname" +description = "name of a GWT or GWE model used to simulate a species that will be used in the viscosity equation of state. This name will have no effect if the simulation does not include a GWT or GWE model that corresponds to this GWF model." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.auxspeciesname] +type = "string" +longname = "auxspeciesname" +description = "name of an auxiliary variable in a GWF stress package that will be used for this species to calculate the viscosity values. If a viscosity value is needed by the Viscosity Package then it will use the temperature or concentration values associated with this AUXSPECIESNAME in the viscosity equation of state. For advanced stress packages (LAK, SFR, MAW, and UZF) that have an associated advanced transport package (LKT, SFT, MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME option in the advanced transport package can be used to transfer simulated temperature or concentration(s) into the flow package auxiliary variable. In this manner, the Viscosity Package can calculate viscosity values for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells using simulated concentrations." +tagged = false + +[memory.temp_specname] +set_in = "ar" +source = "temperature_species_name" +type = "string" + +[memory.thermal_form] +set_in = "ar" +source = "thermal_formulation" +type = "string" + +[memory.nviscspecies] +set_in = "ar" +source = "nviscspecies" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.yaml new file mode 100644 index 00000000..3e3bf6b5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-vsc.yaml @@ -0,0 +1,148 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-vsc +parent: gwf-nam +dims: + nviscspecies: + value: nviscspecies + scope: model +blocks: + options: + fields: + viscref: + type: double + longname: reference viscosity + description: fluid reference viscosity used in the equation of state. This value is set to 1.0 + if not specified as an option. + optional: true + default: 1.0 + temperature_species_name: + type: string + longname: auxspeciesname that corresponds to temperature + description: string used to identify the auxspeciesname in PACKAGEDATA that corresponds to the + temperature species. There can be only one occurrence of this temperature species name in the + PACKAGEDATA block or the program will terminate with an error. This value has no effect if + viscosity does not depend on temperature. + optional: true + thermal_formulation: + type: string + longname: keyword to specify viscosity formulation for the temperature species + description: may be used for specifying which viscosity formulation to use for the temperature + species. Can be either LINEAR or NONLINEAR. The LINEAR viscosity formulation is the default. + optional: true + valid: + - linear + - nonlinear + thermal_a2: + type: double + longname: coefficient used in nonlinear viscosity function + description: is an empirical parameter specified by the user for calculating viscosity using a + nonlinear formulation. If A2 is not specified, a default value of 10.0 is assigned (Voss, 1984). + optional: true + default: 10.0 + thermal_a3: + type: double + longname: coefficient used in nonlinear viscosity function + description: is an empirical parameter specified by the user for calculating viscosity using a + nonlinear formulation. If A3 is not specified, a default value of 248.37 is assigned (Voss, + 1984). + optional: true + default: 248.37 + thermal_a4: + type: double + longname: coefficient used in nonlinear viscosity function + description: is an empirical parameter specified by the user for calculating viscosity using a + nonlinear formulation. If A4 is not specified, a default value of 133.15 is assigned (Voss, + 1984). + optional: true + default: 133.15 + viscosity_filerecord: + type: record + optional: true + fields: + viscosity: + type: file + longname: viscosity keyword + description: keyword to specify that record corresponds to viscosity. + mode: fileout + dimensions: + fields: + nviscspecies: + type: integer + longname: number of species used in viscosity equation of state + description: number of species used in the viscosity equation of state. If either concentrations + or temperature (or both) are used to update viscosity then nviscspecies needs to be at least + one. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + iviscspec: + type: integer + longname: species number for this entry + description: integer value that defines the species number associated with the specified + PACKAGEDATA data entered on each line. IVISCSPECIES must be greater than zero and less + than or equal to NVISCSPECIES. Information must be specified for each of the NVISCSPECIES + species or the program will terminate with an error. The program will also terminate + with an error if information for a species is specified more than once. + tagged: false + dviscdc: + type: double + longname: slope of the line that defines the linear relationship between viscosity and temperature + or between viscosity and concentration, depending on the type of species entered on each + line. + description: real value that defines the slope of the line defining the linear relationship + between viscosity and temperature or between viscosity and concentration, depending on + the type of species entered on each line. If the value of AUXSPECIESNAME entered on a + line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), this value will be + used when VISCOSITY_FUNC is equal to LINEAR (the default) in the OPTIONS block. When + VISCOSITY_FUNC is set to NONLINEAR, a value for DVISCDC must be specified though it is + not used. + tagged: false + cviscref: + type: double + longname: reference temperature value or reference concentration value + description: real value that defines the reference temperature or reference concentration + value used for this species in the viscosity equation of state. If AUXSPECIESNAME entered + on a line corresponds to TEMPERATURE_SPECIES_NAME (in the OPTIONS block), then CVISCREF + refers to a reference temperature, otherwise it refers to a reference concentration. + tagged: false + modelname: + type: string + longname: modelname + description: name of a GWT or GWE model used to simulate a species that will be used in + the viscosity equation of state. This name will have no effect if the simulation does + not include a GWT or GWE model that corresponds to this GWF model. + tagged: false + auxspeciesname: + type: string + longname: auxspeciesname + description: name of an auxiliary variable in a GWF stress package that will be used for + this species to calculate the viscosity values. If a viscosity value is needed by the + Viscosity Package then it will use the temperature or concentration values associated + with this AUXSPECIESNAME in the viscosity equation of state. For advanced stress packages + (LAK, SFR, MAW, and UZF) that have an associated advanced transport package (LKT, SFT, + MWT, and UZT), the FLOW_PACKAGE_AUXILIARY_NAME option in the advanced transport package + can be used to transfer simulated temperature or concentration(s) into the flow package + auxiliary variable. In this manner, the Viscosity Package can calculate viscosity values + for lakes, streams, multi-aquifer wells, and unsaturated zone flow cells using simulated + concentrations. + tagged: false + shape: + - nviscspecies +memory: + temp_specname: + set_in: ar + source: temperature_species_name + type: string + thermal_form: + set_in: ar + source: thermal_formulation + type: string + nviscspecies: + set_in: ar + source: nviscspecies + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json new file mode 100644 index 00000000..04784a1d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json @@ -0,0 +1,324 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-wel", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of well flow rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of well cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of well information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "auto_flow_reduce": { + "type": "double", + "longname": "cell fractional thickness for reduced pumping", + "description": "keyword and real value that defines the fraction of the cell thickness used as an interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative value when the head in the cell is equal to or less than the calculated interval above the cell bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells marked as confined (ICELLTYPE = 0).", + "optional": true + }, + "afrcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "auto_flow_reduce_csv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option in which a new record is written for each well and for each time step in which the user-requested extraction rate is reduced by the program.", + "mode": "fileout" + } + } + }, + "flow_reduction_length": { + "type": "keyword", + "longname": "flow reduction length keyword", + "description": "keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value specified in the options block is less than or equal to zero.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the Well Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of wells", + "description": "integer value specifying the maximum number of wells cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "q": { + "type": "double", + "longname": "well rate", + "description": "is the volumetric well rate. A positive value indicates recharge (injection) and a negative value indicates discharge (extraction). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "flowred": { + "set_in": "ar", + "source": "auto_flow_reduce", + "type": "double" + }, + "afrcsv": { + "set_in": "ar", + "source": "auto_flow_reduce_csv", + "type": "logical" + }, + "iflowredlen": { + "set_in": "ar", + "source": "flow_reduction_length", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: q.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "WEL", + "output": "ipakcb", + "obs_type": "WEL", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "WEL-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml new file mode 100644 index 00000000..deea7a20 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml @@ -0,0 +1,296 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-wel" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of well flow rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of well cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of well information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.auto_flow_reduce] +type = "double" +longname = "cell fractional thickness for reduced pumping" +description = "keyword and real value that defines the fraction of the cell thickness used as an interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative value when the head in the cell is equal to or less than the calculated interval above the cell bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells marked as confined (ICELLTYPE = 0)." +optional = true + +[blocks.options.fields.afrcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.afrcsv_filerecord.fields.auto_flow_reduce_csv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option in which a new record is written for each well and for each time step in which the user-requested extraction rate is reduced by the program." +mode = "fileout" + +[blocks.options.fields.flow_reduction_length] +type = "keyword" +longname = "flow reduction length keyword" +description = "keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value specified in the options block is less than or equal to zero." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the Well Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of wells" +description = "integer value specifying the maximum number of wells cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.q] +type = "double" +longname = "well rate" +description = "is the volumetric well rate. A positive value indicates recharge (injection) and a negative value indicates discharge (extraction). If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.flowred] +set_in = "ar" +source = "auto_flow_reduce" +type = "double" + +[memory.afrcsv] +set_in = "ar" +source = "auto_flow_reduce_csv" +type = "logical" + +[memory.iflowredlen] +set_in = "ar" +source = "flow_reduction_length" +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: q." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "WEL" +output = "ipakcb" +obs_type = "WEL" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "WEL-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml new file mode 100644 index 00000000..273fb55c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml @@ -0,0 +1,295 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-wel +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of well flow rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of well cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of well information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of well flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that well flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + auto_flow_reduce: + type: double + longname: cell fractional thickness for reduced pumping + description: keyword and real value that defines the fraction of the cell thickness used as an + interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than + or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative + value when the head in the cell is equal to or less than the calculated interval above the cell + bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. + By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE + option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) + in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells + marked as confined (ICELLTYPE = 0). + optional: true + afrcsv_filerecord: + type: record + optional: true + fields: + auto_flow_reduce_csv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option + in which a new record is written for each well and for each time step in which the user-requested + extraction rate is reduced by the program. + mode: fileout + flow_reduction_length: + type: keyword + longname: flow reduction length keyword + description: keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction + of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified + but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate + with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value + specified in the options block is less than or equal to zero. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the Well Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of wells + description: integer value specifying the maximum number of wells cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + q: + type: double + longname: well rate + description: is the volumetric well rate. A positive value indicates recharge (injection) + and a negative value indicates discharge (extraction). If the Options block includes a + TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from + a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each well. The values + of auxiliary variables must be present for each well. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the well cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + flowred: + set_in: ar + source: auto_flow_reduce + type: double + afrcsv: + set_in: ar + source: auto_flow_reduce_csv + type: logical + iflowredlen: + set_in: ar + source: flow_reduction_length + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: q.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: WEL + output: ipakcb + obs_type: WEL + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: WEL-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json new file mode 100644 index 00000000..70d0b7c5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json @@ -0,0 +1,302 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwf-welg", + "parent": "gwf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "readarraygrid": { + "type": "keyword", + "longname": "use array-based grid input", + "description": "indicates that array-based grid input will be used for the well boundary package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30).", + "default": "true", + "developmode": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of well flow rate.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of well information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "auto_flow_reduce": { + "type": "double", + "longname": "cell fractional thickness for reduced pumping", + "description": "keyword and real value that defines the fraction of the cell thickness used as an interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative value when the head in the cell is equal to or less than the calculated interval above the cell bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells marked as confined (ICELLTYPE = 0).", + "optional": true + }, + "afrcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "auto_flow_reduce_csv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option in which a new record is written for each well and for each time step in which the user-requested extraction rate is reduced by the program.", + "mode": "fileout" + } + } + }, + "flow_reduction_length": { + "type": "keyword", + "longname": "flow reduction length keyword", + "description": "keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value specified in the options block is less than or equal to zero.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the Well Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of wells in any stress period", + "description": "integer value specifying the maximum number of wells cells that will be specified for use during any stress period.", + "optional": true + } + } + }, + "period": { + "fields": { + "q": { + "type": "array", + "longname": "well rate", + "description": "is the volumetric well rate. A positive value indicates recharge (injection) and a negative value indicates discharge (extraction).", + "default": 3e+30, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "aux": { + "type": "array", + "longname": "well auxiliary variable iaux", + "description": "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the well rate array will be multiplied by this array.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "flowred": { + "set_in": "ar", + "source": "auto_flow_reduce", + "type": "double" + }, + "afrcsv": { + "set_in": "ar", + "source": "auto_flow_reduce_csv", + "type": "logical" + }, + "iflowredlen": { + "set_in": "ar", + "source": "flow_reduction_length", + "type": "integer" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "WEL", + "output": "ipakcb", + "obs_type": "WEL", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "WEL-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml new file mode 100644 index 00000000..297973cc --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml @@ -0,0 +1,278 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwf-welg" +parent = "gwf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.readarraygrid] +type = "keyword" +longname = "use array-based grid input" +description = "indicates that array-based grid input will be used for the well boundary package. This keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values must be provided for every cell within a model grid, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30)." +default = "true" +developmode = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of well flow rate." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of well information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.auto_flow_reduce] +type = "double" +longname = "cell fractional thickness for reduced pumping" +description = "keyword and real value that defines the fraction of the cell thickness used as an interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative value when the head in the cell is equal to or less than the calculated interval above the cell bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells marked as confined (ICELLTYPE = 0)." +optional = true + +[blocks.options.fields.afrcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.afrcsv_filerecord.fields.auto_flow_reduce_csv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option in which a new record is written for each well and for each time step in which the user-requested extraction rate is reduced by the program." +mode = "fileout" + +[blocks.options.fields.flow_reduction_length] +type = "keyword" +longname = "flow reduction length keyword" +description = "keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value specified in the options block is less than or equal to zero." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the Well Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of wells in any stress period" +description = "integer value specifying the maximum number of wells cells that will be specified for use during any stress period." +optional = true + +[blocks.period.fields.q] +type = "array" +longname = "well rate" +description = "is the volumetric well rate. A positive value indicates recharge (injection) and a negative value indicates discharge (extraction)." +default = 3e+30 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.period.fields.aux] +type = "array" +longname = "well auxiliary variable iaux" +description = "is an array of values for auxiliary variable aux(iaux), where iaux is a value from 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array can be specified for each auxiliary variable. If the value specified here for the auxiliary variable is the same as auxmultname, then the well rate array will be multiplied by this array." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.flowred] +set_in = "ar" +source = "auto_flow_reduce" +type = "double" + +[memory.afrcsv] +set_in = "ar" +source = "auto_flow_reduce_csv" +type = "logical" + +[memory.iflowredlen] +set_in = "ar" +source = "flow_reduction_length" +type = "integer" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "WEL" +output = "ipakcb" +obs_type = "WEL" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "WEL-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml new file mode 100644 index 00000000..5c28a770 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml @@ -0,0 +1,277 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwf-welg +parent: gwf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + readarraygrid: + type: keyword + longname: use array-based grid input + description: indicates that array-based grid input will be used for the well boundary package. This + keyword must be specified to use array-based grid input. When READARRAYGRID is specified, values + must be provided for every cell within a model grid, even those cells that have an IDOMAIN value + less than one. Values assigned to cells with IDOMAIN values less than one are not used and + have no effect on simulation results. No data cells should contain the value DNODATA (3.0E+30). + default: 'true' + developmode: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of well flow rate. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of well information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of well flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that well flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + auto_flow_reduce: + type: double + longname: cell fractional thickness for reduced pumping + description: keyword and real value that defines the fraction of the cell thickness used as an + interval for smoothly adjusting negative pumping rates to 0 in cells with head values less than + or equal to the bottom of the cell. Negative pumping rates are adjusted to 0 or a smaller negative + value when the head in the cell is equal to or less than the calculated interval above the cell + bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. + By default, negative pumping rates are not reduced during a simulation. This AUTO_FLOW_REDUCE + option only applies to wells in model cells that are marked as 'convertible' (ICELLTYPE /= 0) + in the Node Property Flow (NPF) input file. Reduction in flow will not occur for wells in cells + marked as confined (ICELLTYPE = 0). + optional: true + afrcsv_filerecord: + type: record + optional: true + fields: + auto_flow_reduce_csv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the AUTO_FLOW_REDUCE output option + in which a new record is written for each well and for each time step in which the user-requested + extraction rate is reduced by the program. + mode: fileout + flow_reduction_length: + type: keyword + longname: flow reduction length keyword + description: keyword that indicates the AUTO_FLOW_REDUCE value is a length instead of a fraction + of the cell thickness. A warning will be issued if the FLOW_REDUCTION_LENGTH option is specified + but the AUTO_FLOW_REDUCE option is not specified in the options block. The program will terminate + with an error if the FLOW_REDUCTION_LENGTH option is specified and the AUTO_FLOW_REDUCE value + specified in the options block is less than or equal to zero. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the Well Package can be used with the Water + Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within + the package to store the available, provided, and received water. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of wells in any stress period + description: integer value specifying the maximum number of wells cells that will be specified + for use during any stress period. + optional: true + period: + fields: + q: + type: array + longname: well rate + description: is the volumetric well rate. A positive value indicates recharge (injection) and + a negative value indicates discharge (extraction). + default: 3.0e+30 + netcdf: true + dtype: double + shape: + - nodes + aux: + type: array + longname: well auxiliary variable iaux + description: is an array of values for auxiliary variable aux(iaux), where iaux is a value from + 1 to naux, and aux(iaux) must be listed as part of the auxiliary variables. A separate array + can be specified for each auxiliary variable. If the value specified here for the auxiliary + variable is the same as auxmultname, then the well rate array will be multiplied by this array. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + flowred: + set_in: ar + source: auto_flow_reduce + type: double + afrcsv: + set_in: ar + source: auto_flow_reduce_csv + type: logical + iflowredlen: + set_in: ar + source: flow_reduction_length + type: integer + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: WEL + output: ipakcb + obs_type: WEL + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: WEL-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.json new file mode 100644 index 00000000..ab992b07 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.json @@ -0,0 +1,30 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-adv", + "parent": "gwt-nam", + "blocks": { + "options": { + "fields": { + "scheme": { + "type": "string", + "longname": "advective scheme", + "description": "scheme used to solve the advection term. Can be upstream, central, TVD or UTVD. If not specified, upstream weighting is the default weighting scheme.", + "optional": true, + "valid": [ + "central", + "upstream", + "tvd", + "utvd" + ] + }, + "ats_percel": { + "type": "double", + "longname": "fractional cell distance used for time step calculation", + "description": "fractional cell distance submitted by the ADV Package to the adaptive time stepping (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation will be made for each cell based on flow through the cell and cell properties. The largest time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is not exceeded for any active cell in the grid. This time-step constraint will be submitted to the ATS Package, perhaps with constraints submitted by other packages, in the calculation of the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL the program will automatically reset it to an internal no data value to indicate that time steps should not be subject to this constraint.", + "optional": true + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.toml new file mode 100644 index 00000000..18bfa473 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.toml @@ -0,0 +1,22 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-adv" +parent = "gwt-nam" + +[blocks.options.fields.scheme] +type = "string" +longname = "advective scheme" +description = "scheme used to solve the advection term. Can be upstream, central, TVD or UTVD. If not specified, upstream weighting is the default weighting scheme." +optional = true +valid = [ + "central", + "upstream", + "tvd", + "utvd", +] + +[blocks.options.fields.ats_percel] +type = "double" +longname = "fractional cell distance used for time step calculation" +description = "fractional cell distance submitted by the ADV Package to the adaptive time stepping (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation will be made for each cell based on flow through the cell and cell properties. The largest time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is not exceeded for any active cell in the grid. This time-step constraint will be submitted to the ATS Package, perhaps with constraints submitted by other packages, in the calculation of the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL the program will automatically reset it to an internal no data value to indicate that time steps should not be subject to this constraint." +optional = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.yaml new file mode 100644 index 00000000..ba5341f2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-adv.yaml @@ -0,0 +1,31 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-adv +parent: gwt-nam +blocks: + options: + fields: + scheme: + type: string + longname: advective scheme + description: scheme used to solve the advection term. Can be upstream, central, TVD or UTVD. If + not specified, upstream weighting is the default weighting scheme. + optional: true + valid: + - central + - upstream + - tvd + - utvd + ats_percel: + type: double + longname: fractional cell distance used for time step calculation + description: fractional cell distance submitted by the ADV Package to the adaptive time stepping + (ATS) package. If ATS_PERCEL is specified and the ATS Package is active, a time step calculation + will be made for each cell based on flow through the cell and cell properties. The largest + time step will be calculated such that the advective fractional cell distance (ATS_PERCEL) is + not exceeded for any active cell in the grid. This time-step constraint will be submitted to + the ATS Package, perhaps with constraints submitted by other packages, in the calculation of + the time step. ATS_PERCEL must be greater than zero. If a value of zero is specified for ATS_PERCEL + the program will automatically reset it to an internal no data value to indicate that time steps + should not be subject to this constraint. + optional: true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.json new file mode 100644 index 00000000..434e5661 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.json @@ -0,0 +1,90 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-api", + "parent": "gwt-nam", + "multi": true, + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of api boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of api boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of api boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save api flows to budget file", + "description": "keyword to indicate that api boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "mover": { + "type": "keyword", + "description": "keyword to indicate that this instance of the api boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of user-defined api boundaries", + "description": "integer value specifying the maximum number of api boundary cells that will be specified for use during any stress period." + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "maxbound": { + "set_in": "ar", + "source": "maxbound", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.toml new file mode 100644 index 00000000..05e0b370 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.toml @@ -0,0 +1,72 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-api" +parent = "gwt-nam" +multi = true + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of api boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of api boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of api boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save api flows to budget file" +description = "keyword to indicate that api boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.mover] +type = "keyword" +description = "keyword to indicate that this instance of the api boundary Package can be used with the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated within the package to store the available, provided, and received water." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of user-defined api boundaries" +description = "integer value specifying the maximum number of api boundary cells that will be specified for use during any stress period." + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.maxbound] +set_in = "ar" +source = "maxbound" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.yaml new file mode 100644 index 00000000..aa6c43d5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-api.yaml @@ -0,0 +1,76 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-api +parent: gwt-nam +multi: true +dims: + maxbound: + value: maxbound + scope: model +blocks: + options: + fields: + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of api boundary + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of api boundary information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of api boundary flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save api flows to budget file + description: keyword to indicate that api boundary flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + mover: + type: keyword + description: keyword to indicate that this instance of the api boundary Package can be used with + the Water Mover (MVR) Package. When the MOVER option is specified, additional memory is allocated + within the package to store the available, provided, and received water. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of user-defined api boundaries + description: integer value specifying the maximum number of api boundary cells that will be specified + for use during any stress period. +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + type: integer + maxbound: + set_in: ar + source: maxbound + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json new file mode 100644 index 00000000..456cafeb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json @@ -0,0 +1,283 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-cnc", + "parent": "gwt-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of concentration value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant concentration cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant concentration information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of constant concentration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save constant concentration flows to budget file", + "description": "keyword to indicate that constant concentration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "time series keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant concentrations", + "description": "integer value specifying the maximum number of constant concentrations cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "conc": { + "type": "double", + "longname": "constant concentration value", + "description": "is the constant concentration value. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant concentration. The values of auxiliary variables must be present for each constant concentration. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant concentration name", + "description": "name of the constant concentration cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprflow": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "iprpak": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "tspvar": { + "set_in": "ad", + "source": "conc", + "type": "double" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: conc.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CNC", + "output": "ipakcb", + "obs_type": "CNC", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml new file mode 100644 index 00000000..63302294 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml @@ -0,0 +1,257 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-cnc" +parent = "gwt-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of concentration value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant concentration cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant concentration information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of constant concentration flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save constant concentration flows to budget file" +description = "keyword to indicate that constant concentration flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "time series keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant concentrations" +description = "integer value specifying the maximum number of constant concentrations cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.conc] +type = "double" +longname = "constant concentration value" +description = "is the constant concentration value. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant concentration. The values of auxiliary variables must be present for each constant concentration. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant concentration name" +description = "name of the constant concentration cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprflow] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.iprpak] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.tspvar] +set_in = "ad" +source = "conc" +type = "double" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: conc." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CNC" +output = "ipakcb" +obs_type = "CNC" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml new file mode 100644 index 00000000..8beb1570 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml @@ -0,0 +1,246 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-cnc +parent: gwt-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of concentration value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant + concentration cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant concentration information will be written + to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of constant concentration flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save constant concentration flows to budget file + description: keyword to indicate that constant concentration flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: time series keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant concentrations + description: integer value specifying the maximum number of constant concentrations cells that + will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + conc: + type: double + longname: constant concentration value + description: is the constant concentration value. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant concentration. + The values of auxiliary variables must be present for each constant concentration. The + values must be specified in the order of the auxiliary variables specified in the OPTIONS + block. If the package supports time series and the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant concentration name + description: name of the constant concentration cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprflow: + set_in: ar + source: print_input + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + iprpak: + set_in: ar + source: save_flows + type: integer + tspvar: + set_in: ad + source: conc + type: double + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: conc.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CNC + output: ipakcb + obs_type: CNC + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.json new file mode 100644 index 00000000..87f10ad4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.json @@ -0,0 +1,285 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-dis", + "parent": "gwt-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nlay * nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "3", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid.", + "default": 1 + }, + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "default": 1.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.toml new file mode 100644 index 00000000..69fc4a67 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.toml @@ -0,0 +1,261 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-dis" +parent = "gwt-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nlay * nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "3" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." +default = 1 + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the top model layer." +default = 1.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.yaml new file mode 100644 index 00000000..f337e4d0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dis.yaml @@ -0,0 +1,247 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-dis +parent: gwt-nam +dims: + nlay: + value: nlay + scope: model + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nlay * nrow * ncol + scope: model + ncelldim: + value: '3' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + default: 1 + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + netcdf: true + dtype: double + shape: + - nrow + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the top model layer. + default: 1.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + botm: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + netcdf: true + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncol + - nrow + - nlay +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncol + - nrow + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.json new file mode 100644 index 00000000..ff70a725 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.json @@ -0,0 +1,365 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-disu", + "parent": "gwt-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nja": { + "value": "nja", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + }, + "njas": { + "value": "(nja - nodes) / 2" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "vertical_offset_tolerance": { + "type": "double", + "longname": "vertical length dimension for top and bottom checking", + "description": "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used.", + "optional": true, + "default": 0.0 + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of cells in the model grid." + }, + "nja": { + "type": "integer", + "longname": "number of columns", + "description": "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + }, + "nvert": { + "type": "integer", + "longname": "number of vertices", + "description": "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the model grid.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "longname": "cell surface area", + "description": "is the cell surface area (in plan view).", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "connectiondata": { + "fields": { + "iac": { + "type": "array", + "longname": "number of cell connections", + "description": "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "ja": { + "type": "array", + "longname": "grid connectivity", + "description": "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWT cells and their connections to the other GWT cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "ihc": { + "type": "array", + "longname": "connection type", + "description": "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection.", + "dtype": "integer", + "shape": [ + "nja" + ] + }, + "cl12": { + "type": "array", + "longname": "connection lengths", + "description": "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "hwva": { + "type": "array", + "longname": "connection lengths", + "description": "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection.", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "angldegx": { + "type": "array", + "longname": "angle of face normal to connection", + "description": "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians.", + "optional": true, + "dtype": "double", + "shape": [ + "nja" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "optional": true, + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "optional": true, + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "voffsettol": { + "set_in": "ar", + "source": "vertical_offset_tolerance", + "type": "double" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nja": { + "set_in": "ar", + "source": "nja", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bot": { + "type": "array", + "set_in": "ar", + "source": "bot", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.toml new file mode 100644 index 00000000..acc60e7b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.toml @@ -0,0 +1,327 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-disu" +parent = "gwt-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nja] +value = "nja" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[dims.njas] +value = "(nja - nodes) / 2" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.vertical_offset_tolerance] +type = "double" +longname = "vertical length dimension for top and bottom checking" +description = "checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used." +optional = true +default = 0.0 + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of layers" +description = "is the number of cells in the model grid." + +[blocks.dimensions.fields.nja] +type = "integer" +longname = "number of columns" +description = "is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of vertices" +description = "is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are specified in the NPF Package, then this information is required." +optional = true + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the model grid." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bot] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.area] +type = "array" +longname = "cell surface area" +description = "is the cell surface area (in plan view)." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.iac] +type = "array" +longname = "number of cell connections" +description = "is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA." +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.connectiondata.fields.ja] +type = "array" +longname = "grid connectivity" +description = "is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWT cells and their connections to the other GWT cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.ihc] +type = "array" +longname = "connection type" +description = "is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection." +dtype = "integer" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.cl12] +type = "array" +longname = "connection lengths" +description = "is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.hwva] +type = "array" +longname = "connection lengths" +description = "is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection." +dtype = "double" +shape = [ + "nja", +] + +[blocks.connectiondata.fields.angldegx] +type = "array" +longname = "angle of face normal to connection" +description = "is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians." +optional = true +dtype = "double" +shape = [ + "nja", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +optional = true +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +optional = true +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.voffsettol] +set_in = "ar" +source = "vertical_offset_tolerance" +type = "double" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nja] +set_in = "ar" +source = "nja" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bot] +type = "array" +set_in = "ar" +source = "bot" +dtype = "double" +shape = [ + "nodes", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.yaml new file mode 100644 index 00000000..3afbd387 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disu.yaml @@ -0,0 +1,347 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-disu +parent: gwt-nam +dims: + nodes: + value: nodes + scope: model + nja: + value: nja + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model + njas: + value: (nja - nodes) / 2 +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + vertical_offset_tolerance: + type: double + longname: vertical length dimension for top and bottom checking + description: checks are performed to ensure that the top of a cell is not higher than the bottom + of an overlying cell. This option can be used to specify the tolerance that is used for checking. If + top of a cell is above the bottom of an overlying cell by a value less than this tolerance, + then the program will not terminate with an error. The default value is zero. This option + should generally not be used. + optional: true + default: 0.0 + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of layers + description: is the number of cells in the model grid. + nja: + type: integer + longname: number of columns + description: is the sum of the number of connections and NODES. When calculating the total number + of connections, the connection between cell n and cell m is considered to be different from + the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, + including n to m and m to n, and the total number of cells. + nvert: + type: integer + longname: number of vertices + description: is the total number of (x, y) vertex pairs used to define the plan-view shape of + each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES + and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks + should be specified for most simulations. If the XT3D or SAVE_SPECIFIC_DISCHARGE options are + specified in the NPF Package, then this information is required. + optional: true + griddata: + fields: + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the model grid. + dtype: double + shape: + - nodes + bot: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - nodes + area: + type: array + longname: cell surface area + description: is the cell surface area (in plan view). + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values + of -1 cannot be specified for the DISU Package. + optional: true + dtype: integer + shape: + - nodes + connectiondata: + fields: + iac: + type: array + longname: number of cell connections + description: is the number of connections (plus 1) for each cell. The sum of all the entries + in IAC must be equal to NJA. + dtype: integer + shape: + - nodes + ja: + type: array + longname: grid connectivity + description: is a list of cell number (n) followed by its connecting cell numbers (m) for each + of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This + list is sequentially provided for the first to the last cell. The first value in the list must + be cell n itself, and the remaining cells must be listed in an increasing order (sorted from + lowest number to highest). Note that the cell and its connections are only supplied for the + GWT cells and their connections to the other GWT cells. Also note that the JA list input may + be divided such that every node and its connectivity list can be on a separate line for ease + in readability of the file. To further ease readability of the file, the node number of the + cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign + of which is subsequently converted to positive by the code. + dtype: integer + shape: + - nja + ihc: + type: array + longname: connection type + description: is an index array indicating the direction between node n and all of its m connections. If + IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell + m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is + less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If + IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection + is vertically staggered. A vertically staggered connection is one in which a cell is horizontally + connected to more than one cell in a horizontal connection. + dtype: integer + shape: + - nja + cl12: + type: array + longname: connection lengths + description: is the array containing connection lengths between the center of cell n and the shared + face with each adjacent m cell. + dtype: double + shape: + - nja + hwva: + type: array + longname: connection lengths + description: is a symmetric array of size NJA. For horizontal connections, entries in HWVA are + the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the + vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and + area. Entries in the HWVA array have a one-to-one correspondence with the connections specified + in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA + array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries + in the HWVA array must be symmetric; the program will terminate with an error if the value for + HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m + connection. + dtype: double + shape: + - nja + angldegx: + type: array + longname: angle of face normal to connection + description: is the angle (in degrees) between the horizontal x-axis and the outward normal to + the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, + where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive + y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF + Package, if the XT3D option is used in the NPF Package, or if the SAVE_SPECIFIC_DISCHARGE option + is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions + are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the + diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from + MODFLOW-USG, which reads a similar variable (ANGLEX) in radians. + optional: true + dtype: double + shape: + - nja + vertices: + fields: + vertices: + type: list + longname: vertices data + optional: true + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + optional: true + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the cell2d number. Records in the CELL2D block must be listed in consecutive + order from 1 to NODES. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + voffsettol: + set_in: ar + source: vertical_offset_tolerance + type: double + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nja: + set_in: ar + source: nja + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - nodes + bot: + type: array + set_in: ar + source: bot + dtype: double + shape: + - nodes + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.json new file mode 100644 index 00000000..e86d0d6f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.json @@ -0,0 +1,313 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-disv", + "parent": "gwt-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "ncpl": { + "value": "ncpl", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "nodes": { + "value": "nlay * ncpl", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid." + }, + "ncpl": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "model top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "netcdf": true, + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "netcdf": true, + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "ncpl": { + "set_in": "ar", + "source": "ncpl", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.toml new file mode 100644 index 00000000..93936265 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.toml @@ -0,0 +1,277 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-disv" +parent = "gwt-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.ncpl] +value = "ncpl" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.nodes] +value = "nlay * ncpl" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." + +[blocks.dimensions.fields.ncpl] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.top] +type = "array" +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +netcdf = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +netcdf = true +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +netcdf = true +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "ncpl", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.ncpl] +set_in = "ar" +source = "ncpl" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncpl", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.yaml new file mode 100644 index 00000000..b5236ea9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-disv.yaml @@ -0,0 +1,272 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-disv +parent: gwt-nam +dims: + nlay: + value: nlay + scope: model + ncpl: + value: ncpl + scope: model + nvert: + value: nvert + scope: model + nodes: + value: nlay * ncpl + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + ncpl: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + top: + type: array + longname: model top elevation + description: is the top elevation for each cell in the top model layer. + netcdf: true + dtype: double + shape: + - ncpl + botm: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + netcdf: true + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + netcdf: true + dtype: integer + shape: + - ncpl + - nlay + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - ncpl +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + ncpl: + set_in: ar + source: ncpl + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncpl + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncpl + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.json new file mode 100644 index 00000000..2f2cf8ce --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.json @@ -0,0 +1,177 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-dsp", + "parent": "gwt-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "xt3d_off": { + "type": "keyword", + "longname": "deactivate xt3d", + "description": "deactivate the xt3d method and use the faster and less accurate approximation. This option may provide a fast and accurate solution under some circumstances, such as when flow aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and transverse dispersivities are equal. This option may also be used to assess the computational demand of the XT3D approach by noting the run time differences with and without this option on.", + "optional": true + }, + "xt3d_rhs": { + "type": "keyword", + "longname": "xt3d on right-hand side", + "description": "add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "diffc": { + "type": "array", + "longname": "effective molecular diffusion coefficient", + "description": "effective molecular diffusion coefficient.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alh": { + "type": "array", + "longname": "longitudinal dispersivity in horizontal direction", + "description": "longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alv": { + "type": "array", + "longname": "longitudinal dispersivity in vertical direction", + "description": "longitudinal dispersivity in vertical direction. If flow is strictly vertical, then this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ALH.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath1": { + "type": "array", + "longname": "transverse dispersivity in horizontal direction", + "description": "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the y direction. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath2": { + "type": "array", + "longname": "transverse dispersivity in horizontal direction", + "description": "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the z direction. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH1.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "atv": { + "type": "array", + "longname": "transverse dispersivity when flow is in vertical direction", + "description": "transverse dispersivity when flow is in vertical direction. If flow is strictly vertical and directed in the z direction, then this value controls spreading in the x and y directions. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH2.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "diffc": { + "type": "array", + "set_in": "ar", + "source": "diffc", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alh": { + "type": "array", + "set_in": "ar", + "source": "alh", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "alv": { + "type": "array", + "set_in": "ar", + "source": "alv", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath1": { + "type": "array", + "set_in": "ar", + "source": "ath1", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ath2": { + "type": "array", + "set_in": "ar", + "source": "ath2", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "atv": { + "type": "array", + "set_in": "ar", + "source": "atv", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.toml new file mode 100644 index 00000000..159e6dda --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.toml @@ -0,0 +1,161 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-dsp" +parent = "gwt-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.xt3d_off] +type = "keyword" +longname = "deactivate xt3d" +description = "deactivate the xt3d method and use the faster and less accurate approximation. This option may provide a fast and accurate solution under some circumstances, such as when flow aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and transverse dispersivities are equal. This option may also be used to assess the computational demand of the XT3D approach by noting the run time differences with and without this option on." +optional = true + +[blocks.options.fields.xt3d_rhs] +type = "keyword" +longname = "xt3d on right-hand side" +description = "add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.diffc] +type = "array" +longname = "effective molecular diffusion coefficient" +description = "effective molecular diffusion coefficient." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.alh] +type = "array" +longname = "longitudinal dispersivity in horizontal direction" +description = "longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.alv] +type = "array" +longname = "longitudinal dispersivity in vertical direction" +description = "longitudinal dispersivity in vertical direction. If flow is strictly vertical, then this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ALH." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ath1] +type = "array" +longname = "transverse dispersivity in horizontal direction" +description = "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the y direction. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.ath2] +type = "array" +longname = "transverse dispersivity in horizontal direction" +description = "transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the z direction. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH1." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.atv] +type = "array" +longname = "transverse dispersivity when flow is in vertical direction" +description = "transverse dispersivity when flow is in vertical direction. If flow is strictly vertical and directed in the z direction, then this value controls spreading in the x and y directions. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH2." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.diffc] +type = "array" +set_in = "ar" +source = "diffc" +dtype = "double" +shape = [ + "nodes", +] + +[memory.alh] +type = "array" +set_in = "ar" +source = "alh" +dtype = "double" +shape = [ + "nodes", +] + +[memory.alv] +type = "array" +set_in = "ar" +source = "alv" +dtype = "double" +shape = [ + "nodes", +] + +[memory.ath1] +type = "array" +set_in = "ar" +source = "ath1" +dtype = "double" +shape = [ + "nodes", +] + +[memory.ath2] +type = "array" +set_in = "ar" +source = "ath2" +dtype = "double" +shape = [ + "nodes", +] + +[memory.atv] +type = "array" +set_in = "ar" +source = "atv" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.yaml new file mode 100644 index 00000000..a77bf89a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-dsp.yaml @@ -0,0 +1,166 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-dsp +parent: gwt-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + xt3d_off: + type: keyword + longname: deactivate xt3d + description: deactivate the xt3d method and use the faster and less accurate approximation. This + option may provide a fast and accurate solution under some circumstances, such as when flow + aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and + transverse dispersivities are equal. This option may also be used to assess the computational + demand of the XT3D approach by noting the run time differences with and without this option + on. + optional: true + xt3d_rhs: + type: keyword + longname: xt3d on right-hand side + description: add xt3d terms to right-hand side, when possible. This option uses less memory, + but may require more iterations. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + diffc: + type: array + longname: effective molecular diffusion coefficient + description: effective molecular diffusion coefficient. + optional: true + netcdf: true + dtype: double + shape: + - nodes + alh: + type: array + longname: longitudinal dispersivity in horizontal direction + description: longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, + then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal + or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If + mechanical dispersion is represented (by specifying any dispersivity values) then this array + is required. + optional: true + netcdf: true + dtype: double + shape: + - nodes + alv: + type: array + longname: longitudinal dispersivity in vertical direction + description: longitudinal dispersivity in vertical direction. If flow is strictly vertical, then + this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal + or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If + this value is not specified and mechanical dispersion is represented, then this array is set + equal to ALH. + optional: true + netcdf: true + dtype: double + shape: + - nodes + ath1: + type: array + longname: transverse dispersivity in horizontal direction + description: transverse dispersivity in horizontal direction. This is the transverse dispersivity + value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction + (along a row for a regular grid), then this value controls spreading in the y direction. If + mechanical dispersion is represented (by specifying any dispersivity values) then this array + is required. + optional: true + netcdf: true + dtype: double + shape: + - nodes + ath2: + type: array + longname: transverse dispersivity in horizontal direction + description: transverse dispersivity in horizontal direction. This is the transverse dispersivity + value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction + (along a row for a regular grid), then this value controls spreading in the z direction. If + this value is not specified and mechanical dispersion is represented, then this array is set + equal to ATH1. + optional: true + netcdf: true + dtype: double + shape: + - nodes + atv: + type: array + longname: transverse dispersivity when flow is in vertical direction + description: transverse dispersivity when flow is in vertical direction. If flow is strictly + vertical and directed in the z direction, then this value controls spreading in the x and y + directions. If this value is not specified and mechanical dispersion is represented, then this + array is set equal to ATH2. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + diffc: + type: array + set_in: ar + source: diffc + dtype: double + shape: + - nodes + alh: + type: array + set_in: ar + source: alh + dtype: double + shape: + - nodes + alv: + type: array + set_in: ar + source: alv + dtype: double + shape: + - nodes + ath1: + type: array + set_in: ar + source: ath1 + dtype: double + shape: + - nodes + ath2: + type: array + set_in: ar + source: ath2 + dtype: double + shape: + - nodes + atv: + type: array + set_in: ar + source: atv + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.json new file mode 100644 index 00000000..39527d1a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.json @@ -0,0 +1,63 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-fmi", + "parent": "gwt-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save calculated flow imbalance correction to budget file", + "description": "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "flow_imbalance_correction": { + "type": "keyword", + "longname": "correct for flow imbalance", + "description": "correct for an imbalance in flows by assuming that any residual flow error comes in or leaves at the concentration of the cell. When this option is activated, the GWT Model budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that is added to offset the error caused by an imprecise flow balance. If these terms are not relatively small, the flow model should be rerun with stricter convergence tolerances.", + "optional": true + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "longname": "flowtype list", + "optional": true, + "item": { + "type": "record", + "fields": { + "flowtype": { + "type": "string", + "longname": "flow type", + "description": "is the word GWFBUDGET, GWFHEAD, GWFMOVER or the name of an advanced GWF stress package. If GWFBUDGET is specified, then the corresponding file must be a budget file. If GWFHEAD is specified, the file must be a head file. If GWFGRID is specified, the file must be a binary grid file. If an advanced GWF stress package name appears then the corresponding file must be the budget file saved by a LAK, SFR, MAW or UZF Package.", + "tagged": false + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing flows. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + } + } + } + } + } + } + }, + "memory": { + "imbalancecorrect": { + "set_in": "ar", + "source": "flow_imbalance_correction", + "type": "logical" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.toml new file mode 100644 index 00000000..77f6809c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.toml @@ -0,0 +1,47 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-fmi" +parent = "gwt-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flow imbalance correction to budget file" +description = "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.flow_imbalance_correction] +type = "keyword" +longname = "correct for flow imbalance" +description = "correct for an imbalance in flows by assuming that any residual flow error comes in or leaves at the concentration of the cell. When this option is activated, the GWT Model budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that is added to offset the error caused by an imprecise flow balance. If these terms are not relatively small, the flow model should be rerun with stricter convergence tolerances." +optional = true + +[blocks.packagedata.fields.packagedata] +type = "list" +longname = "flowtype list" +optional = true + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.flowtype] +type = "string" +longname = "flow type" +description = "is the word GWFBUDGET, GWFHEAD, GWFMOVER or the name of an advanced GWF stress package. If GWFBUDGET is specified, then the corresponding file must be a budget file. If GWFHEAD is specified, the file must be a head file. If GWFGRID is specified, the file must be a binary grid file. If an advanced GWF stress package name appears then the corresponding file must be the budget file saved by a LAK, SFR, MAW or UZF Package." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.packagedata.fields.packagedata.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing flows. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[memory.imbalancecorrect] +set_in = "ar" +source = "flow_imbalance_correction" +type = "logical" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.yaml new file mode 100644 index 00000000..f217bf92 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-fmi.yaml @@ -0,0 +1,57 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-fmi +parent: gwt-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: save calculated flow imbalance correction to budget file + description: keyword to indicate that FMI flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + flow_imbalance_correction: + type: keyword + longname: correct for flow imbalance + description: 'correct for an imbalance in flows by assuming that any residual flow error comes + in or leaves at the concentration of the cell. When this option is activated, the GWT Model + budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These + two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that + is added to offset the error caused by an imprecise flow balance. If these terms are not relatively + small, the flow model should be rerun with stricter convergence tolerances.' + optional: true + packagedata: + fields: + packagedata: + type: list + longname: flowtype list + optional: true + item: + type: record + fields: + flowtype: + type: string + longname: flow type + description: is the word GWFBUDGET, GWFHEAD, GWFMOVER or the name of an advanced GWF stress + package. If GWFBUDGET is specified, then the corresponding file must be a budget file. + If GWFHEAD is specified, the file must be a head file. If GWFGRID is specified, the file + must be a binary grid file. If an advanced GWF stress package name appears then the corresponding + file must be the budget file saved by a LAK, SFR, MAW or UZF Package. + tagged: false + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + fname: + type: string + longname: file name + description: is the name of the file containing flows. The path to the file should be included + if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true +memory: + imbalancecorrect: + set_in: ar + source: flow_imbalance_correction + type: logical diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.json new file mode 100644 index 00000000..81c97536 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.json @@ -0,0 +1,65 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-ic", + "parent": "gwt-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting concentration", + "description": "is the initial (starting) concentration---that is, concentration at the beginning of the GWT Model simulation. STRT must be specified for all GWT Model simulations. One value is read for every model cell.", + "default": 0.0, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.toml new file mode 100644 index 00000000..6d432f79 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.toml @@ -0,0 +1,49 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-ic" +parent = "gwt-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting concentration" +description = "is the initial (starting) concentration---that is, concentration at the beginning of the GWT Model simulation. STRT must be specified for all GWT Model simulations. One value is read for every model cell." +default = 0.0 +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.yaml new file mode 100644 index 00000000..141533ee --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ic.yaml @@ -0,0 +1,53 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-ic +parent: gwt-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + strt: + type: array + longname: starting concentration + description: is the initial (starting) concentration---that is, concentration at the beginning + of the GWT Model simulation. STRT must be specified for all GWT Model simulations. One value + is read for every model cell. + default: 0.0 + netcdf: true + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.json new file mode 100644 index 00000000..5df33062 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.json @@ -0,0 +1,357 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-ist", + "parent": "gwt-nam", + "multi": true, + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save calculated flows to budget file", + "description": "keyword to indicate that IST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "sorption": { + "type": "string", + "longname": "activate sorption", + "description": "is a text keyword to indicate that sorption will be activated. Valid sorption options include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR then SP2 is also required in the GRIDDATA block. The sorption option must be consistent with the sorption option specified in the MST Package or the program will terminate with an error.", + "optional": true, + "valid": [ + "linear", + "freundlich", + "langmuir" + ] + }, + "first_order_decay": { + "type": "keyword", + "longname": "activate first-order decay", + "description": "is a text keyword to indicate that first-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block.", + "optional": true + }, + "zero_order_decay": { + "type": "keyword", + "longname": "activate zero-order decay", + "description": "is a text keyword to indicate that zero-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block.", + "optional": true + }, + "cim_filerecord": { + "type": "record", + "optional": true, + "fields": { + "cim": { + "type": "file", + "longname": "cim keyword", + "description": "keyword to specify that record corresponds to immobile concentration.", + "mode": "fileout" + } + } + }, + "cimprintrecord": { + "type": "record", + "optional": true, + "fields": { + "cim": { + "type": "keyword", + "longname": "cim keyword", + "description": "keyword to specify that record corresponds to immobile concentration." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + }, + "sorbate_filerecord": { + "type": "record", + "optional": true, + "fields": { + "sorbate": { + "type": "file", + "longname": "sorbate keyword", + "description": "keyword to specify that record corresponds to immobile sorbate concentration.", + "mode": "fileout" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "porosity": { + "type": "array", + "longname": "porosity of the immobile domain", + "description": "porosity of the immobile domain specified as the immobile domain pore volume per immobile domain volume.", + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "volfrac": { + "type": "array", + "longname": "volume fraction of this immobile domain", + "description": "fraction of the cell volume that consists of this immobile domain. The sum of all immobile domain volume fractions must be less than one.", + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "zetaim": { + "type": "array", + "longname": "mass transfer rate coefficient between the mobile and immobile domains", + "description": "mass transfer rate coefficient between the mobile and immobile domains, in dimensions of per time.", + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cim": { + "type": "array", + "longname": "initial concentration of the immobile domain", + "description": "initial concentration of the immobile domain in mass per length cubed. If CIM is not specified, then it is assumed to be zero.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay": { + "type": "array", + "longname": "first rate coefficient", + "description": "is the rate coefficient for first or zero-order decay for the aqueous phase of the immobile domain. A negative value indicates solute production. The dimensions of decay for first-order decay is one over time. The dimensions of decay for zero-order decay is mass per length cubed per time. Decay will have no effect on simulation results unless either first- or zero-order decay is specified in the options block.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_sorbed": { + "type": "array", + "longname": "second rate coefficient", + "description": "is the rate coefficient for first or zero-order decay for the sorbed phase of the immobile domain. A negative value indicates solute production. The dimensions of decay_sorbed for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay and sorption are active, then the program will terminate with an error. decay_sorbed will have no effect on simulation results unless the SORPTION keyword and either first- or zero-order decay are specified in the options block.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bulk_density": { + "type": "array", + "longname": "bulk density", + "description": "is the bulk density of this immobile domain in mass per length cubed. Bulk density is defined as the immobile domain solid mass per volume of the immobile domain. bulk_density is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, bulk_density will have no effect on simulation results.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "distcoef": { + "type": "array", + "longname": "distribution coefficient", + "description": "is the distribution coefficient for the equilibrium-controlled linear sorption isotherm in dimensions of length cubed per mass. distcoef is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, distcoef will have no effect on simulation results.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sp2": { + "type": "array", + "longname": "second sorption parameter", + "description": "is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block and sorption is specified as FREUNDLICH or LANGMUIR. If the SORPTION keyword is not specified in the options block, or if sorption is specified as LINEAR, sp2 will have no effect on simulation results.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "order1_decay": { + "set_in": "ar", + "source": "first_order_decay", + "type": "logical" + }, + "order0_decay": { + "set_in": "ar", + "source": "zero_order_decay", + "type": "logical" + }, + "cimopt": { + "set_in": "ar", + "source": "cim", + "type": "logical" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "porosity": { + "type": "array", + "set_in": "ar", + "source": "porosity", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "volfrac": { + "type": "array", + "set_in": "ar", + "source": "volfrac", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "zetaim": { + "type": "array", + "set_in": "ar", + "source": "zetaim", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "cim": { + "type": "array", + "set_in": "ar", + "source": "cim", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay": { + "type": "array", + "set_in": "ar", + "source": "decay", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_sorbed": { + "type": "array", + "set_in": "ar", + "source": "decay_sorbed", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bulk_density": { + "type": "array", + "set_in": "ar", + "source": "bulk_density", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "distcoef": { + "type": "array", + "set_in": "ar", + "source": "distcoef", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sp2": { + "type": "array", + "set_in": "ar", + "source": "sp2", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.toml new file mode 100644 index 00000000..6e45e0e1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.toml @@ -0,0 +1,329 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-ist" +parent = "gwt-nam" +multi = true + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flows to budget file" +description = "keyword to indicate that IST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.sorption] +type = "string" +longname = "activate sorption" +description = "is a text keyword to indicate that sorption will be activated. Valid sorption options include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR then SP2 is also required in the GRIDDATA block. The sorption option must be consistent with the sorption option specified in the MST Package or the program will terminate with an error." +optional = true +valid = [ + "linear", + "freundlich", + "langmuir", +] + +[blocks.options.fields.first_order_decay] +type = "keyword" +longname = "activate first-order decay" +description = "is a text keyword to indicate that first-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.zero_order_decay] +type = "keyword" +longname = "activate zero-order decay" +description = "is a text keyword to indicate that zero-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.cim_filerecord] +type = "record" +optional = true + +[blocks.options.fields.cim_filerecord.fields.cim] +type = "file" +longname = "cim keyword" +description = "keyword to specify that record corresponds to immobile concentration." +mode = "fileout" + +[blocks.options.fields.cimprintrecord] +type = "record" +optional = true + +[blocks.options.fields.cimprintrecord.fields.cim] +type = "keyword" +longname = "cim keyword" +description = "keyword to specify that record corresponds to immobile concentration." + +[blocks.options.fields.cimprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.cimprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.cimprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.cimprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.cimprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.cimprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.options.fields.sorbate_filerecord] +type = "record" +optional = true + +[blocks.options.fields.sorbate_filerecord.fields.sorbate] +type = "file" +longname = "sorbate keyword" +description = "keyword to specify that record corresponds to immobile sorbate concentration." +mode = "fileout" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.porosity] +type = "array" +longname = "porosity of the immobile domain" +description = "porosity of the immobile domain specified as the immobile domain pore volume per immobile domain volume." +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.volfrac] +type = "array" +longname = "volume fraction of this immobile domain" +description = "fraction of the cell volume that consists of this immobile domain. The sum of all immobile domain volume fractions must be less than one." +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.zetaim] +type = "array" +longname = "mass transfer rate coefficient between the mobile and immobile domains" +description = "mass transfer rate coefficient between the mobile and immobile domains, in dimensions of per time." +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.cim] +type = "array" +longname = "initial concentration of the immobile domain" +description = "initial concentration of the immobile domain in mass per length cubed. If CIM is not specified, then it is assumed to be zero." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay] +type = "array" +longname = "first rate coefficient" +description = "is the rate coefficient for first or zero-order decay for the aqueous phase of the immobile domain. A negative value indicates solute production. The dimensions of decay for first-order decay is one over time. The dimensions of decay for zero-order decay is mass per length cubed per time. Decay will have no effect on simulation results unless either first- or zero-order decay is specified in the options block." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay_sorbed] +type = "array" +longname = "second rate coefficient" +description = "is the rate coefficient for first or zero-order decay for the sorbed phase of the immobile domain. A negative value indicates solute production. The dimensions of decay_sorbed for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay and sorption are active, then the program will terminate with an error. decay_sorbed will have no effect on simulation results unless the SORPTION keyword and either first- or zero-order decay are specified in the options block." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bulk_density] +type = "array" +longname = "bulk density" +description = "is the bulk density of this immobile domain in mass per length cubed. Bulk density is defined as the immobile domain solid mass per volume of the immobile domain. bulk_density is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, bulk_density will have no effect on simulation results." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.distcoef] +type = "array" +longname = "distribution coefficient" +description = "is the distribution coefficient for the equilibrium-controlled linear sorption isotherm in dimensions of length cubed per mass. distcoef is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, distcoef will have no effect on simulation results." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.sp2] +type = "array" +longname = "second sorption parameter" +description = "is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block and sorption is specified as FREUNDLICH or LANGMUIR. If the SORPTION keyword is not specified in the options block, or if sorption is specified as LINEAR, sp2 will have no effect on simulation results." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.order1_decay] +set_in = "ar" +source = "first_order_decay" +type = "logical" + +[memory.order0_decay] +set_in = "ar" +source = "zero_order_decay" +type = "logical" + +[memory.cimopt] +set_in = "ar" +source = "cim" +type = "logical" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.porosity] +type = "array" +set_in = "ar" +source = "porosity" +dtype = "double" +shape = [ + "nodes", +] + +[memory.volfrac] +type = "array" +set_in = "ar" +source = "volfrac" +dtype = "double" +shape = [ + "nodes", +] + +[memory.zetaim] +type = "array" +set_in = "ar" +source = "zetaim" +dtype = "double" +shape = [ + "nodes", +] + +[memory.cim] +type = "array" +set_in = "ar" +source = "cim" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay] +type = "array" +set_in = "ar" +source = "decay" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay_sorbed] +type = "array" +set_in = "ar" +source = "decay_sorbed" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bulk_density] +type = "array" +set_in = "ar" +source = "bulk_density" +dtype = "double" +shape = [ + "nodes", +] + +[memory.distcoef] +type = "array" +set_in = "ar" +source = "distcoef" +dtype = "double" +shape = [ + "nodes", +] + +[memory.sp2] +type = "array" +set_in = "ar" +source = "sp2" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.yaml new file mode 100644 index 00000000..73e92db5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ist.yaml @@ -0,0 +1,313 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-ist +parent: gwt-nam +multi: true +dims: + nodes: + set_in: ar +blocks: + options: + fields: + save_flows: + type: keyword + longname: save calculated flows to budget file + description: keyword to indicate that IST flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + sorption: + type: string + longname: activate sorption + description: is a text keyword to indicate that sorption will be activated. Valid sorption options + include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and + DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR + then SP2 is also required in the GRIDDATA block. The sorption option must be consistent with + the sorption option specified in the MST Package or the program will terminate with an error. + optional: true + valid: + - linear + - freundlich + - langmuir + first_order_decay: + type: keyword + longname: activate first-order decay + description: is a text keyword to indicate that first-order decay will occur. Use of this keyword + requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block. + optional: true + zero_order_decay: + type: keyword + longname: activate zero-order decay + description: is a text keyword to indicate that zero-order decay will occur. Use of this keyword + requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block. + optional: true + cim_filerecord: + type: record + optional: true + fields: + cim: + type: file + longname: cim keyword + description: keyword to specify that record corresponds to immobile concentration. + mode: fileout + cimprintrecord: + type: record + optional: true + fields: + cim: + type: keyword + longname: cim keyword + description: keyword to specify that record corresponds to immobile concentration. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + sorbate_filerecord: + type: record + optional: true + fields: + sorbate: + type: file + longname: sorbate keyword + description: keyword to specify that record corresponds to immobile sorbate concentration. + mode: fileout + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + porosity: + type: array + longname: porosity of the immobile domain + description: porosity of the immobile domain specified as the immobile domain pore volume per + immobile domain volume. + netcdf: true + dtype: double + shape: + - nodes + volfrac: + type: array + longname: volume fraction of this immobile domain + description: fraction of the cell volume that consists of this immobile domain. The sum of all + immobile domain volume fractions must be less than one. + netcdf: true + dtype: double + shape: + - nodes + zetaim: + type: array + longname: mass transfer rate coefficient between the mobile and immobile domains + description: mass transfer rate coefficient between the mobile and immobile domains, in dimensions + of per time. + netcdf: true + dtype: double + shape: + - nodes + cim: + type: array + longname: initial concentration of the immobile domain + description: initial concentration of the immobile domain in mass per length cubed. If CIM is + not specified, then it is assumed to be zero. + optional: true + netcdf: true + dtype: double + shape: + - nodes + decay: + type: array + longname: first rate coefficient + description: is the rate coefficient for first or zero-order decay for the aqueous phase of the + immobile domain. A negative value indicates solute production. The dimensions of decay for + first-order decay is one over time. The dimensions of decay for zero-order decay is mass per + length cubed per time. Decay will have no effect on simulation results unless either first- + or zero-order decay is specified in the options block. + optional: true + netcdf: true + dtype: double + shape: + - nodes + decay_sorbed: + type: array + longname: second rate coefficient + description: is the rate coefficient for first or zero-order decay for the sorbed phase of the + immobile domain. A negative value indicates solute production. The dimensions of decay_sorbed + for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay + is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay + and sorption are active, then the program will terminate with an error. decay_sorbed will have + no effect on simulation results unless the SORPTION keyword and either first- or zero-order + decay are specified in the options block. + optional: true + netcdf: true + dtype: double + shape: + - nodes + bulk_density: + type: array + longname: bulk density + description: is the bulk density of this immobile domain in mass per length cubed. Bulk density + is defined as the immobile domain solid mass per volume of the immobile domain. bulk_density + is not required unless the SORPTION keyword is specified in the options block. If the SORPTION + keyword is not specified in the options block, bulk_density will have no effect on simulation + results. + optional: true + netcdf: true + dtype: double + shape: + - nodes + distcoef: + type: array + longname: distribution coefficient + description: is the distribution coefficient for the equilibrium-controlled linear sorption isotherm + in dimensions of length cubed per mass. distcoef is not required unless the SORPTION keyword + is specified in the options block. If the SORPTION keyword is not specified in the options + block, distcoef will have no effect on simulation results. + optional: true + netcdf: true + dtype: double + shape: + - nodes + sp2: + type: array + longname: second sorption parameter + description: is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir + isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block + and sorption is specified as FREUNDLICH or LANGMUIR. If the SORPTION keyword is not specified + in the options block, or if sorption is specified as LINEAR, sp2 will have no effect on simulation + results. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + order1_decay: + set_in: ar + source: first_order_decay + type: logical + order0_decay: + set_in: ar + source: zero_order_decay + type: logical + cimopt: + set_in: ar + source: cim + type: logical + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + porosity: + type: array + set_in: ar + source: porosity + dtype: double + shape: + - nodes + volfrac: + type: array + set_in: ar + source: volfrac + dtype: double + shape: + - nodes + zetaim: + type: array + set_in: ar + source: zetaim + dtype: double + shape: + - nodes + cim: + type: array + set_in: ar + source: cim + dtype: double + shape: + - nodes + decay: + type: array + set_in: ar + source: decay + dtype: double + shape: + - nodes + decay_sorbed: + type: array + set_in: ar + source: decay_sorbed + dtype: double + shape: + - nodes + bulk_density: + type: array + set_in: ar + source: bulk_density + dtype: double + shape: + - nodes + distcoef: + type: array + set_in: ar + source: distcoef + dtype: double + shape: + - nodes + sp2: + type: array + set_in: ar + source: sp2 + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.json new file mode 100644 index 00000000..a1c8ec67 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.json @@ -0,0 +1,353 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-lkt", + "parent": "gwt-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of concentration auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of lake cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_concentration": { + "type": "keyword", + "longname": "print calculated stages to listing file", + "description": "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save lake flows to budget file", + "description": "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "concentration_filerecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting lake concentration", + "description": "real value that defines the starting concentration for the lake.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "lake name", + "description": "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "lakeperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "lake number for this entry", + "description": "integer value that defines the feature (lake) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NLAKES.", + "tagged": false + }, + "laksetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include: STATUS, CONCENTRATION, RAINFALL, EVAPORATION, RUNOFF, EXT-INFLOW, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Lake Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the lake at the calculated concentration of the lake.", + "arms": { + "status": { + "type": "string", + "longname": "lake concentration status", + "description": "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the lake. If a lake is inactive, then there will be no solute mass fluxes into or out of the lake and the inactive value will be written for the lake concentration. If a lake is constant, then the concentration for the lake will be fixed at the user specified value." + }, + "concentration": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration." + }, + "rainfall": { + "type": "string", + "longname": "rainfall concentration", + "description": "real or character value that defines the rainfall solute concentration $(ML^{-3})$ for the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation concentration", + "description": "real or character value that defines the concentration of evaporated water $(ML^{-3})$ for the lake. If this concentration value is larger than the simulated concentration in the lake, then the evaporated water will be removed at the same concentration as the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff concentration", + "description": "real or character value that defines the concentration of runoff $(ML^{-3})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "ext-inflow": { + "type": "string", + "longname": "ext-inflow concentration", + "description": "real or character value that defines the concentration of external inflow $(ML^{-3})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting concentration for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed concentration for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage concentration flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concrain": { + "type": "array", + "set_in": "rp", + "description": "Rainfall concentration for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concevap": { + "type": "array", + "set_in": "rp", + "description": "Evaporation concentration for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concroff": { + "type": "array", + "set_in": "rp", + "description": "Runoff concentration for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "conciflw": { + "type": "array", + "set_in": "rp", + "description": "External inflow concentration for each lake.", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.toml new file mode 100644 index 00000000..feb56452 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.toml @@ -0,0 +1,315 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-lkt" +parent = "gwt-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of concentration auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of lake cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of lake information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_concentration] +type = "keyword" +longname = "print calculated stages to listing file" +description = "keyword to indicate that the list of lake {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save lake flows to budget file" +description = "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.concentration_filerecord] +type = "record" +optional = true + +[blocks.options.fields.concentration_filerecord.fields.concentration] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the feature (lake) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting lake concentration" +description = "real value that defines the starting concentration for the lake." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each lake. The values of auxiliary variables must be present for each lake. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "lake name" +description = "name of the lake cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.lakeperioddata] +type = "list" + +[blocks.period.fields.lakeperioddata.item] +type = "record" + +[blocks.period.fields.lakeperioddata.item.fields.ifno] +type = "integer" +longname = "lake number for this entry" +description = "integer value that defines the feature (lake) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NLAKES." +tagged = false + +[blocks.period.fields.lakeperioddata.item.fields.laksetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include: STATUS, CONCENTRATION, RAINFALL, EVAPORATION, RUNOFF, EXT-INFLOW, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Lake Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the lake at the calculated concentration of the lake." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.status] +type = "string" +longname = "lake concentration status" +description = "keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the lake. If a lake is inactive, then there will be no solute mass fluxes into or out of the lake and the inactive value will be written for the lake concentration. If a lake is constant, then the concentration for the lake will be fixed at the user specified value." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.concentration] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.rainfall] +type = "string" +longname = "rainfall concentration" +description = "real or character value that defines the rainfall solute concentration $(ML^{-3})$ for the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.evaporation] +type = "string" +longname = "evaporation concentration" +description = "real or character value that defines the concentration of evaporated water $(ML^{-3})$ for the lake. If this concentration value is larger than the simulated concentration in the lake, then the evaporated water will be removed at the same concentration as the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.runoff] +type = "string" +longname = "runoff concentration" +description = "real or character value that defines the concentration of runoff $(ML^{-3})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.ext-inflow] +type = "string" +longname = "ext-inflow concentration" +description = "real or character value that defines the concentration of external inflow $(ML^{-3})$ for the lake. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.lakeperioddata.item.fields.laksetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting concentration for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed concentration for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage concentration flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concrain] +type = "array" +set_in = "rp" +description = "Rainfall concentration for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concevap] +type = "array" +set_in = "rp" +description = "Evaporation concentration for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concroff] +type = "array" +set_in = "rp" +description = "Runoff concentration for each lake." +dtype = "double" +shape = [ + "ncv", +] + +[memory.conciflw] +type = "array" +set_in = "rp" +description = "External inflow concentration for each lake." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.yaml new file mode 100644 index 00000000..8b3b60ee --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-lkt.yaml @@ -0,0 +1,338 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-lkt +parent: gwt-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWT name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of concentration auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated concentrations from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of lake cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of lake information will be written to the listing + file immediately after it is read. + optional: true + print_concentration: + type: keyword + longname: print calculated stages to listing file + description: keyword to indicate that the list of lake {#2} will be printed to the listing file + for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of lake flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save lake flows to budget file + description: keyword to indicate that lake flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + concentration_filerecord: + type: record + optional: true + fields: + concentration: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: lake number for this entry + description: integer value that defines the feature (lake) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NLAKES. Lake information must be specified for every lake or the program will terminate + with an error. The program will also terminate with an error if information for a lake + is specified more than once. + tagged: false + strt: + type: double + longname: starting lake concentration + description: real value that defines the starting concentration for the lake. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each lake. The values + of auxiliary variables must be present for each lake. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: lake name + description: name of the lake cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + lakeperioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: lake number for this entry + description: integer value that defines the feature (lake) number associated with the specified + PERIOD data on the line. IFNO must be greater than zero and less than or equal to NLAKES. + tagged: false + laksetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the LAKSETTING string include: STATUS, CONCENTRATION, RAINFALL, + EVAPORATION, RUNOFF, EXT-INFLOW, and AUXILIARY. These settings are used to assign the + concentration of associated with the corresponding flow terms. Concentrations cannot + be specified for all flow terms. For example, the Lake Package supports a ''WITHDRAWAL'' + flow term. If this withdrawal term is active, then water will be withdrawn from the lake + at the calculated concentration of the lake.' + arms: + status: + type: string + longname: lake concentration status + description: keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be + calculated for the lake. If a lake is inactive, then there will be no solute mass + fluxes into or out of the lake and the inactive value will be written for the lake + concentration. If a lake is constant, then the concentration for the lake will be + fixed at the user specified value. + concentration: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + rainfall: + type: string + longname: rainfall concentration + description: real or character value that defines the rainfall solute concentration + $(ML^{-3})$ for the lake. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + evaporation: + type: string + longname: evaporation concentration + description: real or character value that defines the concentration of evaporated water + $(ML^{-3})$ for the lake. If this concentration value is larger than the simulated + concentration in the lake, then the evaporated water will be removed at the same concentration + as the lake. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + time_series: true + runoff: + type: string + longname: runoff concentration + description: real or character value that defines the concentration of runoff $(ML^{-3})$ + for the lake. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + ext-inflow: + type: string + longname: ext-inflow concentration + description: real or character value that defines the concentration of external inflow + $(ML^{-3})$ for the lake. Value must be greater than or equal to zero. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting concentration for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current concentration for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Concentration from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed concentration for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage concentration flow contribution for each control volume. + dtype: double + shape: + - ncv + concrain: + type: array + set_in: rp + description: Rainfall concentration for each lake. + dtype: double + shape: + - ncv + concevap: + type: array + set_in: rp + description: Evaporation concentration for each lake. + dtype: double + shape: + - ncv + concroff: + type: array + set_in: rp + description: Runoff concentration for each lake. + dtype: double + shape: + - ncv + conciflw: + type: array + set_in: rp + description: External inflow concentration for each lake. + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.json new file mode 100644 index 00000000..4c8d6d17 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.json @@ -0,0 +1,215 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-mst", + "parent": "gwt-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save calculated flows to budget file", + "description": "keyword to indicate that MST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "first_order_decay": { + "type": "keyword", + "longname": "activate first-order decay", + "description": "is a text keyword to indicate that first-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block.", + "optional": true + }, + "zero_order_decay": { + "type": "keyword", + "longname": "activate zero-order decay", + "description": "is a text keyword to indicate that zero-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block.", + "optional": true + }, + "sorption": { + "type": "string", + "longname": "activate sorption", + "description": "is a text keyword to indicate that sorption will be activated. Valid sorption options include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR then SP2 is also required in the GRIDDATA block.", + "optional": true, + "valid": [ + "linear", + "freundlich", + "langmuir" + ] + }, + "sorbate_filerecord": { + "type": "record", + "optional": true, + "fields": { + "sorbate": { + "type": "file", + "longname": "sorbate keyword", + "description": "keyword to specify that record corresponds to sorbate concentration.", + "mode": "fileout" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "porosity": { + "type": "array", + "longname": "porosity", + "description": "is the mobile domain porosity, defined as the mobile domain pore volume per mobile domain volume. Additional information on porosity within the context of mobile and immobile domain transport simulations is included in the MODFLOW 6 Supplemental Technical Information document.", + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay": { + "type": "array", + "longname": "aqueous phase decay rate coefficient", + "description": "is the rate coefficient for first or zero-order decay for the aqueous phase of the mobile domain. A negative value indicates solute production. The dimensions of decay for first-order decay is one over time. The dimensions of decay for zero-order decay is mass per length cubed per time. decay will have no effect on simulation results unless either first- or zero-order decay is specified in the options block.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_sorbed": { + "type": "array", + "longname": "sorbed phase decay rate coefficient", + "description": "is the rate coefficient for first or zero-order decay for the sorbed phase of the mobile domain. A negative value indicates solute production. The dimensions of decay_sorbed for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay and sorption are active, then the program will terminate with an error. decay_sorbed will have no effect on simulation results unless the SORPTION keyword and either first- or zero-order decay are specified in the options block.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bulk_density": { + "type": "array", + "longname": "bulk density", + "description": "is the bulk density of the aquifer in mass per length cubed. bulk_density is not required unless the SORPTION keyword is specified. Bulk density is defined as the mobile domain solid mass per mobile domain volume. Additional information on bulk density is included in the MODFLOW 6 Supplemental Technical Information document.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "distcoef": { + "type": "array", + "longname": "distribution coefficient", + "description": "is the distribution coefficient for the equilibrium-controlled linear sorption isotherm in dimensions of length cubed per mass. If the Freunchlich isotherm is specified, then discoef is the Freundlich constant. If the Langmuir isotherm is specified, then distcoef is the Langmuir constant. distcoef is not required unless the SORPTION keyword is specified.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sp2": { + "type": "array", + "longname": "second sorption parameter", + "description": "is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, sp2 will have no effect on simulation results.", + "optional": true, + "netcdf": true, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "order1_decay": { + "set_in": "ar", + "source": "first_order_decay", + "type": "logical" + }, + "order0_decay": { + "set_in": "ar", + "source": "zero_order_decay", + "type": "logical" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "porosity": { + "type": "array", + "set_in": "ar", + "source": "porosity", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay": { + "type": "array", + "set_in": "ar", + "source": "decay", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "decay_sorbed": { + "type": "array", + "set_in": "ar", + "source": "decay_sorbed", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bulk_density": { + "type": "array", + "set_in": "ar", + "source": "bulk_density", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "distcoef": { + "type": "array", + "set_in": "ar", + "source": "distcoef", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "sp2": { + "type": "array", + "set_in": "ar", + "source": "sp2", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.toml new file mode 100644 index 00000000..a8e3e484 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.toml @@ -0,0 +1,197 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-mst" +parent = "gwt-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flows to budget file" +description = "keyword to indicate that MST flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.first_order_decay] +type = "keyword" +longname = "activate first-order decay" +description = "is a text keyword to indicate that first-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.zero_order_decay] +type = "keyword" +longname = "activate zero-order decay" +description = "is a text keyword to indicate that zero-order decay will occur. Use of this keyword requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block." +optional = true + +[blocks.options.fields.sorption] +type = "string" +longname = "activate sorption" +description = "is a text keyword to indicate that sorption will be activated. Valid sorption options include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR then SP2 is also required in the GRIDDATA block." +optional = true +valid = [ + "linear", + "freundlich", + "langmuir", +] + +[blocks.options.fields.sorbate_filerecord] +type = "record" +optional = true + +[blocks.options.fields.sorbate_filerecord.fields.sorbate] +type = "file" +longname = "sorbate keyword" +description = "keyword to specify that record corresponds to sorbate concentration." +mode = "fileout" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.griddata.fields.porosity] +type = "array" +longname = "porosity" +description = "is the mobile domain porosity, defined as the mobile domain pore volume per mobile domain volume. Additional information on porosity within the context of mobile and immobile domain transport simulations is included in the MODFLOW 6 Supplemental Technical Information document." +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay] +type = "array" +longname = "aqueous phase decay rate coefficient" +description = "is the rate coefficient for first or zero-order decay for the aqueous phase of the mobile domain. A negative value indicates solute production. The dimensions of decay for first-order decay is one over time. The dimensions of decay for zero-order decay is mass per length cubed per time. decay will have no effect on simulation results unless either first- or zero-order decay is specified in the options block." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.decay_sorbed] +type = "array" +longname = "sorbed phase decay rate coefficient" +description = "is the rate coefficient for first or zero-order decay for the sorbed phase of the mobile domain. A negative value indicates solute production. The dimensions of decay_sorbed for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay and sorption are active, then the program will terminate with an error. decay_sorbed will have no effect on simulation results unless the SORPTION keyword and either first- or zero-order decay are specified in the options block." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bulk_density] +type = "array" +longname = "bulk density" +description = "is the bulk density of the aquifer in mass per length cubed. bulk_density is not required unless the SORPTION keyword is specified. Bulk density is defined as the mobile domain solid mass per mobile domain volume. Additional information on bulk density is included in the MODFLOW 6 Supplemental Technical Information document." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.distcoef] +type = "array" +longname = "distribution coefficient" +description = "is the distribution coefficient for the equilibrium-controlled linear sorption isotherm in dimensions of length cubed per mass. If the Freunchlich isotherm is specified, then discoef is the Freundlich constant. If the Langmuir isotherm is specified, then distcoef is the Langmuir constant. distcoef is not required unless the SORPTION keyword is specified." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.sp2] +type = "array" +longname = "second sorption parameter" +description = "is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block. If the SORPTION keyword is not specified in the options block, sp2 will have no effect on simulation results." +optional = true +netcdf = true +dtype = "double" +shape = [ + "nodes", +] + +[memory.order1_decay] +set_in = "ar" +source = "first_order_decay" +type = "logical" + +[memory.order0_decay] +set_in = "ar" +source = "zero_order_decay" +type = "logical" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.porosity] +type = "array" +set_in = "ar" +source = "porosity" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay] +type = "array" +set_in = "ar" +source = "decay" +dtype = "double" +shape = [ + "nodes", +] + +[memory.decay_sorbed] +type = "array" +set_in = "ar" +source = "decay_sorbed" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bulk_density] +type = "array" +set_in = "ar" +source = "bulk_density" +dtype = "double" +shape = [ + "nodes", +] + +[memory.distcoef] +type = "array" +set_in = "ar" +source = "distcoef" +dtype = "double" +shape = [ + "nodes", +] + +[memory.sp2] +type = "array" +set_in = "ar" +source = "sp2" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.yaml new file mode 100644 index 00000000..37979d71 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mst.yaml @@ -0,0 +1,199 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-mst +parent: gwt-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + save_flows: + type: keyword + longname: save calculated flows to budget file + description: keyword to indicate that MST flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + first_order_decay: + type: keyword + longname: activate first-order decay + description: is a text keyword to indicate that first-order decay will occur. Use of this keyword + requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block. + optional: true + zero_order_decay: + type: keyword + longname: activate zero-order decay + description: is a text keyword to indicate that zero-order decay will occur. Use of this keyword + requires that DECAY and DECAY_SORBED (if sorption is active) are specified in the GRIDDATA block. + optional: true + sorption: + type: string + longname: activate sorption + description: is a text keyword to indicate that sorption will be activated. Valid sorption options + include LINEAR, FREUNDLICH, and LANGMUIR. Use of this keyword requires that BULK_DENSITY and + DISTCOEF are specified in the GRIDDATA block. If sorption is specified as FREUNDLICH or LANGMUIR + then SP2 is also required in the GRIDDATA block. + optional: true + valid: + - linear + - freundlich + - langmuir + sorbate_filerecord: + type: record + optional: true + fields: + sorbate: + type: file + longname: sorbate keyword + description: keyword to specify that record corresponds to sorbate concentration. + mode: fileout + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + griddata: + fields: + porosity: + type: array + longname: porosity + description: is the mobile domain porosity, defined as the mobile domain pore volume per mobile + domain volume. Additional information on porosity within the context of mobile and immobile + domain transport simulations is included in the MODFLOW 6 Supplemental Technical Information + document. + netcdf: true + dtype: double + shape: + - nodes + decay: + type: array + longname: aqueous phase decay rate coefficient + description: is the rate coefficient for first or zero-order decay for the aqueous phase of the + mobile domain. A negative value indicates solute production. The dimensions of decay for first-order + decay is one over time. The dimensions of decay for zero-order decay is mass per length cubed + per time. decay will have no effect on simulation results unless either first- or zero-order + decay is specified in the options block. + optional: true + netcdf: true + dtype: double + shape: + - nodes + decay_sorbed: + type: array + longname: sorbed phase decay rate coefficient + description: is the rate coefficient for first or zero-order decay for the sorbed phase of the + mobile domain. A negative value indicates solute production. The dimensions of decay_sorbed + for first-order decay is one over time. The dimensions of decay_sorbed for zero-order decay + is mass of solute per mass of aquifer per time. If decay_sorbed is not specified and both decay + and sorption are active, then the program will terminate with an error. decay_sorbed will have + no effect on simulation results unless the SORPTION keyword and either first- or zero-order + decay are specified in the options block. + optional: true + netcdf: true + dtype: double + shape: + - nodes + bulk_density: + type: array + longname: bulk density + description: is the bulk density of the aquifer in mass per length cubed. bulk_density is not + required unless the SORPTION keyword is specified. Bulk density is defined as the mobile domain + solid mass per mobile domain volume. Additional information on bulk density is included in + the MODFLOW 6 Supplemental Technical Information document. + optional: true + netcdf: true + dtype: double + shape: + - nodes + distcoef: + type: array + longname: distribution coefficient + description: is the distribution coefficient for the equilibrium-controlled linear sorption isotherm + in dimensions of length cubed per mass. If the Freunchlich isotherm is specified, then discoef + is the Freundlich constant. If the Langmuir isotherm is specified, then distcoef is the Langmuir + constant. distcoef is not required unless the SORPTION keyword is specified. + optional: true + netcdf: true + dtype: double + shape: + - nodes + sp2: + type: array + longname: second sorption parameter + description: is the exponent for the Freundlich isotherm and the sorption capacity for the Langmuir + isotherm. sp2 is not required unless the SORPTION keyword is specified in the options block. If + the SORPTION keyword is not specified in the options block, sp2 will have no effect on simulation + results. + optional: true + netcdf: true + dtype: double + shape: + - nodes +memory: + order1_decay: + set_in: ar + source: first_order_decay + type: logical + order0_decay: + set_in: ar + source: zero_order_decay + type: logical + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + porosity: + type: array + set_in: ar + source: porosity + dtype: double + shape: + - nodes + decay: + type: array + set_in: ar + source: decay + dtype: double + shape: + - nodes + decay_sorbed: + type: array + set_in: ar + source: decay_sorbed + dtype: double + shape: + - nodes + bulk_density: + type: array + set_in: ar + source: bulk_density + dtype: double + shape: + - nodes + distcoef: + type: array + set_in: ar + source: distcoef + dtype: double + shape: + - nodes + sp2: + type: array + set_in: ar + source: sp2 + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.json new file mode 100644 index 00000000..ddd04d14 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.json @@ -0,0 +1,54 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-mvt", + "parent": "gwt-nam", + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of mover information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save lake flows to budget file", + "description": "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.toml new file mode 100644 index 00000000..05519a04 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.toml @@ -0,0 +1,42 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-mvt" +parent = "gwt-nam" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of mover information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of lake flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save lake flows to budget file" +description = "keyword to indicate that lake flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.yaml new file mode 100644 index 00000000..caf48fb1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mvt.yaml @@ -0,0 +1,45 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-mvt +parent: gwt-nam +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of mover information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of lake flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save lake flows to budget file + description: keyword to indicate that lake flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.json new file mode 100644 index 00000000..1e123c53 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.json @@ -0,0 +1,308 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-mwt", + "parent": "gwt-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of concentration auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of well cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of well information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_concentration": { + "type": "keyword", + "longname": "print calculated concentrations to listing file", + "description": "keyword to indicate that the list of well {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "concentration_filerecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Well information must be specified for every well or the program will terminate with an error. The program will also terminate with an error if information for a well is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting well concentration", + "description": "real value that defines the starting concentration for the well.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "mwtperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "well number for this entry", + "description": "integer value that defines the feature (well) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS.", + "tagged": false + }, + "mwtsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MWTSETTING string include: STATUS, CONCENTRATION, RATE, and AUXILIARY. These settings are used to assign the concentration associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Multi-Aquifer Well Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the well at the calculated concentration of the well.", + "arms": { + "status": { + "type": "string", + "longname": "well concentration status", + "description": "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the well. If a well is inactive, then there will be no solute mass fluxes into or out of the well and the inactive value will be written for the well concentration. If a well is constant, then the concentration for the well will be fixed at the user specified value." + }, + "concentration": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration." + }, + "rate": { + "type": "string", + "longname": "well injection concentration", + "description": "real or character value that defines the injection solute concentration $(ML^{-3})$ for the well. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting concentration for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed concentration for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage concentration flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concrate": { + "type": "array", + "set_in": "rp", + "description": "Pumping-rate concentration for each multi-aquifer well.", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.toml new file mode 100644 index 00000000..22a4a096 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.toml @@ -0,0 +1,270 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-mwt" +parent = "gwt-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of concentration auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of well cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of well information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_concentration] +type = "keyword" +longname = "print calculated concentrations to listing file" +description = "keyword to indicate that the list of well {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of well flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that well flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.concentration_filerecord] +type = "record" +optional = true + +[blocks.options.fields.concentration_filerecord.fields.concentration] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the feature (well) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. Well information must be specified for every well or the program will terminate with an error. The program will also terminate with an error if information for a well is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting well concentration" +description = "real value that defines the starting concentration for the well." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each well. The values of auxiliary variables must be present for each well. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the well cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.mwtperioddata] +type = "list" + +[blocks.period.fields.mwtperioddata.item] +type = "record" + +[blocks.period.fields.mwtperioddata.item.fields.ifno] +type = "integer" +longname = "well number for this entry" +description = "integer value that defines the feature (well) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS." +tagged = false + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the MWTSETTING string include: STATUS, CONCENTRATION, RATE, and AUXILIARY. These settings are used to assign the concentration associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Multi-Aquifer Well Package supports a 'WITHDRAWAL' flow term. If this withdrawal term is active, then water will be withdrawn from the well at the calculated concentration of the well." + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.status] +type = "string" +longname = "well concentration status" +description = "keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the well. If a well is inactive, then there will be no solute mass fluxes into or out of the well and the inactive value will be written for the well concentration. If a well is constant, then the concentration for the well will be fixed at the user specified value." + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.concentration] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.rate] +type = "string" +longname = "well injection concentration" +description = "real or character value that defines the injection solute concentration $(ML^{-3})$ for the well. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.mwtperioddata.item.fields.mwtsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting concentration for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed concentration for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage concentration flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concrate] +type = "array" +set_in = "rp" +description = "Pumping-rate concentration for each multi-aquifer well." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.yaml new file mode 100644 index 00000000..56cab9ef --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-mwt.yaml @@ -0,0 +1,290 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-mwt +parent: gwt-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWT name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of concentration auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated concentrations from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of well cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of well information will be written to the listing + file immediately after it is read. + optional: true + print_concentration: + type: keyword + longname: print calculated concentrations to listing file + description: keyword to indicate that the list of well {#2} will be printed to the listing file + for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of well flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that well flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + concentration_filerecord: + type: record + optional: true + fields: + concentration: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: well number for this entry + description: integer value that defines the feature (well) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NMAWWELLS. Well information must be specified for every well or the program will terminate + with an error. The program will also terminate with an error if information for a well + is specified more than once. + tagged: false + strt: + type: double + longname: starting well concentration + description: real value that defines the starting concentration for the well. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each well. The values + of auxiliary variables must be present for each well. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the well cell. BOUNDNAME is an ASCII character variable that can contain + as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must + be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + mwtperioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: well number for this entry + description: integer value that defines the feature (well) number associated with the specified + PERIOD data on the line. IFNO must be greater than zero and less than or equal to NMAWWELLS. + tagged: false + mwtsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the MWTSETTING string include: STATUS, CONCENTRATION, RATE, + and AUXILIARY. These settings are used to assign the concentration associated with the + corresponding flow terms. Concentrations cannot be specified for all flow terms. For + example, the Multi-Aquifer Well Package supports a ''WITHDRAWAL'' flow term. If this + withdrawal term is active, then water will be withdrawn from the well at the calculated + concentration of the well.' + arms: + status: + type: string + longname: well concentration status + description: keyword option to define well status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be + calculated for the well. If a well is inactive, then there will be no solute mass + fluxes into or out of the well and the inactive value will be written for the well + concentration. If a well is constant, then the concentration for the well will be + fixed at the user specified value. + concentration: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + rate: + type: string + longname: well injection concentration + description: real or character value that defines the injection solute concentration + $(ML^{-3})$ for the well. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting concentration for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current concentration for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Concentration from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed concentration for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage concentration flow contribution for each control volume. + dtype: double + shape: + - ncv + concrate: + type: array + set_in: rp + description: Pumping-rate concentration for each multi-aquifer well. + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.json new file mode 100644 index 00000000..efd81e5e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.json @@ -0,0 +1,206 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "gwt-nam", + "parent": "sim-nam", + "dependent_variable": "concentration", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this GWT model. If not specified, then the name of the list file will be the basename of the GWT model name file and the '.lst' extension. For example, if the GWT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "dependent_variable_scaling": { + "type": "keyword", + "longname": "flag to scale X and RHS", + "description": "flag to scale X and RHS to avoid very large positive or negative dependent variable values", + "optional": true + }, + "nc_mesh2d_filerecord": { + "type": "record", + "description": "NetCDF layered mesh fileout record.", + "optional": true, + "fields": { + "netcdf_mesh2d": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a layered mesh NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_structured_filerecord": { + "type": "record", + "description": "NetCDF structured fileout record.", + "optional": true, + "fields": { + "netcdf_structured": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to a structured NetCDF file.", + "mode": "fileout" + } + } + }, + "nc_filerecord": { + "type": "record", + "description": "NetCDF filerecord", + "optional": true, + "fields": { + "netcdf": { + "type": "file", + "longname": "netcdf keyword", + "description": "keyword to specify that record corresponds to a NetCDF input file.", + "mode": "filein" + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwt}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWT Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "idv_scale": { + "set_in": "ar", + "source": "dependent_variable_scaling", + "type": "integer" + }, + "netcdf_struct": { + "set_in": "ar", + "source": "netcdf_structured", + "type": "logical" + }, + "netcdf_fname": { + "set_in": "ar", + "type": "string" + }, + "x": { + "type": "array", + "set_in": "ca", + "description": "Solute concentration for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "CONCENTRATION", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.toml new file mode 100644 index 00000000..884a7ba1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.toml @@ -0,0 +1,182 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "gwt-nam" +parent = "sim-nam" +dependent_variable = "concentration" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this GWT model. If not specified, then the name of the list file will be the basename of the GWT model name file and the '.lst' extension. For example, if the GWT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.dependent_variable_scaling] +type = "keyword" +longname = "flag to scale X and RHS" +description = "flag to scale X and RHS to avoid very large positive or negative dependent variable values" +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord] +type = "record" +description = "NetCDF layered mesh fileout record." +optional = true + +[blocks.options.fields.nc_mesh2d_filerecord.fields.netcdf_mesh2d] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a layered mesh NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_structured_filerecord] +type = "record" +description = "NetCDF structured fileout record." +optional = true + +[blocks.options.fields.nc_structured_filerecord.fields.netcdf_structured] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to a structured NetCDF file." +mode = "fileout" + +[blocks.options.fields.nc_filerecord] +type = "record" +description = "NetCDF filerecord" +optional = true + +[blocks.options.fields.nc_filerecord.fields.netcdf] +type = "file" +longname = "netcdf keyword" +description = "keyword to specify that record corresponds to a NetCDF input file." +mode = "filein" + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-gwt}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWT Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.idv_scale] +set_in = "ar" +source = "dependent_variable_scaling" +type = "integer" + +[memory.netcdf_struct] +set_in = "ar" +source = "netcdf_structured" +type = "logical" + +[memory.netcdf_fname] +set_in = "ar" +type = "string" + +[memory.x] +type = "array" +set_in = "ca" +description = "Solute concentration for each model cell. Checked in from the solution-level dependent-variable vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "CONCENTRATION" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.yaml new file mode 100644 index 00000000..0ca07226 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-nam.yaml @@ -0,0 +1,185 @@ +type: model +schema_version: 2.0.0.dev3 +name: gwt-nam +parent: sim-nam +dependent_variable: concentration +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this GWT model. If not specified, then + the name of the list file will be the basename of the GWT model name file and the '.lst' extension. For + example, if the GWT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + dependent_variable_scaling: + type: keyword + longname: flag to scale X and RHS + description: flag to scale X and RHS to avoid very large positive or negative dependent variable + values + optional: true + nc_mesh2d_filerecord: + type: record + description: NetCDF layered mesh fileout record. + optional: true + fields: + netcdf_mesh2d: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a layered mesh NetCDF file. + mode: fileout + nc_structured_filerecord: + type: record + description: NetCDF structured fileout record. + optional: true + fields: + netcdf_structured: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to a structured NetCDF file. + mode: fileout + nc_filerecord: + type: record + description: NetCDF filerecord + optional: true + fields: + netcdf: + type: file + longname: netcdf keyword + description: keyword to specify that record corresponds to a NetCDF input file. + mode: filein + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-gwt}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single GWT Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + idv_scale: + set_in: ar + source: dependent_variable_scaling + type: integer + netcdf_struct: + set_in: ar + source: netcdf_structured + type: logical + netcdf_fname: + set_in: ar + type: string + x: + type: array + set_in: ca + description: Solute concentration for each model cell. Checked in from the solution-level dependent-variable + vector. Initialized by the IC package during AR; updated by the nonlinear solver at each Picard + iteration (CA). API-written values serve as initial guesses and are overwritten by the solver. + obs_type: CONCENTRATION + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json new file mode 100644 index 00000000..cc216b28 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.json @@ -0,0 +1,205 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-oc", + "parent": "gwt-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "concentration_filerecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "file", + "longname": "concentration keyword", + "description": "keyword to specify that record corresponds to concentration.", + "mode": "fileout" + } + } + }, + "concentrationprintrecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "keyword", + "longname": "concentration keyword", + "description": "keyword to specify that record corresponds to concentration." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or CONCENTRATION.", + "tagged": false, + "valid": [ + "CONCENTRATION", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET or CONCENTRATION.", + "tagged": false, + "valid": [ + "CONCENTRATION", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "concfile": { + "set_in": "ar", + "type": "string" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml new file mode 100644 index 00000000..d5db1a90 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.toml @@ -0,0 +1,171 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-oc" +parent = "gwt-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.concentration_filerecord] +type = "record" +optional = true + +[blocks.options.fields.concentration_filerecord.fields.concentration] +type = "file" +longname = "concentration keyword" +description = "keyword to specify that record corresponds to concentration." +mode = "fileout" + +[blocks.options.fields.concentrationprintrecord] +type = "record" +optional = true + +[blocks.options.fields.concentrationprintrecord.fields.concentration] +type = "keyword" +longname = "concentration keyword" +description = "keyword to specify that record corresponds to concentration." + +[blocks.options.fields.concentrationprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.concentrationprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.concentrationprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.concentrationprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.concentrationprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.concentrationprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or CONCENTRATION." +tagged = false +valid = [ + "CONCENTRATION", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET or CONCENTRATION." +tagged = false +valid = [ + "CONCENTRATION", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" + +[memory.concfile] +set_in = "ar" +type = "string" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml new file mode 100644 index 00000000..ba42eb3e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-oc.yaml @@ -0,0 +1,164 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-oc +parent: gwt-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + concentration_filerecord: + type: record + optional: true + fields: + concentration: + type: file + longname: concentration keyword + description: keyword to specify that record corresponds to concentration. + mode: fileout + concentrationprintrecord: + type: record + optional: true + fields: + concentration: + type: keyword + longname: concentration keyword + description: keyword to specify that record corresponds to concentration. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or CONCENTRATION. + tagged: false + valid: + - CONCENTRATION + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET or CONCENTRATION. + tagged: false + valid: + - CONCENTRATION + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 +memory: + concfile: + set_in: ar + type: string diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.json new file mode 100644 index 00000000..1ca4b8fb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.json @@ -0,0 +1,373 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-sft", + "parent": "gwt-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of concentration auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of reach cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of reach information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_concentration": { + "type": "keyword", + "longname": "print calculated concentrations to listing file", + "description": "keyword to indicate that the list of reach {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save reach flows to budget file", + "description": "keyword to indicate that reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "concentration_filerecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "file", + "longname": "concentration keyword", + "description": "keyword to specify that record corresponds to concentration.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting reach concentration", + "description": "real value that defines the starting concentration for the reach.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each reach. The values of auxiliary variables must be present for each reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "reachperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the feature (reach) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES.", + "tagged": false + }, + "reachsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the REACHSETTING string include: STATUS, CONCENTRATION, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Streamflow Package supports a 'DIVERSION' flow term. Diversion water will be routed using the calculated concentration of the reach.", + "arms": { + "status": { + "type": "string", + "longname": "reach concentration status", + "description": "keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the reach. If a reach is inactive, then there will be no solute mass fluxes into or out of the reach and the inactive value will be written for the reach concentration. If a reach is constant, then the concentration for the reach will be fixed at the user specified value." + }, + "concentration": { + "type": "keyword", + "longname": "concentration keyword", + "description": "keyword to specify that record corresponds to concentration." + }, + "rainfall": { + "type": "string", + "longname": "rainfall concentration", + "description": "real or character value that defines the rainfall solute concentration $(ML^{-3})$ for the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "evaporation": { + "type": "string", + "longname": "evaporation concentration", + "description": "real or character value that defines the concentration of evaporated water $(ML^{-3})$ for the reach. If this concentration value is larger than the simulated concentration in the reach, then the evaporated water will be removed at the same concentration as the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "runoff": { + "type": "string", + "longname": "runoff concentration", + "description": "real or character value that defines the concentration of runoff $(ML^{-3})$ for the reach. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "inflow": { + "type": "string", + "longname": "inflow concentration", + "description": "real or character value that defines the concentration of inflow $(ML^{-3})$ for the reach. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting concentration for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed concentration for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage concentration flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concrain": { + "type": "array", + "set_in": "rp", + "description": "Rainfall concentration for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concevap": { + "type": "array", + "set_in": "rp", + "description": "Evaporation concentration for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concroff": { + "type": "array", + "set_in": "rp", + "description": "Runoff concentration for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "conciflw": { + "type": "array", + "set_in": "rp", + "description": "Inflow concentration for each reach.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "vnew": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Reach water volume at the end of the current time step.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "vold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Reach water volume at the start of the current time step.", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.toml new file mode 100644 index 00000000..b3fd313a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.toml @@ -0,0 +1,335 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-sft" +parent = "gwt-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of concentration auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of reach cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_concentration] +type = "keyword" +longname = "print calculated concentrations to listing file" +description = "keyword to indicate that the list of reach {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of reach flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save reach flows to budget file" +description = "keyword to indicate that reach flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.concentration_filerecord] +type = "record" +optional = true + +[blocks.options.fields.concentration_filerecord.fields.concentration] +type = "file" +longname = "concentration keyword" +description = "keyword to specify that record corresponds to concentration." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NREACHES. Reach information must be specified for every reach or the program will terminate with an error. The program will also terminate with an error if information for a reach is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting reach concentration" +description = "real value that defines the starting concentration for the reach." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each reach. The values of auxiliary variables must be present for each reach. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the reach cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.reachperioddata] +type = "list" + +[blocks.period.fields.reachperioddata.item] +type = "record" + +[blocks.period.fields.reachperioddata.item.fields.ifno] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the feature (reach) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES." +tagged = false + +[blocks.period.fields.reachperioddata.item.fields.reachsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the REACHSETTING string include: STATUS, CONCENTRATION, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms. For example, the Streamflow Package supports a 'DIVERSION' flow term. Diversion water will be routed using the calculated concentration of the reach." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.status] +type = "string" +longname = "reach concentration status" +description = "keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the reach. If a reach is inactive, then there will be no solute mass fluxes into or out of the reach and the inactive value will be written for the reach concentration. If a reach is constant, then the concentration for the reach will be fixed at the user specified value." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.concentration] +type = "keyword" +longname = "concentration keyword" +description = "keyword to specify that record corresponds to concentration." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.rainfall] +type = "string" +longname = "rainfall concentration" +description = "real or character value that defines the rainfall solute concentration $(ML^{-3})$ for the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.evaporation] +type = "string" +longname = "evaporation concentration" +description = "real or character value that defines the concentration of evaporated water $(ML^{-3})$ for the reach. If this concentration value is larger than the simulated concentration in the reach, then the evaporated water will be removed at the same concentration as the reach. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.runoff] +type = "string" +longname = "runoff concentration" +description = "real or character value that defines the concentration of runoff $(ML^{-3})$ for the reach. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.inflow] +type = "string" +longname = "inflow concentration" +description = "real or character value that defines the concentration of inflow $(ML^{-3})$ for the reach. Value must be greater than or equal to zero. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.reachperioddata.item.fields.reachsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting concentration for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed concentration for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage concentration flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concrain] +type = "array" +set_in = "rp" +description = "Rainfall concentration for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concevap] +type = "array" +set_in = "rp" +description = "Evaporation concentration for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concroff] +type = "array" +set_in = "rp" +description = "Runoff concentration for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.conciflw] +type = "array" +set_in = "rp" +description = "Inflow concentration for each reach." +dtype = "double" +shape = [ + "ncv", +] + +[memory.vnew] +type = "array" +readonly = true +set_in = "cq" +description = "Reach water volume at the end of the current time step." +dtype = "double" +shape = [ + "ncv", +] + +[memory.vold] +type = "array" +readonly = true +set_in = "ad" +description = "Reach water volume at the start of the current time step." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.yaml new file mode 100644 index 00000000..f9f28496 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-sft.yaml @@ -0,0 +1,352 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-sft +parent: gwt-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWT name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of concentration auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated concentrations from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of reach cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of reach information will be written to the listing + file immediately after it is read. + optional: true + print_concentration: + type: keyword + longname: print calculated concentrations to listing file + description: keyword to indicate that the list of reach {#2} will be printed to the listing file + for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there + is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last + time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of reach flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save reach flows to budget file + description: keyword to indicate that reach flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + concentration_filerecord: + type: record + optional: true + fields: + concentration: + type: file + longname: concentration keyword + description: keyword to specify that record corresponds to concentration. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to + NREACHES. Reach information must be specified for every reach or the program will terminate + with an error. The program will also terminate with an error if information for a reach + is specified more than once. + tagged: false + strt: + type: double + longname: starting reach concentration + description: real value that defines the starting concentration for the reach. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each reach. The values + of auxiliary variables must be present for each reach. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the reach cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + reachperioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: reach number for this entry + description: integer value that defines the feature (reach) number associated with the specified + PERIOD data on the line. IFNO must be greater than zero and less than or equal to NREACHES. + tagged: false + reachsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the REACHSETTING string include: STATUS, CONCENTRATION, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the concentration + of associated with the corresponding flow terms. Concentrations cannot be specified for + all flow terms. For example, the Streamflow Package supports a ''DIVERSION'' flow term. Diversion + water will be routed using the calculated concentration of the reach.' + arms: + status: + type: string + longname: reach concentration status + description: keyword option to define reach status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be + calculated for the reach. If a reach is inactive, then there will be no solute mass + fluxes into or out of the reach and the inactive value will be written for the reach + concentration. If a reach is constant, then the concentration for the reach will + be fixed at the user specified value. + concentration: + type: keyword + longname: concentration keyword + description: keyword to specify that record corresponds to concentration. + rainfall: + type: string + longname: rainfall concentration + description: real or character value that defines the rainfall solute concentration + $(ML^{-3})$ for the reach. If the Options block includes a TIMESERIESFILE entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + evaporation: + type: string + longname: evaporation concentration + description: real or character value that defines the concentration of evaporated water + $(ML^{-3})$ for the reach. If this concentration value is larger than the simulated + concentration in the reach, then the evaporated water will be removed at the same + concentration as the reach. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + time_series: true + runoff: + type: string + longname: runoff concentration + description: real or character value that defines the concentration of runoff $(ML^{-3})$ + for the reach. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + inflow: + type: string + longname: inflow concentration + description: real or character value that defines the concentration of inflow $(ML^{-3})$ + for the reach. Value must be greater than or equal to zero. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting concentration for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current concentration for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Concentration from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed concentration for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage concentration flow contribution for each control volume. + dtype: double + shape: + - ncv + concrain: + type: array + set_in: rp + description: Rainfall concentration for each reach. + dtype: double + shape: + - ncv + concevap: + type: array + set_in: rp + description: Evaporation concentration for each reach. + dtype: double + shape: + - ncv + concroff: + type: array + set_in: rp + description: Runoff concentration for each reach. + dtype: double + shape: + - ncv + conciflw: + type: array + set_in: rp + description: Inflow concentration for each reach. + dtype: double + shape: + - ncv + vnew: + type: array + readonly: true + set_in: cq + description: Reach water volume at the end of the current time step. + dtype: double + shape: + - ncv + vold: + type: array + readonly: true + set_in: ad + description: Reach water volume at the start of the current time step. + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json new file mode 100644 index 00000000..7b3b018c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json @@ -0,0 +1,291 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-src", + "parent": "gwt-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of mass loading rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of mass source cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of mass source information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of mass source flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that mass source flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "highest_saturated": { + "type": "keyword", + "longname": "apply source to highest saturated cell", + "description": "Apply mass source loading rate to specified CELLID or highest underlying cell with a cell saturation greater than zero. The highest_saturated option has an additional complication for certain types of grids specified using the DISU Package. When the DISU Package is used, a cell may have more than one cell underlying it. If the overlying cell were to become inactive, there is no straightforward method for determining how to apportion the mass source loading rate to the underlying cells. In this case, the approach described by cite{modflowusg} is used. The mass source loading rate is assigned to the first active cell encountered (determined by searching through the underlying cell numbers from the lowest number to the highest number). In this manner, the total mass source loading rate is conserved; however, the spatial distribution of the applied mass source loading rate may not be maintained as layers become dry or wet during a simulation.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of sources", + "description": "integer value specifying the maximum number of sources cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "smassrate": { + "type": "double", + "longname": "mass source loading rate", + "description": "is the mass source loading rate. A positive value indicates addition of solute mass and a negative value indicates removal of solute mass. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each mass source. The values of auxiliary variables must be present for each mass source. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "well name", + "description": "name of the mass source cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "highest_sat": { + "set_in": "ar", + "source": "highest_saturated", + "type": "logical" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: smassrate.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "SRC", + "output": "ipakcb", + "obs_type": "SRC", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "SRC-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml new file mode 100644 index 00000000..24c62bf4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml @@ -0,0 +1,265 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-src" +parent = "gwt-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of mass loading rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of mass source cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of mass source information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of mass source flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that mass source flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.highest_saturated] +type = "keyword" +longname = "apply source to highest saturated cell" +description = "Apply mass source loading rate to specified CELLID or highest underlying cell with a cell saturation greater than zero. The highest_saturated option has an additional complication for certain types of grids specified using the DISU Package. When the DISU Package is used, a cell may have more than one cell underlying it. If the overlying cell were to become inactive, there is no straightforward method for determining how to apportion the mass source loading rate to the underlying cells. In this case, the approach described by cite{modflowusg} is used. The mass source loading rate is assigned to the first active cell encountered (determined by searching through the underlying cell numbers from the lowest number to the highest number). In this manner, the total mass source loading rate is conserved; however, the spatial distribution of the applied mass source loading rate may not be maintained as layers become dry or wet during a simulation." +optional = true + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of sources" +description = "integer value specifying the maximum number of sources cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.smassrate] +type = "double" +longname = "mass source loading rate" +description = "is the mass source loading rate. A positive value indicates addition of solute mass and a negative value indicates removal of solute mass. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each mass source. The values of auxiliary variables must be present for each mass source. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "well name" +description = "name of the mass source cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.highest_sat] +set_in = "ar" +source = "highest_saturated" +type = "logical" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: smassrate." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "SRC" +output = "ipakcb" +obs_type = "SRC" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "SRC-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml new file mode 100644 index 00000000..7d2de2b4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml @@ -0,0 +1,264 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-src +parent: gwt-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of mass loading rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of mass source + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of mass source information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of mass source flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that mass source flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + highest_saturated: + type: keyword + longname: apply source to highest saturated cell + description: Apply mass source loading rate to specified CELLID or highest underlying cell with + a cell saturation greater than zero. The highest_saturated option has an additional complication + for certain types of grids specified using the DISU Package. When the DISU Package is used, + a cell may have more than one cell underlying it. If the overlying cell were to become inactive, + there is no straightforward method for determining how to apportion the mass source loading + rate to the underlying cells. In this case, the approach described by cite{modflowusg} is used. + The mass source loading rate is assigned to the first active cell encountered (determined by + searching through the underlying cell numbers from the lowest number to the highest number). + In this manner, the total mass source loading rate is conserved; however, the spatial distribution + of the applied mass source loading rate may not be maintained as layers become dry or wet during + a simulation. + optional: true + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of sources + description: integer value specifying the maximum number of sources cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + smassrate: + type: double + longname: mass source loading rate + description: is the mass source loading rate. A positive value indicates addition of solute + mass and a negative value indicates removal of solute mass. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each mass source. The + values of auxiliary variables must be present for each mass source. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: well name + description: name of the mass source cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + highest_sat: + set_in: ar + source: highest_saturated + type: logical + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: smassrate.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: SRC + output: ipakcb + obs_type: SRC + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: SRC-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.json new file mode 100644 index 00000000..1452c2ad --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.json @@ -0,0 +1,103 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-ssm", + "parent": "gwt-nam", + "blocks": { + "options": { + "fields": { + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of SSM flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save calculated flows to budget file", + "description": "keyword to indicate that SSM flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + } + } + }, + "sources": { + "fields": { + "sources": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "pname": { + "type": "string", + "longname": "package name", + "description": "name of the flow package for which an auxiliary variable contains a source concentration. If this flow package is represented using an advanced transport package (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified here.", + "tagged": false + }, + "srctype": { + "type": "string", + "longname": "source type", + "description": "keyword indicating how concentration will be assigned for sources and sinks. Keyword must be specified as either AUX or AUXMIXED. For both options the user must provide an auxiliary variable in the corresponding flow package. The auxiliary variable must have the same name as the AUXNAME value that follows. If the AUX keyword is specified, then the auxiliary variable specified by the user will be assigned as the concentration value for groundwater sources (flows with a positive sign). For negative flow rates (sinks), groundwater will be withdrawn from the cell at the simulated concentration of the cell. The AUXMIXED option provides an alternative method for how to determine the concentration of sinks. If the cell concentration is larger than the user-specified auxiliary concentration, then the concentration of groundwater withdrawn from the cell will be assigned as the user-specified concentration. Alternatively, if the user-specified auxiliary concentration is larger than the cell concentration, then groundwater will be withdrawn at the cell concentration. Thus, the AUXMIXED option is designed to work with the Evapotranspiration (EVT) and Recharge (RCH) Packages where water may be withdrawn at a concentration that is less than the cell concentration.", + "tagged": false + }, + "auxname": { + "type": "string", + "longname": "auxiliary variable name", + "description": "name of the auxiliary variable in the package PNAME. This auxiliary variable must exist and be specified by the user in that package. The values in this auxiliary variable will be used to set the concentration associated with the flows for that boundary package.", + "tagged": false + } + } + } + } + } + }, + "fileinput": { + "fields": { + "fileinput": { + "type": "list", + "optional": true, + "item": { + "type": "record", + "fields": { + "pname": { + "type": "string", + "longname": "package name", + "description": "name of the flow package for which an auxiliary variable contains a source concentration. If this flow package is represented using an advanced transport package (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified here.", + "tagged": false + }, + "spc6": { + "type": "keyword", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a source sink mixing input file." + }, + "filein": { + "type": "keyword", + "longname": "file keyword", + "description": "keyword to specify that an input filename is expected next." + }, + "spc6_filename": { + "type": "string", + "longname": "spc file name", + "description": "character string that defines the path and filename for the file containing source and sink input data for the flow package. The SPC6_FILENAME file is a flexible input file that allows concentrations to be specified by stress period and with time series. Instructions for creating the SPC6_FILENAME input file are provided in the next section on file input for boundary concentrations.", + "tagged": false, + "case_sensitive": true + }, + "mixed": { + "type": "keyword", + "longname": "mixed keyword", + "description": "keyword to specify that these stress package boundaries will have the mixed condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED condition allows for water to be withdrawn at a concentration that is less than the cell concentration. It is intended primarily for representing evapotranspiration.", + "optional": true + } + } + } + } + } + } + }, + "memory": { + "pname_sources": { + "source": "pname", + "type": "string" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.toml new file mode 100644 index 00000000..45a889d7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.toml @@ -0,0 +1,81 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-ssm" +parent = "gwt-nam" + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of SSM flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save calculated flows to budget file" +description = "keyword to indicate that SSM flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.sources.fields.sources] +type = "list" +longname = "package list" + +[blocks.sources.fields.sources.item] +type = "record" + +[blocks.sources.fields.sources.item.fields.pname] +type = "string" +longname = "package name" +description = "name of the flow package for which an auxiliary variable contains a source concentration. If this flow package is represented using an advanced transport package (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified here." +tagged = false + +[blocks.sources.fields.sources.item.fields.srctype] +type = "string" +longname = "source type" +description = "keyword indicating how concentration will be assigned for sources and sinks. Keyword must be specified as either AUX or AUXMIXED. For both options the user must provide an auxiliary variable in the corresponding flow package. The auxiliary variable must have the same name as the AUXNAME value that follows. If the AUX keyword is specified, then the auxiliary variable specified by the user will be assigned as the concentration value for groundwater sources (flows with a positive sign). For negative flow rates (sinks), groundwater will be withdrawn from the cell at the simulated concentration of the cell. The AUXMIXED option provides an alternative method for how to determine the concentration of sinks. If the cell concentration is larger than the user-specified auxiliary concentration, then the concentration of groundwater withdrawn from the cell will be assigned as the user-specified concentration. Alternatively, if the user-specified auxiliary concentration is larger than the cell concentration, then groundwater will be withdrawn at the cell concentration. Thus, the AUXMIXED option is designed to work with the Evapotranspiration (EVT) and Recharge (RCH) Packages where water may be withdrawn at a concentration that is less than the cell concentration." +tagged = false + +[blocks.sources.fields.sources.item.fields.auxname] +type = "string" +longname = "auxiliary variable name" +description = "name of the auxiliary variable in the package PNAME. This auxiliary variable must exist and be specified by the user in that package. The values in this auxiliary variable will be used to set the concentration associated with the flows for that boundary package." +tagged = false + +[blocks.fileinput.fields.fileinput] +type = "list" +optional = true + +[blocks.fileinput.fields.fileinput.item] +type = "record" + +[blocks.fileinput.fields.fileinput.item.fields.pname] +type = "string" +longname = "package name" +description = "name of the flow package for which an auxiliary variable contains a source concentration. If this flow package is represented using an advanced transport package (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified here." +tagged = false + +[blocks.fileinput.fields.fileinput.item.fields.spc6] +type = "keyword" +longname = "head keyword" +description = "keyword to specify that record corresponds to a source sink mixing input file." + +[blocks.fileinput.fields.fileinput.item.fields.filein] +type = "keyword" +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." + +[blocks.fileinput.fields.fileinput.item.fields.spc6_filename] +type = "string" +longname = "spc file name" +description = "character string that defines the path and filename for the file containing source and sink input data for the flow package. The SPC6_FILENAME file is a flexible input file that allows concentrations to be specified by stress period and with time series. Instructions for creating the SPC6_FILENAME input file are provided in the next section on file input for boundary concentrations." +tagged = false +case_sensitive = true + +[blocks.fileinput.fields.fileinput.item.fields.mixed] +type = "keyword" +longname = "mixed keyword" +description = "keyword to specify that these stress package boundaries will have the mixed condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED condition allows for water to be withdrawn at a concentration that is less than the cell concentration. It is intended primarily for representing evapotranspiration." +optional = true + +[memory.pname_sources] +source = "pname" +type = "string" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.yaml new file mode 100644 index 00000000..3a54e28b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-ssm.yaml @@ -0,0 +1,110 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-ssm +parent: gwt-nam +blocks: + options: + fields: + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of SSM flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save calculated flows to budget file + description: keyword to indicate that SSM flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + sources: + fields: + sources: + type: list + longname: package list + item: + type: record + fields: + pname: + type: string + longname: package name + description: name of the flow package for which an auxiliary variable contains a source + concentration. If this flow package is represented using an advanced transport package + (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified + here. + tagged: false + srctype: + type: string + longname: source type + description: keyword indicating how concentration will be assigned for sources and sinks. Keyword + must be specified as either AUX or AUXMIXED. For both options the user must provide an + auxiliary variable in the corresponding flow package. The auxiliary variable must have + the same name as the AUXNAME value that follows. If the AUX keyword is specified, then + the auxiliary variable specified by the user will be assigned as the concentration value + for groundwater sources (flows with a positive sign). For negative flow rates (sinks), + groundwater will be withdrawn from the cell at the simulated concentration of the cell. The + AUXMIXED option provides an alternative method for how to determine the concentration + of sinks. If the cell concentration is larger than the user-specified auxiliary concentration, + then the concentration of groundwater withdrawn from the cell will be assigned as the + user-specified concentration. Alternatively, if the user-specified auxiliary concentration + is larger than the cell concentration, then groundwater will be withdrawn at the cell + concentration. Thus, the AUXMIXED option is designed to work with the Evapotranspiration + (EVT) and Recharge (RCH) Packages where water may be withdrawn at a concentration that + is less than the cell concentration. + tagged: false + auxname: + type: string + longname: auxiliary variable name + description: name of the auxiliary variable in the package PNAME. This auxiliary variable + must exist and be specified by the user in that package. The values in this auxiliary + variable will be used to set the concentration associated with the flows for that boundary + package. + tagged: false + fileinput: + fields: + fileinput: + type: list + optional: true + item: + type: record + fields: + pname: + type: string + longname: package name + description: name of the flow package for which an auxiliary variable contains a source + concentration. If this flow package is represented using an advanced transport package + (SFT, LKT, MWT, or UZT), then the advanced transport package will override SSM terms specified + here. + tagged: false + spc6: + type: keyword + longname: head keyword + description: keyword to specify that record corresponds to a source sink mixing input file. + filein: + type: keyword + longname: file keyword + description: keyword to specify that an input filename is expected next. + spc6_filename: + type: string + longname: spc file name + description: character string that defines the path and filename for the file containing + source and sink input data for the flow package. The SPC6_FILENAME file is a flexible + input file that allows concentrations to be specified by stress period and with time series. + Instructions for creating the SPC6_FILENAME input file are provided in the next section + on file input for boundary concentrations. + tagged: false + case_sensitive: true + mixed: + type: keyword + longname: mixed keyword + description: keyword to specify that these stress package boundaries will have the mixed + condition. The MIXED condition is described in the SOURCES block for AUXMIXED. The MIXED + condition allows for water to be withdrawn at a concentration that is less than the cell + concentration. It is intended primarily for representing evapotranspiration. + optional: true +memory: + pname_sources: + source: pname + type: string diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.json new file mode 100644 index 00000000..97994ed4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.json @@ -0,0 +1,323 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "gwt-uzt", + "parent": "gwt-nam", + "multi": true, + "subtype": "advanced", + "dims": { + "auxiliary": { + "value": "len(auxiliary)" + }, + "ncv": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "flow_package_name": { + "type": "string", + "longname": "keyword to specify name of corresponding flow package", + "description": "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file).", + "optional": true + }, + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "flow_package_auxiliary_name": { + "type": "string", + "longname": "keyword to specify name of concentration auxiliary variable in flow package", + "description": "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of unsaturated zone flow cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of unsaturated zone flow information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_concentration": { + "type": "keyword", + "longname": "print calculated concentrations to listing file", + "description": "keyword to indicate that the list of UZF cell {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of unsaturated zone flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save UZT cell flows to budget file", + "description": "keyword to indicate that unsaturated zone flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "concentration_filerecord": { + "type": "record", + "optional": true, + "fields": { + "concentration": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration.", + "mode": "fileout" + } + } + }, + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "UZF cell number for this entry", + "description": "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. Unsaturated zone flow information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once.", + "tagged": false + }, + "strt": { + "type": "double", + "longname": "starting UZF cell concentration", + "description": "real value that defines the starting concentration for the unsaturated zone flow cell.", + "tagged": false + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each unsaturated zone flow. The values of auxiliary variables must be present for each unsaturated zone flow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "UZF cell name", + "description": "name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + } + } + } + }, + "period": { + "fields": { + "uztperioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "ifno": { + "type": "integer", + "longname": "unsaturated zone flow cell number for this entry", + "description": "integer value that defines the feature (UZF object) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS.", + "tagged": false + }, + "uztsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the UZTSETTING string include: STATUS, CONCENTRATION, INFILTRATION, UZET, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms.", + "arms": { + "status": { + "type": "string", + "longname": "unsaturated zone flow cell concentration status", + "description": "keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the UZF cell. If a UZF cell is inactive, then there will be no solute mass fluxes into or out of the UZF cell and the inactive value will be written for the UZF cell concentration. If a UZF cell is constant, then the concentration for the UZF cell will be fixed at the user specified value." + }, + "concentration": { + "type": "keyword", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to concentration." + }, + "infiltration": { + "type": "string", + "longname": "infiltration concentration", + "description": "real or character value that defines the infiltration solute concentration $(ML^{-3})$ for the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "uzet": { + "type": "string", + "longname": "unsaturated zone et concentration", + "description": "real or character value that defines the concentration of unsaturated zone evapotranspiration water $(ML^{-3})$ for the UZF cell. If this concentration value is larger than the simulated concentration in the UZF cell, then the unsaturated zone ET water will be removed at the same concentration as the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "auxiliaryrecord": { + "type": "record", + "fields": { + "auxiliary": { + "type": "keyword", + "description": "keyword for specifying auxiliary variable." + }, + "auxname": { + "type": "string", + "description": "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored.", + "tagged": false + }, + "auxval": { + "type": "double", + "longname": "auxiliary variable value", + "description": "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "ncv": { + "readonly": true, + "set_in": "ar", + "description": "Number of control volumes. Assigned from the linked flow package during AR.", + "type": "integer" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "description": "Starting concentration for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xnewpak": { + "type": "array", + "set_in": "ca", + "description": "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "xoldpak": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD).", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Boundary activity flag for each control volume.", + "dtype": "integer", + "shape": [ + "ncv" + ] + }, + "concfeat": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Computed concentration for each feature. Set from XNEWPAK after solver convergence.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "qsto": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Storage concentration flow contribution for each control volume.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concinfl": { + "type": "array", + "set_in": "rp", + "description": "Infiltration concentration for each UZF cell.", + "dtype": "double", + "shape": [ + "ncv" + ] + }, + "concuzet": { + "type": "array", + "set_in": "rp", + "description": "ET concentration for each UZF cell.", + "dtype": "double", + "shape": [ + "ncv" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.toml new file mode 100644 index 00000000..51a52068 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.toml @@ -0,0 +1,285 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "gwt-uzt" +parent = "gwt-nam" +multi = true +subtype = "advanced" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.ncv] +set_in = "ar" + +[blocks.options.fields.flow_package_name] +type = "string" +longname = "keyword to specify name of corresponding flow package" +description = "keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWT name file)." +optional = true + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.flow_package_auxiliary_name] +type = "string" +longname = "keyword to specify name of concentration auxiliary variable in flow package" +description = "keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated concentrations from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of unsaturated zone flow cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of unsaturated zone flow information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_concentration] +type = "keyword" +longname = "print calculated concentrations to listing file" +description = "keyword to indicate that the list of UZF cell {#2} will be printed to the listing file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of unsaturated zone flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save UZT cell flows to budget file" +description = "keyword to indicate that unsaturated zone flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.concentration_filerecord] +type = "record" +optional = true + +[blocks.options.fields.concentration_filerecord.fields.concentration] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." +mode = "fileout" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.packagedata.fields.packagedata] +type = "list" + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.ifno] +type = "integer" +longname = "UZF cell number for this entry" +description = "integer value that defines the feature (UZF object) number associated with the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS. Unsaturated zone flow information must be specified for every UZF cell or the program will terminate with an error. The program will also terminate with an error if information for a UZF cell is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.strt] +type = "double" +longname = "starting UZF cell concentration" +description = "real value that defines the starting concentration for the unsaturated zone flow cell." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each unsaturated zone flow. The values of auxiliary variables must be present for each unsaturated zone flow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "UZF cell name" +description = "name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.period.fields.uztperioddata] +type = "list" + +[blocks.period.fields.uztperioddata.item] +type = "record" + +[blocks.period.fields.uztperioddata.item.fields.ifno] +type = "integer" +longname = "unsaturated zone flow cell number for this entry" +description = "integer value that defines the feature (UZF object) number associated with the specified PERIOD data on the line. IFNO must be greater than zero and less than or equal to NUZFCELLS." +tagged = false + +[blocks.period.fields.uztperioddata.item.fields.uztsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the UZTSETTING string include: STATUS, CONCENTRATION, INFILTRATION, UZET, and AUXILIARY. These settings are used to assign the concentration of associated with the corresponding flow terms. Concentrations cannot be specified for all flow terms." + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.status] +type = "string" +longname = "unsaturated zone flow cell concentration status" +description = "keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be calculated for the UZF cell. If a UZF cell is inactive, then there will be no solute mass fluxes into or out of the UZF cell and the inactive value will be written for the UZF cell concentration. If a UZF cell is constant, then the concentration for the UZF cell will be fixed at the user specified value." + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.concentration] +type = "keyword" +longname = "stage keyword" +description = "keyword to specify that record corresponds to concentration." + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.infiltration] +type = "string" +longname = "infiltration concentration" +description = "real or character value that defines the infiltration solute concentration $(ML^{-3})$ for the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.uzet] +type = "string" +longname = "unsaturated zone et concentration" +description = "real or character value that defines the concentration of unsaturated zone evapotranspiration water $(ML^{-3})$ for the UZF cell. If this concentration value is larger than the simulated concentration in the UZF cell, then the unsaturated zone ET water will be removed at the same concentration as the UZF cell. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.auxiliaryrecord] +type = "record" + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.auxiliaryrecord.fields.auxiliary] +type = "keyword" +description = "keyword for specifying auxiliary variable." + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.auxiliaryrecord.fields.auxname] +type = "string" +description = "name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored." +tagged = false + +[blocks.period.fields.uztperioddata.item.fields.uztsetting.arms.auxiliaryrecord.fields.auxval] +type = "double" +longname = "auxiliary variable value" +description = "value for the auxiliary variable. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[memory.ncv] +readonly = true +set_in = "ar" +description = "Number of control volumes. Assigned from the linked flow package during AR." +type = "integer" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +description = "Starting concentration for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xnewpak] +type = "array" +set_in = "ca" +description = "Current concentration for each control volume. Initialized from STRT during AR; updated by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +dtype = "double" +shape = [ + "ncv", +] + +[memory.xoldpak] +type = "array" +readonly = true +set_in = "ad" +description = "Concentration from the end of the previous time step. Copied from XNEWPAK at the start of advance (AD)." +dtype = "double" +shape = [ + "ncv", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Boundary activity flag for each control volume." +dtype = "integer" +shape = [ + "ncv", +] + +[memory.concfeat] +type = "array" +readonly = true +set_in = "cq" +description = "Computed concentration for each feature. Set from XNEWPAK after solver convergence." +dtype = "double" +shape = [ + "ncv", +] + +[memory.qsto] +type = "array" +readonly = true +set_in = "cq" +description = "Storage concentration flow contribution for each control volume." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concinfl] +type = "array" +set_in = "rp" +description = "Infiltration concentration for each UZF cell." +dtype = "double" +shape = [ + "ncv", +] + +[memory.concuzet] +type = "array" +set_in = "rp" +description = "ET concentration for each UZF cell." +dtype = "double" +shape = [ + "ncv", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.yaml new file mode 100644 index 00000000..d8a87845 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-uzt.yaml @@ -0,0 +1,308 @@ +type: package +schema_version: 2.0.0.dev3 +name: gwt-uzt +parent: gwt-nam +multi: true +subtype: advanced +dims: + auxiliary: + value: len(auxiliary) + ncv: + set_in: ar +blocks: + options: + fields: + flow_package_name: + type: string + longname: keyword to specify name of corresponding flow package + description: keyword to specify the name of the corresponding flow package. If not specified, + then the corresponding flow package must have the same name as this advanced transport package + (the name associated with this package in the GWT name file). + optional: true + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + flow_package_auxiliary_name: + type: string + longname: keyword to specify name of concentration auxiliary variable in flow package + description: keyword to specify the name of an auxiliary variable in the corresponding flow package. If + specified, then the simulated concentrations from this advanced transport package will be copied + into the auxiliary variable specified with this name. Note that the flow package must have + an auxiliary variable with this name or the program will terminate with an error. If the flows + for this advanced transport package are read from a file, then this option will have no effect. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of unsaturated + zone flow cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of unsaturated zone flow information will be written + to the listing file immediately after it is read. + optional: true + print_concentration: + type: keyword + longname: print calculated concentrations to listing file + description: keyword to indicate that the list of UZF cell {#2} will be printed to the listing + file for every stress period in which 'CONCENTRATION PRINT' is specified in Output Control. If + there is no Output Control option and PRINT_{#3} is specified, then {#2} are printed for the + last time step of each stress period. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of unsaturated zone flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save UZT cell flows to budget file + description: keyword to indicate that unsaturated zone flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + concentration_filerecord: + type: record + optional: true + fields: + concentration: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + mode: fileout + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: UZF cell number for this entry + description: integer value that defines the feature (UZF object) number associated with + the specified PACKAGEDATA data on the line. IFNO must be greater than zero and less than + or equal to NUZFCELLS. Unsaturated zone flow information must be specified for every UZF + cell or the program will terminate with an error. The program will also terminate with + an error if information for a UZF cell is specified more than once. + tagged: false + strt: + type: double + longname: starting UZF cell concentration + description: real value that defines the starting concentration for the unsaturated zone + flow cell. + tagged: false + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each unsaturated zone + flow. The values of auxiliary variables must be present for each unsaturated zone flow. + The values must be specified in the order of the auxiliary variables specified in the + OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: UZF cell name + description: name of the unsaturated zone flow cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + period: + fields: + uztperioddata: + type: list + item: + type: record + fields: + ifno: + type: integer + longname: unsaturated zone flow cell number for this entry + description: integer value that defines the feature (UZF object) number associated with + the specified PERIOD data on the line. IFNO must be greater than zero and less than or + equal to NUZFCELLS. + tagged: false + uztsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the UZTSETTING string include: STATUS, CONCENTRATION, INFILTRATION, + UZET, and AUXILIARY. These settings are used to assign the concentration of associated + with the corresponding flow terms. Concentrations cannot be specified for all flow terms.' + arms: + status: + type: string + longname: unsaturated zone flow cell concentration status + description: keyword option to define UZF cell status. STATUS can be ACTIVE, INACTIVE, + or CONSTANT. By default, STATUS is ACTIVE, which means that concentration will be + calculated for the UZF cell. If a UZF cell is inactive, then there will be no solute + mass fluxes into or out of the UZF cell and the inactive value will be written for + the UZF cell concentration. If a UZF cell is constant, then the concentration for + the UZF cell will be fixed at the user specified value. + concentration: + type: keyword + longname: stage keyword + description: keyword to specify that record corresponds to concentration. + infiltration: + type: string + longname: infiltration concentration + description: real or character value that defines the infiltration solute concentration + $(ML^{-3})$ for the UZF cell. If the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + time_series: true + uzet: + type: string + longname: unsaturated zone et concentration + description: real or character value that defines the concentration of unsaturated zone + evapotranspiration water $(ML^{-3})$ for the UZF cell. If this concentration value + is larger than the simulated concentration in the UZF cell, then the unsaturated zone + ET water will be removed at the same concentration as the UZF cell. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. + time_series: true + auxiliaryrecord: + type: record + fields: + auxiliary: + type: keyword + description: keyword for specifying auxiliary variable. + auxname: + type: string + description: name for the auxiliary variable to be assigned AUXVAL. AUXNAME must + match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME + does not match one of the auxiliary variable names defined in the OPTIONS block + the data are ignored. + tagged: false + auxval: + type: double + longname: auxiliary variable value + description: value for the auxiliary variable. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. + tagged: false + time_series: true +memory: + ncv: + readonly: true + set_in: ar + description: Number of control volumes. Assigned from the linked flow package during AR. + type: integer + strt: + type: array + set_in: ar + source: strt + description: Starting concentration for each control volume. + dtype: double + shape: + - ncv + xnewpak: + type: array + set_in: ca + description: Current concentration for each control volume. Initialized from STRT during AR; updated + by the solver at each Picard iteration (CA). API-written values serve as initial guesses and are + overwritten by the solver. + dtype: double + shape: + - ncv + xoldpak: + type: array + readonly: true + set_in: ad + description: Concentration from the end of the previous time step. Copied from XNEWPAK at the start + of advance (AD). + dtype: double + shape: + - ncv + ibound: + type: array + set_in: ar + description: Boundary activity flag for each control volume. + dtype: integer + shape: + - ncv + concfeat: + type: array + readonly: true + set_in: cq + description: Computed concentration for each feature. Set from XNEWPAK after solver convergence. + dtype: double + shape: + - ncv + qsto: + type: array + readonly: true + set_in: cq + description: Storage concentration flow contribution for each control volume. + dtype: double + shape: + - ncv + concinfl: + type: array + set_in: rp + description: Infiltration concentration for each UZF cell. + dtype: double + shape: + - ncv + concuzet: + type: array + set_in: rp + description: ET concentration for each UZF cell. + dtype: double + shape: + - ncv diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json new file mode 100644 index 00000000..0324e742 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-cdb", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of critical depth boundaries", + "description": "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CDB", + "output": "ipakcb", + "obs_type": "CDB", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "CDB-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml new file mode 100644 index 00000000..2d785a5c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-cdb" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of critical depth boundaries" +description = "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CDB" +output = "ipakcb" +obs_type = "CDB" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "CDB-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml new file mode 100644 index 00000000..91e57bbc --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml @@ -0,0 +1,239 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-cdb +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of critical + depth boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of critical depth boundary information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of critical depth boundary flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that critical depth boundary flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of critical depth boundaries + description: integer value specifying the maximum number of critical depth boundary cells that + will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CDB + output: ipakcb + obs_type: CDB + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: CDB-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json new file mode 100644 index 00000000..a5bd4860 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-chd", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of CHD head value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant-head cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print CHD flows to listing file", + "description": "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant heads", + "description": "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "head": { + "type": "double", + "longname": "head value assigned to constant head", + "description": "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant head boundary name", + "description": "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: head.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CHD", + "output": "ipakcb", + "obs_type": "CHD", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml new file mode 100644 index 00000000..f988662f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml @@ -0,0 +1,242 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-chd" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of CHD head value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant-head cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print CHD flows to listing file" +description = "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant heads" +description = "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.head] +type = "double" +longname = "head value assigned to constant head" +description = "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant head boundary name" +description = "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: head." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CHD" +output = "ipakcb" +obs_type = "CHD" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml new file mode 100644 index 00000000..07224566 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml @@ -0,0 +1,234 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-chd +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of CHD head value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant-head + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant-head information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print CHD flows to listing file + description: keyword to indicate that the list of constant-head flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that constant-head flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant heads + description: integer value specifying the maximum number of constant-head cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + head: + type: double + longname: head value assigned to constant head + description: is the head at the boundary. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant head. The + values of auxiliary variables must be present for each constant head. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant head boundary name + description: name of the constant head boundary cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: head.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CHD + output: ipakcb + obs_type: CHD + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.json new file mode 100644 index 00000000..e27e7696 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.json @@ -0,0 +1,119 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-cxs", + "parent": "olf-nam", + "dims": { + "nsections": { + "value": "nsections", + "scope": "model" + }, + "npoints": { + "value": "npoints", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nsections": { + "type": "integer", + "longname": "number of reaches", + "description": "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + }, + "npoints": { + "type": "integer", + "longname": "total number of points defined for all reaches", + "description": "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "idcxs": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once.", + "tagged": false + }, + "nxspoints": { + "type": "integer", + "longname": "number of points used to define cross section", + "description": "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than zero or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension.", + "tagged": false + } + } + }, + "shape": [ + "nsections" + ] + } + } + }, + "crosssectiondata": { + "fields": { + "crosssectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "xfraction": { + "type": "double", + "longname": "fractional width", + "description": "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH).", + "tagged": false + }, + "height": { + "type": "double", + "longname": "depth", + "description": "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero.", + "tagged": false + }, + "manfraction": { + "type": "double", + "longname": "Manning's roughness coefficient", + "description": "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line.", + "tagged": false + } + } + }, + "shape": [ + "npoints" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "nsections": { + "set_in": "ar", + "source": "nsections", + "type": "integer" + }, + "npoints": { + "set_in": "ar", + "source": "npoints", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.toml new file mode 100644 index 00000000..5a554fab --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.toml @@ -0,0 +1,91 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-cxs" +parent = "olf-nam" + +[dims.nsections] +value = "nsections" +scope = "model" + +[dims.npoints] +value = "npoints" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.dimensions.fields.nsections] +type = "integer" +longname = "number of reaches" +description = "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + +[blocks.dimensions.fields.npoints] +type = "integer" +longname = "total number of points defined for all reaches" +description = "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nsections", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.idcxs] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.nxspoints] +type = "integer" +longname = "number of points used to define cross section" +description = "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than zero or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata] +type = "list" +shape = [ + "npoints", +] + +[blocks.crosssectiondata.fields.crosssectiondata.item] +type = "record" + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.xfraction] +type = "double" +longname = "fractional width" +description = "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH)." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.height] +type = "double" +longname = "depth" +description = "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.manfraction] +type = "double" +longname = "Manning's roughness coefficient" +description = "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line." +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.nsections] +set_in = "ar" +source = "nsections" +type = "integer" + +[memory.npoints] +set_in = "ar" +source = "npoints" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.yaml new file mode 100644 index 00000000..796ef9d1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cxs.yaml @@ -0,0 +1,106 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-cxs +parent: olf-nam +dims: + nsections: + value: nsections + scope: model + npoints: + value: npoints + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of stream reach information will be written to + the listing file immediately after it is read. + optional: true + dimensions: + fields: + nsections: + type: integer + longname: number of reaches + description: integer value specifying the number of cross sections that will be defined. There + must be NSECTIONS entries in the PACKAGEDATA block. + npoints: + type: integer + longname: total number of points defined for all reaches + description: integer value specifying the total number of cross-section points defined for all + reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + idcxs: + type: integer + longname: reach number for this entry + description: integer value that defines the cross section number associated with the specified + PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to + NSECTIONS. Information must be specified for every section or the program will terminate + with an error. The program will also terminate with an error if information for a section + is specified more than once. + tagged: false + nxspoints: + type: integer + longname: number of points used to define cross section + description: integer value that defines the number of points used to define the define the + shape of a section. NXSPOINTS must be greater than zero or the program will terminate + with an error. NXSPOINTS defines the number of points that must be entered for the reach + in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS + dimension. + tagged: false + shape: + - nsections + crosssectiondata: + fields: + crosssectiondata: + type: list + item: + type: record + fields: + xfraction: + type: double + longname: fractional width + description: real value that defines the station (x) data for the cross-section as a fraction + of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but + can be greater than one. XFRACTION values can be used to decrease or increase the width + of a reach from the specified reach width (WIDTH). + tagged: false + height: + type: double + longname: depth + description: real value that is the height relative to the top of the lowest elevation of + the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT + must be greater than or equal to zero and at least one cross-section height must be equal + to zero. + tagged: false + manfraction: + type: double + longname: Manning's roughness coefficient + description: real value that defines the Manning's roughness coefficient data for the cross-section + as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding + to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION + is applied from the XFRACTION value on the same line to the XFRACTION value on the next + line. + tagged: false + shape: + - npoints +memory: + iprpak: + set_in: ar + source: print_input + type: integer + nsections: + set_in: ar + source: nsections + type: integer + npoints: + set_in: ar + source: npoints + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.json new file mode 100644 index 00000000..3adecc8f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.json @@ -0,0 +1,160 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-dfw", + "parent": "olf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "central_in_space": { + "type": "keyword", + "longname": "use central in space weighting", + "description": "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches.", + "optional": true + }, + "length_conversion": { + "type": "double", + "longname": "length conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters.", + "optional": true + }, + "time_conversion": { + "type": "double", + "longname": "time conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save DFW flows", + "description": "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print DFW flows to listing file", + "description": "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells.", + "optional": true + }, + "save_velocity": { + "type": "keyword", + "longname": "keyword to save velocity", + "description": "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "dev_swr_conductance": { + "type": "keyword", + "longname": "use SWR conductance formulation", + "description": "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "manningsn": { + "type": "array", + "longname": "mannings roughness coefficient", + "description": "mannings roughness coefficient", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "longname": "cross section number", + "description": "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "icentral": { + "set_in": "ar", + "source": "central_in_space", + "type": "integer" + }, + "lengthconv": { + "set_in": "ar", + "source": "length_conversion", + "type": "double" + }, + "timeconv": { + "set_in": "ar", + "source": "time_conversion", + "type": "double" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "isavvelocity": { + "set_in": "ar", + "source": "save_velocity", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "iswrcond": { + "set_in": "ar", + "source": "dev_swr_conductance", + "type": "integer" + }, + "manningsn": { + "type": "array", + "set_in": "ar", + "source": "manningsn", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "set_in": "ar", + "source": "idcxs", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.toml new file mode 100644 index 00000000..7fdd3d50 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.toml @@ -0,0 +1,142 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-dfw" +parent = "olf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.central_in_space] +type = "keyword" +longname = "use central in space weighting" +description = "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches." +optional = true + +[blocks.options.fields.length_conversion] +type = "double" +longname = "length conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters." +optional = true + +[blocks.options.fields.time_conversion] +type = "double" +longname = "time conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save DFW flows" +description = "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print DFW flows to listing file" +description = "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells." +optional = true + +[blocks.options.fields.save_velocity] +type = "keyword" +longname = "keyword to save velocity" +description = "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.dev_swr_conductance] +type = "keyword" +longname = "use SWR conductance formulation" +description = "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005." +optional = true + +[blocks.griddata.fields.manningsn] +type = "array" +longname = "mannings roughness coefficient" +description = "mannings roughness coefficient" +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idcxs] +type = "array" +longname = "cross section number" +description = "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[memory.icentral] +set_in = "ar" +source = "central_in_space" +type = "integer" + +[memory.lengthconv] +set_in = "ar" +source = "length_conversion" +type = "double" + +[memory.timeconv] +set_in = "ar" +source = "time_conversion" +type = "double" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.isavvelocity] +set_in = "ar" +source = "save_velocity" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.iswrcond] +set_in = "ar" +source = "dev_swr_conductance" +type = "integer" + +[memory.manningsn] +type = "array" +set_in = "ar" +source = "manningsn" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idcxs] +type = "array" +set_in = "ar" +source = "idcxs" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.yaml new file mode 100644 index 00000000..cd9d3f77 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dfw.yaml @@ -0,0 +1,146 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-dfw +parent: olf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + central_in_space: + type: keyword + longname: use central in space weighting + description: keyword to indicate conductance should be calculated using central-in-space weighting + instead of the default upstream weighting approach. This option should be used with caution + as it does not work well unless all of the stream reaches are saturated. With this option, + there is no way for water to flow into a dry reach from connected reaches. + optional: true + length_conversion: + type: double + longname: length conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 + when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. + LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters. + optional: true + time_conversion: + type: double + longname: time conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, + and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years + in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS + are seconds. + optional: true + save_flows: + type: keyword + longname: keyword to save DFW flows + description: keyword to indicate that budget flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + print_flows: + type: keyword + longname: keyword to print DFW flows to listing file + description: keyword to indicate that calculated flows between cells will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. + If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. This option can produce extremely large list + files because all cell-by-cell flows are printed. It should only be used with the DFW Package + for models that have a small number of cells. + optional: true + save_velocity: + type: keyword + longname: keyword to save velocity + description: keyword to indicate that x, y, and z components of velocity will be calculated at + cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output + Control. If this option is activated, then additional information may be required in the discretization + packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must + be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified + for the GWF Exchange as an auxiliary variable. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + dev_swr_conductance: + type: keyword + longname: use SWR conductance formulation + description: use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005. + optional: true + griddata: + fields: + manningsn: + type: array + longname: mannings roughness coefficient + description: mannings roughness coefficient + dtype: double + shape: + - nodes + idcxs: + type: array + longname: cross section number + description: integer value indication the cross section identifier in the Cross Section Package + that applies to the reach. If not provided then reach will be treated as hydraulically wide. + optional: true + dtype: integer + shape: + - nodes +memory: + icentral: + set_in: ar + source: central_in_space + type: integer + lengthconv: + set_in: ar + source: length_conversion + type: double + timeconv: + set_in: ar + source: time_conversion + type: double + ipakcb: + set_in: ar + source: save_flows + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + isavvelocity: + set_in: ar + source: save_velocity + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + iswrcond: + set_in: ar + source: dev_swr_conductance + type: integer + manningsn: + type: array + set_in: ar + source: manningsn + dtype: double + shape: + - nodes + idcxs: + type: array + set_in: ar + source: idcxs + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.json new file mode 100644 index 00000000..9df75637 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.json @@ -0,0 +1,207 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-dis2d", + "parent": "olf-nam", + "dims": { + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "bottom": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.toml new file mode 100644 index 00000000..1b32d563 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.toml @@ -0,0 +1,185 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-dis2d" +parent = "olf-nam" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.bottom] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "ncol", + "nrow", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.yaml new file mode 100644 index 00000000..1099dd73 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-dis2d.yaml @@ -0,0 +1,180 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-dis2d +parent: olf-nam +dims: + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nrow * ncol + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + dtype: double + shape: + - nrow + bottom: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + dtype: double + shape: + - ncol + - nrow + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - ncol + - nrow +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - ncol + - nrow + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.json new file mode 100644 index 00000000..c2e876dd --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-disv1d", + "parent": "olf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of linear features", + "description": "is the number of linear cells." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y, z) vertex pairs used to characterize the model grid.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "length": { + "type": "array", + "longname": "length", + "description": "length for each one-dimensional cell", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "width": { + "type": "array", + "longname": "width", + "description": "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "longname": "bottom elevation for the one-dimensional cell", + "description": "bottom elevation for the one-dimensional cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the cell2d number. Records in the cell2d block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "fdc": { + "type": "double", + "longname": "fractional distance to the cell center", + "description": "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "number of cell vertices", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "length": { + "type": "array", + "set_in": "ar", + "source": "length", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "width": { + "type": "array", + "set_in": "ar", + "source": "width", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.toml new file mode 100644 index 00000000..491b0922 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.toml @@ -0,0 +1,234 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-disv1d" +parent = "olf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of linear features" +description = "is the number of linear cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y, z) vertex pairs used to characterize the model grid." +optional = true + +[blocks.griddata.fields.length] +type = "array" +longname = "length" +description = "length for each one-dimensional cell" +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.width] +type = "array" +longname = "width" +description = "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bottom] +type = "array" +longname = "bottom elevation for the one-dimensional cell" +description = "bottom elevation for the one-dimensional cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the cell2d number. Records in the cell2d block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.fdc] +type = "double" +longname = "fractional distance to the cell center" +description = "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "number of cell vertices" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.length] +type = "array" +set_in = "ar" +source = "length" +dtype = "double" +shape = [ + "nodes", +] + +[memory.width] +type = "array" +set_in = "ar" +source = "width" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.yaml new file mode 100644 index 00000000..592fe3f7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv1d.yaml @@ -0,0 +1,234 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-disv1d +parent: olf-nam +dims: + nodes: + value: nodes + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of linear features + description: is the number of linear cells. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y, z) vertex pairs used to characterize the model grid. + optional: true + griddata: + fields: + length: + type: array + longname: length + description: length for each one-dimensional cell + dtype: double + shape: + - nodes + width: + type: array + longname: width + description: real value that defines the width for each one-dimensional cell. WIDTH must be greater + than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied + by the specified cross section x-fraction values. + dtype: double + shape: + - nodes + bottom: + type: array + longname: bottom elevation for the one-dimensional cell + description: bottom elevation for the one-dimensional cell. + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. + optional: true + dtype: integer + shape: + - nodes + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the cell2d number. Records in the cell2d block must be listed in consecutive + order from the first to the last. + tagged: false + fdc: + type: double + longname: fractional distance to the cell center + description: is the fractional distance to the cell center. FDC is relative to the first + vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center + of the line segment that defines the cell. If the value of FDC is 1, the cell center would + located at the last vertex. FDC values of 0 and 1 can be used to place the node at either + end of the cell which can be useful for cells with boundary conditions. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: number of cell vertices + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in the order that defines the line representing + the cell. Cells that are connected must share vertices. The bottom elevation of the cell + is calculated using the ZV of the first and last vertex point and FDC. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nvert: + set_in: ar + source: nvert + type: integer + length: + type: array + set_in: ar + source: length + dtype: double + shape: + - nodes + width: + type: array + set_in: ar + source: width + dtype: double + shape: + - nodes + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.json new file mode 100644 index 00000000..bd8ccf49 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.json @@ -0,0 +1,237 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-disv2d", + "parent": "olf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "bottom": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.toml new file mode 100644 index 00000000..bab72b55 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.toml @@ -0,0 +1,203 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-disv2d" +parent = "olf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.bottom] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.yaml new file mode 100644 index 00000000..bd72ee44 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-disv2d.yaml @@ -0,0 +1,206 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-disv2d +parent: olf-nam +dims: + nodes: + value: nodes + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + bottom: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN + value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - nodes + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nvert: + set_in: ar + source: nvert + type: integer + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json new file mode 100644 index 00000000..c952d26a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-evp", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of evaporation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of evaporation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print evaporation rates to listing file", + "description": "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save evaporation to budget file", + "description": "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of evaporation cells", + "description": "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "evaporation": { + "type": "double", + "longname": "evaporation rate", + "description": "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "evaporation name", + "description": "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "EVP", + "output": "ipakcb", + "obs_type": "EVP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml new file mode 100644 index 00000000..436e01e6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-evp" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of evaporation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of evaporation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print evaporation rates to listing file" +description = "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save evaporation to budget file" +description = "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of evaporation cells" +description = "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.evaporation] +type = "double" +longname = "evaporation rate" +description = "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "evaporation name" +description = "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "EVP" +output = "ipakcb" +obs_type = "EVP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml new file mode 100644 index 00000000..bd2635a3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-evp +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of evaporation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of evaporation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of evaporation information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print evaporation rates to listing file + description: keyword to indicate that the list of evaporation flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save evaporation to budget file + description: keyword to indicate that evaporation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of evaporation cells + description: integer value specifying the maximum number of evaporation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + evaporation: + type: double + longname: evaporation rate + description: is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the + program by the water surface area of the cell to calculate the volumetric evaporation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each evaporation. The + values of auxiliary variables must be present for each evaporation. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: evaporation name + description: name of the evaporation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: EVP + output: ipakcb + obs_type: EVP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json new file mode 100644 index 00000000..99c12e56 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json @@ -0,0 +1,270 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-flw", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of flow rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of inflow cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of inflow", + "description": "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "q": { + "type": "double", + "longname": "flow rate", + "description": "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allowed. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "inflow name", + "description": "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: q.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "FLW", + "output": "ipakcb", + "obs_type": "FLW", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "FLW-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml new file mode 100644 index 00000000..e64c170f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-flw" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of flow rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of inflow cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of inflow" +description = "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.q] +type = "double" +longname = "flow rate" +description = "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allowed. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "inflow name" +description = "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: q." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "FLW" +output = "ipakcb" +obs_type = "FLW" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "FLW-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml new file mode 100644 index 00000000..68ce3a59 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml @@ -0,0 +1,236 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-flw +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of flow rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of inflow cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of inflow information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of inflow flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that inflow flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of inflow + description: integer value specifying the maximum number of inflow cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + q: + type: double + longname: flow rate + description: is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative + values are not allowed. If the Options block includes a TIMESERIESFILE entry (see the + 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each inflow. The values + of auxiliary variables must be present for each inflow. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: inflow name + description: name of the inflow cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: q.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: FLW + output: ipakcb + obs_type: FLW + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: FLW-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.json new file mode 100644 index 00000000..d067e4ce --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.json @@ -0,0 +1,53 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-ic", + "parent": "olf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting concentration", + "description": "is the initial (starting) stage---that is, stage at the beginning of the OLF Model simulation. STRT must be specified for all OLF Model simulations. One value is read for every model reach.", + "default": 0.0, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.toml new file mode 100644 index 00000000..a24d6c57 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.toml @@ -0,0 +1,37 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-ic" +parent = "olf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting concentration" +description = "is the initial (starting) stage---that is, stage at the beginning of the OLF Model simulation. STRT must be specified for all OLF Model simulations. One value is read for every model reach." +default = 0.0 +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.yaml new file mode 100644 index 00000000..99123925 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-ic.yaml @@ -0,0 +1,40 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-ic +parent: olf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + griddata: + fields: + strt: + type: array + longname: starting concentration + description: is the initial (starting) stage---that is, stage at the beginning of the OLF Model + simulation. STRT must be specified for all OLF Model simulations. One value is read for every + model reach. + default: 0.0 + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.json new file mode 100644 index 00000000..e390cbb7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.json @@ -0,0 +1,166 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "olf-nam", + "parent": "sim-nam", + "dependent_variable": "stage", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this OLF model. If not specified, then the name of the list file will be the basename of the OLF model name file and the '.lst' extension. For example, if the OLF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "newtonoptions": { + "type": "record", + "longname": "newton keyword and options", + "description": "none", + "optional": true, + "fields": { + "newton": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson formulation", + "description": "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + }, + "under_relaxation": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson UNDER_RELAXATION option", + "description": "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied.", + "optional": true + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-olf}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single OLF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "x": { + "type": "array", + "set_in": "ca", + "description": "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "STAGE", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.toml new file mode 100644 index 00000000..87d6c1e7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.toml @@ -0,0 +1,146 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "olf-nam" +parent = "sim-nam" +dependent_variable = "stage" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this OLF model. If not specified, then the name of the list file will be the basename of the OLF model name file and the '.lst' extension. For example, if the OLF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.newtonoptions] +type = "record" +longname = "newton keyword and options" +description = "none" +optional = true + +[blocks.options.fields.newtonoptions.fields.newton] +type = "keyword" +longname = "keyword to activate Newton-Raphson formulation" +description = "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + +[blocks.options.fields.newtonoptions.fields.under_relaxation] +type = "keyword" +longname = "keyword to activate Newton-Raphson UNDER_RELAXATION option" +description = "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied." +optional = true + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-olf}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single OLF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.x] +type = "array" +set_in = "ca" +description = "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "STAGE" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.yaml new file mode 100644 index 00000000..b865d1bb --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-nam.yaml @@ -0,0 +1,158 @@ +type: model +schema_version: 2.0.0.dev3 +name: olf-nam +parent: sim-nam +dependent_variable: stage +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this OLF model. If not specified, then + the name of the list file will be the basename of the OLF model name file and the '.lst' extension. For + example, if the OLF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + newtonoptions: + type: record + longname: newton keyword and options + description: none + optional: true + fields: + newton: + type: keyword + longname: keyword to activate Newton-Raphson formulation + description: keyword that activates the Newton-Raphson formulation for surface water flow + between connected reaches and stress packages that support calculation of Newton-Raphson + terms. + under_relaxation: + type: keyword + longname: keyword to activate Newton-Raphson UNDER_RELAXATION option + description: keyword that indicates whether the surface water stage in a reach will be under-relaxed + when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson + UNDER_RELAXATION is not applied. + optional: true + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-olf}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single OLF Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + x: + type: array + set_in: ca + description: Stage for each model cell. Checked in from the solution-level dependent-variable vector + (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; + updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial + guesses and are overwritten by the solver. + obs_type: STAGE + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json new file mode 100644 index 00000000..c8f89260 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.json @@ -0,0 +1,211 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-oc", + "parent": "olf-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "qoutflow_filerecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "file", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow.", + "mode": "fileout" + } + } + }, + "stage_filerecord": { + "type": "record", + "optional": true, + "fields": { + "stage": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage.", + "mode": "fileout" + } + } + }, + "qoutflowprintrecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "keyword", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml new file mode 100644 index 00000000..c7fce291 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.toml @@ -0,0 +1,177 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-oc" +parent = "olf-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.qoutflow_filerecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflow_filerecord.fields.qoutflow] +type = "file" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." +mode = "fileout" + +[blocks.options.fields.stage_filerecord] +type = "record" +optional = true + +[blocks.options.fields.stage_filerecord.fields.stage] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." +mode = "fileout" + +[blocks.options.fields.qoutflowprintrecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflowprintrecord.fields.qoutflow] +type = "keyword" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." + +[blocks.options.fields.qoutflowprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml new file mode 100644 index 00000000..01e5cbff --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-oc.yaml @@ -0,0 +1,169 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-oc +parent: olf-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + qoutflow_filerecord: + type: record + optional: true + fields: + qoutflow: + type: file + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + mode: fileout + stage_filerecord: + type: record + optional: true + fields: + stage: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to stage. + mode: fileout + qoutflowprintrecord: + type: record + optional: true + fields: + qoutflow: + type: keyword + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json new file mode 100644 index 00000000..7c9ea8f6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-pcp", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of precipitation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of precipitation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print precipitation rates to listing file", + "description": "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save precipitation to budget file", + "description": "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of precipitation cells", + "description": "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "precipitation": { + "type": "double", + "longname": "precipitation rate", + "description": "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "precipitation name", + "description": "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "PCP", + "output": "ipakcb", + "obs_type": "PCP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml new file mode 100644 index 00000000..f4031b01 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-pcp" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of precipitation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of precipitation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print precipitation rates to listing file" +description = "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save precipitation to budget file" +description = "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of precipitation cells" +description = "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.precipitation] +type = "double" +longname = "precipitation rate" +description = "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "precipitation name" +description = "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "PCP" +output = "ipakcb" +obs_type = "PCP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml new file mode 100644 index 00000000..614da926 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-pcp +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of precipitation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of precipitation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of precipitation information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print precipitation rates to listing file + description: keyword to indicate that the list of precipitation flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save precipitation to budget file + description: keyword to indicate that precipitation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of precipitation cells + description: integer value specifying the maximum number of precipitation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + precipitation: + type: double + longname: precipitation rate + description: is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside + the program by the surface area of the cell to calculate the volumetric precipitation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each precipitation. The + values of auxiliary variables must be present for each precipitation. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: precipitation name + description: name of the precipitation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: PCP + output: ipakcb + obs_type: PCP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.json new file mode 100644 index 00000000..9642ae05 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.json @@ -0,0 +1,54 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-sto", + "parent": "olf-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "keyword to save NPF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files.", + "optional": true + } + } + }, + "period": { + "fields": { + "storage": { + "type": "string", + "longname": "storage state", + "description": "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block.", + "optional": true, + "valid": [ + "steady-state", + "transient" + ] + } + } + } + }, + "memory": { + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "steady_state": { + "set_in": "rp", + "type": "logical" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.toml new file mode 100644 index 00000000..37beb26c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.toml @@ -0,0 +1,40 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-sto" +parent = "olf-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save NPF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files." +optional = true + +[blocks.period.fields.storage] +type = "string" +longname = "storage state" +description = "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block." +optional = true +valid = [ + "steady-state", + "transient", +] + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.steady_state] +set_in = "rp" +type = "logical" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.yaml new file mode 100644 index 00000000..dbe9dc28 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-sto.yaml @@ -0,0 +1,42 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-sto +parent: olf-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: keyword to save NPF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input grid arrays, which already support the layered keyword, + should be written to layered ascii output files. + optional: true + period: + fields: + storage: + type: string + longname: storage state + description: keyword to indicate that stress period IPER is steady-state. Steady-state conditions + will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. + optional: true + valid: + - steady-state + - transient +memory: + ipakcb: + set_in: ar + source: save_flows + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + steady_state: + set_in: rp + type: logical diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json new file mode 100644 index 00000000..1351ff16 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json @@ -0,0 +1,294 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "olf-zdg", + "parent": "olf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of zero-depth-gradient boundaries", + "description": "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "slope": { + "type": "double", + "longname": "channel slope", + "description": "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rough": { + "type": "double", + "longname": "channel roughness", + "description": "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "ZDG", + "output": "ipakcb", + "obs_type": "ZDG", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "ZDG-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml new file mode 100644 index 00000000..d8a82120 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml @@ -0,0 +1,268 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "olf-zdg" +parent = "olf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of zero-depth-gradient boundaries" +description = "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.slope] +type = "double" +longname = "channel slope" +description = "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.rough] +type = "double" +longname = "channel roughness" +description = "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "ZDG" +output = "ipakcb" +obs_type = "ZDG" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "ZDG-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml new file mode 100644 index 00000000..12ecf036 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml @@ -0,0 +1,269 @@ +type: package +schema_version: 2.0.0.dev3 +name: olf-zdg +parent: olf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of zero-depth-gradient + boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary information will + be written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary flow rates will + be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is + specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, + then flow rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that zero-depth-gradient boundary flow terms will be written + to the file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of zero-depth-gradient boundaries + description: integer value specifying the maximum number of zero-depth-gradient boundary cells + that will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + slope: + type: double + longname: channel slope + description: is the channel slope used to calculate flow to the zero-depth-gradient boundary. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + rough: + type: double + longname: channel roughness + description: is the Manning channel roughness value used to calculate flow to the zero-depth-gradient + boundary. If a cross section is associated with this boundary, the roughness value will + be multiplied by the roughness fraction for each part of the cross section. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a numeric + value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, + 2: slope, 3: rough.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: ZDG + output: ipakcb + obs_type: ZDG + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: ZDG-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.json new file mode 100644 index 00000000..ca991b43 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.json @@ -0,0 +1,280 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-dis", + "parent": "prt-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nlay * nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "3", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid.", + "default": 1 + }, + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "longname": "cell top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "default": 1.0, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.toml new file mode 100644 index 00000000..f00ed2ca --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.toml @@ -0,0 +1,256 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-dis" +parent = "prt-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nlay * nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "3" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." +default = 1 + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.top] +type = "array" +longname = "cell top elevation" +description = "is the top elevation for each cell in the top model layer." +default = 1.0 +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.yaml new file mode 100644 index 00000000..4749dfbf --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-dis.yaml @@ -0,0 +1,242 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-dis +parent: prt-nam +dims: + nlay: + value: nlay + scope: model + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nlay * nrow * ncol + scope: model + ncelldim: + value: '3' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + default: 1 + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + dtype: double + shape: + - nrow + top: + type: array + longname: cell top elevation + description: is the top elevation for each cell in the top model layer. + default: 1.0 + dtype: double + shape: + - ncol + - nrow + botm: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - ncol + - nrow + - nlay +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncol + - nrow + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncol + - nrow + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.json new file mode 100644 index 00000000..8c82276a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.json @@ -0,0 +1,310 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-disv", + "parent": "prt-nam", + "dims": { + "nlay": { + "value": "nlay", + "scope": "model" + }, + "ncpl": { + "value": "ncpl", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "nodes": { + "value": "nlay * ncpl", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "export_array_netcdf": { + "type": "keyword", + "longname": "export array variables to netcdf output files.", + "description": "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + }, + "ncf_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ncf6": { + "type": "file", + "longname": "ncf keyword", + "description": "keyword to specify that record corresponds to a NetCDF configuration (NCF) file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nlay": { + "type": "integer", + "longname": "number of layers", + "description": "is the number of layers in the model grid." + }, + "ncpl": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "top": { + "type": "array", + "longname": "model top elevation", + "description": "is the top elevation for each cell in the top model layer.", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "export_nc": { + "set_in": "ar", + "source": "export_array_netcdf", + "type": "logical" + }, + "nlay": { + "set_in": "ar", + "source": "nlay", + "type": "integer" + }, + "ncpl": { + "set_in": "ar", + "source": "ncpl", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "top": { + "type": "array", + "set_in": "ar", + "source": "top", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "botm": { + "type": "array", + "set_in": "ar", + "source": "botm", + "dtype": "double", + "shape": [ + "ncpl", + "nlay" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncpl", + "nlay" + ] + }, + "area": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Horizontal cell area, computed from grid geometry.", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.toml new file mode 100644 index 00000000..741ccde2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.toml @@ -0,0 +1,274 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-disv" +parent = "prt-nam" + +[dims.nlay] +value = "nlay" +scope = "model" + +[dims.ncpl] +value = "ncpl" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.nodes] +value = "nlay * ncpl" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.export_array_netcdf] +type = "keyword" +longname = "export array variables to netcdf output files." +description = "keyword that specifies input gridded arrays should be written to the model output NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation input. This option only has an effect when an output model NetCDF file is configured and the simulation is run in VALIDATE mode, otherwise it is ignored." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.options.fields.ncf_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ncf_filerecord.fields.ncf6] +type = "file" +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a NetCDF configuration (NCF) file." +mode = "filein" + +[blocks.dimensions.fields.nlay] +type = "integer" +longname = "number of layers" +description = "is the number of layers in the model grid." + +[blocks.dimensions.fields.ncpl] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.top] +type = "array" +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.griddata.fields.botm] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "ncpl", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.export_nc] +set_in = "ar" +source = "export_array_netcdf" +type = "logical" + +[memory.nlay] +set_in = "ar" +source = "nlay" +type = "integer" + +[memory.ncpl] +set_in = "ar" +source = "ncpl" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.top] +type = "array" +set_in = "ar" +source = "top" +dtype = "double" +shape = [ + "ncpl", +] + +[memory.botm] +type = "array" +set_in = "ar" +source = "botm" +dtype = "double" +shape = [ + "ncpl", + "nlay", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncpl", + "nlay", +] + +[memory.area] +type = "array" +readonly = true +set_in = "ar" +description = "Horizontal cell area, computed from grid geometry." +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.yaml new file mode 100644 index 00000000..d58447d4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-disv.yaml @@ -0,0 +1,269 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-disv +parent: prt-nam +dims: + nlay: + value: nlay + scope: model + ncpl: + value: ncpl + scope: model + nvert: + value: nvert + scope: model + nodes: + value: nlay * ncpl + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + export_array_netcdf: + type: keyword + longname: export array variables to netcdf output files. + description: keyword that specifies input gridded arrays should be written to the model output + NetCDF file with attributes that support using the generated file as a MODFLOW 6 simulation + input. This option only has an effect when an output model NetCDF file is configured and the + simulation is run in VALIDATE mode, otherwise it is ignored. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + ncf_filerecord: + type: record + optional: true + fields: + ncf6: + type: file + longname: ncf keyword + description: keyword to specify that record corresponds to a NetCDF configuration (NCF) file. + mode: filein + dimensions: + fields: + nlay: + type: integer + longname: number of layers + description: is the number of layers in the model grid. + ncpl: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + top: + type: array + longname: model top elevation + description: is the top elevation for each cell in the top model layer. + dtype: double + shape: + - ncpl + botm: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - ncpl + - nlay + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - ncpl +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + export_nc: + set_in: ar + source: export_array_netcdf + type: logical + nlay: + set_in: ar + source: nlay + type: integer + ncpl: + set_in: ar + source: ncpl + type: integer + nvert: + set_in: ar + source: nvert + type: integer + top: + type: array + set_in: ar + source: top + dtype: double + shape: + - ncpl + botm: + type: array + set_in: ar + source: botm + dtype: double + shape: + - ncpl + - nlay + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncpl + - nlay + area: + type: array + readonly: true + set_in: ar + description: Horizontal cell area, computed from grid geometry. + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.json new file mode 100644 index 00000000..7485e70c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.json @@ -0,0 +1,40 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-fmi", + "parent": "prt-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "save cell-by-cell flows to budget file", + "description": "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + } + } + }, + "packagedata": { + "fields": { + "gwfhead": { + "type": "file", + "longname": "gwf head file", + "optional": true, + "mode": "filein" + }, + "gwfbudget": { + "type": "file", + "longname": "gwf budget file", + "optional": true, + "mode": "filein" + }, + "gwfgrid": { + "type": "file", + "longname": "gwf grid file", + "optional": true, + "mode": "filein" + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.toml new file mode 100644 index 00000000..aa216db7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.toml @@ -0,0 +1,28 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-fmi" +parent = "prt-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save cell-by-cell flows to budget file" +description = "keyword to indicate that FMI flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.packagedata.fields.gwfhead] +type = "file" +longname = "gwf head file" +optional = true +mode = "filein" + +[blocks.packagedata.fields.gwfbudget] +type = "file" +longname = "gwf budget file" +optional = true +mode = "filein" + +[blocks.packagedata.fields.gwfgrid] +type = "file" +longname = "gwf grid file" +optional = true +mode = "filein" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.yaml new file mode 100644 index 00000000..ce3c44fa --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-fmi.yaml @@ -0,0 +1,30 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-fmi +parent: prt-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: save cell-by-cell flows to budget file + description: keyword to indicate that FMI flow terms will be written to the file specified with + 'BUDGET FILEOUT' in Output Control. + optional: true + packagedata: + fields: + gwfhead: + type: file + longname: gwf head file + optional: true + mode: filein + gwfbudget: + type: file + longname: gwf budget file + optional: true + mode: filein + gwfgrid: + type: file + longname: gwf grid file + optional: true + mode: filein diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.json new file mode 100644 index 00000000..432843b2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.json @@ -0,0 +1,90 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-mip", + "parent": "prt-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "porosity": { + "type": "array", + "longname": "porosity", + "description": "is the aquifer porosity.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "retfactor": { + "type": "array", + "longname": "retardation factor", + "description": "is a real value by which velocity is divided within a given cell. RETFACTOR can be used to account for solute retardation, i.e., the apparent effect of linear sorption on the velocity of particles that track solute advection. RETFACTOR may be assigned any real value. A RETFACTOR value greater than 1 represents particle retardation (slowing), and a value of 1 represents no retardation. The effect of specifying a RETFACTOR value for each cell is the same as the effect of directly multiplying the POROSITY in each cell by the proposed RETFACTOR value for each cell. RETFACTOR allows conceptual isolation of effects such as retardation from the effect of porosity. The default value is 1.", + "optional": true, + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "izone": { + "type": "array", + "longname": "zone number", + "description": "is an integer zone number assigned to each cell. IZONE may be positive, negative, or zero. The current cell's zone number is recorded with each particle track datum. If a PRP package's ISTOPZONE option is set to any value other than zero, particles released by that PRP Package terminate if they enter a cell whose IZONE value matches ISTOPZONE. If ISTOPZONE is not specified or is set to zero in a PRP Package, IZONE has no effect on the termination of particles released by that PRP Package. Each PRP Package may configure a single ISTOPZONE value.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "porosity": { + "type": "array", + "set_in": "ar", + "source": "porosity", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "retfactor": { + "type": "array", + "set_in": "ar", + "source": "retfactor", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "izone": { + "type": "array", + "set_in": "ar", + "source": "izone", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.toml new file mode 100644 index 00000000..60a6f2b5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.toml @@ -0,0 +1,74 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-mip" +parent = "prt-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.griddata.fields.porosity] +type = "array" +longname = "porosity" +description = "is the aquifer porosity." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.retfactor] +type = "array" +longname = "retardation factor" +description = "is a real value by which velocity is divided within a given cell. RETFACTOR can be used to account for solute retardation, i.e., the apparent effect of linear sorption on the velocity of particles that track solute advection. RETFACTOR may be assigned any real value. A RETFACTOR value greater than 1 represents particle retardation (slowing), and a value of 1 represents no retardation. The effect of specifying a RETFACTOR value for each cell is the same as the effect of directly multiplying the POROSITY in each cell by the proposed RETFACTOR value for each cell. RETFACTOR allows conceptual isolation of effects such as retardation from the effect of porosity. The default value is 1." +optional = true +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.izone] +type = "array" +longname = "zone number" +description = "is an integer zone number assigned to each cell. IZONE may be positive, negative, or zero. The current cell's zone number is recorded with each particle track datum. If a PRP package's ISTOPZONE option is set to any value other than zero, particles released by that PRP Package terminate if they enter a cell whose IZONE value matches ISTOPZONE. If ISTOPZONE is not specified or is set to zero in a PRP Package, IZONE has no effect on the termination of particles released by that PRP Package. Each PRP Package may configure a single ISTOPZONE value." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.porosity] +type = "array" +set_in = "ar" +source = "porosity" +dtype = "double" +shape = [ + "nodes", +] + +[memory.retfactor] +type = "array" +set_in = "ar" +source = "retfactor" +dtype = "double" +shape = [ + "nodes", +] + +[memory.izone] +type = "array" +set_in = "ar" +source = "izone" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.yaml new file mode 100644 index 00000000..5b0e3738 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-mip.yaml @@ -0,0 +1,79 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-mip +parent: prt-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + griddata: + fields: + porosity: + type: array + longname: porosity + description: is the aquifer porosity. + dtype: double + shape: + - nodes + retfactor: + type: array + longname: retardation factor + description: is a real value by which velocity is divided within a given cell. RETFACTOR can + be used to account for solute retardation, i.e., the apparent effect of linear sorption on the + velocity of particles that track solute advection. RETFACTOR may be assigned any real value. A + RETFACTOR value greater than 1 represents particle retardation (slowing), and a value of 1 represents + no retardation. The effect of specifying a RETFACTOR value for each cell is the same as the + effect of directly multiplying the POROSITY in each cell by the proposed RETFACTOR value for + each cell. RETFACTOR allows conceptual isolation of effects such as retardation from the effect + of porosity. The default value is 1. + optional: true + dtype: double + shape: + - nodes + izone: + type: array + longname: zone number + description: is an integer zone number assigned to each cell. IZONE may be positive, negative, + or zero. The current cell's zone number is recorded with each particle track datum. If a PRP + package's ISTOPZONE option is set to any value other than zero, particles released by that PRP + Package terminate if they enter a cell whose IZONE value matches ISTOPZONE. If ISTOPZONE is + not specified or is set to zero in a PRP Package, IZONE has no effect on the termination of + particles released by that PRP Package. Each PRP Package may configure a single ISTOPZONE value. + optional: true + dtype: integer + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + porosity: + type: array + set_in: ar + source: porosity + dtype: double + shape: + - nodes + retfactor: + type: array + set_in: ar + source: retfactor + dtype: double + shape: + - nodes + izone: + type: array + set_in: ar + source: izone + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.json new file mode 100644 index 00000000..157b8288 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.json @@ -0,0 +1,99 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "prt-nam", + "parent": "sim-nam", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this PRT model. If not specified, then the name of the list file will be the basename of the PRT model name file and the '.lst' extension. For example, if the PRT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-prt}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single PRT Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.toml new file mode 100644 index 00000000..ef47836f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.toml @@ -0,0 +1,81 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "prt-nam" +parent = "sim-nam" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this PRT model. If not specified, then the name of the list file will be the basename of the PRT model name file and the '.lst' extension. For example, if the PRT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-prt}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single PRT Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.yaml new file mode 100644 index 00000000..14dda0aa --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-nam.yaml @@ -0,0 +1,93 @@ +type: model +schema_version: 2.0.0.dev3 +name: prt-nam +parent: sim-nam +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this PRT model. If not specified, then + the name of the list file will be the basename of the PRT model name file and the '.lst' extension. For + example, if the PRT name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-prt}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single PRT Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json new file mode 100644 index 00000000..dd56a26c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.json @@ -0,0 +1,309 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-oc", + "parent": "prt-nam", + "dims": { + "ntracktimes": { + "value": "ntracktimes", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "track_filerecord": { + "type": "record", + "optional": true, + "fields": { + "track": { + "type": "file", + "longname": "track keyword", + "description": "keyword to specify that record corresponds to a binary track file. Each PRT Model's OC Package may have only one binary track output file.", + "mode": "fileout" + } + } + }, + "trackcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "trackcsv": { + "type": "file", + "longname": "track keyword", + "description": "keyword to specify that record corresponds to a CSV track file. Each PRT Model's OC Package may have only one CSV track file.", + "mode": "fileout" + } + } + }, + "track_release": { + "type": "keyword", + "longname": "track release", + "description": "keyword to indicate that particle tracking output is to be written when a particle is released", + "optional": true + }, + "track_exit": { + "type": "keyword", + "longname": "track domain exits", + "description": "keyword to indicate that particle tracking output is to be written when a particle exits a grid feature (e.g. model, cell)", + "optional": true + }, + "track_subfeature_exit": { + "type": "keyword", + "longname": "track cell exits", + "description": "keyword to indicate that particle tracking output is to be written when a particle exits a sub-grid-scale feature. Such features are considered implementation details of the tracking algorithm employed for particular grid types, and reporting for exit events from such features is disabled by default.", + "optional": true + }, + "track_timestep": { + "type": "keyword", + "longname": "track timestep ends", + "description": "keyword to indicate that particle tracking output is to be written at the end of each time step", + "optional": true + }, + "track_terminate": { + "type": "keyword", + "longname": "track termination", + "description": "keyword to indicate that particle tracking output is to be written when a particle terminates for any reason", + "optional": true + }, + "track_weaksink": { + "type": "keyword", + "longname": "track weaksink exits", + "description": "keyword to indicate that particle tracking output is to be written when a particle exits a weak sink (a cell which removes some but not all inflow from adjacent cells)", + "optional": true + }, + "track_usertime": { + "type": "keyword", + "longname": "track user-specified times", + "description": "keyword to indicate that particle tracking output is to be written at user-specified times, provided as double precision values in the TRACKTIMES block.", + "optional": true + }, + "track_dropped": { + "type": "keyword", + "longname": "track drops to water table", + "description": "keyword to indicate that particle tracking output is to be written when a particle is dropped to the water table via DRY_TRACKING_METHOD DROP.", + "optional": true + }, + "track_timesrecord": { + "type": "record", + "optional": true, + "fields": { + "track_times": { + "type": "keyword", + "description": "keyword indicating tracking times will follow" + }, + "times": { + "type": "array", + "longname": "tracking times", + "description": "times to track, relative to the beginning of the simulation.", + "dtype": "double" + } + } + }, + "track_timesfilerecord": { + "type": "record", + "optional": true, + "fields": { + "track_timesfile": { + "type": "keyword", + "description": "keyword indicating tracking times file name will follow" + }, + "timesfile": { + "type": "string", + "longname": "file keyword", + "description": "name of the tracking times file", + "tagged": false, + "case_sensitive": true + } + } + }, + "dev_dump_event_trace": { + "type": "keyword", + "longname": "print particle tracking events", + "description": "print a verbose particle tracking event trace to standard output", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "ntracktimes": { + "type": "integer", + "longname": "number of particle tracking times", + "description": "is the number of user-specified particle tracking times in the TRACKTIMES block.", + "optional": true + } + } + }, + "tracktimes": { + "fields": { + "tracktimes": { + "type": "list", + "optional": true, + "item": { + "type": "record", + "fields": { + "time": { + "type": "double", + "longname": "release time", + "description": "real value that defines the tracking time with respect to the simulation start time.", + "tagged": false + } + } + }, + "shape": [ + "ntracktimes" + ] + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can only be BUDGET.", + "tagged": false, + "valid": [ + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can only be BUDGET.", + "tagged": false, + "valid": [ + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + }, + "memory": { + "track_subf_exit": { + "set_in": "ar", + "source": "track_subfeature_exit", + "type": "logical" + }, + "dev_dump_evtrace": { + "set_in": "ar", + "source": "dev_dump_event_trace", + "type": "logical" + }, + "ntracktimes": { + "set_in": "ar", + "source": "ntracktimes", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml new file mode 100644 index 00000000..586b7649 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.toml @@ -0,0 +1,261 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-oc" +parent = "prt-nam" + +[dims.ntracktimes] +value = "ntracktimes" +scope = "model" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.track_filerecord] +type = "record" +optional = true + +[blocks.options.fields.track_filerecord.fields.track] +type = "file" +longname = "track keyword" +description = "keyword to specify that record corresponds to a binary track file. Each PRT Model's OC Package may have only one binary track output file." +mode = "fileout" + +[blocks.options.fields.trackcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.trackcsv_filerecord.fields.trackcsv] +type = "file" +longname = "track keyword" +description = "keyword to specify that record corresponds to a CSV track file. Each PRT Model's OC Package may have only one CSV track file." +mode = "fileout" + +[blocks.options.fields.track_release] +type = "keyword" +longname = "track release" +description = "keyword to indicate that particle tracking output is to be written when a particle is released" +optional = true + +[blocks.options.fields.track_exit] +type = "keyword" +longname = "track domain exits" +description = "keyword to indicate that particle tracking output is to be written when a particle exits a grid feature (e.g. model, cell)" +optional = true + +[blocks.options.fields.track_subfeature_exit] +type = "keyword" +longname = "track cell exits" +description = "keyword to indicate that particle tracking output is to be written when a particle exits a sub-grid-scale feature. Such features are considered implementation details of the tracking algorithm employed for particular grid types, and reporting for exit events from such features is disabled by default." +optional = true + +[blocks.options.fields.track_timestep] +type = "keyword" +longname = "track timestep ends" +description = "keyword to indicate that particle tracking output is to be written at the end of each time step" +optional = true + +[blocks.options.fields.track_terminate] +type = "keyword" +longname = "track termination" +description = "keyword to indicate that particle tracking output is to be written when a particle terminates for any reason" +optional = true + +[blocks.options.fields.track_weaksink] +type = "keyword" +longname = "track weaksink exits" +description = "keyword to indicate that particle tracking output is to be written when a particle exits a weak sink (a cell which removes some but not all inflow from adjacent cells)" +optional = true + +[blocks.options.fields.track_usertime] +type = "keyword" +longname = "track user-specified times" +description = "keyword to indicate that particle tracking output is to be written at user-specified times, provided as double precision values in the TRACKTIMES block." +optional = true + +[blocks.options.fields.track_dropped] +type = "keyword" +longname = "track drops to water table" +description = "keyword to indicate that particle tracking output is to be written when a particle is dropped to the water table via DRY_TRACKING_METHOD DROP." +optional = true + +[blocks.options.fields.track_timesrecord] +type = "record" +optional = true + +[blocks.options.fields.track_timesrecord.fields.track_times] +type = "keyword" +description = "keyword indicating tracking times will follow" + +[blocks.options.fields.track_timesrecord.fields.times] +type = "array" +longname = "tracking times" +description = "times to track, relative to the beginning of the simulation." +dtype = "double" + +[blocks.options.fields.track_timesfilerecord] +type = "record" +optional = true + +[blocks.options.fields.track_timesfilerecord.fields.track_timesfile] +type = "keyword" +description = "keyword indicating tracking times file name will follow" + +[blocks.options.fields.track_timesfilerecord.fields.timesfile] +type = "string" +longname = "file keyword" +description = "name of the tracking times file" +tagged = false +case_sensitive = true + +[blocks.options.fields.dev_dump_event_trace] +type = "keyword" +longname = "print particle tracking events" +description = "print a verbose particle tracking event trace to standard output" +optional = true + +[blocks.dimensions.fields.ntracktimes] +type = "integer" +longname = "number of particle tracking times" +description = "is the number of user-specified particle tracking times in the TRACKTIMES block." +optional = true + +[blocks.tracktimes.fields.tracktimes] +type = "list" +optional = true +shape = [ + "ntracktimes", +] + +[blocks.tracktimes.fields.tracktimes.item] +type = "record" + +[blocks.tracktimes.fields.tracktimes.item.fields.time] +type = "double" +longname = "release time" +description = "real value that defines the tracking time with respect to the simulation start time." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can only be BUDGET." +tagged = false +valid = [ + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can only be BUDGET." +tagged = false +valid = [ + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" + +[memory.track_subf_exit] +set_in = "ar" +source = "track_subfeature_exit" +type = "logical" + +[memory.dev_dump_evtrace] +set_in = "ar" +source = "dev_dump_event_trace" +type = "logical" + +[memory.ntracktimes] +set_in = "ar" +source = "ntracktimes" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml new file mode 100644 index 00000000..a7c9c495 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-oc.yaml @@ -0,0 +1,257 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-oc +parent: prt-nam +dims: + ntracktimes: + value: ntracktimes + scope: model +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + track_filerecord: + type: record + optional: true + fields: + track: + type: file + longname: track keyword + description: keyword to specify that record corresponds to a binary track file. Each PRT + Model's OC Package may have only one binary track output file. + mode: fileout + trackcsv_filerecord: + type: record + optional: true + fields: + trackcsv: + type: file + longname: track keyword + description: keyword to specify that record corresponds to a CSV track file. Each PRT Model's + OC Package may have only one CSV track file. + mode: fileout + track_release: + type: keyword + longname: track release + description: keyword to indicate that particle tracking output is to be written when a particle + is released + optional: true + track_exit: + type: keyword + longname: track domain exits + description: keyword to indicate that particle tracking output is to be written when a particle + exits a grid feature (e.g. model, cell) + optional: true + track_subfeature_exit: + type: keyword + longname: track cell exits + description: keyword to indicate that particle tracking output is to be written when a particle + exits a sub-grid-scale feature. Such features are considered implementation details of the tracking + algorithm employed for particular grid types, and reporting for exit events from such features + is disabled by default. + optional: true + track_timestep: + type: keyword + longname: track timestep ends + description: keyword to indicate that particle tracking output is to be written at the end of + each time step + optional: true + track_terminate: + type: keyword + longname: track termination + description: keyword to indicate that particle tracking output is to be written when a particle + terminates for any reason + optional: true + track_weaksink: + type: keyword + longname: track weaksink exits + description: keyword to indicate that particle tracking output is to be written when a particle + exits a weak sink (a cell which removes some but not all inflow from adjacent cells) + optional: true + track_usertime: + type: keyword + longname: track user-specified times + description: keyword to indicate that particle tracking output is to be written at user-specified + times, provided as double precision values in the TRACKTIMES block. + optional: true + track_dropped: + type: keyword + longname: track drops to water table + description: keyword to indicate that particle tracking output is to be written when a particle + is dropped to the water table via DRY_TRACKING_METHOD DROP. + optional: true + track_timesrecord: + type: record + optional: true + fields: + track_times: + type: keyword + description: keyword indicating tracking times will follow + times: + type: array + longname: tracking times + description: times to track, relative to the beginning of the simulation. + dtype: double + track_timesfilerecord: + type: record + optional: true + fields: + track_timesfile: + type: keyword + description: keyword indicating tracking times file name will follow + timesfile: + type: string + longname: file keyword + description: name of the tracking times file + tagged: false + case_sensitive: true + dev_dump_event_trace: + type: keyword + longname: print particle tracking events + description: print a verbose particle tracking event trace to standard output + optional: true + dimensions: + fields: + ntracktimes: + type: integer + longname: number of particle tracking times + description: is the number of user-specified particle tracking times in the TRACKTIMES block. + optional: true + tracktimes: + fields: + tracktimes: + type: list + optional: true + item: + type: record + fields: + time: + type: double + longname: release time + description: real value that defines the tracking time with respect to the simulation start + time. + tagged: false + shape: + - ntracktimes + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can only be BUDGET. + tagged: false + valid: + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can only be BUDGET. + tagged: false + valid: + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 +memory: + track_subf_exit: + set_in: ar + source: track_subfeature_exit + type: logical + dev_dump_evtrace: + set_in: ar + source: dev_dump_event_trace + type: logical + ntracktimes: + set_in: ar + source: ntracktimes + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json new file mode 100644 index 00000000..f9c7c8a0 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json @@ -0,0 +1,525 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "prt-prp", + "parent": "prt-nam", + "multi": true, + "subtype": "stress", + "dims": { + "nreleasepts": { + "value": "nreleasepts", + "scope": "model" + }, + "nreleasetimes": { + "value": "nreleasetimes", + "scope": "model" + }, + "naux": { + "set_in": "ar" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of particle release points.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "dev_exit_solve_method": { + "type": "integer", + "longname": "exit solve method", + "description": "the method for iterative solution of particle exit location and time in the generalized Pollock's method. 0 default, 1 Brent, 2 Chandrupatla. The default is Brent's method.", + "optional": true + }, + "exit_solve_tolerance": { + "type": "double", + "longname": "exit solve tolerance", + "description": "the convergence tolerance for iterative solution of particle exit location and time in the generalized Pollock's method. The variable being solved for varies from 0 to 1. A tolerance of 0.00001 works well for many problems, but the value that strikes the best balance between accuracy and runtime is problem-dependent.", + "optional": true, + "default": 1e-05 + }, + "local_z": { + "type": "keyword", + "longname": "whether to use local z coordinates", + "description": "indicates that 'zrpt' defines the local z coordinate of the release point within the cell, with value of 0 at the bottom and 1 at the effective top of the cell. If the cell is convertible and partially saturated at release time, the effective top of the cell is considered to be the water table elevation (the head in the cell) rather than the top defined by the user, and is constrained to be no higher than the geometric top of the cell and no lower than the cell bottom. If the cell is confined, the effective top is the geometric top.", + "optional": true + }, + "extend_tracking": { + "type": "keyword", + "longname": "whether to extend tracking beyond the end of the simulation", + "description": "indicates that particles should be tracked beyond the end of the simulation's final time step (using that time step's flows) until particles terminate or reach a specified stop time. By default, particles are terminated at the end of the simulation's final time step.", + "optional": true + }, + "track_filerecord": { + "type": "record", + "optional": true, + "fields": { + "track": { + "type": "file", + "longname": "track keyword", + "description": "keyword to specify that record corresponds to a binary track output file. Each PRP Package may have a distinct binary track output file.", + "mode": "fileout" + } + } + }, + "trackcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "trackcsv": { + "type": "file", + "longname": "track keyword", + "description": "keyword to specify that record corresponds to a CSV track output file. Each PRP Package may have a distinct CSV track output file.", + "mode": "fileout" + } + } + }, + "stoptime": { + "type": "double", + "longname": "stop time", + "description": "real value defining the maximum simulation time to which particles in the package can be tracked. Particles that have not terminated earlier due to another termination condition will terminate when simulation time STOPTIME is reached. If the last stress period in the simulation consists of more than one time step, particles will not be tracked past the ending time of the last stress period, regardless of STOPTIME. If the EXTEND_TRACKING option is enabled and the last stress period in the simulation is steady-state, the simulation ending time will not limit the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME will continue to apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be stopped if either is reached.", + "optional": true + }, + "stoptraveltime": { + "type": "double", + "longname": "stop travel time", + "description": "real value defining the maximum travel time over which particles in the model can be tracked. Particles that have not terminated earlier due to another termination condition will terminate when their travel time reaches STOPTRAVELTIME. If the last stress period in the simulation consists of more than one time step, particles will not be tracked past the ending time of the last stress period, regardless of STOPTRAVELTIME. If the EXTEND_TRACKING option is enabled and the last stress period in the simulation is steady-state, the simulation ending time will not limit the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME will continue to apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be stopped if either is reached.", + "optional": true + }, + "stop_at_weak_sink": { + "type": "keyword", + "longname": "stop at weak sink", + "description": "is a text keyword to indicate that a particle is to terminate when it enters a cell that is a weak sink. By default, particles are allowed to pass though cells that are weak sinks.", + "optional": true + }, + "istopzone": { + "type": "integer", + "longname": "stop zone number", + "description": "integer value defining the stop zone number. If cells have been assigned IZONE values in the GRIDDATA block, a particle terminates if it enters a cell whose IZONE value matches ISTOPZONE. An ISTOPZONE value of zero indicates that there is no stop zone. The default value is zero.", + "optional": true + }, + "drape": { + "type": "keyword", + "longname": "drape", + "description": "is a text keyword to indicate that if a particle's release point is in a cell that happens to be inactive at release time, the particle is to be moved to the topmost active cell below it, if any. By default, a particle is not released into the simulation if its release point's cell is inactive at release time. Note that DRAPE does not apply to attempted release into a cell for which IDOMAIN <= 0, which is considered not to exist in the simulation. Attempted release into a such a cell results in an error.", + "optional": true + }, + "release_timesrecord": { + "type": "record", + "optional": true, + "fields": { + "release_times": { + "type": "keyword", + "description": "keyword indicating release times will follow" + }, + "times": { + "type": "array", + "longname": "release times", + "description": "times to release, relative to the beginning of the simulation. RELEASE_TIMES and RELEASE_TIMESFILE are mutually exclusive.", + "dtype": "double" + } + } + }, + "release_timesfilerecord": { + "type": "record", + "optional": true, + "fields": { + "release_timesfile": { + "type": "keyword", + "description": "keyword indicating release times file name will follow" + }, + "timesfile": { + "type": "string", + "longname": "file keyword", + "description": "name of the release times file. RELEASE_TIMES and RELEASE_TIMESFILE are mutually exclusive.", + "tagged": false, + "case_sensitive": true + } + } + }, + "dry_tracking_method": { + "type": "string", + "longname": "what to do in dry-but-active cells", + "description": "is a string indicating how particles should behave in dry-but-active cells (as can occur with the Newton formulation). The value can be 'DROP', 'STOP', or 'STAY'. The default is 'DROP', which passes particles vertically and instantaneously to the water table. 'STOP' causes particles to terminate. 'STAY' causes particles to remain stationary but active.", + "optional": true, + "valid": [ + "drop", + "stop", + "stay" + ] + }, + "dev_forceternary": { + "type": "keyword", + "longname": "force ternary tracking method", + "description": "force use of the ternary tracking method regardless of cell type in DISV grids." + }, + "release_time_tolerance": { + "type": "double", + "longname": "release time coincidence tolerance", + "description": "real number indicating the tolerance within which to consider consecutive release times coincident. Coincident release times will be merged into a single release time. The default is $epsilon times 10^{11}$, where $epsilon$ is machine precision.", + "optional": true + }, + "release_time_frequency": { + "type": "double", + "longname": "release time frequency", + "description": "real number indicating the time frequency at which to release particles. This option can be used to schedule releases at a regular interval for the duration of the simulation, starting at the simulation start time. The release schedule is the union of this option, the RELEASETIMES block, and PERIOD block RELEASESETTING selections. If none of these are provided, a single release time is configured at the beginning of the first time step of the simulation's first stress period.", + "optional": true + }, + "coordinate_check_method": { + "type": "string", + "longname": "coordinate checking method", + "description": "approach for verifying that release point coordinates are in the cell with the specified ID. Possible values are NONE and EAGER. By default, release point coordinates are checked at release time, i.e. EAGER.", + "optional": true, + "default": "eager", + "valid": [ + "none", + "eager" + ] + }, + "dev_cycle_detection_window": { + "type": "integer", + "longname": "cycle detection window size", + "description": "integer value defining the size of the window (number of consecutive exit events) used for cycle detection. Defaults to 0, disabling cycle detection. With detection enabled, particle pathlines with duplicate cell exit events (i.e., exiting the same cell through the same face twice) will cause the program to terminate with an error. A larger window size provides more robust cycle detection at the cost of more runtime operations per cell exit.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nreleasepts": { + "type": "integer", + "longname": "number of particle release points", + "description": "is the number of particle release points." + }, + "nreleasetimes": { + "type": "integer", + "longname": "number of particle release times", + "description": "is the number of particle release times specified in the RELEASETIMES block. This is not necessarily the total number of release times; release times are the union of RELEASE_TIME_FREQUENCY, RELEASETIMES block, and PERIOD block RELEASESETTING selections." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "irptno": { + "type": "integer", + "longname": "PRP id number for release point", + "description": "integer value that defines the PRP release point number associated with the specified PACKAGEDATA data on the line. IRPTNO must be greater than zero and less than or equal to NRELEASEPTS. The program will terminate with an error if information for a PRP release point number is specified more than once.", + "tagged": false + }, + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "xrpt": { + "type": "double", + "longname": "x coordinate of release point", + "description": "real value that defines the x coordinate of the release point in model coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid.", + "tagged": false + }, + "yrpt": { + "type": "double", + "longname": "y coordinate of release point", + "description": "real value that defines the y coordinate of the release point in model coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid.", + "tagged": false + }, + "zrpt": { + "type": "double", + "longname": "z coordinate of release point", + "description": "real value that defines the z coordinate of the release point in model coordinates or, if the LOCAL_Z option is active, in local cell coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid.", + "tagged": false + }, + "boundname": { + "type": "string", + "longname": "release point name", + "description": "name of the particle release point. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nreleasepts" + ] + } + } + }, + "releasetimes": { + "fields": { + "releasetimes": { + "type": "list", + "optional": true, + "item": { + "type": "record", + "fields": { + "time": { + "type": "double", + "longname": "release time", + "description": "real value that defines the release time with respect to the simulation start time.", + "tagged": false + } + } + }, + "shape": [ + "nreleasetimes" + ] + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "union", + "description": "specifies time steps at which to release a particle. A particle is released at the beginning of each specified time step. For fine control over release timing, specify times explicitly using the RELEASETIMES block. If the beginning of a specified time step coincides with a release time specified in the RELEASETIMES block or configured via RELEASE_TIME_FREQUENCY, only one particle is released at that time. Coincidence is evaluated up to the tolerance specified in RELEASE_TIME_TOLERANCE, or $epsilon times 10^{11}$ by default, where $epsilon$ is machine precision. If no release times are configured via this setting, the RELEASETIMES block, or the RELEASE_TIME_FREQUENCY option, a single release time is configured at the beginning of the first time step of the simulation's first stress period.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate release at the start of all time steps in the period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate release at the start of the first time step in the period. This keyword may be used in conjunction with other RELEASESETTING options." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate release at the start of the last time step in the period. This keyword may be used in conjunction with other RELEASESETTING options." + }, + "frequency": { + "type": "integer", + "description": "release at the specified time step frequency. This keyword may be used in conjunction with other RELEASESETTING options." + }, + "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" + }, + "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, + "dtype": "double" + } + } + } + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iexmeth": { + "set_in": "ar", + "source": "dev_exit_solve_method", + "type": "integer" + }, + "extol": { + "set_in": "ar", + "source": "exit_solve_tolerance", + "type": "double" + }, + "localz": { + "set_in": "ar", + "source": "local_z", + "type": "logical" + }, + "extend": { + "set_in": "ar", + "source": "extend_tracking", + "type": "logical" + }, + "istopweaksink": { + "set_in": "ar", + "source": "stop_at_weak_sink", + "type": "integer" + }, + "release_timesfn": { + "set_in": "ar", + "source": "release_timesfile", + "type": "logical" + }, + "idrymeth": { + "set_in": "ar", + "source": "dry_tracking_method", + "type": "string" + }, + "frctrn": { + "set_in": "ar", + "source": "dev_forceternary", + "type": "logical" + }, + "rttol": { + "set_in": "ar", + "source": "release_time_tolerance", + "type": "double" + }, + "rtfreq": { + "set_in": "ar", + "source": "release_time_frequency", + "type": "double" + }, + "ichkmeth": { + "set_in": "ar", + "source": "coordinate_check_method", + "type": "string" + }, + "icycwin": { + "set_in": "ar", + "source": "dev_cycle_detection_window", + "type": "integer" + }, + "nreleasepts": { + "set_in": "ar", + "source": "nreleasepts", + "type": "integer" + }, + "nreleasetimes": { + "set_in": "ar", + "source": "nreleasetimes", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "PRP", + "output": "ipakcb", + "obs_type": "PRP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "PRP-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml new file mode 100644 index 00000000..9abc614a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml @@ -0,0 +1,483 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "prt-prp" +parent = "prt-nam" +multi = true +subtype = "stress" + +[dims.nreleasepts] +value = "nreleasepts" +scope = "model" + +[dims.nreleasetimes] +value = "nreleasetimes" +scope = "model" + +[dims.naux] +set_in = "ar" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of particle release points." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.dev_exit_solve_method] +type = "integer" +longname = "exit solve method" +description = "the method for iterative solution of particle exit location and time in the generalized Pollock's method. 0 default, 1 Brent, 2 Chandrupatla. The default is Brent's method." +optional = true + +[blocks.options.fields.exit_solve_tolerance] +type = "double" +longname = "exit solve tolerance" +description = "the convergence tolerance for iterative solution of particle exit location and time in the generalized Pollock's method. The variable being solved for varies from 0 to 1. A tolerance of 0.00001 works well for many problems, but the value that strikes the best balance between accuracy and runtime is problem-dependent." +optional = true +default = 1e-05 + +[blocks.options.fields.local_z] +type = "keyword" +longname = "whether to use local z coordinates" +description = "indicates that 'zrpt' defines the local z coordinate of the release point within the cell, with value of 0 at the bottom and 1 at the effective top of the cell. If the cell is convertible and partially saturated at release time, the effective top of the cell is considered to be the water table elevation (the head in the cell) rather than the top defined by the user, and is constrained to be no higher than the geometric top of the cell and no lower than the cell bottom. If the cell is confined, the effective top is the geometric top." +optional = true + +[blocks.options.fields.extend_tracking] +type = "keyword" +longname = "whether to extend tracking beyond the end of the simulation" +description = "indicates that particles should be tracked beyond the end of the simulation's final time step (using that time step's flows) until particles terminate or reach a specified stop time. By default, particles are terminated at the end of the simulation's final time step." +optional = true + +[blocks.options.fields.track_filerecord] +type = "record" +optional = true + +[blocks.options.fields.track_filerecord.fields.track] +type = "file" +longname = "track keyword" +description = "keyword to specify that record corresponds to a binary track output file. Each PRP Package may have a distinct binary track output file." +mode = "fileout" + +[blocks.options.fields.trackcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.trackcsv_filerecord.fields.trackcsv] +type = "file" +longname = "track keyword" +description = "keyword to specify that record corresponds to a CSV track output file. Each PRP Package may have a distinct CSV track output file." +mode = "fileout" + +[blocks.options.fields.stoptime] +type = "double" +longname = "stop time" +description = "real value defining the maximum simulation time to which particles in the package can be tracked. Particles that have not terminated earlier due to another termination condition will terminate when simulation time STOPTIME is reached. If the last stress period in the simulation consists of more than one time step, particles will not be tracked past the ending time of the last stress period, regardless of STOPTIME. If the EXTEND_TRACKING option is enabled and the last stress period in the simulation is steady-state, the simulation ending time will not limit the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME will continue to apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be stopped if either is reached." +optional = true + +[blocks.options.fields.stoptraveltime] +type = "double" +longname = "stop travel time" +description = "real value defining the maximum travel time over which particles in the model can be tracked. Particles that have not terminated earlier due to another termination condition will terminate when their travel time reaches STOPTRAVELTIME. If the last stress period in the simulation consists of more than one time step, particles will not be tracked past the ending time of the last stress period, regardless of STOPTRAVELTIME. If the EXTEND_TRACKING option is enabled and the last stress period in the simulation is steady-state, the simulation ending time will not limit the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME will continue to apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be stopped if either is reached." +optional = true + +[blocks.options.fields.stop_at_weak_sink] +type = "keyword" +longname = "stop at weak sink" +description = "is a text keyword to indicate that a particle is to terminate when it enters a cell that is a weak sink. By default, particles are allowed to pass though cells that are weak sinks." +optional = true + +[blocks.options.fields.istopzone] +type = "integer" +longname = "stop zone number" +description = "integer value defining the stop zone number. If cells have been assigned IZONE values in the GRIDDATA block, a particle terminates if it enters a cell whose IZONE value matches ISTOPZONE. An ISTOPZONE value of zero indicates that there is no stop zone. The default value is zero." +optional = true + +[blocks.options.fields.drape] +type = "keyword" +longname = "drape" +description = "is a text keyword to indicate that if a particle's release point is in a cell that happens to be inactive at release time, the particle is to be moved to the topmost active cell below it, if any. By default, a particle is not released into the simulation if its release point's cell is inactive at release time. Note that DRAPE does not apply to attempted release into a cell for which IDOMAIN <= 0, which is considered not to exist in the simulation. Attempted release into a such a cell results in an error." +optional = true + +[blocks.options.fields.release_timesrecord] +type = "record" +optional = true + +[blocks.options.fields.release_timesrecord.fields.release_times] +type = "keyword" +description = "keyword indicating release times will follow" + +[blocks.options.fields.release_timesrecord.fields.times] +type = "array" +longname = "release times" +description = "times to release, relative to the beginning of the simulation. RELEASE_TIMES and RELEASE_TIMESFILE are mutually exclusive." +dtype = "double" + +[blocks.options.fields.release_timesfilerecord] +type = "record" +optional = true + +[blocks.options.fields.release_timesfilerecord.fields.release_timesfile] +type = "keyword" +description = "keyword indicating release times file name will follow" + +[blocks.options.fields.release_timesfilerecord.fields.timesfile] +type = "string" +longname = "file keyword" +description = "name of the release times file. RELEASE_TIMES and RELEASE_TIMESFILE are mutually exclusive." +tagged = false +case_sensitive = true + +[blocks.options.fields.dry_tracking_method] +type = "string" +longname = "what to do in dry-but-active cells" +description = "is a string indicating how particles should behave in dry-but-active cells (as can occur with the Newton formulation). The value can be 'DROP', 'STOP', or 'STAY'. The default is 'DROP', which passes particles vertically and instantaneously to the water table. 'STOP' causes particles to terminate. 'STAY' causes particles to remain stationary but active." +optional = true +valid = [ + "drop", + "stop", + "stay", +] + +[blocks.options.fields.dev_forceternary] +type = "keyword" +longname = "force ternary tracking method" +description = "force use of the ternary tracking method regardless of cell type in DISV grids." + +[blocks.options.fields.release_time_tolerance] +type = "double" +longname = "release time coincidence tolerance" +description = "real number indicating the tolerance within which to consider consecutive release times coincident. Coincident release times will be merged into a single release time. The default is $epsilon times 10^{11}$, where $epsilon$ is machine precision." +optional = true + +[blocks.options.fields.release_time_frequency] +type = "double" +longname = "release time frequency" +description = "real number indicating the time frequency at which to release particles. This option can be used to schedule releases at a regular interval for the duration of the simulation, starting at the simulation start time. The release schedule is the union of this option, the RELEASETIMES block, and PERIOD block RELEASESETTING selections. If none of these are provided, a single release time is configured at the beginning of the first time step of the simulation's first stress period." +optional = true + +[blocks.options.fields.coordinate_check_method] +type = "string" +longname = "coordinate checking method" +description = "approach for verifying that release point coordinates are in the cell with the specified ID. Possible values are NONE and EAGER. By default, release point coordinates are checked at release time, i.e. EAGER." +optional = true +default = "eager" +valid = [ + "none", + "eager", +] + +[blocks.options.fields.dev_cycle_detection_window] +type = "integer" +longname = "cycle detection window size" +description = "integer value defining the size of the window (number of consecutive exit events) used for cycle detection. Defaults to 0, disabling cycle detection. With detection enabled, particle pathlines with duplicate cell exit events (i.e., exiting the same cell through the same face twice) will cause the program to terminate with an error. A larger window size provides more robust cycle detection at the cost of more runtime operations per cell exit." +optional = true + +[blocks.dimensions.fields.nreleasepts] +type = "integer" +longname = "number of particle release points" +description = "is the number of particle release points." + +[blocks.dimensions.fields.nreleasetimes] +type = "integer" +longname = "number of particle release times" +description = "is the number of particle release times specified in the RELEASETIMES block. This is not necessarily the total number of release times; release times are the union of RELEASE_TIME_FREQUENCY, RELEASETIMES block, and PERIOD block RELEASESETTING selections." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nreleasepts", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.irptno] +type = "integer" +longname = "PRP id number for release point" +description = "integer value that defines the PRP release point number associated with the specified PACKAGEDATA data on the line. IRPTNO must be greater than zero and less than or equal to NRELEASEPTS. The program will terminate with an error if information for a PRP release point number is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.packagedata.fields.packagedata.item.fields.xrpt] +type = "double" +longname = "x coordinate of release point" +description = "real value that defines the x coordinate of the release point in model coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.yrpt] +type = "double" +longname = "y coordinate of release point" +description = "real value that defines the y coordinate of the release point in model coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.zrpt] +type = "double" +longname = "z coordinate of release point" +description = "real value that defines the z coordinate of the release point in model coordinates or, if the LOCAL_Z option is active, in local cell coordinates. The (x, y, z) location specified for the release point must lie within the cell that is identified by the specified cellid." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.boundname] +type = "string" +longname = "release point name" +description = "name of the particle release point. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[blocks.releasetimes.fields.releasetimes] +type = "list" +optional = true +shape = [ + "nreleasetimes", +] + +[blocks.releasetimes.fields.releasetimes.item] +type = "record" + +[blocks.releasetimes.fields.releasetimes.item.fields.time] +type = "double" +longname = "release time" +description = "real value that defines the release time with respect to the simulation start time." +tagged = false + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "union" +description = "specifies time steps at which to release a particle. A particle is released at the beginning of each specified time step. For fine control over release timing, specify times explicitly using the RELEASETIMES block. If the beginning of a specified time step coincides with a release time specified in the RELEASETIMES block or configured via RELEASE_TIME_FREQUENCY, only one particle is released at that time. Coincidence is evaluated up to the tolerance specified in RELEASE_TIME_TOLERANCE, or $epsilon times 10^{11}$ by default, where $epsilon$ is machine precision. If no release times are configured via this setting, the RELEASETIMES block, or the RELEASE_TIME_FREQUENCY option, a single release time is configured at the beginning of the first time step of the simulation's first stress period." + +[blocks.period.fields.perioddata.item.arms.all] +type = "keyword" +description = "keyword to indicate release at the start of all time steps in the period." + +[blocks.period.fields.perioddata.item.arms.first] +type = "keyword" +description = "keyword to indicate release at the start of the first time step in the period. This keyword may be used in conjunction with other RELEASESETTING options." + +[blocks.period.fields.perioddata.item.arms.last] +type = "keyword" +description = "keyword to indicate release at the start of the last time step in the period. This keyword may be used in conjunction with other RELEASESETTING options." + +[blocks.period.fields.perioddata.item.arms.frequency] +type = "integer" +description = "release at the specified time step frequency. This keyword may be used in conjunction with other RELEASESETTING options." + +[blocks.period.fields.perioddata.item.arms.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" + +[blocks.period.fields.perioddata.item.arms.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 +dtype = "double" + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iexmeth] +set_in = "ar" +source = "dev_exit_solve_method" +type = "integer" + +[memory.extol] +set_in = "ar" +source = "exit_solve_tolerance" +type = "double" + +[memory.localz] +set_in = "ar" +source = "local_z" +type = "logical" + +[memory.extend] +set_in = "ar" +source = "extend_tracking" +type = "logical" + +[memory.istopweaksink] +set_in = "ar" +source = "stop_at_weak_sink" +type = "integer" + +[memory.release_timesfn] +set_in = "ar" +source = "release_timesfile" +type = "logical" + +[memory.idrymeth] +set_in = "ar" +source = "dry_tracking_method" +type = "string" + +[memory.frctrn] +set_in = "ar" +source = "dev_forceternary" +type = "logical" + +[memory.rttol] +set_in = "ar" +source = "release_time_tolerance" +type = "double" + +[memory.rtfreq] +set_in = "ar" +source = "release_time_frequency" +type = "double" + +[memory.ichkmeth] +set_in = "ar" +source = "coordinate_check_method" +type = "string" + +[memory.icycwin] +set_in = "ar" +source = "dev_cycle_detection_window" +type = "integer" + +[memory.nreleasepts] +set_in = "ar" +source = "nreleasepts" +type = "integer" + +[memory.nreleasetimes] +set_in = "ar" +source = "nreleasetimes" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "PRP" +output = "ipakcb" +obs_type = "PRP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "PRP-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml new file mode 100644 index 00000000..f0cfcd27 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml @@ -0,0 +1,502 @@ +type: package +schema_version: 2.0.0.dev3 +name: prt-prp +parent: prt-nam +multi: true +subtype: stress +dims: + nreleasepts: + value: nreleasepts + scope: model + nreleasetimes: + value: nreleasetimes + scope: model + naux: + set_in: ar + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of particle + release points. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + dev_exit_solve_method: + type: integer + longname: exit solve method + description: the method for iterative solution of particle exit location and time in the generalized + Pollock's method. 0 default, 1 Brent, 2 Chandrupatla. The default is Brent's method. + optional: true + exit_solve_tolerance: + type: double + longname: exit solve tolerance + description: the convergence tolerance for iterative solution of particle exit location and time + in the generalized Pollock's method. The variable being solved for varies from 0 to 1. A tolerance + of 0.00001 works well for many problems, but the value that strikes the best balance between + accuracy and runtime is problem-dependent. + optional: true + default: 1.0e-05 + local_z: + type: keyword + longname: whether to use local z coordinates + description: indicates that 'zrpt' defines the local z coordinate of the release point within + the cell, with value of 0 at the bottom and 1 at the effective top of the cell. If the cell + is convertible and partially saturated at release time, the effective top of the cell is considered + to be the water table elevation (the head in the cell) rather than the top defined by the user, + and is constrained to be no higher than the geometric top of the cell and no lower than the + cell bottom. If the cell is confined, the effective top is the geometric top. + optional: true + extend_tracking: + type: keyword + longname: whether to extend tracking beyond the end of the simulation + description: indicates that particles should be tracked beyond the end of the simulation's final + time step (using that time step's flows) until particles terminate or reach a specified stop + time. By default, particles are terminated at the end of the simulation's final time step. + optional: true + track_filerecord: + type: record + optional: true + fields: + track: + type: file + longname: track keyword + description: keyword to specify that record corresponds to a binary track output file. Each + PRP Package may have a distinct binary track output file. + mode: fileout + trackcsv_filerecord: + type: record + optional: true + fields: + trackcsv: + type: file + longname: track keyword + description: keyword to specify that record corresponds to a CSV track output file. Each + PRP Package may have a distinct CSV track output file. + mode: fileout + stoptime: + type: double + longname: stop time + description: real value defining the maximum simulation time to which particles in the package + can be tracked. Particles that have not terminated earlier due to another termination condition + will terminate when simulation time STOPTIME is reached. If the last stress period in the simulation + consists of more than one time step, particles will not be tracked past the ending time of the + last stress period, regardless of STOPTIME. If the EXTEND_TRACKING option is enabled and the + last stress period in the simulation is steady-state, the simulation ending time will not limit + the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME will continue to + apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be stopped if either + is reached. + optional: true + stoptraveltime: + type: double + longname: stop travel time + description: real value defining the maximum travel time over which particles in the model can + be tracked. Particles that have not terminated earlier due to another termination condition + will terminate when their travel time reaches STOPTRAVELTIME. If the last stress period in + the simulation consists of more than one time step, particles will not be tracked past the ending + time of the last stress period, regardless of STOPTRAVELTIME. If the EXTEND_TRACKING option + is enabled and the last stress period in the simulation is steady-state, the simulation ending + time will not limit the time to which particles can be tracked, but STOPTIME and STOPTRAVELTIME + will continue to apply. If STOPTIME and STOPTRAVELTIME are both provided, particles will be + stopped if either is reached. + optional: true + stop_at_weak_sink: + type: keyword + longname: stop at weak sink + description: is a text keyword to indicate that a particle is to terminate when it enters a cell + that is a weak sink. By default, particles are allowed to pass though cells that are weak sinks. + optional: true + istopzone: + type: integer + longname: stop zone number + description: integer value defining the stop zone number. If cells have been assigned IZONE values + in the GRIDDATA block, a particle terminates if it enters a cell whose IZONE value matches ISTOPZONE. An + ISTOPZONE value of zero indicates that there is no stop zone. The default value is zero. + optional: true + drape: + type: keyword + longname: drape + description: is a text keyword to indicate that if a particle's release point is in a cell that + happens to be inactive at release time, the particle is to be moved to the topmost active cell + below it, if any. By default, a particle is not released into the simulation if its release + point's cell is inactive at release time. Note that DRAPE does not apply to attempted release + into a cell for which IDOMAIN <= 0, which is considered not to exist in the simulation. Attempted + release into a such a cell results in an error. + optional: true + release_timesrecord: + type: record + optional: true + fields: + release_times: + type: keyword + description: keyword indicating release times will follow + times: + type: array + longname: release times + description: times to release, relative to the beginning of the simulation. RELEASE_TIMES + and RELEASE_TIMESFILE are mutually exclusive. + dtype: double + release_timesfilerecord: + type: record + optional: true + fields: + release_timesfile: + type: keyword + description: keyword indicating release times file name will follow + timesfile: + type: string + longname: file keyword + description: name of the release times file. RELEASE_TIMES and RELEASE_TIMESFILE are mutually + exclusive. + tagged: false + case_sensitive: true + dry_tracking_method: + type: string + longname: what to do in dry-but-active cells + description: is a string indicating how particles should behave in dry-but-active cells (as can + occur with the Newton formulation). The value can be 'DROP', 'STOP', or 'STAY'. The default + is 'DROP', which passes particles vertically and instantaneously to the water table. 'STOP' + causes particles to terminate. 'STAY' causes particles to remain stationary but active. + optional: true + valid: + - drop + - stop + - stay + dev_forceternary: + type: keyword + longname: force ternary tracking method + description: force use of the ternary tracking method regardless of cell type in DISV grids. + release_time_tolerance: + type: double + longname: release time coincidence tolerance + description: real number indicating the tolerance within which to consider consecutive release + times coincident. Coincident release times will be merged into a single release time. The default + is $epsilon times 10^{11}$, where $epsilon$ is machine precision. + optional: true + release_time_frequency: + type: double + longname: release time frequency + description: real number indicating the time frequency at which to release particles. This option + can be used to schedule releases at a regular interval for the duration of the simulation, starting + at the simulation start time. The release schedule is the union of this option, the RELEASETIMES + block, and PERIOD block RELEASESETTING selections. If none of these are provided, a single release + time is configured at the beginning of the first time step of the simulation's first stress + period. + optional: true + coordinate_check_method: + type: string + longname: coordinate checking method + description: approach for verifying that release point coordinates are in the cell with the specified + ID. Possible values are NONE and EAGER. By default, release point coordinates are checked at + release time, i.e. EAGER. + optional: true + default: eager + valid: + - none + - eager + dev_cycle_detection_window: + type: integer + longname: cycle detection window size + description: integer value defining the size of the window (number of consecutive exit events) + used for cycle detection. Defaults to 0, disabling cycle detection. With detection enabled, + particle pathlines with duplicate cell exit events (i.e., exiting the same cell through the + same face twice) will cause the program to terminate with an error. A larger window size provides + more robust cycle detection at the cost of more runtime operations per cell exit. + optional: true + dimensions: + fields: + nreleasepts: + type: integer + longname: number of particle release points + description: is the number of particle release points. + nreleasetimes: + type: integer + longname: number of particle release times + description: is the number of particle release times specified in the RELEASETIMES block. This + is not necessarily the total number of release times; release times are the union of RELEASE_TIME_FREQUENCY, + RELEASETIMES block, and PERIOD block RELEASESETTING selections. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + irptno: + type: integer + longname: PRP id number for release point + description: integer value that defines the PRP release point number associated with the + specified PACKAGEDATA data on the line. IRPTNO must be greater than zero and less than + or equal to NRELEASEPTS. The program will terminate with an error if information for + a PRP release point number is specified more than once. + tagged: false + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + xrpt: + type: double + longname: x coordinate of release point + description: real value that defines the x coordinate of the release point in model coordinates. The + (x, y, z) location specified for the release point must lie within the cell that is identified + by the specified cellid. + tagged: false + yrpt: + type: double + longname: y coordinate of release point + description: real value that defines the y coordinate of the release point in model coordinates. The + (x, y, z) location specified for the release point must lie within the cell that is identified + by the specified cellid. + tagged: false + zrpt: + type: double + longname: z coordinate of release point + description: real value that defines the z coordinate of the release point in model coordinates + or, if the LOCAL_Z option is active, in local cell coordinates. The (x, y, z) location + specified for the release point must lie within the cell that is identified by the specified + cellid. + tagged: false + boundname: + type: string + longname: release point name + description: name of the particle release point. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - nreleasepts + releasetimes: + fields: + releasetimes: + type: list + optional: true + item: + type: record + fields: + time: + type: double + longname: release time + description: real value that defines the release time with respect to the simulation start + time. + tagged: false + shape: + - nreleasetimes + period: + fields: + perioddata: + type: list + item: + type: union + description: specifies time steps at which to release a particle. A particle is released at + the beginning of each specified time step. For fine control over release timing, specify times + explicitly using the RELEASETIMES block. If the beginning of a specified time step coincides + with a release time specified in the RELEASETIMES block or configured via RELEASE_TIME_FREQUENCY, + only one particle is released at that time. Coincidence is evaluated up to the tolerance specified + in RELEASE_TIME_TOLERANCE, or $epsilon times 10^{11}$ by default, where $epsilon$ is machine + precision. If no release times are configured via this setting, the RELEASETIMES block, or + the RELEASE_TIME_FREQUENCY option, a single release time is configured at the beginning of + the first time step of the simulation's first stress period. + arms: + all: + type: keyword + description: keyword to indicate release at the start of all time steps in the period. + first: + type: keyword + description: keyword to indicate release at the start of the first time step in the period. + This keyword may be used in conjunction with other RELEASESETTING options. + last: + type: keyword + description: keyword to indicate release at the start of the last time step in the period. + This keyword may be used in conjunction with other RELEASESETTING options. + frequency: + type: integer + description: release at the specified time step frequency. This keyword may be used in conjunction + with other RELEASESETTING options. + 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 + 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 + dtype: double +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iexmeth: + set_in: ar + source: dev_exit_solve_method + type: integer + extol: + set_in: ar + source: exit_solve_tolerance + type: double + localz: + set_in: ar + source: local_z + type: logical + extend: + set_in: ar + source: extend_tracking + type: logical + istopweaksink: + set_in: ar + source: stop_at_weak_sink + type: integer + release_timesfn: + set_in: ar + source: release_timesfile + type: logical + idrymeth: + set_in: ar + source: dry_tracking_method + type: string + frctrn: + set_in: ar + source: dev_forceternary + type: logical + rttol: + set_in: ar + source: release_time_tolerance + type: double + rtfreq: + set_in: ar + source: release_time_frequency + type: double + ichkmeth: + set_in: ar + source: coordinate_check_method + type: string + icycwin: + set_in: ar + source: dev_cycle_detection_window + type: integer + nreleasepts: + set_in: ar + source: nreleasepts + type: integer + nreleasetimes: + set_in: ar + source: nreleasetimes + type: integer + ipakcb: + set_in: ar + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: Boundary data for the current stress period. + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: PRP + output: ipakcb + obs_type: PRP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: PRP-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.json new file mode 100644 index 00000000..21c50201 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.json @@ -0,0 +1,200 @@ +{ + "type": "simulation", + "schema_version": "2.0.0.dev3", + "name": "sim-nam", + "blocks": { + "options": { + "fields": { + "continue": { + "type": "keyword", + "longname": "continue if not converged", + "description": "keyword flag to indicate that the simulation should continue even if one or more solutions do not converge.", + "optional": true + }, + "nocheck": { + "type": "keyword", + "longname": "turn off checking", + "description": "keyword flag to indicate that the model input check routines should not be called prior to each time step. Checks are performed by default.", + "optional": true + }, + "memory_print_option": { + "type": "string", + "longname": "memory print option", + "description": "is a flag that controls printing of detailed memory manager usage to the end of the simulation list file. NONE means do not print detailed information. SUMMARY means print only the total memory for each simulation component. ALL means print information for each variable stored in the memory manager. NONE is default if MEMORY_PRINT_OPTION is not specified.", + "optional": true + }, + "profile_option": { + "type": "string", + "longname": "profiling option", + "description": "is a flag that controls performance profiling and reporting. NONE disables profiling. SUMMARY means to measure and print a coarse performance profile. DETAIL means collect and print information with the highest resolution available. NONE is default if PROFILE_OPTION is not specified.", + "optional": true + }, + "maxerrors": { + "type": "integer", + "longname": "maximum number of errors", + "description": "maximum number of errors that will be stored and printed.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to activate printing of simulation input summaries to the simulation list file (mfsim.lst). With this keyword, input summaries will be written for those packages that support newer input data model routines. Not all packages are supported yet by the newer input data model routines.", + "optional": true + }, + "hpc_filerecord": { + "type": "record", + "description": "hpc record", + "optional": true, + "fields": { + "hpc6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a hpc file.", + "mode": "filein" + } + } + } + } + }, + "timing": { + "fields": { + "tdis6": { + "type": "string", + "longname": "name of tdis input file", + "description": "is the name of the Temporal Discretization (TDIS) Input File.", + "case_sensitive": true + } + } + }, + "models": { + "fields": { + "models": { + "type": "list", + "longname": "list of models", + "description": "is the list of model types, model name files, and model names.", + "item": { + "type": "record", + "description": "is the record of model types, model name files, and model names.", + "fields": { + "mtype": { + "type": "string", + "longname": "model type", + "description": "is the type of model to add to simulation.", + "tagged": false + }, + "mfname": { + "type": "string", + "longname": "file name for model name file", + "description": "is the file name of the model name file.", + "tagged": false, + "case_sensitive": true + }, + "mname": { + "type": "string", + "longname": "name of model", + "description": "is the user-assigned name of the model. The model name cannot exceed 16 characters and must not have blanks within the name. The model name is case insensitive; any lowercase letters are converted and stored as upper case letters.", + "tagged": false + } + } + } + } + } + }, + "exchanges": { + "fields": { + "exchanges": { + "type": "list", + "longname": "list of exchanges", + "description": "is the list of exchange types, exchange files, and model names.", + "item": { + "type": "record", + "description": "is the record of exchange types, exchange files, and model names.", + "fields": { + "exgtype": { + "type": "string", + "longname": "exchange type", + "description": "is the exchange type.", + "tagged": false + }, + "exgfile": { + "type": "string", + "longname": "input file for exchange", + "description": "is the input file for the exchange.", + "tagged": false, + "case_sensitive": true + }, + "exgmnamea": { + "type": "string", + "longname": "name of model A", + "description": "is the name of the first model that is part of this exchange.", + "tagged": false + }, + "exgmnameb": { + "type": "string", + "longname": "name of model B", + "description": "is the name of the second model that is part of this exchange.", + "tagged": false + } + } + } + } + } + }, + "solutiongroup": { + "fields": { + "mxiter": { + "type": "integer", + "longname": "maximum solution group iterations", + "description": "is the maximum number of outer iterations for this solution group. The default value is 1. If there is only one solution in the solution group, then MXITER must be 1.", + "optional": true + }, + "solutiongroup": { + "type": "list", + "longname": "solution type and models in the solution", + "description": "is the list of solution types and models in the solution.", + "item": { + "type": "record", + "description": "is the record of solution types and models in the solution.", + "fields": { + "slntype": { + "type": "string", + "longname": "type of solution", + "description": "is the type of solution. The Integrated Model Solution (IMS6) and Explicit Model Solution (EMS6) are the only supported options in this version.", + "tagged": false, + "valid": [ + "ims6", + "ems6" + ] + }, + "slnfname": { + "type": "string", + "longname": "file name for solution input", + "description": "name of file containing solution input.", + "tagged": false, + "case_sensitive": true + }, + "slnmnames": { + "type": "array", + "longname": "array of model names in this solution", + "description": "is the array of model names to add to this solution. The number of model names is determined by the number of model names the user provides on this line.", + "dtype": "string" + } + } + } + } + } + } + }, + "memory": { + "prmem": { + "set_in": "ar", + "source": "memory_print_option", + "type": "string" + }, + "prprof": { + "set_in": "ar", + "source": "profile_option", + "type": "string" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.toml new file mode 100644 index 00000000..1cddc452 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.toml @@ -0,0 +1,166 @@ +type = "simulation" +schema_version = "2.0.0.dev3" +name = "sim-nam" + +[blocks.options.fields.continue] +type = "keyword" +longname = "continue if not converged" +description = "keyword flag to indicate that the simulation should continue even if one or more solutions do not converge." +optional = true + +[blocks.options.fields.nocheck] +type = "keyword" +longname = "turn off checking" +description = "keyword flag to indicate that the model input check routines should not be called prior to each time step. Checks are performed by default." +optional = true + +[blocks.options.fields.memory_print_option] +type = "string" +longname = "memory print option" +description = "is a flag that controls printing of detailed memory manager usage to the end of the simulation list file. NONE means do not print detailed information. SUMMARY means print only the total memory for each simulation component. ALL means print information for each variable stored in the memory manager. NONE is default if MEMORY_PRINT_OPTION is not specified." +optional = true + +[blocks.options.fields.profile_option] +type = "string" +longname = "profiling option" +description = "is a flag that controls performance profiling and reporting. NONE disables profiling. SUMMARY means to measure and print a coarse performance profile. DETAIL means collect and print information with the highest resolution available. NONE is default if PROFILE_OPTION is not specified." +optional = true + +[blocks.options.fields.maxerrors] +type = "integer" +longname = "maximum number of errors" +description = "maximum number of errors that will be stored and printed." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to activate printing of simulation input summaries to the simulation list file (mfsim.lst). With this keyword, input summaries will be written for those packages that support newer input data model routines. Not all packages are supported yet by the newer input data model routines." +optional = true + +[blocks.options.fields.hpc_filerecord] +type = "record" +description = "hpc record" +optional = true + +[blocks.options.fields.hpc_filerecord.fields.hpc6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a hpc file." +mode = "filein" + +[blocks.timing.fields.tdis6] +type = "string" +longname = "name of tdis input file" +description = "is the name of the Temporal Discretization (TDIS) Input File." +case_sensitive = true + +[blocks.models.fields.models] +type = "list" +longname = "list of models" +description = "is the list of model types, model name files, and model names." + +[blocks.models.fields.models.item] +type = "record" +description = "is the record of model types, model name files, and model names." + +[blocks.models.fields.models.item.fields.mtype] +type = "string" +longname = "model type" +description = "is the type of model to add to simulation." +tagged = false + +[blocks.models.fields.models.item.fields.mfname] +type = "string" +longname = "file name for model name file" +description = "is the file name of the model name file." +tagged = false +case_sensitive = true + +[blocks.models.fields.models.item.fields.mname] +type = "string" +longname = "name of model" +description = "is the user-assigned name of the model. The model name cannot exceed 16 characters and must not have blanks within the name. The model name is case insensitive; any lowercase letters are converted and stored as upper case letters." +tagged = false + +[blocks.exchanges.fields.exchanges] +type = "list" +longname = "list of exchanges" +description = "is the list of exchange types, exchange files, and model names." + +[blocks.exchanges.fields.exchanges.item] +type = "record" +description = "is the record of exchange types, exchange files, and model names." + +[blocks.exchanges.fields.exchanges.item.fields.exgtype] +type = "string" +longname = "exchange type" +description = "is the exchange type." +tagged = false + +[blocks.exchanges.fields.exchanges.item.fields.exgfile] +type = "string" +longname = "input file for exchange" +description = "is the input file for the exchange." +tagged = false +case_sensitive = true + +[blocks.exchanges.fields.exchanges.item.fields.exgmnamea] +type = "string" +longname = "name of model A" +description = "is the name of the first model that is part of this exchange." +tagged = false + +[blocks.exchanges.fields.exchanges.item.fields.exgmnameb] +type = "string" +longname = "name of model B" +description = "is the name of the second model that is part of this exchange." +tagged = false + +[blocks.solutiongroup.fields.mxiter] +type = "integer" +longname = "maximum solution group iterations" +description = "is the maximum number of outer iterations for this solution group. The default value is 1. If there is only one solution in the solution group, then MXITER must be 1." +optional = true + +[blocks.solutiongroup.fields.solutiongroup] +type = "list" +longname = "solution type and models in the solution" +description = "is the list of solution types and models in the solution." + +[blocks.solutiongroup.fields.solutiongroup.item] +type = "record" +description = "is the record of solution types and models in the solution." + +[blocks.solutiongroup.fields.solutiongroup.item.fields.slntype] +type = "string" +longname = "type of solution" +description = "is the type of solution. The Integrated Model Solution (IMS6) and Explicit Model Solution (EMS6) are the only supported options in this version." +tagged = false +valid = [ + "ims6", + "ems6", +] + +[blocks.solutiongroup.fields.solutiongroup.item.fields.slnfname] +type = "string" +longname = "file name for solution input" +description = "name of file containing solution input." +tagged = false +case_sensitive = true + +[blocks.solutiongroup.fields.solutiongroup.item.fields.slnmnames] +type = "array" +longname = "array of model names in this solution" +description = "is the array of model names to add to this solution. The number of model names is determined by the number of model names the user provides on this line." +dtype = "string" + +[memory.prmem] +set_in = "ar" +source = "memory_print_option" +type = "string" + +[memory.prprof] +set_in = "ar" +source = "profile_option" +type = "string" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.yaml new file mode 100644 index 00000000..7e44c6a6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-nam.yaml @@ -0,0 +1,169 @@ +type: simulation +schema_version: 2.0.0.dev3 +name: sim-nam +blocks: + options: + fields: + continue: + type: keyword + longname: continue if not converged + description: keyword flag to indicate that the simulation should continue even if one or more + solutions do not converge. + optional: true + nocheck: + type: keyword + longname: turn off checking + description: keyword flag to indicate that the model input check routines should not be called + prior to each time step. Checks are performed by default. + optional: true + memory_print_option: + type: string + longname: memory print option + description: is a flag that controls printing of detailed memory manager usage to the end of the + simulation list file. NONE means do not print detailed information. SUMMARY means print only + the total memory for each simulation component. ALL means print information for each variable + stored in the memory manager. NONE is default if MEMORY_PRINT_OPTION is not specified. + optional: true + profile_option: + type: string + longname: profiling option + description: is a flag that controls performance profiling and reporting. NONE disables profiling. + SUMMARY means to measure and print a coarse performance profile. DETAIL means collect and print + information with the highest resolution available. NONE is default if PROFILE_OPTION is not + specified. + optional: true + maxerrors: + type: integer + longname: maximum number of errors + description: maximum number of errors that will be stored and printed. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to activate printing of simulation input summaries to the simulation list + file (mfsim.lst). With this keyword, input summaries will be written for those packages that + support newer input data model routines. Not all packages are supported yet by the newer input + data model routines. + optional: true + hpc_filerecord: + type: record + description: hpc record + optional: true + fields: + hpc6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a hpc file. + mode: filein + timing: + fields: + tdis6: + type: string + longname: name of tdis input file + description: is the name of the Temporal Discretization (TDIS) Input File. + case_sensitive: true + models: + fields: + models: + type: list + longname: list of models + description: is the list of model types, model name files, and model names. + item: + type: record + description: is the record of model types, model name files, and model names. + fields: + mtype: + type: string + longname: model type + description: is the type of model to add to simulation. + tagged: false + mfname: + type: string + longname: file name for model name file + description: is the file name of the model name file. + tagged: false + case_sensitive: true + mname: + type: string + longname: name of model + description: is the user-assigned name of the model. The model name cannot exceed 16 characters + and must not have blanks within the name. The model name is case insensitive; any lowercase + letters are converted and stored as upper case letters. + tagged: false + exchanges: + fields: + exchanges: + type: list + longname: list of exchanges + description: is the list of exchange types, exchange files, and model names. + item: + type: record + description: is the record of exchange types, exchange files, and model names. + fields: + exgtype: + type: string + longname: exchange type + description: is the exchange type. + tagged: false + exgfile: + type: string + longname: input file for exchange + description: is the input file for the exchange. + tagged: false + case_sensitive: true + exgmnamea: + type: string + longname: name of model A + description: is the name of the first model that is part of this exchange. + tagged: false + exgmnameb: + type: string + longname: name of model B + description: is the name of the second model that is part of this exchange. + tagged: false + solutiongroup: + fields: + mxiter: + type: integer + longname: maximum solution group iterations + description: is the maximum number of outer iterations for this solution group. The default value + is 1. If there is only one solution in the solution group, then MXITER must be 1. + optional: true + solutiongroup: + type: list + longname: solution type and models in the solution + description: is the list of solution types and models in the solution. + item: + type: record + description: is the record of solution types and models in the solution. + fields: + slntype: + type: string + longname: type of solution + description: is the type of solution. The Integrated Model Solution (IMS6) and Explicit + Model Solution (EMS6) are the only supported options in this version. + tagged: false + valid: + - ims6 + - ems6 + slnfname: + type: string + longname: file name for solution input + description: name of file containing solution input. + tagged: false + case_sensitive: true + slnmnames: + type: array + longname: array of model names in this solution + description: is the array of model names to add to this solution. The number of model names + is determined by the number of model names the user provides on this line. + dtype: string +memory: + prmem: + set_in: ar + source: memory_print_option + type: string + prprof: + set_in: ar + source: profile_option + type: string diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json new file mode 100644 index 00000000..5b6b8923 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.json @@ -0,0 +1,97 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "sim-tdis", + "parent": "sim-nam", + "dims": { + "nper": { + "value": "nper", + "scope": "simulation" + } + }, + "blocks": { + "options": { + "fields": { + "time_units": { + "type": "string", + "longname": "time unit", + "description": "is the time units of the simulation. This is a text string that is used as a label within model output files. Values for time_units may be 'unknown', 'seconds', 'minutes', 'hours', 'days', or 'years'. The default time unit is 'unknown'.", + "optional": true + }, + "start_date_time": { + "type": "string", + "longname": "starting date and time", + "description": "is the starting date and time of the simulation. This is a text string that is used as a label within the simulation list file. The value has no effect on the simulation. The recommended format for the starting date and time is described at https://www.w3.org/TR/NOTE-datetime.", + "optional": true + }, + "ats_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ats6": { + "type": "file", + "longname": "ats keyword", + "description": "keyword to specify that record corresponds to an adaptive time step (ATS) input file. The behavior of ATS and a description of the input file is provided separately.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "nper": { + "type": "integer", + "longname": "number of stress periods", + "description": "is the number of stress periods for the simulation.", + "default": 1 + } + } + }, + "perioddata": { + "fields": { + "perioddata": { + "type": "list", + "longname": "stress period time information", + "default": [ + [ + 1.0, + 1, + 1.0 + ] + ], + "item": { + "type": "record", + "fields": { + "perlen": { + "type": "double", + "longname": "length of stress period", + "description": "is the length of a stress period.", + "tagged": false + }, + "nstp": { + "type": "integer", + "longname": "number of time steps", + "description": "is the number of time steps in a stress period.", + "tagged": false + }, + "tsmult": { + "type": "double", + "longname": "number of time steps", + "description": "is the multiplier for the length of successive time steps. The length of a time step is calculated by multiplying the length of the previous time step by TSMULT. 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 + } + } + } + } + } + } + }, + "memory": { + "nper": { + "set_in": "ar", + "source": "nper", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml new file mode 100644 index 00000000..b39119c1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.toml @@ -0,0 +1,73 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "sim-tdis" +parent = "sim-nam" + +[dims.nper] +value = "nper" +scope = "simulation" + +[blocks.options.fields.time_units] +type = "string" +longname = "time unit" +description = "is the time units of the simulation. This is a text string that is used as a label within model output files. Values for time_units may be 'unknown', 'seconds', 'minutes', 'hours', 'days', or 'years'. The default time unit is 'unknown'." +optional = true + +[blocks.options.fields.start_date_time] +type = "string" +longname = "starting date and time" +description = "is the starting date and time of the simulation. This is a text string that is used as a label within the simulation list file. The value has no effect on the simulation. The recommended format for the starting date and time is described at https://www.w3.org/TR/NOTE-datetime." +optional = true + +[blocks.options.fields.ats_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ats_filerecord.fields.ats6] +type = "file" +longname = "ats keyword" +description = "keyword to specify that record corresponds to an adaptive time step (ATS) input file. The behavior of ATS and a description of the input file is provided separately." +mode = "filein" + +[blocks.dimensions.fields.nper] +type = "integer" +longname = "number of stress periods" +description = "is the number of stress periods for the simulation." +default = 1 + +[blocks.perioddata.fields.perioddata] +type = "list" +longname = "stress period time information" +default = [ + [ + 1.0, + 1, + 1.0, + ], +] + +[blocks.perioddata.fields.perioddata.item] +type = "record" + +[blocks.perioddata.fields.perioddata.item.fields.perlen] +type = "double" +longname = "length of stress period" +description = "is the length of a stress period." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.nstp] +type = "integer" +longname = "number of time steps" +description = "is the number of time steps in a stress period." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.tsmult] +type = "double" +longname = "number of time steps" +description = "is the multiplier for the length of successive time steps. The length of a time step is calculated by multiplying the length of the previous time step by TSMULT. 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 + +[memory.nper] +set_in = "ar" +source = "nper" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml new file mode 100644 index 00000000..6dfe3436 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sim-tdis.yaml @@ -0,0 +1,77 @@ +type: package +schema_version: 2.0.0.dev3 +name: sim-tdis +parent: sim-nam +dims: + nper: + value: nper + scope: simulation +blocks: + options: + fields: + time_units: + type: string + longname: time unit + description: is the time units of the simulation. This is a text string that is used as a label + within model output files. Values for time_units may be 'unknown', 'seconds', 'minutes', 'hours', + 'days', or 'years'. The default time unit is 'unknown'. + optional: true + start_date_time: + type: string + longname: starting date and time + description: is the starting date and time of the simulation. This is a text string that is used + as a label within the simulation list file. The value has no effect on the simulation. The + recommended format for the starting date and time is described at https://www.w3.org/TR/NOTE-datetime. + optional: true + ats_filerecord: + type: record + optional: true + fields: + ats6: + type: file + longname: ats keyword + description: keyword to specify that record corresponds to an adaptive time step (ATS) input + file. The behavior of ATS and a description of the input file is provided separately. + mode: filein + dimensions: + fields: + nper: + type: integer + longname: number of stress periods + description: is the number of stress periods for the simulation. + default: 1 + perioddata: + fields: + perioddata: + type: list + longname: stress period time information + default: + - - 1.0 + - 1 + - 1.0 + item: + type: record + fields: + perlen: + type: double + longname: length of stress period + description: is the length of a stress period. + tagged: false + nstp: + type: integer + longname: number of time steps + description: is the number of time steps in a stress period. + tagged: false + tsmult: + type: double + longname: number of time steps + description: is the multiplier for the length of successive time steps. The length of a + time step is calculated by multiplying the length of the previous time step by TSMULT. + 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 +memory: + nper: + set_in: ar + source: nper + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.json new file mode 100644 index 00000000..2b084188 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.json @@ -0,0 +1,21 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "sln-ems", + "parent": "sim-nam", + "subtype": "solution", + "memory": { + "icnvg": { + "readonly": true, + "set_in": "ar", + "description": "Convergence flag. 1 if the solution converged; 0 otherwise. Updated after each call to the solver.", + "type": "integer" + }, + "ttsoln": { + "readonly": true, + "set_in": "ar", + "description": "Cumulative CPU time (seconds) spent in the solver.", + "type": "double" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.toml new file mode 100644 index 00000000..2751fc0a --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.toml @@ -0,0 +1,17 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "sln-ems" +parent = "sim-nam" +subtype = "solution" + +[memory.icnvg] +readonly = true +set_in = "ar" +description = "Convergence flag. 1 if the solution converged; 0 otherwise. Updated after each call to the solver." +type = "integer" + +[memory.ttsoln] +readonly = true +set_in = "ar" +description = "Cumulative CPU time (seconds) spent in the solver." +type = "double" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.yaml new file mode 100644 index 00000000..06609375 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ems.yaml @@ -0,0 +1,17 @@ +type: package +schema_version: 2.0.0.dev3 +name: sln-ems +parent: sim-nam +subtype: solution +memory: + icnvg: + readonly: true + set_in: ar + description: Convergence flag. 1 if the solution converged; 0 otherwise. Updated after each call to + the solver. + type: integer + ttsoln: + readonly: true + set_in: ar + description: Cumulative CPU time (seconds) spent in the solver. + type: double diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.json new file mode 100644 index 00000000..66acdb74 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.json @@ -0,0 +1,366 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "sln-ims", + "parent": "sim-nam", + "subtype": "solution", + "blocks": { + "options": { + "fields": { + "print_option": { + "type": "string", + "longname": "print option", + "description": "is a flag that controls printing of convergence information from the solver. NONE means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual reduction summaries. ALL means print linear matrix solver convergence information to the solution listing file and model specific linear matrix solver convergence information to each model listing file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified.", + "optional": true + }, + "complexity": { + "type": "string", + "longname": "print option", + "description": "is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE - indicates that default solver input values will be defined that work well for nearly linear models. This would be used for models that do not include nonlinear stress packages and models that are either confined or consist of a single unconfined layer that is thick enough to contain the water table within a single layer. MODERATE - indicates that default solver input values will be defined that work well for moderately nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers. The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX - indicates that default solver input values will be defined that work well for highly nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers representing complex geology and surface-water/groundwater interaction. The COMPLEX option should be used when the MODERATE option does not result in successful convergence. Non-linear and linear solver parameters assigned using a specified complexity can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, NONLINEAR and LINEAR variables will be assigned the simple complexity values.", + "optional": true + }, + "csv_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values solver convergence output. The CSV_OUTPUT option has been deprecated and split into the CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option.", + "mode": "fileout" + } + } + }, + "csv_outer_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_outer_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values outer iteration convergence output.", + "mode": "fileout" + } + } + }, + "csv_inner_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_inner_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values solver convergence output.", + "mode": "fileout" + } + } + }, + "no_ptcrecord": { + "type": "record", + "longname": "no_ptc record", + "optional": true, + "fields": { + "no_ptc": { + "type": "keyword", + "longname": "no pseudo-transient continuation", + "description": "is a flag that is used to disable pseudo-transient continuation (PTC). Option only applies to steady-state stress periods for models using the Newton-Raphson formulation. For many problems, PTC can significantly improve convergence behavior for steady-state simulations, and for this reason it is active by default. In some cases, however, PTC can worsen the convergence behavior, especially when the initial conditions are similar to the solution. When the initial conditions are similar to, or exactly the same as, the solution and convergence is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress period. The NO_PTC ALL option should also be used in order to compare convergence behavior with other MODFLOW versions, as PTC is only available in MODFLOW 6." + }, + "no_ptc_option": { + "type": "string", + "longname": "no pseudo-transient continuation option", + "description": "is an optional keyword that is used to define options for disabling pseudo-transient continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an optional keyword to disable PTC for all steady-state stress periods for models using the Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is used.", + "optional": true, + "tagged": false + } + } + }, + "ats_outer_maximum_fraction": { + "type": "double", + "longname": "fraction of outer maximum used with ats", + "description": "real value defining the fraction of the maximum allowable outer iterations used with the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the user, then this solution will have no effect on ATS behavior. This value must be greater than or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If it is not specified by the user, then it is assigned a default value of one third. When the number of outer iterations for this solution is less than the product of this value and the maximum allowable outer iterations, then ATS will increase the time step length by a factor of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater than the maximum allowable outer iterations minus the product of this value and the maximum allowable outer iterations, then the ATS (if active) will decrease the time step length by a factor of 1 / DTADJ.", + "optional": true + } + } + }, + "nonlinear": { + "fields": { + "outer_hclose": { + "type": "double", + "longname": "head change criterion", + "description": "real value defining the head change criterion for convergence of the outer (nonlinear) iterations, in units of length. When the maximum absolute value of the head change at all nodes during an iteration is less than or equal to OUTER_HCLOSE, iteration stops. Commonly, OUTER_HCLOSE equals 0.01. The OUTER_HCLOSE option has been deprecated in favor of the more general OUTER_DVCLOSE (for dependent variable), however either one can be specified in order to maintain backward compatibility.", + "optional": true + }, + "outer_dvclose": { + "type": "double", + "longname": "dependent-variable change criterion", + "description": "real value defining the dependent-variable (for example, head) change criterion for convergence of the outer (nonlinear) iterations, in units of the dependent-variable (for example, length for head). When the maximum absolute value of the dependent-variable change at all nodes during an iteration is less than or equal to OUTER_DVCLOSE, iteration stops. Commonly, OUTER_DVCLOSE equals 0.01. The keyword, OUTER_HCLOSE can be still be specified instead of OUTER_DVCLOSE for backward compatibility with previous versions of MODFLOW 6 but eventually OUTER_HCLOSE will be deprecated and specification of OUTER_HCLOSE will cause MODFLOW 6 to terminate with an error." + }, + "outer_rclosebnd": { + "type": "double", + "longname": "boundary package flow residual tolerance", + "description": "real value defining the residual tolerance for convergence of model packages that solve a separate equation not solved by the IMS linear solver. This value represents the maximum allowable residual between successive outer iterations at any single model package element. An example of a model package that would use OUTER_RCLOSEBND to evaluate convergence is the SFR package which solves a continuity equation for each reach. The OUTER_RCLOSEBND option is deprecated and has no effect on simulation results as of version 6.1.1. The keyword, OUTER_RCLOSEBND can be still be specified for backward compatibility with previous versions of MODFLOW 6 but eventually specification of OUTER_RCLOSEBND will cause MODFLOW 6 to terminate with an error.", + "optional": true + }, + "outer_maximum": { + "type": "integer", + "longname": "outer maximum iterations", + "description": "integer value defining the maximum number of outer (nonlinear) iterations -- that is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1." + }, + "under_relaxation": { + "type": "string", + "longname": "under relaxation scheme", + "description": "is an optional keyword that defines the nonlinear under-relaxation schemes used. Under-relaxation is also known as dampening, and is used to reduce the size of the calculated dependent variable before proceeding to the next outer iteration. Under-relaxation can be an effective tool for highly nonlinear models when there are large and often counteracting changes in the calculated dependent variable between successive outer iterations. By default under-relaxation is not used. NONE - under-relaxation is not used (default). SIMPLE - Simple under-relaxation scheme with a fixed relaxation factor (UNDER_RELAXATION_GAMMA) is used. COOLEY - Cooley under-relaxation scheme is used. DBD - delta-bar-delta under-relaxation is used. Note that the under-relaxation schemes are often used in conjunction with problems that use the Newton-Raphson formulation, however, experience has indicated that they also work well for non-Newton problems, such as those with the wet/dry options of MODFLOW 6.", + "optional": true + }, + "under_relaxation_gamma": { + "type": "double", + "longname": "relaxation factor for SIMPLE or the history or memory term factor for the Cooley and delta-bar-delta algorithms", + "description": "real value defining either the relaxation factor for the SIMPLE scheme or the history or memory term factor of the Cooley and delta-bar-delta algorithms. For the SIMPLE scheme, a value of one indicates that there is no under-relaxation and the full head change is applied. This value can be gradually reduced from one as a way to improve convergence; for well behaved problems, using a value less than one can increase the number of outer iterations required for convergence and needlessly increase run times. UNDER_RELAXATION_GAMMA must be greater than zero for the SIMPLE scheme or the program will terminate with an error. For the Cooley and delta-bar-delta schemes, UNDER_RELAXATION_GAMMA is a memory term that can range between zero and one. When UNDER_RELAXATION_GAMMA is zero, only the most recent history (previous iteration value) is maintained. As UNDER_RELAXATION_GAMMA is increased, past history of iteration changes has greater influence on the memory term. The memory term is maintained as an exponential average of past changes. Retaining some past history can overcome granular behavior in the calculated function surface and therefore helps to overcome cyclic patterns of non-convergence. The value usually ranges from 0.1 to 0.3; a value of 0.2 works well for most problems. UNDER_RELAXATION_GAMMA only needs to be specified if UNDER_RELAXATION is not NONE.", + "optional": true + }, + "under_relaxation_theta": { + "type": "double", + "longname": "under relaxation reduction factor", + "description": "real value defining the reduction factor for the learning rate (under-relaxation term) of the delta-bar-delta algorithm. The value of UNDER_RELAXATION_THETA is between zero and one. If the change in the dependent-variable (for example, head) is of opposite sign to that of the previous iteration, the under-relaxation term is reduced by a factor of UNDER_RELAXATION_THETA. The value usually ranges from 0.3 to 0.9; a value of 0.7 works well for most problems. UNDER_RELAXATION_THETA only needs to be specified if UNDER_RELAXATION is DBD.", + "optional": true + }, + "under_relaxation_kappa": { + "type": "double", + "longname": "under relaxation increment for the learning rate", + "description": "real value defining the increment for the learning rate (under-relaxation term) of the delta-bar-delta algorithm. The value of UNDER_RELAXATION_kappa is between zero and one. If the change in the dependent-variable (for example, head) is of the same sign to that of the previous iteration, the under-relaxation term is increased by an increment of UNDER_RELAXATION_KAPPA. The value usually ranges from 0.03 to 0.3; a value of 0.1 works well for most problems. UNDER_RELAXATION_KAPPA only needs to be specified if UNDER_RELAXATION is DBD.", + "optional": true + }, + "under_relaxation_momentum": { + "type": "double", + "longname": "fraction of past history changes that is added as a momentum term", + "description": "real value defining the fraction of past history changes that is added as a momentum term to the step change for a nonlinear iteration. The value of UNDER_RELAXATION_MOMENTUM is between zero and one. A large momentum term should only be used when small learning rates are expected. Small amounts of the momentum term help convergence. The value usually ranges from 0.0001 to 0.1; a value of 0.001 works well for most problems. UNDER_RELAXATION_MOMENTUM only needs to be specified if UNDER_RELAXATION is DBD.", + "optional": true + }, + "backtracking_number": { + "type": "integer", + "longname": "maximum number of backtracking iterations", + "description": "integer value defining the maximum number of backtracking iterations allowed for residual reduction computations. If BACKTRACKING_NUMBER = 0 then the backtracking iterations are omitted. The value usually ranges from 2 to 20; a value of 10 works well for most problems.", + "optional": true + }, + "backtracking_tolerance": { + "type": "double", + "longname": "tolerance for residual change that is allowed for residual reduction", + "description": "real value defining the tolerance for residual change that is allowed for residual reduction computations. BACKTRACKING_TOLERANCE should not be less than one to avoid getting stuck in local minima. A large value serves to check for extreme residual increases, while a low value serves to control step size more severely. The value usually ranges from 1.0 to 10$^6$; a value of 10$^4$ works well for most problems but lower values like 1.1 may be required for harder problems. BACKTRACKING_TOLERANCE only needs to be specified if BACKTRACKING_NUMBER is greater than zero.", + "optional": true + }, + "backtracking_reduction_factor": { + "type": "double", + "longname": "reduction in step size used for residual reduction computations", + "description": "real value defining the reduction in step size used for residual reduction computations. The value of BACKTRACKING_REDUCTION_FACTOR is between zero and one. The value usually ranges from 0.1 to 0.3; a value of 0.2 works well for most problems. BACKTRACKING_REDUCTION_FACTOR only needs to be specified if BACKTRACKING_NUMBER is greater than zero.", + "optional": true + }, + "backtracking_residual_limit": { + "type": "double", + "longname": "limit to which the residual is reduced with backtracking", + "description": "real value defining the limit to which the residual is reduced with backtracking. If the residual is smaller than BACKTRACKING_RESIDUAL_LIMIT, then further backtracking is not performed. A value of 100 is suitable for large problems and residual reduction to smaller values may only slow down computations. BACKTRACKING_RESIDUAL_LIMIT only needs to be specified if BACKTRACKING_NUMBER is greater than zero.", + "optional": true + } + } + }, + "linear": { + "fields": { + "inner_maximum": { + "type": "integer", + "longname": "maximum number of inner iterations", + "description": "integer value defining the maximum number of inner (linear) iterations. The number typically depends on the characteristics of the matrix solution scheme being used. For nonlinear problems, INNER_MAXIMUM usually ranges from 60 to 600; a value of 100 will be sufficient for most linear problems." + }, + "inner_hclose": { + "type": "double", + "longname": "head change tolerance", + "description": "real value defining the head change criterion for convergence of the inner (linear) iterations, in units of length. When the maximum absolute value of the head change at all nodes during an iteration is less than or equal to INNER_HCLOSE, the matrix solver assumes convergence. Commonly, INNER_HCLOSE is set equal to or an order of magnitude less than the OUTER_HCLOSE value specified for the NONLINEAR block. The INNER_HCLOSE keyword has been deprecated in favor of the more general INNER_DVCLOSE (for dependent variable), however either one can be specified in order to maintain backward compatibility.", + "optional": true + }, + "inner_dvclose": { + "type": "double", + "longname": "dependent-variable change tolerance", + "description": "real value defining the dependent-variable (for example, head) change criterion for convergence of the inner (linear) iterations, in units of the dependent-variable (for example, length for head). When the maximum absolute value of the dependent-variable change at all nodes during an iteration is less than or equal to INNER_DVCLOSE, the matrix solver assumes convergence. Commonly, INNER_DVCLOSE is set equal to or an order of magnitude less than the OUTER_DVCLOSE value specified for the NONLINEAR block. The keyword, INNER_HCLOSE can be still be specified instead of INNER_DVCLOSE for backward compatibility with previous versions of MODFLOW 6 but eventually INNER_HCLOSE will be deprecated and specification of INNER_HCLOSE will cause MODFLOW 6 to terminate with an error." + }, + "rcloserecord": { + "type": "record", + "longname": "rclose record", + "fields": { + "inner_rclose": { + "type": "double", + "longname": "flow residual tolerance", + "description": "real value that defines the flow residual tolerance for convergence of the IMS linear solver and specific flow residual criteria used. This value represents the maximum allowable residual at any single node. Value is in units of length cubed per time, and must be consistent with mf length and time units. Usually a value of $1.0 times 10^{-1}$ is sufficient for the flow-residual criteria when meters and seconds are the defined mf length and time." + }, + "rclose_option": { + "type": "string", + "longname": "flow residual tolerance", + "description": "an optional keyword that defines the specific flow residual criterion used. STRICT--an optional keyword that is used to specify that INNER_RCLOSE represents a infinity-Norm (absolute convergence criteria) and that the dependent-variable (for example, head) and flow convergence criteria must be met on the first inner iteration (this criteria is equivalent to the criteria used by the MODFLOW-2005 PCG package~citep{hill1990preconditioned}). L2NORM_RCLOSE--an optional keyword that is used to specify that INNER_RCLOSE represents a L-2 Norm closure criteria instead of a infinity-Norm (absolute convergence criteria). When L2NORM_RCLOSE is specified, a reasonable initial INNER_RCLOSE value is 0.1 times the number of active cells when meters and seconds are the defined mf length and time. RELATIVE_RCLOSE--an optional keyword that is used to specify that INNER_RCLOSE represents a relative L-2 Norm reduction closure criteria instead of a infinity-Norm (absolute convergence criteria). When RELATIVE_RCLOSE is specified, a reasonable initial INNER_RCLOSE value is $1.0 times 10^{-4}$ and convergence is achieved for a given inner (linear) iteration when $Delta h le$ INNER_DVCLOSE and the current L-2 Norm is $le$ the product of the RELATIVE_RCLOSE and the initial L-2 Norm for the current inner (linear) iteration. If RCLOSE_OPTION is not specified, an absolute residual (infinity-norm) criterion is used.", + "optional": true, + "tagged": false + } + } + }, + "linear_acceleration": { + "type": "string", + "longname": "linear acceleration method", + "description": "a keyword that defines the linear acceleration method used by the default IMS linear solvers. CG - preconditioned conjugate gradient method. BICGSTAB - preconditioned bi-conjugate gradient stabilized method." + }, + "relaxation_factor": { + "type": "double", + "longname": "relaxation factor used by ILU factorization", + "description": "optional real value that defines the relaxation factor used by the incomplete LU factorization preconditioners (MILU(0) and MILUT). RELAXATION_FACTOR is unitless and should be greater than or equal to 0.0 and less than or equal to 1.0. RELAXATION_FACTOR values of about 1.0 are commonly used, and experience suggests that convergence can be optimized in some cases with relax values of 0.97. A RELAXATION_FACTOR value of 0.0 will result in either ILU(0) or ILUT preconditioning (depending on the value specified for PRECONDITIONER_LEVELS and/or PRECONDITIONER_DROP_TOLERANCE). By default, RELAXATION_FACTOR is zero.", + "optional": true + }, + "preconditioner_levels": { + "type": "integer", + "longname": "level of fill for ILU decomposition", + "description": "optional integer value defining the level of fill for ILU decomposition used in the ILUT and MILUT preconditioners. Higher levels of fill provide more robustness but also require more memory. For optimal performance, it is suggested that a large level of fill be applied (7 or 8) with use of a drop tolerance. Specification of a PRECONDITIONER_LEVELS value greater than zero results in use of the ILUT preconditioner. By default, PRECONDITIONER_LEVELS is zero and the zero-fill incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used.", + "optional": true + }, + "preconditioner_drop_tolerance": { + "type": "double", + "longname": "drop tolerance used to drop preconditioner terms", + "description": "optional real value that defines the drop tolerance used to drop preconditioner terms based on the magnitude of matrix entries in the ILUT and MILUT preconditioners. A value of $10^{-4}$ works well for most problems. By default, PRECONDITIONER_DROP_TOLERANCE is zero and the zero-fill incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used.", + "optional": true + }, + "number_orthogonalizations": { + "type": "integer", + "longname": "drop tolerance used to drop preconditioner terms", + "description": "optional integer value defining the interval used to explicitly recalculate the residual of the flow equation using the solver coefficient matrix, the latest dependent-variable (for example, head) estimates, and the right hand side. For problems that benefit from explicit recalculation of the residual, a number between 4 and 10 is appropriate. By default, NUMBER_ORTHOGONALIZATIONS is zero.", + "optional": true + }, + "scaling_method": { + "type": "string", + "longname": "matrix scaling approach", + "description": "an optional keyword that defines the matrix scaling approach used. By default, matrix scaling is not applied. NONE - no matrix scaling applied. DIAGONAL - symmetric matrix scaling using the POLCG preconditioner scaling method in Hill (1992). L2NORM - symmetric matrix scaling using the L2 norm.", + "optional": true + }, + "reordering_method": { + "type": "string", + "longname": "matrix reordering approach", + "description": "an optional keyword that defines the matrix reordering approach used. By default, matrix reordering is not applied. NONE - original ordering. RCM - reverse Cuthill McKee ordering. MD - minimum degree ordering.", + "optional": true + } + } + } + }, + "memory": { + "mxiter": { + "set_in": "ar", + "source": "outer_maximum", + "description": "Maximum outer (nonlinear) iterations.", + "type": "integer" + }, + "dvclose": { + "set_in": "ar", + "source": "outer_dvclose", + "description": "Outer dependent-variable change closure criterion.", + "type": "double" + }, + "theta": { + "set_in": "ar", + "source": "under_relaxation_theta", + "description": "Under-relaxation reduction factor (delta-bar-delta).", + "type": "double" + }, + "akappa": { + "set_in": "ar", + "source": "under_relaxation_kappa", + "description": "Under-relaxation increment for the learning rate (delta-bar-delta).", + "type": "double" + }, + "gamma": { + "set_in": "ar", + "source": "under_relaxation_gamma", + "description": "Under-relaxation memory factor (Cooley or delta-bar-delta).", + "type": "double" + }, + "amomentum": { + "set_in": "ar", + "source": "under_relaxation_momentum", + "description": "Momentum coefficient for the under-relaxation step (delta-bar-delta).", + "type": "double" + }, + "numtrack": { + "set_in": "ar", + "source": "backtracking_number", + "description": "Maximum backtracking iterations; 0 disables backtracking.", + "type": "integer" + }, + "btol": { + "set_in": "ar", + "source": "backtracking_tolerance", + "description": "Residual increase tolerance that triggers backtracking.", + "type": "double" + }, + "breduc": { + "set_in": "ar", + "source": "backtracking_reduction_factor", + "description": "Step-size reduction factor used during backtracking.", + "type": "double" + }, + "res_lim": { + "set_in": "ar", + "source": "backtracking_residual_limit", + "description": "Residual limit below which backtracking is not performed.", + "type": "double" + }, + "icnvg": { + "readonly": true, + "set_in": "ar", + "description": "Convergence flag. 1 if the solution converged in the last solve; 0 otherwise. Updated after each call to the solver.", + "type": "integer" + }, + "ttsoln": { + "readonly": true, + "set_in": "ar", + "description": "Cumulative CPU time (seconds) spent in the linear solver.", + "type": "double" + }, + "iter1": { + "set_in": "ar", + "source": "inner_maximum", + "description": "Maximum inner (linear) iterations.", + "type": "integer" + }, + "rclose": { + "set_in": "ar", + "source": "inner_rclose", + "description": "Flow residual closure criterion for the linear solver.", + "type": "double" + }, + "relax": { + "set_in": "ar", + "source": "relaxation_factor", + "description": "ILU(T) relaxation factor.", + "type": "double" + }, + "droptol": { + "set_in": "ar", + "source": "preconditioner_drop_tolerance", + "description": "ILUT drop tolerance.", + "type": "double" + }, + "north": { + "set_in": "ar", + "source": "number_orthogonalizations", + "description": "Interval for explicit residual recalculation.", + "type": "integer" + }, + "iscl": { + "set_in": "ar", + "source": "scaling_method", + "description": "Matrix scaling option (integer code derived from SCALING_METHOD).", + "type": "integer" + }, + "iord": { + "set_in": "ar", + "source": "reordering_method", + "description": "Matrix reordering option (integer code derived from REORDERING_METHOD).", + "type": "integer" + }, + "ipc": { + "set_in": "ar", + "description": "Preconditioner type code, computed from LINEAR_ACCELERATION, PRECONDITIONER_LEVELS, and PRECONDITIONER_DROP_TOLERANCE.", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.toml new file mode 100644 index 00000000..66944b87 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.toml @@ -0,0 +1,338 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "sln-ims" +parent = "sim-nam" +subtype = "solution" + +[blocks.options.fields.print_option] +type = "string" +longname = "print option" +description = "is a flag that controls printing of convergence information from the solver. NONE means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual reduction summaries. ALL means print linear matrix solver convergence information to the solution listing file and model specific linear matrix solver convergence information to each model listing file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified." +optional = true + +[blocks.options.fields.complexity] +type = "string" +longname = "print option" +description = "is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE - indicates that default solver input values will be defined that work well for nearly linear models. This would be used for models that do not include nonlinear stress packages and models that are either confined or consist of a single unconfined layer that is thick enough to contain the water table within a single layer. MODERATE - indicates that default solver input values will be defined that work well for moderately nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers. The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX - indicates that default solver input values will be defined that work well for highly nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers representing complex geology and surface-water/groundwater interaction. The COMPLEX option should be used when the MODERATE option does not result in successful convergence. Non-linear and linear solver parameters assigned using a specified complexity can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, NONLINEAR and LINEAR variables will be assigned the simple complexity values." +optional = true + +[blocks.options.fields.csv_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_output_filerecord.fields.csv_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values solver convergence output. The CSV_OUTPUT option has been deprecated and split into the CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option." +mode = "fileout" + +[blocks.options.fields.csv_outer_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_outer_output_filerecord.fields.csv_outer_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values outer iteration convergence output." +mode = "fileout" + +[blocks.options.fields.csv_inner_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_inner_output_filerecord.fields.csv_inner_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values solver convergence output." +mode = "fileout" + +[blocks.options.fields.no_ptcrecord] +type = "record" +longname = "no_ptc record" +optional = true + +[blocks.options.fields.no_ptcrecord.fields.no_ptc] +type = "keyword" +longname = "no pseudo-transient continuation" +description = "is a flag that is used to disable pseudo-transient continuation (PTC). Option only applies to steady-state stress periods for models using the Newton-Raphson formulation. For many problems, PTC can significantly improve convergence behavior for steady-state simulations, and for this reason it is active by default. In some cases, however, PTC can worsen the convergence behavior, especially when the initial conditions are similar to the solution. When the initial conditions are similar to, or exactly the same as, the solution and convergence is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress period. The NO_PTC ALL option should also be used in order to compare convergence behavior with other MODFLOW versions, as PTC is only available in MODFLOW 6." + +[blocks.options.fields.no_ptcrecord.fields.no_ptc_option] +type = "string" +longname = "no pseudo-transient continuation option" +description = "is an optional keyword that is used to define options for disabling pseudo-transient continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an optional keyword to disable PTC for all steady-state stress periods for models using the Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is used." +optional = true +tagged = false + +[blocks.options.fields.ats_outer_maximum_fraction] +type = "double" +longname = "fraction of outer maximum used with ats" +description = "real value defining the fraction of the maximum allowable outer iterations used with the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the user, then this solution will have no effect on ATS behavior. This value must be greater than or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If it is not specified by the user, then it is assigned a default value of one third. When the number of outer iterations for this solution is less than the product of this value and the maximum allowable outer iterations, then ATS will increase the time step length by a factor of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater than the maximum allowable outer iterations minus the product of this value and the maximum allowable outer iterations, then the ATS (if active) will decrease the time step length by a factor of 1 / DTADJ." +optional = true + +[blocks.nonlinear.fields.outer_hclose] +type = "double" +longname = "head change criterion" +description = "real value defining the head change criterion for convergence of the outer (nonlinear) iterations, in units of length. When the maximum absolute value of the head change at all nodes during an iteration is less than or equal to OUTER_HCLOSE, iteration stops. Commonly, OUTER_HCLOSE equals 0.01. The OUTER_HCLOSE option has been deprecated in favor of the more general OUTER_DVCLOSE (for dependent variable), however either one can be specified in order to maintain backward compatibility." +optional = true + +[blocks.nonlinear.fields.outer_dvclose] +type = "double" +longname = "dependent-variable change criterion" +description = "real value defining the dependent-variable (for example, head) change criterion for convergence of the outer (nonlinear) iterations, in units of the dependent-variable (for example, length for head). When the maximum absolute value of the dependent-variable change at all nodes during an iteration is less than or equal to OUTER_DVCLOSE, iteration stops. Commonly, OUTER_DVCLOSE equals 0.01. The keyword, OUTER_HCLOSE can be still be specified instead of OUTER_DVCLOSE for backward compatibility with previous versions of MODFLOW 6 but eventually OUTER_HCLOSE will be deprecated and specification of OUTER_HCLOSE will cause MODFLOW 6 to terminate with an error." + +[blocks.nonlinear.fields.outer_rclosebnd] +type = "double" +longname = "boundary package flow residual tolerance" +description = "real value defining the residual tolerance for convergence of model packages that solve a separate equation not solved by the IMS linear solver. This value represents the maximum allowable residual between successive outer iterations at any single model package element. An example of a model package that would use OUTER_RCLOSEBND to evaluate convergence is the SFR package which solves a continuity equation for each reach. The OUTER_RCLOSEBND option is deprecated and has no effect on simulation results as of version 6.1.1. The keyword, OUTER_RCLOSEBND can be still be specified for backward compatibility with previous versions of MODFLOW 6 but eventually specification of OUTER_RCLOSEBND will cause MODFLOW 6 to terminate with an error." +optional = true + +[blocks.nonlinear.fields.outer_maximum] +type = "integer" +longname = "outer maximum iterations" +description = "integer value defining the maximum number of outer (nonlinear) iterations -- that is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1." + +[blocks.nonlinear.fields.under_relaxation] +type = "string" +longname = "under relaxation scheme" +description = "is an optional keyword that defines the nonlinear under-relaxation schemes used. Under-relaxation is also known as dampening, and is used to reduce the size of the calculated dependent variable before proceeding to the next outer iteration. Under-relaxation can be an effective tool for highly nonlinear models when there are large and often counteracting changes in the calculated dependent variable between successive outer iterations. By default under-relaxation is not used. NONE - under-relaxation is not used (default). SIMPLE - Simple under-relaxation scheme with a fixed relaxation factor (UNDER_RELAXATION_GAMMA) is used. COOLEY - Cooley under-relaxation scheme is used. DBD - delta-bar-delta under-relaxation is used. Note that the under-relaxation schemes are often used in conjunction with problems that use the Newton-Raphson formulation, however, experience has indicated that they also work well for non-Newton problems, such as those with the wet/dry options of MODFLOW 6." +optional = true + +[blocks.nonlinear.fields.under_relaxation_gamma] +type = "double" +longname = "relaxation factor for SIMPLE or the history or memory term factor for the Cooley and delta-bar-delta algorithms" +description = "real value defining either the relaxation factor for the SIMPLE scheme or the history or memory term factor of the Cooley and delta-bar-delta algorithms. For the SIMPLE scheme, a value of one indicates that there is no under-relaxation and the full head change is applied. This value can be gradually reduced from one as a way to improve convergence; for well behaved problems, using a value less than one can increase the number of outer iterations required for convergence and needlessly increase run times. UNDER_RELAXATION_GAMMA must be greater than zero for the SIMPLE scheme or the program will terminate with an error. For the Cooley and delta-bar-delta schemes, UNDER_RELAXATION_GAMMA is a memory term that can range between zero and one. When UNDER_RELAXATION_GAMMA is zero, only the most recent history (previous iteration value) is maintained. As UNDER_RELAXATION_GAMMA is increased, past history of iteration changes has greater influence on the memory term. The memory term is maintained as an exponential average of past changes. Retaining some past history can overcome granular behavior in the calculated function surface and therefore helps to overcome cyclic patterns of non-convergence. The value usually ranges from 0.1 to 0.3; a value of 0.2 works well for most problems. UNDER_RELAXATION_GAMMA only needs to be specified if UNDER_RELAXATION is not NONE." +optional = true + +[blocks.nonlinear.fields.under_relaxation_theta] +type = "double" +longname = "under relaxation reduction factor" +description = "real value defining the reduction factor for the learning rate (under-relaxation term) of the delta-bar-delta algorithm. The value of UNDER_RELAXATION_THETA is between zero and one. If the change in the dependent-variable (for example, head) is of opposite sign to that of the previous iteration, the under-relaxation term is reduced by a factor of UNDER_RELAXATION_THETA. The value usually ranges from 0.3 to 0.9; a value of 0.7 works well for most problems. UNDER_RELAXATION_THETA only needs to be specified if UNDER_RELAXATION is DBD." +optional = true + +[blocks.nonlinear.fields.under_relaxation_kappa] +type = "double" +longname = "under relaxation increment for the learning rate" +description = "real value defining the increment for the learning rate (under-relaxation term) of the delta-bar-delta algorithm. The value of UNDER_RELAXATION_kappa is between zero and one. If the change in the dependent-variable (for example, head) is of the same sign to that of the previous iteration, the under-relaxation term is increased by an increment of UNDER_RELAXATION_KAPPA. The value usually ranges from 0.03 to 0.3; a value of 0.1 works well for most problems. UNDER_RELAXATION_KAPPA only needs to be specified if UNDER_RELAXATION is DBD." +optional = true + +[blocks.nonlinear.fields.under_relaxation_momentum] +type = "double" +longname = "fraction of past history changes that is added as a momentum term" +description = "real value defining the fraction of past history changes that is added as a momentum term to the step change for a nonlinear iteration. The value of UNDER_RELAXATION_MOMENTUM is between zero and one. A large momentum term should only be used when small learning rates are expected. Small amounts of the momentum term help convergence. The value usually ranges from 0.0001 to 0.1; a value of 0.001 works well for most problems. UNDER_RELAXATION_MOMENTUM only needs to be specified if UNDER_RELAXATION is DBD." +optional = true + +[blocks.nonlinear.fields.backtracking_number] +type = "integer" +longname = "maximum number of backtracking iterations" +description = "integer value defining the maximum number of backtracking iterations allowed for residual reduction computations. If BACKTRACKING_NUMBER = 0 then the backtracking iterations are omitted. The value usually ranges from 2 to 20; a value of 10 works well for most problems." +optional = true + +[blocks.nonlinear.fields.backtracking_tolerance] +type = "double" +longname = "tolerance for residual change that is allowed for residual reduction" +description = "real value defining the tolerance for residual change that is allowed for residual reduction computations. BACKTRACKING_TOLERANCE should not be less than one to avoid getting stuck in local minima. A large value serves to check for extreme residual increases, while a low value serves to control step size more severely. The value usually ranges from 1.0 to 10$^6$; a value of 10$^4$ works well for most problems but lower values like 1.1 may be required for harder problems. BACKTRACKING_TOLERANCE only needs to be specified if BACKTRACKING_NUMBER is greater than zero." +optional = true + +[blocks.nonlinear.fields.backtracking_reduction_factor] +type = "double" +longname = "reduction in step size used for residual reduction computations" +description = "real value defining the reduction in step size used for residual reduction computations. The value of BACKTRACKING_REDUCTION_FACTOR is between zero and one. The value usually ranges from 0.1 to 0.3; a value of 0.2 works well for most problems. BACKTRACKING_REDUCTION_FACTOR only needs to be specified if BACKTRACKING_NUMBER is greater than zero." +optional = true + +[blocks.nonlinear.fields.backtracking_residual_limit] +type = "double" +longname = "limit to which the residual is reduced with backtracking" +description = "real value defining the limit to which the residual is reduced with backtracking. If the residual is smaller than BACKTRACKING_RESIDUAL_LIMIT, then further backtracking is not performed. A value of 100 is suitable for large problems and residual reduction to smaller values may only slow down computations. BACKTRACKING_RESIDUAL_LIMIT only needs to be specified if BACKTRACKING_NUMBER is greater than zero." +optional = true + +[blocks.linear.fields.inner_maximum] +type = "integer" +longname = "maximum number of inner iterations" +description = "integer value defining the maximum number of inner (linear) iterations. The number typically depends on the characteristics of the matrix solution scheme being used. For nonlinear problems, INNER_MAXIMUM usually ranges from 60 to 600; a value of 100 will be sufficient for most linear problems." + +[blocks.linear.fields.inner_hclose] +type = "double" +longname = "head change tolerance" +description = "real value defining the head change criterion for convergence of the inner (linear) iterations, in units of length. When the maximum absolute value of the head change at all nodes during an iteration is less than or equal to INNER_HCLOSE, the matrix solver assumes convergence. Commonly, INNER_HCLOSE is set equal to or an order of magnitude less than the OUTER_HCLOSE value specified for the NONLINEAR block. The INNER_HCLOSE keyword has been deprecated in favor of the more general INNER_DVCLOSE (for dependent variable), however either one can be specified in order to maintain backward compatibility." +optional = true + +[blocks.linear.fields.inner_dvclose] +type = "double" +longname = "dependent-variable change tolerance" +description = "real value defining the dependent-variable (for example, head) change criterion for convergence of the inner (linear) iterations, in units of the dependent-variable (for example, length for head). When the maximum absolute value of the dependent-variable change at all nodes during an iteration is less than or equal to INNER_DVCLOSE, the matrix solver assumes convergence. Commonly, INNER_DVCLOSE is set equal to or an order of magnitude less than the OUTER_DVCLOSE value specified for the NONLINEAR block. The keyword, INNER_HCLOSE can be still be specified instead of INNER_DVCLOSE for backward compatibility with previous versions of MODFLOW 6 but eventually INNER_HCLOSE will be deprecated and specification of INNER_HCLOSE will cause MODFLOW 6 to terminate with an error." + +[blocks.linear.fields.rcloserecord] +type = "record" +longname = "rclose record" + +[blocks.linear.fields.rcloserecord.fields.inner_rclose] +type = "double" +longname = "flow residual tolerance" +description = "real value that defines the flow residual tolerance for convergence of the IMS linear solver and specific flow residual criteria used. This value represents the maximum allowable residual at any single node. Value is in units of length cubed per time, and must be consistent with mf length and time units. Usually a value of $1.0 times 10^{-1}$ is sufficient for the flow-residual criteria when meters and seconds are the defined mf length and time." + +[blocks.linear.fields.rcloserecord.fields.rclose_option] +type = "string" +longname = "flow residual tolerance" +description = "an optional keyword that defines the specific flow residual criterion used. STRICT--an optional keyword that is used to specify that INNER_RCLOSE represents a infinity-Norm (absolute convergence criteria) and that the dependent-variable (for example, head) and flow convergence criteria must be met on the first inner iteration (this criteria is equivalent to the criteria used by the MODFLOW-2005 PCG package~citep{hill1990preconditioned}). L2NORM_RCLOSE--an optional keyword that is used to specify that INNER_RCLOSE represents a L-2 Norm closure criteria instead of a infinity-Norm (absolute convergence criteria). When L2NORM_RCLOSE is specified, a reasonable initial INNER_RCLOSE value is 0.1 times the number of active cells when meters and seconds are the defined mf length and time. RELATIVE_RCLOSE--an optional keyword that is used to specify that INNER_RCLOSE represents a relative L-2 Norm reduction closure criteria instead of a infinity-Norm (absolute convergence criteria). When RELATIVE_RCLOSE is specified, a reasonable initial INNER_RCLOSE value is $1.0 times 10^{-4}$ and convergence is achieved for a given inner (linear) iteration when $Delta h le$ INNER_DVCLOSE and the current L-2 Norm is $le$ the product of the RELATIVE_RCLOSE and the initial L-2 Norm for the current inner (linear) iteration. If RCLOSE_OPTION is not specified, an absolute residual (infinity-norm) criterion is used." +optional = true +tagged = false + +[blocks.linear.fields.linear_acceleration] +type = "string" +longname = "linear acceleration method" +description = "a keyword that defines the linear acceleration method used by the default IMS linear solvers. CG - preconditioned conjugate gradient method. BICGSTAB - preconditioned bi-conjugate gradient stabilized method." + +[blocks.linear.fields.relaxation_factor] +type = "double" +longname = "relaxation factor used by ILU factorization" +description = "optional real value that defines the relaxation factor used by the incomplete LU factorization preconditioners (MILU(0) and MILUT). RELAXATION_FACTOR is unitless and should be greater than or equal to 0.0 and less than or equal to 1.0. RELAXATION_FACTOR values of about 1.0 are commonly used, and experience suggests that convergence can be optimized in some cases with relax values of 0.97. A RELAXATION_FACTOR value of 0.0 will result in either ILU(0) or ILUT preconditioning (depending on the value specified for PRECONDITIONER_LEVELS and/or PRECONDITIONER_DROP_TOLERANCE). By default, RELAXATION_FACTOR is zero." +optional = true + +[blocks.linear.fields.preconditioner_levels] +type = "integer" +longname = "level of fill for ILU decomposition" +description = "optional integer value defining the level of fill for ILU decomposition used in the ILUT and MILUT preconditioners. Higher levels of fill provide more robustness but also require more memory. For optimal performance, it is suggested that a large level of fill be applied (7 or 8) with use of a drop tolerance. Specification of a PRECONDITIONER_LEVELS value greater than zero results in use of the ILUT preconditioner. By default, PRECONDITIONER_LEVELS is zero and the zero-fill incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used." +optional = true + +[blocks.linear.fields.preconditioner_drop_tolerance] +type = "double" +longname = "drop tolerance used to drop preconditioner terms" +description = "optional real value that defines the drop tolerance used to drop preconditioner terms based on the magnitude of matrix entries in the ILUT and MILUT preconditioners. A value of $10^{-4}$ works well for most problems. By default, PRECONDITIONER_DROP_TOLERANCE is zero and the zero-fill incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used." +optional = true + +[blocks.linear.fields.number_orthogonalizations] +type = "integer" +longname = "drop tolerance used to drop preconditioner terms" +description = "optional integer value defining the interval used to explicitly recalculate the residual of the flow equation using the solver coefficient matrix, the latest dependent-variable (for example, head) estimates, and the right hand side. For problems that benefit from explicit recalculation of the residual, a number between 4 and 10 is appropriate. By default, NUMBER_ORTHOGONALIZATIONS is zero." +optional = true + +[blocks.linear.fields.scaling_method] +type = "string" +longname = "matrix scaling approach" +description = "an optional keyword that defines the matrix scaling approach used. By default, matrix scaling is not applied. NONE - no matrix scaling applied. DIAGONAL - symmetric matrix scaling using the POLCG preconditioner scaling method in Hill (1992). L2NORM - symmetric matrix scaling using the L2 norm." +optional = true + +[blocks.linear.fields.reordering_method] +type = "string" +longname = "matrix reordering approach" +description = "an optional keyword that defines the matrix reordering approach used. By default, matrix reordering is not applied. NONE - original ordering. RCM - reverse Cuthill McKee ordering. MD - minimum degree ordering." +optional = true + +[memory.mxiter] +set_in = "ar" +source = "outer_maximum" +description = "Maximum outer (nonlinear) iterations." +type = "integer" + +[memory.dvclose] +set_in = "ar" +source = "outer_dvclose" +description = "Outer dependent-variable change closure criterion." +type = "double" + +[memory.theta] +set_in = "ar" +source = "under_relaxation_theta" +description = "Under-relaxation reduction factor (delta-bar-delta)." +type = "double" + +[memory.akappa] +set_in = "ar" +source = "under_relaxation_kappa" +description = "Under-relaxation increment for the learning rate (delta-bar-delta)." +type = "double" + +[memory.gamma] +set_in = "ar" +source = "under_relaxation_gamma" +description = "Under-relaxation memory factor (Cooley or delta-bar-delta)." +type = "double" + +[memory.amomentum] +set_in = "ar" +source = "under_relaxation_momentum" +description = "Momentum coefficient for the under-relaxation step (delta-bar-delta)." +type = "double" + +[memory.numtrack] +set_in = "ar" +source = "backtracking_number" +description = "Maximum backtracking iterations; 0 disables backtracking." +type = "integer" + +[memory.btol] +set_in = "ar" +source = "backtracking_tolerance" +description = "Residual increase tolerance that triggers backtracking." +type = "double" + +[memory.breduc] +set_in = "ar" +source = "backtracking_reduction_factor" +description = "Step-size reduction factor used during backtracking." +type = "double" + +[memory.res_lim] +set_in = "ar" +source = "backtracking_residual_limit" +description = "Residual limit below which backtracking is not performed." +type = "double" + +[memory.icnvg] +readonly = true +set_in = "ar" +description = "Convergence flag. 1 if the solution converged in the last solve; 0 otherwise. Updated after each call to the solver." +type = "integer" + +[memory.ttsoln] +readonly = true +set_in = "ar" +description = "Cumulative CPU time (seconds) spent in the linear solver." +type = "double" + +[memory.iter1] +set_in = "ar" +source = "inner_maximum" +description = "Maximum inner (linear) iterations." +type = "integer" + +[memory.rclose] +set_in = "ar" +source = "inner_rclose" +description = "Flow residual closure criterion for the linear solver." +type = "double" + +[memory.relax] +set_in = "ar" +source = "relaxation_factor" +description = "ILU(T) relaxation factor." +type = "double" + +[memory.droptol] +set_in = "ar" +source = "preconditioner_drop_tolerance" +description = "ILUT drop tolerance." +type = "double" + +[memory.north] +set_in = "ar" +source = "number_orthogonalizations" +description = "Interval for explicit residual recalculation." +type = "integer" + +[memory.iscl] +set_in = "ar" +source = "scaling_method" +description = "Matrix scaling option (integer code derived from SCALING_METHOD)." +type = "integer" + +[memory.iord] +set_in = "ar" +source = "reordering_method" +description = "Matrix reordering option (integer code derived from REORDERING_METHOD)." +type = "integer" + +[memory.ipc] +set_in = "ar" +description = "Preconditioner type code, computed from LINEAR_ACCELERATION, PRECONDITIONER_LEVELS, and PRECONDITIONER_DROP_TOLERANCE." +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.yaml new file mode 100644 index 00000000..e766f1ad --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-ims.yaml @@ -0,0 +1,477 @@ +type: package +schema_version: 2.0.0.dev3 +name: sln-ims +parent: sim-nam +subtype: solution +blocks: + options: + fields: + print_option: + type: string + longname: print option + description: is a flag that controls printing of convergence information from the solver. NONE + means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual + reduction summaries. ALL means print linear matrix solver convergence information to the solution + listing file and model specific linear matrix solver convergence information to each model listing + file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified. + optional: true + complexity: + type: string + longname: print option + description: is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE + - indicates that default solver input values will be defined that work well for nearly linear + models. This would be used for models that do not include nonlinear stress packages and models + that are either confined or consist of a single unconfined layer that is thick enough to contain + the water table within a single layer. MODERATE - indicates that default solver input values + will be defined that work well for moderately nonlinear models. This would be used for models + that include nonlinear stress packages and models that consist of one or more unconfined layers. + The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX + - indicates that default solver input values will be defined that work well for highly nonlinear + models. This would be used for models that include nonlinear stress packages and models that + consist of one or more unconfined layers representing complex geology and surface-water/groundwater + interaction. The COMPLEX option should be used when the MODERATE option does not result in successful + convergence. Non-linear and linear solver parameters assigned using a specified complexity + can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, + NONLINEAR and LINEAR variables will be assigned the simple complexity values. + optional: true + csv_output_filerecord: + type: record + optional: true + fields: + csv_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + solver convergence output. The CSV_OUTPUT option has been deprecated and split into the + CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if + the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option. + mode: fileout + csv_outer_output_filerecord: + type: record + optional: true + fields: + csv_outer_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + outer iteration convergence output. + mode: fileout + csv_inner_output_filerecord: + type: record + optional: true + fields: + csv_inner_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + solver convergence output. + mode: fileout + no_ptcrecord: + type: record + longname: no_ptc record + optional: true + fields: + no_ptc: + type: keyword + longname: no pseudo-transient continuation + description: is a flag that is used to disable pseudo-transient continuation (PTC). Option + only applies to steady-state stress periods for models using the Newton-Raphson formulation. + For many problems, PTC can significantly improve convergence behavior for steady-state simulations, + and for this reason it is active by default. In some cases, however, PTC can worsen the + convergence behavior, especially when the initial conditions are similar to the solution. When + the initial conditions are similar to, or exactly the same as, the solution and convergence + is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress + period. The NO_PTC ALL option should also be used in order to compare convergence behavior + with other MODFLOW versions, as PTC is only available in MODFLOW 6. + no_ptc_option: + type: string + longname: no pseudo-transient continuation option + description: is an optional keyword that is used to define options for disabling pseudo-transient + continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, + if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an + optional keyword to disable PTC for all steady-state stress periods for models using the + Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is + used. + optional: true + tagged: false + ats_outer_maximum_fraction: + type: double + longname: fraction of outer maximum used with ats + description: real value defining the fraction of the maximum allowable outer iterations used with + the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the + user, then this solution will have no effect on ATS behavior. This value must be greater than + or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If + it is not specified by the user, then it is assigned a default value of one third. When the + number of outer iterations for this solution is less than the product of this value and the + maximum allowable outer iterations, then ATS will increase the time step length by a factor + of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater + than the maximum allowable outer iterations minus the product of this value and the maximum + allowable outer iterations, then the ATS (if active) will decrease the time step length by a + factor of 1 / DTADJ. + optional: true + nonlinear: + fields: + outer_hclose: + type: double + longname: head change criterion + description: real value defining the head change criterion for convergence of the outer (nonlinear) + iterations, in units of length. When the maximum absolute value of the head change at all nodes + during an iteration is less than or equal to OUTER_HCLOSE, iteration stops. Commonly, OUTER_HCLOSE + equals 0.01. The OUTER_HCLOSE option has been deprecated in favor of the more general OUTER_DVCLOSE + (for dependent variable), however either one can be specified in order to maintain backward + compatibility. + optional: true + outer_dvclose: + type: double + longname: dependent-variable change criterion + description: real value defining the dependent-variable (for example, head) change criterion for + convergence of the outer (nonlinear) iterations, in units of the dependent-variable (for example, + length for head). When the maximum absolute value of the dependent-variable change at all nodes + during an iteration is less than or equal to OUTER_DVCLOSE, iteration stops. Commonly, OUTER_DVCLOSE + equals 0.01. The keyword, OUTER_HCLOSE can be still be specified instead of OUTER_DVCLOSE for + backward compatibility with previous versions of MODFLOW 6 but eventually OUTER_HCLOSE will + be deprecated and specification of OUTER_HCLOSE will cause MODFLOW 6 to terminate with an error. + outer_rclosebnd: + type: double + longname: boundary package flow residual tolerance + description: real value defining the residual tolerance for convergence of model packages that + solve a separate equation not solved by the IMS linear solver. This value represents the maximum + allowable residual between successive outer iterations at any single model package element. + An example of a model package that would use OUTER_RCLOSEBND to evaluate convergence is the + SFR package which solves a continuity equation for each reach. The OUTER_RCLOSEBND option is + deprecated and has no effect on simulation results as of version 6.1.1. The keyword, OUTER_RCLOSEBND + can be still be specified for backward compatibility with previous versions of MODFLOW 6 but + eventually specification of OUTER_RCLOSEBND will cause MODFLOW 6 to terminate with an error. + optional: true + outer_maximum: + type: integer + longname: outer maximum iterations + description: integer value defining the maximum number of outer (nonlinear) iterations -- that + is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1. + under_relaxation: + type: string + longname: under relaxation scheme + description: is an optional keyword that defines the nonlinear under-relaxation schemes used. + Under-relaxation is also known as dampening, and is used to reduce the size of the calculated + dependent variable before proceeding to the next outer iteration. Under-relaxation can be an + effective tool for highly nonlinear models when there are large and often counteracting changes + in the calculated dependent variable between successive outer iterations. By default under-relaxation + is not used. NONE - under-relaxation is not used (default). SIMPLE - Simple under-relaxation + scheme with a fixed relaxation factor (UNDER_RELAXATION_GAMMA) is used. COOLEY - Cooley under-relaxation + scheme is used. DBD - delta-bar-delta under-relaxation is used. Note that the under-relaxation + schemes are often used in conjunction with problems that use the Newton-Raphson formulation, + however, experience has indicated that they also work well for non-Newton problems, such as + those with the wet/dry options of MODFLOW 6. + optional: true + under_relaxation_gamma: + type: double + longname: relaxation factor for SIMPLE or the history or memory term factor for the Cooley and + delta-bar-delta algorithms + description: real value defining either the relaxation factor for the SIMPLE scheme or the history + or memory term factor of the Cooley and delta-bar-delta algorithms. For the SIMPLE scheme, a + value of one indicates that there is no under-relaxation and the full head change is applied. This + value can be gradually reduced from one as a way to improve convergence; for well behaved problems, + using a value less than one can increase the number of outer iterations required for convergence + and needlessly increase run times. UNDER_RELAXATION_GAMMA must be greater than zero for the + SIMPLE scheme or the program will terminate with an error. For the Cooley and delta-bar-delta + schemes, UNDER_RELAXATION_GAMMA is a memory term that can range between zero and one. When UNDER_RELAXATION_GAMMA + is zero, only the most recent history (previous iteration value) is maintained. As UNDER_RELAXATION_GAMMA + is increased, past history of iteration changes has greater influence on the memory term. The + memory term is maintained as an exponential average of past changes. Retaining some past history + can overcome granular behavior in the calculated function surface and therefore helps to overcome + cyclic patterns of non-convergence. The value usually ranges from 0.1 to 0.3; a value of 0.2 + works well for most problems. UNDER_RELAXATION_GAMMA only needs to be specified if UNDER_RELAXATION + is not NONE. + optional: true + under_relaxation_theta: + type: double + longname: under relaxation reduction factor + description: real value defining the reduction factor for the learning rate (under-relaxation + term) of the delta-bar-delta algorithm. The value of UNDER_RELAXATION_THETA is between zero + and one. If the change in the dependent-variable (for example, head) is of opposite sign to + that of the previous iteration, the under-relaxation term is reduced by a factor of UNDER_RELAXATION_THETA. + The value usually ranges from 0.3 to 0.9; a value of 0.7 works well for most problems. UNDER_RELAXATION_THETA + only needs to be specified if UNDER_RELAXATION is DBD. + optional: true + under_relaxation_kappa: + type: double + longname: under relaxation increment for the learning rate + description: real value defining the increment for the learning rate (under-relaxation term) of + the delta-bar-delta algorithm. The value of UNDER_RELAXATION_kappa is between zero and one. + If the change in the dependent-variable (for example, head) is of the same sign to that of the + previous iteration, the under-relaxation term is increased by an increment of UNDER_RELAXATION_KAPPA. + The value usually ranges from 0.03 to 0.3; a value of 0.1 works well for most problems. UNDER_RELAXATION_KAPPA + only needs to be specified if UNDER_RELAXATION is DBD. + optional: true + under_relaxation_momentum: + type: double + longname: fraction of past history changes that is added as a momentum term + description: real value defining the fraction of past history changes that is added as a momentum + term to the step change for a nonlinear iteration. The value of UNDER_RELAXATION_MOMENTUM is + between zero and one. A large momentum term should only be used when small learning rates are + expected. Small amounts of the momentum term help convergence. The value usually ranges from + 0.0001 to 0.1; a value of 0.001 works well for most problems. UNDER_RELAXATION_MOMENTUM only + needs to be specified if UNDER_RELAXATION is DBD. + optional: true + backtracking_number: + type: integer + longname: maximum number of backtracking iterations + description: integer value defining the maximum number of backtracking iterations allowed for + residual reduction computations. If BACKTRACKING_NUMBER = 0 then the backtracking iterations + are omitted. The value usually ranges from 2 to 20; a value of 10 works well for most problems. + optional: true + backtracking_tolerance: + type: double + longname: tolerance for residual change that is allowed for residual reduction + description: real value defining the tolerance for residual change that is allowed for residual + reduction computations. BACKTRACKING_TOLERANCE should not be less than one to avoid getting + stuck in local minima. A large value serves to check for extreme residual increases, while a + low value serves to control step size more severely. The value usually ranges from 1.0 to 10$^6$; + a value of 10$^4$ works well for most problems but lower values like 1.1 may be required for + harder problems. BACKTRACKING_TOLERANCE only needs to be specified if BACKTRACKING_NUMBER is + greater than zero. + optional: true + backtracking_reduction_factor: + type: double + longname: reduction in step size used for residual reduction computations + description: real value defining the reduction in step size used for residual reduction computations. + The value of BACKTRACKING_REDUCTION_FACTOR is between zero and one. The value usually ranges + from 0.1 to 0.3; a value of 0.2 works well for most problems. BACKTRACKING_REDUCTION_FACTOR + only needs to be specified if BACKTRACKING_NUMBER is greater than zero. + optional: true + backtracking_residual_limit: + type: double + longname: limit to which the residual is reduced with backtracking + description: real value defining the limit to which the residual is reduced with backtracking. + If the residual is smaller than BACKTRACKING_RESIDUAL_LIMIT, then further backtracking is not + performed. A value of 100 is suitable for large problems and residual reduction to smaller values + may only slow down computations. BACKTRACKING_RESIDUAL_LIMIT only needs to be specified if BACKTRACKING_NUMBER + is greater than zero. + optional: true + linear: + fields: + inner_maximum: + type: integer + longname: maximum number of inner iterations + description: integer value defining the maximum number of inner (linear) iterations. The number + typically depends on the characteristics of the matrix solution scheme being used. For nonlinear + problems, INNER_MAXIMUM usually ranges from 60 to 600; a value of 100 will be sufficient for + most linear problems. + inner_hclose: + type: double + longname: head change tolerance + description: real value defining the head change criterion for convergence of the inner (linear) + iterations, in units of length. When the maximum absolute value of the head change at all nodes + during an iteration is less than or equal to INNER_HCLOSE, the matrix solver assumes convergence. + Commonly, INNER_HCLOSE is set equal to or an order of magnitude less than the OUTER_HCLOSE value + specified for the NONLINEAR block. The INNER_HCLOSE keyword has been deprecated in favor of + the more general INNER_DVCLOSE (for dependent variable), however either one can be specified + in order to maintain backward compatibility. + optional: true + inner_dvclose: + type: double + longname: dependent-variable change tolerance + description: real value defining the dependent-variable (for example, head) change criterion for + convergence of the inner (linear) iterations, in units of the dependent-variable (for example, + length for head). When the maximum absolute value of the dependent-variable change at all nodes + during an iteration is less than or equal to INNER_DVCLOSE, the matrix solver assumes convergence. + Commonly, INNER_DVCLOSE is set equal to or an order of magnitude less than the OUTER_DVCLOSE + value specified for the NONLINEAR block. The keyword, INNER_HCLOSE can be still be specified + instead of INNER_DVCLOSE for backward compatibility with previous versions of MODFLOW 6 but + eventually INNER_HCLOSE will be deprecated and specification of INNER_HCLOSE will cause MODFLOW + 6 to terminate with an error. + rcloserecord: + type: record + longname: rclose record + fields: + inner_rclose: + type: double + longname: flow residual tolerance + description: real value that defines the flow residual tolerance for convergence of the IMS + linear solver and specific flow residual criteria used. This value represents the maximum + allowable residual at any single node. Value is in units of length cubed per time, and + must be consistent with mf length and time units. Usually a value of $1.0 times 10^{-1}$ + is sufficient for the flow-residual criteria when meters and seconds are the defined mf + length and time. + rclose_option: + type: string + longname: flow residual tolerance + description: an optional keyword that defines the specific flow residual criterion used. STRICT--an + optional keyword that is used to specify that INNER_RCLOSE represents a infinity-Norm (absolute + convergence criteria) and that the dependent-variable (for example, head) and flow convergence + criteria must be met on the first inner iteration (this criteria is equivalent to the criteria + used by the MODFLOW-2005 PCG package~citep{hill1990preconditioned}). L2NORM_RCLOSE--an optional + keyword that is used to specify that INNER_RCLOSE represents a L-2 Norm closure criteria + instead of a infinity-Norm (absolute convergence criteria). When L2NORM_RCLOSE is specified, + a reasonable initial INNER_RCLOSE value is 0.1 times the number of active cells when meters + and seconds are the defined mf length and time. RELATIVE_RCLOSE--an optional keyword that + is used to specify that INNER_RCLOSE represents a relative L-2 Norm reduction closure criteria + instead of a infinity-Norm (absolute convergence criteria). When RELATIVE_RCLOSE is specified, + a reasonable initial INNER_RCLOSE value is $1.0 times 10^{-4}$ and convergence is achieved + for a given inner (linear) iteration when $Delta h le$ INNER_DVCLOSE and the current L-2 + Norm is $le$ the product of the RELATIVE_RCLOSE and the initial L-2 Norm for the current + inner (linear) iteration. If RCLOSE_OPTION is not specified, an absolute residual (infinity-norm) + criterion is used. + optional: true + tagged: false + linear_acceleration: + type: string + longname: linear acceleration method + description: a keyword that defines the linear acceleration method used by the default IMS linear + solvers. CG - preconditioned conjugate gradient method. BICGSTAB - preconditioned bi-conjugate + gradient stabilized method. + relaxation_factor: + type: double + longname: relaxation factor used by ILU factorization + description: optional real value that defines the relaxation factor used by the incomplete LU + factorization preconditioners (MILU(0) and MILUT). RELAXATION_FACTOR is unitless and should + be greater than or equal to 0.0 and less than or equal to 1.0. RELAXATION_FACTOR values of about + 1.0 are commonly used, and experience suggests that convergence can be optimized in some cases + with relax values of 0.97. A RELAXATION_FACTOR value of 0.0 will result in either ILU(0) or + ILUT preconditioning (depending on the value specified for PRECONDITIONER_LEVELS and/or PRECONDITIONER_DROP_TOLERANCE). + By default, RELAXATION_FACTOR is zero. + optional: true + preconditioner_levels: + type: integer + longname: level of fill for ILU decomposition + description: optional integer value defining the level of fill for ILU decomposition used in the + ILUT and MILUT preconditioners. Higher levels of fill provide more robustness but also require + more memory. For optimal performance, it is suggested that a large level of fill be applied + (7 or 8) with use of a drop tolerance. Specification of a PRECONDITIONER_LEVELS value greater + than zero results in use of the ILUT preconditioner. By default, PRECONDITIONER_LEVELS is zero + and the zero-fill incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used. + optional: true + preconditioner_drop_tolerance: + type: double + longname: drop tolerance used to drop preconditioner terms + description: optional real value that defines the drop tolerance used to drop preconditioner terms + based on the magnitude of matrix entries in the ILUT and MILUT preconditioners. A value of $10^{-4}$ + works well for most problems. By default, PRECONDITIONER_DROP_TOLERANCE is zero and the zero-fill + incomplete LU factorization preconditioners (ILU(0) and MILU(0)) are used. + optional: true + number_orthogonalizations: + type: integer + longname: drop tolerance used to drop preconditioner terms + description: optional integer value defining the interval used to explicitly recalculate the residual + of the flow equation using the solver coefficient matrix, the latest dependent-variable (for + example, head) estimates, and the right hand side. For problems that benefit from explicit recalculation + of the residual, a number between 4 and 10 is appropriate. By default, NUMBER_ORTHOGONALIZATIONS + is zero. + optional: true + scaling_method: + type: string + longname: matrix scaling approach + description: an optional keyword that defines the matrix scaling approach used. By default, matrix + scaling is not applied. NONE - no matrix scaling applied. DIAGONAL - symmetric matrix scaling + using the POLCG preconditioner scaling method in Hill (1992). L2NORM - symmetric matrix scaling + using the L2 norm. + optional: true + reordering_method: + type: string + longname: matrix reordering approach + description: an optional keyword that defines the matrix reordering approach used. By default, + matrix reordering is not applied. NONE - original ordering. RCM - reverse Cuthill McKee ordering. MD + - minimum degree ordering. + optional: true +memory: + mxiter: + set_in: ar + source: outer_maximum + description: Maximum outer (nonlinear) iterations. + type: integer + dvclose: + set_in: ar + source: outer_dvclose + description: Outer dependent-variable change closure criterion. + type: double + theta: + set_in: ar + source: under_relaxation_theta + description: Under-relaxation reduction factor (delta-bar-delta). + type: double + akappa: + set_in: ar + source: under_relaxation_kappa + description: Under-relaxation increment for the learning rate (delta-bar-delta). + type: double + gamma: + set_in: ar + source: under_relaxation_gamma + description: Under-relaxation memory factor (Cooley or delta-bar-delta). + type: double + amomentum: + set_in: ar + source: under_relaxation_momentum + description: Momentum coefficient for the under-relaxation step (delta-bar-delta). + type: double + numtrack: + set_in: ar + source: backtracking_number + description: Maximum backtracking iterations; 0 disables backtracking. + type: integer + btol: + set_in: ar + source: backtracking_tolerance + description: Residual increase tolerance that triggers backtracking. + type: double + breduc: + set_in: ar + source: backtracking_reduction_factor + description: Step-size reduction factor used during backtracking. + type: double + res_lim: + set_in: ar + source: backtracking_residual_limit + description: Residual limit below which backtracking is not performed. + type: double + icnvg: + readonly: true + set_in: ar + description: Convergence flag. 1 if the solution converged in the last solve; 0 otherwise. Updated + after each call to the solver. + type: integer + ttsoln: + readonly: true + set_in: ar + description: Cumulative CPU time (seconds) spent in the linear solver. + type: double + iter1: + set_in: ar + source: inner_maximum + description: Maximum inner (linear) iterations. + type: integer + rclose: + set_in: ar + source: inner_rclose + description: Flow residual closure criterion for the linear solver. + type: double + relax: + set_in: ar + source: relaxation_factor + description: ILU(T) relaxation factor. + type: double + droptol: + set_in: ar + source: preconditioner_drop_tolerance + description: ILUT drop tolerance. + type: double + north: + set_in: ar + source: number_orthogonalizations + description: Interval for explicit residual recalculation. + type: integer + iscl: + set_in: ar + source: scaling_method + description: Matrix scaling option (integer code derived from SCALING_METHOD). + type: integer + iord: + set_in: ar + source: reordering_method + description: Matrix reordering option (integer code derived from REORDERING_METHOD). + type: integer + ipc: + set_in: ar + description: Preconditioner type code, computed from LINEAR_ACCELERATION, PRECONDITIONER_LEVELS, and + PRECONDITIONER_DROP_TOLERANCE. + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.json new file mode 100644 index 00000000..6298bd79 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.json @@ -0,0 +1,95 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "sln-pts", + "parent": "sim-nam", + "subtype": "solution", + "blocks": { + "options": { + "fields": { + "print_option": { + "type": "string", + "longname": "print option", + "description": "is a flag that controls printing of convergence information from the solver. NONE means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual reduction summaries. ALL means print linear matrix solver convergence information to the solution listing file and model specific linear matrix solver convergence information to each model listing file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified.", + "optional": true + }, + "complexity": { + "type": "string", + "longname": "print option", + "description": "is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE - indicates that default solver input values will be defined that work well for nearly linear models. This would be used for models that do not include nonlinear stress packages and models that are either confined or consist of a single unconfined layer that is thick enough to contain the water table within a single layer. MODERATE - indicates that default solver input values will be defined that work well for moderately nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers. The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX - indicates that default solver input values will be defined that work well for highly nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers representing complex geology and surface-water/groundwater interaction. The COMPLEX option should be used when the MODERATE option does not result in successful convergence. Non-linear and linear solver parameters assigned using a specified complexity can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, NONLINEAR and LINEAR variables will be assigned the simple complexity values.", + "optional": true + }, + "csv_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values solver convergence output. The CSV_OUTPUT option has been deprecated and split into the CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option.", + "mode": "fileout" + } + } + }, + "csv_outer_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_outer_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values outer iteration convergence output.", + "mode": "fileout" + } + } + }, + "csv_inner_output_filerecord": { + "type": "record", + "optional": true, + "fields": { + "csv_inner_output": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that the record corresponds to the comma separated values solver convergence output.", + "mode": "fileout" + } + } + }, + "no_ptcrecord": { + "type": "record", + "longname": "no_ptc record", + "optional": true, + "fields": { + "no_ptc": { + "type": "keyword", + "longname": "no pseudo-transient continuation", + "description": "is a flag that is used to disable pseudo-transient continuation (PTC). Option only applies to steady-state stress periods for models using the Newton-Raphson formulation. For many problems, PTC can significantly improve convergence behavior for steady-state simulations, and for this reason it is active by default. In some cases, however, PTC can worsen the convergence behavior, especially when the initial conditions are similar to the solution. When the initial conditions are similar to, or exactly the same as, the solution and convergence is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress period. The NO_PTC ALL option should also be used in order to compare convergence behavior with other MODFLOW versions, as PTC is only available in MODFLOW 6." + }, + "no_ptc_option": { + "type": "string", + "longname": "no pseudo-transient continuation option", + "description": "is an optional keyword that is used to define options for disabling pseudo-transient continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an optional keyword to disable PTC for all steady-state stress periods for models using the Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is used.", + "optional": true, + "tagged": false + } + } + }, + "ats_outer_maximum_fraction": { + "type": "double", + "longname": "fraction of outer maximum used with ats", + "description": "real value defining the fraction of the maximum allowable outer iterations used with the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the user, then this solution will have no effect on ATS behavior. This value must be greater than or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If it is not specified by the user, then it is assigned a default value of one third. When the number of outer iterations for this solution is less than the product of this value and the maximum allowable outer iterations, then ATS will increase the time step length by a factor of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater than the maximum allowable outer iterations minus the product of this value and the maximum allowable outer iterations, then the ATS (if active) will decrease the time step length by a factor of 1 / DTADJ.", + "optional": true + } + } + }, + "nonlinear": { + "fields": { + "outer_maximum": { + "type": "integer", + "longname": "outer maximum iterations", + "description": "integer value defining the maximum number of outer (nonlinear) iterations -- that is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1." + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.toml new file mode 100644 index 00000000..b13cc41e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.toml @@ -0,0 +1,75 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "sln-pts" +parent = "sim-nam" +subtype = "solution" + +[blocks.options.fields.print_option] +type = "string" +longname = "print option" +description = "is a flag that controls printing of convergence information from the solver. NONE means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual reduction summaries. ALL means print linear matrix solver convergence information to the solution listing file and model specific linear matrix solver convergence information to each model listing file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified." +optional = true + +[blocks.options.fields.complexity] +type = "string" +longname = "print option" +description = "is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE - indicates that default solver input values will be defined that work well for nearly linear models. This would be used for models that do not include nonlinear stress packages and models that are either confined or consist of a single unconfined layer that is thick enough to contain the water table within a single layer. MODERATE - indicates that default solver input values will be defined that work well for moderately nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers. The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX - indicates that default solver input values will be defined that work well for highly nonlinear models. This would be used for models that include nonlinear stress packages and models that consist of one or more unconfined layers representing complex geology and surface-water/groundwater interaction. The COMPLEX option should be used when the MODERATE option does not result in successful convergence. Non-linear and linear solver parameters assigned using a specified complexity can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, NONLINEAR and LINEAR variables will be assigned the simple complexity values." +optional = true + +[blocks.options.fields.csv_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_output_filerecord.fields.csv_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values solver convergence output. The CSV_OUTPUT option has been deprecated and split into the CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option." +mode = "fileout" + +[blocks.options.fields.csv_outer_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_outer_output_filerecord.fields.csv_outer_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values outer iteration convergence output." +mode = "fileout" + +[blocks.options.fields.csv_inner_output_filerecord] +type = "record" +optional = true + +[blocks.options.fields.csv_inner_output_filerecord.fields.csv_inner_output] +type = "file" +longname = "budget keyword" +description = "keyword to specify that the record corresponds to the comma separated values solver convergence output." +mode = "fileout" + +[blocks.options.fields.no_ptcrecord] +type = "record" +longname = "no_ptc record" +optional = true + +[blocks.options.fields.no_ptcrecord.fields.no_ptc] +type = "keyword" +longname = "no pseudo-transient continuation" +description = "is a flag that is used to disable pseudo-transient continuation (PTC). Option only applies to steady-state stress periods for models using the Newton-Raphson formulation. For many problems, PTC can significantly improve convergence behavior for steady-state simulations, and for this reason it is active by default. In some cases, however, PTC can worsen the convergence behavior, especially when the initial conditions are similar to the solution. When the initial conditions are similar to, or exactly the same as, the solution and convergence is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress period. The NO_PTC ALL option should also be used in order to compare convergence behavior with other MODFLOW versions, as PTC is only available in MODFLOW 6." + +[blocks.options.fields.no_ptcrecord.fields.no_ptc_option] +type = "string" +longname = "no pseudo-transient continuation option" +description = "is an optional keyword that is used to define options for disabling pseudo-transient continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an optional keyword to disable PTC for all steady-state stress periods for models using the Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is used." +optional = true +tagged = false + +[blocks.options.fields.ats_outer_maximum_fraction] +type = "double" +longname = "fraction of outer maximum used with ats" +description = "real value defining the fraction of the maximum allowable outer iterations used with the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the user, then this solution will have no effect on ATS behavior. This value must be greater than or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If it is not specified by the user, then it is assigned a default value of one third. When the number of outer iterations for this solution is less than the product of this value and the maximum allowable outer iterations, then ATS will increase the time step length by a factor of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater than the maximum allowable outer iterations minus the product of this value and the maximum allowable outer iterations, then the ATS (if active) will decrease the time step length by a factor of 1 / DTADJ." +optional = true + +[blocks.nonlinear.fields.outer_maximum] +type = "integer" +longname = "outer maximum iterations" +description = "integer value defining the maximum number of outer (nonlinear) iterations -- that is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1." diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.yaml new file mode 100644 index 00000000..6d887eb7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/sln-pts.yaml @@ -0,0 +1,118 @@ +type: package +schema_version: 2.0.0.dev3 +name: sln-pts +parent: sim-nam +subtype: solution +blocks: + options: + fields: + print_option: + type: string + longname: print option + description: is a flag that controls printing of convergence information from the solver. NONE + means print nothing. SUMMARY means print only the total number of iterations and nonlinear residual + reduction summaries. ALL means print linear matrix solver convergence information to the solution + listing file and model specific linear matrix solver convergence information to each model listing + file in addition to SUMMARY information. NONE is default if PRINT_OPTION is not specified. + optional: true + complexity: + type: string + longname: print option + description: is an optional keyword that defines default non-linear and linear solver parameters. SIMPLE + - indicates that default solver input values will be defined that work well for nearly linear + models. This would be used for models that do not include nonlinear stress packages and models + that are either confined or consist of a single unconfined layer that is thick enough to contain + the water table within a single layer. MODERATE - indicates that default solver input values + will be defined that work well for moderately nonlinear models. This would be used for models + that include nonlinear stress packages and models that consist of one or more unconfined layers. + The MODERATE option should be used when the SIMPLE option does not result in successful convergence. COMPLEX + - indicates that default solver input values will be defined that work well for highly nonlinear + models. This would be used for models that include nonlinear stress packages and models that + consist of one or more unconfined layers representing complex geology and surface-water/groundwater + interaction. The COMPLEX option should be used when the MODERATE option does not result in successful + convergence. Non-linear and linear solver parameters assigned using a specified complexity + can be modified in the NONLINEAR and LINEAR blocks. If the COMPLEXITY option is not specified, + NONLINEAR and LINEAR variables will be assigned the simple complexity values. + optional: true + csv_output_filerecord: + type: record + optional: true + fields: + csv_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + solver convergence output. The CSV_OUTPUT option has been deprecated and split into the + CSV_OUTER_OUTPUT and CSV_INNER_OUTPUT options. Starting with MODFLOW 6 version 6.1.1 if + the CSV_OUTPUT option is specified, then it is treated as the CSV_OUTER_OUTPUT option. + mode: fileout + csv_outer_output_filerecord: + type: record + optional: true + fields: + csv_outer_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + outer iteration convergence output. + mode: fileout + csv_inner_output_filerecord: + type: record + optional: true + fields: + csv_inner_output: + type: file + longname: budget keyword + description: keyword to specify that the record corresponds to the comma separated values + solver convergence output. + mode: fileout + no_ptcrecord: + type: record + longname: no_ptc record + optional: true + fields: + no_ptc: + type: keyword + longname: no pseudo-transient continuation + description: is a flag that is used to disable pseudo-transient continuation (PTC). Option + only applies to steady-state stress periods for models using the Newton-Raphson formulation. + For many problems, PTC can significantly improve convergence behavior for steady-state simulations, + and for this reason it is active by default. In some cases, however, PTC can worsen the + convergence behavior, especially when the initial conditions are similar to the solution. When + the initial conditions are similar to, or exactly the same as, the solution and convergence + is slow, then the NO_PTC FIRST option should be used to deactivate PTC for the first stress + period. The NO_PTC ALL option should also be used in order to compare convergence behavior + with other MODFLOW versions, as PTC is only available in MODFLOW 6. + no_ptc_option: + type: string + longname: no pseudo-transient continuation option + description: is an optional keyword that is used to define options for disabling pseudo-transient + continuation (PTC). FIRST is an optional keyword to disable PTC for the first stress period, + if steady-state and one or more model is using the Newton-Raphson formulation. ALL is an + optional keyword to disable PTC for all steady-state stress periods for models using the + Newton-Raphson formulation. If NO_PTC_OPTION is not specified, the NO_PTC ALL option is + used. + optional: true + tagged: false + ats_outer_maximum_fraction: + type: double + longname: fraction of outer maximum used with ats + description: real value defining the fraction of the maximum allowable outer iterations used with + the Adaptive Time Step (ATS) capability if it is active. If this value is set to zero by the + user, then this solution will have no effect on ATS behavior. This value must be greater than + or equal to zero and less than or equal to 0.5 or the program will terminate with an error. If + it is not specified by the user, then it is assigned a default value of one third. When the + number of outer iterations for this solution is less than the product of this value and the + maximum allowable outer iterations, then ATS will increase the time step length by a factor + of DTADJ in the ATS input file. When the number of outer iterations for this solution is greater + than the maximum allowable outer iterations minus the product of this value and the maximum + allowable outer iterations, then the ATS (if active) will decrease the time step length by a + factor of 1 / DTADJ. + optional: true + nonlinear: + fields: + outer_maximum: + type: integer + longname: outer maximum iterations + description: integer value defining the maximum number of outer (nonlinear) iterations -- that + is, calls to the solution routine. For a linear problem OUTER_MAXIMUM should be 1. diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json new file mode 100644 index 00000000..d8e6d9d6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-cdb", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of critical depth boundaries", + "description": "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CDB", + "output": "ipakcb", + "obs_type": "CDB", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "CDB-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml new file mode 100644 index 00000000..a10d5558 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-cdb" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of critical depth boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of critical depth boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of critical depth boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that critical depth boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of critical depth boundaries" +description = "integer value specifying the maximum number of critical depth boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CDB" +output = "ipakcb" +obs_type = "CDB" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "CDB-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml new file mode 100644 index 00000000..dc4f0d5d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml @@ -0,0 +1,239 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-cdb +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of critical + depth boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of critical depth boundary information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of critical depth boundary flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that critical depth boundary flow terms will be written to the + file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of critical depth boundaries + description: integer value specifying the maximum number of critical depth boundary cells that + will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CDB + output: ipakcb + obs_type: CDB + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: CDB-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json new file mode 100644 index 00000000..6f51059b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json @@ -0,0 +1,268 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-chd", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of CHD head value.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of constant-head cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print CHD flows to listing file", + "description": "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save CHD flows to budget file", + "description": "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of constant heads", + "description": "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "head": { + "type": "double", + "longname": "head value assigned to constant head", + "description": "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "constant head boundary name", + "description": "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: head.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "CHD", + "output": "ipakcb", + "obs_type": "CHD", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml new file mode 100644 index 00000000..a6bc6ce6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml @@ -0,0 +1,242 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-chd" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of CHD head value." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of constant-head cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of constant-head information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print CHD flows to listing file" +description = "keyword to indicate that the list of constant-head flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save CHD flows to budget file" +description = "keyword to indicate that constant-head flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of constant heads" +description = "integer value specifying the maximum number of constant-head cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.head] +type = "double" +longname = "head value assigned to constant head" +description = "is the head at the boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each constant head. The values of auxiliary variables must be present for each constant head. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "constant head boundary name" +description = "name of the constant head boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: head." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "CHD" +output = "ipakcb" +obs_type = "CHD" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml new file mode 100644 index 00000000..98ba7770 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml @@ -0,0 +1,234 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-chd +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of CHD head value. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of constant-head + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of constant-head information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print CHD flows to listing file + description: keyword to indicate that the list of constant-head flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save CHD flows to budget file + description: keyword to indicate that constant-head flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of constant heads + description: integer value specifying the maximum number of constant-head cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + head: + type: double + longname: head value assigned to constant head + description: is the head at the boundary. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time series + by entering the time-series name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each constant head. The + values of auxiliary variables must be present for each constant head. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: constant head boundary name + description: name of the constant head boundary cell. BOUNDNAME is an ASCII character variable + that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the + entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: head.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: CHD + output: ipakcb + obs_type: CHD + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.json new file mode 100644 index 00000000..0d8d8a17 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.json @@ -0,0 +1,119 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-cxs", + "parent": "swf-nam", + "dims": { + "nsections": { + "value": "nsections", + "scope": "model" + }, + "npoints": { + "value": "npoints", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "nsections": { + "type": "integer", + "longname": "number of reaches", + "description": "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + }, + "npoints": { + "type": "integer", + "longname": "total number of points defined for all reaches", + "description": "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + } + } + }, + "packagedata": { + "fields": { + "packagedata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "idcxs": { + "type": "integer", + "longname": "reach number for this entry", + "description": "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once.", + "tagged": false + }, + "nxspoints": { + "type": "integer", + "longname": "number of points used to define cross section", + "description": "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than zero or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension.", + "tagged": false + } + } + }, + "shape": [ + "nsections" + ] + } + } + }, + "crosssectiondata": { + "fields": { + "crosssectiondata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "xfraction": { + "type": "double", + "longname": "fractional width", + "description": "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH).", + "tagged": false + }, + "height": { + "type": "double", + "longname": "depth", + "description": "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero.", + "tagged": false + }, + "manfraction": { + "type": "double", + "longname": "Manning's roughness coefficient", + "description": "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line.", + "tagged": false + } + } + }, + "shape": [ + "npoints" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "nsections": { + "set_in": "ar", + "source": "nsections", + "type": "integer" + }, + "npoints": { + "set_in": "ar", + "source": "npoints", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.toml new file mode 100644 index 00000000..59330a53 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.toml @@ -0,0 +1,91 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-cxs" +parent = "swf-nam" + +[dims.nsections] +value = "nsections" +scope = "model" + +[dims.npoints] +value = "npoints" +scope = "model" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of stream reach information will be written to the listing file immediately after it is read." +optional = true + +[blocks.dimensions.fields.nsections] +type = "integer" +longname = "number of reaches" +description = "integer value specifying the number of cross sections that will be defined. There must be NSECTIONS entries in the PACKAGEDATA block." + +[blocks.dimensions.fields.npoints] +type = "integer" +longname = "total number of points defined for all reaches" +description = "integer value specifying the total number of cross-section points defined for all reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block." + +[blocks.packagedata.fields.packagedata] +type = "list" +shape = [ + "nsections", +] + +[blocks.packagedata.fields.packagedata.item] +type = "record" + +[blocks.packagedata.fields.packagedata.item.fields.idcxs] +type = "integer" +longname = "reach number for this entry" +description = "integer value that defines the cross section number associated with the specified PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to NSECTIONS. Information must be specified for every section or the program will terminate with an error. The program will also terminate with an error if information for a section is specified more than once." +tagged = false + +[blocks.packagedata.fields.packagedata.item.fields.nxspoints] +type = "integer" +longname = "number of points used to define cross section" +description = "integer value that defines the number of points used to define the define the shape of a section. NXSPOINTS must be greater than zero or the program will terminate with an error. NXSPOINTS defines the number of points that must be entered for the reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS dimension." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata] +type = "list" +shape = [ + "npoints", +] + +[blocks.crosssectiondata.fields.crosssectiondata.item] +type = "record" + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.xfraction] +type = "double" +longname = "fractional width" +description = "real value that defines the station (x) data for the cross-section as a fraction of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (WIDTH)." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.height] +type = "double" +longname = "depth" +description = "real value that is the height relative to the top of the lowest elevation of the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero." +tagged = false + +[blocks.crosssectiondata.fields.crosssectiondata.item.fields.manfraction] +type = "double" +longname = "Manning's roughness coefficient" +description = "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line." +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.nsections] +set_in = "ar" +source = "nsections" +type = "integer" + +[memory.npoints] +set_in = "ar" +source = "npoints" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.yaml new file mode 100644 index 00000000..68468311 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cxs.yaml @@ -0,0 +1,106 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-cxs +parent: swf-nam +dims: + nsections: + value: nsections + scope: model + npoints: + value: npoints + scope: model +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of stream reach information will be written to + the listing file immediately after it is read. + optional: true + dimensions: + fields: + nsections: + type: integer + longname: number of reaches + description: integer value specifying the number of cross sections that will be defined. There + must be NSECTIONS entries in the PACKAGEDATA block. + npoints: + type: integer + longname: total number of points defined for all reaches + description: integer value specifying the total number of cross-section points defined for all + reaches. There must be NPOINTS entries in the CROSSSECTIONDATA block. + packagedata: + fields: + packagedata: + type: list + item: + type: record + fields: + idcxs: + type: integer + longname: reach number for this entry + description: integer value that defines the cross section number associated with the specified + PACKAGEDATA data on the line. IDCXS must be greater than zero and less than or equal to + NSECTIONS. Information must be specified for every section or the program will terminate + with an error. The program will also terminate with an error if information for a section + is specified more than once. + tagged: false + nxspoints: + type: integer + longname: number of points used to define cross section + description: integer value that defines the number of points used to define the define the + shape of a section. NXSPOINTS must be greater than zero or the program will terminate + with an error. NXSPOINTS defines the number of points that must be entered for the reach + in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all sections must equal the NPOINTS + dimension. + tagged: false + shape: + - nsections + crosssectiondata: + fields: + crosssectiondata: + type: list + item: + type: record + fields: + xfraction: + type: double + longname: fractional width + description: real value that defines the station (x) data for the cross-section as a fraction + of the width (WIDTH) of the reach. XFRACTION must be greater than or equal to zero but + can be greater than one. XFRACTION values can be used to decrease or increase the width + of a reach from the specified reach width (WIDTH). + tagged: false + height: + type: double + longname: depth + description: real value that is the height relative to the top of the lowest elevation of + the streambed (ELEVATION) and corresponding to the station data on the same line. HEIGHT + must be greater than or equal to zero and at least one cross-section height must be equal + to zero. + tagged: false + manfraction: + type: double + longname: Manning's roughness coefficient + description: real value that defines the Manning's roughness coefficient data for the cross-section + as a fraction of the Manning's roughness coefficient for the reach (MANNINGSN) and corresponding + to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION + is applied from the XFRACTION value on the same line to the XFRACTION value on the next + line. + tagged: false + shape: + - npoints +memory: + iprpak: + set_in: ar + source: print_input + type: integer + nsections: + set_in: ar + source: nsections + type: integer + npoints: + set_in: ar + source: npoints + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.json new file mode 100644 index 00000000..963ae0f9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.json @@ -0,0 +1,160 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-dfw", + "parent": "swf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "central_in_space": { + "type": "keyword", + "longname": "use central in space weighting", + "description": "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches.", + "optional": true + }, + "length_conversion": { + "type": "double", + "longname": "length conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters.", + "optional": true + }, + "time_conversion": { + "type": "double", + "longname": "time conversion factor", + "description": "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "keyword to save DFW flows", + "description": "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "keyword to print DFW flows to listing file", + "description": "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells.", + "optional": true + }, + "save_velocity": { + "type": "keyword", + "longname": "keyword to save velocity", + "description": "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable.", + "optional": true + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "dev_swr_conductance": { + "type": "keyword", + "longname": "use SWR conductance formulation", + "description": "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "manningsn": { + "type": "array", + "longname": "mannings roughness coefficient", + "description": "mannings roughness coefficient", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "longname": "cross section number", + "description": "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "icentral": { + "set_in": "ar", + "source": "central_in_space", + "type": "integer" + }, + "lengthconv": { + "set_in": "ar", + "source": "length_conversion", + "type": "double" + }, + "timeconv": { + "set_in": "ar", + "source": "time_conversion", + "type": "double" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "isavvelocity": { + "set_in": "ar", + "source": "save_velocity", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "iswrcond": { + "set_in": "ar", + "source": "dev_swr_conductance", + "type": "integer" + }, + "manningsn": { + "type": "array", + "set_in": "ar", + "source": "manningsn", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idcxs": { + "type": "array", + "set_in": "ar", + "source": "idcxs", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.toml new file mode 100644 index 00000000..6df890c9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.toml @@ -0,0 +1,142 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-dfw" +parent = "swf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.central_in_space] +type = "keyword" +longname = "use central in space weighting" +description = "keyword to indicate conductance should be calculated using central-in-space weighting instead of the default upstream weighting approach. This option should be used with caution as it does not work well unless all of the stream reaches are saturated. With this option, there is no way for water to flow into a dry reach from connected reaches." +optional = true + +[blocks.options.fields.length_conversion] +type = "double" +longname = "length conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters." +optional = true + +[blocks.options.fields.time_conversion] +type = "double" +longname = "time conversion factor" +description = "real value that is used to convert user-specified Manning's roughness coefficients from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS are seconds." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save DFW flows" +description = "keyword to indicate that budget flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "keyword to print DFW flows to listing file" +description = "keyword to indicate that calculated flows between cells will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period. This option can produce extremely large list files because all cell-by-cell flows are printed. It should only be used with the DFW Package for models that have a small number of cells." +optional = true + +[blocks.options.fields.save_velocity] +type = "keyword" +longname = "keyword to save velocity" +description = "keyword to indicate that x, y, and z components of velocity will be calculated at cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output Control. If this option is activated, then additional information may be required in the discretization packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified for the GWF Exchange as an auxiliary variable." +optional = true + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.dev_swr_conductance] +type = "keyword" +longname = "use SWR conductance formulation" +description = "use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005." +optional = true + +[blocks.griddata.fields.manningsn] +type = "array" +longname = "mannings roughness coefficient" +description = "mannings roughness coefficient" +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idcxs] +type = "array" +longname = "cross section number" +description = "integer value indication the cross section identifier in the Cross Section Package that applies to the reach. If not provided then reach will be treated as hydraulically wide." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[memory.icentral] +set_in = "ar" +source = "central_in_space" +type = "integer" + +[memory.lengthconv] +set_in = "ar" +source = "length_conversion" +type = "double" + +[memory.timeconv] +set_in = "ar" +source = "time_conversion" +type = "double" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.isavvelocity] +set_in = "ar" +source = "save_velocity" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.iswrcond] +set_in = "ar" +source = "dev_swr_conductance" +type = "integer" + +[memory.manningsn] +type = "array" +set_in = "ar" +source = "manningsn" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idcxs] +type = "array" +set_in = "ar" +source = "idcxs" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.yaml new file mode 100644 index 00000000..f78499f1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dfw.yaml @@ -0,0 +1,146 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-dfw +parent: swf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + central_in_space: + type: keyword + longname: use central in space weighting + description: keyword to indicate conductance should be calculated using central-in-space weighting + instead of the default upstream weighting approach. This option should be used with caution + as it does not work well unless all of the stream reaches are saturated. With this option, + there is no way for water to flow into a dry reach from connected reaches. + optional: true + length_conversion: + type: double + longname: length conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from meters to model length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and 100.0 + when using length units (LENGTH_UNITS) of feet, meters, or centimeters in the simulation, respectively. + LENGTH_CONVERSION does not need to be specified if LENGTH_UNITS are meters. + optional: true + time_conversion: + type: double + longname: time conversion factor + description: real value that is used to convert user-specified Manning's roughness coefficients + from seconds to model time units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, + and 31,557,600.0 when using time units (TIME_UNITS) of seconds, minutes, hours, days, or years + in the simulation, respectively. TIME_CONVERSION does not need to be specified if TIME_UNITS + are seconds. + optional: true + save_flows: + type: keyword + longname: keyword to save DFW flows + description: keyword to indicate that budget flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + print_flows: + type: keyword + longname: keyword to print DFW flows to listing file + description: keyword to indicate that calculated flows between cells will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. + If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. This option can produce extremely large list + files because all cell-by-cell flows are printed. It should only be used with the DFW Package + for models that have a small number of cells. + optional: true + save_velocity: + type: keyword + longname: keyword to save velocity + description: keyword to indicate that x, y, and z components of velocity will be calculated at + cell centers and written to the budget file, which is specified with 'BUDGET SAVE FILE' in Output + Control. If this option is activated, then additional information may be required in the discretization + packages and the GWF Exchange package (if GWF models are coupled). Specifically, ANGLDEGX must + be specified in the CONNECTIONDATA block of the DISU Package; ANGLDEGX must also be specified + for the GWF Exchange as an auxiliary variable. + optional: true + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + dev_swr_conductance: + type: keyword + longname: use SWR conductance formulation + description: use the conductance formulation in the Surface Water Routing (SWR) Process for MODFLOW-2005. + optional: true + griddata: + fields: + manningsn: + type: array + longname: mannings roughness coefficient + description: mannings roughness coefficient + dtype: double + shape: + - nodes + idcxs: + type: array + longname: cross section number + description: integer value indication the cross section identifier in the Cross Section Package + that applies to the reach. If not provided then reach will be treated as hydraulically wide. + optional: true + dtype: integer + shape: + - nodes +memory: + icentral: + set_in: ar + source: central_in_space + type: integer + lengthconv: + set_in: ar + source: length_conversion + type: double + timeconv: + set_in: ar + source: time_conversion + type: double + ipakcb: + set_in: ar + source: save_flows + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + isavvelocity: + set_in: ar + source: save_velocity + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + iswrcond: + set_in: ar + source: dev_swr_conductance + type: integer + manningsn: + type: array + set_in: ar + source: manningsn + dtype: double + shape: + - nodes + idcxs: + type: array + set_in: ar + source: idcxs + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.json new file mode 100644 index 00000000..b4357bf7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.json @@ -0,0 +1,207 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-dis2d", + "parent": "swf-nam", + "dims": { + "nrow": { + "value": "nrow", + "scope": "model" + }, + "ncol": { + "value": "ncol", + "scope": "model" + }, + "ncpl": { + "value": "nrow * ncol", + "scope": "model" + }, + "nodes": { + "value": "nrow * ncol", + "scope": "model" + }, + "ncelldim": { + "value": "2", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nrow": { + "type": "integer", + "longname": "number of rows", + "description": "is the number of rows in the model grid.", + "default": 2 + }, + "ncol": { + "type": "integer", + "longname": "number of columns", + "description": "is the number of columns in the model grid.", + "default": 2 + } + } + }, + "griddata": { + "fields": { + "delr": { + "type": "array", + "longname": "spacing along a row", + "description": "is the column spacing in the row direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "longname": "spacing along a column", + "description": "is the row spacing in the column direction.", + "default": 1.0, + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "bottom": { + "type": "array", + "longname": "cell bottom elevation", + "description": "is the bottom elevation for each cell.", + "default": 0.0, + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "ncol", + "nrow" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + }, + "delr": { + "type": "array", + "set_in": "ar", + "source": "delr", + "dtype": "double", + "shape": [ + "ncol" + ] + }, + "delc": { + "type": "array", + "set_in": "ar", + "source": "delc", + "dtype": "double", + "shape": [ + "nrow" + ] + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "ncol", + "nrow" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "ncol", + "nrow" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.toml new file mode 100644 index 00000000..ff104039 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.toml @@ -0,0 +1,185 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-dis2d" +parent = "swf-nam" + +[dims.nrow] +value = "nrow" +scope = "model" + +[dims.ncol] +value = "ncol" +scope = "model" + +[dims.ncpl] +value = "nrow * ncol" +scope = "model" + +[dims.nodes] +value = "nrow * ncol" +scope = "model" + +[dims.ncelldim] +value = "2" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of rows" +description = "is the number of rows in the model grid." +default = 2 + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of columns" +description = "is the number of columns in the model grid." +default = 2 + +[blocks.griddata.fields.delr] +type = "array" +longname = "spacing along a row" +description = "is the column spacing in the row direction." +default = 1.0 +dtype = "double" +shape = [ + "ncol", +] + +[blocks.griddata.fields.delc] +type = "array" +longname = "spacing along a column" +description = "is the row spacing in the column direction." +default = 1.0 +dtype = "double" +shape = [ + "nrow", +] + +[blocks.griddata.fields.bottom] +type = "array" +longname = "cell bottom elevation" +description = "is the bottom elevation for each cell." +default = 0.0 +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "ncol", + "nrow", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" + +[memory.delr] +type = "array" +set_in = "ar" +source = "delr" +dtype = "double" +shape = [ + "ncol", +] + +[memory.delc] +type = "array" +set_in = "ar" +source = "delc" +dtype = "double" +shape = [ + "nrow", +] + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "ncol", + "nrow", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "ncol", + "nrow", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.yaml new file mode 100644 index 00000000..a8639987 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-dis2d.yaml @@ -0,0 +1,180 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-dis2d +parent: swf-nam +dims: + nrow: + value: nrow + scope: model + ncol: + value: ncol + scope: model + ncpl: + value: nrow * ncol + scope: model + nodes: + value: nrow * ncol + scope: model + ncelldim: + value: '2' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nrow: + type: integer + longname: number of rows + description: is the number of rows in the model grid. + default: 2 + ncol: + type: integer + longname: number of columns + description: is the number of columns in the model grid. + default: 2 + griddata: + fields: + delr: + type: array + longname: spacing along a row + description: is the column spacing in the row direction. + default: 1.0 + dtype: double + shape: + - ncol + delc: + type: array + longname: spacing along a column + description: is the row spacing in the column direction. + default: 1.0 + dtype: double + shape: + - nrow + bottom: + type: array + longname: cell bottom elevation + description: is the bottom elevation for each cell. + default: 0.0 + dtype: double + shape: + - ncol + - nrow + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value + for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - ncol + - nrow +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer + delr: + type: array + set_in: ar + source: delr + dtype: double + shape: + - ncol + delc: + type: array + set_in: ar + source: delc + dtype: double + shape: + - nrow + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - ncol + - nrow + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - ncol + - nrow diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.json new file mode 100644 index 00000000..e110d347 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.json @@ -0,0 +1,250 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-disv1d", + "parent": "swf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position origin of the model grid coordinate system", + "description": "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position origin of the model grid coordinate system", + "description": "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of linear features", + "description": "is the number of linear cells." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y, z) vertex pairs used to characterize the model grid.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "width": { + "type": "array", + "longname": "width", + "description": "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "longname": "bottom elevation for the one-dimensional cell", + "description": "bottom elevation for the one-dimensional cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell1d": { + "fields": { + "cell1d": { + "type": "list", + "longname": "cell1d data", + "item": { + "type": "record", + "fields": { + "icell1d": { + "type": "integer", + "longname": "cell1d number", + "description": "is the cell1d number. Records in the cell1d block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "fdc": { + "type": "double", + "longname": "fractional distance to the cell center", + "description": "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "number of cell vertices", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "width": { + "type": "array", + "set_in": "ar", + "source": "width", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.toml new file mode 100644 index 00000000..2ba16fb1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.toml @@ -0,0 +1,216 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-disv1d" +parent = "swf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position origin of the model grid coordinate system" +description = "x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position origin of the model grid coordinate system" +description = "y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of linear features" +description = "is the number of linear cells." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y, z) vertex pairs used to characterize the model grid." +optional = true + +[blocks.griddata.fields.width] +type = "array" +longname = "width" +description = "real value that defines the width for each one-dimensional cell. WIDTH must be greater than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied by the specified cross section x-fraction values." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.bottom] +type = "array" +longname = "bottom elevation for the one-dimensional cell" +description = "bottom elevation for the one-dimensional cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell1d.fields.cell1d] +type = "list" +longname = "cell1d data" +shape = [ + "nodes", +] + +[blocks.cell1d.fields.cell1d.item] +type = "record" + +[blocks.cell1d.fields.cell1d.item.fields.icell1d] +type = "integer" +longname = "cell1d number" +description = "is the cell1d number. Records in the cell1d block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.fdc] +type = "double" +longname = "fractional distance to the cell center" +description = "is the fractional distance to the cell center. FDC is relative to the first vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center of the line segment that defines the cell. If the value of FDC is 1, the cell center would located at the last vertex. FDC values of 0 and 1 can be used to place the node at either end of the cell which can be useful for cells with boundary conditions." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell1d.fields.cell1d.item.fields.icvert] +type = "array" +longname = "number of cell vertices" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in the order that defines the line representing the cell. Cells that are connected must share vertices. The bottom elevation of the cell is calculated using the ZV of the first and last vertex point and FDC." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.width] +type = "array" +set_in = "ar" +source = "width" +dtype = "double" +shape = [ + "nodes", +] + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.yaml new file mode 100644 index 00000000..3b880a09 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv1d.yaml @@ -0,0 +1,220 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-disv1d +parent: swf-nam +dims: + nodes: + value: nodes + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position origin of the model grid coordinate system + description: x-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is written to the binary grid + file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position origin of the model grid coordinate system + description: y-position of the origin used for model grid vertices. This value should be provided + in a real-world coordinate system. If not specified, then a default value equal to zero is + used. The value for YORIGIN does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the model grid coordinate system + relative to a real-world coordinate system. If not specified, then a default value of 0.0 is + assigned. The value for ANGROT does not affect the model simulation, but it is written to the + binary grid file so that postprocessors can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of linear features + description: is the number of linear cells. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y, z) vertex pairs used to characterize the model grid. + optional: true + griddata: + fields: + width: + type: array + longname: width + description: real value that defines the width for each one-dimensional cell. WIDTH must be greater + than zero. If the Cross Section (CXS) Package is used, then the WIDTH value will be multiplied + by the specified cross section x-fraction values. + dtype: double + shape: + - nodes + bottom: + type: array + longname: bottom elevation for the one-dimensional cell + description: bottom elevation for the one-dimensional cell. + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1, the cell exists in the simulation. + optional: true + dtype: integer + shape: + - nodes + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell1d: + fields: + cell1d: + type: list + longname: cell1d data + item: + type: record + fields: + icell1d: + type: integer + longname: cell1d number + description: is the cell1d number. Records in the cell1d block must be listed in consecutive + order from the first to the last. + tagged: false + fdc: + type: double + longname: fractional distance to the cell center + description: is the fractional distance to the cell center. FDC is relative to the first + vertex in the ICVERT array. In most cases FDC should be 0.5, which would place the center + of the line segment that defines the cell. If the value of FDC is 1, the cell center would + located at the last vertex. FDC values of 0 and 1 can be used to place the node at either + end of the cell which can be useful for cells with boundary conditions. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: number of cell vertices + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in the order that defines the line representing + the cell. Cells that are connected must share vertices. The bottom elevation of the cell + is calculated using the ZV of the first and last vertex point and FDC. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nvert: + set_in: ar + source: nvert + type: integer + width: + type: array + set_in: ar + source: width + dtype: double + shape: + - nodes + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.json new file mode 100644 index 00000000..f9c8e55b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.json @@ -0,0 +1,237 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-disv2d", + "parent": "swf-nam", + "dims": { + "nodes": { + "value": "nodes", + "scope": "model" + }, + "nvert": { + "value": "nvert", + "scope": "model" + }, + "ncelldim": { + "value": "1", + "scope": "model" + } + }, + "blocks": { + "options": { + "fields": { + "length_units": { + "type": "string", + "longname": "model length units", + "description": "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'.", + "optional": true + }, + "nogrb": { + "type": "keyword", + "longname": "do not write binary grid file", + "description": "keyword to deactivate writing of the binary grid file.", + "optional": true + }, + "grb_filerecord": { + "type": "record", + "optional": true, + "fields": { + "grb6": { + "type": "file", + "longname": "grb keyword", + "description": "keyword to specify that record corresponds to a binary grid file.", + "mode": "fileout" + } + } + }, + "xorigin": { + "type": "double", + "longname": "x-position of the model grid origin", + "description": "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "yorigin": { + "type": "double", + "longname": "y-position of the model grid origin", + "description": "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "angrot": { + "type": "double", + "longname": "rotation angle", + "description": "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + }, + "crs": { + "type": "string", + "longname": "CRS user input string", + "description": "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space.", + "optional": true, + "developmode": true, + "case_sensitive": true + } + } + }, + "dimensions": { + "fields": { + "nodes": { + "type": "integer", + "longname": "number of cells per layer", + "description": "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + }, + "nvert": { + "type": "integer", + "longname": "number of columns", + "description": "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + } + } + }, + "griddata": { + "fields": { + "bottom": { + "type": "array", + "longname": "model bottom elevation", + "description": "is the bottom elevation for each cell.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "longname": "idomain existence array", + "description": "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell.", + "optional": true, + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } + }, + "vertices": { + "fields": { + "vertices": { + "type": "list", + "longname": "vertices data", + "item": { + "type": "record", + "fields": { + "iv": { + "type": "integer", + "longname": "vertex number", + "description": "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT.", + "tagged": false + }, + "xv": { + "type": "double", + "longname": "x-coordinate for vertex", + "description": "is the x-coordinate for the vertex.", + "tagged": false + }, + "yv": { + "type": "double", + "longname": "y-coordinate for vertex", + "description": "is the y-coordinate for the vertex.", + "tagged": false + } + } + }, + "shape": [ + "nvert" + ] + } + } + }, + "cell2d": { + "fields": { + "cell2d": { + "type": "list", + "longname": "cell2d data", + "item": { + "type": "record", + "fields": { + "icell2d": { + "type": "integer", + "longname": "cell2d number", + "description": "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last.", + "tagged": false + }, + "xc": { + "type": "double", + "longname": "x-coordinate for cell center", + "description": "is the x-coordinate for the cell center.", + "tagged": false + }, + "yc": { + "type": "double", + "longname": "y-coordinate for cell center", + "description": "is the y-coordinate for the cell center.", + "tagged": false + }, + "ncvert": { + "type": "integer", + "longname": "number of cell vertices", + "description": "is the number of vertices required to define the cell. There may be a different number of vertices for each cell.", + "tagged": false + }, + "icvert": { + "type": "array", + "longname": "array of vertex numbers", + "description": "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices.", + "dtype": "integer", + "shape": [ + "ncvert" + ] + } + } + }, + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "nodes": { + "set_in": "ar", + "source": "nodes", + "type": "integer" + }, + "nvert": { + "set_in": "ar", + "source": "nvert", + "type": "integer" + }, + "bottom": { + "type": "array", + "set_in": "ar", + "source": "bottom", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "idomain": { + "type": "array", + "set_in": "ar", + "source": "idomain", + "dtype": "integer", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.toml new file mode 100644 index 00000000..d1674c9c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.toml @@ -0,0 +1,203 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-disv2d" +parent = "swf-nam" + +[dims.nodes] +value = "nodes" +scope = "model" + +[dims.nvert] +value = "nvert" +scope = "model" + +[dims.ncelldim] +value = "1" +scope = "model" + +[blocks.options.fields.length_units] +type = "string" +longname = "model length units" +description = "is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If not specified, the default is 'UNKNOWN'." +optional = true + +[blocks.options.fields.nogrb] +type = "keyword" +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +optional = true + +[blocks.options.fields.grb_filerecord] +type = "record" +optional = true + +[blocks.options.fields.grb_filerecord.fields.grb6] +type = "file" +longname = "grb keyword" +description = "keyword to specify that record corresponds to a binary grid file." +mode = "fileout" + +[blocks.options.fields.xorigin] +type = "double" +longname = "x-position of the model grid origin" +description = "x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.yorigin] +type = "double" +longname = "y-position of the model grid origin" +description = "y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.angrot] +type = "double" +longname = "rotation angle" +description = "counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.options.fields.crs] +type = "string" +longname = "CRS user input string" +description = "is a real-world coordinate reference system (CRS) for the model, for example, an EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space." +optional = true +developmode = true +case_sensitive = true + +[blocks.dimensions.fields.nodes] +type = "integer" +longname = "number of cells per layer" +description = "is the number of cells per layer. This is a constant value for the grid and it applies to all layers." + +[blocks.dimensions.fields.nvert] +type = "integer" +longname = "number of columns" +description = "is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid." + +[blocks.griddata.fields.bottom] +type = "array" +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +dtype = "double" +shape = [ + "nodes", +] + +[blocks.griddata.fields.idomain] +type = "array" +longname = "idomain existence array" +description = "is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a 'vertical pass through' cell." +optional = true +dtype = "integer" +shape = [ + "nodes", +] + +[blocks.vertices.fields.vertices] +type = "list" +longname = "vertices data" +shape = [ + "nvert", +] + +[blocks.vertices.fields.vertices.item] +type = "record" + +[blocks.vertices.fields.vertices.item.fields.iv] +type = "integer" +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.xv] +type = "double" +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +tagged = false + +[blocks.vertices.fields.vertices.item.fields.yv] +type = "double" +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +tagged = false + +[blocks.cell2d.fields.cell2d] +type = "list" +longname = "cell2d data" +shape = [ + "nodes", +] + +[blocks.cell2d.fields.cell2d.item] +type = "record" + +[blocks.cell2d.fields.cell2d.item.fields.icell2d] +type = "integer" +longname = "cell2d number" +description = "is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.xc] +type = "double" +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.yc] +type = "double" +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.ncvert] +type = "integer" +longname = "number of cell vertices" +description = "is the number of vertices required to define the cell. There may be a different number of vertices for each cell." +tagged = false + +[blocks.cell2d.fields.cell2d.item.fields.icvert] +type = "array" +longname = "array of vertex numbers" +description = "is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices." +dtype = "integer" +shape = [ + "ncvert", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.nodes] +set_in = "ar" +source = "nodes" +type = "integer" + +[memory.nvert] +set_in = "ar" +source = "nvert" +type = "integer" + +[memory.bottom] +type = "array" +set_in = "ar" +source = "bottom" +dtype = "double" +shape = [ + "nodes", +] + +[memory.idomain] +type = "array" +set_in = "ar" +source = "idomain" +dtype = "integer" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.yaml new file mode 100644 index 00000000..a73cdac4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-disv2d.yaml @@ -0,0 +1,206 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-disv2d +parent: swf-nam +dims: + nodes: + value: nodes + scope: model + nvert: + value: nvert + scope: model + ncelldim: + value: '1' + scope: model +blocks: + options: + fields: + length_units: + type: string + longname: model length units + description: is the length units used for this model. Values can be 'FEET', 'METERS', or 'CENTIMETERS'. If + not specified, the default is 'UNKNOWN'. + optional: true + nogrb: + type: keyword + longname: do not write binary grid file + description: keyword to deactivate writing of the binary grid file. + optional: true + grb_filerecord: + type: record + optional: true + fields: + grb6: + type: file + longname: grb keyword + description: keyword to specify that record corresponds to a binary grid file. + mode: fileout + xorigin: + type: double + longname: x-position of the model grid origin + description: x-position of the lower-left corner of the model grid. A default value of zero is + assigned if not specified. The value for XORIGIN does not affect the model simulation, but + it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + yorigin: + type: double + longname: y-position of the model grid origin + description: y-position of the lower-left corner of the model grid. If not specified, then a + default value equal to zero is used. The value for YORIGIN does not affect the model simulation, + but it is written to the binary grid file so that postprocessors can locate the grid in space. + optional: true + angrot: + type: double + longname: rotation angle + description: counter-clockwise rotation angle (in degrees) of the lower-left corner of the model + grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does + not affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + crs: + type: string + longname: CRS user input string + description: is a real-world coordinate reference system (CRS) for the model, for example, an + EPSG integer code (e.g. 26915), authority string (i.e. epsg:26915), or Open Geospatial Consortium + Well-Known Text (WKT) specification. Limited to 5000 characters. The entry for CRS does not + affect the model simulation, but it is written to the binary grid file so that postprocessors + can locate the grid in space. + optional: true + developmode: true + case_sensitive: true + dimensions: + fields: + nodes: + type: integer + longname: number of cells per layer + description: is the number of cells per layer. This is a constant value for the grid and it applies + to all layers. + nvert: + type: integer + longname: number of columns + description: is the total number of (x, y) vertex pairs used to characterize the horizontal configuration + of the model grid. + griddata: + fields: + bottom: + type: array + longname: model bottom elevation + description: is the bottom elevation for each cell. + dtype: double + shape: + - nodes + idomain: + type: array + longname: idomain existence array + description: is an optional array that characterizes the existence status of a cell. If the IDOMAIN + array is not specified, then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and output values will be + read and written for the cell, but internal to the program, the cell is excluded from the solution. If + the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. If the IDOMAIN + value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing + cell above will be connected to the first existing cell below. This type of cell is referred + to as a 'vertical pass through' cell. + optional: true + dtype: integer + shape: + - nodes + vertices: + fields: + vertices: + type: list + longname: vertices data + item: + type: record + fields: + iv: + type: integer + longname: vertex number + description: is the vertex number. Records in the VERTICES block must be listed in consecutive + order from 1 to NVERT. + tagged: false + xv: + type: double + longname: x-coordinate for vertex + description: is the x-coordinate for the vertex. + tagged: false + yv: + type: double + longname: y-coordinate for vertex + description: is the y-coordinate for the vertex. + tagged: false + shape: + - nvert + cell2d: + fields: + cell2d: + type: list + longname: cell2d data + item: + type: record + fields: + icell2d: + type: integer + longname: cell2d number + description: is the CELL2D number. Records in the CELL2D block must be listed in consecutive + order from the first to the last. + tagged: false + xc: + type: double + longname: x-coordinate for cell center + description: is the x-coordinate for the cell center. + tagged: false + yc: + type: double + longname: y-coordinate for cell center + description: is the y-coordinate for the cell center. + tagged: false + ncvert: + type: integer + longname: number of cell vertices + description: is the number of vertices required to define the cell. There may be a different + number of vertices for each cell. + tagged: false + icvert: + type: array + longname: array of vertex numbers + description: is an array of integer values containing vertex numbers (in the VERTICES block) + used to define the cell. Vertices must be listed in clockwise order. Cells that are + connected must share vertices. + dtype: integer + shape: + - ncvert + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + nodes: + set_in: ar + source: nodes + type: integer + nvert: + set_in: ar + source: nvert + type: integer + bottom: + type: array + set_in: ar + source: bottom + dtype: double + shape: + - nodes + idomain: + type: array + set_in: ar + source: idomain + dtype: integer + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json new file mode 100644 index 00000000..c04a5455 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-evp", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of evaporation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of evaporation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print evaporation rates to listing file", + "description": "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save evaporation to budget file", + "description": "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of evaporation cells", + "description": "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "evaporation": { + "type": "double", + "longname": "evaporation rate", + "description": "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "evaporation name", + "description": "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "EVP", + "output": "ipakcb", + "obs_type": "EVP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml new file mode 100644 index 00000000..d975ee23 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-evp" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of evaporation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of evaporation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of evaporation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print evaporation rates to listing file" +description = "keyword to indicate that the list of evaporation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save evaporation to budget file" +description = "keyword to indicate that evaporation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of evaporation cells" +description = "integer value specifying the maximum number of evaporation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.evaporation] +type = "double" +longname = "evaporation rate" +description = "is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the water surface area of the cell to calculate the volumetric evaporation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each evaporation. The values of auxiliary variables must be present for each evaporation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "evaporation name" +description = "name of the evaporation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: evaporation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "EVP" +output = "ipakcb" +obs_type = "EVP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml new file mode 100644 index 00000000..acc8bf7c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-evp +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of evaporation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of evaporation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of evaporation information will be written to the + listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print evaporation rates to listing file + description: keyword to indicate that the list of evaporation flow rates will be printed to the + listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save evaporation to budget file + description: keyword to indicate that evaporation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of evaporation cells + description: integer value specifying the maximum number of evaporation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + evaporation: + type: double + longname: evaporation rate + description: is the evaporation flux rate ($LT^{-1}$). This rate is multiplied inside the + program by the water surface area of the cell to calculate the volumetric evaporation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each evaporation. The + values of auxiliary variables must be present for each evaporation. The values must be + specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: evaporation name + description: name of the evaporation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: evaporation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: EVP + output: ipakcb + obs_type: EVP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json new file mode 100644 index 00000000..30dec8f4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json @@ -0,0 +1,270 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-flw", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of flow rate.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of inflow cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save well flows to budget file", + "description": "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of inflow", + "description": "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "q": { + "type": "double", + "longname": "well rate", + "description": "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "inflow name", + "description": "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: q.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "FLW", + "output": "ipakcb", + "obs_type": "FLW", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "FLW-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml new file mode 100644 index 00000000..1812dd28 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml @@ -0,0 +1,244 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-flw" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of flow rate." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of inflow cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of inflow information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of inflow flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save well flows to budget file" +description = "keyword to indicate that inflow flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of inflow" +description = "integer value specifying the maximum number of inflow cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.q] +type = "double" +longname = "well rate" +description = "is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each inflow. The values of auxiliary variables must be present for each inflow. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "inflow name" +description = "name of the inflow cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: q." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "FLW" +output = "ipakcb" +obs_type = "FLW" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "FLW-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml new file mode 100644 index 00000000..02f9c34e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml @@ -0,0 +1,236 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-flw +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of flow rate. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of inflow cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of inflow information will be written to the listing + file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of inflow flow rates will be printed to the listing + file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If + there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed + for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save well flows to budget file + description: keyword to indicate that inflow flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of inflow + description: integer value specifying the maximum number of inflow cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + q: + type: double + longname: well rate + description: is the volumetric inflow rate. A positive value indicates inflow to the stream. Negative + values are not allows. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each inflow. The values + of auxiliary variables must be present for each inflow. The values must be specified in + the order of the auxiliary variables specified in the OPTIONS block. If the package supports + time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable + Input' section), values can be obtained from a time series by entering the time-series + name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: inflow name + description: name of the inflow cell. BOUNDNAME is an ASCII character variable that can + contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: q.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: FLW + output: ipakcb + obs_type: FLW + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: FLW-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.json new file mode 100644 index 00000000..e0f7e1f1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.json @@ -0,0 +1,53 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-ic", + "parent": "swf-nam", + "dims": { + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input griddata arrays should be written to layered ascii output files.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "strt": { + "type": "array", + "longname": "starting concentration", + "description": "is the initial (starting) stage---that is, stage at the beginning of the SWF Model simulation. STRT must be specified for all SWF Model simulations. One value is read for every model reach.", + "default": 0.0, + "dtype": "double", + "shape": [ + "nodes" + ] + } + } + } + }, + "memory": { + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "strt": { + "type": "array", + "set_in": "ar", + "source": "strt", + "dtype": "double", + "shape": [ + "nodes" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.toml new file mode 100644 index 00000000..547d65d8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.toml @@ -0,0 +1,37 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-ic" +parent = "swf-nam" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +optional = true + +[blocks.griddata.fields.strt] +type = "array" +longname = "starting concentration" +description = "is the initial (starting) stage---that is, stage at the beginning of the SWF Model simulation. STRT must be specified for all SWF Model simulations. One value is read for every model reach." +default = 0.0 +dtype = "double" +shape = [ + "nodes", +] + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.strt] +type = "array" +set_in = "ar" +source = "strt" +dtype = "double" +shape = [ + "nodes", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.yaml new file mode 100644 index 00000000..c93213de --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-ic.yaml @@ -0,0 +1,40 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-ic +parent: swf-nam +dims: + nodes: + set_in: ar +blocks: + options: + fields: + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input griddata arrays should be written to layered ascii output + files. + optional: true + griddata: + fields: + strt: + type: array + longname: starting concentration + description: is the initial (starting) stage---that is, stage at the beginning of the SWF Model + simulation. STRT must be specified for all SWF Model simulations. One value is read for every + model reach. + default: 0.0 + dtype: double + shape: + - nodes +memory: + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + strt: + type: array + set_in: ar + source: strt + dtype: double + shape: + - nodes diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.json new file mode 100644 index 00000000..5a824c94 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.json @@ -0,0 +1,166 @@ +{ + "type": "model", + "schema_version": "2.0.0.dev3", + "name": "swf-nam", + "parent": "sim-nam", + "dependent_variable": "stage", + "dims": { + "nja": { + "set_in": "ar" + }, + "nodes": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "list": { + "type": "string", + "longname": "name of listing file", + "description": "is name of the listing file to create for this SWF model. If not specified, then the name of the list file will be the basename of the SWF model name file and the '.lst' extension. For example, if the SWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'.", + "optional": true, + "case_sensitive": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows for all packages to budget file", + "description": "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "newtonoptions": { + "type": "record", + "longname": "newton keyword and options", + "description": "none", + "optional": true, + "fields": { + "newton": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson formulation", + "description": "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + }, + "under_relaxation": { + "type": "keyword", + "longname": "keyword to activate Newton-Raphson UNDER_RELAXATION option", + "description": "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied.", + "optional": true + } + } + } + } + }, + "packages": { + "fields": { + "packages": { + "type": "list", + "longname": "package list", + "item": { + "type": "record", + "fields": { + "ftype": { + "type": "string", + "longname": "package type", + "description": "is the file type, which must be one of the following character values shown in table~ref{table:ftype-swf}. Ftype may be entered in any combination of uppercase and lowercase.", + "tagged": false + }, + "fname": { + "type": "string", + "longname": "file name", + "description": "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run.", + "tagged": false, + "case_sensitive": true + }, + "pname": { + "type": "string", + "longname": "user name for package", + "description": "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single SWF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters.", + "optional": true, + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "x": { + "type": "array", + "set_in": "ca", + "description": "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver.", + "obs_type": "STAGE", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "xold": { + "type": "array", + "readonly": true, + "set_in": "ad", + "description": "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "flowja": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual.", + "budget": "FLOW-JA-FACE", + "dtype": "double", + "shape": [ + "nja" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration.", + "dtype": "double", + "shape": [ + "nodes" + ] + }, + "ibound": { + "type": "array", + "set_in": "ar", + "description": "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells.", + "dtype": "integer", + "shape": [ + "nodes" + ] + }, + "neq": { + "readonly": true, + "set_in": "ar", + "description": "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models.", + "type": "integer" + }, + "idxglo": { + "type": "array", + "readonly": true, + "set_in": "mc", + "description": "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter.", + "dtype": "integer", + "shape": [ + "nja" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.toml new file mode 100644 index 00000000..af3afca2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.toml @@ -0,0 +1,146 @@ +type = "model" +schema_version = "2.0.0.dev3" +name = "swf-nam" +parent = "sim-nam" +dependent_variable = "stage" + +[dims.nja] +set_in = "ar" + +[dims.nodes] +set_in = "ar" + +[blocks.options.fields.list] +type = "string" +longname = "name of listing file" +description = "is name of the listing file to create for this SWF model. If not specified, then the name of the list file will be the basename of the SWF model name file and the '.lst' extension. For example, if the SWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'." +optional = true +case_sensitive = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of all model stress package information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of all model package flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows for all packages to budget file" +description = "keyword to indicate that all model package flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.newtonoptions] +type = "record" +longname = "newton keyword and options" +description = "none" +optional = true + +[blocks.options.fields.newtonoptions.fields.newton] +type = "keyword" +longname = "keyword to activate Newton-Raphson formulation" +description = "keyword that activates the Newton-Raphson formulation for surface water flow between connected reaches and stress packages that support calculation of Newton-Raphson terms." + +[blocks.options.fields.newtonoptions.fields.under_relaxation] +type = "keyword" +longname = "keyword to activate Newton-Raphson UNDER_RELAXATION option" +description = "keyword that indicates whether the surface water stage in a reach will be under-relaxed when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson UNDER_RELAXATION is not applied." +optional = true + +[blocks.packages.fields.packages] +type = "list" +longname = "package list" + +[blocks.packages.fields.packages.item] +type = "record" + +[blocks.packages.fields.packages.item.fields.ftype] +type = "string" +longname = "package type" +description = "is the file type, which must be one of the following character values shown in table~ref{table:ftype-swf}. Ftype may be entered in any combination of uppercase and lowercase." +tagged = false + +[blocks.packages.fields.packages.item.fields.fname] +type = "string" +longname = "file name" +description = "is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run." +tagged = false +case_sensitive = true + +[blocks.packages.fields.packages.item.fields.pname] +type = "string" +longname = "user name for package" +description = "is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single SWF Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters." +optional = true +tagged = false + +[memory.x] +type = "array" +set_in = "ca" +description = "Stage for each model cell. Checked in from the solution-level dependent-variable vector (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial guesses and are overwritten by the solver." +obs_type = "STAGE" +dtype = "double" +shape = [ + "nodes", +] + +[memory.xold] +type = "array" +readonly = true +set_in = "ad" +description = "Dependent variable from the end of the previous time step. Copied from X at advance (AD); used to restore X if the adaptive time stepping scheme retries a failed time step." +dtype = "double" +shape = [ + "nodes", +] + +[memory.flowja] +type = "array" +readonly = true +set_in = "cq" +description = "Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. Diagonal entries hold the flow residual." +budget = "FLOW-JA-FACE" +dtype = "double" +shape = [ + "nja", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution for this model, sliced from the solution-level RHS vector. Rebuilt each solver iteration." +dtype = "double" +shape = [ + "nodes", +] + +[memory.ibound] +type = "array" +set_in = "ar" +description = "Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or deactivates cells." +dtype = "integer" +shape = [ + "nodes", +] + +[memory.neq] +readonly = true +set_in = "ar" +description = "Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) for standard models." +type = "integer" + +[memory.idxglo] +type = "array" +readonly = true +set_in = "mc" +description = "Maps each local CSR position to the corresponding row/column index in the global solution matrix. Populated during matrix connectivity (MC) and constant thereafter." +dtype = "integer" +shape = [ + "nja", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.yaml new file mode 100644 index 00000000..5080f9c9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-nam.yaml @@ -0,0 +1,158 @@ +type: model +schema_version: 2.0.0.dev3 +name: swf-nam +parent: sim-nam +dependent_variable: stage +dims: + nja: + set_in: ar + nodes: + set_in: ar +blocks: + options: + fields: + list: + type: string + longname: name of listing file + description: is name of the listing file to create for this SWF model. If not specified, then + the name of the list file will be the basename of the SWF model name file and the '.lst' extension. For + example, if the SWF name file is called 'my.model.nam' then the list file will be called 'my.model.lst'. + optional: true + case_sensitive: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of all model stress package information will be + written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of all model package flow rates will be printed + to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in + Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow + rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows for all packages to budget file + description: keyword to indicate that all model package flow terms will be written to the file + specified with 'BUDGET FILEOUT' in Output Control. + optional: true + newtonoptions: + type: record + longname: newton keyword and options + description: none + optional: true + fields: + newton: + type: keyword + longname: keyword to activate Newton-Raphson formulation + description: keyword that activates the Newton-Raphson formulation for surface water flow + between connected reaches and stress packages that support calculation of Newton-Raphson + terms. + under_relaxation: + type: keyword + longname: keyword to activate Newton-Raphson UNDER_RELAXATION option + description: keyword that indicates whether the surface water stage in a reach will be under-relaxed + when water levels fall below the bottom of the model below any given cell. By default, Newton-Raphson + UNDER_RELAXATION is not applied. + optional: true + packages: + fields: + packages: + type: list + longname: package list + item: + type: record + fields: + ftype: + type: string + longname: package type + description: is the file type, which must be one of the following character values shown + in table~ref{table:ftype-swf}. Ftype may be entered in any combination of uppercase and + lowercase. + tagged: false + fname: + type: string + longname: file name + description: is the name of the file containing the package input. The path to the file + should be included if the file is not located in the folder where the program was run. + tagged: false + case_sensitive: true + pname: + type: string + longname: user name for package + description: is the user-defined name for the package. PNAME is restricted to 16 characters. No + spaces are allowed in PNAME. PNAME character values are read and stored by the program + for stress packages only. These names may be useful for labeling purposes when multiple + stress packages of the same type are located within a single SWF Model. If PNAME is specified + for a stress package, then PNAME will be used in the flow budget table in the listing + file; it will also be used for the text entry in the cell-by-cell budget file. PNAME + is case insensitive and is stored in all upper case letters. + optional: true + tagged: false +memory: + x: + type: array + set_in: ca + description: Stage for each model cell. Checked in from the solution-level dependent-variable vector + (or directly allocated when the DFW package is absent). Initialized by the IC package during AR; + updated by the nonlinear solver at each Picard iteration (CA). API-written values serve as initial + guesses and are overwritten by the solver. + obs_type: STAGE + dtype: double + shape: + - nodes + xold: + type: array + readonly: true + set_in: ad + description: Dependent variable from the end of the previous time step. Copied from X at advance (AD); + used to restore X if the adaptive time stepping scheme retries a failed time step. + dtype: double + shape: + - nodes + flowja: + type: array + readonly: true + set_in: cq + description: Intercell flows in compressed sparse row (CSR) order, calculated after solution convergence. + Diagonal entries hold the flow residual. + budget: FLOW-JA-FACE + dtype: double + shape: + - nja + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution for this model, sliced from the solution-level RHS vector. + Rebuilt each solver iteration. + dtype: double + shape: + - nodes + ibound: + type: array + set_in: ar + description: 'Cell activity flag: positive values indicate active cells, zero indicates inactive (no-flow) + cells. Set during model initialisation; may change when Newton-Raphson wet-dry logic activates or + deactivates cells.' + dtype: integer + shape: + - nodes + neq: + readonly: true + set_in: ar + description: Number of equations (unknowns) for this model. Equal to the number of active cells (NODES) + for standard models. + type: integer + idxglo: + type: array + readonly: true + set_in: mc + description: Maps each local CSR position to the corresponding row/column index in the global solution + matrix. Populated during matrix connectivity (MC) and constant thereafter. + dtype: integer + shape: + - nja diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json new file mode 100644 index 00000000..8271978e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.json @@ -0,0 +1,211 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-oc", + "parent": "swf-nam", + "blocks": { + "options": { + "fields": { + "budget_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budget": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget.", + "mode": "fileout" + } + } + }, + "budgetcsv_filerecord": { + "type": "record", + "optional": true, + "fields": { + "budgetcsv": { + "type": "file", + "longname": "budget keyword", + "description": "keyword to specify that record corresponds to the budget CSV.", + "mode": "fileout" + } + } + }, + "qoutflow_filerecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "file", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow.", + "mode": "fileout" + } + } + }, + "stage_filerecord": { + "type": "record", + "optional": true, + "fields": { + "stage": { + "type": "file", + "longname": "stage keyword", + "description": "keyword to specify that record corresponds to stage.", + "mode": "fileout" + } + } + }, + "qoutflowprintrecord": { + "type": "record", + "optional": true, + "fields": { + "qoutflow": { + "type": "keyword", + "longname": "qoutflow keyword", + "description": "keyword to specify that record corresponds to qoutflow." + }, + "print_format": { + "type": "keyword", + "longname": "keyword to indicate that a print format follows", + "description": "keyword to specify format for printing to the listing file." + }, + "formatrecord": { + "type": "record", + "fields": { + "columns": { + "type": "integer", + "longname": "number of columns", + "description": "number of columns for writing data." + }, + "width": { + "type": "integer", + "longname": "width for each number", + "description": "width for writing each number." + }, + "digits": { + "type": "integer", + "longname": "number of digits", + "description": "number of digits to use for writing a number." + }, + "format": { + "type": "string", + "longname": "write format", + "description": "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC.", + "tagged": false + } + } + } + } + } + } + }, + "period": { + "fields": { + "output": { + "type": "list", + "optional": true, + "item": { + "type": "union", + "arms": { + "saverecord": { + "type": "record", + "optional": true, + "fields": { + "save": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be saved this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + }, + "printrecord": { + "type": "record", + "optional": true, + "fields": { + "print": { + "type": "keyword", + "longname": "keyword to save", + "description": "keyword to indicate that information will be printed this stress period." + }, + "rtype": { + "type": "string", + "longname": "record type", + "description": "type of information to save or print. Can be BUDGET.", + "tagged": false, + "valid": [ + "STAGE", + "BUDGET" + ] + }, + "ocsetting": { + "type": "union", + "description": "specifies the steps for which the data will be saved.", + "arms": { + "all": { + "type": "keyword", + "description": "keyword to indicate save for all time steps in period." + }, + "first": { + "type": "keyword", + "description": "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "last": { + "type": "keyword", + "description": "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "frequency": { + "type": "integer", + "description": "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + }, + "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" + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml new file mode 100644 index 00000000..31a33ee2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.toml @@ -0,0 +1,177 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-oc" +parent = "swf-nam" + +[blocks.options.fields.budget_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budget_filerecord.fields.budget] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget." +mode = "fileout" + +[blocks.options.fields.budgetcsv_filerecord] +type = "record" +optional = true + +[blocks.options.fields.budgetcsv_filerecord.fields.budgetcsv] +type = "file" +longname = "budget keyword" +description = "keyword to specify that record corresponds to the budget CSV." +mode = "fileout" + +[blocks.options.fields.qoutflow_filerecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflow_filerecord.fields.qoutflow] +type = "file" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." +mode = "fileout" + +[blocks.options.fields.stage_filerecord] +type = "record" +optional = true + +[blocks.options.fields.stage_filerecord.fields.stage] +type = "file" +longname = "stage keyword" +description = "keyword to specify that record corresponds to stage." +mode = "fileout" + +[blocks.options.fields.qoutflowprintrecord] +type = "record" +optional = true + +[blocks.options.fields.qoutflowprintrecord.fields.qoutflow] +type = "keyword" +longname = "qoutflow keyword" +description = "keyword to specify that record corresponds to qoutflow." + +[blocks.options.fields.qoutflowprintrecord.fields.print_format] +type = "keyword" +longname = "keyword to indicate that a print format follows" +description = "keyword to specify format for printing to the listing file." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord] +type = "record" + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.columns] +type = "integer" +longname = "number of columns" +description = "number of columns for writing data." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.width] +type = "integer" +longname = "width for each number" +description = "width for writing each number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.digits] +type = "integer" +longname = "number of digits" +description = "number of digits to use for writing a number." + +[blocks.options.fields.qoutflowprintrecord.fields.formatrecord.fields.format] +type = "string" +longname = "write format" +description = "write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC." +tagged = false + +[blocks.period.fields.output] +type = "list" +optional = true + +[blocks.period.fields.output.item] +type = "union" + +[blocks.period.fields.output.item.arms.saverecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.saverecord.fields.save] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be saved this stress period." + +[blocks.period.fields.output.item.arms.saverecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.saverecord.fields.ocsetting.arms.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" + +[blocks.period.fields.output.item.arms.printrecord] +type = "record" +optional = true + +[blocks.period.fields.output.item.arms.printrecord.fields.print] +type = "keyword" +longname = "keyword to save" +description = "keyword to indicate that information will be printed this stress period." + +[blocks.period.fields.output.item.arms.printrecord.fields.rtype] +type = "string" +longname = "record type" +description = "type of information to save or print. Can be BUDGET." +tagged = false +valid = [ + "STAGE", + "BUDGET", +] + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting] +type = "union" +description = "specifies the steps for which the data will be saved." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.all] +type = "keyword" +description = "keyword to indicate save for all time steps in period." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.first] +type = "keyword" +description = "keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.last] +type = "keyword" +description = "keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.frequency] +type = "integer" +description = "save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps." + +[blocks.period.fields.output.item.arms.printrecord.fields.ocsetting.arms.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" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml new file mode 100644 index 00000000..ca09766d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-oc.yaml @@ -0,0 +1,169 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-oc +parent: swf-nam +blocks: + options: + fields: + budget_filerecord: + type: record + optional: true + fields: + budget: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget. + mode: fileout + budgetcsv_filerecord: + type: record + optional: true + fields: + budgetcsv: + type: file + longname: budget keyword + description: keyword to specify that record corresponds to the budget CSV. + mode: fileout + qoutflow_filerecord: + type: record + optional: true + fields: + qoutflow: + type: file + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + mode: fileout + stage_filerecord: + type: record + optional: true + fields: + stage: + type: file + longname: stage keyword + description: keyword to specify that record corresponds to stage. + mode: fileout + qoutflowprintrecord: + type: record + optional: true + fields: + qoutflow: + type: keyword + longname: qoutflow keyword + description: keyword to specify that record corresponds to qoutflow. + print_format: + type: keyword + longname: keyword to indicate that a print format follows + description: keyword to specify format for printing to the listing file. + formatrecord: + type: record + fields: + columns: + type: integer + longname: number of columns + description: number of columns for writing data. + width: + type: integer + longname: width for each number + description: width for writing each number. + digits: + type: integer + longname: number of digits + description: number of digits to use for writing a number. + format: + type: string + longname: write format + description: write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + tagged: false + period: + fields: + output: + type: list + optional: true + item: + type: union + arms: + saverecord: + type: record + optional: true + fields: + save: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be saved this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 + printrecord: + type: record + optional: true + fields: + print: + type: keyword + longname: keyword to save + description: keyword to indicate that information will be printed this stress period. + rtype: + type: string + longname: record type + description: type of information to save or print. Can be BUDGET. + tagged: false + valid: + - STAGE + - BUDGET + ocsetting: + type: union + description: specifies the steps for which the data will be saved. + arms: + all: + type: keyword + description: keyword to indicate save for all time steps in period. + first: + type: keyword + description: keyword to indicate save for first step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + last: + type: keyword + description: keyword to indicate save for last step in period. This keyword may + be used in conjunction with other keywords to print or save results for multiple + time steps. + frequency: + type: integer + description: save at the specified time step frequency. This keyword may be used + in conjunction with other keywords to print or save results for multiple time + steps. + 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 diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json new file mode 100644 index 00000000..e4b122b2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json @@ -0,0 +1,278 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-pcp", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "auxmultname": { + "type": "string", + "longname": "name of auxiliary variable for multiplier", + "description": "name of auxiliary variable to be used as multiplier of precipitation.", + "optional": true + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of precipitation cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print precipitation rates to listing file", + "description": "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save precipitation to budget file", + "description": "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of precipitation cells", + "description": "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "precipitation": { + "type": "double", + "longname": "precipitation rate", + "description": "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "precipitation name", + "description": "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "PCP", + "output": "ipakcb", + "obs_type": "PCP", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml new file mode 100644 index 00000000..8a5bb06f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml @@ -0,0 +1,252 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-pcp" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.auxmultname] +type = "string" +longname = "name of auxiliary variable for multiplier" +description = "name of auxiliary variable to be used as multiplier of precipitation." +optional = true + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of precipitation cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of precipitation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print precipitation rates to listing file" +description = "keyword to indicate that the list of precipitation flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save precipitation to budget file" +description = "keyword to indicate that precipitation flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of precipitation cells" +description = "integer value specifying the maximum number of precipitation cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.precipitation] +type = "double" +longname = "precipitation rate" +description = "is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside the program by the surface area of the cell to calculate the volumetric precipitation rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each precipitation. The values of auxiliary variables must be present for each precipitation. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "precipitation name" +description = "name of the precipitation cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: precipitation." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "PCP" +output = "ipakcb" +obs_type = "PCP" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml new file mode 100644 index 00000000..56f55c7f --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml @@ -0,0 +1,244 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-pcp +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + auxmultname: + type: string + longname: name of auxiliary variable for multiplier + description: name of auxiliary variable to be used as multiplier of precipitation. + optional: true + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of precipitation + cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of precipitation information will be written to + the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print precipitation rates to listing file + description: keyword to indicate that the list of precipitation flow rates will be printed to + the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output + Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates + are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save precipitation to budget file + description: keyword to indicate that precipitation flow terms will be written to the file specified + with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of precipitation cells + description: integer value specifying the maximum number of precipitation cells that will be specified + for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + precipitation: + type: double + longname: precipitation rate + description: is the precipitation flux rate ($LT^{-1}$). This rate is multiplied inside + the program by the surface area of the cell to calculate the volumetric precipitation + rate. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' + section), values can be obtained from a time series by entering the time-series name in + place of a numeric value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each precipitation. The + values of auxiliary variables must be present for each precipitation. The values must + be specified in the order of the auxiliary variables specified in the OPTIONS block. If + the package supports time series and the Options block includes a TIMESERIESFILE entry + (see the 'Time-Variable Input' section), values can be obtained from a time series by + entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: precipitation name + description: name of the precipitation cell. BOUNDNAME is an ASCII character variable that + can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire + name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: precipitation.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: PCP + output: ipakcb + obs_type: PCP + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.json new file mode 100644 index 00000000..957977c5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.json @@ -0,0 +1,54 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-sto", + "parent": "swf-nam", + "blocks": { + "options": { + "fields": { + "save_flows": { + "type": "keyword", + "longname": "keyword to save NPF flows", + "description": "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control.", + "optional": true + }, + "export_array_ascii": { + "type": "keyword", + "longname": "export array variables to layered ascii files.", + "description": "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files.", + "optional": true + } + } + }, + "period": { + "fields": { + "storage": { + "type": "string", + "longname": "storage state", + "description": "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block.", + "optional": true, + "valid": [ + "steady-state", + "transient" + ] + } + } + } + }, + "memory": { + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "type": "integer" + }, + "export_ascii": { + "set_in": "ar", + "source": "export_array_ascii", + "type": "logical" + }, + "steady_state": { + "set_in": "rp", + "type": "logical" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.toml new file mode 100644 index 00000000..ef1dba1e --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.toml @@ -0,0 +1,40 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-sto" +parent = "swf-nam" + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "keyword to save NPF flows" +description = "keyword to indicate that cell-by-cell flow terms will be written to the file specified with 'BUDGET SAVE FILE' in Output Control." +optional = true + +[blocks.options.fields.export_array_ascii] +type = "keyword" +longname = "export array variables to layered ascii files." +description = "keyword that specifies input grid arrays, which already support the layered keyword, should be written to layered ascii output files." +optional = true + +[blocks.period.fields.storage] +type = "string" +longname = "storage state" +description = "keyword to indicate that stress period IPER is steady-state. Steady-state conditions will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block." +optional = true +valid = [ + "steady-state", + "transient", +] + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +type = "integer" + +[memory.export_ascii] +set_in = "ar" +source = "export_array_ascii" +type = "logical" + +[memory.steady_state] +set_in = "rp" +type = "logical" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.yaml new file mode 100644 index 00000000..5d9ef6b8 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-sto.yaml @@ -0,0 +1,42 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-sto +parent: swf-nam +blocks: + options: + fields: + save_flows: + type: keyword + longname: keyword to save NPF flows + description: keyword to indicate that cell-by-cell flow terms will be written to the file specified + with 'BUDGET SAVE FILE' in Output Control. + optional: true + export_array_ascii: + type: keyword + longname: export array variables to layered ascii files. + description: keyword that specifies input grid arrays, which already support the layered keyword, + should be written to layered ascii output files. + optional: true + period: + fields: + storage: + type: string + longname: storage state + description: keyword to indicate that stress period IPER is steady-state. Steady-state conditions + will apply until the TRANSIENT keyword is specified in a subsequent BEGIN PERIOD block. + optional: true + valid: + - steady-state + - transient +memory: + ipakcb: + set_in: ar + source: save_flows + type: integer + export_ascii: + set_in: ar + source: export_array_ascii + type: logical + steady_state: + set_in: rp + type: logical diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json new file mode 100644 index 00000000..c707a09c --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json @@ -0,0 +1,294 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "swf-zdg", + "parent": "swf-nam", + "multi": true, + "subtype": "stress", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "model" + }, + "auxiliary": { + "value": "len(auxiliary)" + }, + "naux": { + "value": "len(auxiliary)" + }, + "nbound": { + "set_in": "rp" + }, + "ncolbnd": { + "set_in": "ar" + } + }, + "blocks": { + "options": { + "fields": { + "auxiliary": { + "type": "array", + "longname": "keyword to specify aux variables", + "description": "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block.", + "optional": true, + "dtype": "string" + }, + "boundnames": { + "type": "keyword", + "description": "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read.", + "optional": true + }, + "print_flows": { + "type": "keyword", + "longname": "print calculated flows to listing file", + "description": "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period.", + "optional": true + }, + "save_flows": { + "type": "keyword", + "longname": "save flows to budget file", + "description": "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + }, + "obs_filerecord": { + "type": "record", + "optional": true, + "fields": { + "obs6": { + "type": "file", + "longname": "obs keyword", + "description": "keyword to specify that record corresponds to an observations file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of zero-depth-gradient boundaries", + "description": "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "stress_period_data": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "idcxs": { + "type": "integer", + "longname": "cross section identifier", + "description": "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel.", + "tagged": false + }, + "width": { + "type": "double", + "longname": "width of the zero-depth gradient boundary", + "description": "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "slope": { + "type": "double", + "longname": "channel slope", + "description": "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "rough": { + "type": "double", + "longname": "channel roughness", + "description": "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "tagged": false, + "time_series": true + }, + "aux": { + "type": "array", + "longname": "auxiliary variables", + "description": "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "optional": true, + "dtype": "double", + "time_series": true, + "shape": [ + "auxiliary" + ] + }, + "boundname": { + "type": "string", + "longname": "zero-depth-gradient boundary name", + "description": "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "iprpak": { + "set_in": "ar", + "source": "print_input", + "type": "integer" + }, + "iprflow": { + "set_in": "ar", + "source": "print_flows", + "type": "integer" + }, + "ipakcb": { + "set_in": "ar", + "source": "save_flows", + "description": "Flag controlling whether boundary flows are written to the budget file.", + "type": "integer" + }, + "auxvar": { + "type": "array", + "source": "aux", + "description": "Auxiliary variable values for each boundary.", + "dtype": "double", + "set_in": [ + "rp", + "ad" + ], + "shape": [ + "naux", + "nbound" + ] + }, + "maxbound": { + "readonly": true, + "set_in": "ar", + "description": "Maximum number of boundary entries per stress period.", + "type": "integer" + }, + "nbound": { + "set_in": "rp", + "description": "Number of active boundaries for the current stress period.", + "type": "integer" + }, + "ncolbnd": { + "readonly": true, + "set_in": "ar", + "description": "Number of columns in BOUND.", + "type": "integer" + }, + "nodelist": { + "type": "array", + "set_in": "rp", + "source": "cellid", + "description": "Reduced node number for each active boundary, derived from CELLID.", + "dtype": "integer", + "shape": [ + "nbound" + ] + }, + "bound": { + "type": "array", + "set_in": "rp", + "description": "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough.", + "dtype": "double", + "shape": [ + "ncolbnd", + "nbound" + ] + }, + "hcof": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Diagonal coefficient contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "rhs": { + "type": "array", + "readonly": true, + "set_in": "fc", + "description": "Right-hand-side contribution to the system matrix.", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simvals": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Simulated boundary flow values for the current time step.", + "budget": "ZDG", + "output": "ipakcb", + "obs_type": "ZDG", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "simtomvr": { + "type": "array", + "readonly": true, + "set_in": "cq", + "description": "Flow diverted to the Water Mover for each boundary.", + "budget": "ZDG-TO-MVR", + "output": "ipakcb", + "dtype": "double", + "shape": [ + "nbound" + ] + }, + "naux": { + "readonly": true, + "set_in": "ar", + "description": "Number of auxiliary variables.", + "type": "integer" + }, + "auxname_cst": { + "type": "array", + "readonly": true, + "set_in": "ar", + "description": "Names of auxiliary variables.", + "dtype": "string", + "shape": [ + "naux" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml new file mode 100644 index 00000000..f8613c73 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml @@ -0,0 +1,268 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "swf-zdg" +parent = "swf-nam" +multi = true +subtype = "stress" + +[dims.maxbound] +value = "maxbound" +scope = "model" + +[dims.auxiliary] +value = "len(auxiliary)" + +[dims.naux] +value = "len(auxiliary)" + +[dims.nbound] +set_in = "rp" + +[dims.ncolbnd] +set_in = "ar" + +[blocks.options.fields.auxiliary] +type = "array" +longname = "keyword to specify aux variables" +description = "defines an array of one or more auxiliary variable names. There is no limit on the number of auxiliary variables that can be provided on this line; however, lists of information provided in subsequent blocks must have a column of data for each auxiliary variable name defined here. The number of auxiliary variables detected on this line determines the value for naux. Comments cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary variables may not be used by the package, but they will be available for use by other parts of the program. The program will terminate with an error if auxiliary variables are specified on more than one line in the options block." +optional = true +dtype = "string" + +[blocks.options.fields.boundnames] +type = "keyword" +description = "keyword to indicate that boundary names may be provided with the list of zero-depth-gradient boundary cells." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.print_flows] +type = "keyword" +longname = "print calculated flows to listing file" +description = "keyword to indicate that the list of zero-depth-gradient boundary flow rates will be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, then flow rates are printed for the last time step of each stress period." +optional = true + +[blocks.options.fields.save_flows] +type = "keyword" +longname = "save flows to budget file" +description = "keyword to indicate that zero-depth-gradient boundary flow terms will be written to the file specified with 'BUDGET FILEOUT' in Output Control." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.options.fields.obs_filerecord] +type = "record" +optional = true + +[blocks.options.fields.obs_filerecord.fields.obs6] +type = "file" +longname = "obs keyword" +description = "keyword to specify that record corresponds to an observations file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of zero-depth-gradient boundaries" +description = "integer value specifying the maximum number of zero-depth-gradient boundary cells that will be specified for use during any stress period." + +[blocks.period.fields.stress_period_data] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.stress_period_data.item] +type = "record" + +[blocks.period.fields.stress_period_data.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.stress_period_data.item.fields.idcxs] +type = "integer" +longname = "cross section identifier" +description = "is the identifier for the cross section specified in the CXS Package. A value of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically wide channel." +tagged = false + +[blocks.period.fields.stress_period_data.item.fields.width] +type = "double" +longname = "width of the zero-depth gradient boundary" +description = "is the channel width of the zero-depth gradient boundary. If a cross section is associated with this boundary, the width will be scaled by the cross section information. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.slope] +type = "double" +longname = "channel slope" +description = "is the channel slope used to calculate flow to the zero-depth-gradient boundary. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.rough] +type = "double" +longname = "channel roughness" +description = "is the Manning channel roughness value used to calculate flow to the zero-depth-gradient boundary. If a cross section is associated with this boundary, the roughness value will be multiplied by the roughness fraction for each part of the cross section. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +tagged = false +time_series = true + +[blocks.period.fields.stress_period_data.item.fields.aux] +type = "array" +longname = "auxiliary variables" +description = "represents the values of the auxiliary variables for each zero-depth-gradient boundary. The values of auxiliary variables must be present for each zero-depth-gradient boundary. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. If the package supports time series and the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +optional = true +dtype = "double" +time_series = true +shape = [ + "auxiliary", +] + +[blocks.period.fields.stress_period_data.item.fields.boundname] +type = "string" +longname = "zero-depth-gradient boundary name" +description = "name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, then the entire name must be enclosed within single quotes." +optional = true +tagged = false + +[memory.iprpak] +set_in = "ar" +source = "print_input" +type = "integer" + +[memory.iprflow] +set_in = "ar" +source = "print_flows" +type = "integer" + +[memory.ipakcb] +set_in = "ar" +source = "save_flows" +description = "Flag controlling whether boundary flows are written to the budget file." +type = "integer" + +[memory.auxvar] +type = "array" +source = "aux" +description = "Auxiliary variable values for each boundary." +dtype = "double" +set_in = [ + "rp", + "ad", +] +shape = [ + "naux", + "nbound", +] + +[memory.maxbound] +readonly = true +set_in = "ar" +description = "Maximum number of boundary entries per stress period." +type = "integer" + +[memory.nbound] +set_in = "rp" +description = "Number of active boundaries for the current stress period." +type = "integer" + +[memory.ncolbnd] +readonly = true +set_in = "ar" +description = "Number of columns in BOUND." +type = "integer" + +[memory.nodelist] +type = "array" +set_in = "rp" +source = "cellid" +description = "Reduced node number for each active boundary, derived from CELLID." +dtype = "integer" +shape = [ + "nbound", +] + +[memory.bound] +type = "array" +set_in = "rp" +description = "Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, 2: slope, 3: rough." +dtype = "double" +shape = [ + "ncolbnd", + "nbound", +] + +[memory.hcof] +type = "array" +readonly = true +set_in = "fc" +description = "Diagonal coefficient contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.rhs] +type = "array" +readonly = true +set_in = "fc" +description = "Right-hand-side contribution to the system matrix." +dtype = "double" +shape = [ + "nbound", +] + +[memory.simvals] +type = "array" +readonly = true +set_in = "cq" +description = "Simulated boundary flow values for the current time step." +budget = "ZDG" +output = "ipakcb" +obs_type = "ZDG" +dtype = "double" +shape = [ + "nbound", +] + +[memory.simtomvr] +type = "array" +readonly = true +set_in = "cq" +description = "Flow diverted to the Water Mover for each boundary." +budget = "ZDG-TO-MVR" +output = "ipakcb" +dtype = "double" +shape = [ + "nbound", +] + +[memory.naux] +readonly = true +set_in = "ar" +description = "Number of auxiliary variables." +type = "integer" + +[memory.auxname_cst] +type = "array" +readonly = true +set_in = "ar" +description = "Names of auxiliary variables." +dtype = "string" +shape = [ + "naux", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml new file mode 100644 index 00000000..044074ee --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml @@ -0,0 +1,269 @@ +type: package +schema_version: 2.0.0.dev3 +name: swf-zdg +parent: swf-nam +multi: true +subtype: stress +dims: + maxbound: + value: maxbound + scope: model + auxiliary: + value: len(auxiliary) + naux: + value: len(auxiliary) + nbound: + set_in: rp + ncolbnd: + set_in: ar +blocks: + options: + fields: + auxiliary: + type: array + longname: keyword to specify aux variables + description: defines an array of one or more auxiliary variable names. There is no limit on the + number of auxiliary variables that can be provided on this line; however, lists of information + provided in subsequent blocks must have a column of data for each auxiliary variable name defined + here. The number of auxiliary variables detected on this line determines the value for naux. Comments + cannot be provided anywhere on this line as they will be interpreted as auxiliary variable names. Auxiliary + variables may not be used by the package, but they will be available for use by other parts + of the program. The program will terminate with an error if auxiliary variables are specified + on more than one line in the options block. + optional: true + dtype: string + boundnames: + type: keyword + description: keyword to indicate that boundary names may be provided with the list of zero-depth-gradient + boundary cells. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary information will + be written to the listing file immediately after it is read. + optional: true + print_flows: + type: keyword + longname: print calculated flows to listing file + description: keyword to indicate that the list of zero-depth-gradient boundary flow rates will + be printed to the listing file for every stress period time step in which 'BUDGET PRINT' is + specified in Output Control. If there is no Output Control option and 'PRINT_FLOWS' is specified, + then flow rates are printed for the last time step of each stress period. + optional: true + save_flows: + type: keyword + longname: save flows to budget file + description: keyword to indicate that zero-depth-gradient boundary flow terms will be written + to the file specified with 'BUDGET FILEOUT' in Output Control. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + obs_filerecord: + type: record + optional: true + fields: + obs6: + type: file + longname: obs keyword + description: keyword to specify that record corresponds to an observations file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of zero-depth-gradient boundaries + description: integer value specifying the maximum number of zero-depth-gradient boundary cells + that will be specified for use during any stress period. + period: + fields: + stress_period_data: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + idcxs: + type: integer + longname: cross section identifier + description: is the identifier for the cross section specified in the CXS Package. A value + of zero indicates the zero-depth-gradient calculation will use parameters for a hydraulically + wide channel. + tagged: false + width: + type: double + longname: width of the zero-depth gradient boundary + description: is the channel width of the zero-depth gradient boundary. If a cross section + is associated with this boundary, the width will be scaled by the cross section information. If + the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + slope: + type: double + longname: channel slope + description: is the channel slope used to calculate flow to the zero-depth-gradient boundary. + If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), + values can be obtained from a time series by entering the time-series name in place of + a numeric value. + tagged: false + time_series: true + rough: + type: double + longname: channel roughness + description: is the Manning channel roughness value used to calculate flow to the zero-depth-gradient + boundary. If a cross section is associated with this boundary, the roughness value will + be multiplied by the roughness fraction for each part of the cross section. If the Options + block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a numeric + value. + tagged: false + time_series: true + aux: + type: array + longname: auxiliary variables + description: represents the values of the auxiliary variables for each zero-depth-gradient + boundary. The values of auxiliary variables must be present for each zero-depth-gradient + boundary. The values must be specified in the order of the auxiliary variables specified + in the OPTIONS block. If the package supports time series and the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. + optional: true + dtype: double + time_series: true + shape: + - auxiliary + boundname: + type: string + longname: zero-depth-gradient boundary name + description: name of the zero-depth-gradient boundary cell. BOUNDNAME is an ASCII character + variable that can contain as many as 40 characters. If BOUNDNAME contains spaces in it, + then the entire name must be enclosed within single quotes. + optional: true + tagged: false + shape: + - maxbound +memory: + iprpak: + set_in: ar + source: print_input + type: integer + iprflow: + set_in: ar + source: print_flows + type: integer + ipakcb: + set_in: ar + source: save_flows + description: Flag controlling whether boundary flows are written to the budget file. + type: integer + auxvar: + type: array + source: aux + description: Auxiliary variable values for each boundary. + dtype: double + set_in: + - rp + - ad + shape: + - naux + - nbound + maxbound: + readonly: true + set_in: ar + description: Maximum number of boundary entries per stress period. + type: integer + nbound: + set_in: rp + description: Number of active boundaries for the current stress period. + type: integer + ncolbnd: + readonly: true + set_in: ar + description: Number of columns in BOUND. + type: integer + nodelist: + type: array + set_in: rp + source: cellid + description: Reduced node number for each active boundary, derived from CELLID. + dtype: integer + shape: + - nbound + bound: + type: array + set_in: rp + description: 'Boundary data for the current stress period. Columns (0-indexed): 0: idcxs, 1: width, + 2: slope, 3: rough.' + dtype: double + shape: + - ncolbnd + - nbound + hcof: + type: array + readonly: true + set_in: fc + description: Diagonal coefficient contribution to the system matrix. + dtype: double + shape: + - nbound + rhs: + type: array + readonly: true + set_in: fc + description: Right-hand-side contribution to the system matrix. + dtype: double + shape: + - nbound + simvals: + type: array + readonly: true + set_in: cq + description: Simulated boundary flow values for the current time step. + budget: ZDG + output: ipakcb + obs_type: ZDG + dtype: double + shape: + - nbound + simtomvr: + type: array + readonly: true + set_in: cq + description: Flow diverted to the Water Mover for each boundary. + budget: ZDG-TO-MVR + output: ipakcb + dtype: double + shape: + - nbound + naux: + readonly: true + set_in: ar + description: Number of auxiliary variables. + type: integer + auxname_cst: + type: array + readonly: true + set_in: ar + description: Names of auxiliary variables. + dtype: string + shape: + - naux diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json new file mode 100644 index 00000000..e9702b95 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.json @@ -0,0 +1,81 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-ats", + "parent": "sim-nam", + "subtype": "utility", + "dims": { + "maxats": { + "value": "maxats", + "scope": "simulation" + } + }, + "blocks": { + "dimensions": { + "fields": { + "maxats": { + "type": "integer", + "longname": "number of ATS periods", + "description": "is the number of records in the subsequent perioddata block that will be used for adaptive time stepping.", + "default": 1 + } + } + }, + "perioddata": { + "fields": { + "perioddata": { + "type": "list", + "longname": "stress period ats time information", + "item": { + "type": "record", + "fields": { + "iperats": { + "type": "integer", + "longname": "stress period indicator", + "description": "is the period number to apply the adaptive time stepping. Adaptive time stepping is only activated for those periods with a corresponding iperats entry in the perioddata block. The remaining ATS values on this line will apply to period iperats. iperats must be greater than zero. A warning is printed if iperats is greater than nper.", + "tagged": false + }, + "dt0": { + "type": "double", + "longname": "initial time step length", + "description": "is the initial time step length for period iperats. If dt0 is zero, then the final step from the previous stress period will be used as the initial time step. The program will terminate with an error message if dt0 is negative.", + "tagged": false + }, + "dtmin": { + "type": "double", + "longname": "minimum time step length", + "description": "is the minimum time step length for this period. This value must be greater than zero and less than dtmax. dtmin must be a small value in order to ensure that simulation times end at the end of stress periods and the end of the simulation. A small value, such as 1.e-5, is recommended.", + "tagged": false + }, + "dtmax": { + "type": "double", + "longname": "maximum time step length", + "description": "is the maximum time step length for this period. This value must be greater than dtmin.", + "tagged": false + }, + "dtadj": { + "type": "double", + "longname": "time step multiplier factor", + "description": "is the time step multiplier factor for this period. If the number of outer solver iterations are less than the product of the maximum number of outer iterations (OUTER_MAXIMUM) and ATS_OUTER_MAXIMUM_FRACTION (an optional variable in the IMS input file with a default value of 1/3), then the time step length is multiplied by dtadj. If the number of outer solver iterations are greater than the product of the maximum number of outer iterations and 1.0 minus ATS_OUTER_MAXIMUM_FRACTION, then the time step length is divided by dtadj. dtadj must be zero, one, or greater than one. If dtadj is zero or one, then it has no effect on the simulation. A value between 2.0 and 5.0 can be used as an initial estimate.", + "tagged": false + }, + "dtfailadj": { + "type": "double", + "longname": "divisor for failed time steps", + "description": "is the divisor of the time step length when a time step fails to converge. If there is solver failure, then the time step will be tried again with a shorter time step length calculated as the previous time step length divided by dtfailadj. dtfailadj must be zero, one, or greater than one. If dtfailadj is zero or one, then time steps will not be retried with shorter lengths. In this case, the program will terminate with an error, or it will continue of the CONTINUE option is set in the simulation name file. Initial tests with this variable should be set to 5.0 or larger to determine if convergence can be achieved.", + "tagged": false + } + } + } + } + } + } + }, + "memory": { + "maxats": { + "set_in": "ar", + "source": "maxats", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml new file mode 100644 index 00000000..23f21c65 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.toml @@ -0,0 +1,63 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-ats" +parent = "sim-nam" +subtype = "utility" + +[dims.maxats] +value = "maxats" +scope = "simulation" + +[blocks.dimensions.fields.maxats] +type = "integer" +longname = "number of ATS periods" +description = "is the number of records in the subsequent perioddata block that will be used for adaptive time stepping." +default = 1 + +[blocks.perioddata.fields.perioddata] +type = "list" +longname = "stress period ats time information" + +[blocks.perioddata.fields.perioddata.item] +type = "record" + +[blocks.perioddata.fields.perioddata.item.fields.iperats] +type = "integer" +longname = "stress period indicator" +description = "is the period number to apply the adaptive time stepping. Adaptive time stepping is only activated for those periods with a corresponding iperats entry in the perioddata block. The remaining ATS values on this line will apply to period iperats. iperats must be greater than zero. A warning is printed if iperats is greater than nper." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.dt0] +type = "double" +longname = "initial time step length" +description = "is the initial time step length for period iperats. If dt0 is zero, then the final step from the previous stress period will be used as the initial time step. The program will terminate with an error message if dt0 is negative." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.dtmin] +type = "double" +longname = "minimum time step length" +description = "is the minimum time step length for this period. This value must be greater than zero and less than dtmax. dtmin must be a small value in order to ensure that simulation times end at the end of stress periods and the end of the simulation. A small value, such as 1.e-5, is recommended." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.dtmax] +type = "double" +longname = "maximum time step length" +description = "is the maximum time step length for this period. This value must be greater than dtmin." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.dtadj] +type = "double" +longname = "time step multiplier factor" +description = "is the time step multiplier factor for this period. If the number of outer solver iterations are less than the product of the maximum number of outer iterations (OUTER_MAXIMUM) and ATS_OUTER_MAXIMUM_FRACTION (an optional variable in the IMS input file with a default value of 1/3), then the time step length is multiplied by dtadj. If the number of outer solver iterations are greater than the product of the maximum number of outer iterations and 1.0 minus ATS_OUTER_MAXIMUM_FRACTION, then the time step length is divided by dtadj. dtadj must be zero, one, or greater than one. If dtadj is zero or one, then it has no effect on the simulation. A value between 2.0 and 5.0 can be used as an initial estimate." +tagged = false + +[blocks.perioddata.fields.perioddata.item.fields.dtfailadj] +type = "double" +longname = "divisor for failed time steps" +description = "is the divisor of the time step length when a time step fails to converge. If there is solver failure, then the time step will be tried again with a shorter time step length calculated as the previous time step length divided by dtfailadj. dtfailadj must be zero, one, or greater than one. If dtfailadj is zero or one, then time steps will not be retried with shorter lengths. In this case, the program will terminate with an error, or it will continue of the CONTINUE option is set in the simulation name file. Initial tests with this variable should be set to 5.0 or larger to determine if convergence can be achieved." +tagged = false + +[memory.maxats] +set_in = "ar" +source = "maxats" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml new file mode 100644 index 00000000..ac4e6b00 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ats.yaml @@ -0,0 +1,85 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-ats +parent: sim-nam +subtype: utility +dims: + maxats: + value: maxats + scope: simulation +blocks: + dimensions: + fields: + maxats: + type: integer + longname: number of ATS periods + description: is the number of records in the subsequent perioddata block that will be used for + adaptive time stepping. + default: 1 + perioddata: + fields: + perioddata: + type: list + longname: stress period ats time information + item: + type: record + fields: + iperats: + type: integer + longname: stress period indicator + description: is the period number to apply the adaptive time stepping. Adaptive time stepping + is only activated for those periods with a corresponding iperats entry in the perioddata + block. The remaining ATS values on this line will apply to period iperats. iperats must + be greater than zero. A warning is printed if iperats is greater than nper. + tagged: false + dt0: + type: double + longname: initial time step length + description: is the initial time step length for period iperats. If dt0 is zero, then the + final step from the previous stress period will be used as the initial time step. The + program will terminate with an error message if dt0 is negative. + tagged: false + dtmin: + type: double + longname: minimum time step length + description: is the minimum time step length for this period. This value must be greater + than zero and less than dtmax. dtmin must be a small value in order to ensure that simulation + times end at the end of stress periods and the end of the simulation. A small value, + such as 1.e-5, is recommended. + tagged: false + dtmax: + type: double + longname: maximum time step length + description: is the maximum time step length for this period. This value must be greater + than dtmin. + tagged: false + dtadj: + type: double + longname: time step multiplier factor + description: is the time step multiplier factor for this period. If the number of outer + solver iterations are less than the product of the maximum number of outer iterations + (OUTER_MAXIMUM) and ATS_OUTER_MAXIMUM_FRACTION (an optional variable in the IMS input + file with a default value of 1/3), then the time step length is multiplied by dtadj. If + the number of outer solver iterations are greater than the product of the maximum number + of outer iterations and 1.0 minus ATS_OUTER_MAXIMUM_FRACTION, then the time step length + is divided by dtadj. dtadj must be zero, one, or greater than one. If dtadj is zero + or one, then it has no effect on the simulation. A value between 2.0 and 5.0 can be used + as an initial estimate. + tagged: false + dtfailadj: + type: double + longname: divisor for failed time steps + description: is the divisor of the time step length when a time step fails to converge. If + there is solver failure, then the time step will be tried again with a shorter time step + length calculated as the previous time step length divided by dtfailadj. dtfailadj must + be zero, one, or greater than one. If dtfailadj is zero or one, then time steps will + not be retried with shorter lengths. In this case, the program will terminate with an + error, or it will continue of the CONTINUE option is set in the simulation name file. Initial + tests with this variable should be set to 5.0 or larger to determine if convergence can + be achieved. + tagged: false +memory: + maxats: + set_in: ar + source: maxats + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.json new file mode 100644 index 00000000..c5bc33c4 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.json @@ -0,0 +1,53 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-hpc", + "parent": "sim-nam", + "subtype": "utility", + "blocks": { + "options": { + "fields": { + "print_table": { + "type": "keyword", + "longname": "model print table to listing file", + "description": "keyword to indicate that the partition table will be printed to the listing file.", + "optional": true + }, + "dev_log_mpi": { + "type": "keyword", + "longname": "log mpi traffic", + "description": "keyword to enable (extremely verbose) logging of mpi traffic to file.", + "optional": true + } + } + }, + "partitions": { + "fields": { + "partitions": { + "type": "list", + "longname": "list of partition numbers", + "description": "is the list of zero-based partition numbers.", + "optional": true, + "item": { + "type": "record", + "description": "is the record of zero-based partition numbers.", + "fields": { + "mname": { + "type": "string", + "longname": "model name", + "description": "is the unique model name.", + "tagged": false + }, + "mrank": { + "type": "integer", + "longname": "model rank", + "description": "is the zero-based partition number (also: MPI rank or processor id) to which the model will be assigned.", + "tagged": false + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.toml new file mode 100644 index 00000000..1195be06 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.toml @@ -0,0 +1,39 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-hpc" +parent = "sim-nam" +subtype = "utility" + +[blocks.options.fields.print_table] +type = "keyword" +longname = "model print table to listing file" +description = "keyword to indicate that the partition table will be printed to the listing file." +optional = true + +[blocks.options.fields.dev_log_mpi] +type = "keyword" +longname = "log mpi traffic" +description = "keyword to enable (extremely verbose) logging of mpi traffic to file." +optional = true + +[blocks.partitions.fields.partitions] +type = "list" +longname = "list of partition numbers" +description = "is the list of zero-based partition numbers." +optional = true + +[blocks.partitions.fields.partitions.item] +type = "record" +description = "is the record of zero-based partition numbers." + +[blocks.partitions.fields.partitions.item.fields.mname] +type = "string" +longname = "model name" +description = "is the unique model name." +tagged = false + +[blocks.partitions.fields.partitions.item.fields.mrank] +type = "integer" +longname = "model rank" +description = "is the zero-based partition number (also: MPI rank or processor id) to which the model will be assigned." +tagged = false diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.yaml new file mode 100644 index 00000000..35064c66 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-hpc.yaml @@ -0,0 +1,40 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-hpc +parent: sim-nam +subtype: utility +blocks: + options: + fields: + print_table: + type: keyword + longname: model print table to listing file + description: keyword to indicate that the partition table will be printed to the listing file. + optional: true + dev_log_mpi: + type: keyword + longname: log mpi traffic + description: keyword to enable (extremely verbose) logging of mpi traffic to file. + optional: true + partitions: + fields: + partitions: + type: list + longname: list of partition numbers + description: is the list of zero-based partition numbers. + optional: true + item: + type: record + description: is the record of zero-based partition numbers. + fields: + mname: + type: string + longname: model name + description: is the unique model name. + tagged: false + mrank: + type: integer + longname: model rank + description: 'is the zero-based partition number (also: MPI rank or processor id) to which + the model will be assigned.' + tagged: false diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.json new file mode 100644 index 00000000..2a7d793b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.json @@ -0,0 +1,86 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-laktab", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "dims": { + "nrow": { + "value": "nrow", + "scope": "simulation" + }, + "ncol": { + "value": "ncol", + "scope": "simulation" + } + }, + "blocks": { + "dimensions": { + "fields": { + "nrow": { + "type": "integer", + "longname": "number of table rows", + "description": "integer value specifying the number of rows in the lake table. There must be NROW rows of data in the TABLE block." + }, + "ncol": { + "type": "integer", + "longname": "number of table columns", + "description": "integer value specifying the number of columns in the lake table. There must be NCOL columns of data in the TABLE block. For lakes with HORIZONTAL and/or VERTICAL CTYPE connections, NCOL must be equal to 3. For lakes with EMBEDDEDH or EMBEDDEDV CTYPE connections, NCOL must be equal to 4." + } + } + }, + "table": { + "fields": { + "table": { + "type": "list", + "item": { + "type": "record", + "fields": { + "stage": { + "type": "double", + "longname": "lake stage", + "description": "real value that defines the stage corresponding to the remaining data on the line.", + "tagged": false + }, + "volume": { + "type": "double", + "longname": "lake volume", + "description": "real value that defines the lake volume corresponding to the stage specified on the line.", + "tagged": false + }, + "sarea": { + "type": "double", + "longname": "lake surface area", + "description": "real value that defines the lake surface area corresponding to the stage specified on the line.", + "tagged": false + }, + "barea": { + "type": "double", + "longname": "lake-GWF exchange area", + "description": "real value that defines the lake-GWF exchange area corresponding to the stage specified on the line. BAREA is only specified if the CLAKTYPE for the lake is EMBEDDEDH or EMBEDDEDV.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nrow" + ] + } + } + } + }, + "memory": { + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.toml new file mode 100644 index 00000000..52ac6aa9 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.toml @@ -0,0 +1,68 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-laktab" +parent = "sim-nam" +multi = true +subtype = "utility" + +[dims.nrow] +value = "nrow" +scope = "simulation" + +[dims.ncol] +value = "ncol" +scope = "simulation" + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of table rows" +description = "integer value specifying the number of rows in the lake table. There must be NROW rows of data in the TABLE block." + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of table columns" +description = "integer value specifying the number of columns in the lake table. There must be NCOL columns of data in the TABLE block. For lakes with HORIZONTAL and/or VERTICAL CTYPE connections, NCOL must be equal to 3. For lakes with EMBEDDEDH or EMBEDDEDV CTYPE connections, NCOL must be equal to 4." + +[blocks.table.fields.table] +type = "list" +shape = [ + "nrow", +] + +[blocks.table.fields.table.item] +type = "record" + +[blocks.table.fields.table.item.fields.stage] +type = "double" +longname = "lake stage" +description = "real value that defines the stage corresponding to the remaining data on the line." +tagged = false + +[blocks.table.fields.table.item.fields.volume] +type = "double" +longname = "lake volume" +description = "real value that defines the lake volume corresponding to the stage specified on the line." +tagged = false + +[blocks.table.fields.table.item.fields.sarea] +type = "double" +longname = "lake surface area" +description = "real value that defines the lake surface area corresponding to the stage specified on the line." +tagged = false + +[blocks.table.fields.table.item.fields.barea] +type = "double" +longname = "lake-GWF exchange area" +description = "real value that defines the lake-GWF exchange area corresponding to the stage specified on the line. BAREA is only specified if the CLAKTYPE for the lake is EMBEDDEDH or EMBEDDEDV." +optional = true +tagged = false + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.yaml new file mode 100644 index 00000000..98115b17 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-laktab.yaml @@ -0,0 +1,72 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-laktab +parent: sim-nam +multi: true +subtype: utility +dims: + nrow: + value: nrow + scope: simulation + ncol: + value: ncol + scope: simulation +blocks: + dimensions: + fields: + nrow: + type: integer + longname: number of table rows + description: integer value specifying the number of rows in the lake table. There must be NROW + rows of data in the TABLE block. + ncol: + type: integer + longname: number of table columns + description: integer value specifying the number of columns in the lake table. There must be NCOL + columns of data in the TABLE block. For lakes with HORIZONTAL and/or VERTICAL CTYPE connections, + NCOL must be equal to 3. For lakes with EMBEDDEDH or EMBEDDEDV CTYPE connections, NCOL must + be equal to 4. + table: + fields: + table: + type: list + item: + type: record + fields: + stage: + type: double + longname: lake stage + description: real value that defines the stage corresponding to the remaining data on the + line. + tagged: false + volume: + type: double + longname: lake volume + description: real value that defines the lake volume corresponding to the stage specified + on the line. + tagged: false + sarea: + type: double + longname: lake surface area + description: real value that defines the lake surface area corresponding to the stage specified + on the line. + tagged: false + barea: + type: double + longname: lake-GWF exchange area + description: real value that defines the lake-GWF exchange area corresponding to the stage + specified on the line. BAREA is only specified if the CLAKTYPE for the lake is EMBEDDEDH + or EMBEDDEDV. + optional: true + tagged: false + shape: + - nrow +memory: + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.json new file mode 100644 index 00000000..972098f3 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.json @@ -0,0 +1,135 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-ncf", + "parent": "sim-nam", + "subtype": "utility", + "dims": { + "ncpl": { + "value": "ncpl", + "scope": "simulation" + } + }, + "blocks": { + "options": { + "fields": { + "wkt": { + "type": "string", + "longname": "CRS well-known text (WKT) string", + "description": "is the coordinate reference system (CRS) well-known text (WKT) string. Ignored if latitude and longitude griddata arrays have been provided for NETCDF_STRUCTURED export type.", + "optional": true + }, + "deflate": { + "type": "integer", + "longname": "variable compression deflate level", + "description": "is the variable deflate level (0=min, 9=max) in the NetCDF file. Defining this parameter activates per-variable compression at the level specified.", + "optional": true + }, + "shuffle": { + "type": "keyword", + "description": "is the keyword used to turn on the NetCDF variable shuffle filter when the deflate option is also set. The shuffle filter has the effect of storing the first byte of all of a variable's values in a chunk contiguously, followed by all the second bytes, etc. This can be an optimization for compression with certain types of data.", + "optional": true + }, + "chunk_time": { + "type": "integer", + "longname": "chunking parameter for the time dimension", + "description": "is the keyword used to provide a data chunk size for the time dimension in a NETCDF_MESH2D or NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_face parameter (NETCDF_MESH2D) or the chunk_z, chunk_y, and chunk_x parameter set (NETCDF_STRUCTURED) to have an effect.", + "optional": true + }, + "chunk_face": { + "type": "integer", + "longname": "chunking parameter for the mesh face dimension", + "description": "is the keyword used to provide a data chunk size for the face dimension in a NETCDF_MESH2D output file. Must be used in combination with the the chunk_time parameter to have an effect.", + "optional": true + }, + "chunk_z": { + "type": "integer", + "longname": "chunking parameter for structured z", + "description": "is the keyword used to provide a data chunk size for the z dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_x and chunk_y parameter set to have an effect.", + "optional": true + }, + "chunk_y": { + "type": "integer", + "longname": "chunking parameter for structured y", + "description": "is the keyword used to provide a data chunk size for the y dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_x and chunk_z parameter set to have an effect.", + "optional": true + }, + "chunk_x": { + "type": "integer", + "longname": "chunking parameter for structured x", + "description": "is the keyword used to provide a data chunk size for the x dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_y and chunk_z parameter set to have an effect.", + "optional": true + }, + "modflow6_attr_off": { + "type": "keyword", + "description": "is the keyword used to turn off internal input tagging in the model NetCDF file. Tagging adds internal modflow 6 attribute(s) to variables which facilitate identification. Currently this applies to gridded arrays.", + "optional": true + } + } + }, + "dimensions": { + "fields": { + "ncpl": { + "type": "integer", + "longname": "number of cells in layer", + "description": "is the number of cells in a projected plane layer.", + "optional": true + } + } + }, + "griddata": { + "fields": { + "latitude": { + "type": "array", + "longname": "cell center latitude", + "description": "cell center latitude. Only supported for NETCDF_STRUCTURED export type.", + "optional": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "longitude": { + "type": "array", + "longname": "cell center longitude", + "description": "cell center longitude. Only supported for NETCDF_STRUCTURED export type.", + "optional": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } + } + }, + "memory": { + "attr_off": { + "set_in": "ar", + "source": "modflow6_attr_off", + "type": "logical" + }, + "ncpl": { + "set_in": "ar", + "source": "ncpl", + "type": "integer" + }, + "latitude": { + "type": "array", + "set_in": "ar", + "source": "latitude", + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "longitude": { + "type": "array", + "set_in": "ar", + "source": "longitude", + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.toml new file mode 100644 index 00000000..b183c360 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.toml @@ -0,0 +1,115 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-ncf" +parent = "sim-nam" +subtype = "utility" + +[dims.ncpl] +value = "ncpl" +scope = "simulation" + +[blocks.options.fields.wkt] +type = "string" +longname = "CRS well-known text (WKT) string" +description = "is the coordinate reference system (CRS) well-known text (WKT) string. Ignored if latitude and longitude griddata arrays have been provided for NETCDF_STRUCTURED export type." +optional = true + +[blocks.options.fields.deflate] +type = "integer" +longname = "variable compression deflate level" +description = "is the variable deflate level (0=min, 9=max) in the NetCDF file. Defining this parameter activates per-variable compression at the level specified." +optional = true + +[blocks.options.fields.shuffle] +type = "keyword" +description = "is the keyword used to turn on the NetCDF variable shuffle filter when the deflate option is also set. The shuffle filter has the effect of storing the first byte of all of a variable's values in a chunk contiguously, followed by all the second bytes, etc. This can be an optimization for compression with certain types of data." +optional = true + +[blocks.options.fields.chunk_time] +type = "integer" +longname = "chunking parameter for the time dimension" +description = "is the keyword used to provide a data chunk size for the time dimension in a NETCDF_MESH2D or NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_face parameter (NETCDF_MESH2D) or the chunk_z, chunk_y, and chunk_x parameter set (NETCDF_STRUCTURED) to have an effect." +optional = true + +[blocks.options.fields.chunk_face] +type = "integer" +longname = "chunking parameter for the mesh face dimension" +description = "is the keyword used to provide a data chunk size for the face dimension in a NETCDF_MESH2D output file. Must be used in combination with the the chunk_time parameter to have an effect." +optional = true + +[blocks.options.fields.chunk_z] +type = "integer" +longname = "chunking parameter for structured z" +description = "is the keyword used to provide a data chunk size for the z dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_x and chunk_y parameter set to have an effect." +optional = true + +[blocks.options.fields.chunk_y] +type = "integer" +longname = "chunking parameter for structured y" +description = "is the keyword used to provide a data chunk size for the y dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_x and chunk_z parameter set to have an effect." +optional = true + +[blocks.options.fields.chunk_x] +type = "integer" +longname = "chunking parameter for structured x" +description = "is the keyword used to provide a data chunk size for the x dimension in a NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_time, chunk_y and chunk_z parameter set to have an effect." +optional = true + +[blocks.options.fields.modflow6_attr_off] +type = "keyword" +description = "is the keyword used to turn off internal input tagging in the model NetCDF file. Tagging adds internal modflow 6 attribute(s) to variables which facilitate identification. Currently this applies to gridded arrays." +optional = true + +[blocks.dimensions.fields.ncpl] +type = "integer" +longname = "number of cells in layer" +description = "is the number of cells in a projected plane layer." +optional = true + +[blocks.griddata.fields.latitude] +type = "array" +longname = "cell center latitude" +description = "cell center latitude. Only supported for NETCDF_STRUCTURED export type." +optional = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.griddata.fields.longitude] +type = "array" +longname = "cell center longitude" +description = "cell center longitude. Only supported for NETCDF_STRUCTURED export type." +optional = true +dtype = "double" +shape = [ + "ncpl", +] + +[memory.attr_off] +set_in = "ar" +source = "modflow6_attr_off" +type = "logical" + +[memory.ncpl] +set_in = "ar" +source = "ncpl" +type = "integer" + +[memory.latitude] +type = "array" +set_in = "ar" +source = "latitude" +dtype = "double" +shape = [ + "ncpl", +] + +[memory.longitude] +type = "array" +set_in = "ar" +source = "longitude" +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.yaml new file mode 100644 index 00000000..ce2f92dc --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ncf.yaml @@ -0,0 +1,120 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-ncf +parent: sim-nam +subtype: utility +dims: + ncpl: + value: ncpl + scope: simulation +blocks: + options: + fields: + wkt: + type: string + longname: CRS well-known text (WKT) string + description: is the coordinate reference system (CRS) well-known text (WKT) string. Ignored if + latitude and longitude griddata arrays have been provided for NETCDF_STRUCTURED export type. + optional: true + deflate: + type: integer + longname: variable compression deflate level + description: is the variable deflate level (0=min, 9=max) in the NetCDF file. Defining this parameter + activates per-variable compression at the level specified. + optional: true + shuffle: + type: keyword + description: is the keyword used to turn on the NetCDF variable shuffle filter when the deflate + option is also set. The shuffle filter has the effect of storing the first byte of all of a + variable's values in a chunk contiguously, followed by all the second bytes, etc. This can be + an optimization for compression with certain types of data. + optional: true + chunk_time: + type: integer + longname: chunking parameter for the time dimension + description: is the keyword used to provide a data chunk size for the time dimension in a NETCDF_MESH2D + or NETCDF_STRUCTURED output file. Must be used in combination with the the chunk_face parameter + (NETCDF_MESH2D) or the chunk_z, chunk_y, and chunk_x parameter set (NETCDF_STRUCTURED) to have + an effect. + optional: true + chunk_face: + type: integer + longname: chunking parameter for the mesh face dimension + description: is the keyword used to provide a data chunk size for the face dimension in a NETCDF_MESH2D + output file. Must be used in combination with the the chunk_time parameter to have an effect. + optional: true + chunk_z: + type: integer + longname: chunking parameter for structured z + description: is the keyword used to provide a data chunk size for the z dimension in a NETCDF_STRUCTURED + output file. Must be used in combination with the the chunk_time, chunk_x and chunk_y parameter + set to have an effect. + optional: true + chunk_y: + type: integer + longname: chunking parameter for structured y + description: is the keyword used to provide a data chunk size for the y dimension in a NETCDF_STRUCTURED + output file. Must be used in combination with the the chunk_time, chunk_x and chunk_z parameter + set to have an effect. + optional: true + chunk_x: + type: integer + longname: chunking parameter for structured x + description: is the keyword used to provide a data chunk size for the x dimension in a NETCDF_STRUCTURED + output file. Must be used in combination with the the chunk_time, chunk_y and chunk_z parameter + set to have an effect. + optional: true + modflow6_attr_off: + type: keyword + description: is the keyword used to turn off internal input tagging in the model NetCDF file. + Tagging adds internal modflow 6 attribute(s) to variables which facilitate identification. Currently + this applies to gridded arrays. + optional: true + dimensions: + fields: + ncpl: + type: integer + longname: number of cells in layer + description: is the number of cells in a projected plane layer. + optional: true + griddata: + fields: + latitude: + type: array + longname: cell center latitude + description: cell center latitude. Only supported for NETCDF_STRUCTURED export type. + optional: true + dtype: double + shape: + - ncpl + longitude: + type: array + longname: cell center longitude + description: cell center longitude. Only supported for NETCDF_STRUCTURED export type. + optional: true + dtype: double + shape: + - ncpl +memory: + attr_off: + set_in: ar + source: modflow6_attr_off + type: logical + ncpl: + set_in: ar + source: ncpl + type: integer + latitude: + type: array + set_in: ar + source: latitude + dtype: double + shape: + - ncpl + longitude: + type: array + set_in: ar + source: longitude + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.json new file mode 100644 index 00000000..da25e3be --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.json @@ -0,0 +1,62 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-obs", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "blocks": { + "options": { + "fields": { + "digits": { + "type": "integer", + "description": "Keyword and an integer digits specifier used for conversion of simulated values to text on output. If not specified, the default is the maximum number of digits stored in the program (as written with the G0 Fortran specifier). When simulated values are written to a comma-separated value text file specified in a CONTINUOUS block below, the digits specifier controls the number of significant digits with which simulated values are written to the output file. The digits specifier has no effect on the number of significant digits with which the simulation time is written for continuous observations. If DIGITS is specified as zero, then observations are written with the default setting, which is the maximum number of digits.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of observation information will be written to the listing file immediately after it is read.", + "optional": true + } + } + }, + "continuous": { + "fields": { + "continuous": { + "type": "list", + "item": { + "type": "record", + "fields": { + "obsname": { + "type": "string", + "longname": "observation name", + "description": "string of 1 to 40 nonblank characters used to identify the observation. The identifier need not be unique; however, identification and post-processing of observations in the output files are facilitated if each observation is given a unique name.", + "tagged": false + }, + "obstype": { + "type": "string", + "longname": "observation type", + "description": "a string of characters used to identify the observation type.", + "tagged": false + }, + "id": { + "type": "string", + "longname": "time", + "description": "Text identifying cell where observation is located. For packages other than NPF, if boundary names are defined in the corresponding package input file, ID can be a boundary name. Otherwise ID is a cellid. If the model discretization is type DIS, cellid is three integers (layer, row, column). If the discretization is DISV, cellid is two integers (layer, cell number). If the discretization is DISU, cellid is one integer (node number).", + "tagged": false + }, + "id2": { + "type": "string", + "longname": "time", + "description": "Text identifying cell adjacent to cell identified by ID. The form of ID2 is as described for ID. ID2 is used for intercell-flow observations of a GWF model, for three observation types of the LAK Package, for two observation types of the MAW Package, and one observation type of the UZF Package.", + "optional": true, + "tagged": false + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.toml new file mode 100644 index 00000000..cf2e3cb2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.toml @@ -0,0 +1,48 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-obs" +parent = "sim-nam" +multi = true +subtype = "utility" + +[blocks.options.fields.digits] +type = "integer" +description = "Keyword and an integer digits specifier used for conversion of simulated values to text on output. If not specified, the default is the maximum number of digits stored in the program (as written with the G0 Fortran specifier). When simulated values are written to a comma-separated value text file specified in a CONTINUOUS block below, the digits specifier controls the number of significant digits with which simulated values are written to the output file. The digits specifier has no effect on the number of significant digits with which the simulation time is written for continuous observations. If DIGITS is specified as zero, then observations are written with the default setting, which is the maximum number of digits." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of observation information will be written to the listing file immediately after it is read." +optional = true + +[blocks.continuous.fields.continuous] +type = "list" + +[blocks.continuous.fields.continuous.item] +type = "record" + +[blocks.continuous.fields.continuous.item.fields.obsname] +type = "string" +longname = "observation name" +description = "string of 1 to 40 nonblank characters used to identify the observation. The identifier need not be unique; however, identification and post-processing of observations in the output files are facilitated if each observation is given a unique name." +tagged = false + +[blocks.continuous.fields.continuous.item.fields.obstype] +type = "string" +longname = "observation type" +description = "a string of characters used to identify the observation type." +tagged = false + +[blocks.continuous.fields.continuous.item.fields.id] +type = "string" +longname = "time" +description = "Text identifying cell where observation is located. For packages other than NPF, if boundary names are defined in the corresponding package input file, ID can be a boundary name. Otherwise ID is a cellid. If the model discretization is type DIS, cellid is three integers (layer, row, column). If the discretization is DISV, cellid is two integers (layer, cell number). If the discretization is DISU, cellid is one integer (node number)." +tagged = false + +[blocks.continuous.fields.continuous.item.fields.id2] +type = "string" +longname = "time" +description = "Text identifying cell adjacent to cell identified by ID. The form of ID2 is as described for ID. ID2 is used for intercell-flow observations of a GWF model, for three observation types of the LAK Package, for two observation types of the MAW Package, and one observation type of the UZF Package." +optional = true +tagged = false diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.yaml new file mode 100644 index 00000000..86732207 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-obs.yaml @@ -0,0 +1,63 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-obs +parent: sim-nam +multi: true +subtype: utility +blocks: + options: + fields: + digits: + type: integer + description: Keyword and an integer digits specifier used for conversion of simulated values to + text on output. If not specified, the default is the maximum number of digits stored in the + program (as written with the G0 Fortran specifier). When simulated values are written to a comma-separated + value text file specified in a CONTINUOUS block below, the digits specifier controls the number + of significant digits with which simulated values are written to the output file. The digits + specifier has no effect on the number of significant digits with which the simulation time is + written for continuous observations. If DIGITS is specified as zero, then observations are + written with the default setting, which is the maximum number of digits. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of observation information will be written to the + listing file immediately after it is read. + optional: true + continuous: + fields: + continuous: + type: list + item: + type: record + fields: + obsname: + type: string + longname: observation name + description: string of 1 to 40 nonblank characters used to identify the observation. The + identifier need not be unique; however, identification and post-processing of observations + in the output files are facilitated if each observation is given a unique name. + tagged: false + obstype: + type: string + longname: observation type + description: a string of characters used to identify the observation type. + tagged: false + id: + type: string + longname: time + description: Text identifying cell where observation is located. For packages other than + NPF, if boundary names are defined in the corresponding package input file, ID can be + a boundary name. Otherwise ID is a cellid. If the model discretization is type DIS, cellid + is three integers (layer, row, column). If the discretization is DISV, cellid is two integers + (layer, cell number). If the discretization is DISU, cellid is one integer (node number). + tagged: false + id2: + type: string + longname: time + description: Text identifying cell adjacent to cell identified by ID. The form of ID2 is + as described for ID. ID2 is used for intercell-flow observations of a GWF model, for three + observation types of the LAK Package, for two observation types of the MAW Package, and + one observation type of the UZF Package. + optional: true + tagged: false diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.json new file mode 100644 index 00000000..55765955 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.json @@ -0,0 +1,80 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-sfrtab", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "dims": { + "nrow": { + "value": "nrow", + "scope": "simulation" + }, + "ncol": { + "value": "ncol", + "scope": "simulation" + } + }, + "blocks": { + "dimensions": { + "fields": { + "nrow": { + "type": "integer", + "longname": "number of table rows", + "description": "integer value specifying the number of rows in the reach cross-section table. There must be NROW rows of data in the TABLE block." + }, + "ncol": { + "type": "integer", + "longname": "number of table columns", + "description": "integer value specifying the number of columns in the reach cross-section table. There must be NCOL columns of data in the TABLE block. NCOL must be equal to 2 if MANFRACTION is not specified or 3 otherwise." + } + } + }, + "table": { + "fields": { + "table": { + "type": "list", + "item": { + "type": "record", + "fields": { + "xfraction": { + "type": "double", + "longname": "fractional width", + "description": "real value that defines the station (x) data for the cross-section as a fraction of the width (RWID) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (RWID).", + "tagged": false + }, + "height": { + "type": "double", + "longname": "depth", + "description": "real value that is the height relative to the top of the lowest elevation of the streambed (RTP) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero.", + "tagged": false + }, + "manfraction": { + "type": "double", + "longname": "Manning's roughness coefficient", + "description": "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MAN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line. Although a MANFRACTION value is specified on the last line, any value greater than zero can be applied to MANFRACTION(NROW). MANFRACTION is only specified if NCOL is 3. If MANFRACTION is not specified, the Manning's roughness coefficient for the reach (MAN) is applied to the entire cross-section.", + "optional": true, + "tagged": false + } + } + }, + "shape": [ + "nrow" + ] + } + } + } + }, + "memory": { + "nrow": { + "set_in": "ar", + "source": "nrow", + "type": "integer" + }, + "ncol": { + "set_in": "ar", + "source": "ncol", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.toml new file mode 100644 index 00000000..642d9be6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.toml @@ -0,0 +1,62 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-sfrtab" +parent = "sim-nam" +multi = true +subtype = "utility" + +[dims.nrow] +value = "nrow" +scope = "simulation" + +[dims.ncol] +value = "ncol" +scope = "simulation" + +[blocks.dimensions.fields.nrow] +type = "integer" +longname = "number of table rows" +description = "integer value specifying the number of rows in the reach cross-section table. There must be NROW rows of data in the TABLE block." + +[blocks.dimensions.fields.ncol] +type = "integer" +longname = "number of table columns" +description = "integer value specifying the number of columns in the reach cross-section table. There must be NCOL columns of data in the TABLE block. NCOL must be equal to 2 if MANFRACTION is not specified or 3 otherwise." + +[blocks.table.fields.table] +type = "list" +shape = [ + "nrow", +] + +[blocks.table.fields.table.item] +type = "record" + +[blocks.table.fields.table.item.fields.xfraction] +type = "double" +longname = "fractional width" +description = "real value that defines the station (x) data for the cross-section as a fraction of the width (RWID) of the reach. XFRACTION must be greater than or equal to zero but can be greater than one. XFRACTION values can be used to decrease or increase the width of a reach from the specified reach width (RWID)." +tagged = false + +[blocks.table.fields.table.item.fields.height] +type = "double" +longname = "depth" +description = "real value that is the height relative to the top of the lowest elevation of the streambed (RTP) and corresponding to the station data on the same line. HEIGHT must be greater than or equal to zero and at least one cross-section height must be equal to zero." +tagged = false + +[blocks.table.fields.table.item.fields.manfraction] +type = "double" +longname = "Manning's roughness coefficient" +description = "real value that defines the Manning's roughness coefficient data for the cross-section as a fraction of the Manning's roughness coefficient for the reach (MAN) and corresponding to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION is applied from the XFRACTION value on the same line to the XFRACTION value on the next line. Although a MANFRACTION value is specified on the last line, any value greater than zero can be applied to MANFRACTION(NROW). MANFRACTION is only specified if NCOL is 3. If MANFRACTION is not specified, the Manning's roughness coefficient for the reach (MAN) is applied to the entire cross-section." +optional = true +tagged = false + +[memory.nrow] +set_in = "ar" +source = "nrow" +type = "integer" + +[memory.ncol] +set_in = "ar" +source = "ncol" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.yaml new file mode 100644 index 00000000..0dd17736 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-sfrtab.yaml @@ -0,0 +1,74 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-sfrtab +parent: sim-nam +multi: true +subtype: utility +dims: + nrow: + value: nrow + scope: simulation + ncol: + value: ncol + scope: simulation +blocks: + dimensions: + fields: + nrow: + type: integer + longname: number of table rows + description: integer value specifying the number of rows in the reach cross-section table. There + must be NROW rows of data in the TABLE block. + ncol: + type: integer + longname: number of table columns + description: integer value specifying the number of columns in the reach cross-section table. + There must be NCOL columns of data in the TABLE block. NCOL must be equal to 2 if MANFRACTION + is not specified or 3 otherwise. + table: + fields: + table: + type: list + item: + type: record + fields: + xfraction: + type: double + longname: fractional width + description: real value that defines the station (x) data for the cross-section as a fraction + of the width (RWID) of the reach. XFRACTION must be greater than or equal to zero but + can be greater than one. XFRACTION values can be used to decrease or increase the width + of a reach from the specified reach width (RWID). + tagged: false + height: + type: double + longname: depth + description: real value that is the height relative to the top of the lowest elevation of + the streambed (RTP) and corresponding to the station data on the same line. HEIGHT must + be greater than or equal to zero and at least one cross-section height must be equal to + zero. + tagged: false + manfraction: + type: double + longname: Manning's roughness coefficient + description: real value that defines the Manning's roughness coefficient data for the cross-section + as a fraction of the Manning's roughness coefficient for the reach (MAN) and corresponding + to the station data on the same line. MANFRACTION must be greater than zero. MANFRACTION + is applied from the XFRACTION value on the same line to the XFRACTION value on the next + line. Although a MANFRACTION value is specified on the last line, any value greater than + zero can be applied to MANFRACTION(NROW). MANFRACTION is only specified if NCOL is 3. + If MANFRACTION is not specified, the Manning's roughness coefficient for the reach (MAN) + is applied to the entire cross-section. + optional: true + tagged: false + shape: + - nrow +memory: + nrow: + set_in: ar + source: nrow + type: integer + ncol: + set_in: ar + source: ncol + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json new file mode 100644 index 00000000..ae4de176 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.json @@ -0,0 +1,93 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-spc", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "dims": { + "maxbound": { + "value": "maxbound", + "scope": "simulation" + } + }, + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of spc information will be written to the listing file immediately after it is read.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + } + } + }, + "dimensions": { + "fields": { + "maxbound": { + "type": "integer", + "longname": "maximum number of ssm entries", + "description": "integer value specifying the maximum number of spc cells that will be specified for use during any stress period." + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "bndno": { + "type": "integer", + "longname": "bound number for this entry", + "description": "integer value that defines the boundary package feature number associated with the specified PERIOD data on the line. BNDNO must be greater than zero and less than or equal to MAXBOUND.", + "tagged": false + }, + "spcsetting": { + "type": "union", + "description": "line of information that is parsed into a keyword and values. Keyword values that can be used to start the SPCSETTING string include: CONCENTRATION and TEMPERATURE.", + "arms": { + "concentration": { + "type": "double", + "longname": "boundary concentration", + "description": "is the boundary concentration. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the CONCENTRATION for each boundary feature is zero.", + "time_series": true + }, + "temperature": { + "type": "double", + "longname": "boundary temperature", + "description": "is the user-supplied boundary temperature. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the TEMPERATURE for each boundary feature is zero.", + "time_series": true + } + } + } + } + }, + "shape": [ + "maxbound" + ] + } + } + } + }, + "memory": { + "maxbound": { + "set_in": "ar", + "source": "maxbound", + "type": "integer" + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml new file mode 100644 index 00000000..692cea15 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.toml @@ -0,0 +1,67 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-spc" +parent = "sim-nam" +multi = true +subtype = "utility" + +[dims.maxbound] +value = "maxbound" +scope = "simulation" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of spc information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.dimensions.fields.maxbound] +type = "integer" +longname = "maximum number of ssm entries" +description = "integer value specifying the maximum number of spc cells that will be specified for use during any stress period." + +[blocks.period.fields.perioddata] +type = "list" +shape = [ + "maxbound", +] + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.bndno] +type = "integer" +longname = "bound number for this entry" +description = "integer value that defines the boundary package feature number associated with the specified PERIOD data on the line. BNDNO must be greater than zero and less than or equal to MAXBOUND." +tagged = false + +[blocks.period.fields.perioddata.item.fields.spcsetting] +type = "union" +description = "line of information that is parsed into a keyword and values. Keyword values that can be used to start the SPCSETTING string include: CONCENTRATION and TEMPERATURE." + +[blocks.period.fields.perioddata.item.fields.spcsetting.arms.concentration] +type = "double" +longname = "boundary concentration" +description = "is the boundary concentration. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the CONCENTRATION for each boundary feature is zero." +time_series = true + +[blocks.period.fields.perioddata.item.fields.spcsetting.arms.temperature] +type = "double" +longname = "boundary temperature" +description = "is the user-supplied boundary temperature. If the Options block includes a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value. By default, the TEMPERATURE for each boundary feature is zero." +time_series = true + +[memory.maxbound] +set_in = "ar" +source = "maxbound" +type = "integer" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml new file mode 100644 index 00000000..970c37ee --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spc.yaml @@ -0,0 +1,77 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-spc +parent: sim-nam +multi: true +subtype: utility +dims: + maxbound: + value: maxbound + scope: simulation +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of spc information will be written to the listing + file immediately after it is read. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + dimensions: + fields: + maxbound: + type: integer + longname: maximum number of ssm entries + description: integer value specifying the maximum number of spc cells that will be specified for + use during any stress period. + period: + fields: + perioddata: + type: list + item: + type: record + fields: + bndno: + type: integer + longname: bound number for this entry + description: integer value that defines the boundary package feature number associated with + the specified PERIOD data on the line. BNDNO must be greater than zero and less than or + equal to MAXBOUND. + tagged: false + spcsetting: + type: union + description: 'line of information that is parsed into a keyword and values. Keyword values + that can be used to start the SPCSETTING string include: CONCENTRATION and TEMPERATURE.' + arms: + concentration: + type: double + longname: boundary concentration + description: is the boundary concentration. If the Options block includes a TIMESERIESFILE + entry (see the 'Time-Variable Input' section), values can be obtained from a time + series by entering the time-series name in place of a numeric value. By default, the + CONCENTRATION for each boundary feature is zero. + time_series: true + temperature: + type: double + longname: boundary temperature + description: is the user-supplied boundary temperature. If the Options block includes + a TIMESERIESFILE entry (see the 'Time-Variable Input' section), values can be obtained + from a time series by entering the time-series name in place of a numeric value. By + default, the TEMPERATURE for each boundary feature is zero. + time_series: true + shape: + - maxbound +memory: + maxbound: + set_in: ar + source: maxbound + type: integer diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.json new file mode 100644 index 00000000..f2bf1b0b --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.json @@ -0,0 +1,62 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-spca", + "parent": "package", + "multi": true, + "subtype": "utility", + "blocks": { + "options": { + "fields": { + "readasarrays": { + "type": "keyword", + "longname": "use array-based input", + "description": "indicates that array-based input will be used for the SPC Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results.", + "default": "true" + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that the list of spc information will be written to the listing file immediately after it is read.", + "optional": true + }, + "tas_filerecord": { + "type": "record", + "optional": true, + "fields": { + "tas6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-array-series file.", + "mode": "filein" + } + } + } + } + }, + "period": { + "fields": { + "concentration": { + "type": "array", + "longname": "concentration", + "description": "is the concentration of the associated Recharge or Evapotranspiration stress package. The concentration array may be defined by a time-array series (see the \"Using Time-Array Series in a Package\" section).", + "optional": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + }, + "temperature": { + "type": "array", + "longname": "temperature", + "description": "is the temperature of the associated Recharge or Evapotranspiration stress package. The temperature array may be defined by a time-array series (see the \"Using Time-Array Series in a Package\" section).", + "optional": true, + "dtype": "double", + "shape": [ + "ncpl" + ] + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.toml new file mode 100644 index 00000000..1e17366d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.toml @@ -0,0 +1,48 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-spca" +parent = "package" +multi = true +subtype = "utility" + +[blocks.options.fields.readasarrays] +type = "keyword" +longname = "use array-based input" +description = "indicates that array-based input will be used for the SPC Package. This keyword must be specified to use array-based input. When READASARRAYS is specified, values must be provided for every cell within a model layer, even those cells that have an IDOMAIN value less than one. Values assigned to cells with IDOMAIN values less than one are not used and have no effect on simulation results." +default = "true" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that the list of spc information will be written to the listing file immediately after it is read." +optional = true + +[blocks.options.fields.tas_filerecord] +type = "record" +optional = true + +[blocks.options.fields.tas_filerecord.fields.tas6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-array-series file." +mode = "filein" + +[blocks.period.fields.concentration] +type = "array" +longname = "concentration" +description = "is the concentration of the associated Recharge or Evapotranspiration stress package. The concentration array may be defined by a time-array series (see the \"Using Time-Array Series in a Package\" section)." +optional = true +dtype = "double" +shape = [ + "ncpl", +] + +[blocks.period.fields.temperature] +type = "array" +longname = "temperature" +description = "is the temperature of the associated Recharge or Evapotranspiration stress package. The temperature array may be defined by a time-array series (see the \"Using Time-Array Series in a Package\" section)." +optional = true +dtype = "double" +shape = [ + "ncpl", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.yaml new file mode 100644 index 00000000..a33d1d7d --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-spca.yaml @@ -0,0 +1,55 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-spca +parent: package +multi: true +subtype: utility +blocks: + options: + fields: + readasarrays: + type: keyword + longname: use array-based input + description: indicates that array-based input will be used for the SPC Package. This keyword + must be specified to use array-based input. When READASARRAYS is specified, values must be + provided for every cell within a model layer, even those cells that have an IDOMAIN value less + than one. Values assigned to cells with IDOMAIN values less than one are not used and have + no effect on simulation results. + default: 'true' + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that the list of spc information will be written to the listing + file immediately after it is read. + optional: true + tas_filerecord: + type: record + optional: true + fields: + tas6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-array-series file. + mode: filein + period: + fields: + concentration: + type: array + longname: concentration + description: is the concentration of the associated Recharge or Evapotranspiration stress package. The + concentration array may be defined by a time-array series (see the "Using Time-Array Series + in a Package" section). + optional: true + dtype: double + shape: + - ncpl + temperature: + type: array + longname: temperature + description: is the temperature of the associated Recharge or Evapotranspiration stress package. The + temperature array may be defined by a time-array series (see the "Using Time-Array Series in + a Package" section). + optional: true + dtype: double + shape: + - ncpl diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.json new file mode 100644 index 00000000..3d7a99ab --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.json @@ -0,0 +1,83 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-tas", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "dims": { + "time_series_name": { + "value": "len(time_series_name)" + } + }, + "blocks": { + "attributes": { + "fields": { + "time_series_namerecord": { + "type": "record", + "description": "xxx", + "fields": { + "name": { + "type": "keyword", + "description": "xxx" + }, + "time_series_name": { + "type": "array", + "description": "Name by which a package references a particular time-array series. The name must be unique among all time-array series used in a package.", + "dtype": "string" + } + } + }, + "interpolation_methodrecord": { + "type": "record", + "description": "xxx", + "optional": true, + "fields": { + "method": { + "type": "keyword", + "description": " xxx" + }, + "interpolation_method": { + "type": "string", + "description": "Interpolation method, which is either STEPWISE or LINEAR.", + "tagged": false, + "valid": [ + "stepwise", + "linear", + "linearend" + ] + } + } + }, + "sfacrecord": { + "type": "record", + "description": "xxx", + "optional": true, + "fields": { + "sfac": { + "type": "keyword", + "description": " xxx" + }, + "sfacval": { + "type": "array", + "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", + "dtype": "double", + "shape": [ + "time_series_name" + ] + } + } + } + } + }, + "time": { + "fields": { + "tas_array": { + "type": "array", + "description": "An array of numeric, floating-point values, or a constant value, readable by the U2DREL array-reading utility.", + "dtype": "double" + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.toml new file mode 100644 index 00000000..93f39fcf --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.toml @@ -0,0 +1,63 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-tas" +parent = "sim-nam" +multi = true +subtype = "utility" + +[dims.time_series_name] +value = "len(time_series_name)" + +[blocks.attributes.fields.time_series_namerecord] +type = "record" +description = "xxx" + +[blocks.attributes.fields.time_series_namerecord.fields.name] +type = "keyword" +description = "xxx" + +[blocks.attributes.fields.time_series_namerecord.fields.time_series_name] +type = "array" +description = "Name by which a package references a particular time-array series. The name must be unique among all time-array series used in a package." +dtype = "string" + +[blocks.attributes.fields.interpolation_methodrecord] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.interpolation_methodrecord.fields.method] +type = "keyword" +description = " xxx" + +[blocks.attributes.fields.interpolation_methodrecord.fields.interpolation_method] +type = "string" +description = "Interpolation method, which is either STEPWISE or LINEAR." +tagged = false +valid = [ + "stepwise", + "linear", + "linearend", +] + +[blocks.attributes.fields.sfacrecord] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.sfacrecord.fields.sfac] +type = "keyword" +description = " xxx" + +[blocks.attributes.fields.sfacrecord.fields.sfacval] +type = "array" +description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." +dtype = "double" +shape = [ + "time_series_name", +] + +[blocks.time.fields.tas_array] +type = "array" +description = "An array of numeric, floating-point values, or a constant value, readable by the U2DREL array-reading utility." +dtype = "double" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.yaml new file mode 100644 index 00000000..9ec4b0d7 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tas.yaml @@ -0,0 +1,62 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-tas +parent: sim-nam +multi: true +subtype: utility +dims: + time_series_name: + value: len(time_series_name) +blocks: + attributes: + fields: + time_series_namerecord: + type: record + description: xxx + fields: + name: + type: keyword + description: xxx + time_series_name: + type: array + description: Name by which a package references a particular time-array series. The name must + be unique among all time-array series used in a package. + dtype: string + interpolation_methodrecord: + type: record + description: xxx + optional: true + fields: + method: + type: keyword + description: ' xxx' + interpolation_method: + type: string + description: Interpolation method, which is either STEPWISE or LINEAR. + tagged: false + valid: + - stepwise + - linear + - linearend + sfacrecord: + type: record + description: xxx + optional: true + fields: + sfac: + type: keyword + description: ' xxx' + sfacval: + type: array + description: Scale factor, which will multiply all array values in time series. SFAC is an + optional attribute; if omitted, SFAC = 1.0. + dtype: double + shape: + - time_series_name + time: + fields: + tas_array: + type: array + description: An array of numeric, floating-point values, or a constant value, readable by the + U2DREL array-reading utility. + dtype: double diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json new file mode 100644 index 00000000..31a2c136 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.json @@ -0,0 +1,128 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-ts", + "parent": "sim-nam", + "multi": true, + "subtype": "utility", + "dims": { + "interpolation_method": { + "value": "len(interpolation_method)" + } + }, + "blocks": { + "attributes": { + "fields": { + "time_series_namerecord": { + "type": "record", + "description": "xxx", + "fields": { + "names": { + "type": "keyword", + "description": "xxx" + }, + "time_series_names": { + "type": "array", + "description": "Name by which a package references a particular time-array series. The name must be unique among all time-array series used in a package.", + "dtype": "string" + } + } + }, + "interpolation_methodrecord": { + "type": "record", + "description": "xxx", + "optional": true, + "fields": { + "methods": { + "type": "keyword", + "description": " xxx" + }, + "interpolation_method": { + "type": "array", + "description": "Interpolation method, which is either STEPWISE or LINEAR.", + "dtype": "string" + } + } + }, + "interpolation_methodrecord_single": { + "type": "record", + "description": "xxx", + "optional": true + }, + "method": { + "type": "keyword", + "description": " xxx" + }, + "interpolation_method_single": { + "type": "string", + "description": "Interpolation method, which is either STEPWISE or LINEAR.", + "tagged": false, + "valid": [ + "stepwise", + "linear", + "linearend" + ] + }, + "sfacrecord": { + "type": "record", + "description": "xxx", + "optional": true, + "fields": { + "sfacs": { + "type": "keyword", + "description": " xxx" + }, + "sfacval": { + "type": "array", + "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", + "dtype": "double" + } + } + }, + "sfacrecord_single": { + "type": "record", + "description": "xxx", + "optional": true, + "fields": { + "sfacval": { + "type": "array", + "description": "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0.", + "dtype": "double" + } + } + }, + "sfac": { + "type": "keyword", + "description": " xxx" + } + } + }, + "timeseries": { + "fields": { + "timeseries": { + "type": "list", + "description": "xxx", + "item": { + "type": "record", + "description": "xxx", + "fields": { + "ts_time": { + "type": "double", + "description": "A numeric time relative to the start of the simulation, in the time unit used in the simulation. Times must be strictly increasing.", + "tagged": false + }, + "ts_array": { + "type": "array", + "description": "A 2-D array of numeric, floating-point values, or a constant value, readable by the U2DREL array-reading utility.", + "dtype": "double", + "shape": [ + "interpolation_method" + ] + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml new file mode 100644 index 00000000..3b5ac685 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.toml @@ -0,0 +1,104 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-ts" +parent = "sim-nam" +multi = true +subtype = "utility" + +[dims.interpolation_method] +value = "len(interpolation_method)" + +[blocks.attributes.fields.time_series_namerecord] +type = "record" +description = "xxx" + +[blocks.attributes.fields.time_series_namerecord.fields.names] +type = "keyword" +description = "xxx" + +[blocks.attributes.fields.time_series_namerecord.fields.time_series_names] +type = "array" +description = "Name by which a package references a particular time-array series. The name must be unique among all time-array series used in a package." +dtype = "string" + +[blocks.attributes.fields.interpolation_methodrecord] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.interpolation_methodrecord.fields.methods] +type = "keyword" +description = " xxx" + +[blocks.attributes.fields.interpolation_methodrecord.fields.interpolation_method] +type = "array" +description = "Interpolation method, which is either STEPWISE or LINEAR." +dtype = "string" + +[blocks.attributes.fields.interpolation_methodrecord_single] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.method] +type = "keyword" +description = " xxx" + +[blocks.attributes.fields.interpolation_method_single] +type = "string" +description = "Interpolation method, which is either STEPWISE or LINEAR." +tagged = false +valid = [ + "stepwise", + "linear", + "linearend", +] + +[blocks.attributes.fields.sfacrecord] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.sfacrecord.fields.sfacs] +type = "keyword" +description = " xxx" + +[blocks.attributes.fields.sfacrecord.fields.sfacval] +type = "array" +description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." +dtype = "double" + +[blocks.attributes.fields.sfacrecord_single] +type = "record" +description = "xxx" +optional = true + +[blocks.attributes.fields.sfacrecord_single.fields.sfacval] +type = "array" +description = "Scale factor, which will multiply all array values in time series. SFAC is an optional attribute; if omitted, SFAC = 1.0." +dtype = "double" + +[blocks.attributes.fields.sfac] +type = "keyword" +description = " xxx" + +[blocks.timeseries.fields.timeseries] +type = "list" +description = "xxx" + +[blocks.timeseries.fields.timeseries.item] +type = "record" +description = "xxx" + +[blocks.timeseries.fields.timeseries.item.fields.ts_time] +type = "double" +description = "A numeric time relative to the start of the simulation, in the time unit used in the simulation. Times must be strictly increasing." +tagged = false + +[blocks.timeseries.fields.timeseries.item.fields.ts_array] +type = "array" +description = "A 2-D array of numeric, floating-point values, or a constant value, readable by the U2DREL array-reading utility." +dtype = "double" +shape = [ + "interpolation_method", +] diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml new file mode 100644 index 00000000..a0f1cbd5 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-ts.yaml @@ -0,0 +1,98 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-ts +parent: sim-nam +multi: true +subtype: utility +dims: + interpolation_method: + value: len(interpolation_method) +blocks: + attributes: + fields: + time_series_namerecord: + type: record + description: xxx + fields: + names: + type: keyword + description: xxx + time_series_names: + type: array + description: Name by which a package references a particular time-array series. The name must + be unique among all time-array series used in a package. + dtype: string + interpolation_methodrecord: + type: record + description: xxx + optional: true + fields: + methods: + type: keyword + description: ' xxx' + interpolation_method: + type: array + description: Interpolation method, which is either STEPWISE or LINEAR. + dtype: string + interpolation_methodrecord_single: + type: record + description: xxx + optional: true + method: + type: keyword + description: ' xxx' + interpolation_method_single: + type: string + description: Interpolation method, which is either STEPWISE or LINEAR. + tagged: false + valid: + - stepwise + - linear + - linearend + sfacrecord: + type: record + description: xxx + optional: true + fields: + sfacs: + type: keyword + description: ' xxx' + sfacval: + type: array + description: Scale factor, which will multiply all array values in time series. SFAC is an + optional attribute; if omitted, SFAC = 1.0. + dtype: double + sfacrecord_single: + type: record + description: xxx + optional: true + fields: + sfacval: + type: array + description: Scale factor, which will multiply all array values in time series. SFAC is an + optional attribute; if omitted, SFAC = 1.0. + dtype: double + sfac: + type: keyword + description: ' xxx' + timeseries: + fields: + timeseries: + type: list + description: xxx + item: + type: record + description: xxx + fields: + ts_time: + type: double + description: A numeric time relative to the start of the simulation, in the time unit used + in the simulation. Times must be strictly increasing. + tagged: false + ts_array: + type: array + description: A 2-D array of numeric, floating-point values, or a constant value, readable + by the U2DREL array-reading utility. + dtype: double + shape: + - interpolation_method diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.json new file mode 100644 index 00000000..796b6eb1 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.json @@ -0,0 +1,76 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-tvk", + "parent": "package", + "subtype": "utility", + "blocks": { + "options": { + "fields": { + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that information for each change to the hydraulic conductivity in a cell will be written to the model listing file.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "tvksetting": { + "type": "union", + "description": "line of information that is parsed into a property name keyword and values. Property name keywords that can be used to start the TVKSETTING string include: K, K22, and K33.", + "arms": { + "k": { + "type": "double", + "longname": "hydraulic conductivity (L/T)", + "description": "is the new value to be assigned as the cell's hydraulic conductivity from the start of the specified stress period, as per K in the NPF package. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "k22": { + "type": "double", + "longname": "hydraulic conductivity of second ellipsoid axis (L/T)", + "description": "is the new value to be assigned as the cell's hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K if the K22OVERK NPF package option is specified) from the start of the specified stress period, as per K22 in the NPF package. For an unrotated case this is the hydraulic conductivity in the y direction. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "k33": { + "type": "double", + "longname": "hydraulic conductivity of third ellipsoid axis (L/T)", + "description": "is the new value to be assigned as the cell's hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K if the K33OVERK NPF package option is specified) from the start of the specified stress period, as per K33 in the NPF package. For an unrotated case, this is the vertical hydraulic conductivity. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.toml new file mode 100644 index 00000000..19564ca6 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.toml @@ -0,0 +1,58 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-tvk" +parent = "package" +subtype = "utility" + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that information for each change to the hydraulic conductivity in a cell will be written to the model listing file." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.perioddata.item.fields.tvksetting] +type = "union" +description = "line of information that is parsed into a property name keyword and values. Property name keywords that can be used to start the TVKSETTING string include: K, K22, and K33." + +[blocks.period.fields.perioddata.item.fields.tvksetting.arms.k] +type = "double" +longname = "hydraulic conductivity (L/T)" +description = "is the new value to be assigned as the cell's hydraulic conductivity from the start of the specified stress period, as per K in the NPF package. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.tvksetting.arms.k22] +type = "double" +longname = "hydraulic conductivity of second ellipsoid axis (L/T)" +description = "is the new value to be assigned as the cell's hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K if the K22OVERK NPF package option is specified) from the start of the specified stress period, as per K22 in the NPF package. For an unrotated case this is the hydraulic conductivity in the y direction. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.tvksetting.arms.k33] +type = "double" +longname = "hydraulic conductivity of third ellipsoid axis (L/T)" +description = "is the new value to be assigned as the cell's hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K if the K33OVERK NPF package option is specified) from the start of the specified stress period, as per K33 in the NPF package. For an unrotated case, this is the vertical hydraulic conductivity. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.yaml new file mode 100644 index 00000000..e584aee2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvk.yaml @@ -0,0 +1,77 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-tvk +parent: package +subtype: utility +blocks: + options: + fields: + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that information for each change to the hydraulic conductivity + in a cell will be written to the model listing file. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + period: + fields: + perioddata: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + tvksetting: + type: union + description: 'line of information that is parsed into a property name keyword and values. Property + name keywords that can be used to start the TVKSETTING string include: K, K22, and K33.' + arms: + k: + type: double + longname: hydraulic conductivity (L/T) + description: is the new value to be assigned as the cell's hydraulic conductivity from + the start of the specified stress period, as per K in the NPF package. If the OPTIONS + block includes a TS6 entry (see the 'Time-Variable Input' section), values can be + obtained from a time series by entering the time-series name in place of a numeric + value. + time_series: true + k22: + type: double + longname: hydraulic conductivity of second ellipsoid axis (L/T) + description: is the new value to be assigned as the cell's hydraulic conductivity of + the second ellipsoid axis (or the ratio of K22/K if the K22OVERK NPF package option + is specified) from the start of the specified stress period, as per K22 in the NPF + package. For an unrotated case this is the hydraulic conductivity in the y direction. If + the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. + time_series: true + k33: + type: double + longname: hydraulic conductivity of third ellipsoid axis (L/T) + description: is the new value to be assigned as the cell's hydraulic conductivity of + the third ellipsoid axis (or the ratio of K33/K if the K33OVERK NPF package option + is specified) from the start of the specified stress period, as per K33 in the NPF + package. For an unrotated case, this is the vertical hydraulic conductivity. If + the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values + can be obtained from a time series by entering the time-series name in place of a + numeric value. + time_series: true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.json new file mode 100644 index 00000000..eb6926a2 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.json @@ -0,0 +1,76 @@ +{ + "type": "package", + "schema_version": "2.0.0.dev3", + "name": "utl-tvs", + "parent": "package", + "subtype": "utility", + "blocks": { + "options": { + "fields": { + "disable_storage_change_integration": { + "type": "keyword", + "longname": "deactivate storage change integration", + "description": "keyword that deactivates inclusion of storage derivative terms in the STO package matrix formulation. In the absence of this keyword (the default), the groundwater storage formulation will be modified to correctly adjust heads based on transient variations in stored water volumes arising from changes to SS and SY properties.", + "optional": true + }, + "print_input": { + "type": "keyword", + "longname": "print input to listing file", + "description": "keyword to indicate that information for each change to a storage property in a cell will be written to the model listing file.", + "optional": true + }, + "ts_filerecord": { + "type": "record", + "optional": true, + "fields": { + "ts6": { + "type": "file", + "longname": "head keyword", + "description": "keyword to specify that record corresponds to a time-series file.", + "mode": "filein" + } + } + } + } + }, + "period": { + "fields": { + "perioddata": { + "type": "list", + "item": { + "type": "record", + "fields": { + "cellid": { + "type": "array", + "longname": "cell identifier", + "description": "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell.", + "dtype": "integer", + "shape": [ + "ncelldim" + ] + }, + "tvssetting": { + "type": "union", + "description": "line of information that is parsed into a property name keyword and values. Property name keywords that can be used to start the TVSSETTING string include: SS and SY.", + "arms": { + "ss": { + "type": "double", + "longname": "specific storage", + "description": "is the new value to be assigned as the cell's specific storage (or storage coefficient if the STORAGECOEFFICIENT STO package option is specified) from the start of the specified stress period, as per SS in the STO package. Specific storage values must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + }, + "sy": { + "type": "double", + "longname": "specific yield", + "description": "is the new value to be assigned as the cell's specific yield from the start of the specified stress period, as per SY in the STO package. Specific yield values must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value.", + "time_series": true + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.toml new file mode 100644 index 00000000..fb9d7021 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.toml @@ -0,0 +1,58 @@ +type = "package" +schema_version = "2.0.0.dev3" +name = "utl-tvs" +parent = "package" +subtype = "utility" + +[blocks.options.fields.disable_storage_change_integration] +type = "keyword" +longname = "deactivate storage change integration" +description = "keyword that deactivates inclusion of storage derivative terms in the STO package matrix formulation. In the absence of this keyword (the default), the groundwater storage formulation will be modified to correctly adjust heads based on transient variations in stored water volumes arising from changes to SS and SY properties." +optional = true + +[blocks.options.fields.print_input] +type = "keyword" +longname = "print input to listing file" +description = "keyword to indicate that information for each change to a storage property in a cell will be written to the model listing file." +optional = true + +[blocks.options.fields.ts_filerecord] +type = "record" +optional = true + +[blocks.options.fields.ts_filerecord.fields.ts6] +type = "file" +longname = "head keyword" +description = "keyword to specify that record corresponds to a time-series file." +mode = "filein" + +[blocks.period.fields.perioddata] +type = "list" + +[blocks.period.fields.perioddata.item] +type = "record" + +[blocks.period.fields.perioddata.item.fields.cellid] +type = "array" +longname = "cell identifier" +description = "is the cell identifier, and depends on the type of grid that is used for the simulation. For a structured grid that uses the DIS input file, CELLID is the layer, row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D number. If the model uses the unstructured discretization (DISU) input file, CELLID is the node number for the cell." +dtype = "integer" +shape = [ + "ncelldim", +] + +[blocks.period.fields.perioddata.item.fields.tvssetting] +type = "union" +description = "line of information that is parsed into a property name keyword and values. Property name keywords that can be used to start the TVSSETTING string include: SS and SY." + +[blocks.period.fields.perioddata.item.fields.tvssetting.arms.ss] +type = "double" +longname = "specific storage" +description = "is the new value to be assigned as the cell's specific storage (or storage coefficient if the STORAGECOEFFICIENT STO package option is specified) from the start of the specified stress period, as per SS in the STO package. Specific storage values must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true + +[blocks.period.fields.perioddata.item.fields.tvssetting.arms.sy] +type = "double" +longname = "specific yield" +description = "is the new value to be assigned as the cell's specific yield from the start of the specified stress period, as per SY in the STO package. Specific yield values must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see the 'Time-Variable Input' section), values can be obtained from a time series by entering the time-series name in place of a numeric value." +time_series = true diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.yaml new file mode 100644 index 00000000..4659f728 --- /dev/null +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/utl-tvs.yaml @@ -0,0 +1,73 @@ +type: package +schema_version: 2.0.0.dev3 +name: utl-tvs +parent: package +subtype: utility +blocks: + options: + fields: + disable_storage_change_integration: + type: keyword + longname: deactivate storage change integration + description: keyword that deactivates inclusion of storage derivative terms in the STO package + matrix formulation. In the absence of this keyword (the default), the groundwater storage formulation + will be modified to correctly adjust heads based on transient variations in stored water volumes + arising from changes to SS and SY properties. + optional: true + print_input: + type: keyword + longname: print input to listing file + description: keyword to indicate that information for each change to a storage property in a cell + will be written to the model listing file. + optional: true + ts_filerecord: + type: record + optional: true + fields: + ts6: + type: file + longname: head keyword + description: keyword to specify that record corresponds to a time-series file. + mode: filein + period: + fields: + perioddata: + type: list + item: + type: record + fields: + cellid: + type: array + longname: cell identifier + description: is the cell identifier, and depends on the type of grid that is used for the + simulation. For a structured grid that uses the DIS input file, CELLID is the layer, + row, and column. For a grid that uses the DISV input file, CELLID is the layer and CELL2D + number. If the model uses the unstructured discretization (DISU) input file, CELLID is + the node number for the cell. + dtype: integer + shape: + - ncelldim + tvssetting: + type: union + description: 'line of information that is parsed into a property name keyword and values. Property + name keywords that can be used to start the TVSSETTING string include: SS and SY.' + arms: + ss: + type: double + longname: specific storage + description: is the new value to be assigned as the cell's specific storage (or storage + coefficient if the STORAGECOEFFICIENT STO package option is specified) from the start + of the specified stress period, as per SS in the STO package. Specific storage values + must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true + sy: + type: double + longname: specific yield + description: is the new value to be assigned as the cell's specific yield from the start + of the specified stress period, as per SY in the STO package. Specific yield values + must be greater than or equal to 0. If the OPTIONS block includes a TS6 entry (see + the 'Time-Variable Input' section), values can be obtained from a time series by entering + the time-series name in place of a numeric value. + time_series: true diff --git a/autotest/dfns/test_migrate.py b/autotest/dfns/test_migrate.py index 78c3a9cd..8a8e9514 100644 --- a/autotest/dfns/test_migrate.py +++ b/autotest/dfns/test_migrate.py @@ -58,6 +58,14 @@ def dev2(request, dfn_dir, module_tmpdir): return out, fmt +@pytest.fixture(scope="module", params=FORMATS) +def dev3(request, dfn_dir, module_tmpdir): + fmt = request.param + out = module_tmpdir / f"dev3-{fmt}" + migrate(dfn_dir, out, schema_version="2.0.0.dev3", fmt=fmt) + return out, fmt + + def test_migrate_v2_0_0_dev0(dev0, snapshot): out, fmt = dev0 files = sorted(out.glob(f"*.{fmt}")) @@ -89,3 +97,14 @@ def test_migrate_v2_0_0_dev2(dev2, snapshot): assert data["name"] == p.stem assert data["schema_version"] == "2.0.0.dev2" assert snapshot(name=p.stem) == p.read_text() + + +def test_migrate_v2_0_0_dev3(dev3, snapshot): + out, fmt = dev3 + files = sorted(out.glob(f"*.{fmt}")) + assert files + for p in files: + data = _load(p, fmt) + assert data["name"] == p.stem + assert data["schema_version"] == "2.0.0.dev3" + assert snapshot(name=p.stem) == p.read_text() diff --git a/autotest/dfns/test_schema.py b/autotest/dfns/test_schema.py index 15339555..0734874e 100644 --- a/autotest/dfns/test_schema.py +++ b/autotest/dfns/test_schema.py @@ -1,11 +1,14 @@ """Basic tests for the DFN schema""" +from pathlib import Path + import pytest from modflow_devtools.dfns import Dfns from modflow_devtools.dfns.schema import ( Block, Integer, + MemoryScalar, Model, Package, Simulation, @@ -61,7 +64,7 @@ def _pkg(name: str, blocks=None, dims=None, parent=None, **kw) -> Package: def test_schema_version(): pkg = _pkg("gwf-chd") spec = Dfns(components={"gwf-chd": pkg}) - assert spec.schema_version == "2.0.0.dev2" # default + assert spec.schema_version == "2.0.0.dev3" # default pkg = Package(name="gwf-chd", schema_version="2.0.0.dev2") spec = Dfns(components={"gwf-chd": pkg}) @@ -227,3 +230,181 @@ def test_component_fields_loaded(dfn_dir): assert name == field.name # fields from all blocks are present (nlay is in dimensions, not options) assert "nlay" in fields + + +def test_memory_phase_permissions_fc_readonly_ok(): + pkg = _pkg("gwf-npf", memory={"hcof": MemoryScalar(type="double", set_in="fc", readonly=True)}) + Dfns(components={"gwf-npf": pkg}) # must not raise + + +def test_memory_phase_permissions_cq_readonly_ok(): + pkg = _pkg( + "gwf-wel", memory={"simvals": MemoryScalar(type="double", set_in="cq", readonly=True)} + ) + Dfns(components={"gwf-wel": pkg}) # must not raise + + +def test_memory_phase_permissions_fc_not_readonly_raises(): + pkg = _pkg("gwf-npf", memory={"hcof": MemoryScalar(type="double", set_in="fc", readonly=False)}) + with pytest.raises(Exception, match="readonly"): + Dfns(components={"gwf-npf": pkg}) + + +def test_memory_phase_permissions_cq_not_readonly_raises(): + pkg = _pkg( + "gwf-wel", memory={"simvals": MemoryScalar(type="double", set_in="cq", readonly=False)} + ) + with pytest.raises(Exception, match="readonly"): + Dfns(components={"gwf-wel": pkg}) + + +def test_memory_phase_permissions_list_with_fc_raises(): + pkg = _pkg( + "gwf-npf", memory={"sat": MemoryScalar(type="double", set_in=["ar", "fc"], readonly=False)} + ) + with pytest.raises(Exception, match="readonly"): + Dfns(components={"gwf-npf": pkg}) + + +def test_memory_phase_coherence_derived_with_ad_ok(): + pkg = _pkg( + "gwf-npf", + memory={ + "k11": MemoryScalar(type="double", set_in="ar"), + "condsat": MemoryScalar(type="double", set_in=["ar", "ad"], source=["k11"]), + }, + ) + Dfns(components={"gwf-npf": pkg}) + + +def test_memory_phase_coherence_derived_ar_only_raises(): + pkg = _pkg( + "gwf-npf", + memory={ + "k11": MemoryScalar(type="double", set_in="ar"), + "condsat": MemoryScalar(type="double", set_in="ar", source=["k11"]), + }, + ) + with pytest.raises(Exception, match="advance-phase"): + Dfns(components={"gwf-npf": pkg}) + + +def test_memory_phase_coherence_derived_rp_only_raises(): + pkg = _pkg( + "gwf-wel", + memory={ + "bound": MemoryScalar(type="double", set_in="rp"), + "derived": MemoryScalar(type="double", set_in="rp", source=["bound"]), + }, + ) + with pytest.raises(Exception, match="advance-phase"): + Dfns(components={"gwf-wel": pkg}) + + +def test_memory_phase_coherence_non_derived_ar_ok(): + pkg = _pkg("gwf-npf", memory={"k11": MemoryScalar(type="double", set_in="ar")}) + Dfns(components={"gwf-npf": pkg}) + + +def test_memory_output_bool_ok(): + pkg = _pkg( + "gwf-npf", + memory={"flowja": MemoryScalar(type="double", set_in="cq", readonly=True, output=True)}, + ) + Dfns(components={"gwf-npf": pkg}) # must not raise + + +def test_memory_output_string_integer_gate_ok(): + # output may reference an integer flag (e.g. ipakcb), not just a logical + pkg = _pkg( + "gwf-wel", + memory={ + "ipakcb": MemoryScalar(type="integer", set_in="ar"), + "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="ipakcb"), + }, + ) + Dfns(components={"gwf-wel": pkg}) # must not raise + + +def test_memory_output_string_logical_gate_ok(): + pkg = _pkg( + "gwf-wel", + memory={ + "save_flows": MemoryScalar(type="logical", set_in="ar"), + "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="save_flows"), + }, + ) + Dfns(components={"gwf-wel": pkg}) # must not raise + + +def test_memory_output_string_missing_raises(): + pkg = _pkg( + "gwf-wel", + memory={ + "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="ipakcb") + }, + ) + with pytest.raises(Exception, match="does not name a memory variable"): + Dfns(components={"gwf-wel": pkg}) + + +def test_memory_budget_accepted(): + pkg = _pkg( + "gwf-wel", + memory={"simvals": MemoryScalar(type="double", set_in="cq", readonly=True, budget="WEL")}, + ) + Dfns(components={"gwf-wel": pkg}) # must not raise + assert pkg.memory["simvals"].budget == "WEL" + + +def test_memory_obs_type_accepted(): + pkg = _pkg( + "gwf-wel", + memory={"simvals": MemoryScalar(type="double", set_in="cq", readonly=True, obs_type="WEL")}, + ) + Dfns(components={"gwf-wel": pkg}) # must not raise + assert pkg.memory["simvals"].obs_type == "WEL" + + +_DEV3_SNAPSHOT_DIR = Path(__file__).parent / "__snapshots__" / "v2.0.0.dev3" + + +@pytest.fixture(scope="module") +def dev3_spec(): + return Dfns.load(_DEV3_SNAPSHOT_DIR) + + +def test_memory_output_attributes_in_snapshot(dev3_spec): + """Stress package simvals must carry budget, obs_type, and output in the migrated spec.""" + wel = dev3_spec.components["gwf-wel"] + simvals = wel.memory["simvals"] + assert simvals.budget == "WEL" + assert simvals.obs_type == "WEL" + assert simvals.output == "ipakcb" + + simtomvr = wel.memory["simtomvr"] + assert simtomvr.budget == "WEL-TO-MVR" + assert simtomvr.output == "ipakcb" + assert simtomvr.obs_type is None # to-mvr flows are not observable + + +def test_memory_output_attributes_rcha(dev3_spec): + """RCHA budget term differs from its obs type (obs type is always RCH).""" + rcha = dev3_spec.components["gwf-rcha"] + simvals = rcha.memory["simvals"] + assert simvals.budget == "RCHA" + assert simvals.obs_type == "RCH" + assert simvals.output == "ipakcb" + + +def test_memory_output_attributes_chd_no_to_mvr(dev3_spec): + """CHD does not support the Water Mover provider role; simtomvr has no budget.""" + chd = dev3_spec.components["gwf-chd"] + simvals = chd.memory["simvals"] + assert simvals.budget == "CHD" + assert simvals.obs_type == "CHD" + assert simvals.output == "ipakcb" + + simtomvr = chd.memory["simtomvr"] + assert simtomvr.budget is None + assert simtomvr.output is None diff --git a/autotest/dfns/test_schema_dimensions.py b/autotest/dfns/test_schema_dimensions.py index 027f7f01..601a4c14 100644 --- a/autotest/dfns/test_schema_dimensions.py +++ b/autotest/dfns/test_schema_dimensions.py @@ -482,7 +482,7 @@ def test_local_dims(): spec2 = Dfns(components={"gwf-chd": pkg2}) assert spec2.local_dims("gwf-chd") == set() - # derived dims also included + # derived dims included pkg3 = Package( name="test", blocks=None, @@ -491,6 +491,53 @@ def test_local_dims(): spec3 = Dfns(components={"test": pkg3}) assert spec3.local_dims("test") == {"nodes"} + # runtime dims (value=None) also included + pkg4 = Package( + name="test", + blocks=None, + dims={"nja": Dim(value=None, phase="ar", scope="component")}, + ) + spec4 = Dfns(components={"test": pkg4}) + assert spec4.local_dims("test") == {"nja"} + + +def test_input_dims_excludes_runtime(): + # input_dims should include field-backed and derived dims but not runtime dims + block = _dim_block("nlay", "nrow", "ncol") + pkg = Package( + name="gwf-dis", + parent="gwf-nam", + blocks={"dimensions": block}, + dims={ + "nlay": Dim(value="nlay", scope="model"), + "nrow": Dim(value="nrow", scope="model"), + "ncol": Dim(value="ncol", scope="model"), + "nodes": Dim(value="nlay * nrow * ncol", scope="model"), + "nja": Dim(value=None, phase="ar", scope="model"), + }, + ) + spec = Dfns(components={"gwf-dis": pkg}) + assert spec.input_dims("gwf-dis") == {"nlay", "nrow", "ncol", "nodes"} + assert "nja" not in spec.input_dims("gwf-dis") + assert "nja" in spec.dims("gwf-dis") + + # an Array whose shape references a runtime dim should fail validation + runtime_shaped = Package( + name="test", + parent="gwf-nam", + blocks={ + "data": Block( + name="data", + fields={ + "vals": Array(name="vals", dtype="double", shape=["nja"]), + }, + ) + }, + dims={"nja": Dim(value=None, phase="ar", scope="component")}, + ) + with pytest.raises(ValueError, match="does not resolve to a known dim"): + Dfns(components={"test": runtime_shaped}) + def test_resolve_derived_dims(): block = _dim_block("nlay", "nrow", "ncol") diff --git a/autotest/models.toml b/autotest/models.toml new file mode 100644 index 00000000..ad18346d --- /dev/null +++ b/autotest/models.toml @@ -0,0 +1,11 @@ +schema_version = "1.0" + +[files."mf6examples.zip"] +url = "https://github.com/MODFLOW-ORG/modflow6-examples/releases/download/current/mf6examples.zip" + +[files."models.zip"] +url = "https://github.com/username/my-models/releases/download/v1.0.0/models.zip" + +[models] + +[examples] diff --git a/docs/md/dfnspec.md b/docs/md/dfnspec.md index 3a4e3c88..1f5df519 100644 --- a/docs/md/dfnspec.md +++ b/docs/md/dfnspec.md @@ -1,6 +1,6 @@ # DFN specification -This document describes the MODFLOW 6 component definition (DFN) system. This system is used to specify MODFLOW 6 components and their inputs, and reflects the MODFLOW 6 input data model as described in the MF6 IO guide. +This document describes the MODFLOW 6 component definition (DFN) system. This system is used to specify MODFLOW 6 components, including user-facing inputs and (optionally) API-accessible memory variables. - [Overview](#overview) - [Components](#components) @@ -11,6 +11,7 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [`parent`](#parent) - [`schema_version`](#schema_version) - [`dims`](#dims) + - [`memory`](#memory) - [Component types](#component-types) - [Simulation](#simulation) - [Model](#model) @@ -26,13 +27,14 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [`name`](#name-1) - [`fields`](#fields) - [`repeats`](#repeats) + - [Field ordering](#field-ordering) - [Fields](#fields-1) - [Shared attributes](#shared-attributes-1) - [`name`](#name-2) - [`type`](#type-1) - [`longname`](#longname) - [`description`](#description) - - [`optional`](#optional-1) + - [`optional`](#optional) - [`default`](#default) - [`developmode`](#developmode) - [`netcdf`](#netcdf) @@ -50,13 +52,13 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [Integer](#integer) - [Type-specific attributes](#type-specific-attributes-3) - [`valid`](#valid-1) - - [`time_series`](#time_series) + - [`time_series`](#time_series-1) - [`pk`](#pk-1) - [`fk`](#fk-1) - [`fk_ref`](#fk_ref-1) - [Double](#double) - [Type-specific attributes](#type-specific-attributes-4) - - [`time_series`](#time_series-1) + - [`time_series`](#time_series-2) - [File](#file) - [Type-specific attributes](#type-specific-attributes-5) - [`mode`](#mode) @@ -65,7 +67,7 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [Type-specific attributes](#type-specific-attributes-6) - [`dtype`](#dtype) - [`shape`](#shape) - - [`time_series`](#time_series-2) + - [`time_series`](#time_series-3) - [`repeat`](#repeat) - [Record](#record) - [Type-specific attributes](#type-specific-attributes-7) @@ -76,17 +78,30 @@ This document describes the MODFLOW 6 component definition (DFN) system. This sy - [List](#list) - [Type-specific attributes](#type-specific-attributes-9) - [`item`](#item) + - [`shape`](#shape-1) - [Dimensions](#dimensions) - [Dimension sources](#dimension-sources) - [Dimension scope](#dimension-scope) - [Primary/foreign keys](#primaryforeign-keys) - [Examples](#examples) +- [Memory catalog](#memory-catalog) + - [Attributes](#attributes-1) + - [`type`](#type-2) + - [`dtype`](#dtype-1) + - [`shape`](#shape-2) + - [`readonly`](#readonly) + - [`set_in`](#set_in) + - [`source`](#source) + - [`description`](#description-1) + - [`output`](#output) + - [`budget`](#budget) + - [`obs_type`](#obs_type) ## Overview A MODFLOW 6 simulation consists of a hierarchy of modules, each one representing some functional element, such as a grid discretization, a hydrologic process (i.e. model), or a boundary condition. -Modules are specified by **component definitions** (DFNs), each of which describes the module's general properties, its input fields, and its relationships to other modules. A module be represented by more than one component definition. A definition describes one way of representing a module; it may not be the only way. Any number of representational variants may exist, each of which reflects a certain tradeoff between properties like program runtime, memory or disk usage, and convenience. +Modules are specified by **component definitions** (DFNs), each of which describes the module's general properties, its input fields, its relationships to other modules, and (optionally) its internal memory variables. A module be represented by more than one component definition. A definition describes one way of representing a module; it may not be the only way. Any number of representational variants may exist, each of which reflects a certain tradeoff between properties like program runtime, memory or disk usage, and convenience. This document refers to **components** instead of modules to emphasize this distinction. @@ -100,6 +115,7 @@ Component definitions consist of a number of attributes: - `parent`: parent component(s) - `schema_version`: DFN schema version - `dims`: named dimensions (field-backed or derived) available for use in array shapes +- `memory`: API-accessible runtime variable definitions Components may refer to, i.e. be constrained by, other components. Cross-component constraints include parent-child relations, model-solution compatibility restrictions, and primary/foreign keys. @@ -143,6 +159,12 @@ Parent relationships are defined bottom-up with attribute `parent`: `{string: Dim} (default: {})`. Named dimensions available for use in array and list shape expressions. Each entry has a `value` expression and a `scope` that controls visibility to other components. See [Dimensions](#dimensions). +#### `memory` + +`{string: MemoryVariable} (default: {})`. The component's memory catalog. See section below. + +If a component does not provide a `memory` catalog, all memory-managed variables in the component's runtime context will be readonly by default. To allow MODFLOW API access to runtime variables, they must be defined in the `memory` catalog. + ### Component types Three component types can be distinguished: simulation, model, and package. @@ -471,7 +493,7 @@ A **non-empty `shape`** (exactly one element) names a declared dimension that bo ### Dimensions -Dimensions may be declared by a component with a `dims` map. Each entry in `dims` has a `value` expression and a `scope`: +Dimensions may be declared by a component with a `dims` map. Each entry in `dims` has a `value` expression, a `scope`, and an optional `set_in`: ```yaml dims: @@ -487,6 +509,10 @@ dims: auxiliary: value: "len(auxiliary)" # backed by self-sizing array field 'auxiliary' scope: component + nbound: + set_in: rp # runtime-only: set each stress period + njas: + set_in: ar # runtime-only: set once at grid allocation ``` Dimensions may be used in the `shape` expression of `list` and `array` fields. @@ -499,14 +525,12 @@ The `value` attribute defines the dimension source as a Python expression. Three - **`len(name)`** — backed by a self-sizing array field of that name. The dimension equals the runtime length of the array. - **Arithmetic expression** `nlay * nrow * ncol` — derived from other dims. May not use bare field names; all operands must be declared dimensions. -Shape expressions use Python-like syntax and may contain several kinds of reference, resolved in the order presented below: +If `value` is absent, the dimension is **runtime-only**: its value cannot be derived from DFN input fields. The optional `set_in` attribute then indicates when MODFLOW first establishes the value: -- **Local dimension**: an explicit or derived dimension in this component, resolved in dependency order. -- **Inherited dimension**: a dimension inherited from another component, per scoping rules (see below). -- **Record subfield**: a sibling `integer` subfield in the same record. Makes the record a variadic tuple whose width varies per row. Valid only when the array is a subfield of a record. -- **List column**: a subfield of a record which is the item type of a regular (i.e. tabular) list, in this component or another. If in another component, the name must be fully qualified (see below). Valid only when the array is a subfield of a record. +- **`"ar"`** — set once during Allocate and Read (grid allocation). The value is constant for the lifetime of the simulation. Examples: `njas` (number of cell-to-cell connections, computed from grid topology), `nodes` (total active cells, when inherited from a discretization package), `ncolbnd` (number of bound columns, fixed by package structure). +- **`"rp"`** — reset at the start of each stress period from user input. Examples: `nbound` (number of active boundary entries in the current period). -Shape expressions may also include simple integer arithmetic, e.g. `nlay + 1`, as well as constraints, e.g. `<`, `>`, `<=`, or `>=` and simple math functions like `sum()`. +Runtime dims are valid in memory variable shapes but not in input field shapes. Canonical examples of dimensions: @@ -528,8 +552,15 @@ dims: nodes: {value: "nlay * ncpl", scope: model} ncelldim: {value: "2", scope: model} + # gwf-disu: njas is expressible because nja is a user-supplied DFN field + njas: {value: "(nja - nodes) / 2"} + # any package with an auxiliary array auxiliary: {value: "len(auxiliary)"} + + # stress package runtime dims + nbound: {set_in: rp} # active BCs this period, not derivable from input + njas: {set_in: ar} # cell connections, set at grid allocation (DIS/DISV) ``` An inline array may have its size determined by an integer subfield in the same record, or if the record it is within is the item type of a list, by a column in another list. @@ -638,3 +669,81 @@ The `fk_ref` attribute names a sibling string field whose runtime value identifi | `utl-obs.continuous.id` (string arm) | — | — | `"obstype"` | **Open:** target block varies by package type; codec must handle case-by-case | | `utl-obs.continuous.id` (integer arm) | — | `"node"` | — | grid cell reference | | `gwf-wel.period.cellid` | — | `"node"` | — | grid cell reference | + +## Memory catalog + +Each component may declare a `memory` catalog describing runtime variables accessible via the MODFLOW API. Memory variables correspond to values in the MODFLOW 6 memory manager that can be read or written at runtime using hierarchical `/`-delimited memory addresses. + +The `memory` section complements the `blocks` section: `blocks` specifies user-facing input, while `memory` specifies the runtime representation. The two sections may overlap when a memory variable is loaded directly from an input field, and may diverge when a variable is derived or computed internally. + +The `memory` section documents: + +- What API-accessible variables exists for each component +- If a variable may be written with the API, or only read +- When each variable is (re)computed or overwritten by MF6 +- How a derived variable relates to contributing variables +- If a variable is an output, budget term, or observation + +The `memory` section is optional, but highly recommended. If a component definition lacks a `memory` section, all memory-managed variables are readonly by default. + +### Attributes + +#### `type` + +`"integer" | "double" | "string" | "logical" | "array"`. Required. The memory variable's data type. + +#### `dtype` + +`string`. An array's data type. Must be one of the scalar types: `"integer" | "double" | "string" | "logical"`. Only meaningful/required for array variables. + +#### `shape` + +`[string] (default: [])`. The variable's shape, as a list of dimension names. An empty list means the shape is determined at runtime and is not specified in the DFN. Shape expressions follow the same syntax as array and list `shape` attributes in `blocks`, but may only reference named dimensions; expressions are not permitted. + +#### `readonly` + +`boolean (default: false)`. Indicates that this variable may only be read by API consumers, not written. When `false`, the variable may be both read and written. Structural variables, such as grid geometry, are typically `readonly = true`. Variables that influence the solution, e.g. initial or boundary conditions, are typically writable. + +#### `set_in` + +`string | [string] | null (default: null)`. Identifies the simulation framework hook(s) in which MODFLOW overwrites the variable. Answers the questions: *When I set a value with the API, will it have an effect on the simulation? If so, for how long?* While this information is not programmatically verifiable/actionable, it is critical for the user to understand how to interact with the simulation. + +A single string names the routine. A list indicates the variable may be written at more than one hook, as can occur if modification is conditional on input configuration (i.e., a variable is recomputed only when some input option is enabled). + +Allowed values: + +- `"ar"`: Allocate and Read. The variable is set once during initialisation. A value written via the API persists for the remainder of the simulation. +- `"mc"`: Map Connections. Called once during solution initialisation to map local matrix positions to the global sparse system matrix. Variables set here are structural integer arrays (e.g. `idxglo`) that are constant for the lifetime of the simulation. +- `"rp"`: Read and Prepare. The variable is overwritten at the start of each stress period. A value written via the API persists for one stress period. +- `"ad"`: Advance. The variable is overwritten at the start of each time step. A value written via the API persists for one time step. +- `"fc"`: Formulate. The variable is assembled from scratch each solver iteration (e.g. `hcof`, `rhs`). Any API write is overwritten before it can affect the solution. **Note:** a variable with `set_in = "fc"` must have `readonly = true`. +- `"ca"`: Calculate. The variable (e.g. head, `x`) is updated by the solver in each solver iteration. Writing a value between time steps provides an initial guess for the next solve; any write within the solve loop is overwritten by the next linear solve and has no effect. +- `"cq"`: Calculate Flows. The variable is computed after solution convergence. Writing to it has no effect on the solution. **Note:** a variable with `set_in = "cq"` must have `readonly = true`. + +The order of presentation above is the same as that in which the framework hooks are invoked at runtime: `"ar"` → `"mc"` → `"rp"` → `"ad"` → `"fc"` → `"ca"` → `"cq"`. + +#### `source` + +`string | [string] | null (default: null)`. Identifies the source(s) of a derived variable's. + +Allowed values: + +- A single string names an input field from which the variable is loaded directly. +- A list of strings names multiple contributing memory variables from which this variable is derived. +- Absent means the variable has no direct input or memory-variable counterpart; it is computed internally. + +#### `description` + +`string | null (default: null)`. A detailed description of the variable, including relevant usage notes for API consumers. + +#### `output` + +`boolean | string | null (default: null)`. Indicates that this is a model output variable. Registers the variable as an output to be returned by [BMI's `get_output_var_names()`](https://bmi.csdms.io/en/stable/bmi.info_funcs.html#get-output-var-names). + +#### `budget` + +`string | null (default: null)`. The budget file term name for variables that contribute to budget (e.g., `"WEL"` for `simvals` in a WEL package, `"FLOW-JA-FACE"` for `flowja`). Absent means the variable is not a budget term. Registers the variable as an output to be returned by [BMI's `get_output_var_names()`](https://bmi.csdms.io/en/stable/bmi.info_funcs.html#get-output-var-names). + +#### `obs_type` + +`string | null (default: null)`. The OBS package observation type name for variables observable through the `utl-obs` utility package (e.g., `"HEAD"` on `x`, `"WEL"` on `simvals` in the WEL package). Absent means the variable is not directly observable via OBS. Registers the variable as an output to be returned by [BMI's `get_output_var_names()`](https://bmi.csdms.io/en/stable/bmi.info_funcs.html#get-output-var-names). diff --git a/modflow_devtools/dfn/migrate_to_v2_0_0_dev0.py b/modflow_devtools/dfn/migrate_to_v2_0_0_dev0.py index aba16ba0..6870cd8e 100644 --- a/modflow_devtools/dfn/migrate_to_v2_0_0_dev0.py +++ b/modflow_devtools/dfn/migrate_to_v2_0_0_dev0.py @@ -49,6 +49,44 @@ def is_advanced_package(comments: list[str]) -> bool: return any("package-type advanced" in line for line in comments) +# Transport and surface-water stress packages that are semantically BndType subclasses +# but whose v1 DFN files lack the "# package-type stress-package" header that GWF +# stress packages carry. Listed explicitly rather than inferred from block structure. +_STRESS_PKG_NAMES = frozenset( + { + "gwt-cnc", + "gwt-src", + "gwe-ctp", + "gwe-esl", + "chf-cdb", + "chf-chd", + "chf-flw", + "chf-evp", + "chf-pcp", + "chf-zdg", + "olf-cdb", + "olf-chd", + "olf-flw", + "olf-evp", + "olf-pcp", + "olf-zdg", + "swf-cdb", + "swf-chd", + "swf-flw", + "swf-evp", + "swf-pcp", + "swf-zdg", + "prt-prp", + } +) + + +def is_stress_package(name: str, comments: list[str]) -> bool: + return ( + any("package-type stress-package" in line for line in comments) or name in _STRESS_PKG_NAMES + ) + + def is_multi_package(comments: list[str]) -> bool: return any("flopy multi-package" in line for line in comments) diff --git a/modflow_devtools/dfns/__init__.py b/modflow_devtools/dfns/__init__.py index d71c81fa..2e25a223 100644 --- a/modflow_devtools/dfns/__init__.py +++ b/modflow_devtools/dfns/__init__.py @@ -12,6 +12,7 @@ Blocks, Component, Dfns, + Dim, Double, Field, FieldBase, @@ -19,6 +20,10 @@ Integer, Keyword, List, + MemoryArray, + MemoryScalar, + MemoryVariable, + MemoryVariableBase, Model, Package, Record, @@ -47,6 +52,7 @@ "Component", "DfnRegistry", "Dfns", + "Dim", "Double", "Field", "FieldBase", @@ -56,6 +62,10 @@ "Keyword", "List", "LocalDfnRegistry", + "MemoryArray", + "MemoryScalar", + "MemoryVariable", + "MemoryVariableBase", "Model", "Package", "Record", diff --git a/modflow_devtools/dfns/migrate.py b/modflow_devtools/dfns/migrate.py index 3b8bfcf2..f09ad087 100644 --- a/modflow_devtools/dfns/migrate.py +++ b/modflow_devtools/dfns/migrate.py @@ -150,10 +150,27 @@ def migrate( dfns = Dfns.load(inpath).components for dfn_name, dfn in dfns.items(): _write(_scalars_first(_serialize_safe(dfn)), outdir / f"{dfn_name}.{fmt}", fmt) + elif schema_version == "2.0.0.dev3": + from modflow_devtools.dfn import schema as v1 + from modflow_devtools.dfns.migrate_to_v2_0_0_dev3 import to_v2_0_0_dev3 + + inpath = Path(inpath).expanduser().absolute() + common_path = inpath / "common.dfn" + common = None + if common_path.is_file(): + with common_path.open() as f: + common, _ = v1.Dfn.load_dfn(f) # type: ignore[attr-defined] + exclude = {"common", "flopy"} + dfn_paths = [p for p in sorted(inpath.glob("*.dfn")) if p.stem not in exclude] + for dfn_path in dfn_paths: + with dfn_path.open() as f: + fields, meta = v1.Dfn.load_dfn(f, common=common) # type: ignore[attr-defined] + dfn = to_v2_0_0_dev3(name=dfn_path.stem, fields=fields, meta=meta) + _write(_scalars_first(_serialize_safe(dfn)), outdir / f"{dfn_path.stem}.{fmt}", fmt) else: raise ValueError( f"Unsupported schema version {schema_version}, supported " - "schema versions are: '2.0.0.dev0', '2.0.0.dev1', '2.0.0.dev2'" + "schema versions are: '2.0.0.dev0', '2.0.0.dev1', '2.0.0.dev2', '2.0.0.dev3'" ) diff --git a/modflow_devtools/dfns/migrate_to_v2_0_0_dev2.py b/modflow_devtools/dfns/migrate_to_v2_0_0_dev2.py index 3fed5376..d476ed0a 100644 --- a/modflow_devtools/dfns/migrate_to_v2_0_0_dev2.py +++ b/modflow_devtools/dfns/migrate_to_v2_0_0_dev2.py @@ -696,7 +696,11 @@ def infer_parent(name: str, fields: OMD) -> str | None: def to_v2_0_0_dev2(name: str, fields: OMD, meta: list[str]) -> v2.Component: """Map a component definition from the raw v1 schema to 2.0.0.dev2.""" - from modflow_devtools.dfn.migrate_to_v2_0_0_dev0 import is_advanced_package, is_multi_package + from modflow_devtools.dfn.migrate_to_v2_0_0_dev0 import ( + is_advanced_package, + is_multi_package, + is_stress_package, + ) parent = infer_parent(name, fields) @@ -1077,13 +1081,13 @@ def _subfield_map() -> dict: elif name.startswith("utl-"): subtype = "utility" else: - is_stress_pkg = bool(any(blocks) and any("period" in k for k in blocks)) # Transport-side advanced packages (gwt-lkt, gwe-lke, etc.) pair with a # GWF advanced package via flow_package_name but lack the v1 # "package-type advanced-stress-package" header. is_advanced = is_advanced_package(meta) or any( f["name"] == "flow_package_name" for f in fields.values(multi=True) ) + is_stress_pkg = is_stress_package(name, meta) subtype = "advanced" if is_advanced else "stress" if is_stress_pkg else None pkg = v2.Package(**d, subtype=subtype, multi=is_multi_package(meta)) if name == "prt-fmi": diff --git a/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py b/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py new file mode 100644 index 00000000..02c72574 --- /dev/null +++ b/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py @@ -0,0 +1,1234 @@ +"""Migrate MODFLOW 6 DFN files from v1 format to schema version 2.0.0.dev3. + +2.0.0.dev3 differs from dev2 mainly in the addition of a ``memory`` section +to each component, documenting runtime API-accessible variables. These are +derived from three sources: + + 1. ``mf6internal`` annotations in v1 fields, which map input field names to + IDM/simulation variable names. Option keywords become ``logical`` memory + variables marked ``readonly = true``. + + 2. Griddata and packagedata fields without ``mf6internal``, for which the + memory variable name matches the DFN field name (the dominant convention + in the MF6 codebase). + + 3. Standard variables for all boundary (i.e. stress) packages (``NBOUND``, + ``NODELIST``, ``BOUND``, ``HCOF``, ``RHS``, ``SIMVALS``, etc.), with BOUND + column names derived from the period block field order. + +Package-specific variables that are not captured by the above (e.g. ``k → k11``, +``condsat``, ``area``) are hardcoded and override any entry with the same name. +""" + +from typing import Literal + +from boltons.dictutils import OMD + +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.misc import try_parse_bool + +# --------------------------------------------------------------------------- +# dtype translation +# --------------------------------------------------------------------------- + +_DTYPE_MAP: dict[str, Literal["integer", "double", "string", "logical"]] = { + "keyword": "logical", + "integer": "integer", + "double": "double", + "double precision": "double", + "string": "string", +} + +# Keyword-derived mf6internal variables that are i-prefixed (which normally +# signals integer(I4B) in the Fortran source) but are actually logical(LGP) +# because they live only in IDM found-struct fields, not in package memory. +_LOGICAL_KEYWORD_EXCEPTIONS = frozenset({"icubicsfac", "icompress", "imbalancecorrect"}) + +# Block types whose fields are loaded into simulation memory at AR time and +# whose names conventionally match the Fortran memory variable name. +_GRIDDATA_LIKE = frozenset({"griddata", "packagedata", "dimensions"}) + +# Field types to skip when deriving same-name memory variables from griddata / +# packagedata blocks. Keywords are boolean flags handled via mf6internal; +# record/recarray/keystring are composite types without a direct memory path. +_SKIP_FIELD_TYPES = frozenset({"keyword", "record", "recarray", "keystring"}) + +# Period-block item fields that do not map to BOUND columns. +_BOUND_SKIP = frozenset({"cellid", "aux", "auxiliary", "boundname"}) + +# Packages whose packagedata field names differ from Fortran memory variable +# names (handled instead via _EXTRA_MEMORY). +_SKIP_PACKAGEDATA_SAME_NAME = frozenset({"sfr"}) + +# Per-package griddata field names to exclude from the same-name convention +# (Step 3) because they are renamed or replaced by _EXTRA_MEMORY entries. +_SKIP_SAME_NAME_GRIDDATA: dict[str, frozenset[str]] = { + "npf": frozenset({"k"}), # k → k11 via _EXTRA_MEMORY; no memory path named K +} + +# Packages excluded from the generic BoundaryPackage stress template because +# their runtime memory structure differs fundamentally from BoundaryPackage. +# HFB modifies intercell conductance rather than contributing standard boundary +# flows (no SIMVALS, no SIMTOMVR, NODELIST is 2 x nbound via nodesrc/nodedst). +# MVR redistributes flows between packages and has no BoundaryPackage lineage. +_SKIP_STRESS_TEMPLATE = frozenset({"hfb", "mvr"}) + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _parse_shape(shape_str: str) -> list[str]: + """Parse a v1 shape string into a list of dimension name strings.""" + if not shape_str: + return [] + s = shape_str.strip() + if s.startswith("(") and s.endswith(")"): + s = s[1:-1] + result = [] + for part in (p.strip() for p in s.split(",") if p.strip()): + if ";" in part: + # semicolon grid-type-dependent shape — collapse to ncpl + result.append("ncpl") + elif part in ("any1d", "unknown") or part[:1] in ("<", ">"): + pass # drop unknowable or bound-annotated placeholders + else: + result.append(part) + return result + + +def _infer_hook(block: str, time_series: bool) -> Literal["ar", "rp", "ad", "fc", "cq"] | None: + if "period" in block: + return "ad" if time_series else "rp" + if block in ("options", "griddata", "packagedata", "dimensions"): + return "ar" + return None + + +def _bound_cols(component: v2.Component) -> list[str]: + """Return period-block scalar field names that map to BOUND columns.""" + for bname, block in (component.blocks or {}).items(): + if "period" not in bname: + continue + for field in block.fields.values(): + if not isinstance(field, v2.List): + continue + item = field.item + if not isinstance(item, v2.Record): + continue + return [ + n + for n, f in item.fields.items() + if n not in _BOUND_SKIP and isinstance(f, (v2.Double, v2.Integer, v2.String)) + ] + return [] + + +def _mem_var(dtype: str, shape: list[str], **kwargs) -> "v2.MemoryScalar | v2.MemoryArray": + """Construct the appropriate MemoryScalar or MemoryArray.""" + if shape: + return v2.MemoryArray(dtype=dtype, shape=shape, **kwargs) # type: ignore + return v2.MemoryScalar(type=dtype, **kwargs) # type: ignore + + +# --------------------------------------------------------------------------- +# Standard BoundaryPackage memory variables (all stress packages) +# --------------------------------------------------------------------------- + +# Per-package output metadata for stress packages: (budget_term, obs_type, to_mvr_budget | None). +# Budget terms and obs types are as declared in each package's Fortran source. +# The output gate is always `ipakcb`, derived from `mf6internal ipakcb` on `save_flows`. +# `to_mvr_budget` is None for packages that do not support the Water Mover provider role. +_STRESS_OUTPUT: dict[str, tuple[str, str, "str | None"]] = { + # GWF + "chd": ("CHD", "CHD", None), + "chdg": ("CHD", "CHD", None), + "wel": ("WEL", "WEL", "WEL-TO-MVR"), + "welg": ("WEL", "WEL", "WEL-TO-MVR"), + "drn": ("DRN", "DRN", "DRN-TO-MVR"), + "drng": ("DRN", "DRN", "DRN-TO-MVR"), + "riv": ("RIV", "RIV", "RIV-TO-MVR"), + "rivg": ("RIV", "RIV", "RIV-TO-MVR"), + "ghb": ("GHB", "GHB", "GHB-TO-MVR"), + "ghbg": ("GHB", "GHB", "GHB-TO-MVR"), + "rch": ("RCH", "RCH", None), + "rcha": ("RCHA", "RCH", None), + "evt": ("EVT", "EVT", None), + "evta": ("EVTA", "EVT", None), + # GWT + "cnc": ("CNC", "CNC", None), + "src": ("SRC", "SRC", "SRC-TO-MVR"), + # GWE + "ctp": ("CTP", "CTP", None), + "esl": ("ESL", "ESL", "ESL-TO-MVR"), + # SWF / CHF / OLF (same short names across all three model types) + "cdb": ("CDB", "CDB", "CDB-TO-MVR"), + "flw": ("FLW", "FLW", "FLW-TO-MVR"), + "evp": ("EVP", "EVP", None), + "pcp": ("PCP", "PCP", None), + "zdg": ("ZDG", "ZDG", "ZDG-TO-MVR"), + # PRT + "prp": ("PRP", "PRP", "PRP-TO-MVR"), +} + + +def _stress_pkg_memory( + bound_cols: list[str], + budget: "str | None" = None, + obs_type: "str | None" = None, + to_mvr_budget: "str | None" = None, +) -> dict[str, "v2.MemoryScalar | v2.MemoryArray"]: + col_desc = ( + "Columns (0-indexed): " + ", ".join(f"{i}: {c}" for i, c in enumerate(bound_cols)) + "." + if bound_cols + else "" + ) + return { + # ipakcb is set from the SAVE_FLOWS keyword. GWF stress packages declare + # `mf6internal ipakcb` on save_flows in the v1 DFN, so step 2 of the + # migration creates ipakcb naturally. Non-GWF stress packages lacked this + # annotation in released DFN versions, so the template provides it as a + # fallback to ensure the output gate reference in simvals is always valid. + "ipakcb": _mem_var( + "integer", + [], + set_in="ar", + source="save_flows", + description="Flag controlling whether boundary flows are written to the budget file.", + ), + "maxbound": _mem_var( + "integer", + [], + set_in="ar", + readonly=True, + description="Maximum number of boundary entries per stress period.", + ), + "nbound": _mem_var( + "integer", + [], + set_in="rp", + description="Number of active boundaries for the current stress period.", + ), + "ncolbnd": _mem_var( + "integer", [], set_in="ar", readonly=True, description="Number of columns in BOUND." + ), + "nodelist": _mem_var( + "integer", + ["nbound"], + set_in="rp", + source="cellid", + description="Reduced node number for each active boundary, derived from CELLID.", + ), + "bound": _mem_var( + "double", + ["ncolbnd", "nbound"], + set_in="rp", + description=f"Boundary data for the current stress period. {col_desc}".strip(), + ), + "hcof": _mem_var( + "double", + ["nbound"], + set_in="fc", + readonly=True, + description="Diagonal coefficient contribution to the system matrix.", + ), + "rhs": _mem_var( + "double", + ["nbound"], + set_in="fc", + readonly=True, + description="Right-hand-side contribution to the system matrix.", + ), + "simvals": _mem_var( + "double", + ["nbound"], + set_in="cq", + readonly=True, + description="Simulated boundary flow values for the current time step.", + **({"budget": budget, "obs_type": obs_type, "output": "ipakcb"} if budget else {}), + ), + "simtomvr": _mem_var( + "double", + ["nbound"], + set_in="cq", + readonly=True, + description="Flow diverted to the Water Mover for each boundary.", + **({"budget": to_mvr_budget, "output": "ipakcb"} if to_mvr_budget else {}), + ), + "naux": _mem_var( + "integer", [], set_in="ar", readonly=True, description="Number of auxiliary variables." + ), + "auxname_cst": _mem_var( + "string", + ["naux"], + set_in="ar", + readonly=True, + description="Names of auxiliary variables.", + ), + "auxvar": _mem_var( + "double", + ["naux", "nbound"], + set_in=["rp", "ad"], + source="aux", + description="Auxiliary variable values for each boundary.", + ), + } + + +# --------------------------------------------------------------------------- +# Advanced Package Transport (APT) helpers +# All APT packages (gwt-lkt/sft/mwt/uzt and gwe-lke/sfe/mwe/uze) inherit +# from tsp-apt.f90. NCV is a runtime scalar assigned from the linked flow +# package during AR and has no DFN input field counterpart; it is injected +# as a runtime dim by Step 6. +# --------------------------------------------------------------------------- + + +def _apt_common_memory( + state_var: str, +) -> "dict[str, v2.MemoryScalar | v2.MemoryArray]": + """Memory variables common to all APT packages. + + ``state_var`` is the dependent-variable label used in descriptions, + e.g. ``'concentration'`` for GWT packages or ``'temperature'`` for GWE. + """ + cap = state_var.capitalize() + return { + "ncv": _mem_var( + "integer", + [], + set_in="ar", + readonly=True, + description=( + "Number of control volumes. Assigned from the linked flow package during AR." + ), + ), + "strt": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="strt", + description=f"Starting {state_var} for each control volume.", + ), + "xnewpak": _mem_var( + "double", + ["ncv"], + set_in="ca", + description=( + f"Current {state_var} for each control volume. " + "Initialized from STRT during AR; updated by the solver at each " + "Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "xoldpak": _mem_var( + "double", + ["ncv"], + set_in="ad", + readonly=True, + description=( + f"{cap} from the end of the previous time step. " + "Copied from XNEWPAK at the start of advance (AD)." + ), + ), + "ibound": _mem_var( + "integer", + ["ncv"], + set_in="ar", + description="Boundary activity flag for each control volume.", + ), + "concfeat": _mem_var( + "double", + ["ncv"], + set_in="cq", + readonly=True, + description=( + f"Computed {state_var} for each feature. Set from XNEWPAK after solver convergence." + ), + ), + "qsto": _mem_var( + "double", + ["ncv"], + set_in="cq", + readonly=True, + description=f"Storage {state_var} flow contribution for each control volume.", + ), + } + + +# --------------------------------------------------------------------------- +# Package-specific extra memory variables +# For derived or renamed variables not covered by mf6internal or same-name +# griddata convention. Merged last so they intentionally override. +# --------------------------------------------------------------------------- + +_EXTRA_MEMORY: dict[str, dict[str, "v2.MemoryScalar | v2.MemoryArray"]] = { + # NPF: k is loaded as K11; condsat and sat are derived/computed. + "npf": { + "k11": _mem_var( + "double", + ["nodes"], + set_in=["ar", "ad"], + source="k", + description=( + "Hydraulic conductivity along the major (K11) axis. " + "Loaded from the K griddata field. " + "Used directly when XT3D is active; otherwise feeds into CONDSAT. " + "Recomputed each time step when TVK is active." + ), + ), + "condsat": _mem_var( + "double", + ["njas"], + set_in=["ar", "ad"], + source=["k11", "k22", "k33"], + description=( + "Saturated intercell conductance. " + "Computed once during AR from hydraulic conductivity and cell geometry. " + "Recomputed each time step when TVK or VSC is active. " + "Inoperative under XT3D." + ), + ), + "sat": _mem_var( + "double", + ["nodes"], + set_in="fc", + readonly=True, + description="Cell saturation (0-1). Recomputed each solver iteration.", + ), + }, + # DIS/DISV/DISU: area is computed from grid geometry, not a DFN field. + "dis": { + "area": _mem_var( + "double", + ["ncpl"], + set_in="ar", + readonly=True, + description="Horizontal cell area, computed from grid geometry.", + ), + }, + "disv": { + "area": _mem_var( + "double", + ["ncpl"], + set_in="ar", + readonly=True, + description="Horizontal cell area, computed from grid geometry.", + ), + }, + "disu": { + "area": _mem_var( + "double", + ["nodes"], + set_in="ar", + readonly=True, + description="Horizontal cell area, computed from grid geometry.", + ), + }, + # SFR: packagedata field names differ from Fortran memory variable names. + "sfr": { + "length": _mem_var( + "double", ["maxbound"], set_in="ar", source="rlen", description="Reach length (L)." + ), + "width": _mem_var( + "double", ["maxbound"], set_in="ar", source="rwid", description="Reach width (L)." + ), + "slope": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="rgrd", + description="Reach gradient (dimensionless).", + ), + "strtop": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="rtp", + description="Top elevation of the reach streambed (L).", + ), + "bthick": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="rbth", + description="Thickness of the reach streambed (L).", + ), + "hk": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="rhk", + description="Hydraulic conductivity of the reach streambed (L/T).", + ), + "rough": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="man", + description="Manning's roughness coefficient.", + ), + "nconnreach": _mem_var( + "integer", + ["maxbound"], + set_in="ar", + readonly=True, + source="ncon", + description="Number of connections for each reach.", + ), + "ustrf": _mem_var( + "double", + ["maxbound"], + set_in="ar", + source="ustrf", + description="Upstream fraction of flow for each reach.", + ), + "ndiv": _mem_var( + "integer", + ["maxbound"], + set_in="ar", + readonly=True, + source="ndv", + description="Number of diversions for each reach.", + ), + }, + # --------------------------------------------------------------------------- + # GWT Advanced Package Transport (APT) + # Confirmed from Fortran mem_allocate calls in gwt-lkt.f90, gwt-sft.f90, + # gwt-mwt.f90, gwt-uzt.f90 and their shared base class tsp-apt.f90. + # Period arrays (CONC*) have no direct DFN field counterpart because the + # period data uses a union of keyword-tagged settings; source is omitted. + # --------------------------------------------------------------------------- + "lkt": { + **_apt_common_memory("concentration"), + "concrain": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Rainfall concentration for each lake.", + ), + "concevap": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Evaporation concentration for each lake.", + ), + "concroff": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Runoff concentration for each lake.", + ), + "conciflw": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="External inflow concentration for each lake.", + ), + }, + "sft": { + **_apt_common_memory("concentration"), + "concrain": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Rainfall concentration for each reach.", + ), + "concevap": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Evaporation concentration for each reach.", + ), + "concroff": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Runoff concentration for each reach.", + ), + "conciflw": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Inflow concentration for each reach.", + ), + "vnew": _mem_var( + "double", + ["ncv"], + set_in="cq", + readonly=True, + description="Reach water volume at the end of the current time step.", + ), + "vold": _mem_var( + "double", + ["ncv"], + set_in="ad", + readonly=True, + description="Reach water volume at the start of the current time step.", + ), + }, + "mwt": { + **_apt_common_memory("concentration"), + "concrate": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Pumping-rate concentration for each multi-aquifer well.", + ), + }, + "uzt": { + **_apt_common_memory("concentration"), + "concinfl": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Infiltration concentration for each UZF cell.", + ), + "concuzet": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="ET concentration for each UZF cell.", + ), + }, + # --------------------------------------------------------------------------- + # GWE Advanced Package Transport (APT) + # Confirmed from Fortran mem_allocate calls in gwe-lke.f90, gwe-sfe.f90, + # gwe-mwe.f90, gwe-uze.f90 and their shared base class tsp-apt.f90. + # KTF and RFEATTHK are loaded from packagedata fields during AR. + # For gwe-mwe the thickness field is named FTHK (vs RBTHCND elsewhere). + # Note: the feature-state variable in memory is named CONCFEAT in all APT + # packages (including GWE), because the name is set by the tsp-apt base class. + # --------------------------------------------------------------------------- + "lke": { + **_apt_common_memory("temperature"), + "temprain": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Rainfall temperature for each lake.", + ), + "tempevap": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Evaporation temperature for each lake.", + ), + "temproff": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Runoff temperature for each lake.", + ), + "tempiflw": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="External inflow temperature for each lake.", + ), + "ktf": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="ktf", + description="Thermal conductivity of the lakebed (E/T/L/Deg).", + ), + "rfeatthk": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="rbthcnd", + description="Thickness of the lakebed conduction layer (L).", + ), + }, + "sfe": { + **_apt_common_memory("temperature"), + "temprain": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Rainfall temperature for each reach.", + ), + "tempevap": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Evaporation temperature for each reach.", + ), + "temproff": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Runoff temperature for each reach.", + ), + "tempiflw": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Inflow temperature for each reach.", + ), + "vnew": _mem_var( + "double", + ["ncv"], + set_in="cq", + readonly=True, + description="Reach water volume at the end of the current time step.", + ), + "vold": _mem_var( + "double", + ["ncv"], + set_in="ad", + readonly=True, + description="Reach water volume at the start of the current time step.", + ), + "ktf": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="ktf", + description="Thermal conductivity of the streambed (E/T/L/Deg).", + ), + "rfeatthk": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="rbthcnd", + description="Thickness of the streambed conduction layer (L).", + ), + }, + "mwe": { + **_apt_common_memory("temperature"), + "temprate": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Pumping-rate temperature for each multi-aquifer well.", + ), + "ktf": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="ktf", + description="Thermal conductivity of the well casing (E/T/L/Deg).", + ), + "rfeatthk": _mem_var( + "double", + ["ncv"], + set_in="ar", + source="fthk", + description="Thickness of the well casing conduction layer (L).", + ), + }, + "uze": { + **_apt_common_memory("temperature"), + "tempinfl": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="Infiltration temperature for each UZF cell.", + ), + "tempuzet": _mem_var( + "double", + ["ncv"], + set_in="rp", + description="ET temperature for each UZF cell.", + ), + }, + # --------------------------------------------------------------------------- + # IMS solver (sln-ims) + # Solution-level scalars live at ; linear settings (iter1, rclose, + # relax, droptol, north, iscl, iord, ipc) live at /IMSLINEAR. + # --------------------------------------------------------------------------- + "ims": { + "mxiter": _mem_var( + "integer", + [], + set_in="ar", + source="outer_maximum", + description="Maximum outer (nonlinear) iterations.", + ), + "dvclose": _mem_var( + "double", + [], + set_in="ar", + source="outer_dvclose", + description="Outer dependent-variable change closure criterion.", + ), + "theta": _mem_var( + "double", + [], + set_in="ar", + source="under_relaxation_theta", + description="Under-relaxation reduction factor (delta-bar-delta).", + ), + "akappa": _mem_var( + "double", + [], + set_in="ar", + source="under_relaxation_kappa", + description="Under-relaxation increment for the learning rate (delta-bar-delta).", + ), + "gamma": _mem_var( + "double", + [], + set_in="ar", + source="under_relaxation_gamma", + description="Under-relaxation memory factor (Cooley or delta-bar-delta).", + ), + "amomentum": _mem_var( + "double", + [], + set_in="ar", + source="under_relaxation_momentum", + description="Momentum coefficient for the under-relaxation step (delta-bar-delta).", + ), + "numtrack": _mem_var( + "integer", + [], + set_in="ar", + source="backtracking_number", + description="Maximum backtracking iterations; 0 disables backtracking.", + ), + "btol": _mem_var( + "double", + [], + set_in="ar", + source="backtracking_tolerance", + description="Residual increase tolerance that triggers backtracking.", + ), + "breduc": _mem_var( + "double", + [], + set_in="ar", + source="backtracking_reduction_factor", + description="Step-size reduction factor used during backtracking.", + ), + "res_lim": _mem_var( + "double", + [], + set_in="ar", + source="backtracking_residual_limit", + description="Residual limit below which backtracking is not performed.", + ), + "icnvg": _mem_var( + "integer", + [], + set_in="ar", + readonly=True, + description=( + "Convergence flag. 1 if the solution converged in the last solve; " + "0 otherwise. Updated after each call to the solver." + ), + ), + "ttsoln": _mem_var( + "double", + [], + set_in="ar", + readonly=True, + description="Cumulative CPU time (seconds) spent in the linear solver.", + ), + # Linear settings. + # Currently live at /IMSLINEAR in the memory manager due to + # ImsLinearSettings allocating its own sub-context. Pending MF6 fix to + # flatten these to / (see variable-specification-design.md). + "iter1": _mem_var( + "integer", + [], + set_in="ar", + source="inner_maximum", + description="Maximum inner (linear) iterations.", + ), + "rclose": _mem_var( + "double", + [], + set_in="ar", + source="inner_rclose", + description="Flow residual closure criterion for the linear solver.", + ), + "relax": _mem_var( + "double", + [], + set_in="ar", + source="relaxation_factor", + description="ILU(T) relaxation factor.", + ), + "droptol": _mem_var( + "double", + [], + set_in="ar", + source="preconditioner_drop_tolerance", + description="ILUT drop tolerance.", + ), + "north": _mem_var( + "integer", + [], + set_in="ar", + source="number_orthogonalizations", + description="Interval for explicit residual recalculation.", + ), + "iscl": _mem_var( + "integer", + [], + set_in="ar", + source="scaling_method", + description="Matrix scaling option (integer code derived from SCALING_METHOD).", + ), + "iord": _mem_var( + "integer", + [], + set_in="ar", + source="reordering_method", + description="Matrix reordering option (integer code derived from REORDERING_METHOD).", + ), + "ipc": _mem_var( + "integer", + [], + set_in="ar", + description=( + "Preconditioner type code, computed from LINEAR_ACCELERATION, " + "PRECONDITIONER_LEVELS, and PRECONDITIONER_DROP_TOLERANCE." + ), + ), + }, + # --------------------------------------------------------------------------- + # EMS solver (sln-ems) — Explicit Matrix Solver used by PRT. + # --------------------------------------------------------------------------- + "ems": { + "icnvg": _mem_var( + "integer", + [], + set_in="ar", + readonly=True, + description=( + "Convergence flag. 1 if the solution converged; 0 otherwise. " + "Updated after each call to the solver." + ), + ), + "ttsoln": _mem_var( + "double", + [], + set_in="ar", + readonly=True, + description="Cumulative CPU time (seconds) spent in the solver.", + ), + }, +} + + +# --------------------------------------------------------------------------- +# Model-level solution state variables +# --------------------------------------------------------------------------- + +# Dependent-variable description and obs_type per numerical model component. +_MODEL_X: dict[str, tuple[str, str]] = { + "gwf-nam": ( + "HEAD", + ( + "Hydraulic head for each model cell. " + "Checked in from the solution-level dependent-variable vector. " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "gwt-nam": ( + "CONCENTRATION", + ( + "Solute concentration for each model cell. " + "Checked in from the solution-level dependent-variable vector. " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "gwe-nam": ( + "TEMPERATURE", + ( + "Temperature for each model cell. " + "Checked in from the solution-level dependent-variable vector. " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "chf-nam": ( + "STAGE", + ( + "Stage for each model cell. " + "Checked in from the solution-level dependent-variable vector " + "(or directly allocated when the DFW package is absent). " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "olf-nam": ( + "STAGE", + ( + "Stage for each model cell. " + "Checked in from the solution-level dependent-variable vector " + "(or directly allocated when the DFW package is absent). " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), + "swf-nam": ( + "STAGE", + ( + "Stage for each model cell. " + "Checked in from the solution-level dependent-variable vector " + "(or directly allocated when the DFW package is absent). " + "Initialized by the IC package during AR; updated by the nonlinear " + "solver at each Picard iteration (CA). " + "API-written values serve as initial guesses and are overwritten by the solver." + ), + ), +} + +_FLOWJA_MEMORY = _mem_var( + "double", + ["nja"], + set_in="cq", + readonly=True, + budget="FLOW-JA-FACE", + description=( + "Intercell flows in compressed sparse row (CSR) order, calculated " + "after solution convergence. Diagonal entries hold the flow residual." + ), +) + +_IBOUND_MEMORY = _mem_var( + "integer", + ["nodes"], + set_in="ar", + description=( + "Cell activity flag: positive values indicate active cells, " + "zero indicates inactive (no-flow) cells. " + "Set during model initialisation; may change when Newton-Raphson " + "wet-dry logic activates or deactivates cells." + ), +) + + +def _numerical_model_memory( + obs_type: str, x_description: str +) -> dict[str, "v2.MemoryScalar | v2.MemoryArray"]: + """Return solution-state memory variables common to all numerical models.""" + return { + "x": _mem_var( + "double", ["nodes"], set_in="ca", obs_type=obs_type, description=x_description + ), + "xold": _mem_var( + "double", + ["nodes"], + set_in="ad", + readonly=True, + description=( + "Dependent variable from the end of the previous time step. " + "Copied from X at advance (AD); used to restore X if the adaptive " + "time stepping scheme retries a failed time step." + ), + ), + "flowja": _FLOWJA_MEMORY, + "rhs": _mem_var( + "double", + ["nodes"], + set_in="fc", + readonly=True, + description=( + "Right-hand-side contribution for this model, sliced from the " + "solution-level RHS vector. Rebuilt each solver iteration." + ), + ), + "ibound": _IBOUND_MEMORY, + "neq": _mem_var( + "integer", + [], + set_in="ar", + readonly=True, + description=( + "Number of equations (unknowns) for this model. " + "Equal to the number of active cells (NODES) for standard models." + ), + ), + "idxglo": _mem_var( + "integer", + ["nja"], + set_in="mc", + readonly=True, + description=( + "Maps each local CSR position to the corresponding row/column " + "index in the global solution matrix. Populated during matrix " + "connectivity (MC) and constant thereafter." + ), + ), + } + + +# Per-component (full name) extra memory, merged after _EXTRA_MEMORY. +_MODEL_MEMORY: dict[str, dict[str, "v2.MemoryScalar | v2.MemoryArray"]] = { + name: _numerical_model_memory(obs_type, desc) for name, (obs_type, desc) in _MODEL_X.items() +} +_MODEL_MEMORY["prt-nam"] = { + "flowja": _FLOWJA_MEMORY, + "ibound": _IBOUND_MEMORY, +} + + +# --------------------------------------------------------------------------- +# Main migration entry point +# --------------------------------------------------------------------------- + + +def to_v2_0_0_dev3(name: str, fields: OMD, meta: list[str]) -> v2.Component: + """Map a component definition from the raw v1 schema to 2.0.0.dev3.""" + + # Step 1: run the dev2 migration to get blocks, dims, parent, subtype, etc. + component = to_v2_0_0_dev2(name, fields, meta) + + memory: dict[str, v2.MemoryScalar | v2.MemoryArray] = {} + + # Step 2: memory variables from mf6internal annotations. + # These map DFN input field names to IDM/simulation variable names. + # Record/recarray/keystring types are skipped (intermediate structures). + # Option keywords become readonly logical variables. + for field in fields.values(multi=True): + internal = field.get("mf6internal") + if not internal: + continue + + raw_type = (field.get("type") or "").strip() + base_type = raw_type.split()[0].lower() + if base_type in ("record", "recarray", "keystring"): + continue + + dtype = _DTYPE_MAP.get(base_type) or _DTYPE_MAP.get(raw_type.lower()) + if dtype is None: + continue + + # Keyword options with i-prefix mf6internal names are declared as + # integer(I4B) in the runtime package source (not as Fortran LOGICAL), + # so they are accessible via the integer memory API path. The small + # exceptions set covers i-prefix names that only exist in IDM found + # structs (logical(LGP)) and are not redeclared as integers. + if base_type == "keyword" and internal.startswith("i"): + if internal not in _LOGICAL_KEYWORD_EXCEPTIONS: + dtype = "integer" + + block = field.get("block") or "options" + time_series = try_parse_bool(field.get("time_series"), False) + shape = _parse_shape(field.get("shape") or "") + set_in = _infer_hook(block, time_series) + + memory[internal] = _mem_var(dtype, shape, set_in=set_in, source=field["name"]) + + # Step 3: same-name memory variables from griddata/packagedata fields. + # The MF6 convention is that griddata and most packagedata array field names + # match their Fortran memory variable names directly. Fields already covered + # by mf6internal (step 2) are skipped to avoid duplicates. Keyword and + # composite types are skipped. + pkg_short = name.rsplit("-", 1)[-1] + + for field in fields.values(multi=True): + if field.get("mf6internal"): + continue + if field.get("in_record"): + continue + + block = field.get("block") or "" + if block not in _GRIDDATA_LIKE: + continue + if block == "packagedata" and pkg_short in _SKIP_PACKAGEDATA_SAME_NAME: + continue + fname = field["name"] + if fname in _SKIP_SAME_NAME_GRIDDATA.get(pkg_short, frozenset()): + continue + + raw_type = (field.get("type") or "").strip() + base_type = raw_type.split()[0].lower() + if base_type in _SKIP_FIELD_TYPES: + continue + + dtype = _DTYPE_MAP.get(base_type) or _DTYPE_MAP.get(raw_type.lower()) + if dtype is None: + continue + + shape = _parse_shape(field.get("shape") or "") + + memory[fname] = _mem_var(dtype, shape, set_in="ar", source=fname) + + # Step 4: standard BoundaryPackage memory variables for stress packages. + # The template is authoritative for these standard variables (correct shapes + # and readonly flags), so it unconditionally overwrites any mf6internal- + # derived entries for the same names. HFB and MVR are excluded because they + # do not subclass BoundaryPackage and their runtime memory differs + # fundamentally from the standard template. + if ( + isinstance(component, v2.Package) + and component.subtype == "stress" + and pkg_short not in _SKIP_STRESS_TEMPLATE + ): + cols = _bound_cols(component) + out = _STRESS_OUTPUT.get(pkg_short) + pkg_budget, pkg_obs_type, pkg_to_mvr = out if out else (None, None, None) + for vname, mv in _stress_pkg_memory( + cols, + budget=pkg_budget, + obs_type=pkg_obs_type, + to_mvr_budget=pkg_to_mvr, + ).items(): + memory[vname] = mv + + # Step 5: package-specific extras (derived / renamed variables). + # These are merged last and override any earlier entry intentionally. + for vname, mv in _EXTRA_MEMORY.get(pkg_short, {}).items(): + memory[vname] = mv + + # Step 5b: model-level solution state variables (keyed by full component name). + # Merged after _EXTRA_MEMORY so per-model entries take final precedence. + for vname, mv in _MODEL_MEMORY.get(name, {}).items(): + memory[vname] = mv + + # Step 5c: clear stale string source references. + # Some v1 field names are renamed by dev2 transforms (e.g. _collapse_sto_keywords + # replaces "steady-state"/"transient" with "storage"). The stress template also + # sets nodelist.source = "cellid" for all stress packages, including gridded + # variants that have no cellid field. Clear any source that no longer resolves. + v2_field_names = set(component.get_fields(recurse=True).keys()) + for var_name, mv in list(memory.items()): + if isinstance(mv.source, str) and mv.source not in v2_field_names: + memory[var_name] = mv.model_copy(update={"source": None}) + + # Step 6: inject dims for any shape elements used by memory variables that + # are not already declared in the component's dims section. Shape elements + # that resolve to existing dims or can be derived from fields are left alone; + # everything else is injected as a runtime dim (value=None, set_in=). + # Special cases: + # naux → derived from len(auxiliary) when that field exists + # njas (disu) → expressible as (nja - nodes) / 2 since nja is a DFN field + # nbound → set_in "rp" (reset each stress period from period input) + # all others → set_in "ar" (established at grid allocation, then constant) + existing_dims = dict(component.dims or {}) + if pkg_short == "disu" and "nja" in existing_dims and "nodes" in existing_dims: + existing_dims.setdefault("njas", v2.Dim(value="(nja - nodes) / 2")) + if memory: + all_field_names = set(component.get_fields(recurse=True).keys()) + mem_shape_dims = {elem for mv in memory.values() for elem in getattr(mv, "shape", [])} + for dim_name in sorted(mem_shape_dims - set(existing_dims.keys())): + if dim_name == "naux" and "auxiliary" in all_field_names: + existing_dims[dim_name] = v2.Dim(value="len(auxiliary)") + elif dim_name == "nbound": + existing_dims[dim_name] = v2.Dim(value=None, set_in="rp") + else: + existing_dims[dim_name] = v2.Dim(value=None, set_in="ar") + + return component.model_copy( + update={ + "schema_version": "2.0.0.dev3", + "memory": memory or None, + "dims": existing_dims or None, + } + ) diff --git a/modflow_devtools/dfns/schema.json b/modflow_devtools/dfns/schema.json index ae2b1808..4a275ede 100644 --- a/modflow_devtools/dfns/schema.json +++ b/modflow_devtools/dfns/schema.json @@ -182,9 +182,9 @@ "type": "object" }, "Dim": { - "description": "A named dimension, either backed by a field or derived from an expression.", + "description": "A named dimension backed by a field reference or derived from an expression.\n\n``value`` is a Python expression string:\n - bare identifier ``nlay`` \u2192 integer field reference\n - ``len(auxiliary)`` \u2192 self-sizing array field reference\n - anything else, e.g. ``nlay * ncol`` \u2192 derived arithmetic expression\n\nIf ``value`` is None, the dimension is runtime-only: its value cannot be\nderived from DFN input fields. ``set_in`` then indicates the simulation phase\nin which the value is first established by MODFLOW (e.g. ``\"ar\"`` for dims\nset during grid allocation, ``\"rp\"`` for dims reset each stress period).\n\nRuntime dims are valid in memory variable shapes but not in input field shapes,\nsince a sequential parser must know an array's size before reading it.", "properties": { - "field": { + "value": { "anyOf": [ { "type": "string" @@ -194,19 +194,7 @@ } ], "default": null, - "title": "Field" - }, - "expr": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Expr" + "title": "Value" }, "scope": { "default": "component", @@ -217,6 +205,27 @@ ], "title": "Scope", "type": "string" + }, + "set_in": { + "anyOf": [ + { + "enum": [ + "ar", + "mc", + "rp", + "ad", + "fc", + "ca", + "cq" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Set In" } }, "title": "Dim", @@ -633,7 +642,8 @@ "type": "boolean" }, "tagged": { - "default": true, + "const": false, + "default": false, "title": "Tagged", "type": "boolean" }, @@ -670,6 +680,280 @@ "title": "List", "type": "object" }, + "MemoryArray": { + "description": "An array (rank >= 1) runtime memory variable accessible via the MODFLOW API.", + "properties": { + "readonly": { + "default": false, + "title": "Readonly", + "type": "boolean" + }, + "set_in": { + "anyOf": [ + { + "enum": [ + "ar", + "mc", + "rp", + "ad", + "fc", + "ca", + "cq" + ], + "type": "string" + }, + { + "items": { + "enum": [ + "ar", + "mc", + "rp", + "ad", + "fc", + "ca", + "cq" + ], + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Set In" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "budget": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Budget" + }, + "output": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Output" + }, + "obs_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Obs Type" + }, + "type": { + "const": "array", + "default": "array", + "title": "Type", + "type": "string" + }, + "dtype": { + "enum": [ + "integer", + "double", + "string", + "logical" + ], + "title": "Dtype", + "type": "string" + }, + "shape": { + "default": [], + "items": { + "type": "string" + }, + "title": "Shape", + "type": "array" + } + }, + "required": [ + "dtype" + ], + "title": "MemoryArray", + "type": "object" + }, + "MemoryScalar": { + "description": "A scalar (rank-0) runtime memory variable accessible via the MODFLOW API.", + "properties": { + "readonly": { + "default": false, + "title": "Readonly", + "type": "boolean" + }, + "set_in": { + "anyOf": [ + { + "enum": [ + "ar", + "mc", + "rp", + "ad", + "fc", + "ca", + "cq" + ], + "type": "string" + }, + { + "items": { + "enum": [ + "ar", + "mc", + "rp", + "ad", + "fc", + "ca", + "cq" + ], + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Set In" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "budget": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Budget" + }, + "output": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Output" + }, + "obs_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Obs Type" + }, + "type": { + "enum": [ + "integer", + "double", + "string", + "logical" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "MemoryScalar", + "type": "object" + }, "Model": { "properties": { "schema_version": { @@ -736,6 +1020,38 @@ "default": null, "title": "Blocks" }, + "memory": { + "anyOf": [ + { + "additionalProperties": { + "discriminator": { + "mapping": { + "array": "#/$defs/MemoryArray", + "double": "#/$defs/MemoryScalar", + "integer": "#/$defs/MemoryScalar", + "logical": "#/$defs/MemoryScalar", + "string": "#/$defs/MemoryScalar" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/$defs/MemoryScalar" + }, + { + "$ref": "#/$defs/MemoryArray" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Memory" + }, "type": { "const": "model", "default": "model", @@ -759,6 +1075,18 @@ ], "default": null, "title": "Solution" + }, + "dependent_variable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Dependent Variable" } }, "required": [ @@ -833,6 +1161,38 @@ "default": null, "title": "Blocks" }, + "memory": { + "anyOf": [ + { + "additionalProperties": { + "discriminator": { + "mapping": { + "array": "#/$defs/MemoryArray", + "double": "#/$defs/MemoryScalar", + "integer": "#/$defs/MemoryScalar", + "logical": "#/$defs/MemoryScalar", + "string": "#/$defs/MemoryScalar" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/$defs/MemoryScalar" + }, + { + "$ref": "#/$defs/MemoryArray" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Memory" + }, "type": { "const": "package", "default": "package", @@ -1055,6 +1415,38 @@ "default": null, "title": "Blocks" }, + "memory": { + "anyOf": [ + { + "additionalProperties": { + "discriminator": { + "mapping": { + "array": "#/$defs/MemoryArray", + "double": "#/$defs/MemoryScalar", + "integer": "#/$defs/MemoryScalar", + "logical": "#/$defs/MemoryScalar", + "string": "#/$defs/MemoryScalar" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/$defs/MemoryScalar" + }, + { + "$ref": "#/$defs/MemoryArray" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Memory" + }, "type": { "const": "simulation", "default": "simulation", diff --git a/modflow_devtools/dfns/schema.py b/modflow_devtools/dfns/schema.py index 1fca7d34..82540bb2 100644 --- a/modflow_devtools/dfns/schema.py +++ b/modflow_devtools/dfns/schema.py @@ -17,7 +17,7 @@ Field as PydanticField, ) -CURRENT_SCHEMA_VERSION = "2.0.0.dev2" +CURRENT_SCHEMA_VERSION = "2.0.0.dev3" class FieldBase(BaseModel): @@ -336,17 +336,29 @@ def _validate_len_call(call: ast.Call, component: "ComponentBase", expr: str) -> raise ValueError(f"len() argument must be a field name in {expr!r}") +_Hook = Literal["ar", "mc", "rp", "ad", "fc", "ca", "cq"] + + class Dim(BaseModel): """A named dimension backed by a field reference or derived from an expression. - ``value`` is always a Python expression string: + ``value`` is a Python expression string: - bare identifier ``nlay`` → integer field reference - ``len(auxiliary)`` → self-sizing array field reference - anything else, e.g. ``nlay * ncol`` → derived arithmetic expression + + If ``value`` is None, the dimension is runtime-only: its value cannot be + derived from DFN input fields. ``set_in`` then indicates the simulation phase + in which the value is first established by MODFLOW (e.g. ``"ar"`` for dims + set during grid allocation, ``"rp"`` for dims reset each stress period). + + Runtime dims are valid in memory variable shapes but not in input field shapes, + since a sequential parser must know an array's size before reading it. """ - value: str + value: str | None = None scope: Literal["component", "model", "simulation"] = "component" + set_in: _Hook | None = None def _parents_as_set(parent: "str | list[str] | None") -> set[str]: @@ -398,6 +410,9 @@ def _resolve_derived_dims(component: "ComponentBase", known_dims: set[str]) -> l deps: dict[str, set[str]] = {} for name, dim_def in all_dims.items(): + if dim_def.value is None: + deps[name] = set() + continue value = dim_def.value try: tree = ast.parse(value, mode="eval") @@ -504,12 +519,57 @@ def render(self) -> str: Blocks = Mapping[str, Block] +_MemDtype = Literal["integer", "double", "string", "logical"] + + +class MemoryVariableBase(BaseModel): + readonly: bool = False + set_in: _Hook | list[_Hook] | None = None + source: str | list[str] | None = None + description: str | None = None + budget: str | None = None + output: bool | str | None = None + obs_type: str | None = None + + +class MemoryScalar(MemoryVariableBase): + """A scalar (rank-0) runtime memory variable accessible via the MODFLOW API.""" + + type: _MemDtype + + @property + def dtype(self) -> str: + return self.type + + +class MemoryArray(MemoryVariableBase): + """An array (rank >= 1) runtime memory variable accessible via the MODFLOW API.""" + + type: Literal["array"] = PydanticField(default="array", frozen=True) + dtype: _MemDtype + shape: list[str] = [] + + @model_serializer(mode="wrap") + def _serialize(self, handler: Any, info: SerializationInfo) -> dict[str, Any]: + data = handler(self) + if "type" not in data: + data = {"type": "array", **data} + return data + + +MemoryVariable = Annotated[ + MemoryScalar | MemoryArray, + PydanticField(discriminator="type"), +] + + class ComponentBase(BaseModel): schema_version: str | None = None name: str parent: str | list[str] | None = None dims: dict[str, Dim] | None = None blocks: dict[str, Block] | None = None + memory: dict[str, MemoryVariable] | None = None @model_serializer(mode="wrap") def _serialize(self, handler: Any) -> dict[str, Any]: @@ -845,7 +905,7 @@ def _validate_array_shapes( if not component.blocks: return - known_dims = spec.dims(component_name) + known_dims = spec.input_dims(component_name) def _check_list(lst: "List") -> None: for elem in lst.shape: @@ -887,6 +947,136 @@ def _check_array(arr: "Array", enclosing: "Record | None") -> None: _check_array(subfield, item) +def _validate_memory_shapes( + component: "ComponentBase", + component_name: str, + spec: "Dfns", +) -> None: + """Validate MemoryVariable shape elements against known dims. + + Every shape element must be a plain identifier (dim name). Expressions, + arithmetic, and other non-identifier forms are not allowed — MODFLOW + allocates memory arrays by scalar variable, never by expression. + """ + if not component.memory: + return + known = spec.dims(component_name) + for var_name, var in component.memory.items(): + for elem in getattr(var, "shape", []): + if not _DIM_RE.fullmatch(elem): + raise ValueError( + f"MemoryVariable {var_name!r} shape element {elem!r} " + f"must be a plain identifier (dim reference)" + ) + if elem not in known: + raise ValueError( + f"MemoryVariable {var_name!r} shape element {elem!r} " + f"is not a known dimension in {component_name!r}" + ) + + +def _validate_memory_source( + component: "ComponentBase", + component_name: str, +) -> None: + """Validate MemoryVariable source references. + + A string source must name a field in the component's blocks. + A list source must name memory variables in the same component. + """ + if not component.memory: + return + all_field_names = set(component.get_fields(recurse=True).keys()) + all_mem_names = set(component.memory.keys()) + for var_name, var in component.memory.items(): + if var.source is None: + continue + if isinstance(var.source, str): + if var.source not in all_field_names: + raise ValueError( + f"MemoryVariable {var_name!r} source {var.source!r} " + f"does not name a field in {component_name!r}" + ) + else: + for ref in var.source: + if ref not in all_mem_names: + raise ValueError( + f"MemoryVariable {var_name!r} source {ref!r} " + f"does not name a memory variable in {component_name!r}" + ) + + +def _validate_memory_phase_permissions( + component: "ComponentBase", + component_name: str, +) -> None: + """Raise if any memory variable has phase in {fc, cq} but readonly=False. + + Variables overwritten every formulate or calculate-flows step have no + legitimate write use case; they must be marked readonly. A non-readonly + fc/cq variable is a schema authoring error, not a runtime warning. + """ + if not component.memory: + return + for var_name, var in component.memory.items(): + phases = {var.set_in} if isinstance(var.set_in, str) else set(var.set_in or []) + overwritten = phases & {"fc", "cq"} + if overwritten and not var.readonly: + raise ValueError( + f"MemoryVariable {var_name!r} in {component_name!r} has " + f"phase {sorted(overwritten)} but readonly=False; variables " + f"overwritten each formulate/calculate-flows step must be readonly" + ) + + +def _validate_memory_phase_coherence( + component: "ComponentBase", + component_name: str, +) -> None: + """Raise if a derived memory variable has no phase at or after 'ad'. + + Derived variables (source is a list of other memory variables) are + recomputed via the advance-phase dispatch (model_recalc_derived_all). + If none of the variable's declared phases is 'ad' or later, the trigger + can never update it, which is incoherent. + """ + if not component.memory: + return + for var_name, var in component.memory.items(): + if not isinstance(var.source, list): + continue + if var.set_in is None: + continue + phases = {var.set_in} if isinstance(var.set_in, str) else set(var.set_in) + ad_or_later = phases & {"ad", "fc", "cq"} + if not ad_or_later: + raise ValueError( + f"MemoryVariable {var_name!r} in {component_name!r} is derived " + f"(source is a list) but has no phase at or after 'ad'; " + f"the advance-phase recompute dispatch cannot update it" + ) + + +def _validate_memory_output( + component: "ComponentBase", + component_name: str, +) -> None: + """Validate MemoryVariable output string references. + + A string output must name a memory variable in the same component. + """ + if not component.memory: + return + for var_name, var in component.memory.items(): + if not isinstance(var.output, str): + continue + if component.memory.get(var.output) is None: + raise ValueError( + f"MemoryVariable {var_name!r} output {var.output!r} " + f"does not name a memory variable in {component_name!r}" + ) + + def _inject_field_names(fields: dict) -> None: """ Recursively inject name from dict key into field dicts. @@ -941,9 +1131,17 @@ def children(self, name: str) -> "dict[str, Component]": return {n: c for n, c in self.components.items() if c.parent == name} def local_dims(self, component_name: str) -> set[str]: - """Dim names declared in this component's dims section.""" + """All dim names declared in this component's dims section, including runtime dims.""" return set((self.components[component_name].dims or {}).keys()) + def runtime_dims(self, component_name: str) -> set[str]: + """Runtime-only dim names declared locally (value=None).""" + return { + name + for name, dim in (self.components[component_name].dims or {}).items() + if dim.value is None + } + def inherited_dims(self, component_name: str) -> set[str]: """ Dim names visible to ``component_name`` from other components. @@ -973,12 +1171,44 @@ def inherited_dims(self, component_name: str) -> set[str]: inherited.add(dim_name) return inherited - def dims(self, component_name: str) -> set[str]: + def input_dims(self, component_name: str) -> set[str]: + """ + Non-runtime dim names visible to ``component_name``, valid in input field shapes. + + Excludes runtime dims (value=None): a sequential parser must know an + array's size before reading it, so input arrays may not be sized by a + dim whose value is only known at runtime. """ - Return all dim names visible to ``component_name`` for shape resolution. + local = { + name + for name, dim in (self.components[component_name].dims or {}).items() + if dim.value is not None + } + inherited: set[str] = set() + component = self.components[component_name] + req_parent = component.parent + for cname, c in self.components.items(): + if cname == component_name: + continue + for dim_name, dim in (c.dims or {}).items(): + if dim.value is None: + continue + match dim.scope: + case "simulation": + inherited.add(dim_name) + case "model": + if _can_share_model(req_parent, c.parent): + inherited.add(dim_name) + case "component": + if cname in _parents_as_set(req_parent): + inherited.add(dim_name) + return local | inherited - This is the union of the component's own declared dims (field-backed and - derived) and any dims inherited from other components via scoping rules. + def dims(self, component_name: str) -> set[str]: + """ + All dim names visible to ``component_name`` for shape resolution, + including runtime dims (value=None). Used for memory variable shape + validation. """ return self.local_dims(component_name) | self.inherited_dims(component_name) @@ -1003,6 +1233,16 @@ def _validate_relations(self) -> "Dfns": _validate_fk_fields(component, self) for name, component in self.components.items(): _validate_array_shapes(component, name, self) + for name, component in self.components.items(): + _validate_memory_shapes(component, name, self) + for name, component in self.components.items(): + _validate_memory_source(component, name) + for name, component in self.components.items(): + _validate_memory_output(component, name) + for name, component in self.components.items(): + _validate_memory_phase_permissions(component, name) + for name, component in self.components.items(): + _validate_memory_phase_coherence(component, name) return self @classmethod diff --git a/pyproject.toml b/pyproject.toml index c6b88e7e..b41d1b6e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -186,6 +186,7 @@ skip = "cliff.toml,./modflow_devtools/registry/**,./docs/_build/**,./autotest/te ignore-words-list = [ "nam", "wel", + "lke", "gage", "sav", "registr", From 29956169dd1427e8e907b180b036f69cdd35846e Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 28 Jun 2026 20:38:05 -0700 Subject: [PATCH 2/6] cleanup --- autotest/dfns/test_schema.py | 40 -------------------- modflow_devtools/dfns/schema.py | 66 ++++----------------------------- 2 files changed, 7 insertions(+), 99 deletions(-) diff --git a/autotest/dfns/test_schema.py b/autotest/dfns/test_schema.py index 0734874e..543118f2 100644 --- a/autotest/dfns/test_schema.py +++ b/autotest/dfns/test_schema.py @@ -266,46 +266,6 @@ def test_memory_phase_permissions_list_with_fc_raises(): Dfns(components={"gwf-npf": pkg}) -def test_memory_phase_coherence_derived_with_ad_ok(): - pkg = _pkg( - "gwf-npf", - memory={ - "k11": MemoryScalar(type="double", set_in="ar"), - "condsat": MemoryScalar(type="double", set_in=["ar", "ad"], source=["k11"]), - }, - ) - Dfns(components={"gwf-npf": pkg}) - - -def test_memory_phase_coherence_derived_ar_only_raises(): - pkg = _pkg( - "gwf-npf", - memory={ - "k11": MemoryScalar(type="double", set_in="ar"), - "condsat": MemoryScalar(type="double", set_in="ar", source=["k11"]), - }, - ) - with pytest.raises(Exception, match="advance-phase"): - Dfns(components={"gwf-npf": pkg}) - - -def test_memory_phase_coherence_derived_rp_only_raises(): - pkg = _pkg( - "gwf-wel", - memory={ - "bound": MemoryScalar(type="double", set_in="rp"), - "derived": MemoryScalar(type="double", set_in="rp", source=["bound"]), - }, - ) - with pytest.raises(Exception, match="advance-phase"): - Dfns(components={"gwf-wel": pkg}) - - -def test_memory_phase_coherence_non_derived_ar_ok(): - pkg = _pkg("gwf-npf", memory={"k11": MemoryScalar(type="double", set_in="ar")}) - Dfns(components={"gwf-npf": pkg}) - - def test_memory_output_bool_ok(): pkg = _pkg( "gwf-npf", diff --git a/modflow_devtools/dfns/schema.py b/modflow_devtools/dfns/schema.py index 82540bb2..773972aa 100644 --- a/modflow_devtools/dfns/schema.py +++ b/modflow_devtools/dfns/schema.py @@ -348,7 +348,7 @@ class Dim(BaseModel): - anything else, e.g. ``nlay * ncol`` → derived arithmetic expression If ``value`` is None, the dimension is runtime-only: its value cannot be - derived from DFN input fields. ``set_in`` then indicates the simulation phase + derived from DFN input fields. ``set_in`` then indicates the simulation hook in which the value is first established by MODFLOW (e.g. ``"ar"`` for dims set during grid allocation, ``"rp"`` for dims reset each stress period). @@ -1006,11 +1006,11 @@ def _validate_memory_source( ) -def _validate_memory_phase_permissions( +def _validate_memory_futility( component: "ComponentBase", component_name: str, ) -> None: - """Raise if any memory variable has phase in {fc, cq} but readonly=False. + """Raise if any memory variable is set in {fc, cq} but not readonly. Variables overwritten every formulate or calculate-flows step have no legitimate write use case; they must be marked readonly. A non-readonly @@ -1019,64 +1019,16 @@ def _validate_memory_phase_permissions( if not component.memory: return for var_name, var in component.memory.items(): - phases = {var.set_in} if isinstance(var.set_in, str) else set(var.set_in or []) - overwritten = phases & {"fc", "cq"} + hooks = {var.set_in} if isinstance(var.set_in, str) else set(var.set_in or []) + overwritten = hooks & {"fc", "cq"} if overwritten and not var.readonly: raise ValueError( f"MemoryVariable {var_name!r} in {component_name!r} has " - f"phase {sorted(overwritten)} but readonly=False; variables " + f"hook {sorted(overwritten)} but readonly=False; variables " f"overwritten each formulate/calculate-flows step must be readonly" ) -def _validate_memory_phase_coherence( - component: "ComponentBase", - component_name: str, -) -> None: - """Raise if a derived memory variable has no phase at or after 'ad'. - - Derived variables (source is a list of other memory variables) are - recomputed via the advance-phase dispatch (model_recalc_derived_all). - If none of the variable's declared phases is 'ad' or later, the trigger - can never update it, which is incoherent. - """ - if not component.memory: - return - for var_name, var in component.memory.items(): - if not isinstance(var.source, list): - continue - if var.set_in is None: - continue - phases = {var.set_in} if isinstance(var.set_in, str) else set(var.set_in) - ad_or_later = phases & {"ad", "fc", "cq"} - if not ad_or_later: - raise ValueError( - f"MemoryVariable {var_name!r} in {component_name!r} is derived " - f"(source is a list) but has no phase at or after 'ad'; " - f"the advance-phase recompute dispatch cannot update it" - ) - - -def _validate_memory_output( - component: "ComponentBase", - component_name: str, -) -> None: - """Validate MemoryVariable output string references. - - A string output must name a memory variable in the same component. - """ - if not component.memory: - return - for var_name, var in component.memory.items(): - if not isinstance(var.output, str): - continue - if component.memory.get(var.output) is None: - raise ValueError( - f"MemoryVariable {var_name!r} output {var.output!r} " - f"does not name a memory variable in {component_name!r}" - ) - - def _inject_field_names(fields: dict) -> None: """ Recursively inject name from dict key into field dicts. @@ -1238,11 +1190,7 @@ def _validate_relations(self) -> "Dfns": for name, component in self.components.items(): _validate_memory_source(component, name) for name, component in self.components.items(): - _validate_memory_output(component, name) - for name, component in self.components.items(): - _validate_memory_phase_permissions(component, name) - for name, component in self.components.items(): - _validate_memory_phase_coherence(component, name) + _validate_memory_futility(component, name) return self @classmethod From 39eaba6408e9d86a6b945dbf78e519ba5c09adfa Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 28 Jun 2026 20:39:17 -0700 Subject: [PATCH 3/6] tweak 2nd sentence --- docs/md/dfnspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/md/dfnspec.md b/docs/md/dfnspec.md index 1f5df519..513154fe 100644 --- a/docs/md/dfnspec.md +++ b/docs/md/dfnspec.md @@ -1,6 +1,6 @@ # DFN specification -This document describes the MODFLOW 6 component definition (DFN) system. This system is used to specify MODFLOW 6 components, including user-facing inputs and (optionally) API-accessible memory variables. +This document describes the MODFLOW 6 component definition (DFN) system. This system is used to specify MODFLOW 6 components, including input fields and (optionally) API-accessible runtime memory variables. - [Overview](#overview) - [Components](#components) From a4f5839e96e9ada548361b8bf38a3e43a3af4401 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 28 Jun 2026 20:44:25 -0700 Subject: [PATCH 4/6] fix output attr --- autotest/dfns/test_schema.py | 28 +++------------------------- docs/md/dfnspec.md | 2 +- modflow_devtools/dfns/schema.py | 2 +- 3 files changed, 5 insertions(+), 27 deletions(-) diff --git a/autotest/dfns/test_schema.py b/autotest/dfns/test_schema.py index 543118f2..8bd8517e 100644 --- a/autotest/dfns/test_schema.py +++ b/autotest/dfns/test_schema.py @@ -274,38 +274,16 @@ def test_memory_output_bool_ok(): Dfns(components={"gwf-npf": pkg}) # must not raise -def test_memory_output_string_integer_gate_ok(): - # output may reference an integer flag (e.g. ipakcb), not just a logical - pkg = _pkg( - "gwf-wel", - memory={ - "ipakcb": MemoryScalar(type="integer", set_in="ar"), - "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="ipakcb"), - }, - ) - Dfns(components={"gwf-wel": pkg}) # must not raise - - -def test_memory_output_string_logical_gate_ok(): +def test_memory_output(): pkg = _pkg( "gwf-wel", memory={ "save_flows": MemoryScalar(type="logical", set_in="ar"), - "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="save_flows"), + "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output=True), }, ) - Dfns(components={"gwf-wel": pkg}) # must not raise - + Dfns(components={"gwf-wel": pkg}) -def test_memory_output_string_missing_raises(): - pkg = _pkg( - "gwf-wel", - memory={ - "simvals": MemoryScalar(type="double", set_in="cq", readonly=True, output="ipakcb") - }, - ) - with pytest.raises(Exception, match="does not name a memory variable"): - Dfns(components={"gwf-wel": pkg}) def test_memory_budget_accepted(): diff --git a/docs/md/dfnspec.md b/docs/md/dfnspec.md index 513154fe..42dc387a 100644 --- a/docs/md/dfnspec.md +++ b/docs/md/dfnspec.md @@ -738,7 +738,7 @@ Allowed values: #### `output` -`boolean | string | null (default: null)`. Indicates that this is a model output variable. Registers the variable as an output to be returned by [BMI's `get_output_var_names()`](https://bmi.csdms.io/en/stable/bmi.info_funcs.html#get-output-var-names). +`boolean | null (default: null)`. Indicates that this is a model output variable. Registers the variable as an output to be returned by [BMI's `get_output_var_names()`](https://bmi.csdms.io/en/stable/bmi.info_funcs.html#get-output-var-names). #### `budget` diff --git a/modflow_devtools/dfns/schema.py b/modflow_devtools/dfns/schema.py index 773972aa..93cc3c93 100644 --- a/modflow_devtools/dfns/schema.py +++ b/modflow_devtools/dfns/schema.py @@ -528,7 +528,7 @@ class MemoryVariableBase(BaseModel): source: str | list[str] | None = None description: str | None = None budget: str | None = None - output: bool | str | None = None + output: bool | None = None obs_type: str | None = None From 5b1f3f076239f61605ffb443b3440bad3359d98e Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 28 Jun 2026 20:46:32 -0700 Subject: [PATCH 5/6] ruff --- autotest/dfns/test_schema.py | 1 - 1 file changed, 1 deletion(-) diff --git a/autotest/dfns/test_schema.py b/autotest/dfns/test_schema.py index 8bd8517e..e24e8718 100644 --- a/autotest/dfns/test_schema.py +++ b/autotest/dfns/test_schema.py @@ -285,7 +285,6 @@ def test_memory_output(): Dfns(components={"gwf-wel": pkg}) - def test_memory_budget_accepted(): pkg = _pkg( "gwf-wel", From 9955ff7f0a30b7e0036f0ff8bfbdc865de8fc31f Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 28 Jun 2026 21:16:48 -0700 Subject: [PATCH 6/6] output fix --- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml | 2 +- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml | 4 ++-- autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml | 4 ++-- autotest/dfns/test_schema.py | 8 ++++---- modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py | 4 ++-- 113 files changed, 177 insertions(+), 177 deletions(-) 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 7c9240a2..bb891378 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.json @@ -229,7 +229,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CDB", - "output": "ipakcb", + "output": true, "obs_type": "CDB", "dtype": "double", "shape": [ @@ -242,7 +242,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "CDB-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 5b6702e5..6853c8d6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.toml @@ -208,7 +208,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CDB" -output = "ipakcb" +output = true obs_type = "CDB" dtype = "double" shape = [ @@ -221,7 +221,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "CDB-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 c55c8cdb..bbffa1ea 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-cdb.yaml @@ -209,7 +209,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CDB - output: ipakcb + output: true obs_type: CDB dtype: double shape: @@ -220,7 +220,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: CDB-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 f4d27176..9537e3f2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CHD", - "output": "ipakcb", + "output": true, "obs_type": "CHD", "dtype": "double", "shape": [ 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 530dd5de..5c2d0113 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CHD" -output = "ipakcb" +output = true obs_type = "CHD" dtype = "double" shape = [ 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 3142e0c5..963fcc62 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-chd.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CHD - output: ipakcb + output: true obs_type: CHD dtype: double shape: 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 f4454243..f489074b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "EVP", - "output": "ipakcb", + "output": true, "obs_type": "EVP", "dtype": "double", "shape": [ 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 3eea31c4..9eaca43c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "EVP" -output = "ipakcb" +output = true obs_type = "EVP" dtype = "double" shape = [ 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 f36c2d84..5f6cd2b9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-evp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: EVP - output: ipakcb + output: true obs_type: EVP dtype: double shape: 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 24488c65..492aab35 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "FLW", - "output": "ipakcb", + "output": true, "obs_type": "FLW", "dtype": "double", "shape": [ @@ -230,7 +230,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "FLW-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 989d656f..65697818 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "FLW" -output = "ipakcb" +output = true obs_type = "FLW" dtype = "double" shape = [ @@ -207,7 +207,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "FLW-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 86a2f742..8697c035 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-flw.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: FLW - output: ipakcb + output: true obs_type: FLW dtype: double shape: @@ -206,7 +206,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: FLW-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 6c26610e..65da489d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "PCP", - "output": "ipakcb", + "output": true, "obs_type": "PCP", "dtype": "double", "shape": [ 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 c9ae04da..f958525d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "PCP" -output = "ipakcb" +output = true obs_type = "PCP" dtype = "double" shape = [ 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 70e13eb5..cd3f2a87 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-pcp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: PCP - output: ipakcb + output: true obs_type: PCP dtype: double shape: 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 bfa31292..a429a0b0 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.json @@ -255,7 +255,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "ZDG", - "output": "ipakcb", + "output": true, "obs_type": "ZDG", "dtype": "double", "shape": [ @@ -268,7 +268,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "ZDG-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 b6f660c4..9b016efd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.toml @@ -232,7 +232,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "ZDG" -output = "ipakcb" +output = true obs_type = "ZDG" dtype = "double" shape = [ @@ -245,7 +245,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "ZDG-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 220a3599..2a8b65ab 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/chf-zdg.yaml @@ -239,7 +239,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: ZDG - output: ipakcb + output: true obs_type: ZDG dtype: double shape: @@ -250,7 +250,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: ZDG-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 b1242745..a4d3099c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.json @@ -246,7 +246,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CTP", - "output": "ipakcb", + "output": true, "obs_type": "CTP", "dtype": "double", "shape": [ 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 2c0c80cf..1959d987 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.toml @@ -223,7 +223,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CTP" -output = "ipakcb" +output = true obs_type = "CTP" dtype = "double" shape = [ 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 19a1b599..0d41cf1f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-ctp.yaml @@ -218,7 +218,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CTP - output: ipakcb + output: true obs_type: CTP dtype: double shape: 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 0527fa5f..8b5436a3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "ESL", - "output": "ipakcb", + "output": true, "obs_type": "ESL", "dtype": "double", "shape": [ @@ -254,7 +254,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "ESL-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 e7cee8dd..f46f6c7b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "ESL" -output = "ipakcb" +output = true obs_type = "ESL" dtype = "double" shape = [ @@ -231,7 +231,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "ESL-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 c2ab8963..fdadad0e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwe-esl.yaml @@ -215,7 +215,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: ESL - output: ipakcb + output: true obs_type: ESL dtype: double shape: @@ -226,7 +226,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: ESL-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 0e627e9f..bfff7130 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.json @@ -252,7 +252,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CHD", - "output": "ipakcb", + "output": true, "obs_type": "CHD", "dtype": "double", "shape": [ 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 27c1f6e2..fc4ae0d6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.toml @@ -229,7 +229,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CHD" -output = "ipakcb" +output = true obs_type = "CHD" dtype = "double" shape = [ 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 92b2da9e..76ca542a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chd.yaml @@ -223,7 +223,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CHD - output: ipakcb + output: true obs_type: CHD dtype: double shape: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json index 33906a6d..d4a5f233 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.json @@ -230,7 +230,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CHD", - "output": "ipakcb", + "output": true, "obs_type": "CHD", "dtype": "double", "shape": [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml index 59e446f4..5d6faef3 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.toml @@ -211,7 +211,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CHD" -output = "ipakcb" +output = true obs_type = "CHD" dtype = "double" shape = [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml index a0f449de..da91d47d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-chdg.yaml @@ -204,7 +204,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CHD - output: ipakcb + output: true obs_type: CHD dtype: double shape: 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 61069060..8466d012 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.json @@ -270,7 +270,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "DRN", - "output": "ipakcb", + "output": true, "obs_type": "DRN", "dtype": "double", "shape": [ @@ -283,7 +283,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "DRN-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 79268c7f..0a7dbc33 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.toml @@ -247,7 +247,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "DRN" -output = "ipakcb" +output = true obs_type = "DRN" dtype = "double" shape = [ @@ -260,7 +260,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "DRN-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 47b22152..fae5c709 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drn.yaml @@ -250,7 +250,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: DRN - output: ipakcb + output: true obs_type: DRN dtype: double shape: @@ -261,7 +261,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: DRN-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json index e4a56277..f5b736da 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.json @@ -252,7 +252,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "DRN", - "output": "ipakcb", + "output": true, "obs_type": "DRN", "dtype": "double", "shape": [ @@ -265,7 +265,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "DRN-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml index 9a53383c..2287018e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.toml @@ -233,7 +233,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "DRN" -output = "ipakcb" +output = true obs_type = "DRN" dtype = "double" shape = [ @@ -246,7 +246,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "DRN-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml index 33f162e0..7afe566d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-drng.yaml @@ -232,7 +232,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: DRN - output: ipakcb + output: true obs_type: DRN dtype: double shape: @@ -243,7 +243,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: DRN-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 202c9358..33c391af 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.json @@ -316,7 +316,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "EVT", - "output": "ipakcb", + "output": true, "obs_type": "EVT", "dtype": "double", "shape": [ 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 105fbf80..63ac2099 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.toml @@ -293,7 +293,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "EVT" -output = "ipakcb" +output = true obs_type = "EVT" dtype = "double" shape = [ 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 efec3bf8..d3e7397f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evt.yaml @@ -298,7 +298,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: EVT - output: ipakcb + output: true obs_type: EVT dtype: double shape: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json index 00f58478..3420a479 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.json @@ -256,7 +256,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "EVTA", - "output": "ipakcb", + "output": true, "obs_type": "EVT", "dtype": "double", "shape": [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml index a4b240e3..a6357d12 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.toml @@ -239,7 +239,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "EVTA" -output = "ipakcb" +output = true obs_type = "EVT" dtype = "double" shape = [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml index 47942344..1ac24f9b 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-evta.yaml @@ -230,7 +230,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: EVTA - output: ipakcb + output: true obs_type: EVT dtype: double shape: 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 d5a53e78..2945e789 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.json @@ -253,7 +253,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "GHB", - "output": "ipakcb", + "output": true, "obs_type": "GHB", "dtype": "double", "shape": [ @@ -266,7 +266,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "GHB-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 29197a8f..431a4f1e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.toml @@ -230,7 +230,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "GHB" -output = "ipakcb" +output = true obs_type = "GHB" dtype = "double" shape = [ @@ -243,7 +243,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "GHB-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 b32e6c7f..052ec420 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghb.yaml @@ -229,7 +229,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: GHB - output: ipakcb + output: true obs_type: GHB dtype: double shape: @@ -240,7 +240,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: GHB-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json index 8875894f..feaad038 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.json @@ -235,7 +235,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "GHB", - "output": "ipakcb", + "output": true, "obs_type": "GHB", "dtype": "double", "shape": [ @@ -248,7 +248,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "GHB-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml index b73fa7d6..0db58672 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.toml @@ -216,7 +216,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "GHB" -output = "ipakcb" +output = true obs_type = "GHB" dtype = "double" shape = [ @@ -229,7 +229,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "GHB-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml index a72f8720..d8e50c8d 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-ghbg.yaml @@ -211,7 +211,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: GHB - output: ipakcb + output: true obs_type: GHB dtype: double shape: @@ -222,7 +222,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: GHB-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 521241e5..c329736f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.json @@ -247,7 +247,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "RCH", - "output": "ipakcb", + "output": true, "obs_type": "RCH", "dtype": "double", "shape": [ 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 4683323c..b7ce1e98 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.toml @@ -224,7 +224,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "RCH" -output = "ipakcb" +output = true obs_type = "RCH" dtype = "double" shape = [ 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 7317afb3..c20f1e04 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rch.yaml @@ -222,7 +222,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: RCH - output: ipakcb + output: true obs_type: RCH dtype: double shape: diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json index e9ab1838..f30d6430 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.json @@ -235,7 +235,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "RCHA", - "output": "ipakcb", + "output": true, "obs_type": "RCH", "dtype": "double", "shape": [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml index 58422108..8db3e12a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "RCHA" -output = "ipakcb" +output = true obs_type = "RCH" dtype = "double" shape = [ diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml index 072094b8..fca36ad9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rcha.yaml @@ -215,7 +215,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: RCHA - output: ipakcb + output: true obs_type: RCH dtype: double shape: 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 4df87167..75c259da 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.json @@ -260,7 +260,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "RIV", - "output": "ipakcb", + "output": true, "obs_type": "RIV", "dtype": "double", "shape": [ @@ -273,7 +273,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "RIV-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 87fd237b..d6ec79b5 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.toml @@ -237,7 +237,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "RIV" -output = "ipakcb" +output = true obs_type = "RIV" dtype = "double" shape = [ @@ -250,7 +250,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "RIV-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 ae60ddff..7c820b0f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-riv.yaml @@ -236,7 +236,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: RIV - output: ipakcb + output: true obs_type: RIV dtype: double shape: @@ -247,7 +247,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: RIV-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json index 2f159d9b..98e3bc65 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.json @@ -246,7 +246,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "RIV", - "output": "ipakcb", + "output": true, "obs_type": "RIV", "dtype": "double", "shape": [ @@ -259,7 +259,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "RIV-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml index 0495edbd..83fca2e9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.toml @@ -227,7 +227,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "RIV" -output = "ipakcb" +output = true obs_type = "RIV" dtype = "double" shape = [ @@ -240,7 +240,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "RIV-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml index 97894913..19506cf7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-rivg.yaml @@ -219,7 +219,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: RIV - output: ipakcb + output: true obs_type: RIV dtype: double shape: @@ -230,7 +230,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: RIV-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 04784a1d..b493b277 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.json @@ -285,7 +285,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "WEL", - "output": "ipakcb", + "output": true, "obs_type": "WEL", "dtype": "double", "shape": [ @@ -298,7 +298,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "WEL-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 deea7a20..00a234b2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.toml @@ -260,7 +260,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "WEL" -output = "ipakcb" +output = true obs_type = "WEL" dtype = "double" shape = [ @@ -273,7 +273,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "WEL-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 273fb55c..117e7b1e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-wel.yaml @@ -265,7 +265,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: WEL - output: ipakcb + output: true obs_type: WEL dtype: double shape: @@ -276,7 +276,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: WEL-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json index 70d0b7c5..6a6560cd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.json @@ -263,7 +263,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "WEL", - "output": "ipakcb", + "output": true, "obs_type": "WEL", "dtype": "double", "shape": [ @@ -276,7 +276,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "WEL-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml index 297973cc..be3d9a2f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.toml @@ -242,7 +242,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "WEL" -output = "ipakcb" +output = true obs_type = "WEL" dtype = "double" shape = [ @@ -255,7 +255,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "WEL-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", diff --git a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml index 5c28a770..4f14ba1e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwf-welg.yaml @@ -247,7 +247,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: WEL - output: ipakcb + output: true obs_type: WEL dtype: double shape: @@ -258,7 +258,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: WEL-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 456cafeb..c7ac82f2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.json @@ -246,7 +246,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CNC", - "output": "ipakcb", + "output": true, "obs_type": "CNC", "dtype": "double", "shape": [ 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 63302294..38f1b784 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.toml @@ -223,7 +223,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CNC" -output = "ipakcb" +output = true obs_type = "CNC" dtype = "double" shape = [ 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 8beb1570..51f18f95 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-cnc.yaml @@ -218,7 +218,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CNC - output: ipakcb + output: true obs_type: CNC dtype: double shape: 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 7b3b018c..5dce7ebd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.json @@ -252,7 +252,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "SRC", - "output": "ipakcb", + "output": true, "obs_type": "SRC", "dtype": "double", "shape": [ @@ -265,7 +265,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "SRC-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 24c62bf4..c1198097 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.toml @@ -229,7 +229,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "SRC" -output = "ipakcb" +output = true obs_type = "SRC" dtype = "double" shape = [ @@ -242,7 +242,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "SRC-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 7d2de2b4..2ecae661 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/gwt-src.yaml @@ -234,7 +234,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: SRC - output: ipakcb + output: true obs_type: SRC dtype: double shape: @@ -245,7 +245,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: SRC-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 0324e742..a70e5616 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.json @@ -229,7 +229,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CDB", - "output": "ipakcb", + "output": true, "obs_type": "CDB", "dtype": "double", "shape": [ @@ -242,7 +242,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "CDB-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 2d785a5c..eff411ea 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.toml @@ -208,7 +208,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CDB" -output = "ipakcb" +output = true obs_type = "CDB" dtype = "double" shape = [ @@ -221,7 +221,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "CDB-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 91e57bbc..2ef06fdd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-cdb.yaml @@ -209,7 +209,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CDB - output: ipakcb + output: true obs_type: CDB dtype: double shape: @@ -220,7 +220,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: CDB-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 a5bd4860..fe36a6ab 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CHD", - "output": "ipakcb", + "output": true, "obs_type": "CHD", "dtype": "double", "shape": [ 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 f988662f..9f9d85a7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CHD" -output = "ipakcb" +output = true obs_type = "CHD" dtype = "double" shape = [ 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 07224566..ac29560a 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-chd.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CHD - output: ipakcb + output: true obs_type: CHD dtype: double shape: 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 c952d26a..255fe2c2 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "EVP", - "output": "ipakcb", + "output": true, "obs_type": "EVP", "dtype": "double", "shape": [ 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 436e01e6..109f73a9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "EVP" -output = "ipakcb" +output = true obs_type = "EVP" dtype = "double" shape = [ 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 bd2635a3..4ea6664f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-evp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: EVP - output: ipakcb + output: true obs_type: EVP dtype: double shape: 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 99c12e56..d5c96b55 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "FLW", - "output": "ipakcb", + "output": true, "obs_type": "FLW", "dtype": "double", "shape": [ @@ -230,7 +230,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "FLW-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 e64c170f..d32fffcb 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "FLW" -output = "ipakcb" +output = true obs_type = "FLW" dtype = "double" shape = [ @@ -207,7 +207,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "FLW-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 68ce3a59..9bd4b412 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-flw.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: FLW - output: ipakcb + output: true obs_type: FLW dtype: double shape: @@ -206,7 +206,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: FLW-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 7c9ea8f6..0202a000 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "PCP", - "output": "ipakcb", + "output": true, "obs_type": "PCP", "dtype": "double", "shape": [ 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 f4031b01..520bfb4c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "PCP" -output = "ipakcb" +output = true obs_type = "PCP" dtype = "double" shape = [ 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 614da926..370e58a6 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-pcp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: PCP - output: ipakcb + output: true obs_type: PCP dtype: double shape: 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 1351ff16..f4059904 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.json @@ -255,7 +255,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "ZDG", - "output": "ipakcb", + "output": true, "obs_type": "ZDG", "dtype": "double", "shape": [ @@ -268,7 +268,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "ZDG-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 d8a82120..f8559803 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.toml @@ -232,7 +232,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "ZDG" -output = "ipakcb" +output = true obs_type = "ZDG" dtype = "double" shape = [ @@ -245,7 +245,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "ZDG-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 12ecf036..31ef79a9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/olf-zdg.yaml @@ -239,7 +239,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: ZDG - output: ipakcb + output: true obs_type: ZDG dtype: double shape: @@ -250,7 +250,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: ZDG-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 f9c7c8a0..7a03b7bf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.json @@ -473,7 +473,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "PRP", - "output": "ipakcb", + "output": true, "obs_type": "PRP", "dtype": "double", "shape": [ @@ -486,7 +486,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "PRP-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 9abc614a..76cb0c8c 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.toml @@ -434,7 +434,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "PRP" -output = "ipakcb" +output = true obs_type = "PRP" dtype = "double" shape = [ @@ -447,7 +447,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "PRP-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 f0cfcd27..ff42d156 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/prt-prp.yaml @@ -462,7 +462,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: PRP - output: ipakcb + output: true obs_type: PRP dtype: double shape: @@ -473,7 +473,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: PRP-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 d8e6d9d6..1bffcc34 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.json @@ -229,7 +229,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CDB", - "output": "ipakcb", + "output": true, "obs_type": "CDB", "dtype": "double", "shape": [ @@ -242,7 +242,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "CDB-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 a10d5558..b9182868 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.toml @@ -208,7 +208,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CDB" -output = "ipakcb" +output = true obs_type = "CDB" dtype = "double" shape = [ @@ -221,7 +221,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "CDB-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 dc4f0d5d..21865127 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-cdb.yaml @@ -209,7 +209,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CDB - output: ipakcb + output: true obs_type: CDB dtype: double shape: @@ -220,7 +220,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: CDB-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 6f51059b..087379df 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "CHD", - "output": "ipakcb", + "output": true, "obs_type": "CHD", "dtype": "double", "shape": [ 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 a6bc6ce6..da57b337 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "CHD" -output = "ipakcb" +output = true obs_type = "CHD" dtype = "double" shape = [ 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 98ba7770..ef778892 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-chd.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: CHD - output: ipakcb + output: true obs_type: CHD dtype: double shape: 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 c04a5455..f38af6bf 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "EVP", - "output": "ipakcb", + "output": true, "obs_type": "EVP", "dtype": "double", "shape": [ 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 d975ee23..0dfd4942 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "EVP" -output = "ipakcb" +output = true obs_type = "EVP" dtype = "double" shape = [ 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 acc8bf7c..f8b143b7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-evp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: EVP - output: ipakcb + output: true obs_type: EVP dtype: double shape: 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 30dec8f4..589d2138 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.json @@ -217,7 +217,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "FLW", - "output": "ipakcb", + "output": true, "obs_type": "FLW", "dtype": "double", "shape": [ @@ -230,7 +230,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "FLW-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 1812dd28..34a0135f 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.toml @@ -194,7 +194,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "FLW" -output = "ipakcb" +output = true obs_type = "FLW" dtype = "double" shape = [ @@ -207,7 +207,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "FLW-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 02f9c34e..047dfed7 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-flw.yaml @@ -195,7 +195,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: FLW - output: ipakcb + output: true obs_type: FLW dtype: double shape: @@ -206,7 +206,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: FLW-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound 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 e4b122b2..fe96df03 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.json @@ -241,7 +241,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "PCP", - "output": "ipakcb", + "output": true, "obs_type": "PCP", "dtype": "double", "shape": [ 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 8a5bb06f..f0977187 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.toml @@ -218,7 +218,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "PCP" -output = "ipakcb" +output = true obs_type = "PCP" dtype = "double" shape = [ 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 56f55c7f..ec3e6b0e 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-pcp.yaml @@ -216,7 +216,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: PCP - output: ipakcb + output: true obs_type: PCP dtype: double shape: 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 c707a09c..236d50dd 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.json @@ -255,7 +255,7 @@ "set_in": "cq", "description": "Simulated boundary flow values for the current time step.", "budget": "ZDG", - "output": "ipakcb", + "output": true, "obs_type": "ZDG", "dtype": "double", "shape": [ @@ -268,7 +268,7 @@ "set_in": "cq", "description": "Flow diverted to the Water Mover for each boundary.", "budget": "ZDG-TO-MVR", - "output": "ipakcb", + "output": true, "dtype": "double", "shape": [ "nbound" 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 f8613c73..f1fe4bd1 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.toml @@ -232,7 +232,7 @@ readonly = true set_in = "cq" description = "Simulated boundary flow values for the current time step." budget = "ZDG" -output = "ipakcb" +output = true obs_type = "ZDG" dtype = "double" shape = [ @@ -245,7 +245,7 @@ readonly = true set_in = "cq" description = "Flow diverted to the Water Mover for each boundary." budget = "ZDG-TO-MVR" -output = "ipakcb" +output = true dtype = "double" shape = [ "nbound", 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 044074ee..af49a6a9 100644 --- a/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml +++ b/autotest/dfns/__snapshots__/v2.0.0.dev3/swf-zdg.yaml @@ -239,7 +239,7 @@ memory: set_in: cq description: Simulated boundary flow values for the current time step. budget: ZDG - output: ipakcb + output: true obs_type: ZDG dtype: double shape: @@ -250,7 +250,7 @@ memory: set_in: cq description: Flow diverted to the Water Mover for each boundary. budget: ZDG-TO-MVR - output: ipakcb + output: true dtype: double shape: - nbound diff --git a/autotest/dfns/test_schema.py b/autotest/dfns/test_schema.py index e24e8718..0d1b9c16 100644 --- a/autotest/dfns/test_schema.py +++ b/autotest/dfns/test_schema.py @@ -317,11 +317,11 @@ def test_memory_output_attributes_in_snapshot(dev3_spec): simvals = wel.memory["simvals"] assert simvals.budget == "WEL" assert simvals.obs_type == "WEL" - assert simvals.output == "ipakcb" + assert simvals.output is True simtomvr = wel.memory["simtomvr"] assert simtomvr.budget == "WEL-TO-MVR" - assert simtomvr.output == "ipakcb" + assert simtomvr.output is True assert simtomvr.obs_type is None # to-mvr flows are not observable @@ -331,7 +331,7 @@ def test_memory_output_attributes_rcha(dev3_spec): simvals = rcha.memory["simvals"] assert simvals.budget == "RCHA" assert simvals.obs_type == "RCH" - assert simvals.output == "ipakcb" + assert simvals.output is True def test_memory_output_attributes_chd_no_to_mvr(dev3_spec): @@ -340,7 +340,7 @@ def test_memory_output_attributes_chd_no_to_mvr(dev3_spec): simvals = chd.memory["simvals"] assert simvals.budget == "CHD" assert simvals.obs_type == "CHD" - assert simvals.output == "ipakcb" + assert simvals.output is True simtomvr = chd.memory["simtomvr"] assert simtomvr.budget is None diff --git a/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py b/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py index 02c72574..999232d3 100644 --- a/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py +++ b/modflow_devtools/dfns/migrate_to_v2_0_0_dev3.py @@ -247,7 +247,7 @@ def _stress_pkg_memory( set_in="cq", readonly=True, description="Simulated boundary flow values for the current time step.", - **({"budget": budget, "obs_type": obs_type, "output": "ipakcb"} if budget else {}), + **({"budget": budget, "obs_type": obs_type, "output": True} if budget else {}), ), "simtomvr": _mem_var( "double", @@ -255,7 +255,7 @@ def _stress_pkg_memory( set_in="cq", readonly=True, description="Flow diverted to the Water Mover for each boundary.", - **({"budget": to_mvr_budget, "output": "ipakcb"} if to_mvr_budget else {}), + **({"budget": to_mvr_budget, "output": True} if to_mvr_budget else {}), ), "naux": _mem_var( "integer", [], set_in="ar", readonly=True, description="Number of auxiliary variables."