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"
22 LMOD_EXPORT_MODULE_INFO(
WatercycleDNDC,
"watercycle:watercycledndc",
"WatercycleDNDC");
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;
144 lerr_t event_irrigate();
152 lerr_t event_flood();
158 double balance_check(
double * );
164 void CalcRaining(
unsigned int);
166 double rainfall_intensity();
172 void CalcIrrigation(
unsigned int);
174 lerr_t CalcSnowPack();
176 lerr_t CalcIceContent();
212 lerr_t CalcPotEvapoTranspiration( );
241 double get_leaf_water();
247 double get_impedance_factor(
size_t );
261 lerr_t CalcTranspirationCouvreur(
double const &hr_potTransinm );
268 void CalcSnowEvaporation();
275 void CalcSurfaceWaterEvaporation();
282 void CalcSurfaceFlux();
289 void WatercycleDNDC_preferential_flow();
296 void CalcSoilEvapoPercolation();
303 void SoilWaterEvaporation(
size_t);
309 double WaterFlowBelowFieldCapacity(
size_t ,
317 double WaterFlowCapillaryRise(
size_t ,
324 double WaterFlowAboveFieldCapacity(
size_t ,
331 double WaterFlowSaturated(
size_t ,
338 double Soillayerwaterhead(
size_t );
344 double get_fsl(
size_t );
350 double get_time_step_duration();
352 size_t hours_per_time_step();
Watercycle model WatercycleDNDC.
Definition: watercycle-dndc.h:21
lerr_t CalcTranspiration()
static const unsigned int IMAX_W
Definition: watercycle-dndc.h:26
void CalcInterception()
Calculates water quantity that is retained on leaf and stem bark surfaces.
double thornthwaite_heat_index
heat index for potential evaporation using approach after Thornthwaite
Definition: watercycle-dndc.h:134
Spatially explicit groundwater model.
Definition: airchemistryput.h:15