ravenpy.config.emulators package

ravenpy.config.emulators.get_model(name)[source]

Return the corresponding Raven emulator configuration class.

Parameters:

name (str) – Model class name or model identifier.

Return type:

Raven model configuration class

Submodules

ravenpy.config.emulators.blended module

class ravenpy.config.emulators.blended.Blended(*, EnKFMode: ~ravenpy.config.options.EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | ~pathlib.Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: ~typing.Sequence[~ravenpy.config.commands.ForcingPerturbation] | None = None, AssimilatedState: ~typing.Sequence[~ravenpy.config.commands.AssimilatedState] | None = None, AssimilateStreamflow: ~typing.Sequence[~ravenpy.config.commands.AssimilateStreamflow] | None = None, ObservationErrorModel: ~typing.Sequence[~ravenpy.config.commands.ObservationErrorModel] | None = None, params: ~types.Params = Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'), X22=Variable('X22'), X23=Variable('X23'), X24=Variable('X24'), X25=Variable('X25'), X26=Variable('X26'), X27=Variable('X27'), X28=Variable('X28'), X29=Variable('X29'), X30=Variable('X30'), X31=Variable('X31'), X32=Variable('X32'), X33=Variable('X33'), X34=Variable('X34'), X35=Variable('X35'), R01=Variable('R01'), R02=Variable('R02'), R03=Variable('R03'), R04=Variable('R04'), R05=Variable('R05'), R06=Variable('R06'), R07=Variable('R07'), R08=Variable('R08')), SoilClasses: ~ravenpy.config.commands.SoilClasses = [{'name': 'TOPSOIL'}, {'name': 'PHREATIC'}, {'name': 'DEEP_GW'}], SoilProfiles: ~ravenpy.config.commands.SoilProfiles = [{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'PHREATIC', 'DEEP_GW'), 'thicknesses': (Variable('X29'), Variable('X30'), 1000000.0)}], VegetationClasses: ~ravenpy.config.commands.VegetationClasses = [{'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5, 'name': 'FOREST'}], LandUseClasses: ~ravenpy.config.commands.LandUseClasses = [LandUseClass(name='FOREST', impermeable_frac=0.0, forest_coverage=0.02345)], TerrainClasses: ~ravenpy.config.commands.TerrainClasses = [TerrainClass(name='DEFAULT_T', hillslope_length=1.0, drainage_density=1.0, topmodel_lambda=Variable('X07'))], SoilParameterList: ~ravenpy.config.commands.SoilParameterList = {'parameters': ('POROSITY', 'PERC_COEFF', 'PET_CORRECTION', 'BASEFLOW_COEFF', 'B_EXP', 'HBV_BETA', 'MAX_BASEFLOW_RATE', 'BASEFLOW_N', 'FIELD_CAPACITY', 'SAT_WILT'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('X28'), Variable('X08'), Variable('X04'), Variable('X02'), Variable('X03'), Variable('X05'), Variable('X06'), Variable('X10'), Variable('X09'))), ParameterList(name='PHREATIC', values=(1.0, Variable('X35'), 0.0, Variable('X11'), 0.0, 0.0, 0.0, Variable('X12'), 0.0, 0.0)), ParameterList(name='DEEP_GW', values=(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))]}, LandUseParameterList: ~ravenpy.config.commands.LandUseParameterList = {'parameters': ('MIN_MELT_FACTOR', 'MAX_MELT_FACTOR', 'DD_MELT_TEMP', 'DD_AGGRADATION', 'REFREEZE_FACTOR', 'REFREEZE_EXP', 'DD_REFREEZE_TEMP', 'HMETS_RUNOFF_COEFF', 'GAMMA_SHAPE', 'GAMMA_SCALE', 'GAMMA_SHAPE2', 'GAMMA_SCALE2', 'FOREST_SPARSENESS'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X24'), Variable('X25'), Variable('X26'), Variable('X27'), Variable('X18'), Variable('X17'), Variable('X16'), Variable('X01'), Variable('X20'), Variable('X21'), Variable('X22'), Variable('X23'), 0.0))]}, VegetationParameterList: ~ravenpy.config.commands.VegetationParameterList = {'parameters': ('RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT', 'SAI_HT_RATIO'), 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0, 0.0))]}, ChannelProfile: ~typing.Sequence[~ravenpy.config.commands.ChannelProfile] | None = None, global_parameter: ~typing.Dict = {'RAINSNOW_DELTA': Variable('X32'), 'RAINSNOW_TEMP': Variable('X31'), 'SNOW_SWI': Variable('X19'), 'SNOW_SWI_MAX': Variable('X14'), 'SNOW_SWI_MIN': Variable('X13'), 'SWI_REDUCT_COEFF': Variable('X15')}, RainSnowTransition: ~ravenpy.config.commands.RainSnowTransition | None = None, SeasonalRelativeLAI: ~ravenpy.config.commands.SeasonalRelativeLAI = SeasonalRelativeLAI(root=(<ravenpy.config.commands._MonthlyRecord object>,)), SeasonalRelativeHeight: ~ravenpy.config.commands.SeasonalRelativeHeight = SeasonalRelativeHeight(root=(<ravenpy.config.commands._MonthlyRecord object>,)), Gauge: ~typing.Sequence[~ravenpy.config.commands.Gauge] | None = None, StationForcing: ~typing.Sequence[~ravenpy.config.commands.StationForcing] | None = None, GriddedForcing: ~typing.Sequence[~ravenpy.config.commands.GriddedForcing] | None = None, ObservationData: ~typing.Sequence[~ravenpy.config.commands.ObservationData] | None = None, SubBasins: ~ravenpy.config.commands.SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: ~typing.Sequence[~ravenpy.config.commands.SubBasinGroup] | None = None, SubBasinProperties: ~ravenpy.config.commands.SubBasinProperties | None = None, SBGroupPropertyMultiplier: ~typing.Sequence[~ravenpy.config.commands.SBGroupPropertyMultiplier] | None = None, HRUs: ~ravenpy.config.emulators.blended.HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='DEFAULT_T', slope=0.0, aspect=0.0, hru_type=None)], HRUGroup: ~typing.Sequence[~ravenpy.config.commands.HRUGroup] | None = None, Reservoirs: ~typing.Sequence[~ravenpy.config.commands.Reservoir] | None = None, HRUStateVariableTable: ~ravenpy.config.commands.HRUStateVariableTable = [HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X29'), 500)), 'SOIL[1]': Product((Variable('X30'), 500))})], BasinStateVariables: ~ravenpy.config.commands.BasinStateVariables | None = None, UniformInitialConditions: ~typing.Dict[str, ~pymbolic.primitives.Variable | ~pymbolic.primitives.Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: ~ravenpy.config.options.Calendar = 'PROLEPTIC_GREGORIAN', StartDate: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, AssimilationStartTime: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, EndDate: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: ~ravenpy.config.options.Routing = 'ROUTE_NONE', CatchmentRouting: ~ravenpy.config.options.CatchmentRoute = 'ROUTE_DUMP', Evaporation: ~ravenpy.config.options.Evaporation = Evaporation.OUDIN, OW_Evaporation: ~ravenpy.config.options.Evaporation | None = None, SWRadiationMethod: ~ravenpy.config.options.SWRadiationMethod | None = None, SWCloudCorrect: ~ravenpy.config.options.SWCloudCorrect | None = None, SWCanopyCorrect: ~ravenpy.config.options.SWCanopyCorrect | None = None, LWRadiationMethod: ~ravenpy.config.options.LWRadiationMethod | None = None, WindspeedMethod: ~ravenpy.config.options.WindspeedMethod | None = None, RainSnowFraction: ~ravenpy.config.options.RainSnowFraction = RainSnowFraction.HBV, PotentialMeltMethod: ~ravenpy.config.options.PotentialMeltMethod = PotentialMeltMethod.HMETS, OroTempCorrect: ~ravenpy.config.options.OroTempCorrect | None = None, OroPrecipCorrect: ~ravenpy.config.options.OroPrecipCorrect | None = None, OroPETCorrect: ~ravenpy.config.options.OroPETCorrect | None = None, CloudCoverMethod: ~ravenpy.config.options.CloudCoverMethod | None = None, PrecipIceptFract: ~ravenpy.config.options.PrecipIceptFract | None = None, SubdailyMethod: ~ravenpy.config.options.SubdailyMethod | None = None, MonthlyInterpolationMethod: ~ravenpy.config.options.MonthlyInterpolationMethod | None = None, SoilModel: ~ravenpy.config.commands.SoilModel = 3, TemperatureCorrection: bool | None = None, LakeStorage: ~typing.Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: ~typing.Sequence[str] | None = None, HydrologicProcesses: ~typing.Sequence[~ravenpy.config.commands.Process | ~ravenpy.config.processes.ProcessGroup] = [Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), ProcessGroup(p=[Infiltration(algo='INF_HMETS', source='PONDED_WATER', to=['MULTIPLE']), Infiltration(algo='INF_VIC_ARNO', source='PONDED_WATER', to=['MULTIPLE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE'])], params=[Variable('R01'), Variable('R02')]), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[0]', to=['CONVOLUTION[1]']), ProcessGroup(p=[Baseflow(algo='BASE_LINEAR_ANALYTIC', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_VIC', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_TOPMODEL', source='SOIL[0]', to=['SURFACE_WATER'])], params=(Variable('R03'), Variable('R04'))), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[1]', to=['CONVOLUTION[1]']), Percolation(algo='PERC_LINEAR', source='SOIL[1]', to=['SOIL[2]']), ProcessGroup(p=[SoilEvaporation(algo='SOILEVAP_ALL', source='SOIL[0]', to=['ATMOSPHERE']), SoilEvaporation(algo='SOILEVAP_TOPMODEL', source='SOIL[0]', to=['ATMOSPHERE'])], params=(Variable('R05'),)), Convolve(algo='CONVOL_GAMMA', source='CONVOLUTION[0]', to=['SURFACE_WATER']), Convolve(algo='CONVOL_GAMMA_2', source='CONVOLUTION[1]', to=['SURFACE_WATER']), ProcessGroup(p=[Baseflow(algo='BASE_LINEAR_ANALYTIC', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER'])], params=[Variable('R06')]), ProcessGroup(p=[SnowBalance(algo='SNOBAL_HMETS', source='MULTIPLE', to=['MULTIPLE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), SnowBalance(algo='SNOBAL_HBV', source='MULTIPLE', to=['MULTIPLE'])], params=(Variable('R07'), Variable('R08')))], EvaluationMetrics: ~typing.Sequence[~ravenpy.config.options.EvaluationMetrics] | None = None, EvaluationPeriod: ~typing.Sequence[~ravenpy.config.commands.EvaluationPeriod] | None = None, EnsembleMode: ~ravenpy.config.commands.EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: ~typing.Dict[str, str] = {'model_id': 'Blended'}, CustomOutput: ~typing.Sequence[~ravenpy.config.commands.CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Blended hydrological model for blending outputs from different submodules.

References

Mai, J., Craig, J. R., and Tolson, B. A.: Simultaneously determining global sensitivities of model parameters and model structure, Hydrol. Earth Syst. Sci., 24, 5835–5858, https://doi.org/10.5194/hess-24-5835-2020, 2020.

Chlumsky, R., Mai, J., Craig, J. R., & Tolson, B. A. (2021). Simultaneous calibration of hydrologic model structure and parameters using a blended model. Water Resources Research, 57, e2020WR029229. https://doi.org/10.1029/2020WR029229

calendar: Calendar
catchment_route: CatchmentRoute
evaporation: Evaporation
global_parameter: Dict
hru_state_variable_table: HRUStateVariableTable
hrus: HRUs
hydrologic_processes: Sequence[Process | ProcessGroup]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_DUMP', alias='CatchmentRouting', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.OUDIN: 'PET_OUDIN'>, alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict, required=False, default={'SNOW_SWI_MIN': Variable('X13'), 'SNOW_SWI_MAX': Variable('X14'), 'SWI_REDUCT_COEFF': Variable('X15'), 'SNOW_SWI': Variable('X19'), 'RAINSNOW_TEMP': Variable('X31'), 'RAINSNOW_DELTA': Variable('X32')}), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=HRUStateVariableTable, required=False, default=[HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X29'), 500)), 'SOIL[1]': Product((Variable('X30'), 500))})], alias='HRUStateVariableTable', alias_priority=2), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='DEFAULT_T', slope=0.0, aspect=0.0, hru_type=None)], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.ProcessGroup]], required=False, default=[Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), ProcessGroup(p=[Infiltration(algo='INF_HMETS', source='PONDED_WATER', to=['MULTIPLE']), Infiltration(algo='INF_VIC_ARNO', source='PONDED_WATER', to=['MULTIPLE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE'])], params=[Variable('R01'), Variable('R02')]), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[0]', to=['CONVOLUTION[1]']), ProcessGroup(p=[Baseflow(algo='BASE_LINEAR_ANALYTIC', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_VIC', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_TOPMODEL', source='SOIL[0]', to=['SURFACE_WATER'])], params=(Variable('R03'), Variable('R04'))), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[1]', to=['CONVOLUTION[1]']), Percolation(algo='PERC_LINEAR', source='SOIL[1]', to=['SOIL[2]']), ProcessGroup(p=[SoilEvaporation(algo='SOILEVAP_ALL', source='SOIL[0]', to=['ATMOSPHERE']), SoilEvaporation(algo='SOILEVAP_TOPMODEL', source='SOIL[0]', to=['ATMOSPHERE'])], params=(Variable('R05'),)), Convolve(algo='CONVOL_GAMMA', source='CONVOLUTION[0]', to=['SURFACE_WATER']), Convolve(algo='CONVOL_GAMMA_2', source='CONVOLUTION[1]', to=['SURFACE_WATER']), ProcessGroup(p=[Baseflow(algo='BASE_LINEAR_ANALYTIC', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER'])], params=[Variable('R06')]), ProcessGroup(p=[SnowBalance(algo='SNOBAL_HMETS', source='MULTIPLE', to=['MULTIPLE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), SnowBalance(algo='SNOBAL_HBV', source='MULTIPLE', to=['MULTIPLE'])], params=(Variable('R07'), Variable('R08')))], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[LandUseClass(name='FOREST', impermeable_frac=0.0, forest_coverage=0.02345)], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ('MIN_MELT_FACTOR', 'MAX_MELT_FACTOR', 'DD_MELT_TEMP', 'DD_AGGRADATION', 'REFREEZE_FACTOR', 'REFREEZE_EXP', 'DD_REFREEZE_TEMP', 'HMETS_RUNOFF_COEFF', 'GAMMA_SHAPE', 'GAMMA_SCALE', 'GAMMA_SHAPE2', 'GAMMA_SCALE2', 'FOREST_SPARSENESS'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X24'), Variable('X25'), Variable('X26'), Variable('X27'), Variable('X18'), Variable('X17'), Variable('X16'), Variable('X01'), Variable('X20'), Variable('X21'), Variable('X22'), Variable('X23'), 0.0))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'Blended'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=Params, required=False, default=Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'), X22=Variable('X22'), X23=Variable('X23'), X24=Variable('X24'), X25=Variable('X25'), X26=Variable('X26'), X27=Variable('X27'), X28=Variable('X28'), X29=Variable('X29'), X30=Variable('X30'), X31=Variable('X31'), X32=Variable('X32'), X33=Variable('X33'), X34=Variable('X34'), X35=Variable('X35'), R01=Variable('R01'), R02=Variable('R02'), R03=Variable('R03'), R04=Variable('R04'), R05=Variable('R05'), R06=Variable('R06'), R07=Variable('R07'), R08=Variable('R08'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default=<PotentialMeltMethod.HMETS: 'POTMELT_HMETS'>, alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=Union[PrecipIceptFract, NoneType], required=False, default_factory=<lambda>, alias='PrecipIceptFract', alias_priority=2, validate_default=False), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default=<RainSnowFraction.HBV: 'RAINSNOW_HBV'>, alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=SeasonalRelativeHeight, required=False, default=SeasonalRelativeHeight(root=(<ravenpy.config.commands._MonthlyRecord object>,)), alias='SeasonalRelativeHeight', alias_priority=2), 'seasonal_relative_lai': FieldInfo(annotation=SeasonalRelativeLAI, required=False, default=SeasonalRelativeLAI(root=(<ravenpy.config.commands._MonthlyRecord object>,)), alias='SeasonalRelativeLAI', alias_priority=2), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL'}, {'name': 'PHREATIC'}, {'name': 'DEEP_GW'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=3, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'PERC_COEFF', 'PET_CORRECTION', 'BASEFLOW_COEFF', 'B_EXP', 'HBV_BETA', 'MAX_BASEFLOW_RATE', 'BASEFLOW_N', 'FIELD_CAPACITY', 'SAT_WILT'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('X28'), Variable('X08'), Variable('X04'), Variable('X02'), Variable('X03'), Variable('X05'), Variable('X06'), Variable('X10'), Variable('X09'))), ParameterList(name='PHREATIC', values=(1.0, Variable('X35'), 0.0, Variable('X11'), 0.0, 0.0, 0.0, Variable('X12'), 0.0, 0.0)), ParameterList(name='DEEP_GW', values=(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'PHREATIC', 'DEEP_GW'), 'thicknesses': (Variable('X29'), Variable('X30'), 1000000.0)}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=TerrainClasses, required=False, default=[TerrainClass(name='DEFAULT_T', hillslope_length=1.0, drainage_density=1.0, topmodel_lambda=Variable('X07'))], alias='TerrainClasses', alias_priority=2), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'FOREST', 'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ('RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT', 'SAI_HT_RATIO'), 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0, 0.0))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
params: Params
potential_melt_method: PotentialMeltMethod
rain_snow_fraction: RainSnowFraction
routing: Routing
seasonal_relative_height: SeasonalRelativeHeight
seasonal_relative_lai: SeasonalRelativeLAI
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basins: SubBasins
terrain_classes: TerrainClasses
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.blended.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.blended.LandHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU]
class ravenpy.config.emulators.blended.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'FOREST', veg_class: str = 'FOREST', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = 'DEFAULT_T', slope: float = 0.0, aspect: float = 0.0, hru_type: str | None = None)[source]

