Changeset 8418


Ignore:
Timestamp:
2024-02-12T19:49:09+01:00 (5 months ago)
Author:
bertrand.guenet
Message:

The Moyano function describing the soil moisture effect on OM decomposition is added

Location:
branches/ORCHIDEE_2_2/ORCHIDEE
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes.f90

    r8320 r8418  
    143143       !Config Units = BOOLEAN     
    144144       CALL getin_p('SPINUP_ANALYTIC',spinup_analytic) 
    145  
     145       ! 
     146       !Config Key   = OK_MOYANO_SOILHUMSAT 
     147       !Config Desc  = Activation of Moyano equation for control_moist in stomate_litter. 
     148       !Config If    = OK_STOMATE 
     149       !Config Def   = n 
     150       !Config Help  = Activate this option if you want to use Moyano equation 
     151       !to define control_moist in stomate_litter. 
     152       !Config Units = [FLAG]     
     153       CALL getin_p('OK_MOYANO_SOILHUMSAT',ok_moyano_soilhumsat) 
     154       ! 
     155       !Config Key   = OK_ORGA 
     156       !Config Desc  = Activation of Moyano equation for control_moist in 
     157       !stomate_litter. 
     158       !Config If    = OK_STOMATE and OK_MOYANO_SOILHUMSAT 
     159       !Config Def   = n 
     160       !Config Help  = Activate this option if you want to use the organic part 
     161       !of the Moyano equation for soil rich in C. 
     162       !to define control_moist in stomate_litter. 
     163       !Config Units = [FLAG]     
     164       CALL getin_p('OK_ORGA',ok_orga) 
    146165    ENDIF 
    147166 
     
    18621881    !Config Units = [-] 
    18631882    CALL getin_p('MOISTCONT_MIN',moistcont_min) 
    1864  
     1883    ! 
     1884    !Config Key   = BETA1 
     1885    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(2) 
     1886    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1887    !Config Def   = -0.26 
     1888    !Config Help  =  
     1889    !Config Units = [-] 
     1890    CALL getin_p('BETA1',beta1) 
     1891    ! 
     1892    !Config Key   = BETA1_ORGA 
     1893    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(3) 
     1894    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT 
     1895    !Config Def   = -0.67 
     1896    !Config Help  = 
     1897    !Config Units = [-] 
     1898    CALL getin_p('BETA1_ORGA',beta1_orga) 
     1899    ! 
     1900    !Config Key   = BETA2 
     1901    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(2) 
     1902    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1903    !Config Def   = 0.32 
     1904    !Config Help  =  
     1905    !Config Units = [-] 
     1906    CALL getin_p('BETA2',beta2) 
     1907    ! 
     1908    !Config Key   = BETA2_ORGA 
     1909    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(3) 
     1910    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT 
     1911    !Config Def   = 1.08 
     1912    !Config Help  = 
     1913    !Config Units = [-] 
     1914    CALL getin_p('BETA2_ORGA',beta2_orga)     
     1915    ! 
     1916    !Config Key   = BETA3 
     1917    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(2) 
     1918    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1919    !Config Def   = -0.15 
     1920    !Config Help  =  
     1921    !Config Units = [-] 
     1922    CALL getin_p('BETA3',beta3) 
     1923    ! 
     1924    !Config Key   = BETA3_ORGA 
     1925    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(3) 
     1926    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT 
     1927    !Config Def   = -0.57 
     1928    !Config Help  = 
     1929    !Config Units = [-] 
     1930    CALL getin_p('BETA3_ORGA',beta3_orga)     
     1931    ! 
     1932    !Config Key   = BETA4 
     1933    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(2) 
     1934    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1935    !Config Def   = 0.08 
     1936    !Config Help  =  
     1937    !Config Units = [-] 
     1938    CALL getin_p('BETA4',beta4) 
     1939    ! 
     1940    !Config Key   = BETA5 
     1941    !Config Desc  = Parameter for Moyano et al 2012 PRSR model(2) 
     1942    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1943    !Config Def   = -0.09 
     1944    !Config Help  =  
     1945    !Config Units = [-] 
     1946    CALL getin_p('BETA5',beta5) 
     1947    ! 
     1948    !Config Key   = BETA6 
     1949    !Config Desc  = Prameter for Moyano et al 2012 PRSR model(2) 
     1950    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1951    !Config Def   = 0.57 
     1952    !Config Help  =  
     1953    !Config Units = [-] 
     1954    CALL getin_p('BETA6',beta6) 
     1955    ! 
     1956    !Config Key   = INTERCEPT 
     1957    !Config Desc  = Prameter for Moyano et al 2012 PRSR model(2) 
     1958    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1959    !Config Def   = 1.059 
     1960    !Config Help  =  
     1961    !Config Units = [-] 
     1962    CALL getin_p('INTERCEPT',intercept) 
     1963    ! 
     1964    !Config Key   = INTERCEPT_ORGA 
     1965    !Config Desc  = Prameter for Moyano et al 2012 PRSR model(3) 
     1966    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1967    !Config Def   = 1.134 
     1968    !Config Help  =  
     1969    !Config Units = [-] 
     1970    CALL getin_p('INTERCEPT_ORGA',intercept_orga)     
     1971    ! 
     1972    !Config Key   = SRO 
     1973    !Config Desc  = Initial respiration value (SR0) arbitrary defined at 1.0  
     1974    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1975    !Config Def   = 1.0 
     1976    !Config Help  =  
     1977    !Config Units = [-] 
     1978    CALL getin_p('SRO',SRo) 
     1979    ! 
     1980    !Config Key   = MOISTCONSTSAT_MIN 
     1981    !Config Desc  = minimum soil wetness to limit the heterotrophic respiration  
     1982    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1983    !Config Def   = 0.0 
     1984    !Config Help  =  
     1985    !Config Units = [-] 
     1986    CALL getin_p('MOISTCONSTSAT_MIN',moistcontSAT_min) 
     1987    !     
     1988    !Config Key   = SOILHEIGHT 
     1989    !Config Desc  = soilheight to converte gC/m2soil to gC/gsoil  
     1990    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1991    !Config Def   = 0.1 
     1992    !Config Help  =  
     1993    !Config Units = [-] 
     1994    CALL getin_p('SOILHEIGHT',soilheight) 
     1995    !     
     1996    !Config Key   = CINI_MOYANO 
     1997    !Config Desc  = Carbon content to initialize Moyano equation  
     1998    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     1999    !Config Def   = 1000.0 
     2000    !Config Help  =  
     2001    !Config Units = [gC/m3] 
     2002    CALL getin_p('CINI_MOYANO',Cini_Moyano) 
     2003    !     
     2004    !Config Key   = LITTERINI_MOYANO 
     2005    !Config Desc  = Carbon litter content to initialize Moyano equation  
     2006    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2007    !Config Def   = 1000.0 
     2008    !Config Help  =  
     2009    !Config Units = [gC/m3] 
     2010    CALL getin_p('LITTERINI_MOYANO',Litterini_Moyano) 
     2011    !     
     2012    !Config Key   = MAX_CARBON_MOYANO 
     2013    !Config Desc  = Maximum carbon concentration in the database used by Moyano et al 
     2014    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2015    !Config Def   = 0.35 
     2016    !Config Help  =  
     2017    !Config Units = [gC/g soil] 
     2018    CALL getin_p('MAX_CARBON_MOYANO',max_carbon_moyano) 
     2019    !     
     2020    !Config Key   = MIN_CARBON_MOYANO 
     2021    !Config Desc  = Minimum carbon concentration in the database used by Moyano et al 
     2022    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2023    !Config Def   = 0.01 
     2024    !Config Help  =  
     2025    !Config Units = [gC/g soil] 
     2026    CALL getin_p('MIN_CARBON_MOYANO',min_carbon_moyano) 
     2027    !     
     2028    !Config Key   = LIMIT_CARBON_ORGA 
     2029    !Config Desc  = Minimum carbon concentration in the database for organic soil used by Moyano et al 
     2030    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2031    !Config Def   = 0.06 
     2032    !Config Help  =  
     2033    !Config Units = [gC/g soil] 
     2034    CALL getin_p('LIMIT_CARBON_ORGA',limit_carbon_orga)     
     2035    !     
     2036    !Config Key   = MAX_CLAY_MOYANO 
     2037    !Config Desc  = Maximum clay fraction in the database used by Moyano et al 
     2038    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2039    !Config Def   = 0.58 
     2040    !Config Help  =  
     2041    !Config Units = [-] 
     2042    CALL getin_p('MAX_CLAY_MOYANO',max_clay_moyano) 
     2043    !     
     2044    !Config Key   = MIN_CLAY_MOYANO 
     2045    !Config Desc  = Minimum clay fraction in the database used by Moyano et al 
     2046    !Config If    = OK_STOMATE, OK_MOYANO_SOILHUMSAT  
     2047    !Config Def   = 0.03 
     2048    !Config Help  =  
     2049    !Config Units = [-] 
     2050    CALL getin_p('MIN_CLAY_MOYANO',min_clay_moyano) 
    18652051    !- 
    18662052    ! lpj parameters 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes_var.f90

    r8377 r8418  
    702702!$OMP THREADPRIVATE(veget_year_orig) 
    703703   
     704 REAL(r_std), SAVE :: bulk_default = 1000.0           !! Default value for bulk density of soil (kg/m3) 
     705!$OMP THREADPRIVATE(bulk_default) 
    704706  REAL(r_std), SAVE :: min_vegfrac = 0.001           !! Minimal fraction of mesh a vegetation type can occupy (0-1, unitless) 
    705707!$OMP THREADPRIVATE(min_vegfrac) 
     
    10221024!$OMP THREADPRIVATE(moistcont_min) 
    10231025 
    1024  
     1026  ! 4. Moyano et la. 2012 Biogeosciences 
     1027 
     1028  LOGICAL, SAVE :: ok_moyano_soilhumsat = .FALSE.  !! Use soilhumSAT and Moyano formulation for control_moist 
     1029!$OMP THREADPRIVATE(ok_moyano_soilhumsat) 
     1030  LOGICAL, SAVE :: ok_orga = .TRUE.                !! Do we use also the equation designed for organic soils by Moyano et al. 
     1031                                                   !! for control_moist 
     1032!$OMP THREADPRIVATE(ok_orga) 
     1033  REAL(r_std), SAVE :: beta1 = -0.26               !! 1st(Beta1*M) term of Moyano' PRSR model 2 
     1034                                                   !! for fraction of saturation Beta1= [-0.28,-0.24] 
     1035!$OMP THREADPRIVATE(beta1) 
     1036  REAL(r_std), SAVE :: beta2 = 0.32                !! 2nd(Beta2*M^2) term of Moyano' PRSR model 2 
     1037                                                   !! for fraction of saturation Beta2= [0.28,0.36] 
     1038!$OMP THREADPRIVATE(beta2) 
     1039  REAL(r_std), SAVE :: beta3 = -0.15               !! 3rd(Beta3*M^3) term of Moyano' PRSR model 2 
     1040                                                   !! for fraction of saturation Beta3= [-0.18,-0.12] 
     1041!$OMP THREADPRIVATE(beta3) 
     1042  REAL(r_std), SAVE :: beta1_orga = -0.67          !! 1st(Beta1*M) term of Moyano' PRSR model 3 
     1043                                                   !! for fraction of saturation Beta1= [-0.65,-0.69] 
     1044!$OMP THREADPRIVATE(beta1_orga) 
     1045  REAL(r_std), SAVE :: beta2_orga = 1.08           !! 2nd(Beta2*M^2) term of Moyano' PRSR model 3 
     1046                                                   !! for fraction of saturation Beta2= [1.03,1.13] 
     1047!$OMP THREADPRIVATE(beta2_orga) 
     1048  REAL(r_std), SAVE :: beta3_orga = -0.57          !! 3rd(Beta3*M^3) term of Moyano' PRSR model 3 
     1049                                                   !! for fraction of saturation Beta3= [-0.54,-0.60] 
     1050!$OMP THREADPRIVATE(beta3_orga) 
     1051  REAL(r_std), SAVE :: beta4 = 0.08                !! 4th(Beta4*clay) term of Moyano' PRSR model 2 
     1052                                                   !! for fraction of saturation Beta4= [0.07,0.09] 
     1053!$OMP THREADPRIVATE(beta4) 
     1054  REAL(r_std), SAVE :: beta5 = -0.09               !! 5th(Beta5*M*clay) term of Moyano' PRSR model 2 
     1055                                                   !! for fraction of saturation Beta5= [-0.10,-0.08] 
     1056!$OMP THREADPRIVATE(beta5) 
     1057  REAL(r_std), SAVE :: beta6 = 0.57                !! 6th(Beta6*SOC) term of Moyano' PRSR model 2 
     1058                                                   !! for fraction of saturation Beta6= [0.53,0.61] 
     1059!$OMP THREADPRIVATE(beta6) 
     1060  REAL(r_std), SAVE :: intercept = 1.059           !! intercept term of Moyano' PRSR model 2 
     1061                                                   !! for fraction of saturation intercept= [1.056,1.062] 
     1062!$OMP THREADPRIVATE(intercept) 
     1063  REAL(r_std), SAVE :: intercept_orga = 1.134      !! intercept term of Moyano' PRSR model 3 
     1064                                                   !! for fraction of saturation intercept= [1.131,1.137] 
     1065!$OMP THREADPRIVATE(intercept_orga) 
     1066  REAL(r_std), SAVE :: SRo = 1.0                   !! Initial respiration value (SR0) arbitrary defined at 1.0  
     1067!$OMP THREADPRIVATE(SRo) 
     1068  REAL(r_std), SAVE :: moistcontSAT_min = 0.0      !! minimum soil wetness to limit the heterotrophic respiration 
     1069!$OMP THREADPRIVATE(moistcontSAT_min) 
     1070  REAL(r_std), SAVE :: soilheight = 0.10           !! soil height in meter to converte totalSOC  
     1071                                                   !! from gC/m2soil to gC/gsoil [0.10, 0.20, 0.30, 0.50, 1m]  
     1072!$OMP THREADPRIVATE(soilheight) 
     1073  REAL(r_std), SAVE :: Cini_Moyano = 1000_r_std !!Initial carbon content for Moyano equation  (kgC/m3) 
     1074!$OMP THREADPRIVATE(Cini_Moyano) 
     1075  REAL(r_std), SAVE :: Litterini_Moyano = 1000_r_std !!Initial litter carbon content for Moyano equation  (kgC/m3) 
     1076!$OMP THREADPRIVATE(Litterini_Moyano) 
     1077  REAL(r_std), SAVE :: min_carbon_moyano = 0.01   !! Minimum carbon concentration in the database  
     1078                                                  !! used by Moyano et al (gC/gSoil) 
     1079!$OMP THREADPRIVATE(min_carbon_moyano) 
     1080  REAL(r_std), SAVE :: max_carbon_moyano = 0.35   !! Maximum carbon concentration in the database  
     1081                                                  !! used by Moyano et al (gC/gSoil) 
     1082!$OMP THREADPRIVATE(max_carbon_moyano) 
     1083  REAL(r_std), SAVE :: limit_carbon_orga = 0.06   !! Minimum carbon concentration in the database  
     1084                                                  !! for organic soil used by Moyano et al (gC/gSoil) 
     1085!$OMP THREADPRIVATE(limit_carbon_orga) 
     1086  REAL(r_std), SAVE :: min_clay_moyano = 0.03     !! Minimum clay fraction in the database used by Moyano et al (unitless) 
     1087!$OMP THREADPRIVATE(min_clay_moyano) 
     1088  REAL(r_std), SAVE :: max_clay_moyano = 0.58     !! Maximum clay fraction in the database used by Moyano et al (unitless) 
     1089!$OMP THREADPRIVATE(max_clay_moyano) 
    10251090  ! 
    10261091  ! stomate_lpj.f90 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/hydrol.f90

    r8320 r8418  
    415415  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:)    :: soil_wet_litter  !! Soil wetness aove mvw in the litter (0-1, unitless) 
    416416!$OMP THREADPRIVATE(soil_wet_litter) 
     417  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:)    :: soil_wet_litterSAT!!Soil wetness above mvw in the litter (0-1, unitless) 
     418                                                                          !! with respect to(tmc_litter_sat-tmc_litter_wilt) 
     419!$OMP THREADPRIVATE(soil_wet_litterSAT) 
    417420  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:,:)  :: qflux_ns         !! Diffusive water fluxes between soil layers 
    418421                                                                         !! (at lower interface) 
     
    572575       & tot_melt, transpir, precip_rain, precip_snow, returnflow, reinfiltration, irrigation, & 
    573576       & humrel, vegstress, drysoil_frac, evapot, evapot_penm, evap_bare_lim, evap_bare_lim_ns, & 
    574        & flood_frac, flood_res, & 
     577       & flood_frac, flood_res,shumdiagSAT,litterhumdiagSAT, & 
    575578       & shumdiag,shumdiag_perma, k_litt, litterhumdiag, soilcap, soiltile, fraclut, reinf_slope_soil, rest_id, hist_id, hist2_id,& 
    576579       & contfrac, stempdiag, & 
     
    650653                                                                           !! with respect to (mcfc-mcw) 
    651654                                                                           !! (unitless; can be out of 0-1) 
     655    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (out):: shumdiagSAT      !! Relative soil moisture in each soil layer  
     656                                                                           !! with respect to (mcs-mcw) 
     657                                                                           !! (unitless; can be out of 0-1) 
     658                                                                           !! used in Stomate, for Moyano et al 2012 equation 
    652659    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (out):: shumdiag_perma   !! Percent of porosity filled with water (mc/mcs) used for the thermal computations  
    653660    REAL(r_std),DIMENSION (kjpindex), INTENT (out)     :: k_litt           !! litter approximate conductivity 
    654661    REAL(r_std),DIMENSION (kjpindex), INTENT (out)     :: litterhumdiag    !! litter humidity 
     662    REAL(r_std),DIMENSION (kjpindex), INTENT (out)     :: litterhumdiagSAT !!litter humidity  
     663                                                                           !! with respect to(tmc_litter_sat-tmc_litter_wilt)  
    655664    REAL(r_std),DIMENSION (kjpindex), INTENT (out)     :: tot_melt         !! Total melt     
    656665    REAL(r_std),DIMENSION (kjpindex), INTENT (out)     :: floodout         !! Flux out of floodplains 
     
    806815         transpir, vevapnu, evapot, evapot_penm, runoff, drainage, &  
    807816         returnflow, reinfiltration, irrigation, & 
    808          tot_melt,evap_bare_lim,evap_bare_lim_ns, shumdiag, shumdiag_perma, & 
    809          k_litt, litterhumdiag, humrel, vegstress, drysoil_frac,& 
     817         tot_melt,evap_bare_lim,evap_bare_lim_ns,shumdiagSAT, shumdiag, shumdiag_perma, & 
     818         k_litt,litterhumdiagSAT, litterhumdiag, humrel, vegstress, drysoil_frac,& 
    810819         stempdiag,snow,snowdz, tot_bare_soil,  u, v, tq_cdrag, & 
    811820         mc_layh, mcl_layh, root_deficit, veget) 
     
    17721781    ALLOCATE (soil_wet_litter(kjpindex,nstm),stat=ier) 
    17731782    IF (ier /= 0) CALL ipslerr_p(3,'hydrol_init','Problem in allocate of variable soil_wet_litter','','') 
     1783 
     1784    ALLOCATE (soil_wet_litterSAT(kjpindex,nstm),stat=ier) 
     1785    IF (ier /= 0) CALL ipslerr_p(3,'hydrol_init','Problem in allocate of variable soil_wet_litterSAT','','')  
    17741786 
    17751787    ALLOCATE (qflux_ns(kjpindex,nslm,nstm),stat=ier)  
     
    23912403    IF (ALLOCATED  (soil_wet_ns)) DEALLOCATE (soil_wet_ns) 
    23922404    IF (ALLOCATED  (soil_wet_litter)) DEALLOCATE (soil_wet_litter) 
     2405    IF (ALLOCATED  (soil_wet_litterSAT)) DEALLOCATE (soil_wet_litterSAT) 
    23932406    IF (ALLOCATED  (qflux_ns)) DEALLOCATE (qflux_ns) 
    23942407    IF (ALLOCATED  (tmat)) DEALLOCATE (tmat) 
     
    36613674       & transpir, vevapnu, evapot, evapot_penm, runoff, drainage, & 
    36623675       & returnflow, reinfiltration, irrigation, & 
    3663        & tot_melt, evap_bare_lim, evap_bare_lim_ns, shumdiag, shumdiag_perma,& 
    3664        & k_litt, litterhumdiag, humrel,vegstress, drysoil_frac, & 
     3676       & tot_melt, evap_bare_lim, evap_bare_lim_ns,shumdiagSAT, shumdiag, shumdiag_perma,& 
     3677       & k_litt,litterhumdiagSAT, litterhumdiag, humrel,vegstress, drysoil_frac, & 
    36653678       & stempdiag,snow, & 
    36663679       & snowdz, tot_bare_soil, u, v, tq_cdrag, mc_layh, mcl_layh, root_deficit, veget) 
     
    37243737    REAL(r_std), DIMENSION (kjpindex,nslm), INTENT (out)     :: shumdiag         !! Relative soil moisture in each diag soil layer  
    37253738                                                                                 !! with respect to (mcfc-mcw) (unitless, [0-1]) 
     3739    REAL(r_std), DIMENSION (kjpindex,nslm), INTENT (out)     :: shumdiagSAT      !! Relative soil moisture in each diag soil layer  
     3740                                                                                 !! with respect to(mcs-mcw)(unitless,[0-1])  
     3741                                                                                 !! used in stomate for Moyano et al 2012 equation 
    37263742    REAL(r_std), DIMENSION (kjpindex,nslm), INTENT (out)     :: shumdiag_perma   !! Percent of porosity filled with water (mc/mcs) 
    37273743                                                                                 !! in each diag soil layer (for the thermal computations) 
     
    37313747    REAL(r_std), DIMENSION (kjpindex), INTENT (out)          :: litterhumdiag    !! Mean of soil_wet_litter across soil tiles 
    37323748                                                                                 !! (unitless, [0-1]) 
     3749    REAL(r_std), DIMENSION (kjpindex), INTENT (out)          ::litterhumdiagSAT  !! Mean of soil_wet_litterSAT across soil tiles 
     3750                                                                                 !!(unitless, [0-1]) 
     3751                                                                                 !! with respect to(tmc_litter_sat-tmc_litter_wilt)  
    37333752    REAL(r_std), DIMENSION (kjpindex, nvm), INTENT(out)      :: vegstress        !! Veg. moisture stress (only for vegetation  
    37343753                                                                                 !! growth) (unitless, [0-1]) 
     
    44044423       END DO 
    44054424 
     4425       ! Subsequent calculation of soil_wet_litterSAT (tmc-tmcw)/(tmcs-tmcw) 
     4426       ! Based on liquid water content 
     4427       DO ji=1,kjpindex 
     4428          soil_wet_litterSAT(ji,jst) = MIN(un, MAX(zero,& 
     4429               & (tmc_litter(ji,jst)-tmc_litter_wilt(ji,jst)) / & 
     4430               & (tmc_litter_sat(ji,jst)-tmc_litter_wilt(ji,jst)) )) 
     4431       END DO 
     4432 
     4433 
    44064434       ! Preliminary calculation of various soil moistures (for each layer, in kg/m2) 
    44074435       sm(:,1)  = dz(2) * (trois*mcl(:,1,jst) + mcl(:,2,jst))/huit 
     
    46244652        
    46254653       ! For consistency in stomate, we also set moderwilt and soil_wet_ns to zero in this case.  
    4626        ! They are used later for shumdiag and shumdiag_perma 
     4654       ! They are used later for shumdiag, shumdiagSAT and shumdiag_perma 
    46274655       DO jsl = 1,nslm 
    46284656          WHERE (is_under_mcr(:,jst)) 
     
    46714699    !! 7. Summing 3d variables into 2d variables  
    46724700    CALL hydrol_diag_soil (ks, nvan, avan, mcr, mcs, mcfc, mcw, kjpindex, veget_max, soiltile, njsc, runoff, drainage, & 
    4673          & evapot, vevapnu, returnflow, reinfiltration, irrigation, & 
    4674          & shumdiag,shumdiag_perma, k_litt, litterhumdiag, humrel, vegstress, drysoil_frac,tot_melt) 
     4701         & evapot, vevapnu, returnflow, reinfiltration, irrigation, shumdiagSAT,& 
     4702         & shumdiag,shumdiag_perma, k_litt,litterhumdiagSAT, litterhumdiag, humrel, vegstress, drysoil_frac,tot_melt) 
    46754703 
    46764704    ! Means of wtd, runoff and drainage corrections, across soiltiles     
     
    64156443 
    64166444  SUBROUTINE hydrol_diag_soil (ks, nvan, avan, mcr, mcs, mcfc, mcw, kjpindex, veget_max, soiltile, njsc, runoff, drainage, & 
    6417        & evapot, vevapnu, returnflow, reinfiltration, irrigation, & 
    6418        & shumdiag,shumdiag_perma, k_litt, litterhumdiag, humrel, vegstress, drysoil_frac, tot_melt) 
     6445       & evapot, vevapnu, returnflow, reinfiltration, irrigation,shumdiagSAT, & 
     6446       & shumdiag,shumdiag_perma, k_litt,litterhumdiagSAT, litterhumdiag, humrel, vegstress, drysoil_frac, tot_melt) 
    64196447    !  
    64206448    ! interface description 
     
    64486476    REAL(r_std), DIMENSION (kjpindex), INTENT(out)           :: drainage        !! Drainage 
    64496477    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (out)      :: shumdiag        !! relative soil moisture 
     6478    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (out)      :: shumdiagSAT     !! relative soil moisture with respect to (mcs-mcw) 
    64506479    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (out)      :: shumdiag_perma  !! Percent of porosity filled with water (mc/mcs) used for the thermal computations 
    64516480    REAL(r_std),DIMENSION (kjpindex), INTENT (out)           :: k_litt          !! litter cond. 
    64526481    REAL(r_std),DIMENSION (kjpindex), INTENT (out)           :: litterhumdiag   !! litter humidity 
     6482    REAL(r_std),DIMENSION (kjpindex), INTENT (out)           :: litterhumdiagSAT!! litter humidity 
     6483                                                                                !! with respect to(tmc_litter_sat-tmc_litter_wilt) 
    64536484    REAL(r_std),DIMENSION (kjpindex,nvm), INTENT (out)       :: humrel          !! Relative humidity 
    64546485    REAL(r_std), DIMENSION (kjpindex, nvm), INTENT(out)      :: vegstress       !! Veg. moisture stress (only for vegetation growth) 
     
    64966527    humtot(:) = zero 
    64976528    shumdiag(:,:)= zero 
     6529    shumdiagSAT(:,:)= zero 
    64986530    shumdiag_perma(:,:)=zero 
    64996531    k_litt(:) = zero 
    65006532    litterhumdiag(:) = zero 
     6533    litterhumdiagSAT(:) = zero 
    65016534    tmc_litt_dry_mea(:) = zero 
    65026535    tmc_litt_wet_mea(:) = zero 
     
    65716604    ! BUT THIS IS NOT USED ANYMORE WITH THE NEW BACKGROUNG ALBEDO 
    65726605    !! k_litt is calculated here as a grid-cell average (for consistency with drainage)    
    6573     !! litterhumdiag, like shumdiag, is averaged over the soiltiles for transmission to stomate 
     6606    !! litterhumdiag, litterhumdiagSAT, like shumdiag,shumdiagSAT is averaged over the soiltiles for transmission to stomate 
    65746607    DO jst=1,nstm        
    65756608       DO ji=1,kjpindex 
     
    65886621          litterhumdiag(ji) = litterhumdiag(ji) + & 
    65896622               & soil_wet_litter(ji,jst) * soiltile(ji,jst) 
     6623 
     6624          litterhumdiagSAT(ji) = litterhumdiagSAT(ji) + & 
     6625               & soil_wet_litterSAT(ji,jst) * soiltile(ji,jst) 
    65906626 
    65916627          tmc_litt_wet_mea(ji) =  tmc_litt_wet_mea(ji) + &  
     
    66596695       ENDDO 
    66606696    ENDDO 
    6661      
     6697 
     6698    ! ShumdiagSAT: we start from soil_wet_ns, 
     6699    !  do a spatial average, excluding the nobio fraction on which stomate doesn't act 
     6700    DO jst=1,nstm 
     6701       DO jsl=1,nslm 
     6702          DO ji=1,kjpindex 
     6703             shumdiagSAT(ji,jsl) = shumdiagSAT(ji,jsl) + soil_wet_ns(ji,jsl,jst) * soiltile(ji,jst)  
     6704             shumdiagSAT(ji,jsl) = MAX(MIN(shumdiagSAT(ji,jsl), un), zero) 
     6705          ENDDO 
     6706       ENDDO 
     6707    ENDDO 
     6708 
    66626709    ! Shumdiag_perma is based on soilmoist / moisture at saturation in the layer 
    66636710    ! Her we start from grid averages by hydrol soil layer and transform it to the diag levels 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/sechiba.f90

    r8221 r8418  
    140140                                                                     !! by thermosoil.f90 (unitless, 0-1) 
    141141!$OMP THREADPRIVATE(shumdiag) 
     142  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:)  :: shumdiagSAT    !! Mean relative soil moisture (0-1, unitless)  
     143                                                                     !! with respect to(mcs-mcw) 
     144!$OMP THREADPRIVATE(shumdiagSAT)  
    142145  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:)  :: shumdiag_perma !! Saturation degree of the soil  
    143146!$OMP THREADPRIVATE(shumdiag_perma) 
     
    146149  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:)    :: litterhumdiag  !! Litter dryness factor (unitless, 0-1) 
    147150!$OMP THREADPRIVATE(litterhumdiag) 
     151  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:)    :: litterhumdiagSAT!! Litter dryness factor (unitless, 0-1) 
     152!$OMP THREADPRIVATE(litterhumdiagSAT) 
    148153  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:)  :: stempdiag      !! Temperature which controls canopy evolution (K) 
    149154!$OMP THREADPRIVATE(stempdiag) 
     
    765770         & tot_melt, transpir, precip_rain, precip_snow, returnflow, reinfiltration, irrigation, & 
    766771         & humrel, vegstress, drysoil_frac, evapot, evapot_corr, evap_bare_lim, evap_bare_lim_ns, flood_frac, flood_res, & 
    767          & shumdiag,shumdiag_perma, k_litt, litterhumdiag, soilcap, soiltile, fraclut, reinf_slope_soil,& 
     772         & shumdiagSAT,litterhumdiagSAT,shumdiag,shumdiag_perma, k_litt, litterhumdiag, soilcap, soiltile, fraclut, reinf_slope,& 
    768773         & rest_id, hist_id, hist2_id,& 
    769774         & contfrac, stempdiag, & 
     
    820825    CALL slowproc_main (kjit, kjpij, kjpindex, & 
    821826         index, indexveg, lalo, neighbours, resolution, contfrac, soiltile, fraclut, nwdFraclut, & 
    822          temp_air, temp_sol, stempdiag, & 
     827         temp_air, temp_sol, stempdiag,shumdiagSAT,litterhumdiagSAT, & 
    823828         vegstress, shumdiag, litterhumdiag, precip_rain, precip_snow, gpp, & 
    824829         deadleaf_cover, & 
     
    17651770    ALLOCATE (shumdiag(kjpindex,nslm),stat=ier) 
    17661771    IF (ier /= 0) CALL ipslerr_p(3,'sechiba_init','Pb in alloc for shumdiag','','') 
     1772 
     1773    ALLOCATE (shumdiagSAT(kjpindex,nslm),stat=ier) 
     1774    IF (ier /= 0) CALL ipslerr_p(3,'sechiba_init','Pb in alloc for shumdiagSAT','','') 
    17671775     
    17681776    ALLOCATE (shumdiag_perma(kjpindex,nslm),stat=ier) 
     
    17711779    ALLOCATE (litterhumdiag(kjpindex),stat=ier) 
    17721780    IF (ier /= 0) CALL ipslerr_p(3,'sechiba_init','Pb in alloc for litterhumdiag','','') 
     1781 
     1782    ALLOCATE (litterhumdiagSAT(kjpindex),stat=ier) 
     1783    IF (ier /= 0) CALL ipslerr_p(3,'sechiba_init','Pb in alloc for litterhumdiagSAT','','') 
    17731784 
    17741785    ALLOCATE (ptnlev1(kjpindex),stat=ier) 
     
    20212032    IF ( ALLOCATED (co2_flux)) DEALLOCATE (co2_flux) 
    20222033    IF ( ALLOCATED (shumdiag)) DEALLOCATE (shumdiag) 
     2034    IF ( ALLOCATED (shumdiagSAT)) DEALLOCATE (shumdiagSAT) 
    20232035    IF ( ALLOCATED (shumdiag_perma)) DEALLOCATE (shumdiag_perma) 
    20242036    IF ( ALLOCATED (litterhumdiag)) DEALLOCATE (litterhumdiag) 
     2037    IF ( ALLOCATED (litterhumdiagSAT)) DEALLOCATE (litterhumdiagSAT) 
    20252038    IF ( ALLOCATED (ptnlev1)) DEALLOCATE (ptnlev1) 
    20262039    IF ( ALLOCATED (k_litt)) DEALLOCATE (k_litt) 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/slowproc.f90

    r7709 r8418  
    7272  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:)      :: siltfraction        !! Siltfraction (0-1, unitless) 
    7373!$OMP THREADPRIVATE(siltfraction)   
     74  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:)      :: bulk                !!Bulk density (kg/m**3)  
     75!$OMP THREADPRIVATE(bulk)    
    7476  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:,:)  :: laimap              !! LAI map when the LAI is prescribed and not calculated by STOMATE 
    7577!$OMP THREADPRIVATE(laimap) 
     
    137139     
    138140    !! 2. Prepare for reading of PFTmap file 
     141         !!  
     142         !! 2.1 Prepare for reading of bulk variable  
     143         !!  
     144     IF (ok_moyano_soilhumsat) THEN  
     145         ! Get the file name from run.def file and set file attributes accordingly  
     146         filename = 'soil_bulk_and_ph.nc'   
     147         CALL getin_p('SOIL_BULK_FILE',filename)   
     148         name = filename(1:LEN_TRIM(FILENAME)-3)  
     149         CALL xios_orchidee_set_file_attr("soilbulk_file",name=name)  
     150       
     151         ! Set variables that can be used in the xml files  
     152         lerr=xios_orchidee_setvar('bulk_default',bulk_default)  
     153           
     154         ! Determine if the file will be read by XIOS. If not,deactivate reading of the file.      
     155         IF (xios_interpolation .AND. restname_in=='NONE' .AND. .NOT. impsoilt) THEN  
     156            ! Reading will be done with XIOS later  
     157            IF (printlev>=2) WRITE(numout,*) 'Reading of soilbulk file will be done later using XIOS. The filename is ', filename  
     158        ELSE  
     159            ! No reading by XIOS, deactivate soilbulk file and related variables declared in context_input_orchidee.xml.  
     160            ! If this is not done, the model will crash if the file is not available in the run directory.  
     161            IF (printlev>=2) WRITE(numout,*) 'Reading of soil_bulk file will not be done with XIOS.'  
     162            CALL xios_orchidee_set_file_attr("soilbulk_file",enabled=.FALSE.)  
     163            CALL xios_orchidee_set_field_attr("soilbulk",enabled=.FALSE.)  
     164            CALL xios_orchidee_set_field_attr("soilbulk_mask",enabled=.FALSE.)  
     165         END IF  
     166     ELSE 
     167         ! Not needed if the flag is not activated, deactivate soilbulk file and related variables 
     168         ! declared in context_input_orchidee.xml.  
     169         ! If this is not done, the model will crash if the file is not 
     170         ! available in the run directory.  
     171         IF (printlev>=2) WRITE(numout,*) 'Reading of soil_bulk file will not be done with XIOS.' 
     172         CALL xios_orchidee_set_file_attr("soilbulk_file",enabled=.FALSE.) 
     173         CALL xios_orchidee_set_field_attr("soilbulk",enabled=.FALSE.) 
     174         CALL xios_orchidee_set_field_attr("soilbulk_mask",enabled=.FALSE.) 
     175      END IF 
     176           
     177    !!  
     178    !! 2.2 Prepare for reading of PFTmap file  
     179    !!  
     180 
    139181    filename = 'PFTmap.nc' 
    140182    CALL getin_p('VEGETATION_FILE',filename) 
     
    377419             rest_id_stom,   hist_id_stom,           hist_id_stom_IPCC,               & 
    378420             indexLand,      lalo,                   neighbours,   resolution,        & 
    379              contfrac,       totfrac_nobio,          clayfraction, temp_air,          & 
    380              lai,            veget,                  veget_max,                       & 
     421             contfrac,       totfrac_nobio,          clayfraction, bulk,              & 
     422             temp_air,       lai,                    veget,        veget_max,         & 
    381423             deadleaf_cover,         assim_param,  temp_growth ) 
    382424    ENDIF 
     
    478520  SUBROUTINE slowproc_main (kjit, kjpij, kjpindex, & 
    479521       IndexLand, indexveg, lalo, neighbours, resolution, contfrac, soiltile, fraclut, nwdFraclut, & 
    480        temp_air, temp_sol, stempdiag, & 
     522       temp_air, temp_sol, stempdiag, shumdiagSAT,litterhumdiagSAT, & 
    481523       humrel, shumdiag, litterhumdiag, precip_rain, precip_snow, gpp, & 
    482524       deadleaf_cover, & 
     
    511553    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (in)  :: stempdiag           !! Soil temperature (K) 
    512554    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (in)  :: shumdiag            !! Relative soil moisture (0-1, unitless) 
     555    REAL(r_std),DIMENSION (kjpindex,nslm), INTENT (in)  :: shumdiagSAT         !! Relative soil moisture (0-1, unitless) 
     556                                                                               !! with respect to(mcs-mcw) 
    513557    REAL(r_std),DIMENSION (kjpindex), INTENT (in)       :: litterhumdiag       !! Litter humidity  (0-1, unitless) 
     558    REAL(r_std),DIMENSION (kjpindex), INTENT (in)       :: litterhumdiagSAT    !! Litter humidity  (0-1, unitless)  
     559                                                                               !!with respect to(tmc_litter_sat-tmc_litter_wilt) 
    514560    REAL(r_std),DIMENSION (kjpindex), INTENT (in)       :: precip_rain         !! Rain precipitation (mm dt_stomate^{-1}) 
    515561    REAL(r_std),DIMENSION (kjpindex), INTENT (in)       :: precip_snow         !! Snow precipitation (mm dt_stomate^{-1}) 
     
    627673 
    628674       !! 4.1 Call stomate main routine that will call all c-cycle routines       ! 
     675 
    629676       CALL stomate_main (kjit, kjpij, kjpindex, & 
    630677            IndexLand, lalo, neighbours, resolution, contfrac, totfrac_nobio, clayfraction, & 
    631             temp_air, temp_sol, stempdiag, & 
    632             humrel, shumdiag, litterhumdiag, precip_rain, precip_snow, gpp, & 
     678            bulk, temp_air, temp_sol, stempdiag, humrel, shumdiag, shumdiagSAT, litterhumdiag, & 
     679            litterhumdiagSAT, precip_rain, precip_snow, gpp, & 
    633680            deadleaf_cover, & 
    634681            assim_param, & 
     
    638685            co2_flux, fco2_lu, fco2_wh, fco2_ha, & 
    639686            resp_maint, resp_hetero, resp_growth, temp_growth) 
    640  
    641687 
    642688       !! 4.2 Output the respiration terms and the net primary 
     
    865911    ! counter, vegetation fraction, max vegetation fraction, LAI 
    866912    ! variable from stomate, fraction of bare soil, soiltype 
    867     ! fraction, clay fraction, height of vegetation, map of LAI 
     913    ! fraction, clay fraction,bulk density, height of vegetation, map of LAI 
    868914     
    869915    CALL restput_p (rest_id, 'veget', nbp_glo, nvm, 1, kjit, veget, 'scatter',  nbp_glo, index_g) 
     
    904950    CALL restput_p (rest_id, 'clay_frac', nbp_glo, 1, 1, kjit, clayfraction, 'scatter',  nbp_glo, index_g) 
    905951    CALL restput_p (rest_id, 'sand_frac', nbp_glo, 1, 1, kjit, sandfraction, 'scatter',  nbp_glo, index_g) 
     952    CALL restput_p (rest_id, 'bulk', nbp_glo, 1, 1, kjit, bulk, 'scatter',  nbp_glo,index_g)  
    906953    !salma: added the following lines for restput of the soil parameters 
    907954    CALL restput_p (rest_id, 'ks', nbp_glo, 1, 1, kjit, ks, 'scatter',  nbp_glo, index_g) 
     
    929976    ! 2.2 Write restart variables managed by STOMATE 
    930977    IF ( ok_stomate ) THEN 
    931        CALL stomate_finalize (kjit, kjpindex, indexLand, clayfraction, assim_param)  
     978       CALL stomate_finalize (kjit, kjpindex, indexLand, clayfraction, bulk, assim_param)  
    932979    ENDIF 
    933980     
     
    10571104    siltfraction(:)=undef_sechiba 
    10581105 
     1106    ALLOCATE (bulk(kjpindex),stat=ier) 
     1107    IF (ier /= 0) CALL ipslerr_p(3,'slowproc_init','Problem in allocation of variable bulk','','') 
     1108    bulk(:)=undef_sechiba 
     1109 
    10591110    ! Allocation of last year vegetation fraction in case of land use change 
    10601111    ALLOCATE(veget_max_new(kjpindex, nvm), STAT=ier) 
     
    13571408          CALL slowproc_soilt(njsc, ks, nvan, avan, mcr, mcs, mcfc, mcw, kjpindex, & 
    13581409               lalo, neighbours, resolution, contfrac, soilclass, & 
    1359                clayfraction, sandfraction, siltfraction) 
     1410               clayfraction, sandfraction, siltfraction, bulk) 
    13601411           
    13611412          call_slowproc_soilt=.FALSE. 
     
    15361587    ENDIF 
    15371588 
     1589    var_name= 'bulk'  
     1590    CALL ioconf_setatt_p('UNITS', '-') 
     1591    CALL ioconf_setatt_p('LONG_NAME','Bulk density in each mesh') 
     1592    CALL restget_p (rest_id, var_name, nbp_glo, 1, 1, kjit, .TRUE., bulk, "gather", nbp_glo, index_g)  
     1593 
    15381594    var_name= 'lai' 
    15391595    CALL ioconf_setatt_p('UNITS', '-') 
     
    16111667       !Config Units = [-] 
    16121668       CALL setvar_p (lai, val_exp, 'SECHIBA_LAI', llaimax) 
     1669 
     1670       !Config Key   = BULK   
     1671       !Config Desc  = Bulk density (0-dim mode)  
     1672       !Config Def   = XXX  
     1673       !Config If    = IMPOSE_VEG and IMPOSE_SOIL  
     1674       !Config Help  = Determines the bulk density in the grid box.  The bulk density  
     1675       !Config         is the weight of soil in a given volume.  
     1676       !Config Units = [-]   
     1677       CALL setvar_p (bulk, val_exp, 'BULK', bulk_default)  
    16131678 
    16141679       !Config Key   = SLOWPROC_HEIGHT 
     
    17231788    ENDIF 
    17241789     
    1725  
    17261790    !! 4.3 Dynamic irrigation map 
    17271791    !  If do_irrigation, it will look to the dynamical irrig. map in restart 
     
    18431907    IF (ALLOCATED (sandfraction)) DEALLOCATE (sandfraction) 
    18441908    IF (ALLOCATED (siltfraction)) DEALLOCATE (siltfraction) 
     1909    IF (ALLOCATED (bulk)) DEALLOCATE (bulk)  
    18451910    IF (ALLOCATED (laimap)) DEALLOCATE (laimap) 
    18461911    IF (ALLOCATED (veget_max_new)) DEALLOCATE (veget_max_new) 
     
    25312596    END IF  
    25322597 
    2533     ! Assigning the right values and giving a value where information was not found 
     2598    ! Assiggning the right values and giving a value where information was not found 
    25342599    DO ib=1,nbpt 
    25352600      IF (alaimap(ib) < min_sechiba) THEN 
     
    29312996!>\BRIEF         looks for nearest grid point on the fine map 
    29322997!! 
    2933 !! DESCRIPTION  : (definitions, functional, design, flags):  
    2934 !! 
     2998!! DESCRIPTION  : (definitions, functional, design, flags): 
     2999!!            
    29353000!! RECENT CHANGE(S): None 
    29363001!! 
     
    30033068!! 
    30043069!>\BRIEF         Interpolate the Zobler or Reynolds/USDA soil type map 
     3070!!               Read and interpolate soil bulk from file.  
    30053071!! 
    30063072!! DESCRIPTION  : (definitions, functional, design, flags):  
     
    30103076!!                             and everything needed to read all maps and assign parameter values.   
    30113077!! 
    3012 !! MAIN OUTPUT VARIABLE(S): ::soiltype, ::clayfraction, sandfraction, siltfraction 
     3078!! MAIN OUTPUT VARIABLE(S): ::soiltype, ::clayfraction, sandfraction, siltfraction, bulk 
    30133079!! 
    30143080!! REFERENCE(S) : Reynold, Jackson, and Rawls (2000). Estimating soil water-holding capacities  
     
    30193085!! \n 
    30203086!_ ================================================================================================================================ 
    3021   SUBROUTINE slowproc_soilt(njsc,  ks,  nvan, avan, mcr, mcs, mcfc, mcw, nbpt, lalo, neighbours, resolution, contfrac, soilclass, clayfraction, sandfraction, siltfraction) 
     3087  SUBROUTINE slowproc_soilt(njsc,  ks,  nvan, avan, mcr, mcs, mcfc, mcw, nbpt, lalo, neighbours, resolution, contfrac, soilclass, clayfraction, sandfraction, siltfraction, bulk) 
    30223088 
    30233089    USE interpweight 
     
    30613127    REAL(r_std), INTENT(out)      :: sandfraction(nbpt)     !! The fraction of sand (for SP-MIP) 
    30623128    REAL(r_std), INTENT(out)      :: siltfraction(nbpt)     !! The fraction of silt (for SP-MIP) 
     3129    REAL(r_std), INTENT(out)      :: bulk(nbpt)             !! Bulk density  as used by STOMATE  
    30633130    ! 
    30643131    ! 
     
    30883155    CHARACTER(LEN=80)                                    :: spmipexp          !! designing the number of sp-mip experiment 
    30893156    CHARACTER(LEN=80)                                    :: unif_case               !! designing the model of experiment 4 (sp_mip) 
    3090  
     3157    REAL(r_std), DIMENSION(nbpt)                         :: abulkph          !!Availability of the bulk and ph interpolation  
    30913158    REAL(r_std)                                          :: vmin, vmax       !! min/max values to use for the  
    30923159 
     
    31133180                                                                             !!   `maskingtype')  
    31143181    CHARACTER(LEN=250)                                   :: namemaskvar      !! name of the variable to use to mask  
     3182    CHARACTER(LEN=80)                                    :: fieldname        !!name of the field read for the bulk density map 
    31153183    INTEGER(i_std), DIMENSION(:), ALLOCATABLE            :: vecpos 
    31163184    REAL(r_std)                                          :: sgn              !! sum of fractions excluding glaciers and ocean 
     
    36373705                      IF ( (solt(ilf) .LE. nscm) .AND. (solt(ilf) .GT. 0) ) THEN 
    36383706                         soilclass(ib,solt(ilf)) = textrefrac(ib,solt(ilf)) 
    3639                          clayfraction(ib) = clayfraction(ib) + textfrac_table(solt(ilf),3) *                & 
     3707                         clayfraction(ib) = clayfraction(ib) + textfrac_table(solt(ilf),3) * & 
    36403708                              textrefrac(ib,solt(ilf)) 
    36413709                         sandfraction(ib) = sandfraction(ib) + textfrac_table(solt(ilf),2) * & 
     
    36883756 
    36893757       ENDIF        !      xios_interpolation 
     3758 
     3759    !!  
     3760    !! Read and interpolate soil bulk and soil ph using IOIPSL or XIOS  
     3761    !! 
     3762    IF (ok_moyano_soilhumsat) THEN 
     3763       IF (xios_interpolation) THEN  
     3764         ! Read and interpolate using XIOS  
     3765     
     3766           ! Check if the restart file for sechiba is read.  
     3767           ! Reading of soilbulk and soilph with XIOS is only activated if restname==NONE.  
     3768           IF (restname_in /= 'NONE') THEN  
     3769              CALL ipslerr_p(3,'slowproc_soilt','soilbulk and soilph can not be read with XIOS if sechiba restart file exist', & 
     3770              'Remove sechiba restart file and start again','')  
     3771           END IF  
     3772      
     3773           IF (printlev_loc>=3) WRITE (numout,*) 'slowproc_soilt:Read soilbulk and soilph with XIOS'  
     3774           CALL xios_orchidee_recv_field('soilbulk', bulk)  
     3775       ELSE  
     3776       ! Read using IOIPSL and interpolate using aggregate tool in ORCHIDEE  
     3777           IF (printlev_loc>=3) WRITE (numout,*) 'slowproc_soilt:Read soilbulk and soilph with IOIPSL'       
     3778           !! Read soilbulk  
     3779      
     3780           !Config Key   = SOIL_BULK_FILE  
     3781           !Config Desc  = Name of file from which soil bulk should be read  
     3782           !Config Def   = soil_bulk_and_ph.nc  
     3783           !Config If    =   
     3784           !Config Help  =   
     3785           !Config Units = [FILE]  
     3786 
     3787       ! By default, bulk and ph is stored in the same file but they could be 
     3788       ! separated if needed.  
     3789           filename = 'soil_bulk_and_ph.nc'  
     3790           CALL getin_p('SOIL_BULK_FILE',filename)  
     3791      
     3792           variablename = 'soilbulk'  
     3793           ! Name of the longitude and latitude in the input file  
     3794           lonname = 'nav_lon'  
     3795           latname = 'nav_lat'  
     3796           vmin=0  ! not used in interpweight_2Dcont  
     3797           vmax=0  ! not used in interpweight_2Dcont  
     3798      
     3799           ! Should negative values be set to zero from input file?  
     3800           nonegative = .FALSE.  
     3801           ! Type of mask to apply to the input data (see header for more 
     3802           ! details)  
     3803           maskingtype = 'mabove'  
     3804           ! Values to use for the masking  
     3805           maskvals = (/ min_sechiba, undef_sechiba, undef_sechiba/)  
     3806           ! Name of the variable with the values for the mask in the input file 
     3807           ! (only if maskkingtype='var') ( not used)  
     3808           namemaskvar = ''  
     3809           ! Type of calculation of cell fractions  
     3810           fractype = 'default'  
     3811 
     3812              IF (printlev_loc >= 1) WRITE(numout,*) "slowproc_soilt: Read and interpolate " & 
     3813                   // TRIM(filename) // " for variable " // TRIM(variablename) 
     3814 
     3815 
     3816           CALL interpweight_2Dcont(nbpt, 0, 0, lalo, resolution,neighbours,                           &     
     3817                contfrac, filename, variablename, lonname, latname,vmin, vmax,nonegative, maskingtype,    &     
     3818                maskvals, namemaskvar, -1, fractype, bulk_default,undef_sechiba,                       & 
     3819                bulk, abulkph)  
     3820           WRITE(numout,*) 'bulk density map is read _______' 
     3821 
     3822 
     3823       ENDIF        !      xios_interpolation 
     3824    ENDIF 
     3825 
     3826       DO ib = 1, nbpt 
     3827          njsc(ib) = MAXLOC(soilclass(ib,:),1) 
     3828       ENDDO 
    36903829 
    36913830       ! End of soil texture reading, for 'maps' and classical behavior 
     
    38183957    CALL xios_orchidee_send_field("interp_diag_njsc",REAL(njsc, r_std)) 
    38193958    CALL xios_orchidee_send_field("interp_diag_clayfraction",clayfraction) 
     3959    CALL xios_orchidee_send_field("interp_diag_bulk",bulk) 
    38203960    CALL xios_orchidee_send_field("interp_diag_sandfraction",sandfraction) 
    38213961    CALL xios_orchidee_send_field("interp_diag_siltfraction",siltfraction) 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_stomate/stomate.f90

    r7326 r8418  
    644644         rest_id_stom,   hist_id_stom,      hist_id_stom_IPCC,               & 
    645645         index,          lalo,              neighbours,   resolution,        & 
    646          contfrac,       totfrac_nobio,     clay,         temp_air,          & 
    647          lai,            veget,             veget_max,                       & 
     646         contfrac,       totfrac_nobio,     clay,         bulk,              & 
     647         temp_air,       lai,               veget,        veget_max,         & 
    648648         deadleaf_cover,    assim_param,  temp_growth ) 
    649649 
     
    665665    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: totfrac_nobio     !! Fraction of grid cell covered by lakes, land ice, cities, ... (unitless)  
    666666    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: clay              !! Clay fraction of soil (0-1, unitless) 
     667    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: bulk              !! Bulk density (kg/m**3)   
    667668    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: temp_air          !! Air temperature at first atmospheric model layer (K) 
    668669    REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(in)  :: lai               !! Leaf area inex @tex $(m^2 m^{-2})$ @endtex 
     
    11881189       & (kjit, kjpij, kjpindex, & 
    11891190       &  index, lalo, neighbours, resolution, contfrac, totfrac_nobio, clay, & 
    1190        &  temp_air, temp_sol, stempdiag, & 
    1191        &  humrel, shumdiag, litterhumdiag, precip_rain, precip_snow, & 
     1191       &  bulk, temp_air, temp_sol, stempdiag, & 
     1192       &  humrel, shumdiag,shumdiagSAT, litterhumdiag,litterhumdiagSAT, precip_rain, precip_snow, & 
    11921193       &  gpp, deadleaf_cover, assim_param, & 
    11931194       &  lai, frac_age, height, veget, veget_max, & 
     
    12251226                                                                         !! ice, cities, ... (unitless)  
    12261227    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: clay              !! Clay fraction of soil (0-1, unitless) 
     1228    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: bulk              !! Bulk density (kg/m**3)   
    12271229    REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(in)  :: humrel            !! Relative humidity ("moisture availability")  
    12281230                                                                         !! (0-1, unitless)  
     
    12311233    REAL(r_std),DIMENSION(kjpindex,nslm),INTENT(in) :: stempdiag         !! Soil temperature (K) 
    12321234    REAL(r_std),DIMENSION(kjpindex,nslm),INTENT(in) :: shumdiag          !! Relative soil moisture (0-1, unitless) 
     1235    REAL(r_std),DIMENSION(kjpindex,nslm),INTENT(in) :: shumdiagSAT       !! Relative soil moisture (0-1, unitless) 
     1236                                                                         !! with respect to(mcs-mcw) 
    12331237    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: litterhumdiag     !! Litter humidity (0-1, unitless) 
     1238    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: litterhumdiagSAT  !! Litter humidity (0-1, unitless) 
     1239                                                                         !! with respect to(tmc_litter_sat-tmc_litter_wilt) 
    12341240    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: precip_rain       !! Rain precipitation   
    12351241                                                                         !! @tex $(mm dt_stomate^{-1})$ @endtex  
     
    13691375 
    13701376!_ ================================================================================================================================ 
    1371      
     1377    
     1378  
    13721379  !! 1. Initialize variables 
    13731380 
     
    14871494    CALL littercalc (kjpindex, & 
    14881495         turnover_littercalc, bm_to_littercalc, & 
    1489          veget_cov_max, temp_sol, stempdiag, shumdiag, litterhumdiag, & 
     1496         veget_cov_max, temp_sol, stempdiag, shumdiag, litterhumdiag,shumdiagSAT,litterhumdiagSAT, & 
    14901497         litterpart, litter, dead_leaves, lignin_struc, & 
    14911498         deadleaf_cover, resp_hetero_litter, & 
    14921499         soilcarbon_input_inst, control_temp_inst, control_moist_inst, & 
    1493          matrixA, vectorB) 
     1500         matrixA, vectorB, bulk, clay, carbon) 
    14941501     
    14951502    ! Heterothropic litter respiration during time step ::dt_sechiba @tex $(gC m^{-2})$ @endtex 
     
    15511558            &          (kjpindex, dt_days, & 
    15521559            &           veget_cov, veget_cov_max, & 
    1553             &           humrel_daily, t2m_daily, tsoil_daily, soilhum_daily, lalo, & 
     1560            &           humrel_daily, t2m_daily, tsoil_daily, & 
     1561            &           soilhum_daily, lalo, & 
    15541562            &           precip_daily, npp_daily, biomass, & 
    15551563            &           turnover_daily, gpp_daily, when_growthinit, & 
     
    15621570            &           maxfpc_lastyear, maxfpc_thisyear, & 
    15631571            &           humrel_month, humrel_week, t2m_longterm, tau_longterm, & 
    1564             &           t2m_month, t2m_week, tsoil_month, soilhum_month, & 
     1572            &           t2m_month, t2m_week, tsoil_month,soilhum_month, & 
    15651573            &           npp_longterm, turnover_longterm, gpp_week, & 
    15661574            &           gdd_m5_dormance, gdd_midwinter, ncd_dormance, ngd_minus5, & 
     
    15841592            &             clay, herbivores, & 
    15851593            &             tsurf_daily, tsoil_daily, t2m_daily, t2m_min_daily, & 
    1586             &             litterhum_daily, soilhum_daily, & 
     1594            &             litterhum_daily, soilhum_daily,  & 
    15871595            &             maxhumrel_lastyear, minhumrel_lastyear, & 
    15881596            &             gdd0_lastyear, precip_lastyear, & 
     
    20132021!_ ================================================================================================================================ 
    20142022 
    2015   SUBROUTINE stomate_finalize (kjit, kjpindex, index, clay, assim_param)  
     2023  SUBROUTINE stomate_finalize (kjit, kjpindex, index, clay, bulk, assim_param)  
    20162024     
    20172025    IMPLICIT NONE 
     
    20232031    INTEGER(i_std),DIMENSION(kjpindex),INTENT(in)   :: index             !! Indices of the terrestrial pixels only (unitless) 
    20242032    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: clay              !! Clay fraction of soil (0-1, unitless) 
     2033    REAL(r_std),DIMENSION(kjpindex),INTENT(in)      :: bulk              !! Bulk density (kg/m**3) 
    20252034    REAL(r_std),DIMENSION(kjpindex,nvm,npco2),INTENT(in) :: assim_param  !! min+max+opt temperatures (K) & vmax for photosynthesis   
    20262035 
     
    21092118         dt_days, days_since_beg, & 
    21102119         ind, adapted, regenerate, & 
    2111          humrel_daily, gdd_init_date, litterhum_daily, & 
     2120         humrel_daily, gdd_init_date, litterhum_daily,& 
    21122121         t2m_daily, t2m_min_daily, tsurf_daily, tsoil_daily, & 
    21132122         soilhum_daily, precip_daily, & 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_stomate/stomate_io.f90

    r7326 r8418  
    440440         &              .TRUE., litterhum_daily, 'gather', nbp_glo, index_g) 
    441441    IF (ALL(litterhum_daily(:) == val_exp)) litterhum_daily(:) = zero 
     442 
    442443    !- 
    443444    t2m_daily(:) = val_exp 
     
    471472         &                .TRUE., soilhum_daily, 'gather', nbp_glo, index_g) 
    472473    IF (ALL(soilhum_daily(:,:) == val_exp)) soilhum_daily(:,:) = zero 
     474 
    473475    !- 
    474476    precip_daily(:) = val_exp 
     
    604606         &              .TRUE., soilhum_month, 'gather', nbp_glo, index_g) 
    605607    IF (ALL(soilhum_month(:,:) == val_exp)) soilhum_month(:,:) = zero 
     608 
     609 
    606610    !- 
    607611    ! 6 fire probability 
     
    993997             CALL restget_p (rest_id_stomate, var_name, nbp_glo, nlitt , 1, itime, & 
    994998                  &                     .TRUE., litter(:,:,m,l,k), 'gather', nbp_glo, index_g) 
    995              IF (ALL(litter(:,:,m,l,k) == val_exp)) litter(:,:,m,l,k) = zero 
     999             IF (ok_moyano_soilhumsat)THEN 
     1000               IF (ALL(litter(:,:,m,l,k) == val_exp)) litter(:,:,m,l,k) = Litterini_Moyano 
     1001             ELSE 
     1002               IF (ALL(litter(:,:,m,l,k) == val_exp)) litter(:,:,m,l,k) = zero 
     1003             ENDIF 
    9961004          ENDDO 
    9971005       ENDDO 
     
    10131021       CALL restget_p (rest_id_stomate, var_name, nbp_glo, ncarb , 1, itime, & 
    10141022            &                   .TRUE., carbon(:,:,m), 'gather', nbp_glo, index_g) 
    1015        IF (ALL(carbon(:,:,m) == val_exp)) carbon(:,:,m) = zero 
     1023       IF (ok_moyano_soilhumsat)THEN  
     1024          IF (ALL(carbon(:,:,m) == val_exp)) carbon(:,:,m) = Cini_Moyano 
     1025       ELSE 
     1026          IF (ALL(carbon(:,:,m) == val_exp)) carbon(:,:,m) = zero 
     1027       ENDIF 
    10161028    ENDDO 
    10171029    !- 
     
    16891701    var_name = 't2m_daily' 
    16901702    CALL restput_p (rest_id_stomate, var_name, nbp_glo,    1, 1, itime, & 
    1691          &                t2m_daily, 'scatter', nbp_glo, index_g) 
     1703                    &                t2m_daily, 'scatter', nbp_glo, index_g) 
    16921704    !- 
    16931705    var_name = 't2m_min_daily' 
    16941706    CALL restput_p (rest_id_stomate, var_name, nbp_glo,    1, 1, itime, & 
    1695          &                t2m_min_daily, 'scatter', nbp_glo, index_g) 
     1707                    &                t2m_min_daily, 'scatter', nbp_glo, index_g) 
    16961708    !- 
    16971709    var_name = 'tsurf_daily' 
    16981710    CALL restput_p (rest_id_stomate, var_name, nbp_glo,    1, 1, itime, & 
    1699          &                tsurf_daily, 'scatter', nbp_glo, index_g) 
     1711                    &                tsurf_daily, 'scatter', nbp_glo, index_g) 
    17001712    !- 
    17011713    var_name = 'tsoil_daily' 
    17021714    CALL restput_p (rest_id_stomate, var_name, nbp_glo, nslm, 1, itime, & 
    1703          &                tsoil_daily, 'scatter', nbp_glo, index_g) 
     1715                    &                tsoil_daily, 'scatter', nbp_glo, index_g) 
    17041716    !- 
    17051717    var_name = 'soilhum_daily' 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_xml/context_input_orchidee.xml

    r8133 r8418  
    3030      <field id="soilcolor" name="soilcolor" domain_ref="dom_file_soil" operation="instant" freq_offset="1ts" enabled="false"/> 
    3131      <field id="soiltext" name="soiltext" domain_ref="dom_file_soil" operation="instant" freq_offset="1ts"/> 
     32    </file> 
     33 
     34    <!-- Default file name: soil_bulk_and_ph.nc for both soilbulk and soilph. The variables can be read from different files, specified in run.def 
     35                  This file is read in the initialization phase only if there is no restart file. 
     36         For soilbulk and soilph, set values lower than min_sechiba as masked values because missing values are zero in the file. 
     37        Renormalization will be done later using the interpolated mask.  --> 
     38    <file id="soilbulk_file" mode="read" output_freq="1y" enabled="true"> 
     39      <field id="soilbulk_mask_read" name="soilbulk" domain_ref="dom_file_soilbulk" operation="instant" freq_offset="1ts" > this &gt; $min_sechiba ? 1 : 0 </field> 
     40      <field id="soilbulk_read" name="soilbulk" domain_ref="dom_file_soilbulk" operation="instant" freq_offset="1ts" > this &gt; $min_sechiba ? this : 0 </field> 
    3241    </file> 
    3342 
     
    134143        <field id="soiltext13" > soiltext == 13 </field> 
    135144      </field_group> 
     145 
     146      <!-- If soilbulk_mask .gt. min_sechiba, then renormalize by dividing with soilbulk_mask else set bulk_default. 
     147      soilbulk_mask interpolated to the model grid corresponds to the fraction of the grid cell covered by non-masked 
     148      values in the input file. Where soilbulk_mask=0, no data where found on the source grid. --> 
     149      <field id="soilbulk_tmp"  field_ref="soilbulk_read" domain_ref="dom_from_soilbulk" /> 
     150      <field id="soilbulk_mask" field_ref="soilbulk_mask_read" domain_ref="dom_from_soilbulk" read_access="true" enabled="true" /> 
     151      <field id="soilbulk"      field_ref="soilbulk_tmp"  domain_ref="dom_from_soilbulk" read_access="true" enabled="true"  > soilbulk_mask &gt; $min_sechiba ? soilbulk_tmp/(soilbulk_mask+1e-100) : $bulk_default </field> 
    136152       
    137153      <field id="frac_veget"      field_ref="maxvegetfrac_read" domain_ref="dom_from_pft" read_access="true" enabled="true" /> 
     
    220236    </domain> 
    221237 
     238    <domain id="dom_from_soilbulk" domain_ref="domain_landpoints"> 
     239    <interpolate_domain order="1" renormalize="false" /> 
     240    </domain> 
     241 
    222242    <domain id="dom_from_pft" domain_ref="domain_landpoints"> 
    223243      <interpolate_domain order="1" renormalize="false" /> 
     
    258278      <!-- generate_rectilinear_domain bounds_lon_start="-180" bounds_lon_end="180" bounds_lat_start="-90" bounds_lat_end="90"/--> 
    259279      <generate_rectilinear_domain bounds_lon_start="-180" bounds_lon_end="180" bounds_lat_start="90" bounds_lat_end="-90"/> 
     280    </domain> 
     281 
     282    <domain id="dom_file_soilbulk" type="rectilinear"> 
     283    <generate_rectilinear_domain bounds_lon_start="-180" bounds_lon_end="180" bounds_lat_start="90" bounds_lat_end="-90"/>/> 
    260284    </domain> 
    261285     
     
    346370    <variable id="albbg_vis_default" type="double">xxx</variable> 
    347371    <variable id="albbg_nir_default" type="double">xxx</variable> 
     372    <variable id="bulk_default" type="double">xxx</variable> 
    348373     
    349374  </variable_definition> 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_xml/field_def_orchidee.xml

    r7983 r8418  
    358358    <field id="gpplut" name="gppLut" long_name="Gross primary productivity on Landuse tiles" unit="kgC m-2 s-1" grid_ref="grid_nlut" /> 
    359359 
    360  
    361360    <!-- Varaibles interp_diag_xxx and interp_avail_xxx are written just after reading and interpolating from file and are used for validation --> 
    362361    <field id="interp_avail_aveget" name="interp_avail_aveget" long_name="Availability of data for the vegetation fraction interpolation (negative values if no data found)" unit="1" operation="once" freq_offset="0ts"/> 
     
    366365    <field id="interp_diag_soilclass" name="interp_diag_soilclass"     grid_ref="grid_nscm" long_name="soilclass read from soils_param file" operation="once" freq_offset="0ts"/> 
    367366    <field id="interp_diag_njsc" name="interp_diag_njsc" long_name="njsc after reading of soilclass from soils_param file" operation="once" freq_offset="0ts"/> 
     367    <field id="interp_diag_bulk" name="interp_diag_bulk" long_name="Soil bulk density read from file" unit="kg/m**3" operation="once" freq_offset="0ts"/> 
    368368    <field id="interp_diag_clayfraction" name="interp_diag_clayfraction" long_name="clayfraction read from soils_param file" operation="once" freq_offset="0ts" /> 
    369369    <field id="interp_diag_sandfraction" name="interp_diag_sandfraction" long_name="sandfraction read from soils_param file" operation="once" freq_offset="0ts" /> 
     
    636636  <field id="vegetmax_soil" name="vegetsoil" long_name="PFT fraction for soil tiles" unit="1" grid_ref="grid_nvm_nstm"/> 
    637637 
     638  <!-- Output variables for Moyano et al. 2012 control humidity function --> 
     639  <field id="ControlMoistLitter" name="ControlMoistLitter" long_name="Controle moist value for iabove" unit="1" grid_ref="grid_landpoints" /> 
     640  <field id="ControlMoistSoil" name="ControlMoistSoil" long_name="Controle moist value for ibelow" unit="1" grid_ref="grid_landpoints"/> 
     641  <field id="litterhumSAT" name="litterhumSAT" long_name="litter moisture for the controle moisture fonction" unit="1" grid_ref="grid_landpoints"/> 
     642  <field id="soilhumSAT" name="soilhumSAT" long_name="soil moisture for the control moisture fonction" unit="1" grid_ref="grid_landpoints"/> 
     643 
    638644</field_definition> 
    639645 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_xml/file_def_orchidee.xml

    r7999 r8418  
    991991    <field field_ref="nppOther" level="1"/> 
    992992    <field field_ref="nep" level="0"/> 
     993   <!-- variables for Moyano control moisture --> 
     994    <field field_ref="ControlMoistLitter" level="1"/> 
     995    <field field_ref="ControlMoistSoil" level="1"/> 
     996    <field field_ref="litterhumSAT" level="1"/> 
     997    <field field_ref="soilhumSAT" level="1"/> 
     998 
    993999   </field_group> 
    9941000     
Note: See TracChangeset for help on using the changeset viewer.