Skip to content

Commit

Permalink
support mf6 utility ncf package options
Browse files Browse the repository at this point in the history
  • Loading branch information
mjreno authored and mjreno committed Feb 11, 2025
1 parent f280aa7 commit e536392
Show file tree
Hide file tree
Showing 26 changed files with 661 additions and 168 deletions.
324 changes: 204 additions & 120 deletions autotest/regression/test_model_netcdf.py

Large diffs are not rendered by default.

Binary file not shown.
13 changes: 13 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.chd
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
END options

BEGIN dimensions
MAXBOUND 2
END dimensions

BEGIN period 1
1 1 1.00000000E+00
1 9 0.00000000E+00
END period 1

63 changes: 63 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.disv
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
EXPORT_ARRAY_NETCDF
NCF6 FILEIN disv01b.disv.ncf
END options

BEGIN dimensions
NLAY 3
NCPL 9
NVERT 16
END dimensions

BEGIN griddata
top
INTERNAL FACTOR 1.0
0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
botm LAYERED
INTERNAL FACTOR 1.0
-10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000
INTERNAL FACTOR 1.0
-20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000
INTERNAL FACTOR 1.0
-30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000
idomain LAYERED
INTERNAL FACTOR 1
1 0 1 1 1 1 1 1 1
INTERNAL FACTOR 1
1 1 1 1 1 1 1 1 1
INTERNAL FACTOR 1
1 1 1 1 1 1 1 1 1
END griddata

BEGIN vertices
1 1.00000000E+08 1.00000030E+08
2 1.00000010E+08 1.00000030E+08
3 1.00000020E+08 1.00000030E+08
4 1.00000030E+08 1.00000030E+08
5 1.00000000E+08 1.00000020E+08
6 1.00000010E+08 1.00000020E+08
7 1.00000020E+08 1.00000020E+08
8 1.00000030E+08 1.00000020E+08
9 1.00000000E+08 1.00000010E+08
10 1.00000010E+08 1.00000010E+08
11 1.00000020E+08 1.00000010E+08
12 1.00000030E+08 1.00000010E+08
13 1.00000000E+08 1.00000000E+08
14 1.00000010E+08 1.00000000E+08
15 1.00000020E+08 1.00000000E+08
16 1.00000030E+08 1.00000000E+08
END vertices

BEGIN cell2d
1 1.00000005E+08 1.00000025E+08 4 1 2 6 5
2 1.00000015E+08 1.00000025E+08 4 2 3 7 6
3 1.00000025E+08 1.00000025E+08 4 3 4 8 7
4 1.00000005E+08 1.00000015E+08 4 5 6 10 9
5 1.00000015E+08 1.00000015E+08 4 6 7 11 10
6 1.00000025E+08 1.00000015E+08 4 7 8 12 11
7 1.00000005E+08 1.00000005E+08 4 9 10 14 13
8 1.00000015E+08 1.00000005E+08 4 10 11 15 14
9 1.00000025E+08 1.00000005E+08 4 11 12 16 15
END cell2d

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
wkt 'PROJCS["NAD83 / UTM zone 18N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101], TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4269"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",-75], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1,AUTHORITY["EPSG","9001"]], AXIS["Easting",EAST], AXIS["Northing",NORTH], AUTHORITY["EPSG","26918"]]'
DEFLATE 9
SHUFFLE
CHUNK_TIME 1
CHUNK_FACE 3
END options

10 changes: 10 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.ic
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
EXPORT_ARRAY_NETCDF
END options

BEGIN griddata
strt
CONSTANT 0.00000000
END griddata

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
PRINT_OPTION summary
END options

12 changes: 12 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.nam
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
END options

BEGIN packages
DISV6 disv01b.disv disv
IC6 disv01b.ic ic
NPF6 disv01b.npf npf
CHD6 disv01b.chd chd_0
OC6 disv01b.oc oc
END packages

12 changes: 12 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.npf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
EXPORT_ARRAY_NETCDF
END options

BEGIN griddata
icelltype
CONSTANT 0
k
CONSTANT 1.00000000
END griddata

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
HEAD FILEOUT disv01b.hds
END options

BEGIN period 1
SAVE HEAD ALL
END period 1

13 changes: 13 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/disv01b.tdis
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
START_DATE_TIME 2041-01-01t00:00:00-05:00
END options

BEGIN dimensions
NPER 1
END dimensions

BEGIN perioddata
1.00000000 1 1.00000000
END perioddata

19 changes: 19 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_create/disv01b/mfsim.nam
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
END options

BEGIN timing
TDIS6 disv01b.tdis
END timing

BEGIN models
gwf6 disv01b.nam disv01b
END models

BEGIN exchanges
END exchanges

BEGIN solutiongroup 1
ims6 disv01b.ims disv01b
END solutiongroup 1

13 changes: 13 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.chd
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
END options

BEGIN dimensions
MAXBOUND 2
END dimensions

BEGIN period 1
1 1 1.00000000E+00
1 9 0.00000000E+00
END period 1

49 changes: 49 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.disv
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# NOT generated by Flopy
BEGIN options
EXPORT_ARRAY_NETCDF
NCF6 FILEIN disv01b.disv.ncf
END options

BEGIN dimensions
NLAY 3
NCPL 9
NVERT 16
END dimensions

BEGIN griddata
top NETCDF
botm NETCDF
idomain NETCDF
END griddata

