Skip to content

Commit 2c01529

Browse files
authored
add package class attributes to chd and ims (#140)
Mark packages as solution packages, multipackages. Same idea would work for advanced packages and subpackages too. These attributes are discovered/reflected by Component.dfn as added in #139.
1 parent 53f8f81 commit 2c01529

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

flopy4/mf6/gwf/chd.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pathlib import Path
2-
from typing import Optional
2+
from typing import ClassVar, Optional
33

44
import numpy as np
55
from attrs import Converter, define
@@ -13,6 +13,8 @@
1313

1414
@xattree
1515
class Chd(Package):
16+
multi_package: ClassVar[bool] = True
17+
1618
@define(slots=False)
1719
class Steps:
1820
all: bool = field()

flopy4/mf6/ims.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from pathlib import Path
2-
from typing import Optional
2+
from typing import ClassVar, Optional
33

4+
from modflow_devtools.dfn import Sln
45
from xattree import xattree
56

67
from flopy4.mf6.solution import Solution
@@ -9,6 +10,8 @@
910

1011
@xattree
1112
class Ims(Solution):
13+
solution_package: ClassVar[Sln] = Sln(abbr="ims", pattern="*")
14+
1215
print_option: bool = field(block="options", default=False)
1316
complexity: str = field(block="options", default="simple")
1417
csv_outer_output_file: Optional[Path] = field(default=None, block="options")

test/test_component.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
import pytest
33
from flopy.discretization import StructuredGrid
44
from flopy.discretization.modeltime import ModelTime
5+
from modflow_devtools.dfn import Sln
56
from xarray import DataTree
67

78
from flopy4.mf6.component import COMPONENTS
89
from flopy4.mf6.constants import FILL_DNODATA
910
from flopy4.mf6.gwf import Chd, Dis, Gwf, Ic, Npf, Oc
11+
from flopy4.mf6.ims import Ims
1012
from flopy4.mf6.simulation import Simulation
1113
from flopy4.mf6.tdis import Tdis
1214

@@ -242,3 +244,27 @@ def test_gwf_dfn():
242244
assert dfn["ref"] is None
243245
assert dfn["sln"] is None
244246
assert "save_flows" in set(dfn["options"].keys())
247+
248+
249+
def test_chd_dfn():
250+
chd = Chd(strict=False)
251+
dfn = chd.dfn
252+
assert dfn["name"] == "chd"
253+
assert not dfn["advanced"]
254+
assert dfn["multi"]
255+
assert dfn["ref"] is None
256+
assert dfn["sln"] is None
257+
assert "print_input" in set(dfn["options"].keys())
258+
assert "head" in set(dfn["period"].keys())
259+
260+
261+
def test_ims_dfn():
262+
ims = Ims(strict=False)
263+
dfn = ims.dfn
264+
assert dfn["name"] == "ims"
265+
assert not dfn["advanced"]
266+
assert not dfn["multi"]
267+
assert dfn["ref"] is None
268+
assert dfn["sln"] == Sln(abbr="ims", pattern="*")
269+
assert "complexity" in set(dfn["options"].keys())
270+
assert "inner_maximum" in set(dfn["linear"].keys())

0 commit comments

Comments
 (0)