Source code for ravenpy.config.processes

from textwrap import dedent, indent
from typing import Literal, Optional, Sequence, Tuple

from .base import Sym
from .commands import Command, Process


# --- Processes --- #
[docs] class Precipitation(Process): """Precipitation""" algo: Literal["PRECIP_RAVEN", "RAVEN_DEFAULT"] = "PRECIP_RAVEN"
[docs] class CapillaryRise(Process): algo: Literal["RISE_HBV", "CRISE_HBV"]
[docs] class CanopyEvaporation(Process): algo: Literal["CANEVP_RUTTER", "CANEVP_MAXIMUM", "CANEVP_ALL"]
[docs] class CanopySublimation(Process): algo: Literal["CANEVP_ALL", "CANEVP_MAXIMUM", "CANSUBLIM_ALL", "CANSUBLIM_MAXIMUM"]
[docs] class SoilBalance(Process): """""" algo: Literal["SOILBAL_SACSMA"]
[docs] class SoilEvaporation(Process): """""" algo: Literal[ "SOILEVAP_VIC", "SOILEVAP_HBV", "SOILEVAP_HYPR", "SOILEVAL_CHU", "SOILEVAP_UBC", "SOILEVAP_GR4J", "SOILEVAP_TOPMODEL", "SOILEVAP_SEQUEN", "SOILEVAP_ROOT", "SOILEVAP_ROOT_CONSTRAIN", "SOILEVAP_ROOTFRAC", "SOILEVAP_GAWSER", "SOILEVAP_FEDERER", "SOILEVAP_ALL", "SOILEVAP_LINEAR", "SOILEVAP_SACSMA", "SOILEVAP_HYMOD2", ]
[docs] class LakeEvaporation(Process): algo: Literal["LAKE_EVAP_BASIC"]
[docs] class LakeFreeze(Process): algo: Literal["LFREEZE_BASIC", "LFREEZE_THERMAL"]
[docs] class OpenWaterEvaporation(Process): algo: Literal["OPEN_WATER_EVAP", "OPEN_WATER_RIPARIAN"]
[docs] class Infiltration(Process): """""" algo: Literal[ "INF_RATIONAL", "INF_SCS", "INF_ALL_INFILTRATES", "INF_GR4J", "INF_GREEN_AMPT", "INF_GA_SIMPLE", "INF_UPSCALED_GREEN_AMPT", "INF_HBV", "INF_UBC", "INF_VIC", "INF_VIC_ARNO", "INF_PRMS", "INF_HMETS", ]
[docs] class Percolation(Process): """""" algo: Literal[ "PERC_GAWSER", "PERC_LINEAR", "PERC_POWER_LAW", "PERC_PRMS", "PERC_SACRAMENTO", "PERC_CONSTANT", "PERC_GR4J", "PERC_GR4JEXCH", "PERC_GR4JEXCH2", ]
[docs] class CapilaryRise(Process): algo: Literal["CRISE_HBV"]
[docs] class Baseflow(Process): """""" algo: Literal[ "BASE_LINEAR", "BASE_LINEAR_CONSTRAIN", "BASE_LINEAR_ANALYTIC", "BASE_POWER_LAW", "BASE_CONSTANT", "BASE_VIC", "BASE_THRESH_POWER", "BASE_THRESH_STOR", "BASE_GR4J", "BASE_TOPMODEL", "BASE_SACRAMENTO", ]
[docs] class Interflow(Process): algo: Literal["INTERFLOW_PRMS"]
[docs] class Seepage(Process): algo: Literal["SEEP_LINEAR"]
[docs] class DepressionOverflow(Process): algo: Literal["DFLOW_THRESHPOW", "DFLOW_LINEAR"]
[docs] class LakeRelease(Process): algo: Literal["LAKEREL_LINEAR"]
[docs] class Abstraction(Process): algo: Literal["ABST_PERCENTAGE", "ABST_FILL", "ABST_SCS", "ABST_PDMROF"]
[docs] class SnowMelt(Process): algo: Literal["MELT_POTMELT"]
[docs] class SnowRefreeze(Process): algo: Literal["FREEZE_DEGREE_DAY"]
[docs] class SnowBalance(Process): algo: Literal[ "SNOBAL_SIMPLE_MELT", "SNOBAL_COLD_CONTENT", "SNOBAL_HBV", "SNOBAL_TWO_LAYER", # "SNOWBAL_CEMA_NEIGE", "SNOBAL_CEMA_NIEGE", "SNOBAL_HMETS", "SNOWBAL_GAWSER", "SNOWBAL_UBC", ]
[docs] class Sublimation(Process): algo: Literal[ "SUBLIM_SVERDRUP", "SUBLIM_KUZMIN", "SUBLIM_CENTRAL_SIERRA", "SUBLIM_PSBM", "SUBLIM_WILLIAMS", ]
[docs] class SnowAlbedoEvolve(Process): algo: Literal["SNOALB_UBC"]
[docs] class SnowTempEvolve(Process): algo: Literal["SNOTEMP_NEWTONS"]
[docs] class CanopyDrip(Process): algo: Literal["CANDRIP_RUTTER", "CANDRIP_SLOWDRAIN"]
[docs] class CropHeatUnitEvolve(Process): algo: Literal["CHU_ONTARIO"]
[docs] class GlacierMelt(Process): algo: Literal["GMELT_SIMPLE_MELT", "GMELT_HBV", "GMELT_UBC"]
[docs] class GlacierRelease(Process): algo: Literal["GRELEASE_LINEAR", "GRELEASE_HBV_EC"]
[docs] class Flush(Process): """""" algo: Literal["RAVEN_DEFAULT"] = "RAVEN_DEFAULT" p: Optional[float] = None
[docs] class Overflow(Process): algo: Literal["OVERFLOW_RAVEN", "RAVEN_DEFAULT"] _sub = "-->" _indent = " "
[docs] class Split(Process): """""" p: float = None to: Tuple[str, str]
[docs] class Convolve(Process): """""" algo: Literal["CONVOL_GR4J_1", "CONVOL_GR4J_2", "CONVOL_GAMMA", "CONVOL_GAMMA_2"]
[docs] class LateralFlush(Process): """Lateral flush"""
[docs] class LateralEquilibrate(Process): """Lateral equilibrate Instantaneously equilibrates groundwater storage in basin HRUs. """
# --- End processes --- #
[docs] class Conditional(Command): """Conditional statement""" kind: Literal["HRU_TYPE", "LAND_CLASS", "HRU_GROUP"] op: Literal["IS", "IS_NOT"] value: str _sub = "-->"
[docs] def to_rv(self): cmd = self._sub + self.__class__.__name__ return f":{cmd:<20} {self.kind} {self.op} {self.value}"
[docs] class ProcessGroup(Command): p: Sequence[Process] params: Sequence[Sym] @property def _template(self): return """ :{_cmd} {_processes} :End{_cmd} CALCULATE_WTS {_params} """ @property def _indent(self): return " "
[docs] def to_rv(self): d = { "_cmd": "ProcessGroup", "_processes": indent("\n".join(str(p) for p in self.p), self._indent), "_params": " ".join(map(str, self.params)), } return dedent(self._template).format(**d)