LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
soilparameterstypes.h
1
9
10#ifndef LDNDC_INPUT_SOILPARAMETERSTYPES_H_
11#define LDNDC_INPUT_SOILPARAMETERSTYPES_H_
12
13#include "crabmeat-common.h"
14#include "containers/cbm_typewrap.h"
15
16#ifdef _DEBUG
17# include "utils/cbm_utils.h"
18#endif
19#ifndef __HUMUS_SOIL_PARAMETER_VALUE__
20# define __HUMUS_SOIL_PARAMETER_VALUE__(__p_idx__,__type__,__TYPE__,__name__,__dtype__,__buf__) \
21 __buf__[__p_idx__ * __type__##parameters:: __TYPE__##PARAMETERS_CNT \
22 + __##__TYPE__##PARAMETER_index_ ## __name__].get_value<__dtype__>()
23#endif
24#define HUMUS_SOIL_PARAMETER_(__type__,__TYPE__,__name__,__dtype__) \
25public: \
26 __dtype__ __TYPE__ ## _ ## __name__( size_t _p_idx) \
27 const \
28 { \
29 if ( _p_idx == soillayers::__TYPE__##_NONE) \
30 { \
31 return __HUMUS_SOIL_PARAMETER_VALUE__(0,__type__,__TYPE__,__name__,__dtype__,__type__##_default_props_); \
32 } \
33 return __HUMUS_SOIL_PARAMETER_VALUE__(_p_idx,__type__,__TYPE__,__name__,__dtype__,__type__##_props_); \
34 } \
35 static __dtype__ __TYPE__ ## _ ## __name__ ## _ ## MIN() \
36 { \
37 return __TYPE__ ## PARAMETER_ ## __name__ ## _MINVALUE; \
38 } \
39 static __dtype__ __TYPE__ ## _ ## __name__ ## _ ## MAX() \
40 { \
41 return __TYPE__ ## PARAMETER_ ## __name__ ## _MAXVALUE; \
42 } \
43private:
44
45
46#define HUMUSPARAMETER_(__name__,__dtype__) HUMUS_SOIL_PARAMETER_(humus,HUMUS,__name__,__dtype__)
47#define SOILPARAMETER_(__name__,__dtype__) HUMUS_SOIL_PARAMETER_(soil,SOIL,__name__,__dtype__)
48
49#define HUMUSPARAMETER_BOOL(__name__) HUMUSPARAMETER_(__name__,humusparameters::humusparameter_t::bool_type)
50#define HUMUSPARAMETER_FLT(__name__) HUMUSPARAMETER_(__name__,humusparameters::humusparameter_t::float_type)
51#define HUMUSPARAMETER_INT(__name__) HUMUSPARAMETER_(__name__,humusparameters::humusparameter_t::int_type)
52#define HUMUSPARAMETER_UINT(__name__) HUMUSPARAMETER_(__name__,humusparameters::humusparameter_t::uint_type)
53#define HUMUSPARAMETER_INVALID_BOOL false
54#define HUMUSPARAMETER_INVALID_FLT ldndc::invalid_t< humusparameters::humusparameter_t::float_type >::value
55#define HUMUSPARAMETER_INVALID_INT ldndc::invalid_t< humusparameters::humusparameter_t::int_type >::value
56#define HUMUSPARAMETER_INVALID_UINT ldndc::invalid_t< humusparameters::humusparameter_t::uint_type >::value
57
58
59#define SOILPARAMETER_BOOL(__name__) SOILPARAMETER_(__name__,soilparameters::soilparameter_t::bool_type)
60#define SOILPARAMETER_FLT(__name__) SOILPARAMETER_(__name__,soilparameters::soilparameter_t::float_type)
61#define SOILPARAMETER_INT(__name__) SOILPARAMETER_(__name__,soilparameters::soilparameter_t::int_type)
62#define SOILPARAMETER_UINT(__name__) SOILPARAMETER_(__name__,soilparameters::soilparameter_t::uint_type)
63#define SOILPARAMETER_INVALID_BOOL false
64#define SOILPARAMETER_INVALID_FLT ldndc::invalid_t< soilparameters::soilparameter_t::float_type >::value
65#define SOILPARAMETER_INVALID_INT ldndc::invalid_t< soilparameters::soilparameter_t::int_type >::value
66#define SOILPARAMETER_INVALID_UINT ldndc::invalid_t< soilparameters::soilparameter_t::uint_type >::value
67
68
69#include "io/outputtypes.h"
70namespace ldndc{ namespace soilparameters
71{
72#define LTYPEWRAP_SOIL_PARAM_MAGIC 1
73typedef ltypewrap_t< ldndc_flt64_t, ldndc_int32_t, ldndc_uint32_t, LTYPEWRAP_SOIL_PARAM_MAGIC > soilparameter_t;
74#define SOILPARAMETERS_bool_type LDNDC_BOOL
75#define SOILPARAMETERS_float_type LDNDC_FLOAT64
76#define SOILPARAMETERS_int_type LDNDC_INT32
77#define SOILPARAMETERS_uint_type LDNDC_UINT32
78
79#include "soilparameters.h.inc"
80}}
81namespace ldndc{ namespace humusparameters
82{
83#define LTYPEWRAP_HUMUS_PARAM_MAGIC 2
84typedef ltypewrap_t< ldndc_flt64_t, ldndc_int32_t, ldndc_uint32_t, LTYPEWRAP_HUMUS_PARAM_MAGIC > humusparameter_t;
85#define HUMUSPARAMETERS_bool_type LDNDC_BOOL
86#define HUMUSPARAMETERS_float_type LDNDC_FLOAT64
87#define HUMUSPARAMETERS_int_type LDNDC_INT32
88#define HUMUSPARAMETERS_uint_type LDNDC_UINT32
89
90#include "humusparameters.h.inc"
91}}
92
93#endif /* !LDNDC_INPUT_SOILPARAMETERSTYPES_H_ */
94
Spatially explicit groundwater model.
Definition airchemistryput.h:15