BEGIN vertices
1 1.00000000E+08 1.00000030E+08
2 1.00000010E+08 1.00000030E+08
3 1.00000020E+08 1.00000030E+08
4 1.00000030E+08 1.00000030E+08
5 1.00000000E+08 1.00000020E+08
6 1.00000010E+08 1.00000020E+08
7 1.00000020E+08 1.00000020E+08
8 1.00000030E+08 1.00000020E+08
9 1.00000000E+08 1.00000010E+08
10 1.00000010E+08 1.00000010E+08
11 1.00000020E+08 1.00000010E+08
12 1.00000030E+08 1.00000010E+08
13 1.00000000E+08 1.00000000E+08
14 1.00000010E+08 1.00000000E+08
15 1.00000020E+08 1.00000000E+08
16 1.00000030E+08 1.00000000E+08
END vertices

BEGIN cell2d
1 1.00000005E+08 1.00000025E+08 4 1 2 6 5
2 1.00000015E+08 1.00000025E+08 4 2 3 7 6
3 1.00000025E+08 1.00000025E+08 4 3 4 8 7
4 1.00000005E+08 1.00000015E+08 4 5 6 10 9
5 1.00000015E+08 1.00000015E+08 4 6 7 11 10
6 1.00000025E+08 1.00000015E+08 4 7 8 12 11
7 1.00000005E+08 1.00000005E+08 4 9 10 14 13
8 1.00000015E+08 1.00000005E+08 4 10 11 15 14
9 1.00000025E+08 1.00000005E+08 4 11 12 16 15
END cell2d

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
wkt 'PROJCS["NAD83 / UTM zone 18N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101], TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4269"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",-75], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1,AUTHORITY["EPSG","9001"]], AXIS["Easting",EAST], AXIS["Northing",NORTH], AUTHORITY["EPSG","26918"]]'
DEFLATE 9
SHUFFLE
CHUNK_TIME 1
CHUNK_FACE 3
END options

8 changes: 8 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.ic
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# NOT generated by Flopy
BEGIN options
EXPORT_ARRAY_NETCDF
END options

BEGIN griddata
strt NETCDF
END griddata
5 changes: 5 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.ims
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
PRINT_OPTION summary
END options

Binary file not shown.
12 changes: 12 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.nam
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# NOT generated by Flopy
BEGIN options
NETCDF FILEIN disv01b.in.nc
END options

BEGIN packages
DISV6 disv01b.disv disv
IC6 disv01b.ic ic
NPF6 disv01b.npf npf
CHD6 disv01b.chd chd_0
OC6 disv01b.oc oc
END packages
9 changes: 9 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.npf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# NOT generated by Flopy
BEGIN options
EXPORT_ARRAY_NETCDF
END options

BEGIN griddata
icelltype NETCDF
k NETCDF
END griddata
9 changes: 9 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.oc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
HEAD FILEOUT disv01b.hds
END options

BEGIN period 1
SAVE HEAD ALL
END period 1

13 changes: 13 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/disv01b.tdis
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
START_DATE_TIME 2041-01-01t00:00:00-05:00
END options

BEGIN dimensions
NPER 1
END dimensions

BEGIN perioddata
1.00000000 1 1.00000000
END perioddata

19 changes: 19 additions & 0 deletions examples/data/mf6/netcdf/test_utlncf_load/disv01b/mfsim.nam
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# File generated by Flopy version 3.10.0.dev1 on 02/05/2025 at 13:05:06.
BEGIN options
END options

BEGIN timing
TDIS6 disv01b.tdis
END timing

BEGIN models
gwf6 disv01b.nam disv01b
END models

BEGIN exchanges
END exchanges

BEGIN solutiongroup 1
ims6 disv01b.ims disv01b
END solutiongroup 1

22 changes: 16 additions & 6 deletions flopy/mf6/mfmodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,8 @@ def load_base(
break
if dis_type and dis_type in dis_str:
nc_fpth = os.path.join(instance.model_ws, nc_filerecord[0][0])
# TODO: verify a partial dataset (not all griddata vars) don't
# break everything
instance._nc_dataset = open_dataset(nc_fpth, dis_type=dis_str[dis_type])
else:
message = (
Expand Down Expand Up @@ -1333,7 +1335,6 @@ def write(
self,
ext_file_action=ExtFileAction.copy_relative_paths,
netcdf=None,
to_cdl=False,
):
"""
Writes out model's package files.
Expand All @@ -1347,13 +1348,11 @@ def write(
netcdf : str
Create model NetCDF file, of type specified, in which to store
package griddata. 'mesh2d' and 'structured' are supported types.
to_cdl : bool
Generate text version of netcdf file (debug feature)
"""

# write netcdf file
if netcdf or self._nc_dataset is not None:
kwargs = {}
if self._nc_dataset is None:
from ..utils.model_netcdf import create_dataset

Expand All @@ -1370,10 +1369,21 @@ def write(

# reset data storage and populate netcdf file
for pp in self.packagelist:
pp._set_netcdf_storage(self._nc_dataset, create=True)
if pp.package_type == "ncf":
kwargs["shuffle"] = pp.shuffle.get_data()
kwargs["deflate"] = pp.deflate.get_data()
kwargs["chunk_time"] = pp.chunk_time.get_data()
kwargs["chunk_face"] = pp.chunk_face.get_data()
kwargs["chunk_x"] = pp.chunk_x.get_data()
kwargs["chunk_y"] = pp.chunk_y.get_data()
kwargs["chunk_z"] = pp.chunk_z.get_data()
kwargs["wkt"] = pp.wkt.get_data()
pp._set_netcdf_storage(
self._nc_dataset, create=True
)

# write the dataset to netcdf
self._nc_dataset.write(self.model_ws)
self._nc_dataset.write(self.model_ws, **kwargs)

# write name file
if (
Expand Down
Loading

0 comments on commit e536392

Please sign in to comment.