Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
9ea9075
Optimize modelsplitter
Manangka Oct 13, 2025
07cad1a
Remove old slice_model method
Manangka Oct 14, 2025
0b631fa
Clean up modelsplitter
Manangka Oct 14, 2025
29b6f8d
Refactor modelsplitter
Manangka Oct 14, 2025
5457c49
Add documentation to the split method. More cleaning up
Manangka Oct 14, 2025
6b71831
Fix incorrect use of item()
Manangka Oct 14, 2025
f72c774
Directly call any() on the dask array
Manangka Oct 14, 2025
c201314
Fix regrid error due to use of wrong interface
Manangka Oct 14, 2025
f19553c
Rvert to earlier more efficient evaluation of has_overlap. Optimize r…
Manangka Oct 15, 2025
9a99506
Revert chunk optimization when opening zarr or nc files. Its not genr…
Manangka Oct 15, 2025
372c1f7
Merge branch 'master' into model_splitter_optimization
Manangka Oct 15, 2025
8567903
Apply review comment
Manangka Oct 16, 2025
cbe5624
Fix incorrect order of removing non-spatial dims
Manangka Oct 16, 2025
f37972f
Fix lint error
Manangka Oct 16, 2025
a32e989
Refactor updating of th buy and ssm package after splitting. Refactor…
Manangka Oct 17, 2025
04f746e
Add comments to the ModelSplitter class
Manangka Oct 17, 2025
ba1e808
Add chunking when opening netcdf files. Handle errors for code that d…
Manangka Oct 20, 2025
67ca384
Merge branch 'master' into model_splitter_optimization
Manangka Oct 20, 2025
e86f735
Move logic to test whether to skip a package into its own method. Do …
JoerivanEngelen Oct 28, 2025
1967f2d
Rename to update_dependent_packages
JoerivanEngelen Oct 28, 2025
c265e41
Reflow paragraphs to 80 characters.
JoerivanEngelen Oct 28, 2025
dd47d59
Change hardcoded reference to "index" to call to .is_empty()
JoerivanEngelen Oct 28, 2025
0273210
Add trim_time_dimension logic to ModelSplitter
JoerivanEngelen Oct 28, 2025
5afc773
format
JoerivanEngelen Oct 28, 2025
7f87bf6
Fix mypy errors
JoerivanEngelen Oct 28, 2025
037bd18
revert toml and lock file
JoerivanEngelen Oct 28, 2025
d5129f7
Merge branch 'master' into model_splitter_optimization
JoerivanEngelen Oct 28, 2025
86fd4a4
Update changelog
JoerivanEngelen Oct 28, 2025
6df0093
Reduce cognitive load a bit
JoerivanEngelen Oct 29, 2025
59157e0
Merge branch 'master' into model_splitter_optimization
JoerivanEngelen Oct 29, 2025
e8ce8f5
Merge branch 'model_splitter_optimization' into issue_#1698_model_wri…
JoerivanEngelen Oct 29, 2025
9b9ac40
Merge branch 'master' into issue_#1698_model_write_optimization
JoerivanEngelen Oct 29, 2025
01deede
Move compute upwards
JoerivanEngelen Oct 30, 2025
2eda736
Move string conversion to base class deserialization; remove redundan…
JoerivanEngelen Oct 30, 2025
8d48854
Remove ruff warning
JoerivanEngelen Oct 30, 2025
b1e9bd2
Remove NETCDF4 format specification from HFB to_netcdf call
JoerivanEngelen Oct 30, 2025
f68f2b5
Fix broken test with extra compute call
JoerivanEngelen Oct 30, 2025
ab881a4
Support zarr and zipstore for dump and from_file methods in mf6 model
JoerivanEngelen Oct 30, 2025
50aaf56
Refactor dataset file writing dispatching to use common utility function
JoerivanEngelen Oct 30, 2025
e5e427c
Add to_zarr method to docs
JoerivanEngelen Oct 30, 2025
fd0818b
Update changelog
JoerivanEngelen Oct 30, 2025
d81eda4
Add example
JoerivanEngelen Oct 30, 2025
18dc972
Add EngineType as TypeAlias
JoerivanEngelen Oct 30, 2025
f08e3a8
Merge branch 'master' into issue_#1683_support_zarr
Manangka Oct 30, 2025
cf8b972
Add Serializer interface
JoerivanEngelen Oct 31, 2025
b83b520
Refactor: Put serialization logic into separate serializer classes.
JoerivanEngelen Oct 31, 2025
a81e71c
format
JoerivanEngelen Oct 31, 2025
e422402
Merge branch 'master' into issue_#1683_support_zarr
JoerivanEngelen Oct 31, 2025
8708f92
Merge branch 'issue_#1683_support_zarr' of github.com:Deltares/imod-p…
JoerivanEngelen Oct 31, 2025
f24456d
Make zarr an optional dependency in imod.common.serializer.zarrserial…
JoerivanEngelen Oct 31, 2025
286c71d
Update API docs
JoerivanEngelen Oct 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/api/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ Added

