Vuichard's page on MergeOCN

This page describes the work of inclusion of the N cycle in the trunk of ORCHIDEE based on the work of S. Zaehle. It is based on two versions of OCN. The "original" one as given by S. Zaehle in 2009 (rev 19, source:branches/orchidee-N@19) and the one modified by B. Guenet, N. Viovy which corresponds to the head of the same branch (source:branches/orchidee-N).

We first aim to implement the N-cycle in a version closed to the trunk version of ORCHIDEE but that accounts for the re-formulation of the aloccation (making use of labile C pool of reserve) as done by S. Luyssaert in the DOFOCO branch. To do so, we started from a "hybrid" version where the sechiba component is from the trunk version of ORCHIDEE and the stomate component is from the DOFOCO branch. The work of integration of the N specifities has started from this version that is stored here : source:branches/orchidee-N

Here below, are described the differences in between the original code of OCN and the papers that have been used as a reference by S. Zaehle and the questions raised by N. Vuichard when checking the code of OCN.

All the papers of reference are stored on the cloud, here.

Comments are welcome in order to confirm bugs or to correct points that you think misinterpreted. I propose that each person has a color code for identifying him/her:

  1. Guenet
  1. Viovy
  1. Peylin
  1. Maignan

SOM decomposition - Routine : som_dynamics

  1. fraction from passive to slow pool. OCN contains the version of Century published in 1993 while the ORCHIDEE is more based on the publication of 1987. The fraction towards the passive pool of the carbon flow that goes out of the slow pool is set to 0.03 in Parton 1987, instead of 0.003-0.009*clay_fraction in Parton, 1993. Soenke kept the parametrization of 1987. There is no clear motivation on the reason why.
  1. Guenet

Soenke probably just added nitrogen on the CENTURY version that was already present in ORCHIDEE and did not totally updated CENTURY. I did not see reason to not update.

N flows in soil - Routine : nitrogen_dynamics

  1. Calculation of the anaerobic balloon. Nitrification and denitrification are varying (oppositely) depending of the anaerobic condition in soils as done in Li et al., 2000. This is done by using a variable named anvf (for ANaerobic Volumetric Fraction). In Li et al. (2000), anvf is calculated using the oxygen diffusion coefficient (Ds) which makes use of the air-filled porosity (afps). In OCN, the calculation of afps is defined with the following equation but not used later in the calculation of Ds. (See, here)
     d_ox(:) = 1.73664 * ( 0.15 * (exp(-(soilhum_av(:)**3.)/0.44)-exp(-1./0.44))) * & 
    So, in OCN, diffusion is not function of afps/afps_max ratio but accounts for soilhum and soil temperature according to Monteith & Unsworth, 1990.

We keep here the original formulation of Li et al., 2000

  1. Guenet

It is not clear why Soenke used the Montheit and Unsworht 1990 equation to calculate diffusion coefficient but it perhaps because he defined afpsmax as a function of soil > texture which is not coherent with what is done in Sechiba. Indeed, sechiba defined the porosity as a parameter (the field capacity that could be considered as a synonym for porosity). I suggest to use another equation to define oxygen diffusion coefficient based on Wania et al., 2010 in GMD. They define equations based on regression that takes into account the effect of soil water content on diffusion.

  1. Calculation of the oxygen partial pressure. For both the calculation of the gradient of oxygen partial pressure (d(pO2)/dz) and the change in oxygen partial pressure (d(pO2)/dt), we need dz, the depth over which one makes the calculation. It is not clear to me which depth one should use. For information, OCN used z_decomp (see here)

Exemple: I look at this point (Bertrand) I think that Soenke assume that microbial activity only occurs between 0 and z_decomp. Therefore he used z_decomp to calculate d(pO2)/dz and d(pO2)/dt since it is assumed that no microbial activity occur below z_decomp.

  1. Calculation of the oxygen partial pressure (2). Still in the calculation of the change in oxygen partial pressure (d(pO2)/dt) in OCN, it seems that "dz" term (z_decomp) is missing in the following equation (see here) when we compare with the reference formulation (Li et al., 2000, Eq. 4 of Table 2)
  1. Guenet

I agree, this point must be clarified with Soenke

  1. Conversion Respiration to O2 pressure. The conversion factor here used for converting the respiration term in O2 pressure accounts for the air-filled porosity (see Li et al., 2000 eq. 3 table 2). In OCN, afps_max is used instead of afps. We keep the original formulation
  1. Guenet

I agree, I did not understood why it has been changed.

  1. Calculation of the anaerobic balloon - anvf. The two constants a and b are not specified in Li et al., 2000. OCN uses a=0.85 and b=1 without mention to any publication (see here). As mention in the code of OCN these parameters have been estimated temporarily and need to be tuned. Might be good to find the values used in DNDC...
  1. Guenet

