LandscapeDNDC 1.37.0
mbe_soilchemistry.h
1
12#ifndef LDNDC_SUBSTATE_SOILCHEMISTRY_H_
13#define LDNDC_SUBSTATE_SOILCHEMISTRY_H_
14
15
16#include "state/mbe_substate.h"
17#include "substate/mbe_soilchemistry.h.inc"
18
19namespace ldndc {
20class LDNDC_API substate_soilchemistry_t : public MoBiLE_Substate
21{
23 static double const INCR;
24
25 MOBILE_SUBSTATE_OBJECT(soilchemistry,LSUB_FLAG_NONE);
26public:
27 /* holds soil chemistry state items */
28 LDNDC_soilchemistry_SUBSTATE_ITEMS
29
30public:
31#ifdef _HAVE_SERIALIZE
32 /* interface declaration for dump/restore mechanism */
33 int create_checkpoint( substate_checkpoint_write_context_t *);
34 int restore_checkpoint( substate_checkpoint_read_context_t *);
35#endif /* _HAVE_SERIALIZE */
36#ifdef _LDNDC_HAVE_ONLINECONTROL
37public:
38 int process_request(
39 lreply_t * /*reply*/, lrequest_t const * /*request*/);
40#endif /* _LDNDC_HAVE_ONLINECONTROL */
41
42private:
43 lerr_t initialize_profile_(
44 cbm::io_kcomm_t *);
45 lerr_t initialize_pools_(
46 cbm::io_kcomm_t *);
55 lerr_t initialize_soil_carbon_(
56 cbm::io_kcomm_t *);
57
58public:
59
60 double get_soil_mass( size_t /* soil layer */) const;
61
62 double get_accumulated_c_net_flux() const;
63
64 double get_bulk_density_without_stones( size_t /* soil layer */) const;
65
66 double get_organic_carbon_content_without_stones( size_t /* soil layer */) const;
67
68 //specifying subdivisions for crop specific fertilization in multi-cropping systems
69 std::map< std::string, double > n_subdivision;
70};
71
72
73
74
75lerr_t
76assign_soillayer_stone_fraction(
77 double &_stone,
78 size_t const &_nd_stratum,
79 double const &_depth,
80 const ldndc::site::input_class_site_t *_site,
81 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
82 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
83 bool _info=false);
84
85lerr_t
86assign_soillayer_soil_texture(
87 double &_clay,
88 double &_sand,
89 double &_silt,
90 size_t const &_nd_stratum,
91 double const &_depth,
92 const ldndc::site::input_class_site_t *_site,
93 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
94 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
95 bool _info=false);
96
97lerr_t
98assign_soillayer_bulk_density(
99 double &_bulk_density_with_stones,
100 size_t const &_nd_stratum,
101 double const &_depth,
102 double const &_stone_fraction,
103 double const &_c_org_without_stones,
104 const ldndc::site::input_class_site_t *_site,
105 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
106 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
107 bool _info=false);
108
109lerr_t
110assign_soillayer_organic_carbon_and_nitrogen_content(
111 double _cn_old,
112 double &_c_org_without_stones,
113 double &_n_org_without_stones,
114 size_t const &_nd_stratum,
115 double _depth,
116 double _depth_old,
117 const ldndc::site::input_class_site_t *_site,
118 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
119 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
120 bool _info=false);
121
122lerr_t
124 double &_porosity_with_stones,
125 size_t const &_nd_stratum,
126 double const &_depth,
127 double const &_stone_fraction,
128 double const &_c_org_without_stones,
129 double const &_bulk_density_without_stones,
130 const ldndc::site::input_class_site_t *_site,
131 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
132 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
133 bool _info=false);
134
135}
136
137
138#endif /* !LDNDC_SUBSTATE_SOILCHEMISTRY_H_ */
139
Spatially explicit groundwater model.
Definition: airchemistryput.h:15
lerr_t assign_soillayer_porosity(double &_porosity_with_stones, size_t const &_nd_stratum, double const &_depth, double const &_stone_fraction, double const &_c_org_without_stones, double const &_bulk_density_without_stones, const ldndc::site::input_class_site_t *_site, const ldndc::soillayers::input_class_soillayers_t *_soillayers, const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters, bool _info=false)
Definition: mbe_soilchemistry.cpp:632
@ LSUB_FLAG_NONE
Definition: mbe_substate.h:77