12#ifndef M1D_MOD_MICROCLIMATE_CANOAK_H
13#define M1D_MOD_MICROCLIMATE_CANOAK_H
16#define sze Site::MAX_FOLIAGE_LAYER + WCC_FLEX
17#define sze3 3 * Site::MAX_FOLIAGE_LAYER + WCC_FLEX
21#include "microclimatemodule.h"
24#include "global/global.h"
42namespace ldndc {
class config_file_t; }
46class MicroClimateCANOAK :
public MicroClimateModuleBase {
47 LDNDC_MODULE_NAME(
"microclimate:canoak")
51 InputClassSet const &,
55 ~MicroClimateCANOAK();
58 lerr_t configure(
ldndc::config_file_t const &) {
return LDNDC_ERR_OK; }
64 lerr_t finalize() {
return LDNDC_ERR_OK; }
72 SiteParameters
const & sipar_;
73 SoilLayers
const & sl_;
76 AirChemistry
const & ac_;
77 Physiology
const & ph_;
78 SoilChemistry
const & sc_;
79 VegStructure
const & vs_;
80 WaterCycle
const & wc_;
98 struct input_variables {
117 struct time_variables {
132 struct flux_variables {
161 double sensible_heat_flux;
165 double dispersion[sze3][sze];
171 double air_density_mole;
172 double relative_humidity;
180 sensible_heat_flux = 0.0;
188 air_density_mole = 0.0;
189 relative_humidity = 0.0;
194 struct surface_resistances {
211 struct bole_respiration_structure {
213 double respiration_mole;
214 double respiration_mg;
220 struct canopy_architecture {
226 struct non_dimensional_variables {
247 struct boundary_layer_resistances {
252 boundary_layer_resistances ()
260 struct other_globals {
356 double density_litter;
424 PI180 = cbm::PI / 180.0;
430 rgc1000 = 1000.0 * cbm::RGAS;
478 struct solar_radiation_variables {
480 double prob_beam[sze];
493 double beam_flux_nir[sze];
497 double nir_soil_refl;
503 double par_shade[sze];
505 double beam_flux_par[sze];
506 double par_down[sze];
509 double quantum_sun[sze];
510 double quantum_sh[sze];
515 double par_soil_refl;
517 double rnet_sun[sze];
527 solar_radiation_variables ()
548 for (
int n1 = 0; n1 <= sze; n1++){
557 beam_flux_nir[n1] = 0.0;
560 beam_flux_par[n1] = 0.0;
571 struct soil_variables {
574 double * bulk_density;
577 double * k_conductivity_soil;
578 double * k_conductivity_soil_norm;
580 double * cp_soil_norm;
583 double sfc_temperature;
586 double resistance_h2o;
588 double water_content_15cm;
589 double water_content_litter;
590 double * water_content;
594 double clay_fraction;
602 double respiration_mole;
603 double respiration_mg;
604 double base_respiration;
634 soil_variables(
size_t _soil_layer_cnt);
643 double tair_filter[sze3];
645 double rhov_air[sze3];
646 double rhov_filter[sze3];
647 double co2_air[sze3];
652 double Gfunc_solar[sze];
653 double Gfunc_sky[sze][szeang];
655 double isopreneflux[sze];
662 double sour13co2[sze];
665 double D13C_long[sze];
666 double d13Cair[sze3];
667 double d13Cplant[sze];
668 double R13_12_air[sze3];
669 double Rplant_sun[sze];
670 double Rplant_shd[sze];
672 double Rresp_sum[sze];
673 double Rresp_ave[sze];
675 double recycle[sze3];
677 double source_co2[sze];
679 double dPsdz_mg[sze];
685 double dStomCondz[sze];
687 double sun_frac[sze];
688 double sun_tleaf[sze];
694 double sun_rbco2[sze];
699 double sun_D13_long[sze];
700 double sun_ccca[sze];
701 double sun_cica[sze];
703 double sun_T_filter[sze];
706 double sun_resp[sze];
707 double sun_isopreneflux[sze];
710 double shd_frac[sze];
711 double shd_tleaf[sze];
717 double shd_rbco2[sze];
722 double shd_D13_long[sze];
723 double shd_ccca[sze];
724 double shd_cica[sze];
726 double shd_T_filter[sze];
729 double shd_resp[sze];
730 double shd_isopreneflux[sze];
735 for (
int n0 = 0; n0 <= sze3; n0++){
737 tair_filter[n0] = 0.0 ;
740 rhov_filter[n0] = 0.0;
746 R13_12_air[n0] = 0.0;
750 for (
int n1 = 0; n1 <= sze; n1++){
754 Gfunc_solar[n1] = 0.0;
756 isopreneflux[n1] = 0.0;
763 Rplant_shd[n1] = 0.0;
766 source_co2[n1] = 0.0;
774 dStomCondz[n1] = 0.0;
776 sun_tleaf[n1] = 0.0 ;
786 sun_D13_long[n1] = 0.0;
790 sun_T_filter[n1] = 0.0;
794 sun_isopreneflux[n1] = 0.0;
797 shd_tleaf[n1] = 0.0 ;
807 shd_D13_long[n1] = 0.0;
811 shd_T_filter[n1] = 0.0;
815 shd_isopreneflux[n1] = 0.0;
836 struct isotope_variable {
844 struct input_variables input;
845 struct flux_variables flux;
846 struct time_variables time_var;
847 struct meteorology met;
848 struct surface_resistances sfc_res;
850 struct bole_respiration_structure bole;
851 struct canopy_architecture canopy;
852 struct non_dimensional_variables non_dim;
853 struct boundary_layer_resistances bound_layer_res;
854 struct solar_radiation_variables solar;
855 struct soil_variables soil;
857 struct isotope_variable Cisotope;
858 struct other_globals og;
862 bool leaf_out,leaf_full,leaf_fall,leaf_fall_complete;
865 double TAU,RCMIN,VCMAX25,JMAX25,LLEAF,BFACT1,BFACT2,FSTO,
866 RCPAR1,TCPAR1,SRPAR1,RCNIR1,TCNIR1,SRNIR1,
867 RCPAR2,TCPAR2,SRPAR2,RCNIR2,TCNIR2,SRNIR2,
868 RCPAR3,TCPAR3,SRPAR3,RCNIR3,TCNIR3,SRNIR3,
869 RCPAR4,TCPAR4,SRPAR4,RCNIR4,TCNIR4,SRNIR4;
870 double ht,lai,laiPot;
871 double h_litter,clayf,bdens;
873 double wc_sfc,wc_15cm,wc_litter,t_firstmin;
879 (
double HEIGHT,
double LAI,
double SAI,
883 double HH,
double DD);
887 double ts_airtemperature,
double ts_shortwaveradiance,
double ts_watervaporsaturationdeficit,
888 double ts_windspeed,
double ts_precipitation,
double ts_co2_concentration,
double ts_airpressure
892 void SOIL_RESPIRATION();
894 void BOLE_RESPIRATION();
897 void ENERGY_AND_CARBON_FLUXES();
900 void DIFFUSE_DIRECT_RADIATION();
913 void G_FUNC_DIFFUSE();
931 (
double a,
double b,
double c,
double d,
double e);
934 (
double a,
double b,
double c,
double d);
936 void BOUNDARY_RESISTANCE(
size_t);
938 void FRICTION_VELOCITY(
double &metH_old);
940 void CONC(
double *ap1,
double *ap2,
double c,
double d,
double e);
943 (
double b,
double d,
double e,
945 double &apc,
double &h,
double &i,
946 double &j,
double &vpd_leaf);
949 (
double a,
double b,
double c);
951 void SOIL_ENERGY_BALANCE();
953 double SOIL_SFC_RESISTANCE
978 (
double &checkChange);
991 double *wcMax_sl,
double *wcMin_sl,
double *h_sl,
double *h_fl,
993 double *hMax_vt,
double *hMin_vt,
double *clay_sl,
994 double *dens_sl,
double *poro_sl,
double *stonef_sl,
double *fcOrg_sl,
996 double ts_airtemperature,
998 double ts_watervaporsaturationdeficit,
double ts_windspeed,
1000 double *lai_vt,
double *lai_fl,
double *dvsFlush_vt,
double *dvsMort_vt,
1001 double *f_vt,
double *laiPot_vt,
double **fFrt_vtsl,
1002 double *ts_co2_concentration_fl,
double *fH2O_vt,
double *wc_sl,
1003 double &albedo,
double &rad_a,
double &vpd_a,
double *temp_fl,
1004 double *rad_fl,
double *vpd_fl,
double *win_fl,
double *tempOld_fl,
1005 double *tFol_fl,
double *ts_sunlitfoliagefraction_fl,
double *parshd_fl,
double *parsun_fl,
1006 double &temp_a,
double &temp_l,
double *temp_sl
1014 (
int JJ,
double zzz,
double Iphoton,
1015 double cca,
double tlk,
double leleaf,
1016 double &rstom,
double &A_mg,
double &rd,
double &ci,
1017 double &cs,
double &wj,
double &wc);
1020 (
double Z,
double HH,
double ustar,
double sigma_zo);
1026 (
double Z,
double HH,
double sigma_zo,
double sigma_h,
double ustar);
1029 (
double Z,
double HH,
double DD,
double sigma_zo,
double sigma_h,
double ustar);
1032 (
double low,
double delta,
Spatially explicit groundwater model.
Definition: airchemistryput.h:15