I did a quick research in the papers I know using DNDC and I did not find these values, they are probably tuned. Must be confirmed by Soenke

  1. Ammonium adsorption. It is based on Li et al. 1992, JGR, Table 4 using NH4 defined as the NH4+ concentration in the soil liquid, gN kg-1 soil (p. 9774) but Zhang et al. (2000) use also the same equation but in this paper NH4+ is defined as the [NH4+] in a soil layer in kgN ha-1. In OCN, NH4 seems defined as molNH4 m-3 of water (see, here). It would be good to clarify this by checking what looks like the equation depending of the units we use.
  1. Guenet

From what I understood NH4+ in OCN is in kg N ha-1 which make sense with Zhang et al., 2000. The Li et al 1992 equation confuse me a bit because from what I understood from the equations NH4 is in gN kg soil; but solid soil, it means that we can easily convert it as a stock, but in the description it is per kg of liquid soil...

  1. Ammonium adsorption (2). Li et al. (1992) defines FIXNH4 as the proportion of adsorbed NH4+. One may assume that consequently the NH4+ that is not adsorbed is NH4+ x (1-FIXNH4) and that we want to consider this quantity for possible nitrification, transformation to ammonia, .... But in OCN, we do not multiply the state variable (SV) representing NH4+ by (1-FixNH4) but by (1-FixNH4/(1+FixNH4)) (see, here). This tends to assume that FixNH4 represents the ratio adsorped NH4+ to non-adsorped because FixNH4/(1+FixNH4) = (NH4adsorp/NH4non_adsorp)/((NH4non_adsorp+NH4adsorp)/NH4_non_adsorp) = NH4adsorp / NH4tot. This needs to be clarified ...
  1. Guenet

I did not understood this part.

  1. Nitrification rate. The equation for the nitrification rate comes from Schmid et al., 2001, Nutr. Cycl. Agro (eq.1) but the environmental factors used are from Zhang (2002) who used an other equation, especially for Temperature effect on nitrification. I don't know how this can be mixed together ? This seems particularly inappropriate because the default fraction of N-NH4 which is converted to N-NO3 appears equal to 2 day-1 (a factor "2" in the equation, see here). In Schmid et al., the nitrification rate at 20 ◦C and field capacity (knitrif,20) was set to 0.2 d−1 (10 times less...)
  1. Guenet

It is even more strange if we look at the original paper cited by Zhang (Hansen 1991) where the nitrification rate at 20°C is at 0.1. I suggest to use 0.1 and perhaps tuned it later. Perhaps Soenked tuned it already explaining why it is fixed at 2.

  1. NO production from chemodenitrification. This is based on Kesik et al., 2005, Biogeosciences but Kesik et al. used NO2 concentration and not NO3 production as it is done in OCN. In parallel, there is a modification of a multiplicative constant from 300 (Kesik) to 30 (OCN). See the line in the code of OCN here. I don't know how this is reliable ?
  1. Guenet

Use NO3 instead of NO2 is ok because NO3 is the base product for denitrification. For the constant I also suggest ti use original constant and perhaps tune it later.

  1. NO production and N2O production. In OCN, NO production and N2O production are deduced from the NO3 production based on the calculation of the nitrification rate (see above). See the line in the code of OCN here. I don't know if this is correct ?
  1. Guenet

Theoretically yes

  1. Relative growth rate of Nox denitrifiers. One uses a parameter defined as the Half Saturation of N oxydes (kgN/m3) from Table 4 of Li et al., 2000. It is set to 0.083 in Li et al. and OCN uses the value 0.087. We keep the original value. It is also not clear if the unit of this parameter are kgN per m3 of soil or per m3 of solution. In OCN, when converting from (kgN m-3) to (gN m-2) we multiply by "dpu_cste*mx_eau_eau" (see here. I don't know if this is correct. If it is per m3 of solution one should at least consider that soil is not necessary at the field capacity (ie. dpu_cste*mx_eau_eau*soilhum).
  1. Guenet

From what I understood the parameter mx_eau_eau is the field capacity??? I think it is ok like it is.

  1. Relative growth rate of Nox denitrifiers (2). In OCN, the term mu_nox(max) is missing in the equation that defines the relative growth rate of total denitrifiers (see eq. 2 of Table 4 of Li et al., 2000). See here. In addition, in OCN, the Relative growth rate of Nox denitrifiers is ranged between 0.0005*som(:,iactive,m,icarbon) and 0.25 * som(:,iactive,m,icarbon)). No clear justification. This is not kept so far.
  1. Guenet

I think that the term mu_nox(max) must be added in the equations. For the range of growth rate, it is probably a range fixed by Soenke to stabilize the code. It must be confirmed by Soenke

  1. NO3 consumption by denitrification. This is based on Eq. 4 Table 4 of Li et al., 2000. In OCN (here), multiplication by 0.1 of the NO3 consumption. There is no justification. This is not kept so far.
  1. Guenet