- Added :class:`imod.mf6.Viscosity` package to specify the viscosity of the
groundwater flow model.
- Functionality to dump and load MODFLOW 6 simulations to/from zarr and zipstore
formats. See :meth:`imod.mf6.Modflow6Simulation.dump` and
:meth:`imod.mf6.Modflow6Simulation.from_file` for more information.


[1.0.0rc7] - 2025-10-28
-----------------------
Expand Down
74 changes: 37 additions & 37 deletions docs/api/mf6.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Discretization
StructuredDiscretization.get_regrid_methods
StructuredDiscretization.regrid_like
StructuredDiscretization.from_file
StructuredDiscretization.to_netcdf
StructuredDiscretization.to_file
StructuredDiscretization.copy
StructuredDiscretization.clip_box
StructuredDiscretization.mask
Expand All @@ -91,7 +91,7 @@ Discretization
VerticesDiscretization.get_regrid_methods
VerticesDiscretization.regrid_like
VerticesDiscretization.from_file
VerticesDiscretization.to_netcdf
VerticesDiscretization.to_file
VerticesDiscretization.copy
VerticesDiscretization.clip_box
VerticesDiscretization.mask
Expand All @@ -100,7 +100,7 @@ Discretization
TimeDiscretization
TimeDiscretization.write
TimeDiscretization.from_file
TimeDiscretization.to_netcdf
TimeDiscretization.to_file
TimeDiscretization.copy
TimeDiscretization.clip_box
TimeDiscretization.mask
Expand All @@ -110,7 +110,7 @@ Discretization
AdaptiveTimeStepping
AdaptiveTimeStepping.write
AdaptiveTimeStepping.from_file
AdaptiveTimeStepping.to_netcdf
AdaptiveTimeStepping.to_file
AdaptiveTimeStepping.copy
AdaptiveTimeStepping.clip_box
AdaptiveTimeStepping.mask
Expand All @@ -128,7 +128,7 @@ Model settings
OutputControl.is_budget_output
OutputControl.write
OutputControl.from_file
OutputControl.to_netcdf
OutputControl.to_file
OutputControl.copy
OutputControl.clip_box
OutputControl.mask
Expand All @@ -138,7 +138,7 @@ Model settings
Solution
Solution.write
Solution.from_file
Solution.to_netcdf
Solution.to_file
Solution.copy
Solution.clip_box
Solution.mask
Expand All @@ -159,7 +159,7 @@ Flow Packages
ApiPackage
ApiPackage.write
ApiPackage.from_file
ApiPackage.to_netcdf
ApiPackage.to_file
ApiPackage.copy
ApiPackage.is_empty
ApiPackage.get_regrid_methods
Expand All @@ -169,7 +169,7 @@ Flow Packages
Buoyancy
Buoyancy.write
Buoyancy.from_file
Buoyancy.to_netcdf
Buoyancy.to_file
Buoyancy.copy
Buoyancy.is_empty
Buoyancy.get_regrid_methods
Expand All @@ -184,7 +184,7 @@ Flow Packages
ConstantHead.clip_box
ConstantHead.write
ConstantHead.from_file
ConstantHead.to_netcdf
ConstantHead.to_file
ConstantHead.copy
ConstantHead.is_empty
ConstantHead.get_regrid_methods
Expand All @@ -196,7 +196,7 @@ Flow Packages
Drainage.clip_box
Drainage.write
Drainage.from_file
Drainage.to_netcdf
Drainage.to_file
Drainage.copy
Drainage.is_empty
Drainage.get_regrid_methods
Expand All @@ -208,7 +208,7 @@ Flow Packages
Evapotranspiration.clip_box
Evapotranspiration.write
Evapotranspiration.from_file
Evapotranspiration.to_netcdf
Evapotranspiration.to_file
Evapotranspiration.copy
Evapotranspiration.is_empty
Evapotranspiration.get_regrid_methods
Expand All @@ -220,7 +220,7 @@ Flow Packages
GeneralHeadBoundary.clip_box
GeneralHeadBoundary.write
GeneralHeadBoundary.from_file
GeneralHeadBoundary.to_netcdf
GeneralHeadBoundary.to_file
GeneralHeadBoundary.copy
GeneralHeadBoundary.is_empty
GeneralHeadBoundary.get_regrid_methods
Expand All @@ -232,7 +232,7 @@ Flow Packages
HorizontalFlowBarrierHydraulicCharacteristic.snap_to_grid
HorizontalFlowBarrierHydraulicCharacteristic.write
HorizontalFlowBarrierHydraulicCharacteristic.from_file
HorizontalFlowBarrierHydraulicCharacteristic.to_netcdf
HorizontalFlowBarrierHydraulicCharacteristic.to_file
HorizontalFlowBarrierHydraulicCharacteristic.copy
HorizontalFlowBarrierHydraulicCharacteristic.is_empty
HorizontalFlowBarrierHydraulicCharacteristic.get_regrid_methods
Expand All @@ -244,7 +244,7 @@ Flow Packages
HorizontalFlowBarrierMultiplier.snap_to_grid
HorizontalFlowBarrierMultiplier.write
HorizontalFlowBarrierMultiplier.from_file
HorizontalFlowBarrierMultiplier.to_netcdf
HorizontalFlowBarrierMultiplier.to_file
HorizontalFlowBarrierMultiplier.copy
HorizontalFlowBarrierMultiplier.is_empty
HorizontalFlowBarrierMultiplier.get_regrid_methods
Expand All @@ -257,7 +257,7 @@ Flow Packages
HorizontalFlowBarrierResistance.snap_to_grid
HorizontalFlowBarrierResistance.write
HorizontalFlowBarrierResistance.from_file
HorizontalFlowBarrierResistance.to_netcdf
HorizontalFlowBarrierResistance.to_file
HorizontalFlowBarrierResistance.copy
HorizontalFlowBarrierResistance.is_empty
HorizontalFlowBarrierResistance.get_regrid_methods
Expand All @@ -273,7 +273,7 @@ Flow Packages
LayeredWell.clip_box
LayeredWell.write
LayeredWell.from_file
LayeredWell.to_netcdf
LayeredWell.to_file
LayeredWell.copy
LayeredWell.is_empty
LayeredWell.get_regrid_methods
Expand All @@ -284,7 +284,7 @@ Flow Packages
InitialConditions.clip_box
InitialConditions.write
InitialConditions.from_file
InitialConditions.to_netcdf
InitialConditions.to_file
InitialConditions.copy
InitialConditions.is_empty
InitialConditions.get_regrid_methods
Expand All @@ -295,7 +295,7 @@ Flow Packages
NodePropertyFlow.clip_box
NodePropertyFlow.write
NodePropertyFlow.from_file
NodePropertyFlow.to_netcdf
NodePropertyFlow.to_file
NodePropertyFlow.copy
NodePropertyFlow.is_empty
NodePropertyFlow.get_regrid_methods
Expand All @@ -307,7 +307,7 @@ Flow Packages
Recharge.clip_box
Recharge.write
Recharge.from_file
Recharge.to_netcdf
Recharge.to_file
Recharge.copy
Recharge.is_empty
Recharge.get_regrid_methods
Expand All @@ -321,7 +321,7 @@ Flow Packages
River.clip_box
River.write
River.from_file
River.to_netcdf
River.to_file
River.copy
River.is_empty
River.get_regrid_methods
Expand All @@ -333,7 +333,7 @@ Flow Packages
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.snap_to_grid
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.write
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.from_file
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.to_netcdf
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.to_file
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.copy
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.is_empty
SingleLayerHorizontalFlowBarrierHydraulicCharacteristic.get_regrid_methods
Expand All @@ -345,7 +345,7 @@ Flow Packages
SingleLayerHorizontalFlowBarrierMultiplier.snap_to_grid
SingleLayerHorizontalFlowBarrierMultiplier.write
SingleLayerHorizontalFlowBarrierMultiplier.from_file
SingleLayerHorizontalFlowBarrierMultiplier.to_netcdf
SingleLayerHorizontalFlowBarrierMultiplier.to_file
SingleLayerHorizontalFlowBarrierMultiplier.copy
SingleLayerHorizontalFlowBarrierMultiplier.is_empty
SingleLayerHorizontalFlowBarrierMultiplier.get_regrid_methods
Expand All @@ -359,7 +359,7 @@ Flow Packages
SingleLayerHorizontalFlowBarrierResistance.snap_to_grid
SingleLayerHorizontalFlowBarrierResistance.write
SingleLayerHorizontalFlowBarrierResistance.from_file
SingleLayerHorizontalFlowBarrierResistance.to_netcdf
SingleLayerHorizontalFlowBarrierResistance.to_file
SingleLayerHorizontalFlowBarrierResistance.copy
SingleLayerHorizontalFlowBarrierResistance.is_empty
SingleLayerHorizontalFlowBarrierResistance.get_regrid_methods
Expand All @@ -371,7 +371,7 @@ Flow Packages
SpecificStorage.clip_box
SpecificStorage.write
SpecificStorage.from_file
SpecificStorage.to_netcdf
SpecificStorage.to_file
SpecificStorage.copy
SpecificStorage.is_empty
SpecificStorage.get_regrid_methods
Expand All @@ -382,7 +382,7 @@ Flow Packages
StorageCoefficient.clip_box
StorageCoefficient.write
StorageCoefficient.from_file
StorageCoefficient.to_netcdf
StorageCoefficient.to_file
StorageCoefficient.copy
StorageCoefficient.is_empty
StorageCoefficient.get_regrid_methods
Expand All @@ -392,14 +392,14 @@ Flow Packages
UnsaturatedZoneFlow.regrid_like
UnsaturatedZoneFlow.write
UnsaturatedZoneFlow.from_file
UnsaturatedZoneFlow.to_netcdf
UnsaturatedZoneFlow.to_file
UnsaturatedZoneFlow.copy
UnsaturatedZoneFlow.is_empty
UnsaturatedZoneFlow.get_regrid_methods
Viscosity
Viscosity.write
Viscosity.from_file
Viscosity.to_netcdf
Viscosity.to_file
Viscosity.copy
Viscosity.is_empty
Viscosity.get_regrid_methods
Expand All @@ -415,7 +415,7 @@ Flow Packages
Well.clip_box
Well.write
Well.from_file
Well.to_netcdf
Well.to_file
Well.copy
Well.is_empty
Well.get_regrid_methods
Expand All @@ -430,64 +430,64 @@ Transport Packages
AdvectionCentral
AdvectionCentral.write
AdvectionCentral.from_file
AdvectionCentral.to_netcdf
AdvectionCentral.to_file
AdvectionCentral.copy
AdvectionCentral.is_empty
AdvectionCentral.get_regrid_methods
AdvectionTVD
AdvectionTVD.write
AdvectionTVD.from_file
AdvectionTVD.to_netcdf
AdvectionTVD.to_file
AdvectionTVD.copy
AdvectionTVD.is_empty
AdvectionTVD.get_regrid_methods
AdvectionUpstream
AdvectionUpstream.write
AdvectionUpstream.from_file
AdvectionUpstream.to_netcdf
AdvectionUpstream.to_file
AdvectionUpstream.copy
AdvectionUpstream.is_empty
AdvectionUpstream.get_regrid_methods
ConstantConcentration
ConstantConcentration.write
ConstantConcentration.from_file
ConstantConcentration.to_netcdf
ConstantConcentration.to_file
ConstantConcentration.copy
ConstantConcentration.is_empty
ConstantConcentration.get_regrid_methods
Dispersion
Dispersion.write
Dispersion.from_file
Dispersion.to_netcdf
Dispersion.to_file
Dispersion.copy
Dispersion.is_empty
Dispersion.get_regrid_methods
ImmobileStorageTransfer
ImmobileStorageTransfer.write
ImmobileStorageTransfer.from_file
ImmobileStorageTransfer.to_netcdf
ImmobileStorageTransfer.to_file
ImmobileStorageTransfer.copy
ImmobileStorageTransfer.is_empty
ImmobileStorageTransfer.get_regrid_methods
MobileStorageTransfer
MobileStorageTransfer.write
MobileStorageTransfer.from_file
MobileStorageTransfer.to_netcdf
MobileStorageTransfer.to_file
MobileStorageTransfer.copy
MobileStorageTransfer.is_empty
MobileStorageTransfer.get_regrid_methods
MassSourceLoading
MassSourceLoading.write
MassSourceLoading.from_file
MassSourceLoading.to_netcdf
MassSourceLoading.to_file
MassSourceLoading.copy
MassSourceLoading.is_empty
MassSourceLoading.get_regrid_methods
SourceSinkMixing
SourceSinkMixing.from_flow_model
SourceSinkMixing.write
SourceSinkMixing.from_file
SourceSinkMixing.to_netcdf
SourceSinkMixing.to_file
SourceSinkMixing.copy
SourceSinkMixing.is_empty
SourceSinkMixing.get_regrid_methods
Expand Down
5 changes: 0 additions & 5 deletions imod/common/interfaces/ipackage.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,3 @@ def _is_regridding_supported(self) -> bool:
@abstractmethod
def _is_grid_agnostic_package(self) -> bool:
raise NotImplementedError