Bases: HRU

aquifer_profile: str
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'land_use_class': FieldInfo(annotation=str, required=False, default='FOREST'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='DEFAULT_T'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str

ravenpy.config.emulators.canadianshield module

class ravenpy.config.emulators.canadianshield.BedRockHRU(*, hru_id: int = 2, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'FOREST', veg_class: str = 'FOREST', soil_profile: str = 'SOILP_BEDROCK', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: str | None = None)[source]

Bases: HRU

aquifer_profile: str
hru_id: int
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=2), 'hru_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'land_use_class': FieldInfo(annotation=str, required=False, default='FOREST'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='SOILP_BEDROCK'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.canadianshield.CanadianShield(*, EnKFMode: ~ravenpy.config.options.EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | ~pathlib.Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: ~typing.Sequence[~ravenpy.config.commands.ForcingPerturbation] | None = None, AssimilatedState: ~typing.Sequence[~ravenpy.config.commands.AssimilatedState] | None = None, AssimilateStreamflow: ~typing.Sequence[~ravenpy.config.commands.AssimilateStreamflow] | None = None, ObservationErrorModel: ~typing.Sequence[~ravenpy.config.commands.ObservationErrorModel] | None = None, params: ~types.Params = Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'), X22=Variable('X22'), X23=Variable('X23'), X24=Variable('X24'), X25=Variable('X25'), X26=Variable('X26'), X27=Variable('X27'), X28=Variable('X28'), X29=Variable('X29'), X30=Variable('X30'), X31=Variable('X31'), X32=Variable('X32'), X33=Variable('X33'), X34=Variable('X34')), SoilClasses: ~ravenpy.config.commands.SoilClasses = [{'name': 'TOPSOIL'}, {'name': 'VADOSE'}, {'name': 'FRACBEDROCK'}], SoilProfiles: ~ravenpy.config.commands.SoilProfiles = [{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'SOILP_ORG', 'soil_classes': ('TOPSOIL', 'VADOSE', 'FRACBEDROCK'), 'thicknesses': (Variable('X01'), Variable('X02'), Variable('X03'))}, {'name': 'SOILP_BEDROCK', 'soil_classes': ('TOPSOIL', 'VADOSE', 'FRACBEDROCK'), 'thicknesses': (Variable('X01'), 0, Variable('X03'))}], VegetationClasses: ~ravenpy.config.commands.VegetationClasses = [{'max_ht': 5, 'max_lai': 5, 'max_leaf_cond': 5, 'name': 'FOREST'}], LandUseClasses: ~ravenpy.config.commands.LandUseClasses = [LandUseClass(name='FOREST', impermeable_frac=0.0, forest_coverage=0.02345)], TerrainClasses: ~ravenpy.config.commands.TerrainClasses | None = None, SoilParameterList: ~ravenpy.config.commands.SoilParameterList = {'parameters': ('POROSITY', 'HBV_BETA', 'BASEFLOW_COEFF', 'BASEFLOW_N', 'MAX_INTERFLOW_RATE', 'FIELD_CAPACITY', 'SAT_WILT', 'MAX_PERC_RATE', 'PET_CORRECTION'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('X07'), 0.0, 0.0, Variable('X12'), Variable('X06'), Variable('X05'), Variable('X13'), Variable('X04'))), ParameterList(name='VADOSE', values=(1.0, 0.0, Variable('X08'), Variable('X10'), 0.0, 0.0, 0.0, Variable('X14'), 0.0)), ParameterList(name='FRACBEDROCK', values=(1.0, 0.0, Variable('X09'), Variable('X11'), 0.0, 0.0, 0.0, 0.0, 0.0))]}, LandUseParameterList: ~ravenpy.config.commands.LandUseParameterList = {'parameters': ('FOREST_SPARSENESS', 'MELT_FACTOR', 'DD_MELT_TEMP', 'REFREEZE_FACTOR', 'DEP_MAX', 'OW_PET_CORR'), 'pl': [ParameterList(name='FOREST', values=(0.0, Variable('X25'), Variable('X24'), Variable('X23'), Variable('X26'), Variable('X27')))]}, VegetationParameterList: ~ravenpy.config.commands.VegetationParameterList = {'parameters': ('SVF_EXTINCTION', 'SAI_HT_RATIO', 'RAIN_ICEPT_FACT', 'SNOW_ICEPT_FACT', 'MAX_CAPACITY', 'MAX_SNOW_CAPACITY'), 'pl': [ParameterList(name='FOREST', values=(0.5, 1.0, Variable('X28'), Variable('X29'), Variable('X30'), Variable('X31')))]}, ChannelProfile: ~typing.Sequence[~ravenpy.config.commands.ChannelProfile] | None = None, global_parameter: ~typing.Dict = {'MAX_SWE_SURFACE': Variable('X21'), 'RAINSNOW_DELTA': Variable('X20'), 'RAINSNOW_TEMP': Variable('X19'), 'SNOW_SWI': Variable('X15'), 'SNOW_SWI_MAX': Variable('X17'), 'SNOW_SWI_MIN': Variable('X16'), 'SWI_REDUCT_COEFF': Variable('X18'), 'TOC_MULTIPLIER': Variable('X22')}, RainSnowTransition: ~ravenpy.config.commands.RainSnowTransition | None = None, SeasonalRelativeLAI: ~ravenpy.config.commands.SeasonalRelativeLAI = SeasonalRelativeLAI(root=(<ravenpy.config.commands._MonthlyRecord object>,)), SeasonalRelativeHeight: ~ravenpy.config.commands.SeasonalRelativeHeight = SeasonalRelativeHeight(root=(<ravenpy.config.commands._MonthlyRecord object>,)), Gauge: ~typing.Sequence[~ravenpy.config.commands.Gauge] | None = None, StationForcing: ~typing.Sequence[~ravenpy.config.commands.StationForcing] | None = None, GriddedForcing: ~typing.Sequence[~ravenpy.config.commands.GriddedForcing] | None = None, ObservationData: ~typing.Sequence[~ravenpy.config.commands.ObservationData] | None = None, SubBasins: ~ravenpy.config.commands.SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: ~typing.Sequence[~ravenpy.config.commands.SubBasinGroup] | None = None, SubBasinProperties: ~ravenpy.config.commands.SubBasinProperties | None = None, SBGroupPropertyMultiplier: ~typing.Sequence[~ravenpy.config.commands.SBGroupPropertyMultiplier] | None = None, HRUs: ~ravenpy.config.emulators.canadianshield.HRUs = [OrganicHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='SOILP_ORG', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None), BedRockHRU(hru_id=2, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='SOILP_BEDROCK', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], HRUGroup: ~typing.Sequence[~ravenpy.config.commands.HRUGroup] | None = None, Reservoirs: ~typing.Sequence[~ravenpy.config.commands.Reservoir] | None = None, HRUStateVariableTable: ~ravenpy.config.commands.HRUStateVariableTable = [HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X01'), 500)), 'SOIL[1]': Product((Variable('X02'), 500)), 'SOIL[2]': Product((Variable('X03'), 500))}), HRUState(hru_id=2, data={'SOIL[0]': Product((Variable('X01'), 500)), 'SOIL[1]': Product((Variable('X02'), 500)), 'SOIL[2]': Product((Variable('X03'), 500))})], BasinStateVariables: ~ravenpy.config.commands.BasinStateVariables | None = None, UniformInitialConditions: ~typing.Dict[str, ~pymbolic.primitives.Variable | ~pymbolic.primitives.Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: ~ravenpy.config.options.Calendar = 'PROLEPTIC_GREGORIAN', StartDate: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, AssimilationStartTime: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, EndDate: ~datetime.date | ~datetime.datetime | ~cftime._cftime.datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: ~ravenpy.config.options.Routing = 'ROUTE_NONE', CatchmentRouting: ~ravenpy.config.options.CatchmentRoute = 'ROUTE_TRI_CONVOLUTION', Evaporation: ~ravenpy.config.options.Evaporation = Evaporation.HARGREAVES_1985, OW_Evaporation: ~ravenpy.config.options.Evaporation = Evaporation.HARGREAVES_1985, SWRadiationMethod: ~ravenpy.config.options.SWRadiationMethod | None = None, SWCloudCorrect: ~ravenpy.config.options.SWCloudCorrect | None = None, SWCanopyCorrect: ~ravenpy.config.options.SWCanopyCorrect = SWCanopyCorrect.STATIC, LWRadiationMethod: ~ravenpy.config.options.LWRadiationMethod | None = None, WindspeedMethod: ~ravenpy.config.options.WindspeedMethod | None = None, RainSnowFraction: ~ravenpy.config.options.RainSnowFraction = RainSnowFraction.DINGMAN, PotentialMeltMethod: ~ravenpy.config.options.PotentialMeltMethod = PotentialMeltMethod.DEGREE_DAY, OroTempCorrect: ~ravenpy.config.options.OroTempCorrect | None = None, OroPrecipCorrect: ~ravenpy.config.options.OroPrecipCorrect | None = None, OroPETCorrect: ~ravenpy.config.options.OroPETCorrect | None = None, CloudCoverMethod: ~ravenpy.config.options.CloudCoverMethod | None = None, PrecipIceptFrac: ~ravenpy.config.options.PrecipIceptFract = PrecipIceptFract.LAI, SubdailyMethod: ~ravenpy.config.options.SubdailyMethod | None = None, MonthlyInterpolationMethod: ~ravenpy.config.options.MonthlyInterpolationMethod = MonthlyInterpolationMethod.LINEAR_MID, SoilModel: ~ravenpy.config.commands.SoilModel = 3, TemperatureCorrection: bool | None = None, LakeStorage: ~typing.Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: ~typing.Sequence[str] | None = None, HydrologicProcesses: ~typing.Sequence[~ravenpy.config.commands.Process | ~ravenpy.config.processes.Conditional] = [SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_MAXIMUM', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_MAXIMUM', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_TWO_LAYER', source='MULTIPLE', to=['MULTIPLE']), Abstraction(algo='ABST_FILL', source='PONDED_WATER', to=['DEPRESSION']), OpenWaterEvaporation(algo='OPEN_WATER_EVAP', source='DEPRESSION', to=['ATMOSPHERE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Interflow(algo='INTERFLOW_PRMS', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Baseflow(algo='BASE_POWER_LAW', source='SOIL[2]', to=['SURFACE_WATER']), Percolation(algo='PERC_GAWSER', source='SOIL[0]', to=['SOIL[1]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Percolation(algo='PERC_GAWSER', source='SOIL[1]', to=['SOIL[2]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Percolation(algo='PERC_GAWSER', source='SOIL[0]', to=['SOIL[2]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_BEDROCK'), SoilEvaporation(algo='SOILEVAP_ROOT', source='SOIL[0]', to=['ATMOSPHERE'])], EvaluationMetrics: ~typing.Sequence[~ravenpy.config.options.EvaluationMetrics] | None = None, EvaluationPeriod: ~typing.Sequence[~ravenpy.config.commands.EvaluationPeriod] | None = None, EnsembleMode: ~ravenpy.config.commands.EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: ~typing.Dict[str, str] = {'model_id': 'CanadianShield'}, CustomOutput: ~typing.Sequence[~ravenpy.config.commands.CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

The Canadian Shield model is a useful configuration of Raven for Canadian shield basins characterized by shallow soils atop rock, with ample exposed rock and lakes. It is a custom model for this type of region, but there is no reference to it in the literature.

calendar: Calendar
catchment_route: CatchmentRoute
classmethod equal_area(hrus)[source]
evaporation: Evaporation
global_parameter: Dict
hru_state_variable_table: HRUStateVariableTable
hrus: HRUs
hydrologic_processes: Sequence[Process | Conditional]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_TRI_CONVOLUTION', alias='CatchmentRouting', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.HARGREAVES_1985: 'PET_HARGREAVES_1985'>, alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict, required=False, default={'SNOW_SWI': Variable('X15'), 'SNOW_SWI_MIN': Variable('X16'), 'SNOW_SWI_MAX': Variable('X17'), 'SWI_REDUCT_COEFF': Variable('X18'), 'RAINSNOW_TEMP': Variable('X19'), 'RAINSNOW_DELTA': Variable('X20'), 'MAX_SWE_SURFACE': Variable('X21'), 'TOC_MULTIPLIER': Variable('X22')}), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=HRUStateVariableTable, required=False, default=[HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X01'), 500)), 'SOIL[1]': Product((Variable('X02'), 500)), 'SOIL[2]': Product((Variable('X03'), 500))}), HRUState(hru_id=2, data={'SOIL[0]': Product((Variable('X01'), 500)), 'SOIL[1]': Product((Variable('X02'), 500)), 'SOIL[2]': Product((Variable('X03'), 500))})], alias='HRUStateVariableTable', alias_priority=2), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[OrganicHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='SOILP_ORG', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None), BedRockHRU(hru_id=2, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='SOILP_BEDROCK', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.Conditional]], required=False, default=[SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_MAXIMUM', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_MAXIMUM', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_TWO_LAYER', source='MULTIPLE', to=['MULTIPLE']), Abstraction(algo='ABST_FILL', source='PONDED_WATER', to=['DEPRESSION']), OpenWaterEvaporation(algo='OPEN_WATER_EVAP', source='DEPRESSION', to=['ATMOSPHERE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Interflow(algo='INTERFLOW_PRMS', source='SOIL[0]', to=['SURFACE_WATER']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Baseflow(algo='BASE_POWER_LAW', source='SOIL[2]', to=['SURFACE_WATER']), Percolation(algo='PERC_GAWSER', source='SOIL[0]', to=['SOIL[1]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Percolation(algo='PERC_GAWSER', source='SOIL[1]', to=['SOIL[2]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_ORG'), Percolation(algo='PERC_GAWSER', source='SOIL[0]', to=['SOIL[2]']), Conditional(kind='HRU_TYPE', op='IS', value='SOIL_BEDROCK'), SoilEvaporation(algo='SOILEVAP_ROOT', source='SOIL[0]', to=['ATMOSPHERE'])], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[LandUseClass(name='FOREST', impermeable_frac=0.0, forest_coverage=0.02345)], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ('FOREST_SPARSENESS', 'MELT_FACTOR', 'DD_MELT_TEMP', 'REFREEZE_FACTOR', 'DEP_MAX', 'OW_PET_CORR'), 'pl': [ParameterList(name='FOREST', values=(0.0, Variable('X25'), Variable('X24'), Variable('X23'), Variable('X26'), Variable('X27')))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=MonthlyInterpolationMethod, required=False, default=<MonthlyInterpolationMethod.LINEAR_MID: 'MONTHINT_LINEAR_MID'>, alias='MonthlyInterpolationMethod', alias_priority=2), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'CanadianShield'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.HARGREAVES_1985: 'PET_HARGREAVES_1985'>, alias='OW_Evaporation', alias_priority=2), 'params': FieldInfo(annotation=Params, required=False, default=Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'), X22=Variable('X22'), X23=Variable('X23'), X24=Variable('X24'), X25=Variable('X25'), X26=Variable('X26'), X27=Variable('X27'), X28=Variable('X28'), X29=Variable('X29'), X30=Variable('X30'), X31=Variable('X31'), X32=Variable('X32'), X33=Variable('X33'), X34=Variable('X34'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default=<PotentialMeltMethod.DEGREE_DAY: 'POTMELT_DEGREE_DAY'>, alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=PrecipIceptFract, required=False, default=<PrecipIceptFract.LAI: 'PRECIP_ICEPT_LAI'>, alias='PrecipIceptFrac', alias_priority=2), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default=<RainSnowFraction.DINGMAN: 'RAINSNOW_DINGMAN'>, alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=SeasonalRelativeHeight, required=False, default=SeasonalRelativeHeight(root=(<ravenpy.config.commands._MonthlyRecord object>,)), alias='SeasonalRelativeHeight', alias_priority=2), 'seasonal_relative_lai': FieldInfo(annotation=SeasonalRelativeLAI, required=False, default=SeasonalRelativeLAI(root=(<ravenpy.config.commands._MonthlyRecord object>,)), alias='SeasonalRelativeLAI', alias_priority=2), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL'}, {'name': 'VADOSE'}, {'name': 'FRACBEDROCK'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=3, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'HBV_BETA', 'BASEFLOW_COEFF', 'BASEFLOW_N', 'MAX_INTERFLOW_RATE', 'FIELD_CAPACITY', 'SAT_WILT', 'MAX_PERC_RATE', 'PET_CORRECTION'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('X07'), 0.0, 0.0, Variable('X12'), Variable('X06'), Variable('X05'), Variable('X13'), Variable('X04'))), ParameterList(name='VADOSE', values=(1.0, 0.0, Variable('X08'), Variable('X10'), 0.0, 0.0, 0.0, Variable('X14'), 0.0)), ParameterList(name='FRACBEDROCK', values=(1.0, 0.0, Variable('X09'), Variable('X11'), 0.0, 0.0, 0.0, 0.0, 0.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'SOILP_ORG', 'soil_classes': ('TOPSOIL', 'VADOSE', 'FRACBEDROCK'), 'thicknesses': (Variable('X01'), Variable('X02'), Variable('X03'))}, {'name': 'SOILP_BEDROCK', 'soil_classes': ('TOPSOIL', 'VADOSE', 'FRACBEDROCK'), 'thicknesses': (Variable('X01'), 0, Variable('X03'))}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=SWCanopyCorrect, required=False, default=<SWCanopyCorrect.STATIC: 'SW_CANOPY_CORR_STATIC'>, alias='SWCanopyCorrect', alias_priority=2), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'FOREST', 'max_ht': 5, 'max_lai': 5, 'max_leaf_cond': 5}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ('SVF_EXTINCTION', 'SAI_HT_RATIO', 'RAIN_ICEPT_FACT', 'SNOW_ICEPT_FACT', 'MAX_CAPACITY', 'MAX_SNOW_CAPACITY'), 'pl': [ParameterList(name='FOREST', values=(0.5, 1.0, Variable('X28'), Variable('X29'), Variable('X30'), Variable('X31')))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(__context: Any) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Parameters:
  • self – The BaseModel instance.

  • __context – The context.

monthly_interpolation_method: MonthlyInterpolationMethod
netcdf_attribute: Dict[str, str]
ow_evaporation: Evaporation
params: Params
potential_melt_method: PotentialMeltMethod
precip_icept_frac: PrecipIceptFract
rain_snow_fraction: RainSnowFraction
routing: Routing
seasonal_relative_height: SeasonalRelativeHeight
seasonal_relative_lai: SeasonalRelativeLAI
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basins: SubBasins
sw_canopy_correct: SWCanopyCorrect
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.canadianshield.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for CanadianShield.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Tuple[ravenpy.config.emulators.canadianshield.OrganicHRU, ravenpy.config.emulators.canadianshield.BedRockHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Tuple[OrganicHRU, BedRockHRU]
class ravenpy.config.emulators.canadianshield.OrganicHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'FOREST', veg_class: str = 'FOREST', soil_profile: str = 'SOILP_ORG', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: str | None = None)[source]

Bases: HRU

aquifer_profile: str
hru_id: int
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1), 'hru_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'land_use_class': FieldInfo(annotation=str, required=False, default='FOREST'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='SOILP_ORG'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str

ravenpy.config.emulators.gr4jcn module

class ravenpy.config.emulators.gr4jcn.GR4JCN(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: P = P(GR4J_X1=Variable('GR4J_X1'), GR4J_X2=Variable('GR4J_X2'), GR4J_X3=Variable('GR4J_X3'), GR4J_X4=Variable('GR4J_X4'), CEMANEIGE_X1=Variable('CEMANEIGE_X1'), CEMANEIGE_X2=Variable('CEMANEIGE_X2')), SoilClasses: SoilClasses = [{'name': 'SOIL_PROD'}, {'name': 'SOIL_ROUT'}, {'name': 'SOIL_TEMP'}, {'name': 'SOIL_GW'}, {'name': 'AQUIFER'}], SoilProfiles: SoilProfiles = [{'name': 'DEFAULT_P', 'soil_classes': ['SOIL_PROD', 'SOIL_ROUT', 'SOIL_TEMP', 'SOIL_GW'], 'thicknesses': [Variable('GR4J_X1'), 0.3, 1, 1]}, {'name': 'LAKE'}], VegetationClasses: VegetationClasses = [{'name': 'VEG_ALL'}, {'name': 'VEG_WATER'}], LandUseClasses: LandUseClasses = [{'name': 'LU_ALL'}, {'name': 'LU_WATER'}], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ('POROSITY', 'GR4J_X3', 'GR4J_X2'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('GR4J_X3'), Variable('GR4J_X2')))]}, LandUseParameterList: LandUseParameterList = {'parameters': ('GR4J_X4', 'MELT_FACTOR'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('GR4J_X4'), 7.73))]}, VegetationParameterList: VegetationParameterList | None = None, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameter: Dict[str, Variable | Expression | float | None] = {'ADIABATIC_LAPSE': 0.0065, 'AIRSNOW_COEFF': Sum((1, Product((-1, Variable('CEMANEIGE_X2'))))), 'AVG_ANNUAL_SNOW': Variable('CEMANEIGE_X1'), 'PRECIP_LAPSE': 0.0004}, RainSnowTransition: RainSnowTransition = {'delta': 1, 'temp': 0}, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties | None = None, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable | None = None, BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = {'SOIL[0]': Quotient(Product((Variable('GR4J_X1'), 1000)), 2), 'SOIL[1]': 15}, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRoute: CatchmentRoute = 'ROUTE_DUMP', Evaporation: Evaporation = 'PET_OUDIN', OW_Evaporation: Evaporation | None = None, SWRadiationMethod: SWRadiationMethod | None = None, SWCloudCorrect: SWCloudCorrect | None = None, SWCanopyCorrect: SWCanopyCorrect | None = None, LWRadiationMethod: LWRadiationMethod | None = None, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction = 'RAINSNOW_DINGMAN', PotentialMeltMethod: PotentialMeltMethod | None = None, OroTempCorrect: OroTempCorrect = OroTempCorrect.SIMPLELAPSE, OroPrecipCorrect: OroPrecipCorrect = OroPrecipCorrect.SIMPLELAPSE, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod | None = None, PrecipIceptFract: PrecipIceptFract | None = None, SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: int | SoilModel = 4, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: Sequence[str] | None = None, HydrologicProcesses: Sequence[Process | Conditional] = [Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), SnowTempEvolve(algo='SNOTEMP_NEWTONS', source='SNOW_TEMP', to=()), SnowBalance(algo='SNOBAL_CEMA_NIEGE', source='SNOW', to=['PONDED_WATER']), OpenWaterEvaporation(algo='OPEN_WATER_EVAP', source='PONDED_WATER', to=['ATMOSPHERE']), Infiltration(algo='INF_GR4J', source='PONDED_WATER', to=['MULTIPLE']), SoilEvaporation(algo='SOILEVAP_GR4J', source='SOIL[0]', to=['ATMOSPHERE']), Percolation(algo='PERC_GR4J', source='SOIL[0]', to=['SOIL[2]']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[2]'], p=None), Split(algo='RAVEN_DEFAULT', source='SOIL[2]', to=('CONVOLUTION[0]', 'CONVOLUTION[1]'), p=0.9), Convolve(algo='CONVOL_GR4J_1', source='CONVOLUTION[0]', to=['SOIL[1]']), Convolve(algo='CONVOL_GR4J_2', source='CONVOLUTION[1]', to=['SOIL[2]']), Percolation(algo='PERC_GR4JEXCH', source='SOIL[1]', to=['SOIL[3]']), Percolation(algo='PERC_GR4JEXCH2', source='SOIL[2]', to=['SOIL[3]']), Flush(algo='RAVEN_DEFAULT', source='SOIL[2]', to=['SURFACE_WATER'], p=None), Baseflow(algo='BASE_GR4J', source='SOIL[1]', to=['SURFACE_WATER'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'GR4JCN'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

GR4J + Cemaneige global hydrological model

References

Perrin, C., C. Michel and V. Andréassian (2003). Improvement of a parsimonious model for streamflow simulation. Journal of Hydrology, 279(1-4), 275-289. doi: 10.1016/S0022-1694(03)00225-7.

Valéry, Audrey, Vazken Andréassian, and Charles Perrin. 2014. “’As Simple as Possible but Not Simpler’: What Is Useful in a Temperature-Based Snow-Accounting Routine? Part 2 - Sensitivity Analysis of the Cemaneige Snow Accounting Routine on 380 Catchments.” Journal of Hydrology, no. 517(0): 1176–87, doi: 10.1016/j.jhydrol.2014.04.058.

calendar: Calendar
catchment_route: CatchmentRoute
evaporation: Evaporation
global_parameter: Dict[str, Variable | Expression | float | None]
hrus: HRUs
hydrologic_processes: Sequence[Process | Conditional]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_DUMP', alias='CatchmentRoute', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default='PET_OUDIN', alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], required=False, default={'PRECIP_LAPSE': 0.0004, 'ADIABATIC_LAPSE': 0.0065, 'AVG_ANNUAL_SNOW': Variable('CEMANEIGE_X1'), 'AIRSNOW_COEFF': Sum((1, Product((-1, Variable('CEMANEIGE_X2')))))}, alias='GlobalParameter', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=Union[HRUStateVariableTable, NoneType], required=False, default_factory=<lambda>, alias='HRUStateVariableTable', alias_priority=2, validate_default=False), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.Conditional]], required=False, default=[Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), SnowTempEvolve(algo='SNOTEMP_NEWTONS', source='SNOW_TEMP', to=()), SnowBalance(algo='SNOBAL_CEMA_NIEGE', source='SNOW', to=['PONDED_WATER']), OpenWaterEvaporation(algo='OPEN_WATER_EVAP', source='PONDED_WATER', to=['ATMOSPHERE']), Infiltration(algo='INF_GR4J', source='PONDED_WATER', to=['MULTIPLE']), SoilEvaporation(algo='SOILEVAP_GR4J', source='SOIL[0]', to=['ATMOSPHERE']), Percolation(algo='PERC_GR4J', source='SOIL[0]', to=['SOIL[2]']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[2]'], p=None), Split(algo='RAVEN_DEFAULT', source='SOIL[2]', to=('CONVOLUTION[0]', 'CONVOLUTION[1]'), p=0.9), Convolve(algo='CONVOL_GR4J_1', source='CONVOLUTION[0]', to=['SOIL[1]']), Convolve(algo='CONVOL_GR4J_2', source='CONVOLUTION[1]', to=['SOIL[2]']), Percolation(algo='PERC_GR4JEXCH', source='SOIL[1]', to=['SOIL[3]']), Percolation(algo='PERC_GR4JEXCH2', source='SOIL[2]', to=['SOIL[3]']), Flush(algo='RAVEN_DEFAULT', source='SOIL[2]', to=['SURFACE_WATER'], p=None), Baseflow(algo='BASE_GR4J', source='SOIL[1]', to=['SURFACE_WATER'])], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[{'name': 'LU_ALL'}, {'name': 'LU_WATER'}], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ('GR4J_X4', 'MELT_FACTOR'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('GR4J_X4'), 7.73))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'GR4JCN'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=OroPrecipCorrect, required=False, default=<OroPrecipCorrect.SIMPLELAPSE: 'OROCORR_SIMPLELAPSE'>, alias='OroPrecipCorrect', alias_priority=2), 'oro_temp_correct': FieldInfo(annotation=OroTempCorrect, required=False, default=<OroTempCorrect.SIMPLELAPSE: 'OROCORR_SIMPLELAPSE'>, alias='OroTempCorrect', alias_priority=2), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=P, required=False, default=P(GR4J_X1=Variable('GR4J_X1'), GR4J_X2=Variable('GR4J_X2'), GR4J_X3=Variable('GR4J_X3'), GR4J_X4=Variable('GR4J_X4'), CEMANEIGE_X1=Variable('CEMANEIGE_X1'), CEMANEIGE_X2=Variable('CEMANEIGE_X2'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt': FieldInfo(annotation=PotentialMeltMethod, required=False, default='POTMELT_DEGREE_DAY', alias='PotentialMeltMethod', alias_priority=2), 'potential_melt_method': FieldInfo(annotation=Union[PotentialMeltMethod, NoneType], required=False, default_factory=<lambda>, alias='PotentialMeltMethod', alias_priority=2, validate_default=False), 'precip_icept_frac': FieldInfo(annotation=Union[PrecipIceptFract, NoneType], required=False, default_factory=<lambda>, alias='PrecipIceptFract', alias_priority=2, validate_default=False), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default='RAINSNOW_DINGMAN', alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=RainSnowTransition, required=False, default={'temp': 0, 'delta': 1}, alias='RainSnowTransition', alias_priority=2), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'SOIL_PROD'}, {'name': 'SOIL_ROUT'}, {'name': 'SOIL_TEMP'}, {'name': 'SOIL_GW'}, {'name': 'AQUIFER'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=Union[int, SoilModel], required=False, default=4, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'GR4J_X3', 'GR4J_X2'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('GR4J_X3'), Variable('GR4J_X2')))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'DEFAULT_P', 'soil_classes': ['SOIL_PROD', 'SOIL_ROUT', 'SOIL_TEMP', 'SOIL_GW'], 'thicknesses': [Variable('GR4J_X1'), 0.3, 1, 1]}, {'name': 'LAKE'}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default={'SOIL[0]': Quotient(Product((Variable('GR4J_X1'), 1000)), 2), 'SOIL[1]': 15}, alias='UniformInitialConditions', alias_priority=2), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'VEG_ALL'}, {'name': 'VEG_WATER'}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=Union[VegetationParameterList, NoneType], required=False, default_factory=<lambda>, alias='VegetationParameterList', alias_priority=2, validate_default=False), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
oro_precip_correct: OroPrecipCorrect
oro_temp_correct: OroTempCorrect
params: P
potential_melt: PotentialMeltMethod
rain_snow_fraction: RainSnowFraction
rain_snow_transition: RainSnowTransition
routing: Routing
soil_classes: SoilClasses
soil_model: int | SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basins: SubBasins
time_step: float | str
uniform_initial_conditions: Dict[str, Variable | Expression | float | None] | None
vegetation_classes: VegetationClasses
write_netcdf_format: bool
class ravenpy.config.emulators.gr4jcn.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[Union[ravenpy.config.emulators.gr4jcn.LandHRU, ravenpy.config.emulators.gr4jcn.LakeHRU]], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU | LakeHRU]
class ravenpy.config.emulators.gr4jcn.LakeHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'LU_WATER', veg_class: str = 'VEG_WATER', soil_profile: str = 'LAKE', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['lake'] = 'lake')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['lake']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['lake'], required=False, default='lake'), 'land_use_class': FieldInfo(annotation=str, required=False, default='LU_WATER'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='LAKE'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='VEG_WATER')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.gr4jcn.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'LU_ALL', veg_class: str = 'VEG_ALL', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['land'] = 'land')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['land']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['land'], required=False, default='land'), 'land_use_class': FieldInfo(annotation=str, required=False, default='LU_ALL'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='VEG_ALL')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.gr4jcn.P(GR4J_X1: Variable | Expression | float | None = Variable('GR4J_X1'), GR4J_X2: Variable | Expression | float | None = Variable('GR4J_X2'), GR4J_X3: Variable | Expression | float | None = Variable('GR4J_X3'), GR4J_X4: Variable | Expression | float | None = Variable('GR4J_X4'), CEMANEIGE_X1: Variable | Expression | float | None = Variable('CEMANEIGE_X1'), CEMANEIGE_X2: Variable | Expression | float | None = Variable('CEMANEIGE_X2'))[source]