I agree it was probably tunning...

  1. denitrifier bacterial population change. This is based on Eq. 3 of Table 4 Li et al. (2000). In OCN, there is only the denitrifier bact population change that is defined, not the population itself. And the bacterial population change is used in place of the bacterial population in the calculation of the production of NO3, NOx, N2O by denitrification. here. I don't know how it may work.
  1. Guenet

It implicitely assumes that the timestep of th model is sufficiently high to cover a total regeneration of the bacterial population. This is a strong assumption since the stomate_soilcarbon time step if 30min which is quite short to renew an entire bacterial population in soil. Must be corrected.

  1. Vmax of nitrogen uptake by plants. In OCN, the same values are used both for uptake of NH4+ and NO3-. See p. 3 of the SM of Zaehle & Friend, 2010: "As a first approximation average values for vmax, kNmin and KNmin are assumed for all PFTs (Table S1), and for both ammonium and nitrate". However based on the two papers of Kronzucker et al. (1995, 1996), it seems that vmax should be much higher for NH4+ than for NO3- . We still use the same here for both NH4+ and NO3- as in OCN.
  1. Guenet

I agree debates are still in progress and no consensus exists for the moment.

  1. Vmax of nitrogen uptake by plants (2). I can not relate the value of vmax in OCN expressed in (umol (g DryWeight_root)-1 h-1) (vmax=3 here) to the one reported in Table S1 of Zaehle & Friend, 2010 (vmax=5.14 ugN (g-1C) d-1). The use of the conv_fac conversion factor used in OCN (here) should help to convert (umol (g dryWeight_root)-1 h-1) in (gN (g-1C) tstep-1). conv_fac is defined as 24. * dt / 2. / 1000000. * 14 with:
    • 24 conversion of hour to day
    • dt conversion of day to dt
    • 1/2 conversion of g(dryWeight) to gC
    • 1000000. conversion of ug to g
    • 14 conversion of umol to ugN
    So using conv_fac, vmax expressed in ugN (g-1C) d-1 should be equal to 3*24./2.*14. = 504 ugN (gC)-1 d-1 not 5.14
  1. Guenet

I agree with Nicolas I even did not understand how he relates parameters from Kronzucker et al. (1995, 1996) to 3 or 5.14, in these papers Vmax ranges between 0.11 and 2.44.

  1. Vmax of nitrogen uptake by plants (3). I think there is an error in the conversion factor conv_fac (here) from (gDW)-1 to (gC)-1. When expressed per gC of root, the N uptake should be twice more than the one expressed per gDW of root, not twice less. So one should multiply by 2., not divide by 2. And so vmax should be equal to 2016 ug (gC)-1 d-1 (not 504).
  1. Guenet

I agree, must be corrected

  1. N uptake by plants. See eq. (8) p. 3 of SM of Zaehle & Friend, 2010. In OCN, there was a multiplicative factor "2" that I can not explain (see here). It may partly compensate (half compensation) the error mentioned above about conv_fac.
  1. Guenet

I agree, must be corrected

  1. Coefficient K_N_min. It corresponds to the [NH4+] (resp. [NO3-]) for which the Nuptake equals vmax/2. Kronzucker, 1995 reports values that range between 20 and 40 umol for NH4+ uptake. OCN seems to use 30 umol for both NH4+ and NO3-, because the value used in the code of OCN expressed in (gN m-2) is 0.84 (see here). In addition, in Kronzucker, 1995 and 1996, the concentrations are always expressed in umol. There is no clear reference about the standard volume it is related to. I assumed it is litter.
  1. Conversion factor from (umol per litter) to (gN m-2) for K_N_min. I assumed conv_fac_concent equals to 14 * 1e3 * 1e-6 * 2 with
    • 14 : molar mass for N (gN mol-1)
    • 103 : conversion factor (dm3 to m3)
    • 10-6 : conversion factor (ug to g)
    • 2 : m3 per m2 of soil
    I wonder why it assumes 2 m3 per m2 of soil. The depth of the soil is 2 meter but it doesn't mean that all the column contains only water, there is also soil, no ? The question is : what is the volume that is considered for the concentration of NH4+ and NO3-. Is it a volume of soil or of solution ? If it is a volume of solution, I would suggest to multiply by a factor corresponding to the relative volume of water within the soil (like soilhum). Not done yet.
  1. Coefficient low_K_N_min. See eq. 8 of SM of Zaehle et al. (2010) and Table S1. In table S1, it is defined as the "Rate of N uptake not associated with Michaelis- Menten Kinetics" and the given value is 0.05 (-). It is mentioned also (unitless) but to my opinion it should have the same unit that 1/K_N_min or 1/N_min, so ((gN m-2)-1). So far, I cannot relate the value of low_K_N_min (0.05) to any reference, especially Kronzucker (1996). If I refer to Figure 4 of Kronzucker showing the NH4+ influx as a function of NH4+ concentration, the slope of the relationship could be used to define Vmax*low_K_N_min.
    • For a concentration of NH4+ of 50 mmol, the influx equals 35 umol g-1 h-1.
    • For a concentration of NH4+ of 20 mmol, the influx equals 17 umol g-1 h-1. So the slope can be written as
    • slope = 10-3 * (35 - 17) / (50 - 20) = 10-3 * 18 / 30 = 0.0006 g-1 h-1 and consequently
    • low_K_N_min = slope / Vmax = 0.0006 / 3 = 0.0002 (umol)-1

