38class LDNDC_API PhysiologyGrowthPSIM :
public MBE_LegacyModel
40 LMOD_EXPORT_MODULE_INFO(PhysiologyGrowthPSIM,
"physiology:psim",
"Physiology GrowthPSIM");
46 static const double C1;
76 static const double PTW;
78 static const double TAU;
96 ~PhysiologyGrowthPSIM();
98 lerr_t configure( ::ldndc::config_file_t
const *);
99 lerr_t register_ports( cbm::io_kcomm_t *);
103 lerr_t unregister_ports( cbm::io_kcomm_t *);
104 lerr_t finalize() {
return LDNDC_ERR_OK; }
128 double clumping_factor;
141 double target_biomass;
142 int target_treenumber;
144 enum canopy_nitrogen_uptake_e
151 canopy_nitrogen_uptake_e n_uptake_canopy_method;
153 bool have_forest_structure();
160 lerr_t PSIM_ResizeVegetationVectors();
165 lerr_t PSIM_StepInit();
170 lerr_t PSIM_PlantingEvent();
175 lerr_t PSIM_HydraulicConductance();
180 lerr_t PSIM_Photosynthesis();
185 lerr_t PSIM_Potentialtranspiration();
187 lerr_t PSIM_ResetFlushing();
189 lerr_t PSIM_ResetPhenology( MoBiLE_Plant *);
191 lerr_t PSIM_Reset( MoBiLE_Plant *);
193 lerr_t PSIM_ResetBiomassFromLastYear();
195 lerr_t PSIM_UpdateNitrogenConc();
197 lerr_t PSIM_AgriculturalManagement();
199 lerr_t PSIM_BudBurst();
201 lerr_t PSIM_Senescence();
203 lerr_t PSIM_CarAllocation();
205 lerr_t PSIM_SoilCarbonRelease();
207 lerr_t PSIM_NitAllocation();
209 lerr_t PSIM_Respiration();
211 lerr_t PSIM_NitrogenFixation();
213 lerr_t PSIM_NitrogenUptake();
215 lerr_t PSIM_BiomassUpdate();
217 lerr_t PSIM_PhotosynthesisRates();
219 lerr_t PSIM_DroughtStress();
221 lerr_t PSIM_NitrogenBalance();
223 lerr_t PSIM_VegStructure();
225 lerr_t PSIM_BalanceCheck(
size_t);
227 bool subdaily_timemode();
229 lerr_t PSIM_Harvest();
231 lerr_t PSIM_StepOut();
235 MoBiLE_State * m_state;
236 cbm::io_kcomm_t * io_kcomm;
238 input_class_climate_t
const & cl_;
239 input_class_soillayers_t
const & sl_;
240 input_class_setup_t
const * m_setup;
241 input_class_siteparameters_t
const * m_sipar;
242 input_class_species_t
const * m_species;
244 substate_airchemistry_t & ac_;
245 substate_microclimate_t & mc_;
246 substate_physiology_t & ph_;
247 substate_soilchemistry_t & sc_;
248 substate_watercycle_t & wc_;
250 MoBiLE_PlantVegetation * m_veg;
252 NitrogenFixation *NitrogenFixation_;
254 SubscribedEvent<LD_EventHandlerQueue> m_PlantEvents;
255 SubscribedEvent<LD_EventHandlerQueue> m_HarvestEvents;
257 lvector_t< bool > additional_season;
258 lvector_t< unsigned int > phenological_year;
259 lvector_t< int > foliage_age_of_start_senescence;
261 lvector_t< double > carbonuptake_vt;
263 lvector_t< int > days_since_emergence;
264 std::vector< std::vector< int > > foliage_age_na;
266 lvector_t< double > temp_sl;
267 lvector_t< double > ts_temp_fl;
269 lvector_t< double > no_concentration_fl;
270 lvector_t< double > no2_concentration_fl;
271 lvector_t< double > nh3_concentration_fl;
274 lvector_t< double > xylem_resistance_smoothed_old_vt;
275 lvector_t< double > psidecline_cum_vt;
276 lvector_t< double > psidecline_daycum_vt;
277 lvector_t< double > rehydrationindex_cum_vt;
279 lvector_t< double > mSapOld_vt;
280 lvector_t< double > mCorOld_vt;
282 lvector_t< double > qsaparea_vt;
283 lvector_t< double > fsub_vt;
285 lvector_t< double > mSapOpt_vt;
286 lvector_t< double > mBudLoss_vt;
287 lvector_t< double > mSapLoss_vt;
288 lvector_t< double > ncFolOpt;
289 lvector_t< double > ncBudOpt;
290 lvector_t< double > ts_leaftemp_vt;
291 lvector_t< double > nd_leaftemp_vt;
292 lvector_t< double > nDem_vt;
293 lvector_t< double > nFol_vt;
294 lvector_t< double > nFrt_vt;
295 lvector_t< double > nSap_vt;
296 lvector_t< double > nCor_vt;
297 lvector_t< double > nBud_vt;
298 lvector_t< double > cNOx_fl;
300 lvector_t< double > uptNH4Max_vt;
301 lvector_t< double > uptNO3Max_vt;
302 lvector_t< double > uptDONMax_vt;
303 lvector_t< double > uptNWetMax_vt;
304 lvector_t< double > uptNWet_vt;
305 lvector_t< double > uptNTot_vt;
306 std::vector< std::vector< double > > uptNH4Max_vtsl;
307 std::vector< std::vector< double > > uptNO3Max_vtsl;
308 std::vector< std::vector< double > > uptDONMax_vtsl;
310 lvector_t< double > rFolOld_vt;
311 lvector_t< double > rBudOld_vt;
312 lvector_t< double > rSapOld_vt;
313 lvector_t< double > rFrtOld_vt;
314 lvector_t< double > rTraOld_vt;
315 lvector_t< double > exsuLossOld_vt;
317 lvector_t< double > uptNH4_vt;
318 lvector_t< double > uptNO3_vt;
319 lvector_t< double > uptNH3_vt;
320 lvector_t< double > uptDON_vt;
322 lvector_t< double > uptNH4Old_vt;
323 lvector_t< double > uptNO3Old_vt;
324 lvector_t< double > uptNH3Old_vt;
325 lvector_t< double > uptDONOld_vt;
327 lvector_t< double > uptNOxOld_vt;
328 lvector_t< double > uptNHyOld_vt;
330 lvector_t< double > n_bud_to_fol_vt;
332 lvector_t< double > n_sap_to_cor_vt;
333 lvector_t< double > n_bud_to_cor_vt;
334 lvector_t< double > n_fol_to_cor_vt;
335 lvector_t< double > n_frt_to_cor_vt;
337 lvector_t< double > n_sap_to_litter_vt;
339 lvector_t< double > n_sap_to_redistribute_vt;
340 lvector_t< double > n_bud_to_redistribute_vt;
341 lvector_t< double > n_fol_to_redistribute_vt;
342 lvector_t< double > n_frt_to_redistribute_vt;
344 lvector_t< double > n_sap_gain_vt;
345 lvector_t< double > n_bud_gain_vt;
346 lvector_t< double > n_fol_gain_vt;
347 lvector_t< double > n_frt_gain_vt;
349 lvector_t< double > nhy_uptake_fl;
350 lvector_t< double > nox_uptake_fl;
352 double mFol_emergence;
353 double accumulated_wateruptake_old;
354 double accumulated_potentialtranspiration_old;
356 double plant_waterdeficit_old;
357 double psi_deficit_old;
363 double SIM_DAY_FRACTION;
367 LD_PlantFunctions m_pf;
368 TreeDynamics m_treedyn;
370 lvector_t< double > no3_sl;
371 lvector_t< double > nh4_sl;
372 lvector_t< double > don_sl;
374 EventHandlerGraze m_eventgraze;
375 EventHandlerCut m_eventcut;