Bases: Params

CEMANEIGE_X1: Variable | Expression | float | None = Variable('CEMANEIGE_X1')
CEMANEIGE_X2: Variable | Expression | float | None = Variable('CEMANEIGE_X2')
GR4J_X1: Variable | Expression | float | None = Variable('GR4J_X1')
GR4J_X2: Variable | Expression | float | None = Variable('GR4J_X2')
GR4J_X3: Variable | Expression | float | None = Variable('GR4J_X3')
GR4J_X4: Variable | Expression | float | None = Variable('GR4J_X4')

ravenpy.config.emulators.hbvec module

class ravenpy.config.emulators.hbvec.HBVEC(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: P = P(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21')), SoilClasses: SoilClasses = [{'mineral': (1, 0, 0), 'name': 'TOPSOIL', 'organic': 0}, {'mineral': (1, 0, 0), 'name': 'SLOW_RES', 'organic': 0}, {'mineral': (1, 0, 0), 'name': 'FAST_RES', 'organic': 0}], SoilProfiles: SoilProfiles = [{'name': 'DEFAULT_P', 'soil_classes': ['TOPSOIL', 'FAST_RES', 'SLOW_RES'], 'thicknesses': (Variable('X17'), 100, 100)}], VegetationClasses: VegetationClasses = [{'max_ht': 25, 'max_lai': 6, 'max_leaf_cond': 5.3, 'name': 'VEG_ALL'}], LandUseClasses: LandUseClasses = [{'forest_coverage': 1, 'impermeable_frac': 0, 'name': 'LU_ALL'}], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ['POROSITY', 'FIELD_CAPACITY', 'SAT_WILT', 'HBV_BETA', 'MAX_CAP_RISE_RATE', 'MAX_PERC_RATE', 'BASEFLOW_COEFF', 'BASEFLOW_N'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X05'), Variable('X06'), Variable('X14'), Variable('X07'), Variable('X16'), 0.0, 0.0, 0.0)), ParameterList(name='FAST_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', Variable('X08'), Variable('X09'), Sum((Variable('X15'), 1)))), ParameterList(name='SLOW_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', '_DEFAULT', Variable('X10'), 1.0))]}, LandUseParameterList: LandUseParameterList = {'parameters': ['MELT_FACTOR', 'MIN_MELT_FACTOR', 'HBV_MELT_FOR_CORR', 'REFREEZE_FACTOR', 'HBV_MELT_ASP_CORR', 'HBV_MELT_GLACIER_CORR', 'HBV_GLACIER_KMIN', 'GLAC_STORAGE_COEFF', 'HBV_GLACIER_AG'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X02'), 2.2, Variable('X18'), Variable('X03'), 0.48, 1.64, 0.05, Variable('X19'), 0.05))]}, VegetationParameterList: VegetationParameterList = {'parameters': ['MAX_CAPACITY', 'MAX_SNOW_CAPACITY', 'TFRAIN', 'TFSNOW'], 'pl': [ParameterList(name='VEG_ALL', values=(10000.0, 10000.0, 0.88, 0.88))]}, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameters: Dict = {'AdiabaticLapse': Variable('X13'), 'PRECIP_LAPSE': Variable('X12'), 'SNOW_SWI': Variable('X04')}, RainSnowTransition: RainSnowTransition = {'delta': 2, 'temp': Variable('X01')}, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties = {'parameters': ['TIME_CONC', 'TIME_TO_PEAK'], 'records': [{'sb_id': 1, 'values': (Variable('X11'), Quotient(Variable('X11'), 2))}]}, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, hru_state_variable_table: HRUStateVariableTable = [{'data': {'SOIL[2]': 0.50657}, 'hru_id': 1}], BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRoute: CatchmentRoute = 'TRIANGULAR_UH', Evaporation: Evaporation = 'PET_FROMMONTHLY', OW_Evaporation: Evaporation = 'PET_FROMMONTHLY', SWRadiationMethod: SWRadiationMethod = 'SW_RAD_DEFAULT', SWCloudCorrect: SWCloudCorrect = 'SW_CLOUD_CORR_NONE', SWCanopyCorrect: SWCanopyCorrect = 'SW_CANOPY_CORR_NONE', LWRadiationMethod: LWRadiationMethod = 'LW_RAD_DEFAULT', WindspeedMethod: WindspeedMethod | None = None, rain_snow_fraction: RainSnowFraction = 'RAINSNOW_HBV', PotentialMeltMethod: PotentialMeltMethod = 'POTMELT_HBV', OroTempCorrect: OroTempCorrect = 'OROCORR_HBV', OroPrecipCorrect: OroPrecipCorrect = 'OROCORR_HBV', OroPETCorrect: OroPETCorrect = 'OROCORR_HBV', CloudCoverMethod: CloudCoverMethod = 'CLOUDCOV_NONE', PrecipIcepFract: PrecipIceptFract = 'PRECIP_ICEPT_USER', SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod = 'MONTHINT_LINEAR_21', SoilModel: SoilModel = 3, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] = 'SOIL[2]', DefineHRUGroups: Sequence[str] | None = None, hydrologic_processes: Sequence[Process | Conditional] = [SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_ALL', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_ALL', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['SNOW_LIQ']), Overflow(algo='RAVEN_DEFAULT', source='SNOW_LIQ', to=['PONDED_WATER']), Flush(algo='RAVEN_DEFAULT', source='PONDED_WATER', to=['GLACIER'], p=None), Conditional(kind='HRU_TYPE', op='IS', value='GLACIER'), GlacierMelt(algo='GMELT_HBV', source='GLACIER_ICE', to=['GLACIER']), GlacierRelease(algo='GRELEASE_HBV_EC', source='GLACIER', to=['SURFACE_WATER']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[1]'], p=None), Conditional(kind='HRU_TYPE', op='IS_NOT', value='GLACIER'), SoilEvaporation(algo='SOILEVAP_HBV', source='SOIL[0]', to=['ATMOSPHERE']), CapillaryRise(algo='RISE_HBV', source='SOIL[1]', to=['SOIL[0]']), LakeEvaporation(algo='LAKE_EVAP_BASIC', source='SOIL[2]', to=['ATMOSPHERE']), Percolation(algo='PERC_CONSTANT', source='SOIL[1]', to=['SOIL[2]']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_LINEAR', source='SOIL[2]', to=['SURFACE_WATER'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'HBVEC'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Hydrologiska Byråns Vattenbalansavdelning – Environment Canada (HBV-EC)

References

Lindström, G., et al., 1997. Development and test of the distributed HBV-96 hydrological model. Journal of Hydrology, 201 (1–4), 272–288. doi:10.1016/S0022-1694(97)00041-3

Hamilton, A.S., Hutchinson, D.G., and Moore, R.D., 2000. Estimating winter streamflow using conceptual streamflow model. Journal of Cold Regions Engineering, 14 (4), 158–175. doi:10.1061/(ASCE)0887-381X(2000)14:4(158)

Canadian Hydraulics Centre, 2010. Green kenue reference manual. Ottawa, Ontario: National Research Council.

calendar: Calendar
catchment_route: CatchmentRoute
cloud_cover_method: CloudCoverMethod
evaporation: Evaporation
global_parameter: Dict
hru_state_variable_table: HRUStateVariableTable
hrus: HRUs
hydrologic_processes: Sequence[Process | Conditional]
lake_storage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE']
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
lw_radiation_method: LWRadiationMethod
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='TRIANGULAR_UH', alias='CatchmentRoute', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=CloudCoverMethod, required=False, default='CLOUDCOV_NONE', alias='CloudCoverMethod', alias_priority=2), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default='PET_FROMMONTHLY', alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict, required=False, default={'AdiabaticLapse': Variable('X13'), 'SNOW_SWI': Variable('X04'), 'PRECIP_LAPSE': Variable('X12')}, alias='GlobalParameters', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=HRUStateVariableTable, required=False, default=[{'hru_id': 1, 'data': {'SOIL[2]': 0.50657}}]), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.Conditional]], required=False, default=[SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_ALL', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_ALL', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['SNOW_LIQ']), Overflow(algo='RAVEN_DEFAULT', source='SNOW_LIQ', to=['PONDED_WATER']), Flush(algo='RAVEN_DEFAULT', source='PONDED_WATER', to=['GLACIER'], p=None), Conditional(kind='HRU_TYPE', op='IS', value='GLACIER'), GlacierMelt(algo='GMELT_HBV', source='GLACIER_ICE', to=['GLACIER']), GlacierRelease(algo='GRELEASE_HBV_EC', source='GLACIER', to=['SURFACE_WATER']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[1]'], p=None), Conditional(kind='HRU_TYPE', op='IS_NOT', value='GLACIER'), SoilEvaporation(algo='SOILEVAP_HBV', source='SOIL[0]', to=['ATMOSPHERE']), CapillaryRise(algo='RISE_HBV', source='SOIL[1]', to=['SOIL[0]']), LakeEvaporation(algo='LAKE_EVAP_BASIC', source='SOIL[2]', to=['ATMOSPHERE']), Percolation(algo='PERC_CONSTANT', source='SOIL[1]', to=['SOIL[2]']), Baseflow(algo='BASE_POWER_LAW', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_LINEAR', source='SOIL[2]', to=['SURFACE_WATER'])]), 'lake_storage': FieldInfo(annotation=Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], required=False, default='SOIL[2]', alias='LakeStorage', alias_priority=2), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[{'name': 'LU_ALL', 'impermeable_frac': 0, 'forest_coverage': 1}], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ['MELT_FACTOR', 'MIN_MELT_FACTOR', 'HBV_MELT_FOR_CORR', 'REFREEZE_FACTOR', 'HBV_MELT_ASP_CORR', 'HBV_MELT_GLACIER_CORR', 'HBV_GLACIER_KMIN', 'GLAC_STORAGE_COEFF', 'HBV_GLACIER_AG'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X02'), 2.2, Variable('X18'), Variable('X03'), 0.48, 1.64, 0.05, Variable('X19'), 0.05))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=LWRadiationMethod, required=False, default='LW_RAD_DEFAULT', alias='LWRadiationMethod', alias_priority=2), 'monthly_interpolation_method': FieldInfo(annotation=MonthlyInterpolationMethod, required=False, default='MONTHINT_LINEAR_21', alias='MonthlyInterpolationMethod', alias_priority=2), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'HBVEC'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=OroPETCorrect, required=False, default='OROCORR_HBV', alias='OroPETCorrect', alias_priority=2), 'oro_precip_correct': FieldInfo(annotation=OroPrecipCorrect, required=False, default='OROCORR_HBV', alias='OroPrecipCorrect', alias_priority=2), 'oro_temp_correct': FieldInfo(annotation=OroTempCorrect, required=False, default='OROCORR_HBV', alias='OroTempCorrect', alias_priority=2), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Evaporation, required=False, default='PET_FROMMONTHLY', alias='OW_Evaporation', alias_priority=2), 'params': FieldInfo(annotation=P, required=False, default=P(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default='POTMELT_HBV', alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=PrecipIceptFract, required=False, default='PRECIP_ICEPT_USER', alias='PrecipIcepFract', alias_priority=2), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default='RAINSNOW_HBV'), 'rain_snow_transition': FieldInfo(annotation=RainSnowTransition, required=False, default={'temp': Variable('X01'), 'delta': 2}, alias='RainSnowTransition', alias_priority=2), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL', 'mineral': (1, 0, 0), 'organic': 0}, {'name': 'SLOW_RES', 'mineral': (1, 0, 0), 'organic': 0}, {'name': 'FAST_RES', 'mineral': (1, 0, 0), 'organic': 0}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=3, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ['POROSITY', 'FIELD_CAPACITY', 'SAT_WILT', 'HBV_BETA', 'MAX_CAP_RISE_RATE', 'MAX_PERC_RATE', 'BASEFLOW_COEFF', 'BASEFLOW_N'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X05'), Variable('X06'), Variable('X14'), Variable('X07'), Variable('X16'), 0.0, 0.0, 0.0)), ParameterList(name='FAST_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', Variable('X08'), Variable('X09'), Sum((Variable('X15'), 1)))), ParameterList(name='SLOW_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', '_DEFAULT', Variable('X10'), 1.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'DEFAULT_P', 'soil_classes': ['TOPSOIL', 'FAST_RES', 'SLOW_RES'], 'thicknesses': (Variable('X17'), 100, 100)}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=SubBasinProperties, required=False, default={'parameters': ['TIME_CONC', 'TIME_TO_PEAK'], 'records': [{'sb_id': 1, 'values': (Variable('X11'), Quotient(Variable('X11'), 2))}]}, alias='SubBasinProperties', alias_priority=2), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=SWCanopyCorrect, required=False, default='SW_CANOPY_CORR_NONE', alias='SWCanopyCorrect', alias_priority=2), 'sw_cloud_correct': FieldInfo(annotation=SWCloudCorrect, required=False, default='SW_CLOUD_CORR_NONE', alias='SWCloudCorrect', alias_priority=2), 'sw_radiation_method': FieldInfo(annotation=SWRadiationMethod, required=False, default='SW_RAD_DEFAULT', alias='SWRadiationMethod', alias_priority=2), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'VEG_ALL', 'max_ht': 25, 'max_lai': 6, 'max_leaf_cond': 5.3}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ['MAX_CAPACITY', 'MAX_SNOW_CAPACITY', 'TFRAIN', 'TFSNOW'], 'pl': [ParameterList(name='VEG_ALL', values=(10000.0, 10000.0, 0.88, 0.88))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

monthly_interpolation_method: MonthlyInterpolationMethod
netcdf_attribute: Dict[str, str]
oro_pet_correct: OroPETCorrect
oro_precip_correct: OroPrecipCorrect
oro_temp_correct: OroTempCorrect
ow_evaporation: Evaporation
params: P
potential_melt_method: PotentialMeltMethod
precip_icept_frac: PrecipIceptFract
rain_snow_fraction: RainSnowFraction
rain_snow_transition: RainSnowTransition
routing: Routing
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basin_properties: SubBasinProperties
sub_basins: SubBasins
sw_canopy_correct: SWCanopyCorrect
sw_cloud_correct: SWCloudCorrect
sw_radiation_method: SWRadiationMethod
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.hbvec.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.hbvec.LandHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU]
class ravenpy.config.emulators.hbvec.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'LU_ALL', veg_class: str = 'VEG_ALL', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['land'] = 'land')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['land']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['land'], required=False, default='land'), 'land_use_class': FieldInfo(annotation=str, required=False, default='LU_ALL'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='VEG_ALL')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.hbvec.P(X01: Variable | Expression | float | None = Variable('X01'), X02: Variable | Expression | float | None = Variable('X02'), X03: Variable | Expression | float | None = Variable('X03'), X04: Variable | Expression | float | None = Variable('X04'), X05: Variable | Expression | float | None = Variable('X05'), X06: Variable | Expression | float | None = Variable('X06'), X07: Variable | Expression | float | None = Variable('X07'), X08: Variable | Expression | float | None = Variable('X08'), X09: Variable | Expression | float | None = Variable('X09'), X10: Variable | Expression | float | None = Variable('X10'), X11: Variable | Expression | float | None = Variable('X11'), X12: Variable | Expression | float | None = Variable('X12'), X13: Variable | Expression | float | None = Variable('X13'), X14: Variable | Expression | float | None = Variable('X14'), X15: Variable | Expression | float | None = Variable('X15'), X16: Variable | Expression | float | None = Variable('X16'), X17: Variable | Expression | float | None = Variable('X17'), X18: Variable | Expression | float | None = Variable('X18'), X19: Variable | Expression | float | None = Variable('X19'), X20: Variable | Expression | float | None = Variable('X20'), X21: Variable | Expression | float | None = Variable('X21'))[source]