Using the Conversion factor from (umol per litter) to (gN m-2) conv_fac_concent = 14 * 1e3 * 1e-6 * 2, one should get low_K_N_min = 0.0002 / ( 14 * 1e3 * 1e-6 * 2 ) = 0.007 ((gN m-2)-1) The value of 0.007 does not match with the one in OCN (0.05, (see here)). This needs to be clarified

  1. N uptake by plants (2). In eq. 8 of SM of Zaehle et al. (2010) I think there is an error. It should not be (Nmin X KNmin) but (Nmin + KNmin). The source code of OCN is correct (see here).
  1. Guenet

I agree it is based on Michaelis Menten equation.

  1. Loss of NH4 due to volatilisation of NH3. See Li et al. 1992, JGR, Table 4. It's used the current dissociation of [NH3] to [NH4+] (see Table 4 and Appendix A of Zhang et al. 2002):
    log(K_NH4) - log(K_H20) = log(NH4/NH3) + pH
    See also formula in "DISSOCIATION CONSTANTS OF INORGANIC ACIDS AND BASES" pdf file, where we have the definition and values of
    • pK_H2O = -log(K_H2O) = 14
    • pk_NH4 = -log(K_NH4) = 9.25
    This leads to : pK_H2O - pK_NH4 = log([NH4+]/[NH3]) + pH or [NH4+]/[NH3] = 10(pK_H2O - pK_NH4 - pH) = 10(4.75-pH)

In OCN, one makes use of frac_nh3, that is assumed to be the NH3/NH4 ratio. It is defined here as:

frac_nh3(:) = 10.0**(4.25-pH(:)) / (1. + 10.0**(4.25-pH(:)))

I have several interrogations about the equation and value used in OCN. But I have also concerns about the formulation of Li et al. ...

  1. The formulation of Li et al. doesn't match with the formulas in "DISSOCIATION CONSTANTS OF INORGANIC ACIDS AND BASES" (here) or with the formulas of To my opinion, one should replace log(K_NH4+) by log(K_NH3) in the formulation of Li et al. With the relationship pKa + pKb = pKwater (where a and b are acid and base) this leads to [NH4+]/[NH3] = 10(pK_NH4 - pH) = 10(9.25 - pH)
  2. Wether I'm right or not about a., I don't understand the value used in OCN (4.25). It should be either 4.75 or 9.25 but 4.25 looks strange
  3. OCN used a formulation for [NH3]/[NH4+] of the type: X/(1+X) with X=[NH3]/[NH4+].

This leads to X/(1+X)=([NH3]/[NH4+])/(([NH4+]/[NH4+])+([NH3]/[NH4+])) or X/(1+X) = [NH3] / ( [NH3] + [NH4+] ) This means that the value stored in soil_n_min(:,:,iammonium) corresponds to the total N of both [NH4+] and [NH3]. This makes sense to my opinion, but I wonder if one should not account for this partitioning between [NH4+] and [NH3] in other processes. To check.

  1. The X value should relate to [NH3]/[NH4+] but to my opinion the X value used in the equation in OCN corresponds to [NH4+]/[NH3]. Is this a bug ?
  1. Guenet

I do not understand it this way for me X is [NH3]/[NH4+] in OCN.

In conclusion, I propose the formulation

frac_nh3(:) = 10.0**(pH(:)-pk_NH4) / (1. + 10.0**(pH(:)-pk_NH4)) 
  1. Guenet

I agree formulation in Li et al and in OCN are a bit strange. But when calculating frac_nh3 I obtained:

frac_nh3(:) = 10.0**(pk_NH4-pH(:)) / (1. + 10.0**(pk_NH4-pH(:))) 

We must check that together

  1. Reduction of the ammonia volatilization. See here. This seems a patch added to OCN in order to (as mentioned in OCN) reduced emissions at low concentration (problem of only one soil layer). This is not activated yet but it is kept as a comment.
  1. Guenet

I do not understand why this patch is needed must be clarified with Soenke

  1. Emission of geseous species. In OCN (here for instance), one used formulations of the type
    emission = d_ox(:) * soil_n_min(:,m,inox) * (0.13-0.079*clay(:)) * dt / z_decomp
    It should have the units of d_ox * soil_n_min * dt / z_decomp

or so, m2 day-1 * gN m-2 * day / m = gN / m which is not homogeneous with the unit expected (gN m-2)

To my opinion, one should not use soil_n_min (gN m-2) but a volumetric concentration (gN m-3), but I'm not clear what is the appropriate volume to consider (volume of soil, air-filled porosity, ...)

  1. Guenet

