LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
ld_treedyn.h
1
10
11#ifndef LD_TREEDYN_H_
12#define LD_TREEDYN_H_
13
14#include "ld_modelsconfig.h"
15#include "physiology/ld_plantfunctions.h"
16#include "physiology/ld_rootsystem.h"
17
18#include "state/mbe_state.h"
19#include "ld_eventqueue.h"
20//
21//#include <input/species/species.h>
22//
23//namespace ldndc {
24//
25//extern cbm::logger_t * VegStructureTREEDYNLogger;
26//
27namespace ldndc
28{
29
30 class LDNDC_API TreeDynamics
31 {
32
33
34 public:
35 TreeDynamics(
36 MoBiLE_State *,
37 cbm::io_kcomm_t *);
38
39 ~TreeDynamics();
40
41 lerr_t register_ports( cbm::io_kcomm_t *);
42 lerr_t unregister_ports( cbm::io_kcomm_t *);
43
44 LD_Allometry m_alm;
45 LD_PlantFunctions m_pf;
46 substate_soilchemistry_t & sc_;
47 substate_physiology_t & ph_;
48 MoBiLE_PlantVegetation * m_veg;
49 input_class_setup_t const * m_se;
50 input_class_soillayers_t const * m_sl;
51
52 lerr_t
53 Mortality( MoBiLE_Plant *,
54 double &_sWoodAbove,
55 double &_nLitWoodAbove,
56 double *_sWoodBelow_sl,
57 double *_nLitWoodBelow_sl);
58
65 lerr_t
66 Growth( MoBiLE_Plant *,
67 double /* daily carbon allocation to sapwood [kgC m-2 d-1] */,
68 double /* daily sapwood senescence [kgDW m-2 d-1] */,
69 bool /* competition method */,
70 /* bool,
71 cbm::string_t,
72 cbm::string_t,*/
73 double /* clumping factor */);
74
75 lerr_t
76 update_grass_coverage( MoBiLE_Plant * /* plant species */);
77
78 lerr_t
79 Crowding( MoBiLE_Plant *,
80 cbm::string_t);
81
82 double
83 get_branch_fraction(
84 cbm::string_t ,
85 MoBiLE_Plant *);
86
87 lerr_t
88 OnStructureChange( MoBiLE_Plant *,
89 RootSystemDNDC *_rs = NULL);
90
91 lerr_t
92 UpdateBiomass( MoBiLE_Plant *);
93
94 lerr_t
95 MassDistribution( MoBiLE_Plant *,
96 RootSystemDNDC *_rs = NULL);
97
98 lerr_t
99 LaiDistribution( MoBiLE_Plant *);
100
101 /* events methods */
102
103 int
104 HandleDisturbanceEvents(
105 cbm::io_kcomm_t *_io_kcomm,
106 cbm::string_t, /* crownlength_method */
107 /* cbm::string_t, */ // branchfraction method
108 /* bool, _competition method*/
109 double &, /* foliage dry weight litter */
110 double &, /* foliage nitrogen litter */
111 double &, /* fruit dry weight litter */
112 double &, /* fruit nitrogen dry weight litter */
113 double &, /* aboveground wood dry weight litter */
114 double &, /* aboveground wood nitrogen litter */
115 double *, /* belowground wood dry weight litter */
116 double *, /* belowground wood dry weight litter */
117 double *, /* fineroots dry weight litter */
118 double * /* fineroots nitrogen litter */);
119
120 EventQueue DefoliateEvents;
121 CBM_Handle DefoliateHandle;
122 struct EventDefoliateData
123 {
124 double reduction_volume;
125 bool export_foliage;
126 };
127 /* defoliation, e.g., for insect calamities or crown fires */
128 lerr_t HandleEventDefoliate(
129 MoBiLE_Plant*, EventDefoliateData const *,
130 double & /* foliage dry weight litter */,
131 double & /* foliage nitrogen litter */);
132 int HandleEventsDefoliate(
133 double & /* foliage dry weight litter */,
134 double & /* foliage nitrogen litter */);
135
136 EventQueue RegrowEvents;
137 CBM_Handle RegrowHandle;
138 struct EventRegrowData
139 {
140 double export_agb;
141 double tree_number;
142 double tree_number_resize_factor;
143 double height_max;
144 };
145 lerr_t HandleEventRegrow(
146 cbm::io_kcomm_t *_io_kcomm,
147 MoBiLE_Plant*, EventRegrowData const *,
148 cbm::string_t /* crownlength method */,
149 // cbm::string_t, /* branchfraction method */
150 double & /* foliage dry weight litter */,
151 /* double * foliage dry weight litter per age class ,*/
152 double & /* foliage nitrogen litter */,
153 double & /* fruit dry weight litter */,
154 double & /* fruit nitrogen dry weight litter */,
155 double & /* aboveground wood dry weight litter */,
156 double & /* aboveground wood nitrogen litter */);
157 int HandleEventsRegrow(
158 cbm::io_kcomm_t *_io_kcomm,
159 cbm::string_t /* crownlength method */,
160 // cbm::string_t, /* branchfraction method */
161 double & /* foliage dry weight litter */,
162 double & /* foliage nitrogen litter */,
163 double & /* fruit dry weight litter */,
164 double & /* fruit nitrogen dry weight litter */,
165 double & /* aboveground wood dry weight litter */,
166 double & /* aboveground wood nitrogen litter */);
167
168 EventQueue ThrowEvents;
169 CBM_Handle ThrowHandle;
170 struct EventThrowData
171 {
172 double reduction_volume;
173 };
174 lerr_t HandleEventThrow(
175 cbm::io_kcomm_t *_io_kcomm, MoBiLE_Plant*, EventThrowData const *,
176 double & /* foliage dry weight litter */,
177 double & /* foliage nitrogen litter */,
178 double & /* fruit dry weight litter */,
179 double & /* fruit nitrogen dry weight litter */,
180 double & /* aboveground wood dry weight litter */,
181 double & /* aboveground wood nitrogen litter */,
182 double * /* belowground wood dry weight litter */,
183 double * /* belowground wood dry weight litter */,
184 double * /* fineroots dry weight litter */,
185 double * /* fineroots nitrogen litter */);
186 int HandleEventsThrow(
187 cbm::io_kcomm_t *_io_kcomm,
188 double & /* foliage dry weight litter */,
189 double & /* foliage nitrogen litter */,
190 double & /* fruit dry weight litter */,
191 double & /* fruit nitrogen dry weight litter */,
192 double & /* aboveground wood dry weight litter */,
193 double & /* aboveground wood nitrogen litter */,
194 double * /* belowground wood dry weight litter */,
195 double * /* belowground wood dry weight litter */,
196 double * /* fineroots dry weight litter */,
197 double * /* fineroots nitrogen litter */);
198
199 EventQueue ThinEvents;
200 CBM_Handle ThinHandle;
201 struct EventThinData
202 {
203 double reduction_volume;
204 double reduction_number;
205 double export_foliage;
206 double export_branch_wood;
207 double export_root_wood;
208 double export_stem_wood;
209 };
210 lerr_t HandleEventThin(
211 cbm::io_kcomm_t *_io_kcomm,
212 MoBiLE_Plant*, EventThinData const *,
213 /* cbm::string_t, crownlength method */
214 /* bool, competition method */
215 double & /* foliage dry weight litter */,
216 double & /* foliage nitrogen litter */,
217 double & /* fruit dry weight litter */,
218 double & /* fruit nitrogen dry weight litter */,
219 double & /* aboveground wood dry weight litter */,
220 double & /* aboveground wood nitrogen litter */,
221 double * /* belowground wood dry weight litter per layer */,
222 double * /* belowground wood nitrogen litter */,
223 double * /* fineroots dry weight litter per layer*/,
224 double * /* fineroots nitrogen litter per layer*/);
225 int HandleEventsThin(
226 cbm::io_kcomm_t *_io_kcomm,
227 /* cbm::string_t, crownlength method */
228 /* bool, competition method */
229 double & /* foliage dry weight litter */,
230 double & /* foliage nitrogen litter */,
231 double & /* fruit dry weight litter */,
232 double & /* fruit nitrogen dry weight litter */,
233 double & /* aboveground wood dry weight litter */,
234 double & /* aboveground wood nitrogen litter */,
235 double * /* belowground wood dry weight litter */,
236 double * /* belowground wood dry weight litter */,
237 double * /* fineroots dry weight litter */,
238 double * /* fineroots nitrogen litter */);
239
240 EventQueue HarvestEvents;
241 CBM_Handle HarvestHandle;
242 struct EventHarvestData
243 {
244 double export_branch_wood;
245 double export_root_wood;
246 double export_stem_wood;
247 };
248 lerr_t HandleEventHarvest(
249 cbm::io_kcomm_t *_io_kcomm,
250 MoBiLE_Plant*, EventHarvestData const *,
251 double & /* foliage dry weight litter */,
252 double & /* foliage nitrogen litter */,
253 double & /* fruit dry weight litter */,
254 double & /* aboveground wood dry weight litter */,
255 double & /* aboveground wood nitrogen litter */,
256 double * /* belowground wood dry weight litter */,
257 double * /* belowground wood dry weight litter */,
258 double * /* fineroots dry weight litter */,
259 double * /* fineroots nitrogen litter */);
260 int HandleEventsHarvest(
261 cbm::io_kcomm_t *_io_kcomm,
262 double & /* foliage dry weight litter */,
263 double & /* foliage nitrogen litter */,
264 double & /* fruit dry weight litter */,
265 double & /* aboveground wood dry weight litter */,
266 double & /* aboveground wood nitrogen litter */,
267 double * /* belowground wood dry weight litter */,
268 double * /* belowground wood dry weight litter */,
269 double * /* fineroots dry weight litter */,
270 double * /* fineroots nitrogen litter */);
271
272 };
273}
274
275#endif /* !LD_TREEDYN_H_ */
276
Spatially explicit groundwater model.
Definition airchemistryput.h:15