LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
ld_oryza2000.h
1
12
13#ifndef LDNDC_KERNEL_ORYZA2000_H_
14#define LDNDC_KERNEL_ORYZA2000_H_
15
16#include "ld_kernel.h"
17#include "ld_shared.h"
18
19#include "oryza2000/ld_oryza2000_state.h"
20#include "oryza2000/ld_oryza2000_subgrn.h"
21#include "oryza2000/ld_oryza2000_phenol.h"
22#include "oryza2000/ld_oryza2000_ncrop.h"
23#include "oryza2000/ld_oryza2000_sublai3.h"
24#include "oryza2000/ld_oryza2000_output.h"
25
26namespace ldndc
27{
28 namespace climate
29 { class input_class_climate_t; }
30 namespace setup
31 { class input_class_setup_t; }
32
33 class substate_soilchemistry_t;
34 class substate_watercycle_t;
35}
36
37namespace ldndc {
38class LDNDC_API LK_Oryza2000 : public cbm::kernel_t
39{
40 LDNDC_KERNEL_OBJECT(LK_Oryza2000,oryza2000)
41
42 public:
43 LK_Oryza2000();
44 ~LK_Oryza2000();
45
46 lerr_t configure( cbm::RunLevelArgs *);
47 lerr_t register_ports( cbm::RunLevelArgs *);
48 lerr_t initialize( cbm::RunLevelArgs *);
49
50 lerr_t read( cbm::RunLevelArgs *);
51 lerr_t solve( cbm::RunLevelArgs *);
52 lerr_t integrate( cbm::RunLevelArgs *);
53 lerr_t write( cbm::RunLevelArgs *);
54 lerr_t finalize( cbm::RunLevelArgs *);
55
56 lerr_t unregister_ports( cbm::RunLevelArgs *);
57
58
59 protected:
60 CBM_Handle KernelHandle;
61
62 public:
63
64 static const unsigned int IGSN;
65 static const double GSX[];
66 static const double GSW[];
67
68 public:
69
70 timemode_e timemode;
71
77 bool ncrop_potential;
78
84 bool wcrop_potential;
85
86 bool farquhar;
87 bool root_turnover;
88
93 lerr_t OryzaPlant(
94 size_t /* seedbed duration */,
95 double /* seedling number */,
96 char const *);
97
102 lerr_t OryzaHarvest();
103
108 lerr_t OryzaReset();
109
114 lerr_t OryzaBerryBall();
115
120 lerr_t OryzaRateCalculation( cbm::RunLevelArgs * );
121
126 lerr_t OryzaIntegrate();
127
132 lerr_t OryzaUpdateCropstage();
133
138 Oryza2000Ncrop m_ncrop;
139
144 Oryza2000State * m_oryza;
145
146
147 Oryza2000State * get_state() { return this->m_oryza; }
148
149
150 private:
151 /* hide these buggers for now */
152 LK_Oryza2000( LK_Oryza2000 const &);
153 LK_Oryza2000 & operator=( LK_Oryza2000 const &);
154
155
160 lerr_t OryzaTransplanting();
161
162
167 Oryza2000Subgrn m_subgrn;
168
173 Oryza2000Sublai3 m_sublai3;
174
179 Oryza2000Phenol m_phenol;
180
185 lerr_t
186 OryzaDrout();
187
192 lerr_t
193 OryzaPenman(
194 cbm::RunLevelArgs * /* run level */,
195 int _isurf,
196 int _idoy,
197 double _lat,
198 double _rf,
199 double _anga,
200 double _angb,
201 double _tmdi,
202 double _rdd,
203 double _tmda,
204 double _wn,
205 double _vp,
206 double _dt,
207 double &_etd,
208 double &_etrd,
209 double &_etae);
210
215 lerr_t
216 OryzaSaturatedVapourPressure(
217 double _temperature,
218 double &_saturated_vapour_pressure,
219 double &_slope);
220
225 lerr_t
226 OryzaHydrology(
227 cbm::RunLevelArgs * /* run level */ );
228
233 ldndc::climate::input_class_climate_t const * m_climate;
234
239 ldndc::substate_watercycle_t const * m_wc;
240
241
247 Oryza2000Output m_output;
248
249private:
250
256 lerr_t subcd2();
257
265 lerr_t subdd(
266 double /* optimum temperature for development */,
267 double /* maximum temperature for development */,
268 double /* minimum temperature for development */,
269 double & /* heat units */);
270
271 lerr_t OryzaStateInitialization(
272 Oryza2000State *,
273 char const *);
274
275 /* helper functions */
276 lerr_t str_c2f(
277 char *,
278 size_t,
279 char const *);
280
281 lerr_t
282 sgpc1(
283 double _cslv,
284 double _eff,
285 double _ecpdf,
286 double _gai,
287 double _sinb,
288 double _rdpdr,
289 double _rdpdf,
290 double &_gpc);
291
292 lerr_t
293 gpparget(
294 double _xgai,
295 double _xgaid,
296 double _xeffin,
297 double &_xamaxout,
298 double &_xeffout);
299
300
301 lerr_t
302 sgpl(
303 double _cslv,
304 double _eff1,
305 double _ecpdf,
306 double _gai,
307 double _gaid,
308 double _sinb,
309 double _rdpdr,
310 double _rdpdf,
311 double &_gpl);
312
313 lerr_t
314 srdprf(
315 double _gaid,
316 double _cslv,
317 double _sinb,
318 double _ecpdf,
319 double _rdpdr,
320 double _rdpdf,
321 double &_rapshl,
322 double &_rapppl,
323 double &_fslla);
324
325 lerr_t
326 sgpcdt(
327 int /* day of year */,
328 double /* latitude */,
329 double _rdd,
330 double _frpar,
331 double _cslv,
332 double _eff,
333 double _ecpdf,
334 double _gai,
335 double /* daylength */,
336 double &_gpcdt);
337
338 lerr_t
339 sskyc(
340 double _sinb,
341 double _solcon,
342 double _frpar,
343 double _dsinbe,
344 double _rdd,
345 double &_rdpdr,
346 double &_rdpdf);
347
348 PublishedField<double> maturity_status;
349};
350
351} /* namespace ldndc */
352
353#endif /* !LDNDC_KERNEL_ORYZA2000_H_ */
354
Spatially explicit groundwater model.
Definition airchemistryput.h:15