Bases: Params

X01: Variable | Expression | float | None = Variable('X01')
X02: Variable | Expression | float | None = Variable('X02')
X03: Variable | Expression | float | None = Variable('X03')
X04: Variable | Expression | float | None = Variable('X04')
X05: Variable | Expression | float | None = Variable('X05')
X06: Variable | Expression | float | None = Variable('X06')
X07: Variable | Expression | float | None = Variable('X07')
X08: Variable | Expression | float | None = Variable('X08')
X09: Variable | Expression | float | None = Variable('X09')
X10: Variable | Expression | float | None = Variable('X10')
X11: Variable | Expression | float | None = Variable('X11')
X12: Variable | Expression | float | None = Variable('X12')
X13: Variable | Expression | float | None = Variable('X13')
X14: Variable | Expression | float | None = Variable('X14')
X15: Variable | Expression | float | None = Variable('X15')
X16: Variable | Expression | float | None = Variable('X16')
X17: Variable | Expression | float | None = Variable('X17')
X18: Variable | Expression | float | None = Variable('X18')
X19: Variable | Expression | float | None = Variable('X19')
X20: Variable | Expression | float | None = Variable('X20')
X21: Variable | Expression | float | None = Variable('X21')

ravenpy.config.emulators.hmets module

class ravenpy.config.emulators.hmets.ForestHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'FOREST', veg_class: str = 'FOREST', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['land'] = 'land')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['land']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['land'], required=False, default='land'), 'land_use_class': FieldInfo(annotation=str, required=False, default='FOREST'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.hmets.HMETS(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: P = P(GAMMA_SHAPE=Variable('GAMMA_SHAPE'), GAMMA_SCALE=Variable('GAMMA_SCALE'), GAMMA_SHAPE2=Variable('GAMMA_SHAPE2'), GAMMA_SCALE2=Variable('GAMMA_SCALE2'), MIN_MELT_FACTOR=Variable('MIN_MELT_FACTOR'), MAX_MELT_FACTOR=Variable('MAX_MELT_FACTOR'), DD_MELT_TEMP=Variable('DD_MELT_TEMP'), DD_AGGRADATION=Variable('DD_AGGRADATION'), SNOW_SWI_MIN=Variable('SNOW_SWI_MIN'), SNOW_SWI_MAX=Variable('SNOW_SWI_MAX'), SWI_REDUCT_COEFF=Variable('SWI_REDUCT_COEFF'), DD_REFREEZE_TEMP=Variable('DD_REFREEZE_TEMP'), REFREEZE_FACTOR=Variable('REFREEZE_FACTOR'), REFREEZE_EXP=Variable('REFREEZE_EXP'), PET_CORRECTION=Variable('PET_CORRECTION'), HMETS_RUNOFF_COEFF=Variable('HMETS_RUNOFF_COEFF'), PERC_COEFF=Variable('PERC_COEFF'), BASEFLOW_COEFF_1=Variable('BASEFLOW_COEFF_1'), BASEFLOW_COEFF_2=Variable('BASEFLOW_COEFF_2'), TOPSOIL=Variable('TOPSOIL'), PHREATIC=Variable('PHREATIC')), SoilClasses: SoilClasses = [{'name': 'TOPSOIL'}, {'name': 'PHREATIC'}], soil_profiles: SoilProfiles = [{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'PHREATIC'), 'thicknesses': (Quotient(Variable('TOPSOIL'), 1000.0), Quotient(Variable('PHREATIC'), 1000.0))}], VegetationClasses: VegetationClasses = [{'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5, 'name': 'FOREST'}], LandUseClasses: LandUseClasses = [{'forest_coverage': 1, 'name': 'FOREST'}], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ('POROSITY', 'PERC_COEFF', 'PET_CORRECTION', 'BASEFLOW_COEFF'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('PERC_COEFF'), Variable('PET_CORRECTION'), Variable('BASEFLOW_COEFF_1'))), ParameterList(name='PHREATIC', values=(1.0, 0.0, 0.0, Variable('BASEFLOW_COEFF_2')))]}, LandUseParameterList: LandUseParameterList = {'parameters': ['MIN_MELT_FACTOR', 'MAX_MELT_FACTOR', 'DD_MELT_TEMP', 'DD_AGGRADATION', 'REFREEZE_FACTOR', 'REFREEZE_EXP', 'DD_REFREEZE_TEMP', 'HMETS_RUNOFF_COEFF', 'GAMMA_SHAPE', 'GAMMA_SCALE', 'GAMMA_SHAPE2', 'GAMMA_SCALE2'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('MIN_MELT_FACTOR'), Variable('MAX_MELT_FACTOR'), Variable('DD_MELT_TEMP'), Variable('DD_AGGRADATION'), Variable('REFREEZE_FACTOR'), Variable('REFREEZE_EXP'), Variable('DD_REFREEZE_TEMP'), Variable('HMETS_RUNOFF_COEFF'), Variable('GAMMA_SHAPE'), Variable('GAMMA_SCALE'), Variable('GAMMA_SHAPE2'), Variable('GAMMA_SCALE2')))]}, VegetationParameterList: VegetationParameterList = {'parameters': ['RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'], 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0))]}, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameter: Dict[str, Variable | Expression | float | None] = {'SNOW_SWI': 0.05, 'SNOW_SWI_MAX': Variable('SNOW_SWI_MAX'), 'SNOW_SWI_MIN': Variable('SNOW_SWI_MIN'), 'SWI_REDUCT_COEFF': Variable('SWI_REDUCT_COEFF')}, RainSnowTransition: RainSnowTransition | None = None, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties | None = None, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [ForestHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable | None = None, BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] = {'SOIL[0]': Quotient(Variable('TOPSOIL'), 2), 'SOIL[1]': Quotient(Variable('PHREATIC'), 2)}, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRoute: CatchmentRoute = 'ROUTE_DUMP', Evaporation: Evaporation = 'PET_OUDIN', OW_Evaporation: Evaporation | None = None, SWRadiationMethod: SWRadiationMethod | None = None, SWCloudCorrect: SWCloudCorrect | None = None, SWCanopyCorrect: SWCanopyCorrect | None = None, LWRadiationMethod: LWRadiationMethod | None = None, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction = 'RAINSNOW_DATA', PotentialMeltMethod: PotentialMeltMethod = 'POTMELT_HMETS', OroTempCorrect: OroTempCorrect | None = None, OroPrecipCorrect: OroPrecipCorrect | None = None, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod | None = None, PrecipIceptFract: PrecipIceptFract | None = None, SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: SoilModel = 2, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: Sequence[str] | None = None, hydrologic_processes: Sequence[Process] = [SnowBalance(algo='SNOBAL_HMETS', source='MULTIPLE', to=['MULTIPLE']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), Infiltration(algo='INF_HMETS', source='PONDED_WATER', to=['MULTIPLE']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[0]', to=['CONVOLUTION[1]']), Baseflow(algo='BASE_LINEAR', source='SOIL[0]', to=['SURFACE_WATER']), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[1]', to=['CONVOLUTION[1]']), SoilEvaporation(algo='SOILEVAP_ALL', source='SOIL[0]', to=['ATMOSPHERE']), Convolve(algo='CONVOL_GAMMA', source='CONVOLUTION[0]', to=['SURFACE_WATER']), Convolve(algo='CONVOL_GAMMA_2', source='CONVOLUTION[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'HMETS'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Hydrology Model - École de technologie supérieure (HMETS)

References

Martel, J.-L., Demeester, K., Brissette, F., Arsenault, R., Poulin, A. 2017. HMETS: A simple and efficient hydrology model for teaching hydrological modelling, flow forecasting and climate change impacts. Int. J. Eng. Educ., 33, 1307–1316.

calendar: Calendar
catchment_route: CatchmentRoute
evaporation: Evaporation
global_parameter: Dict[str, Variable | Expression | float | None]
hrus: HRUs
hydrologic_processes: Sequence[Process]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_DUMP', alias='CatchmentRoute', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default='PET_OUDIN', alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], required=False, default={'SNOW_SWI_MIN': Variable('SNOW_SWI_MIN'), 'SNOW_SWI_MAX': Variable('SNOW_SWI_MAX'), 'SWI_REDUCT_COEFF': Variable('SWI_REDUCT_COEFF'), 'SNOW_SWI': 0.05}, alias='GlobalParameter', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=Union[HRUStateVariableTable, NoneType], required=False, default_factory=<lambda>, alias='HRUStateVariableTable', alias_priority=2, validate_default=False), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[ForestHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[ravenpy.config.commands.Process], required=False, default=[SnowBalance(algo='SNOBAL_HMETS', source='MULTIPLE', to=['MULTIPLE']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), Infiltration(algo='INF_HMETS', source='PONDED_WATER', to=['MULTIPLE']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[0]', to=['CONVOLUTION[1]']), Baseflow(algo='BASE_LINEAR', source='SOIL[0]', to=['SURFACE_WATER']), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Overflow(algo='OVERFLOW_RAVEN', source='SOIL[1]', to=['CONVOLUTION[1]']), SoilEvaporation(algo='SOILEVAP_ALL', source='SOIL[0]', to=['ATMOSPHERE']), Convolve(algo='CONVOL_GAMMA', source='CONVOLUTION[0]', to=['SURFACE_WATER']), Convolve(algo='CONVOL_GAMMA_2', source='CONVOLUTION[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER'])]), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[{'name': 'FOREST', 'forest_coverage': 1}], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ['MIN_MELT_FACTOR', 'MAX_MELT_FACTOR', 'DD_MELT_TEMP', 'DD_AGGRADATION', 'REFREEZE_FACTOR', 'REFREEZE_EXP', 'DD_REFREEZE_TEMP', 'HMETS_RUNOFF_COEFF', 'GAMMA_SHAPE', 'GAMMA_SCALE', 'GAMMA_SHAPE2', 'GAMMA_SCALE2'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('MIN_MELT_FACTOR'), Variable('MAX_MELT_FACTOR'), Variable('DD_MELT_TEMP'), Variable('DD_AGGRADATION'), Variable('REFREEZE_FACTOR'), Variable('REFREEZE_EXP'), Variable('DD_REFREEZE_TEMP'), Variable('HMETS_RUNOFF_COEFF'), Variable('GAMMA_SHAPE'), Variable('GAMMA_SCALE'), Variable('GAMMA_SHAPE2'), Variable('GAMMA_SCALE2')))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'HMETS'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=P, required=False, default=P(GAMMA_SHAPE=Variable('GAMMA_SHAPE'), GAMMA_SCALE=Variable('GAMMA_SCALE'), GAMMA_SHAPE2=Variable('GAMMA_SHAPE2'), GAMMA_SCALE2=Variable('GAMMA_SCALE2'), MIN_MELT_FACTOR=Variable('MIN_MELT_FACTOR'), MAX_MELT_FACTOR=Variable('MAX_MELT_FACTOR'), DD_MELT_TEMP=Variable('DD_MELT_TEMP'), DD_AGGRADATION=Variable('DD_AGGRADATION'), SNOW_SWI_MIN=Variable('SNOW_SWI_MIN'), SNOW_SWI_MAX=Variable('SNOW_SWI_MAX'), SWI_REDUCT_COEFF=Variable('SWI_REDUCT_COEFF'), DD_REFREEZE_TEMP=Variable('DD_REFREEZE_TEMP'), REFREEZE_FACTOR=Variable('REFREEZE_FACTOR'), REFREEZE_EXP=Variable('REFREEZE_EXP'), PET_CORRECTION=Variable('PET_CORRECTION'), HMETS_RUNOFF_COEFF=Variable('HMETS_RUNOFF_COEFF'), PERC_COEFF=Variable('PERC_COEFF'), BASEFLOW_COEFF_1=Variable('BASEFLOW_COEFF_1'), BASEFLOW_COEFF_2=Variable('BASEFLOW_COEFF_2'), TOPSOIL=Variable('TOPSOIL'), PHREATIC=Variable('PHREATIC'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default='POTMELT_HMETS', alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=Union[PrecipIceptFract, NoneType], required=False, default_factory=<lambda>, alias='PrecipIceptFract', alias_priority=2, validate_default=False), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default='RAINSNOW_DATA', alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL'}, {'name': 'PHREATIC'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=2, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'PERC_COEFF', 'PET_CORRECTION', 'BASEFLOW_COEFF'), 'pl': [ParameterList(name='TOPSOIL', values=(1.0, Variable('PERC_COEFF'), Variable('PET_CORRECTION'), Variable('BASEFLOW_COEFF_1'))), ParameterList(name='PHREATIC', values=(1.0, 0.0, 0.0, Variable('BASEFLOW_COEFF_2')))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'PHREATIC'), 'thicknesses': (Quotient(Variable('TOPSOIL'), 1000.0), Quotient(Variable('PHREATIC'), 1000.0))}]), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], required=False, default={'SOIL[0]': Quotient(Variable('TOPSOIL'), 2), 'SOIL[1]': Quotient(Variable('PHREATIC'), 2)}, alias='UniformInitialConditions', alias_priority=2), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'FOREST', 'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ['RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'], 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
params: P
potential_melt_method: PotentialMeltMethod
rain_snow_fraction: RainSnowFraction
routing: Routing
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basins: SubBasins
time_step: float | str
uniform_initial_conditions: Dict[str, Variable | Expression | float | None]
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.hmets.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for HMETS.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.hmets.ForestHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[ForestHRU]
class ravenpy.config.emulators.hmets.P(GAMMA_SHAPE: Variable | Expression | float | None = Variable('GAMMA_SHAPE'), GAMMA_SCALE: Variable | Expression | float | None = Variable('GAMMA_SCALE'), GAMMA_SHAPE2: Variable | Expression | float | None = Variable('GAMMA_SHAPE2'), GAMMA_SCALE2: Variable | Expression | float | None = Variable('GAMMA_SCALE2'), MIN_MELT_FACTOR: Variable | Expression | float | None = Variable('MIN_MELT_FACTOR'), MAX_MELT_FACTOR: Variable | Expression | float | None = Variable('MAX_MELT_FACTOR'), DD_MELT_TEMP: Variable | Expression | float | None = Variable('DD_MELT_TEMP'), DD_AGGRADATION: Variable | Expression | float | None = Variable('DD_AGGRADATION'), SNOW_SWI_MIN: Variable | Expression | float | None = Variable('SNOW_SWI_MIN'), SNOW_SWI_MAX: Variable | Expression | float | None = Variable('SNOW_SWI_MAX'), SWI_REDUCT_COEFF: Variable | Expression | float | None = Variable('SWI_REDUCT_COEFF'), DD_REFREEZE_TEMP: Variable | Expression | float | None = Variable('DD_REFREEZE_TEMP'), REFREEZE_FACTOR: Variable | Expression | float | None = Variable('REFREEZE_FACTOR'), REFREEZE_EXP: Variable | Expression | float | None = Variable('REFREEZE_EXP'), PET_CORRECTION: Variable | Expression | float | None = Variable('PET_CORRECTION'), HMETS_RUNOFF_COEFF: Variable | Expression | float | None = Variable('HMETS_RUNOFF_COEFF'), PERC_COEFF: Variable | Expression | float | None = Variable('PERC_COEFF'), BASEFLOW_COEFF_1: Variable | Expression | float | None = Variable('BASEFLOW_COEFF_1'), BASEFLOW_COEFF_2: Variable | Expression | float | None = Variable('BASEFLOW_COEFF_2'), TOPSOIL: Variable | Expression | float | None = Variable('TOPSOIL'), PHREATIC: Variable | Expression | float | None = Variable('PHREATIC'))[source]

Bases: Params

BASEFLOW_COEFF_1: Variable | Expression | float | None = Variable('BASEFLOW_COEFF_1')
BASEFLOW_COEFF_2: Variable | Expression | float | None = Variable('BASEFLOW_COEFF_2')
DD_AGGRADATION: Variable | Expression | float | None = Variable('DD_AGGRADATION')
DD_MELT_TEMP: Variable | Expression | float | None = Variable('DD_MELT_TEMP')
DD_REFREEZE_TEMP: Variable | Expression | float | None = Variable('DD_REFREEZE_TEMP')
GAMMA_SCALE: Variable | Expression | float | None = Variable('GAMMA_SCALE')
GAMMA_SCALE2: Variable | Expression | float | None = Variable('GAMMA_SCALE2')
GAMMA_SHAPE: Variable | Expression | float | None = Variable('GAMMA_SHAPE')
GAMMA_SHAPE2: Variable | Expression | float | None = Variable('GAMMA_SHAPE2')
HMETS_RUNOFF_COEFF: Variable | Expression | float | None = Variable('HMETS_RUNOFF_COEFF')
MAX_MELT_FACTOR: Variable | Expression | float | None = Variable('MAX_MELT_FACTOR')
MIN_MELT_FACTOR: Variable | Expression | float | None = Variable('MIN_MELT_FACTOR')
PERC_COEFF: Variable | Expression | float | None = Variable('PERC_COEFF')
PET_CORRECTION: Variable | Expression | float | None = Variable('PET_CORRECTION')
PHREATIC: Variable | Expression | float | None = Variable('PHREATIC')
REFREEZE_EXP: Variable | Expression | float | None = Variable('REFREEZE_EXP')
REFREEZE_FACTOR: Variable | Expression | float | None = Variable('REFREEZE_FACTOR')
SNOW_SWI_MAX: Variable | Expression | float | None = Variable('SNOW_SWI_MAX')
SNOW_SWI_MIN: Variable | Expression | float | None = Variable('SNOW_SWI_MIN')
SWI_REDUCT_COEFF: Variable | Expression | float | None = Variable('SWI_REDUCT_COEFF')
TOPSOIL: Variable | Expression | float | None = Variable('TOPSOIL')

ravenpy.config.emulators.hypr module

class ravenpy.config.emulators.hypr.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.hypr.LandHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU]
class ravenpy.config.emulators.hypr.HYPR(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: Params = Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21')), SoilClasses: SoilClasses = [{'name': 'TOPSOIL'}, {'name': 'SLOW_RES'}, {'name': 'FAST_RES'}], SoilProfiles: SoilProfiles = [{'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'FAST_RES', 'SLOW_RES'), 'thicknesses': (Variable('X11'), 1e+99, 1e+99)}], VegetationClasses: VegetationClasses = [{'max_ht': 0, 'max_lai': 0, 'max_leaf_cond': 1e+99, 'name': 'FOREST'}], LandUseClasses: LandUseClasses = [LandUseClass(name='OPEN_1', impermeable_frac=0.0, forest_coverage=0.0)], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ('POROSITY', 'FIELD_CAPACITY', 'SAT_WILT', 'HBV_BETA', 'MAX_CAP_RISE_RATE', 'MAX_PERC_RATE', 'BASEFLOW_COEFF', 'BASEFLOW_N', 'BASEFLOW_COEFF2', 'STORAGE_THRESHOLD'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('X04'), 0.0, Variable('X16'), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)), ParameterList(name='FAST_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', 0.0, Variable('X06'), 1.0, Variable('X05'), Variable('X10'))), ParameterList(name='SLOW_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', '_DEFAULT', 0.01, 1.0, 0.05, 0.0))]}, LandUseParameterList: LandUseParameterList = {'parameters': ('MELT_FACTOR', 'MIN_MELT_FACTOR', 'HBV_MELT_FOR_CORR', 'REFREEZE_FACTOR', 'HBV_MELT_ASP_CORR', 'DD_MELT_TEMP', 'FOREST_COVERAGE', 'PONDED_EXP', 'PDMROF_B', 'DEP_MAX', 'MAX_DEP_AREA_FRAC'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X17'), Variable('X18'), Variable('X13'), Variable('X12'), 0.0, Variable('X01'), 0.0, Variable('X09'), Variable('X07'), Variable('X14'), Variable('X08')))]}, VegetationParameterList: VegetationParameterList = {'parameters': ('SAI_HT_RATIO', 'MAX_CAPACITY', 'MAX_SNOW_CAPACITY', 'TFRAIN', 'TFSNOW'), 'pl': [ParameterList(name='FOREST', values=(0.0, 10000.0, 10000.0, 1.0, 1.0))]}, ChannelProfile: Sequence[ChannelProfile] | None = None, global_parameter: Dict = {'AdiabaticLapseRate': Variable('X19'), 'PrecipLapse': Variable('X20'), 'RAINSNOW_DELTA': 0, 'RAINSNOW_TEMP': Variable('X02'), 'SNOW_SWI': Variable('X03')}, RainSnowTransition: RainSnowTransition | None = None, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties = {'parameters': ['TIME_CONC'], 'records': [{'sb_id': 1, 'values': (Variable('X15'),)}]}, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='OPEN_1', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable = [HRUState(hru_id=1, data={'SOIL[0]': 10.0, 'SOIL[1]': 10.0, 'DEPRESSION': 20.0})], BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRouting: CatchmentRoute = 'ROUTE_TRI_CONVOLUTION', Evaporation: Evaporation = Evaporation.FROMMONTHLY, OW_Evaporation: Evaporation = Evaporation.FROMMONTHLY, SWRadiationMethod: SWRadiationMethod = SWRadiationMethod.DEFAULT, SWCloudCorrect: SWCloudCorrect = SWCloudCorrect.NONE, SWCanopyCorrect: SWCanopyCorrect = SWCanopyCorrect.NONE, LWRadiationMethod: LWRadiationMethod = LWRadiationMethod.DEFAULT, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction = RainSnowFraction.HBV, PotentialMeltMethod: PotentialMeltMethod = PotentialMeltMethod.HBV, OroTempCorrect: OroTempCorrect | None = None, OroPrecipCorrect: OroPrecipCorrect | None = None, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod = CloudCoverMethod.NONE, PrecipIceptFrac: PrecipIceptFract = PrecipIceptFract.USER, SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: SoilModel = 3, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] = 'SOIL[2]', DefineHRUGroups: Sequence[str] | None = None, HydrologicProcesses: Sequence[Process | Conditional] = [SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_ALL', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_ALL', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['PONDED_WATER'], p=None), Abstraction(algo='ABST_PDMROF', source='PONDED_WATER', to=['DEPRESSION']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[1]'], p=None), SoilEvaporation(algo='SOILEVAP_HYPR', source='MULTIPLE', to=['ATMOSPHERE']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_THRESH_STOR', source='SOIL[1]', to=['SURFACE_WATER'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'HYPR'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

The HYdrological model for Prairie Region (HYPR) is based on the conceptual Hydrologiska Byrans Vattenbalansavdelning (HBV)-light model. HBV is modified to work in the prairies by incorporating a conceptual lateral-flow component to represent the pothole storage complexities. HYPR can be used for prairie streamflow simulation.

References

Mohamed I. Ahmed, Amin Elshorbagy, and Alain Pietroniro (2020). Toward Simple Modeling Practices in the Complex Canadian Prairie Watersheds. Journal of Hydrologic Engineering, 25(6), 04020024. doi: 10.1061/(ASCE)HE.1943-5584.0001922.

calendar: Calendar
catchment_route: CatchmentRoute
cloud_cover_method: CloudCoverMethod
evaporation: Evaporation
global_parameter: Dict
hru_state_variable_table: HRUStateVariableTable
hrus: HRUs
hydrologic_processes: Sequence[Process | Conditional]
lake_storage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE']
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
lw_radiation_method: LWRadiationMethod
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_TRI_CONVOLUTION', alias='CatchmentRouting', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=CloudCoverMethod, required=False, default=<CloudCoverMethod.NONE: 'CLOUDCOV_NONE'>, alias='CloudCoverMethod', alias_priority=2), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.FROMMONTHLY: 'PET_FROMMONTHLY'>, alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict, required=False, default={'RAINSNOW_TEMP': Variable('X02'), 'RAINSNOW_DELTA': 0, 'SNOW_SWI': Variable('X03'), 'AdiabaticLapseRate': Variable('X19'), 'PrecipLapse': Variable('X20')}), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=HRUStateVariableTable, required=False, default=[HRUState(hru_id=1, data={'SOIL[0]': 10.0, 'SOIL[1]': 10.0, 'DEPRESSION': 20.0})], alias='HRUStateVariableTable', alias_priority=2), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='OPEN_1', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.Conditional]], required=False, default=[SnowRefreeze(algo='FREEZE_DEGREE_DAY', source='SNOW_LIQ', to=['SNOW']), Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['MULTIPLE']), CanopyEvaporation(algo='CANEVP_ALL', source='CANOPY', to=['ATMOSPHERE']), CanopySublimation(algo='CANEVP_ALL', source='CANOPY_SNOW', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['PONDED_WATER'], p=None), Abstraction(algo='ABST_PDMROF', source='PONDED_WATER', to=['DEPRESSION']), Flush(algo='RAVEN_DEFAULT', source='SURFACE_WATER', to=['SOIL[1]'], p=None), SoilEvaporation(algo='SOILEVAP_HYPR', source='MULTIPLE', to=['ATMOSPHERE']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER']), Baseflow(algo='BASE_THRESH_STOR', source='SOIL[1]', to=['SURFACE_WATER'])], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], required=False, default='SOIL[2]', alias='LakeStorage', alias_priority=2), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[LandUseClass(name='OPEN_1', impermeable_frac=0.0, forest_coverage=0.0)], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ('MELT_FACTOR', 'MIN_MELT_FACTOR', 'HBV_MELT_FOR_CORR', 'REFREEZE_FACTOR', 'HBV_MELT_ASP_CORR', 'DD_MELT_TEMP', 'FOREST_COVERAGE', 'PONDED_EXP', 'PDMROF_B', 'DEP_MAX', 'MAX_DEP_AREA_FRAC'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X17'), Variable('X18'), Variable('X13'), Variable('X12'), 0.0, Variable('X01'), 0.0, Variable('X09'), Variable('X07'), Variable('X14'), Variable('X08')))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=LWRadiationMethod, required=False, default=<LWRadiationMethod.DEFAULT: 'LW_RAD_DEFAULT'>, alias='LWRadiationMethod', alias_priority=2), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'HYPR'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.FROMMONTHLY: 'PET_FROMMONTHLY'>, alias='OW_Evaporation', alias_priority=2), 'params': FieldInfo(annotation=Params, required=False, default=Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default=<PotentialMeltMethod.HBV: 'POTMELT_HBV'>, alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=PrecipIceptFract, required=False, default=<PrecipIceptFract.USER: 'PRECIP_ICEPT_USER'>, alias='PrecipIceptFrac', alias_priority=2), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default=<RainSnowFraction.HBV: 'RAINSNOW_HBV'>, alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL'}, {'name': 'SLOW_RES'}, {'name': 'FAST_RES'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=3, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'FIELD_CAPACITY', 'SAT_WILT', 'HBV_BETA', 'MAX_CAP_RISE_RATE', 'MAX_PERC_RATE', 'BASEFLOW_COEFF', 'BASEFLOW_N', 'BASEFLOW_COEFF2', 'STORAGE_THRESHOLD'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('X04'), 0.0, Variable('X16'), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)), ParameterList(name='FAST_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', 0.0, Variable('X06'), 1.0, Variable('X05'), Variable('X10'))), ParameterList(name='SLOW_RES', values=('_DEFAULT', '_DEFAULT', 0.0, '_DEFAULT', '_DEFAULT', '_DEFAULT', 0.01, 1.0, 0.05, 0.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'DEFAULT_P', 'soil_classes': ('TOPSOIL', 'FAST_RES', 'SLOW_RES'), 'thicknesses': (Variable('X11'), 1e+99, 1e+99)}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=SubBasinProperties, required=False, default={'parameters': ['TIME_CONC'], 'records': [{'sb_id': 1, 'values': (Variable('X15'),)}]}, alias='SubBasinProperties', alias_priority=2), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=SWCanopyCorrect, required=False, default=<SWCanopyCorrect.NONE: 'SW_CANOPY_CORR_NONE'>, alias='SWCanopyCorrect', alias_priority=2), 'sw_cloud_correct': FieldInfo(annotation=SWCloudCorrect, required=False, default=<SWCloudCorrect.NONE: 'SW_CLOUD_CORR_NONE'>, alias='SWCloudCorrect', alias_priority=2), 'sw_radiation_method': FieldInfo(annotation=SWRadiationMethod, required=False, default=<SWRadiationMethod.DEFAULT: 'SW_RAD_DEFAULT'>, alias='SWRadiationMethod', alias_priority=2), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'FOREST', 'max_ht': 0, 'max_lai': 0, 'max_leaf_cond': 1e+99}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ('SAI_HT_RATIO', 'MAX_CAPACITY', 'MAX_SNOW_CAPACITY', 'TFRAIN', 'TFSNOW'), 'pl': [ParameterList(name='FOREST', values=(0.0, 10000.0, 10000.0, 1.0, 1.0))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
ow_evaporation: Evaporation
params: Params
potential_melt_method: PotentialMeltMethod
precip_icept_frac: PrecipIceptFract
rain_snow_fraction: RainSnowFraction
routing: Routing
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basin_properties: SubBasinProperties
sub_basins: SubBasins
sw_canopy_correct: SWCanopyCorrect
sw_cloud_correct: SWCloudCorrect
sw_radiation_method: SWRadiationMethod
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.hypr.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'OPEN_1', veg_class: str = 'FOREST', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: str | None = None)[source]

