Source code for imod.mf6.validation_settings
from dataclasses import dataclass
from typing import cast
from imod.typing import GridDataset
[docs]
@dataclass
class ValidationSettings:
"""
Validation settings for MF6 model validation. Configuring
:class:`imod.mf6.ValidationSettings` can help performance or reduce the
strictness of validation for some packages, namely the Well and HFB package.
Parameters
----------
validate: bool, default=True
Whether to perform validation.
strict_well_validation: bool, default=True
Whether to enforce strict validation for wells. If set to False, faulty
wells are automatically removed during the writing process.
strict_hfb_validation: bool, default=True
Whether to enforce strict validation for HFBs. If set to False, faulty
HFBs are automatically removed during the writing process.
ignore_time: bool, default=False
If True, ignore time dimension in validation. Instead, select first
timestep of dataset. This can save a lot of time during writing when the
time dimension is not relevant for the validation process. Especially
when boundary conditions do not have cell activity changes over time.
Examples
--------
>>> import imod
>>> settings = imod.mf6.ValidationSettings(validate=True, strict_well_validation=False)
You can also set attributes directly after instantiation:
>>> settings.ignore_time = True
You can provide the settings to :class:`imod.mf6.Modflow6Simulations`:
>>> sim = imod.mf6.Modflow6Simulation(validation_context=settings)
"""
validate: bool = True
strict_well_validation: bool = True
strict_hfb_validation: bool = True
ignore_time: bool = False
def trim_time_dimension(ds: GridDataset, **kwargs) -> GridDataset:
"""
Prepare object for validation, drop time dimension if
ignore_time_no_data is set in validation context.
"""
if "validation_context" in kwargs:
validation_context = cast(ValidationSettings, kwargs["validation_context"])
if validation_context.ignore_time:
# If ignore_time_no_data is set, we can ignore time dimension
return ds.isel(time=0, missing_dims="ignore")
return ds