LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
mbe_soilchemistry.h
1
11
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_organic_matter( size_t /* soil layer */) const;
61
62 double get_soil_mass( size_t /* soil layer */) const;
63
64 double get_accumulated_c_net_flux() const;
65
66 double get_bulk_density_without_stones( size_t /* soil layer */) const;
67
68 double get_organic_carbon_content_without_stones( size_t /* soil layer */) const;
69
70 //specifying subdivisions for crop specific fertilization in multi-cropping systems
71 std::map< std::string, double > n_subdivision;
72};
73
74
75
76
77lerr_t
78assign_soillayer_stone_fraction(
79 double &_stone,
80 size_t const &_nd_stratum,
81 double const &_depth,
82 const ldndc::site::input_class_site_t *_site,
83 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
84 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
85 bool _info=false);
86
87lerr_t
88assign_soillayer_soil_texture(
89 double &_clay,
90 double &_sand,
91 double &_silt,
92 size_t const &_nd_stratum,
93 double const &_depth,
94 const ldndc::site::input_class_site_t *_site,
95 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
96 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
97 bool _info=false);
98
99lerr_t
100assign_soillayer_bulk_density(
101 double &_bulk_density_with_stones,
102 size_t const &_nd_stratum,
103 double const &_depth,
104 double const &_stone_fraction,
105 double const &_c_org_without_stones,
106 const ldndc::site::input_class_site_t *_site,
107 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
108 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
109 bool _info=false);
110
111lerr_t
112assign_soillayer_organic_carbon_and_nitrogen_content(
113 double _cn_old,
114 double &_c_org_without_stones,
115 double &_n_org_without_stones,
116 size_t const &_nd_stratum,
117 double _depth,
118 double _depth_old,
119 const ldndc::site::input_class_site_t *_site,
120 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
121 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
122 bool _info=false);
123
124lerr_t
126 double &_porosity_with_stones,
127 size_t const &_nd_stratum,
128 double const &_depth,
129 double const &_stone_fraction,
130 double const &_c_org_without_stones,
131 double const &_bulk_density_without_stones,
132 const ldndc::site::input_class_site_t *_site,
133 const ldndc::soillayers::input_class_soillayers_t *_soillayers,
134 const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters,
135 bool _info=false);
136
137}
138
139
140#endif /* !LDNDC_SUBSTATE_SOILCHEMISTRY_H_ */
141
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