== Technical modifications == This page summarizes the choices and the modifications done for the externalization of the parameters. === Global Specifications === We tried to respect as soon as possible the structure of the code. [[BR]] Three folders over five were affected by the modifications : ''src_parameters'', ''src_sechiba'' and ''src_stomate''. [[BR]] We regroup all the files containing parameters in src_parameters. We rewrite some parts of the code in order not to have explicit references to indexes to some PFTs (like agricultural ones). [[BR]] We delete all the multiple definitions of some parameters like pi or the terrestrial radius R_Earth. Finally, we gave names to some coefficents intervening in equations and externalized them. The main changings are detailed below : === Src_parameters === Originally, this folder was organized in 4 files called '''constantes.f90''', '''constantes_co2.f90''', '''constantes_veg.f90''' and '''constantes_soil.f90'''. The last three files were mixed up with '''stomate_constants.f90''' to give '''pft_parameters.f90''' and '''constantes_mtc.f90'''. These new files make the initialization and the overwriting of the pft-parameters. All the default values for the pft-parameters are in '''constantes_mtc.f90'''. '''constantes.f90''' contains all the physical constants used by ORCHIDEE and (for the moment) the rest of the externalized parameters (scalar and no-pfts-sized arrays). === Src_sechiba === We add a new module called '''qsat_moisture.f90'''. This module regroups the routines for the calculation of qsat (previously in '''constantes_veg.f90'''). [[BR]] '''intersurf.f90''' reads the number of PFTs and the parameters values chosen by the user. === Src_stomate === We delete '''stomate_constants.f90''' in order to move its parameters in ''src_parameters''. The too-specific parameters were moved to '''stomate_data.f90'''. [[BR]] Due to Fortran language, we have to delete the following structures in ORCHIDEE (previously in '''stomate_constants.f90''': {{{ ! type declaration for photosynthesis TYPE t_photo_type REAL(r_std), DIMENSION(nvm) :: t_max_a REAL(r_std), DIMENSION(nvm) :: t_max_b REAL(r_std), DIMENSION(nvm) :: t_max_c REAL(r_std), DIMENSION(nvm) :: t_opt_a REAL(r_std), DIMENSION(nvm) :: t_opt_b REAL(r_std), DIMENSION(nvm) :: t_opt_c REAL(r_std), DIMENSION(nvm) :: t_min_a REAL(r_std), DIMENSION(nvm) :: t_min_b REAL(r_std), DIMENSION(nvm) :: t_min_c END TYPE t_photo_type }}} and : {{{ ! type declaration for phenology TYPE pheno_type REAL(r_std), DIMENSION(nvm,3) :: gdd REAL(r_std), DIMENSION(nvm) :: ngd REAL(r_std), DIMENSION(nvm) :: ncdgdd_temp REAL(r_std), DIMENSION(nvm) :: hum_frac REAL(r_std), DIMENSION(nvm) :: lowgpp_time REAL(r_std), DIMENSION(nvm) :: leaffall REAL(r_std), DIMENSION(nvm) :: leafagecrit REAL(r_std) :: tau_hum_month REAL(r_std) :: tau_hum_week REAL(r_std) :: tau_t2m_month REAL(r_std) :: tau_t2m_week REAL(r_std) :: tau_tsoil_month REAL(r_std) :: tau_soilhum_month REAL(r_std) :: tau_gpp_week REAL(r_std) :: tau_gdd REAL(r_std) :: tau_ngd REAL(r_std) :: tau_longterm REAL(r_std), DIMENSION(nvm) :: lai_initmin CHARACTER(len=6), DIMENSION(nvm) :: pheno_model CHARACTER(len=6), DIMENSION(nvm) :: senescence_type REAL(r_std), DIMENSION(nvm,3) :: senescence_temp REAL(r_std), DIMENSION(nvm) :: senescence_hum REAL(r_std), DIMENSION(nvm) :: nosenescence_hum REAL(r_std), DIMENSION(nvm) :: max_turnover_time REAL(r_std), DIMENSION(nvm) :: min_leaf_age_for_senescence REAL(r_std), DIMENSION(nvm) :: min_turnover_time !- REAL(r_std), DIMENSION(nvm) :: hum_min_time END TYPE pheno_type }}} We replace the structures by individuals arrays. During our validations on fluxnet sites, we modified the herbivory model and the formulation for the variable "black_carbon". In '''stomate_season.f90''', we replace : {{{ DO j = 2,nvm ! IF ( natural(j) ) THEN ! WHERE ( nlflong_nat(:) .GT. zero ) consumption(:) = hvc1 * nlflong_nat(:) ** hvc2 herbivores(:,j) = one_year * green_age(:) * nlflong_nat(:) / consumption(:) ELSEWHERE herbivores(:,j) = 100000. ENDWHERE ! ELSE ! herbivores(:,j) = 100000. ! ENDIF ! ENDDO }}} by : {{{ DO j = 2,nvm ! IF ( natural(j) ) THEN ! WHERE ( nlflong_nat(:,j) .GT. zero ) consumption(:) = hvc1 * nlflong_nat(:,j) ** hvc2 herbivores(:,j) = one_year * green_age(:,j) * nlflong_nat(:,j) / consumption(:) ELSEWHERE herbivores(:,j) = 100000. ENDWHERE ! ELSE ! herbivores(:,j) = 100000. ! ENDIF ! ENDDO }}} in order to make herbivores more pft-specific. For "black_carbon", we relaced the following line {{{ black_carbon(:) = & black_carbon(:) + bcfrac(:) * residue(:) }}} by : {{{ black_carbon(:) = & black_carbon(:) + bcfrac(:) * residue(:) * veget_max(:,j) }}} In both cases, when we add a new PFT on the same surface, the consumption of herbivory and the quantity of black carbon was doubled ! That's why we change the formulations of these two sub-models. === JULY 2011 === The most part of the externalized parameters which were still in src_sechiba are in src_parameters now.