Bases: HRU

aquifer_profile: str
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'land_use_class': FieldInfo(annotation=str, required=False, default='OPEN_1'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str

ravenpy.config.emulators.mohyse module

class ravenpy.config.emulators.mohyse.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.mohyse.LandHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU]
class ravenpy.config.emulators.mohyse.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'LU_ALL', veg_class: str = 'VEG_ALL', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['land'] = 'land')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['land']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['land'], required=False, default='land'), 'land_use_class': FieldInfo(annotation=str, required=False, default='LU_ALL'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='VEG_ALL')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.mohyse.Mohyse(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: P = P(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10')), SoilClasses: SoilClasses = [{'name': 'TOPSOIL'}, {'name': 'GWSOIL'}], SoilProfiles: SoilProfiles = [{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ['TOPSOIL', 'GWSOIL'], 'thicknesses': [Variable('X05'), 10.0]}], VegetationClasses: VegetationClasses = [{'name': 'VEG_ALL'}], LandUseClasses: LandUseClasses = [{'forest_coverage': 1, 'impermeable_frac': 0, 'name': 'LU_ALL'}], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ['POROSITY', 'PET_CORRECTION', 'HBV_BETA', 'BASEFLOW_COEFF', 'PERC_COEFF'], 'pl': [ParameterList(name='TOPSOIL', values=(1.0, 1.0, 1.0, Variable('X07'), Variable('X06'))), ParameterList(name='GWSOIL', values=(1.0, 1.0, 1.0, Variable('X08'), 0.0))]}, LandUseParameterList: LandUseParameterList = {'parameters': ['MELT_FACTOR', 'AET_COEFF', 'FOREST_SPARSENESS', 'DD_MELT_TEMP'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X03'), Variable('X02'), 0.0, Variable('X04')))]}, VegetationParameterList: VegetationParameterList = {'parameters': ['SAI_HT_RATIO', 'RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'], 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0, 0.0))]}, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameter: Dict = {'MOHYSE_PET_COEFF': Variable('X01'), 'RAINSNOW_TEMP': -2, 'TOC_MULTIPLIER': 1}, RainSnowTransition: RainSnowTransition | None = None, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties = {'parameters': ['GAMMA_SCALE', 'GAMMA_SHAPE'], 'records': [{'sb_id': '1', 'values': (Quotient(1, Variable('X10')), Variable('X09'))}]}, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable | None = None, BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRoute: CatchmentRoute = 'ROUTE_GAMMA_CONVOLUTION', Evaporation: Evaporation = 'PET_MOHYSE', OW_Evaporation: Evaporation | None = None, SWRadiationMethod: SWRadiationMethod | None = None, SWCloudCorrect: SWCloudCorrect | None = None, SWCanopyCorrect: SWCanopyCorrect | None = None, LWRadiationMethod: LWRadiationMethod | None = None, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction = 'RAINSNOW_DATA', PotentialMeltMethod: PotentialMeltMethod = 'POTMELT_DEGREE_DAY', OroTempCorrect: OroTempCorrect | None = None, OroPrecipCorrect: OroPrecipCorrect | None = None, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod | None = None, PrecipIceptFract: PrecipIceptFract | None = None, SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: SoilModel = 2, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: Sequence[str] | None = None, hydrologic_processes: Sequence[Process] = [SoilEvaporation(algo='SOILEVAP_LINEAR', source='SOIL[0]', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Baseflow(algo='BASE_LINEAR', source='SOIL[0]', to=['SURFACE_WATER']), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'Mohyse'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool = True, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Modèle Hydrologique Simplifié à l’Extrême (MOHYSE)

References

Fortin, V.; Turcotte, R. Le modèle hydrologique MOHYSE. In Note de Cours Pour SCA7420, Université du Québec à Montréal: Montréal, QC, Canada, 2007; p. 14.

Troin, M., Arsenault, R. and Brissette, F., 2015. Performance and uncertainty evaluation of snow models on snowmelt flow simulations over a Nordic catchment (Mistassibi, Canada). Hydrology, 2(4), pp.289-317.

calendar: Calendar
catchment_route: CatchmentRoute
direct_evaporation: bool
evaporation: Evaporation
global_parameter: Dict
hrus: HRUs
hydrologic_processes: Sequence[Process]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_GAMMA_CONVOLUTION', alias='CatchmentRoute', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=bool, required=False, default=True, alias='DirectEvaporation', alias_priority=2), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default='PET_MOHYSE', alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Dict, required=False, default={'RAINSNOW_TEMP': -2, 'TOC_MULTIPLIER': 1, 'MOHYSE_PET_COEFF': Variable('X01')}, alias='GlobalParameter', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=Union[HRUStateVariableTable, NoneType], required=False, default_factory=<lambda>, alias='HRUStateVariableTable', alias_priority=2, validate_default=False), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='LU_ALL', veg_class='VEG_ALL', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[ravenpy.config.commands.Process], required=False, default=[SoilEvaporation(algo='SOILEVAP_LINEAR', source='SOIL[0]', to=['ATMOSPHERE']), SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), Infiltration(algo='INF_HBV', source='PONDED_WATER', to=['MULTIPLE']), Baseflow(algo='BASE_LINEAR', source='SOIL[0]', to=['SURFACE_WATER']), Percolation(algo='PERC_LINEAR', source='SOIL[0]', to=['SOIL[1]']), Baseflow(algo='BASE_LINEAR', source='SOIL[1]', to=['SURFACE_WATER'])]), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[{'name': 'LU_ALL', 'impermeable_frac': 0, 'forest_coverage': 1}], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ['MELT_FACTOR', 'AET_COEFF', 'FOREST_SPARSENESS', 'DD_MELT_TEMP'], 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X03'), Variable('X02'), 0.0, Variable('X04')))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'Mohyse'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=P, required=False, default=P(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default='POTMELT_DEGREE_DAY', alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=Union[PrecipIceptFract, NoneType], required=False, default_factory=<lambda>, alias='PrecipIceptFract', alias_priority=2, validate_default=False), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default='RAINSNOW_DATA', alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'TOPSOIL'}, {'name': 'GWSOIL'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=2, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ['POROSITY', 'PET_CORRECTION', 'HBV_BETA', 'BASEFLOW_COEFF', 'PERC_COEFF'], 'pl': [ParameterList(name='TOPSOIL', values=(1.0, 1.0, 1.0, Variable('X07'), Variable('X06'))), ParameterList(name='GWSOIL', values=(1.0, 1.0, 1.0, Variable('X08'), 0.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'LAKE'}, {'name': 'ROCK'}, {'name': 'DEFAULT_P', 'soil_classes': ['TOPSOIL', 'GWSOIL'], 'thicknesses': [Variable('X05'), 10.0]}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=SubBasinProperties, required=False, default={'parameters': ['GAMMA_SCALE', 'GAMMA_SHAPE'], 'records': [{'sb_id': '1', 'values': (Quotient(1, Variable('X10')), Variable('X09'))}]}, alias='SubBasinProperties', alias_priority=2), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'VEG_ALL'}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ['SAI_HT_RATIO', 'RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'], 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0, 0.0))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
params: P
potential_melt_method: PotentialMeltMethod
rain_snow_fraction: RainSnowFraction
routing: Routing
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basin_properties: SubBasinProperties
sub_basins: SubBasins
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool
class ravenpy.config.emulators.mohyse.P(X01: Variable | Expression | float | None = Variable('X01'), X02: Variable | Expression | float | None = Variable('X02'), X03: Variable | Expression | float | None = Variable('X03'), X04: Variable | Expression | float | None = Variable('X04'), X05: Variable | Expression | float | None = Variable('X05'), X06: Variable | Expression | float | None = Variable('X06'), X07: Variable | Expression | float | None = Variable('X07'), X08: Variable | Expression | float | None = Variable('X08'), X09: Variable | Expression | float | None = Variable('X09'), X10: Variable | Expression | float | None = Variable('X10'))[source]

