2#ifndef LM_WATERCYCLE_DNDC_H_
3#define LM_WATERCYCLE_DNDC_H_
5#include "mbe_legacymodel.h"
6#include "state/mbe_state.h"
9#include "ld_eventqueue.h"
10#include "eventhandler/flood/flood.h"
12#include "watercycle/ld_icesnow.h"
20class LDNDC_API WatercycleDNDC :
public MBE_LegacyModel
22 LMOD_EXPORT_MODULE_INFO(WatercycleDNDC,
"watercycle:watercycledndc",
"WatercycleDNDC");
29 WatercycleDNDC( MoBiLE_State *,
35 lerr_t configure( ldndc::config_file_t
const *);
36 lerr_t register_ports( cbm::io_kcomm_t *);
41 lerr_t unregister_ports( cbm::io_kcomm_t *);
48 cbm::io_kcomm_t * m_iokcomm;
50 input_class_groundwater_t
const * m_groundwater;
51 input_class_climate_t
const * m_climate;
52 input_class_setup_t
const * m_setup;
53 input_class_siteparameters_t
const * m_sipar;
54 input_class_soillayers_t
const * m_soillayers;
56 MoBiLE_PlantVegetation * m_veg;
58 substate_soilchemistry_t & sc_;
59 substate_watercycle_t & wc_;
60 substate_microclimate_t & mc_;
61 substate_physiology_t & ph_;
67 cbm::string_t potentialevapotranspiration_method;
68 cbm::string_t evapotranspiration_method;
69 double automaticirrigation;
70 bool ggcmi_irrigation;
74 struct StateMicroclimate
77 double air_temperature_below_canopy;
81 CBM_Vector<double> soil_temperature_sl;
83 StateMicroclimate m_mc;
85 struct StateWatercycle
87 double accumulated_irrigation_event_executed;
90 CBM_Vector<double> percolation_sl;
96 lerr_t receive_state();
99 WaterCycleSnowDNDC m_snowdndc;
100 WaterCycleSnowDNDC::IceContentStateIn m_icecontent_in;
101 WaterCycleSnowDNDC::IceContentStateOut m_icecontent_out;
103 EventHandlerFlood m_eventflood;
105 SubscribedEvent<LD_EventHandlerQueue> m_ManureEvents;
106 SubscribedEvent<LD_EventHandlerQueue> m_IrrigationEvents;
115 double hr_pot_evapotrans;
116 double hr_throughfall;
117 double potentialtranspiration;
118 double accumulated_potentialtranspiration_ts_old;
119 double accumulated_potentialtranspiration_nd_old;
121 double max_percolation;
124 double leaf_dryfraction;
125 double ground_water_table;
127 CBM_Vector<double> transpiration_ts;
128 CBM_Vector<double> pot_evapotranspiration_ts;
174 lerr_t CalcSnowPack();
309 double WaterFlowBelowFieldCapacity(
size_t ,
331 double WaterFlowSaturated(
size_t ,
338 double Soillayerwaterhead(
size_t );
361 size_t hours_per_time_step();
double get_fsl(size_t)
Returns factor accounting for soil layer depth. Originally, a constant soil layer depth of 0....
Definition watercycle-dndc.cpp:2544
lerr_t CalcPotEvapoTranspiration()
Potential evaporation.
Definition watercycle-dndc.cpp:536
lerr_t solve()
Kicks off computation for one time step.
Definition watercycle-dndc.cpp:442
void CalcSnowEvaporation()
Definition watercycle-dndc.cpp:2022
lerr_t CalcTranspiration()
double WaterFlowAboveFieldCapacity(size_t, double const &)
Definition watercycle-dndc.cpp:2368
static const unsigned int IMAX_W
Definition watercycle-dndc.h:26
double rainfall_intensity()
Definition watercycle-dndc.cpp:103
double WaterFlowCapillaryRise(size_t, double const &)
Similar to WaterFlowBelowFieldCapacity(...) but restricts water flow by water availability from soil ...
Definition watercycle-dndc.cpp:2417
lerr_t CalcTranspirationCouvreur(double const &hr_potTransinm)
Definition watercycle-dndc.cpp:1846
void CalcSurfaceFlux()
Definition watercycle-dndc.cpp:2572
void CalcRaining(unsigned int)
apportion daily rainfall to subdaily rainfall
Definition watercycle-dndc.cpp:675
void SoilWaterEvaporation(size_t)
Definition watercycle-dndc.cpp:2088
lerr_t CalcIceContent()
Call of ice-content related processes.
Definition watercycle-dndc.cpp:1337
double get_leaf_water()
Collects leaf water from all canopy layers.
Definition watercycle-dndc.cpp:1110
void CalcInterception()
Calculates water quantity that is retained on leaf and stem bark surfaces.
void CalcSurfaceWaterEvaporation()
Definition watercycle-dndc.cpp:1991
lerr_t event_irrigate()
considers water input due to irrigation and/or liquid manure evetns
Definition watercycle-dndc.cpp:708
double balance_check(double *)
checks each time step for correct water balance
Definition watercycle-dndc.cpp:2659
double thornthwaite_heat_index
heat index for potential evaporation using approach after Thornthwaite
Definition watercycle-dndc.h:134
void CalcIrrigation(unsigned int)
apportion daily irrigation to subdaily irrigation
Definition watercycle-dndc.cpp:803
lerr_t event_flood()
sets hydrologic conditions during flooding events, e.g.,
Definition watercycle-dndc.cpp:774
void CalcSoilEvapoPercolation()
Definition watercycle-dndc.cpp:2159
double get_time_step_duration()
Time fraction with regard to daily rates.
Definition watercycle-dndc.cpp:2648
double get_impedance_factor(size_t)
Reduces water fluxes out of a layer if ice lenses have formed.
Definition watercycle-dndc.cpp:2523
double get_clay_limitation(size_t _sl, double _water_avail, double _water_ref)
Restrains water availability due to clay content.
Definition watercycle-dndc.cpp:2718
void WatercycleDNDC_preferential_flow()
Definition watercycle-dndc.cpp:2461
Spatially explicit groundwater model.
Definition airchemistryput.h:15