@property
@abc.abstractmethod
def pkg_id(self) -> str:
raise NotImplementedError
5 changes: 5 additions & 0 deletions imod/common/interfaces/ipackagebase.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,8 @@ def dataset(self, value: xr.Dataset) -> None:
@abstractmethod
def _from_dataset(cls, ds: GridDataset):
raise NotImplementedError

@property
@abstractmethod
def pkg_id(self) -> str:
raise NotImplementedError
12 changes: 12 additions & 0 deletions imod/common/interfaces/ipackageserializer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import abc
from pathlib import Path

from imod.common.interfaces.ipackagebase import IPackageBase


class IPackageSerializer(metaclass=abc.ABCMeta):
@abc.abstractmethod
def to_file(
self, pkg: IPackageBase, directory: Path, file_name: str, **kwargs
) -> Path:
raise NotImplementedError
21 changes: 21 additions & 0 deletions imod/common/serializer/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from typing import Literal, TypeAlias

from imod.common.interfaces.ipackageserializer import IPackageSerializer
from imod.common.serializer.netcdfserializer import NetCDFSerializer
from imod.common.serializer.zarrserializer import ZarrSerializer

EngineType: TypeAlias = Literal["netcdf4", "zarr", "zarr.zip"]


def create_package_serializer(
engine: EngineType, mdal_compliant: bool = False, crs: str | None = None
) -> IPackageSerializer:
match engine:
case "netcdf4":
return NetCDFSerializer(mdal_compliant=mdal_compliant, crs=crs)
case "zarr":
return ZarrSerializer(use_zip=False)
case "zarr.zip":
return ZarrSerializer(use_zip=True)
case _:
raise ValueError(f"Unrecognized engine: {engine}")
Loading