Bases: Params

X01: Variable | Expression | float | None = Variable('X01')
X02: Variable | Expression | float | None = Variable('X02')
X03: Variable | Expression | float | None = Variable('X03')
X04: Variable | Expression | float | None = Variable('X04')
X05: Variable | Expression | float | None = Variable('X05')
X06: Variable | Expression | float | None = Variable('X06')
X07: Variable | Expression | float | None = Variable('X07')
X08: Variable | Expression | float | None = Variable('X08')
X09: Variable | Expression | float | None = Variable('X09')
X10: Variable | Expression | float | None = Variable('X10')

ravenpy.config.emulators.routing module

class ravenpy.config.emulators.routing.BasicRoute(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: Any = None, SoilClasses: SoilClasses | None = None, SoilProfiles: SoilProfiles | None = None, VegetationClasses: VegetationClasses | None = None, LandUseClasses: LandUseClasses | None = None, TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList | None = None, LandUseParameterList: LandUseParameterList | None = None, VegetationParameterList: VegetationParameterList | None = None, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameter: Dict[str, Variable | Expression | float | None] | None = {}, RainSnowTransition: RainSnowTransition | None = None, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties | None = None, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='Landuse_Land_HRU', veg_class='Veg_Land_HRU', soil_profile='Soil_Land_HRU', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable | None = None, BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_DIFFUSIVE_WAVE', CatchmentRoute: CatchmentRoute = 'ROUTE_DUMP', Evaporation: Evaporation | None = None, OW_Evaporation: Evaporation | None = None, SWRadiationMethod: SWRadiationMethod | None = None, SWCloudCorrect: SWCloudCorrect | None = None, SWCanopyCorrect: SWCanopyCorrect | None = None, LWRadiationMethod: LWRadiationMethod | None = None, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction | None = None, PotentialMeltMethod: PotentialMeltMethod = 'POTMELT_NONE', OroTempCorrect: OroTempCorrect | None = None, OroPrecipCorrect: OroPrecipCorrect | None = None, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod | None = None, PrecipIcepFract: PrecipIceptFract = 'PRECIP_ICEPT_NONE', SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: SoilModel = 1, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: Sequence[str] | None = None, HydrologicProcesses: Sequence[Process] = [Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['PONDED_WATER']), Flush(algo='RAVEN_DEFAULT', source='PONDED_WATER', to=['SURFACE_WATER'], p=None)], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'BasicRoute'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Raven configuration performing routing only.

calendar: Calendar
catchment_route: CatchmentRoute
hrus: HRUs
hydrologic_processes: Sequence[Process]
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_DUMP', alias='CatchmentRoute', alias_priority=2, description='Catchment routing method, used to convey water from the catchment tributaries and rivulets to the subbasin outlets.'), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='Evaporation', alias_priority=2, validate_default=False), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default={}, alias='GlobalParameter', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=Union[HRUStateVariableTable, NoneType], required=False, default_factory=<lambda>, alias='HRUStateVariableTable', alias_priority=2, validate_default=False), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='Landuse_Land_HRU', veg_class='Veg_Land_HRU', soil_profile='Soil_Land_HRU', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type='land')], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[ravenpy.config.commands.Process], required=False, default=[Precipitation(algo='PRECIP_RAVEN', source='ATMOS_PRECIP', to=['PONDED_WATER']), Flush(algo='RAVEN_DEFAULT', source='PONDED_WATER', to=['SURFACE_WATER'], p=None)], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=Union[LandUseClasses, NoneType], required=False, default_factory=<lambda>, alias='LandUseClasses', alias_priority=2, validate_default=False), 'land_use_parameter_list': FieldInfo(annotation=Union[LandUseParameterList, NoneType], required=False, default_factory=<lambda>, alias='LandUseParameterList', alias_priority=2, validate_default=False), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'BasicRoute'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=Any, required=False, default=None), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default='POTMELT_NONE', alias='PotentialMeltMethod', alias_priority=2, description='Estimation of the potential snow melt. In this routing model, snow melt processes are not relevant, thus using DEFAULT POTMELT_NONE method.'), 'precip_icept_frac': FieldInfo(annotation=PrecipIceptFract, required=False, default='PRECIP_ICEPT_NONE', alias='PrecipIcepFract', alias_priority=2, description='Estimation of the precipitation interception fraction. In this routing model, stream input(s) are pretending to be precipitation going into Raven.'), 'rain_snow_fraction': FieldInfo(annotation=Union[RainSnowFraction, NoneType], required=False, default_factory=<lambda>, alias='RainSnowFraction', alias_priority=2, validate_default=False), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_DIFFUSIVE_WAVE', alias='Routing', alias_priority=2, description='Channel routing method which is used to transport water from upstream to downstream within the main subbasin channels.'), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=Union[SoilClasses, NoneType], required=False, default_factory=<lambda>, alias='SoilClasses', alias_priority=2, validate_default=False), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=1, alias='SoilModel', alias_priority=2, description='Single soil layer structure'), 'soil_parameter_list': FieldInfo(annotation=Union[SoilParameterList, NoneType], required=False, default_factory=<lambda>, alias='SoilParameterList', alias_priority=2, validate_default=False), 'soil_profiles': FieldInfo(annotation=Union[SoilProfiles, NoneType], required=False, default_factory=<lambda>, alias='SoilProfiles', alias_priority=2, validate_default=False), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=Union[VegetationClasses, NoneType], required=False, default_factory=<lambda>, alias='VegetationClasses', alias_priority=2, validate_default=False), 'vegetation_parameter_list': FieldInfo(annotation=Union[VegetationParameterList, NoneType], required=False, default_factory=<lambda>, alias='VegetationParameterList', alias_priority=2, validate_default=False), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
potential_melt_method: PotentialMeltMethod
precip_icept_frac: PrecipIceptFract
routing: Routing
soil_model: SoilModel
sub_basins: SubBasins
time_step: float | str
write_netcdf_format: bool
class ravenpy.config.emulators.routing.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[Union[ravenpy.config.emulators.routing.LandHRU, ravenpy.config.emulators.routing.LakeHRU]], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU | LakeHRU]
class ravenpy.config.emulators.routing.LakeHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'Landuse_Lake_HRU', veg_class: str = 'Veg_Lake_HRU', soil_profile: str = 'Soil_Lake_HRU', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['lake'] = 'lake')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['lake']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['lake'], required=False, default='lake'), 'land_use_class': FieldInfo(annotation=str, required=False, default='Landuse_Lake_HRU'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='Soil_Lake_HRU'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='Veg_Lake_HRU')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.routing.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'Landuse_Land_HRU', veg_class: str = 'Veg_Land_HRU', soil_profile: str = 'Soil_Land_HRU', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: Literal['land'] = 'land')[source]

