LandscapeDNDC 1.37.0
oryza2000.h
1
10#ifndef LM_ORYZA2000_H_
11#define LM_ORYZA2000_H_
12
13#include "mbe_legacymodel.h"
14#include "state/mbe_state.h"
15#include "ld_shared.h"
16#include "ld_eventqueue.h"
17
18#include <containers/lgrowarray.h>
19
20namespace cbm {
21 struct RunLevelArgs; }
22namespace ldndc {
23 class LK_Oryza2000;
24 class Oryza2000State;
25}
26
27namespace ldndc {
28
29extern cbm::logger_t * PhysiologyOryza2000Logger;
30
31struct BaseRootSystemDNDC;
32class LDNDC_API PhysiologyOryza2000 : public MBE_LegacyModel
33{
34 LMOD_EXPORT_MODULE_INFO(PhysiologyOryza2000,"physiology:oryza2000","Physiology ORYZA2000");
35 public:
36 PhysiologyOryza2000( MoBiLE_State *,
37 cbm::io_kcomm_t *, timemode_e);
38
39 ~PhysiologyOryza2000();
40
41 lerr_t configure( ldndc::config_file_t const *);
42 lerr_t register_ports( cbm::io_kcomm_t *);
43 lerr_t initialize();
44
45 lerr_t read();
46 lerr_t solve();
47 lerr_t integrate();
48 lerr_t write();
49
50 lerr_t unregister_ports( cbm::io_kcomm_t *);
51 lerr_t finalize();
52
53 lerr_t sleep()
54 { return LDNDC_ERR_OK; }
55 lerr_t wake()
56 { return LDNDC_ERR_OK; }
57
58 private:
59 MoBiLE_State * m_state;
60 cbm::io_kcomm_t * m_iokcomm;
61
62 timemode_e const timemode;
63
64 /* required input classes */
65 input_class_setup_t const * m_setup;
66 input_class_soillayers_t const * m_soillayers;
67 input_class_climate_t const * m_climate;
68
69 /* required state components */
70 substate_microclimate_t * mc;
71 substate_airchemistry_t * ac;
72 substate_watercycle_t * wc;
73 substate_physiology_t * ph;
74 substate_soilchemistry_t * sc;
75
76 MoBiLE_PlantVegetation * m_veg;
77
78 EventQueue m_HarvestEvents;
79 CBM_Handle m_HarvestHandle;
80 EventQueue m_PlantEvents;
81 CBM_Handle m_PlantHandle;
82
83 ldndc::growable_array < BaseRootSystemDNDC*, 1000, 1 > root_system;
84
85 CBM_Handle hdl_ini;
86
87 LK_Oryza2000 * oryza2000_kernel;
88
89 bool ncrop_potential;
90 bool wcrop_potential;
91 bool farquhar;
92 bool root_turnover;
93
94 double accumulated_potentialtranspiration_old;
95
96 lerr_t Oryza2000PhysiologyReceiveState(
97 Oryza2000State * /* oryza state */);
98
99 lerr_t Oryza2000PhysiologySendState(
100 Oryza2000State * /* oryza state */);
101
102 lerr_t Oryza2000PhysiologyPlant(Oryza2000State * /* oryza state */,
103 cbm::RunLevelArgs * /* run level */);
104
105 lerr_t Oryza2000PhysiologyHarvest();
106};
107} /*namespace ldndc*/
108
109#endif /* !LM_ORYZA2000_H_ */
Spatially explicit groundwater model.
Definition: airchemistryput.h:15