10#ifndef LDNDC_INPUT_SOILPARAMETERSTYPES_H_
11#define LDNDC_INPUT_SOILPARAMETERSTYPES_H_
13#include "crabmeat-common.h"
14#include "containers/cbm_typewrap.h"
17# include "utils/cbm_utils.h"
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__>()
24#define HUMUS_SOIL_PARAMETER_(__type__,__TYPE__,__name__,__dtype__) \
26 __dtype__ __TYPE__ ## _ ## __name__( size_t _p_idx) \
29 if ( _p_idx == soillayers::__TYPE__##_NONE) \
31 return __HUMUS_SOIL_PARAMETER_VALUE__(0,__type__,__TYPE__,__name__,__dtype__,__type__##_default_props_); \
33 return __HUMUS_SOIL_PARAMETER_VALUE__(_p_idx,__type__,__TYPE__,__name__,__dtype__,__type__##_props_); \
35 static __dtype__ __TYPE__ ## _ ## __name__ ## _ ## MIN() \
37 return __TYPE__ ## PARAMETER_ ## __name__ ## _MINVALUE; \
39 static __dtype__ __TYPE__ ## _ ## __name__ ## _ ## MAX() \
41 return __TYPE__ ## PARAMETER_ ## __name__ ## _MAXVALUE; \
46#define HUMUSPARAMETER_(__name__,__dtype__) HUMUS_SOIL_PARAMETER_(humus,HUMUS,__name__,__dtype__)
47#define SOILPARAMETER_(__name__,__dtype__) HUMUS_SOIL_PARAMETER_(soil,SOIL,__name__,__dtype__)
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
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
69#include "io/outputtypes.h"
70namespace ldndc{
namespace soilparameters
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
79#include "soilparameters.h.inc"
81namespace ldndc{
namespace humusparameters
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
90#include "humusparameters.h.inc"
Spatially explicit groundwater model.
Definition airchemistryput.h:15