Bases: HRU

aquifer_profile: str
hru_type: Literal['land']
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Literal['land'], required=False, default='land'), 'land_use_class': FieldInfo(annotation=str, required=False, default='Landuse_Land_HRU'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='Soil_Land_HRU'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='Veg_Land_HRU')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str

ravenpy.config.emulators.sacsma module

class ravenpy.config.emulators.sacsma.HRUs(root: RootModelRootType = PydanticUndefined)[source]

Bases: HRUs

HRUs command for GR4J.

Pydantic is able to automatically detect if an HRU is Land or Lake if hru_type is provided.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=Sequence[ravenpy.config.emulators.sacsma.LandHRU], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(_ModelMetaclass__context: Any) None

We need to both initialize private attributes and call the user-defined model_post_init method.

root: Sequence[LandHRU]
class ravenpy.config.emulators.sacsma.LandHRU(*, hru_id: int = 1, area: Variable | Expression | float | None = 0, elevation: float = 0, latitude: float = 0, longitude: float = 0, subbasin_id: int = 1, land_use_class: str = 'FOREST', veg_class: str = 'FOREST', soil_profile: str = 'DEFAULT_P', aquifer_profile: str = '[NONE]', terrain_class: str = '[NONE]', slope: float = 0.0, aspect: float = 0.0, hru_type: str | None = None)[source]

Bases: HRU

aquifer_profile: str
land_use_class: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'aquifer_profile': FieldInfo(annotation=str, required=False, default='[NONE]'), 'area': FieldInfo(annotation=Union[Variable, Expression, float, NoneType], required=False, default=0), 'aspect': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0), Le(le=360)]), 'elevation': FieldInfo(annotation=float, required=False, default=0), 'hru_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'hru_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'land_use_class': FieldInfo(annotation=str, required=False, default='FOREST'), 'latitude': FieldInfo(annotation=float, required=False, default=0), 'longitude': FieldInfo(annotation=float, required=False, default=0), 'slope': FieldInfo(annotation=float, required=False, default=0.0, metadata=[Ge(ge=0)]), 'soil_profile': FieldInfo(annotation=str, required=False, default='DEFAULT_P'), 'subbasin_id': FieldInfo(annotation=int, required=False, default=1, metadata=[Gt(gt=0)]), 'terrain_class': FieldInfo(annotation=str, required=False, default='[NONE]'), 'veg_class': FieldInfo(annotation=str, required=False, default='FOREST')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

soil_profile: str
terrain_class: str
veg_class: str
class ravenpy.config.emulators.sacsma.SACSMA(*, EnKFMode: EnKFMode | None = None, WindowSize: int | None = None, SolutionRunName: str | None = None, ExtraRVTFilename: str | None = None, OutputDirectoryFormat: str | Path | None = None, ForecastRVTFilename: str | None = None, TruncateHindcasts: bool | None = None, ForcingPerturbation: Sequence[ForcingPerturbation] | None = None, AssimilatedState: Sequence[AssimilatedState] | None = None, AssimilateStreamflow: Sequence[AssimilateStreamflow] | None = None, ObservationErrorModel: Sequence[ObservationErrorModel] | None = None, params: Params = Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21')), SoilClasses: SoilClasses = [{'name': 'UZT'}, {'name': 'UZF'}, {'name': 'LZT'}, {'name': 'LZFP'}, {'name': 'LZFS'}, {'name': 'ADIM'}, {'name': 'GW'}], SoilProfiles: SoilProfiles = [{'name': 'LAKE'}, {'name': 'DEFAULT_P', 'soil_classes': ('UZT', 'UZF', 'LZT', 'LZFP', 'LZFS', 'ADIM', 'GW'), 'thicknesses': (Variable('X04'), Variable('X05'), Variable('X06'), Variable('X08'), Variable('X07'), 100, 100)}], VegetationClasses: VegetationClasses = [{'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5, 'name': 'FOREST'}], LandUseClasses: LandUseClasses = [LandUseClass(name='FOREST', impermeable_frac=Variable('X13'), forest_coverage=1.0)], TerrainClasses: TerrainClasses | None = None, SoilParameterList: SoilParameterList = {'parameters': ('POROSITY', 'SAC_PERC_ALPHA', 'SAC_PERC_EXPON', 'SAC_PERC_PFREE', 'BASEFLOW_COEFF', 'UNAVAIL_FRAC'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), 0.0, 0.0)), ParameterList(name='UZF', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X03'), 0.0)), ParameterList(name='LZFP', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X01'), Variable('X16'))), ParameterList(name='LZFS', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X02'), 0.0))]}, LandUseParameterList: LandUseParameterList = {'parameters': ('GAMMA_SHAPE', 'GAMMA_SCALE', 'MELT_FACTOR', 'STREAM_FRACTION', 'MAX_SAT_AREA_FRAC', 'BF_LOSS_FRACTION'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X18'), Variable('X19'), Variable('X17'), Variable('X15'), Variable('X14'), Variable('X12')))]}, VegetationParameterList: VegetationParameterList = {'parameters': ('RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'), 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0))]}, ChannelProfile: Sequence[ChannelProfile] | None = None, GlobalParameter: Dict[str, Variable | Expression | float | None] | None = {}, RainSnowTransition: RainSnowTransition | None = None, SeasonalRelativeLAI: SeasonalRelativeLAI | None = None, SeasonalRelativeHeight: SeasonalRelativeHeight | None = None, Gauge: Sequence[Gauge] | None = None, StationForcing: Sequence[StationForcing] | None = None, GriddedForcing: Sequence[GriddedForcing] | None = None, ObservationData: Sequence[ObservationData] | None = None, SubBasins: SubBasins = [SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], SubBasinGroup: Sequence[SubBasinGroup] | None = None, SubBasinProperties: SubBasinProperties | None = None, SBGroupPropertyMultiplier: Sequence[SBGroupPropertyMultiplier] | None = None, HRUs: HRUs = [LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], HRUGroup: Sequence[HRUGroup] | None = None, Reservoirs: Sequence[Reservoir] | None = None, HRUStateVariableTable: HRUStateVariableTable = [HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X04'), 1000)), 'SOIL[2]': Product((Variable('X06'), 1000))})], BasinStateVariables: BasinStateVariables | None = None, UniformInitialConditions: Dict[str, Variable | Expression | float | None] | None = None, SilentMode: bool | None = None, NoisyMode: bool | None = None, RunName: str | None = None, Calendar: Calendar = 'PROLEPTIC_GREGORIAN', StartDate: date | datetime | datetime | None = None, AssimilationStartTime: date | datetime | datetime | None = None, EndDate: date | datetime | datetime | None = None, Duration: float | None = None, TimeStep: float | str = 1.0, Routing: Routing = 'ROUTE_NONE', CatchmentRouting: CatchmentRoute = 'ROUTE_GAMMA_CONVOLUTION', Evaporation: Evaporation = Evaporation.OUDIN, OW_Evaporation: Evaporation | None = None, SWRadiationMethod: SWRadiationMethod | None = None, SWCloudCorrect: SWCloudCorrect | None = None, SWCanopyCorrect: SWCanopyCorrect | None = None, LWRadiationMethod: LWRadiationMethod | None = None, WindspeedMethod: WindspeedMethod | None = None, RainSnowFraction: RainSnowFraction = RainSnowFraction.DATA, PotentialMeltMethod: PotentialMeltMethod = PotentialMeltMethod.DEGREE_DAY, OroTempCorrect: OroTempCorrect | None = None, OroPrecipCorrect: OroPrecipCorrect | None = None, OroPETCorrect: OroPETCorrect | None = None, CloudCoverMethod: CloudCoverMethod | None = None, PrecipIceptFract: PrecipIceptFract | None = None, SubdailyMethod: SubdailyMethod | None = None, MonthlyInterpolationMethod: MonthlyInterpolationMethod | None = None, SoilModel: SoilModel = 7, TemperatureCorrection: bool | None = None, LakeStorage: Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'] | None = None, DefineHRUGroups: Sequence[str] | None = None, HydrologicProcesses: Sequence[Process | Conditional] = [SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), SoilEvaporation(algo='SOILEVAP_SACSMA', source='MULTIPLE', to=['ATMOSPHERE']), SoilBalance(algo='SOILBAL_SACSMA', source='MULTIPLE', to=['MULTIPLE']), OpenWaterEvaporation(algo='OPEN_WATER_RIPARIAN', source='SURFACE_WATER', to=['ATMOSPHERE'])], EvaluationMetrics: Sequence[EvaluationMetrics] | None = None, EvaluationPeriod: Sequence[EvaluationPeriod] | None = None, EnsembleMode: EnsembleMode | None = None, WriteNetcdfFormat: bool = True, netcdf_attribute: Dict[str, str] = {'model_id': 'SACSMA'}, CustomOutput: Sequence[CustomOutput] | None = None, DirectEvaporation: bool | None = None, DeltaresFEWSMode: bool | None = None, DebugMode: bool | None = None, DontWriteWatershedStorage: bool | None = None, PavicsMode: bool | None = None, SuppressOutput: bool | None = None, WriteForcingFunctions: bool | None = None, WriteSubbasinFile: bool | None = None, WriteLocalFlows: bool | None = None)[source]

Bases: Config

Sacramento - Soil Moisture Accounting model

References

Sorooshian, S., Duan, Q., and Gupta, V. K. (1993), Calibration of rainfall-runoff models: Application of global optimization to the Sacramento Soil Moisture Accounting Model, Water Resour. Res., 29( 4), 1185– 1194, doi:10.1029/92WR02617.