I agree soil_n_min must be converted in concentration. Ideally we should use the concentration in the soil atmosphere (Field capacity - soil moisture) but in ORCHIDEE we have almost no chance to represent very well the volume of the soil atmosphere. So we could simplify and use soil volume.

  1. Update pools of nitrogen in the soil. See here. To my opinion, for a better consistency, I would recommand to consider the leaching separately when calculating the ammonium and nitrate budget. Leaching is calculated from sechiba. It might be better to remove leaching at the top of the routine especially due to the later calculation of NH4+ and NO3- concentration that will vary with the soil water content. Let's imagine that from one time step to another, the change in soil water content is only due to leaching. We don't want that the NH4+ and NO3- concentration vary from one time step to the other. The best way to avoid this is to remove first the leaching from the NH4+ and NO3- pools. This is not done yet.
  1. Guenet

I think it is ok like this because it considers only N leaching which of course depend on soil water content but in this case it is a flux of N.

  1. Additional general comments. From my reading of the code of OCN, it appears that there are at least 3 processes/calculations for which we really need to be careful:
    1. The use of the anaerobic balloon. We need to check if the fraction anvf is used in the relevant equations or not.
    2. The use of reference depth especially for the calculation of the different emissions. Is z_decomp the most appropriate reference depth ? How this depth should be related to the depth of the soil we consider in the N-related processes (and the parameter dpu_cste ?
    3. The way we calculate concentrations in OCN. Are those concentrations always defined per volume of solution or not ? If os, are we sure that we account for the current water content in the soil (by using shumdiag for instance) ?
  1. Guenet

Sensitivy tests that might be useful

  1. z_decomp
  2. Vmax uptake
  3. a and b parameters to calculate anvf (related to point 5)
  4. The factor 2 here related to point 8.
  5. The factor 30 here related to point 9.

N in photosynthesis : module diffuco

Sönke Zaehle implemented the scheme of Friend and Kiang (2005, here) that accounts for partioning between diffuse and direct light. This scheme is named cexchange and is implemented in a routine named diffuco_trans_cexchange. The former scheme used in ORCHIDEE is still coded in the routine diffuco_trans_co2.
In both schemes, the impact of the leaf N on the photosynthesis is accounted for, but in different manner.

  • In diffuco_trans_cexchange, the impact of leaf N on photosynthesis is based on the former work of Friend (2001, appendix 2, here) that is itself based on the work of Kull and Kruijt (1998, here).
    In this scheme, one assume that the leaf N impacts on Vmax, Jmax and the effective quantum efficiency of the leaf for CO2 uptake (the alpha parameter). The former impact is directly related to the concentration in Chlorophyl which is function of the N concentration (see below).
    As in Friend and Kiang (2005, eq. 2 and paragraph above, here), the canopy N profile follows a negative exponential decline with depth, with an extinction coefficient (0.11) fitted to the tropical rain forest observations of Carswell et al. (2000). In order to conserve the leaf N concentration as calculated for the overall canopy, this tends to define a leaf N concentration at the top of the canopy n0 as
    ! n0        : nitrogen concentration in the top layer  
    ! ntot      : total Canopy N               g/m2[ground]
    n0(iainia) = ntot(iainia) * kN / (1. - EXP( -kN * lai(iainia,jv) )) 
    with kN=0.11
    In addition, as in Friend and Kiang, 2005, The profile of the chlorophyll/N ratio is fitted to data presented by Kull and Kruijt (1998):

n3 = 6 - 3.6exp(-0.7Lc) , (2)

where n3 is the ratio [Chl]/[N] and has units of umol(Chl) g(N), and Lc is cumulative LAI from the top of the canopy.

Jmax (umol e- m-2 s-1) is written as:
Jmax = a * n1 * N
a, the number of electrons required to fix one molecule of CO2
n1, a constant that equals 0.12 umol [CO2] (mmol N)-1 s-1
and N the leaf N content (mmol N m-2)

Vcmax (umol CO2 m-2 s-1) is written as:
Vcmax = n2 * N
n2, a constant that equals 0.23 umol [CO2] (mmol N)-1 s-1

Two comments on diffuco_trans_cexchange:

1/ When we calculate the assimalation per canopy layer - contrary to what is done in diffuco_trans_co2, where the thickness of each layer exponentially increases as long as we go deep in the canopy - here in diffuco_trans_cexchange the tickness of the layers is fixed and equals 0.5 (expressed in LAI unit, m2 m-2, variable dlai in the code). Due to the non-linearity of many processes involveld in the photosynthesis scheme (N profile, light profile,...), it is strange to me to consider fixed thickness ... ?

2/ The solution that is proposed by Kull and Kruijt (1998) and that is implemented in OCN (cexchange) assumes that Ci (the intercellular CO2 concentration is known). So there is no attempt to solve jointly A (the assimilation), Ci and gs (the stomatal conductance). I don't know how we could keep the analytical solution of Yin et al. (2009) with the formulation proposed by Kull and Kruijt.

3/ It seems that the N concentration involved in the calculation of Vcmax, Jmax and quantum efficiency in the paper of Kull and Kruijt (named Np) corresponds to the leaf photosynthetic nitrogen. I don't think that Sönke really care of this in OCN (he uses the total leaf N content, to my opinion).

  • In diffuco_trans_co2, the leaf N impacts 'only' on Vcmax and Jmax based on the work of Friend et al. (1997, eq. 46 and 47, here). See here
    The factor impacting Vcmax and Jmax corresponds to the fraction of leaf N present in RubB relatively to the reference fraction. It is a linear function of leaf N content with the following two equations:
    f_Rub + 12.5 f_Chl + f_other = 1 (eq. 46)
    and f_other = a0 - 71.4*N
    where f_Rub, f_chl and f_other are the fraction of leaf N, in RubP, Chlorophyl and other pools respectively and N the leaf N content (gN m-2 ? kgN m-2 ? )

Some comments on the way the N limitation is accounted for :

1/ a comment of Sönke: N effect is fraction in Rubisco (relative to normal) times leaf N relative to normal. It should be based on true calculus, but results with BIOME-BGC/Hybrid formulation are not realistic - don't yet understand the cause of the error.

2/ The formulation used in stomate_vmax is done for the entire canopy using biomass(ileaf,Nitrogen). The inferred scaling factor that accounts for the N-limitation (scal) is then passed to diffuco_trans_co2 where it also accounts for a N-reduction within the canopy as it is done in the trunk version of ORCHIDEE. I think it will be better to account for the N profile as done in diffuco_trans_cexchange and to recalculate the scal factor for each layer.

  • Yin et al. (2009) defines also some relationships between Jmax, Vcmax and a parameter that we can relate to the effective quantum efficiency. See here
    Vcmax = 4.36 + 30.40 * N
    Jmax = 5.75 + 99.38 * N
    and k2 = 0.205 + 0.044 * N
    where Vcmax is in (umol m-2 s-1), Jmax in (umol e- m-2 s-1), and N is the total leaf N content (in g m-2)

1/ How the parameter values of the relationships between Vcmax, Jmax, k2 on one side, and N on the other side are reliable to the parameter values from Kull and Kruijt.
*Vcmax: Conversion from (gN m-2) to (mmolN m-2) is 1000/14. So the param 30.40 expressed in (umol[CO2] s-1 per g of N), gets the value 30.40*14/1000 (0.42) when expressed in (umol [CO2] s-1 per mmol of N). This is to compare to 0.23 (umol [CO2] s-1 per mmol of N) from Kull and Kruijt : 2 times more.
*Jmax: The param 99.38 (umol e- s-1 per g of N) gets the values 99.38*14/1000 so 1.39 umol e-1 s-1 per mol of N. To compare to 0.48 umol e-1 s-1 per mol of N (ie 0.12 x 4) in Kull and Kruijt paper.
*k2. In Yin et al. (2009), k2 is estimated to be equal to 0.205 + 0.44 x N mol e- (mol photon)-1 where N is expressed in gN m-2 (or 0.205 + 0.44*14/1000 x N if N is expressed in mmol of N). In Kull and Kruijt, k2 is to compare to 4 * alpha * (1-exp(-ka x Chl)) (eq. 8 and 9) where Chl = n3 x Np (eq. 10) with n3 a constant that we assume to be equal to 3 (see fig. 6) and ka a constant equal to 0.0055 (table 1) and alpha to 0.08

  • kN value. S. Zaehle uses 0.11 (from Carswell et al., 2000). It seems well established that kN is lower than kLAI (see paper of Dewar et al., 2012, where they used kN=0.18 (Table 3).

N in stomate component


  • soil_n_min is declared in OCN with a dimension nelements. It should be on nnspec. This has been corrected in the merge. Same comment for variable named dilu_sin.


  • definition of 2 variables. One for constraining the establishment by size of vegetation (d_ind_c), the other for constraining the establishment by available nutrients (d_ind_n). They are both set to the value of d_ind. This is useless or there is a biger problem ..
  • In OCN, the following block of code fill all the new biomass into the labile pool
     ! establishment into existing population, C flows
                 bm_new(:) = total_bm_sapl(:,icarbon) * biomass(:,j,k,icarbon) / total_bm_c(:)
                 biomass(:,j,ilabile,icarbon) = biomass(:,j,ilabile,icarbon) + &

We replace ilabile by k in order to fill all the biomass pools and not only the labile one.

  • In OCN (rev 19) this block code appears twice.
           DO k = 1, nparts
                 total_bm_sapl(:,icarbon) = total_bm_sapl(:,icarbon) + & 
                      bm_sapl(j,k,icarbon) * d_ind(:,j) / vn(:)
                 total_bm_sapl(:,initrogen) = total_bm_sapl(:,initrogen) + &
                      bm_sapl(j,k,initrogen) * d_ind(:,j)  / vn(:)
    The first occurance is useless. It is the same in the trunk. In OCN, it is problematic because we limit total_bm_sapl(:,initrogen) to the soil_n_min only after the first block of initialization. And consequently, this limitation is not accounted for, in the rest of the code ... This is correct in the merge version
  • We modify the following block of code :
    estab_rate_max_tree(:) = estab_max_tree * factor(:) * nstress_season(:,j) 
                    WHERE(nstress_season(:,j) .LE.0.11)
                       estab_rate_max_tree(:)=MAX( estab_rate_max_tree(:), mortality(:,j))
    estab_rate_max_tree(:) = estab_max_tree * factor(:) * MAX(0.11, nstress_season(:,j)) 


  • In the trunk version, this block of code looks strange:
                 co2_to_bm(:,j) = &
                      co2_to_bm(:,j) / dt * &
                      ( biomass(:,j,ileaf,icarbon) + biomass(:,j,isapabove,icarbon) + &
                      biomass(:,j,isapbelow,icarbon) + biomass(:,j,iheartabove,icarbon) + &
                      biomass(:,j,iheartbelow,icarbon) + biomass(:,j,iroot,icarbon) + &
                      biomass(:,j,ifruit,icarbon) + biomass(:,j,icarbres,icarbon) )
    At least it differs from OCN code.


  • In OCN, there is an option that assumes that root turnover is independant of the phenology. See the "rtp" parameter. We do not assume this option in the new version.
  • Section 6.2 An additional condition has been added in OCN
                 WHERE ( ( biomass(:,j,ileaf,icarbon) .GT. 0.0 ) .AND. senescence(:,j) .AND. &
                         ( ( biomass(:,j,ileaf,icarbon) .LT. (pheno_crit%lai_initmin(j) / 2.)/sla(j) ) &
                            .OR. (gpp_week(:,j).LT.aut_resp(:,j).AND.leaf_meanage(:,j) .GT.30.) ) )

It is not accounted for in the current version.

  • recycle_leaf is a parameter that defines the fraction of leaf N that is recycled when leaves are senescent. It is defined as recycle_leaf_max * nparam_scal with recycle_leaf_max, a parameter set at 0.5 and nparam_scal, a parameter used for sensitivity analysis which is by default set to 1. In parallel, in Table 1 of the Supplementary Materials of Zaehle et al., 2010, it is written that recycle_leaf_max is equal to 0.5. recycle_root_max, to 0.2


In OCN, drainage is used for removing part of the organic and inorganic N in soils. what is used, is a mean drainage for all the mesh. There is no distinction between the different soil water columns on which water balance is calculated (13 for choisnel or 3 for Cwrr). We correct this.


I don't understand the original formulation in OCN that defines the flows of newly formed litter. See below

       ! new litter nitrogen is partitioned to metabolic and structural so as to preserve
       ! a fixed ratio of C/N between the matter flows into the litter pools
       ! aboveground nitrogen litter
       litter_n(:) = bm_to_litter(:,j,ileaf,initrogen)  + bm_to_litter(:,j,ifruit,initrogen) + &
            bm_to_litter(:,j,icarbres,initrogen) + bm_to_litter(:,j,ilabile,initrogen) + & 
            turnover(:,j,ileaf,initrogen)  + turnover(:,j,ifruit,initrogen) + & 
            turnover(:,j,icarbres,initrogen) + turnover(:,j,ilabile,initrogen)
          litter_inc(:,imetabolic,j,iabove,initrogen) = &
               litter_n(:) / ( 1. + litter_inc(:,istructural,j,iabove,icarbon)/(5.*litter_inc(:,imetabolic,j,iabove,icarbon)))
       litter_inc(:,istructural,j,iabove,initrogen)=litter_n(:) - litter_inc(:,imetabolic,j,iabove,initrogen)

In OCN, there is a Nitrogen limitation on litter C decomposition. We do not account for here.


Test phase of the N-version

This action started in September 2014 from the revision r2255 of the MERGE-OCN branch. From this version, several bugs have been fixed. They have been commited in revisions r2558 and r2682.

Here below are described the main bugs fixed in r2558 and r2682.

Revision r2558

  • src_parameters/constantes.f90 (15 diffs) => Correction of many parameters initialization
  • src_parameters/constantes_mtc.f90 (2 diffs) => Correction of parameters initialization
  • src_parameters/pft_parameters.f90 (5 diffs) => Correction of parameters initialization
  • src_sechiba/hydrol.f90 (3 diffs) => Water volume (totwater) is now an output variable of the subroutine hydrol_main
  • src_sechiba/hydrolc.f90 (3 diffs) => Water volume (totwater)is now an output variable of the subroutine hydrol_main
  • src_sechiba/intersurf.f90 (7 diffs) => Writting of all the instructions aiming at defining the variables related to the N cycle that will be output.
  • src_sechiba/sechiba.f90 (10 diffs) => totwater is a variable that is transmitted to slowproc_main
  • src_sechiba/slowproc.f90 (6 diffs) => totwater is a variable that is transmitted to stomate_main + dummy but non-null initialization of the N-inputs
  • src_stomate/lpj_cover.f90 (1 diff) => fix some incorrect use of variables
  • src_stomate/lpj_gap.f90 (19 diffs) => The dimension on the element (carbon or nitrogen) was missing for the following variables: circ_class_biomass_new, total_biomass_new, total_biomass_old
  • src_stomate/stomate.f90 (11 diffs) => totwater variable is now considered. Two variables (cn_leaf_season and nstress_season) were not considered in the restart (read and write). soil_n_min variable was given as an argument to the nitrogen_dynamics routine instead of n_mineralization.
  • src_stomate/stomate_data.f90 (1 diff) => Initialization of the LC paramater was not done before
  • src_stomate/stomate_growth_fun_all.f90 (15 diffs) => Several bugs fixed
  • src_stomate/stomate_growth_res_lim.f90 (2 diffs) => not considered hereafter
  • src_stomate/stomate_io.f90 (12 diffs) => Restart for soil_n_min, cn_leaf_season and nstress_season was not done correctly
  • src_stomate/stomate_lcchange.f90 (2 diffs) => Incorrect use of the LC parameter
  • src_stomate/stomate_litter.f90 (52 diffs) => n_mineralisation variable is now used in litter. Dimension over the land points (npts) was not missing before for the variable litterfrac. Surface microbial pool is now considered as in Parton (1993). Use of the som_input variable instead of soilcarbon_input variable. Use of litter_turn variable instead of litter_tau. Calculation of the CN_target is now done in litter. Bug fixed in the heterotrophic calculation.
  • src_stomate/stomate_lpj.f90 (23 diffs) => Add many histwrite instructions for outputs of N-related variables.
  • src_stomate/stomate_prescribe.f90 (9 diffs) => Calculation of the N pools of bm_sapl, circ_class_biomass and biomass were not done before.
  • src_stomate/stomate_soilcarbon.f90 (36 diffs) => In som_dynamic :surface microbial pool is now considered as an input flow from litter. CN_target is no more calculated here. Heterotrophic component from the surface microbial pool decomposition was not accounted for before. Some confusion between the slow and surface pools in the MatrixA calculation has been removed. Air pressure is in hPa not Pa. In nitrogen_dynamic : one dimension of the leaching variable was incorrectly set to nnspec instead of nionspec. soil_n_min was incorrectly impacted by immob : a "dt" was missing. Funbction ft_uptake was expected to get a temperature in Kelvin, not in degree celsius. Some 'dt' was missing in the calculation of the N-compounds emissions. Many histwrite instructions for N-related variables have been added.

Revision r2682

  • src_parameters/constantes_mtc.f90_ (3 diffs) => Associated changes consecutive to the update of the stomate_growth_fun_all subroutine.
  • src_parameters/pft_parameters.f90 (14 diffs) => Associated changes consecutive to the update of the stomate_growth_fun_all subroutine.
  • src_sechiba/intersurf.f90 (1 diff) => Associated changes consecutive to the update of the stomate_growth_fun_all subroutine.
  • src_sechiba/slowproc.f90 (1 diff) => Initialization of the silt fraction was not done before.
  • src_stomate/stomate_growth_fun_all.f90 (175 diffs) => The former version of stomate_growth_fun_all originates from an old version of the DOFOCO branch (summer 2013). In order to benefit of many bugs fixed in the DOFOCO branch since the summer 2013, I updated the stomate_growth_fun_all subroutine with the most updated version from the DOFOCO branch.
  • src_stomate/stomate_io.f90 (7 diffs) => In the restart subroutine, the variable name'carbon' was still used instead of 'som'. The dimension over the element (carbon or nitrogen) was also missing for this variable.
  • src_stomate/stomate_lpj.f90 (3 diffs)
  • src_stomate/stomate_phenology.f90 (4 diffs) => Calculation of the nitrogen pools of the biomass and bm_use_n variables were not done before.
  • src_stomate/stomate_soilcarbon.f90 (4 diffs) => Contribution to the heterotrophic respiration from the surface pool was missing.
  • src_stomate/stomate_turnover.f90 (15 diffs) => Calculation of the nitrogen pool for the turnover, circ_class_biomass and biomass variables was not done correctly.

Revision r2689

  • src_parameters/constantes.f90 (7 diffs) => missing updates related to the update of the stomate_growth_fun_all routine. Not important.
  • src_stomate/stomate.f90 (6 diffs) => leaf N content (gN per m-2 of leaf) was incorrectly calculated, without accounting for LAI (so it was expressed before per m2 of a PFT). This has been corrected here.

Version End

This branch has been updated with the trunk of ORCHIDEE rev 2740, and further developed in the branch ORCHIDEE-CN (source:branches/ORCHIDEE-CN) from June 2015.

Last modified 5 years ago Last modified on 01/22/16 09:34:57