calendar: Calendar
catchment_route: CatchmentRoute
evaporation: Evaporation
hru_state_variable_table: HRUStateVariableTable
hrus: HRUs
hydrologic_processes: Sequence[Process | Conditional]
land_use_classes: LandUseClasses
land_use_parameter_list: LandUseParameterList
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'populate_by_name': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'assimilate_streamflow': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilateStreamflow], NoneType], required=False, default_factory=<lambda>, alias='AssimilateStreamflow', alias_priority=2, validate_default=False), 'assimilated_state': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.AssimilatedState], NoneType], required=False, default_factory=<lambda>, alias='AssimilatedState', alias_priority=2, validate_default=False), 'assimilation_start_time': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='AssimilationStartTime', alias_priority=2, validate_default=False), 'basin_state_variables': FieldInfo(annotation=Union[BasinStateVariables, NoneType], required=False, default_factory=<lambda>, alias='BasinStateVariables', alias_priority=2, validate_default=False), 'calendar': FieldInfo(annotation=Calendar, required=False, default='PROLEPTIC_GREGORIAN', alias='Calendar', alias_priority=2), 'catchment_route': FieldInfo(annotation=CatchmentRoute, required=False, default='ROUTE_GAMMA_CONVOLUTION', alias='CatchmentRouting', alias_priority=2), 'channel_profile': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ChannelProfile], NoneType], required=False, default_factory=<lambda>, alias='ChannelProfile', alias_priority=2, validate_default=False), 'cloud_cover_method': FieldInfo(annotation=Union[CloudCoverMethod, NoneType], required=False, default_factory=<lambda>, alias='CloudCoverMethod', alias_priority=2, validate_default=False), 'custom_output': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.CustomOutput], NoneType], required=False, default_factory=<lambda>, alias='CustomOutput', alias_priority=2, validate_default=False), 'debug_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DebugMode', alias_priority=2, validate_default=False), 'define_hru_groups': FieldInfo(annotation=Union[Sequence[str], NoneType], required=False, default_factory=<lambda>, alias='DefineHRUGroups', alias_priority=2, validate_default=False), 'deltares_fews_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DeltaresFEWSMode', alias_priority=2, validate_default=False), 'direct_evaporation': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DirectEvaporation', alias_priority=2, description='Rainfall is automatically reduced through evapotranspiration up to the limit of the calculated PET.', validate_default=False), 'dont_write_watershed_storage': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='DontWriteWatershedStorage', alias_priority=2, description='Do not write watershed storage variables to disk.', validate_default=False), 'duration': FieldInfo(annotation=Union[float, NoneType], required=False, default_factory=<lambda>, alias='Duration', alias_priority=2, validate_default=False), 'end_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='EndDate', alias_priority=2, validate_default=False), 'enkf_mode': FieldInfo(annotation=Union[EnKFMode, NoneType], required=False, default_factory=<lambda>, alias='EnKFMode', alias_priority=2, validate_default=False), 'ensemble_mode': FieldInfo(annotation=Union[EnsembleMode, NoneType], required=False, default_factory=<lambda>, alias='EnsembleMode', alias_priority=2, validate_default=False), 'evaluation_metrics': FieldInfo(annotation=Union[Sequence[ravenpy.config.options.EvaluationMetrics], NoneType], required=False, default_factory=<lambda>, alias='EvaluationMetrics', alias_priority=2, validate_default=False), 'evaluation_period': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.EvaluationPeriod], NoneType], required=False, default_factory=<lambda>, alias='EvaluationPeriod', alias_priority=2, validate_default=False), 'evaporation': FieldInfo(annotation=Evaporation, required=False, default=<Evaporation.OUDIN: 'PET_OUDIN'>, alias='Evaporation', alias_priority=2), 'extra_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ExtraRVTFilename', alias_priority=2, validate_default=False), 'forcing_perturbation': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ForcingPerturbation], NoneType], required=False, default_factory=<lambda>, alias='ForcingPerturbation', alias_priority=2, validate_default=False), 'forecast_rvt_filename': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='ForecastRVTFilename', alias_priority=2, validate_default=False), 'gauge': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Gauge], NoneType], required=False, default_factory=<lambda>, alias='Gauge', alias_priority=2, validate_default=False), 'global_parameter': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default={}, alias='GlobalParameter', alias_priority=2), 'gridded_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.GriddedForcing], NoneType], required=False, default_factory=<lambda>, alias='GriddedForcing', alias_priority=2, validate_default=False), 'hru_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.HRUGroup], NoneType], required=False, default_factory=<lambda>, alias='HRUGroup', alias_priority=2, validate_default=False), 'hru_state_variable_table': FieldInfo(annotation=HRUStateVariableTable, required=False, default=[HRUState(hru_id=1, data={'SOIL[0]': Product((Variable('X04'), 1000)), 'SOIL[2]': Product((Variable('X06'), 1000))})], alias='HRUStateVariableTable', alias_priority=2), 'hrus': FieldInfo(annotation=HRUs, required=False, default=[LandHRU(hru_id=1, area=0, elevation=0, latitude=0, longitude=0, subbasin_id=1, land_use_class='FOREST', veg_class='FOREST', soil_profile='DEFAULT_P', aquifer_profile='[NONE]', terrain_class='[NONE]', slope=0.0, aspect=0.0, hru_type=None)], alias='HRUs', alias_priority=2), 'hydrologic_processes': FieldInfo(annotation=Sequence[Union[ravenpy.config.commands.Process, ravenpy.config.processes.Conditional]], required=False, default=[SnowBalance(algo='SNOBAL_SIMPLE_MELT', source='SNOW', to=['PONDED_WATER']), Precipitation(algo='RAVEN_DEFAULT', source='ATMOS_PRECIP', to=['MULTIPLE']), SoilEvaporation(algo='SOILEVAP_SACSMA', source='MULTIPLE', to=['ATMOSPHERE']), SoilBalance(algo='SOILBAL_SACSMA', source='MULTIPLE', to=['MULTIPLE']), OpenWaterEvaporation(algo='OPEN_WATER_RIPARIAN', source='SURFACE_WATER', to=['ATMOSPHERE'])], alias='HydrologicProcesses', alias_priority=2), 'lake_storage': FieldInfo(annotation=Union[Literal['SURFACE_WATER', 'ATMOSPHERE', 'ATMOS_PRECIP', 'PONDED_WATER', 'SOIL', 'SOIL[0]', 'SOIL[1]', 'SOIL[2]', 'GROUNDWATER', 'CANOPY', 'CANOPY_SNOW', 'TRUNK', 'ROOT', 'DEPRESSION', 'WETLAND', 'LAKE_STORAGE', 'SNOW', 'SNOW_LIQ', 'GLACIER', 'GLACIER_ICE', 'CONVOLUTION', 'CONV_STOR', 'SURFACE_WATER_TEMP', 'SNOW_TEMP', 'COLD_CONTENT', 'GLACIER_CC', 'SOIL_TEMP', 'CANOPY_TEMP', 'SNOW_DEPTH', 'PERMAFROST_DEPTH', 'SNOW_COVER', 'SNOW_AGE', 'SNOW_ALBEDO', 'CROP_HEAT_UNITS', 'CUM_INFIL', 'CUM_SNOWMELT', 'CONSTITUENT', 'CONSTITUENT_SRC', 'CONSTITUENT_SW', 'CONSTITUENT_SINK', 'MULTIPLE'], NoneType], required=False, default_factory=<lambda>, alias='LakeStorage', alias_priority=2, validate_default=False), 'land_use_classes': FieldInfo(annotation=LandUseClasses, required=False, default=[LandUseClass(name='FOREST', impermeable_frac=Variable('X13'), forest_coverage=1.0)], alias='LandUseClasses', alias_priority=2), 'land_use_parameter_list': FieldInfo(annotation=LandUseParameterList, required=False, default={'parameters': ('GAMMA_SHAPE', 'GAMMA_SCALE', 'MELT_FACTOR', 'STREAM_FRACTION', 'MAX_SAT_AREA_FRAC', 'BF_LOSS_FRACTION'), 'pl': [ParameterList(name='[DEFAULT]', values=(Variable('X18'), Variable('X19'), Variable('X17'), Variable('X15'), Variable('X14'), Variable('X12')))]}, alias='LandUseParameterList', alias_priority=2), 'lw_radiation_method': FieldInfo(annotation=Union[LWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='LWRadiationMethod', alias_priority=2, validate_default=False), 'monthly_interpolation_method': FieldInfo(annotation=Union[MonthlyInterpolationMethod, NoneType], required=False, default_factory=<lambda>, alias='MonthlyInterpolationMethod', alias_priority=2, validate_default=False), 'netcdf_attribute': FieldInfo(annotation=Dict[str, str], required=False, default={'model_id': 'SACSMA'}), 'noisy_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='NoisyMode', alias_priority=2, validate_default=False), 'observation_data': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationData], NoneType], required=False, default_factory=<lambda>, alias='ObservationData', alias_priority=2, validate_default=False), 'observation_error_model': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.ObservationErrorModel], NoneType], required=False, default_factory=<lambda>, alias='ObservationErrorModel', alias_priority=2, validate_default=False), 'oro_pet_correct': FieldInfo(annotation=Union[OroPETCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPETCorrect', alias_priority=2, validate_default=False), 'oro_precip_correct': FieldInfo(annotation=Union[OroPrecipCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroPrecipCorrect', alias_priority=2, validate_default=False), 'oro_temp_correct': FieldInfo(annotation=Union[OroTempCorrect, NoneType], required=False, default_factory=<lambda>, alias='OroTempCorrect', alias_priority=2, validate_default=False), 'output_directory_format': FieldInfo(annotation=Union[str, Path, NoneType], required=False, default_factory=<lambda>, alias='OutputDirectoryFormat', alias_priority=2, validate_default=False), 'ow_evaporation': FieldInfo(annotation=Union[Evaporation, NoneType], required=False, default_factory=<lambda>, alias='OW_Evaporation', alias_priority=2, validate_default=False), 'params': FieldInfo(annotation=Params, required=False, default=Params(X01=Variable('X01'), X02=Variable('X02'), X03=Variable('X03'), X04=Variable('X04'), X05=Variable('X05'), X06=Variable('X06'), X07=Variable('X07'), X08=Variable('X08'), X09=Variable('X09'), X10=Variable('X10'), X11=Variable('X11'), X12=Variable('X12'), X13=Variable('X13'), X14=Variable('X14'), X15=Variable('X15'), X16=Variable('X16'), X17=Variable('X17'), X18=Variable('X18'), X19=Variable('X19'), X20=Variable('X20'), X21=Variable('X21'))), 'pavics_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='PavicsMode', alias_priority=2, validate_default=False), 'potential_melt_method': FieldInfo(annotation=PotentialMeltMethod, required=False, default=<PotentialMeltMethod.DEGREE_DAY: 'POTMELT_DEGREE_DAY'>, alias='PotentialMeltMethod', alias_priority=2), 'precip_icept_frac': FieldInfo(annotation=Union[PrecipIceptFract, NoneType], required=False, default_factory=<lambda>, alias='PrecipIceptFract', alias_priority=2, validate_default=False), 'rain_snow_fraction': FieldInfo(annotation=RainSnowFraction, required=False, default=<RainSnowFraction.DATA: 'RAINSNOW_DATA'>, alias='RainSnowFraction', alias_priority=2), 'rain_snow_transition': FieldInfo(annotation=Union[RainSnowTransition, NoneType], required=False, default_factory=<lambda>, alias='RainSnowTransition', alias_priority=2, validate_default=False), 'reservoirs': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.Reservoir], NoneType], required=False, default_factory=<lambda>, alias='Reservoirs', alias_priority=2, validate_default=False), 'routing': FieldInfo(annotation=Routing, required=False, default='ROUTE_NONE', alias='Routing', alias_priority=2), 'run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='RunName', alias_priority=2, validate_default=False), 'sb_group_property_multiplier': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SBGroupPropertyMultiplier], NoneType], required=False, default_factory=<lambda>, alias='SBGroupPropertyMultiplier', alias_priority=2, validate_default=False), 'seasonal_relative_height': FieldInfo(annotation=Union[SeasonalRelativeHeight, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeHeight', alias_priority=2, validate_default=False), 'seasonal_relative_lai': FieldInfo(annotation=Union[SeasonalRelativeLAI, NoneType], required=False, default_factory=<lambda>, alias='SeasonalRelativeLAI', alias_priority=2, validate_default=False), 'silent_mode': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SilentMode', alias_priority=2, validate_default=False), 'soil_classes': FieldInfo(annotation=SoilClasses, required=False, default=[{'name': 'UZT'}, {'name': 'UZF'}, {'name': 'LZT'}, {'name': 'LZFP'}, {'name': 'LZFS'}, {'name': 'ADIM'}, {'name': 'GW'}], alias='SoilClasses', alias_priority=2), 'soil_model': FieldInfo(annotation=SoilModel, required=False, default=7, alias='SoilModel', alias_priority=2), 'soil_parameter_list': FieldInfo(annotation=SoilParameterList, required=False, default={'parameters': ('POROSITY', 'SAC_PERC_ALPHA', 'SAC_PERC_EXPON', 'SAC_PERC_PFREE', 'BASEFLOW_COEFF', 'UNAVAIL_FRAC'), 'pl': [ParameterList(name='[DEFAULT]', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), 0.0, 0.0)), ParameterList(name='UZF', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X03'), 0.0)), ParameterList(name='LZFP', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X01'), Variable('X16'))), ParameterList(name='LZFS', values=(1.0, Variable('X11'), Variable('X10'), Variable('X09'), Variable('X02'), 0.0))]}, alias='SoilParameterList', alias_priority=2), 'soil_profiles': FieldInfo(annotation=SoilProfiles, required=False, default=[{'name': 'LAKE'}, {'name': 'DEFAULT_P', 'soil_classes': ('UZT', 'UZF', 'LZT', 'LZFP', 'LZFS', 'ADIM', 'GW'), 'thicknesses': (Variable('X04'), Variable('X05'), Variable('X06'), Variable('X08'), Variable('X07'), 100, 100)}], alias='SoilProfiles', alias_priority=2), 'solution_run_name': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, alias='SolutionRunName', alias_priority=2, validate_default=False), 'start_date': FieldInfo(annotation=Union[date, datetime, datetime, NoneType], required=False, default_factory=<lambda>, alias='StartDate', alias_priority=2, validate_default=False), 'station_forcing': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.StationForcing], NoneType], required=False, default_factory=<lambda>, alias='StationForcing', alias_priority=2, validate_default=False), 'sub_basin_group': FieldInfo(annotation=Union[Sequence[ravenpy.config.commands.SubBasinGroup], NoneType], required=False, default_factory=<lambda>, alias='SubBasinGroup', alias_priority=2, validate_default=False), 'sub_basin_properties': FieldInfo(annotation=Union[SubBasinProperties, NoneType], required=False, default_factory=<lambda>, alias='SubBasinProperties', alias_priority=2, validate_default=False), 'sub_basins': FieldInfo(annotation=SubBasins, required=False, default=[SubBasin(subbasin_id=1, name='sub_001', downstream_id=-1, profile='NONE', reach_length=0, gauged=True, gauge_id='')], alias='SubBasins', alias_priority=2), 'subdaily_method': FieldInfo(annotation=Union[SubdailyMethod, NoneType], required=False, default_factory=<lambda>, alias='SubdailyMethod', alias_priority=2, validate_default=False), 'suppress_output': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='SuppressOutput', alias_priority=2, description='Write minimal output to disk when enabled.', validate_default=False), 'sw_canopy_correct': FieldInfo(annotation=Union[SWCanopyCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCanopyCorrect', alias_priority=2, validate_default=False), 'sw_cloud_correct': FieldInfo(annotation=Union[SWCloudCorrect, NoneType], required=False, default_factory=<lambda>, alias='SWCloudCorrect', alias_priority=2, validate_default=False), 'sw_radiation_method': FieldInfo(annotation=Union[SWRadiationMethod, NoneType], required=False, default_factory=<lambda>, alias='SWRadiationMethod', alias_priority=2, validate_default=False), 'temperature_correction': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TemperatureCorrection', alias_priority=2, description='Gridded or gauged temperature bias correction.', validate_default=False), 'terrain_classes': FieldInfo(annotation=Union[TerrainClasses, NoneType], required=False, default_factory=<lambda>, alias='TerrainClasses', alias_priority=2, validate_default=False), 'time_step': FieldInfo(annotation=Union[float, str], required=False, default=1.0, alias='TimeStep', alias_priority=2), 'truncate_hindcasts': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='TruncateHindcasts', alias_priority=2, validate_default=False), 'uniform_initial_conditions': FieldInfo(annotation=Union[Dict[str, Union[pymbolic.primitives.Variable, pymbolic.primitives.Expression, float, NoneType]], NoneType], required=False, default_factory=<lambda>, alias='UniformInitialConditions', alias_priority=2, validate_default=False), 'vegetation_classes': FieldInfo(annotation=VegetationClasses, required=False, default=[{'name': 'FOREST', 'max_ht': 4, 'max_lai': 5, 'max_leaf_cond': 5}], alias='VegetationClasses', alias_priority=2), 'vegetation_parameter_list': FieldInfo(annotation=VegetationParameterList, required=False, default={'parameters': ('RAIN_ICEPT_PCT', 'SNOW_ICEPT_PCT'), 'pl': [ParameterList(name='[DEFAULT]', values=(0.0, 0.0))]}, alias='VegetationParameterList', alias_priority=2), 'window_size': FieldInfo(annotation=Union[int, NoneType], required=False, default_factory=<lambda>, alias='WindowSize', alias_priority=2, validate_default=False), 'windspeed_method': FieldInfo(annotation=Union[WindspeedMethod, NoneType], required=False, default_factory=<lambda>, alias='WindspeedMethod', alias_priority=2, validate_default=False), 'write_forcing_functions': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteForcingFunctions', alias_priority=2, description='Write watershed averaged forcing functions (e.g. rainfall, radiation, PET, etc).', validate_default=False), 'write_local_flows': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteLocalFlows', alias_priority=2, description='Write local contribution to hydrograph in hydrograph.csv', validate_default=False), 'write_netcdf_format': FieldInfo(annotation=bool, required=False, default=True, alias='WriteNetcdfFormat', alias_priority=2), 'write_subbasin_file': FieldInfo(annotation=Union[bool, NoneType], required=False, default_factory=<lambda>, alias='WriteSubbasinFile', alias_priority=2, validate_default=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

netcdf_attribute: Dict[str, str]
params: Params
potential_melt_method: PotentialMeltMethod
rain_snow_fraction: RainSnowFraction
routing: Routing
soil_classes: SoilClasses
soil_model: SoilModel
soil_parameter_list: SoilParameterList
soil_profiles: SoilProfiles
sub_basins: SubBasins
time_step: float | str
vegetation_classes: VegetationClasses
vegetation_parameter_list: VegetationParameterList
write_netcdf_format: bool