Evergreen and deciduous forest fractions: inconsistencies? – in #9: CCLM

in #9: CCLM

<p> It seems that the evergreen and deciduous forest fractions, <code> for_e </code> and <code> for_d </code> , are used once with respect to the total area and once relative to the plant cover fraction. In <span class="caps"> CCLM </span> -5.0_clm9 <code> src_radiation.f90 </code> line 2352, <br/> <pre><code>zalso(i,j)= zsnow*zsnow_alb + &amp; (1._ireals-zsnow)* &amp; ( zvege*(for_e(i,j)*0.10_ireals + &amp; for_d(i,j)*0.15_ireals + &amp; (1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals)+ &amp; (1._ireals-zvege)*zalso(i,j)) </code></pre> <br/> <code> zsnow </code> is the snow cover fraction, <code> zvege </code> is the plant cover fraction. Thus, the not-snow-covered fraction of the surface is divided into plant-covered and non-plant-covered parts. The plant-covered fraction, in turn, is divided into evergreen fraction (albedo 0.1), deciduous fraction (0.15) and something else (albedo 0.2). In summary, this would indicate that <code> for_e </code> and <code> for_d </code> are relative to the plant cover fraction. </p> <p> However, some lines above (2327), we have <br/> <pre><code>zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </code></pre> <br/> Here, the plant cover fraction is not considered, thus, <code> for_e </code> and <code> for_d </code> are relative to the total grid cell. This seems contradicting to me. Do you agree? How exactly is it defined? </p> <p> Cheers <br/> Sebastian </p>

  @sebastianschubert in #74a1595

<p> It seems that the evergreen and deciduous forest fractions, <code> for_e </code> and <code> for_d </code> , are used once with respect to the total area and once relative to the plant cover fraction. In <span class="caps"> CCLM </span> -5.0_clm9 <code> src_radiation.f90 </code> line 2352, <br/> <pre><code>zalso(i,j)= zsnow*zsnow_alb + &amp; (1._ireals-zsnow)* &amp; ( zvege*(for_e(i,j)*0.10_ireals + &amp; for_d(i,j)*0.15_ireals + &amp; (1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals)+ &amp; (1._ireals-zvege)*zalso(i,j)) </code></pre> <br/> <code> zsnow </code> is the snow cover fraction, <code> zvege </code> is the plant cover fraction. Thus, the not-snow-covered fraction of the surface is divided into plant-covered and non-plant-covered parts. The plant-covered fraction, in turn, is divided into evergreen fraction (albedo 0.1), deciduous fraction (0.15) and something else (albedo 0.2). In summary, this would indicate that <code> for_e </code> and <code> for_d </code> are relative to the plant cover fraction. </p> <p> However, some lines above (2327), we have <br/> <pre><code>zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </code></pre> <br/> Here, the plant cover fraction is not considered, thus, <code> for_e </code> and <code> for_d </code> are relative to the total grid cell. This seems contradicting to me. Do you agree? How exactly is it defined? </p> <p> Cheers <br/> Sebastian </p>

Evergreen and deciduous forest fractions: inconsistencies?

It seems that the evergreen and deciduous forest fractions, for_e and for_d , are used once with respect to the total area and once relative to the plant cover fraction. In CCLM -5.0_clm9 src_radiation.f90 line 2352,

zalso(i,j)= zsnow*zsnow_alb +                                &
         (1._ireals-zsnow)*                                  &
         ( zvege*(for_e(i,j)*0.10_ireals     +               &
                  for_d(i,j)*0.15_ireals     +               &
         (1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals)+     &
         (1._ireals-zvege)*zalso(i,j))

zsnow is the snow cover fraction, zvege is the plant cover fraction. Thus, the not-snow-covered fraction of the surface is divided into plant-covered and non-plant-covered parts. The plant-covered fraction, in turn, is divided into evergreen fraction (albedo 0.1), deciduous fraction (0.15) and something else (albedo 0.2). In summary, this would indicate that for_e and for_d are relative to the plant cover fraction.

However, some lines above (2327), we have

zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j))       &
            + csalb_snow_fe * for_e(i,j)                       &
            + csalb_snow_fd * for_d(i,j)

Here, the plant cover fraction is not considered, thus, for_e and for_d are relative to the total grid cell. This seems contradicting to me. Do you agree? How exactly is it defined?

Cheers
Sebastian

View in channel
<p> In the <span class="caps"> EXTPAR </span> v4.0 documentation on page 19 it reads: <br/> <em> Values that depend on the plant cover, such as <span class="caps"> PLCOV </span> MX, <span class="caps"> PLCOV </span> MN, <span class="caps"> LAI </span> MN, <span class="caps"> LAI </span> MX, RS <span class="caps"> MIN </span> , <span class="caps"> FOR </span> E, <span class="caps"> FOR </span> D, <span class="caps"> ROOTDP </span> and z0, are weighted with the plant cover maximum in addition to the pixel area. </em> <br/> This would mean that <span class="caps"> FOR </span> _D and <span class="caps"> FOR </span> _E are relative to plant cover fraction. In that case the vegetation part of the cell is veg_part = for_e+for_d+veg_low <br/> where veg_low stands for low vegetation which has a snow free albedo of 0.20 in your first equation <br/> For the snow albedo the equation would be then <br/> <pre> zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)-veg_low(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) + csalb_snow_veg_low * veg_low(i,j) </pre> <br/> In <span class="caps"> CCLM </span> it is assumed that low vegetation has the same snow albedo as bare soil. Therefore zsalb_snow=csalb_snow_veg_low. With this assumption you get </p> <p> <pre> zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </pre> <br/> which is your second equation. </p> <p> Maybe one should define the long names in the output files more precisely: <br/> In the <span class="caps"> EXTPAR </span> output files <br/> <em> long_name = “Fraction of deciduous forest” </em> <br/> should be better defined as e.g. <br/> <em> long_name = “Fraction of deciduous forest of maximum plant cover” </em> <br/> and in the <span class="caps"> CCLM </span> output files <br/> <em> long_name = “ground fraction covered by deciduous forest” </em> <br/> should be better defined as e.g. <br/> <em> long_name = “ground fraction covered by deciduous forest weighted by maximum plant cover” </em> </p>

  @burkhardtrockel in #d17af0f

<p> In the <span class="caps"> EXTPAR </span> v4.0 documentation on page 19 it reads: <br/> <em> Values that depend on the plant cover, such as <span class="caps"> PLCOV </span> MX, <span class="caps"> PLCOV </span> MN, <span class="caps"> LAI </span> MN, <span class="caps"> LAI </span> MX, RS <span class="caps"> MIN </span> , <span class="caps"> FOR </span> E, <span class="caps"> FOR </span> D, <span class="caps"> ROOTDP </span> and z0, are weighted with the plant cover maximum in addition to the pixel area. </em> <br/> This would mean that <span class="caps"> FOR </span> _D and <span class="caps"> FOR </span> _E are relative to plant cover fraction. In that case the vegetation part of the cell is veg_part = for_e+for_d+veg_low <br/> where veg_low stands for low vegetation which has a snow free albedo of 0.20 in your first equation <br/> For the snow albedo the equation would be then <br/> <pre> zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)-veg_low(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) + csalb_snow_veg_low * veg_low(i,j) </pre> <br/> In <span class="caps"> CCLM </span> it is assumed that low vegetation has the same snow albedo as bare soil. Therefore zsalb_snow=csalb_snow_veg_low. With this assumption you get </p> <p> <pre> zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </pre> <br/> which is your second equation. </p> <p> Maybe one should define the long names in the output files more precisely: <br/> In the <span class="caps"> EXTPAR </span> output files <br/> <em> long_name = “Fraction of deciduous forest” </em> <br/> should be better defined as e.g. <br/> <em> long_name = “Fraction of deciduous forest of maximum plant cover” </em> <br/> and in the <span class="caps"> CCLM </span> output files <br/> <em> long_name = “ground fraction covered by deciduous forest” </em> <br/> should be better defined as e.g. <br/> <em> long_name = “ground fraction covered by deciduous forest weighted by maximum plant cover” </em> </p>

In the EXTPAR v4.0 documentation on page 19 it reads:
Values that depend on the plant cover, such as PLCOV MX, PLCOV MN, LAI MN, LAI MX, RS MIN , FOR E, FOR D, ROOTDP and z0, are weighted with the plant cover maximum in addition to the pixel area.
This would mean that FOR _D and FOR _E are relative to plant cover fraction. In that case the vegetation part of the cell is veg_part = for_e+for_d+veg_low
where veg_low stands for low vegetation which has a snow free albedo of 0.20 in your first equation
For the snow albedo the equation would be then

zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)-veg_low(i,j))       &
            + csalb_snow_fe * for_e(i,j)                       &
            + csalb_snow_fd * for_d(i,j)
            + csalb_snow_veg_low * veg_low(i,j)

In CCLM it is assumed that low vegetation has the same snow albedo as bare soil. Therefore zsalb_snow=csalb_snow_veg_low. With this assumption you get

zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j))       &
            + csalb_snow_fe * for_e(i,j)                       &
            + csalb_snow_fd * for_d(i,j)

which is your second equation.

Maybe one should define the long names in the output files more precisely:
In the EXTPAR output files
long_name = “Fraction of deciduous forest”
should be better defined as e.g.
long_name = “Fraction of deciduous forest of maximum plant cover”
and in the CCLM output files
long_name = “ground fraction covered by deciduous forest”
should be better defined as e.g.
long_name = “ground fraction covered by deciduous forest weighted by maximum plant cover”

<p> (Sorry, pressed submit too soon, edited the answer afterwards) </p> <p> Dear Burkhardt </p> <p> Thanks a lot for your answer. To be honest, I cannot follow your explanation completely. If you say </p> <p> &gt; veg_part = for_e+for_d+veg_low </p> <p> then the long_name “ground fraction covered by deciduous forest” seems to be more appropriate. It actually is not relative to the vegetation fraction but to the total surface area. As an example, for a vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1. This is also consistent with the equation <br/> <pre><code>zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </code></pre> </p> <p> However, I still think it is <span class="caps"> NOT </span> consistent with the other equation. Ignoring snow cover for simplicity and multiplying the brackets gives <br/> <pre><code>zalso(i,j)= zvege*for_e(i,j) *0.10_ireals + &amp; zvege*for_d(i,j) *0.15_ireals + &amp; zvege*(1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals + &amp; (1._ireals-zvege) *zalso(i,j) </code></pre> <br/> Here, all vegetation type fractions are multiplied with <code> zvege </code> , the vegetation fraction, indicating </p> <p> &gt; 1 = for_e+for_d+veg_low </p> <p> So, in <span class="caps"> CCLM </span> , we either need to introduce vegetation fraction factor in the first equation and we need to remove in the second one. </p> <p> Cheers </p>

  @sebastianschubert in #2323bf1

<p> (Sorry, pressed submit too soon, edited the answer afterwards) </p> <p> Dear Burkhardt </p> <p> Thanks a lot for your answer. To be honest, I cannot follow your explanation completely. If you say </p> <p> &gt; veg_part = for_e+for_d+veg_low </p> <p> then the long_name “ground fraction covered by deciduous forest” seems to be more appropriate. It actually is not relative to the vegetation fraction but to the total surface area. As an example, for a vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1. This is also consistent with the equation <br/> <pre><code>zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j)) &amp; + csalb_snow_fe * for_e(i,j) &amp; + csalb_snow_fd * for_d(i,j) </code></pre> </p> <p> However, I still think it is <span class="caps"> NOT </span> consistent with the other equation. Ignoring snow cover for simplicity and multiplying the brackets gives <br/> <pre><code>zalso(i,j)= zvege*for_e(i,j) *0.10_ireals + &amp; zvege*for_d(i,j) *0.15_ireals + &amp; zvege*(1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals + &amp; (1._ireals-zvege) *zalso(i,j) </code></pre> <br/> Here, all vegetation type fractions are multiplied with <code> zvege </code> , the vegetation fraction, indicating </p> <p> &gt; 1 = for_e+for_d+veg_low </p> <p> So, in <span class="caps"> CCLM </span> , we either need to introduce vegetation fraction factor in the first equation and we need to remove in the second one. </p> <p> Cheers </p>

(Sorry, pressed submit too soon, edited the answer afterwards)

Dear Burkhardt

Thanks a lot for your answer. To be honest, I cannot follow your explanation completely. If you say

> veg_part = for_e+for_d+veg_low

then the long_name “ground fraction covered by deciduous forest” seems to be more appropriate. It actually is not relative to the vegetation fraction but to the total surface area. As an example, for a vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1. This is also consistent with the equation

zsnow_alb = zsalb_snow*(1._ireals-for_e(i,j)-for_d(i,j))       &
            + csalb_snow_fe * for_e(i,j)                       &
            + csalb_snow_fd * for_d(i,j)

However, I still think it is NOT consistent with the other equation. Ignoring snow cover for simplicity and multiplying the brackets gives

zalso(i,j)= zvege*for_e(i,j)                       *0.10_ireals + &
            zvege*for_d(i,j)                       *0.15_ireals + &
            zvege*(1._ireals-for_e(i,j)-for_d(i,j))*0.20_ireals + &
            (1._ireals-zvege)                      *zalso(i,j)

Here, all vegetation type fractions are multiplied with zvege , the vegetation fraction, indicating

> 1 = for_e+for_d+veg_low

So, in CCLM , we either need to introduce vegetation fraction factor in the first equation and we need to remove in the second one.

Cheers

<p> I just looked at the <span class="caps"> EXTPAR </span> source code. As far as I understand now I have misinterpreted the sentence <br/> <em> Values that depend on the plant cover, such as <span class="caps"> PLCOV </span> MX, <span class="caps"> PLCOV </span> MN, <span class="caps"> LAI </span> MN, <span class="caps"> LAI </span> MX, RS <span class="caps"> MIN </span> , <span class="caps"> FOR </span> E, <span class="caps"> FOR </span> D, <span class="caps"> ROOTDP </span> and z0, are weighted with the plant cover maximum in addition to the pixel area. </em> <br/> This seems to hold only for <span class="caps"> GLOBECOVER </span> and there is a general maximum plant cover in a grid cell defined for this. I mixed it up with the actual plant cover which is a different thing. Therefore I think you are right and for_e and for_d are fractions of the total grid cell and thus the long_names are OK. <br/> From this the equation for zsnow_alb is clear now and it fits to your example for vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1. <br/> What the equation for also concerns I can only suspect that the programmer assumed that the fractions for for_e and for_d hold also for the vegetation part not just for the whole grid cell. <br/> Would the following be more appropriate? <br/> <pre> zalso(i,j)= zsnow*zsnow_alb + &amp; (1._ireals-zsnow)* &amp; (for_e(i,j)*0.10_ireals + &amp; for_d(i,j)*0.15_ireals + &amp; (zvege-for_e(i,j)-for_d(i,j))*0.20_ireals+ &amp; (1._ireals-zvege)*zalso(i,j)) </pre> <br/> What do you think? <br/> Anyway, at the end the meaning can only be revealed by the programmer (whom I do not know). </p>

  @burkhardtrockel in #71a884f

<p> I just looked at the <span class="caps"> EXTPAR </span> source code. As far as I understand now I have misinterpreted the sentence <br/> <em> Values that depend on the plant cover, such as <span class="caps"> PLCOV </span> MX, <span class="caps"> PLCOV </span> MN, <span class="caps"> LAI </span> MN, <span class="caps"> LAI </span> MX, RS <span class="caps"> MIN </span> , <span class="caps"> FOR </span> E, <span class="caps"> FOR </span> D, <span class="caps"> ROOTDP </span> and z0, are weighted with the plant cover maximum in addition to the pixel area. </em> <br/> This seems to hold only for <span class="caps"> GLOBECOVER </span> and there is a general maximum plant cover in a grid cell defined for this. I mixed it up with the actual plant cover which is a different thing. Therefore I think you are right and for_e and for_d are fractions of the total grid cell and thus the long_names are OK. <br/> From this the equation for zsnow_alb is clear now and it fits to your example for vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1. <br/> What the equation for also concerns I can only suspect that the programmer assumed that the fractions for for_e and for_d hold also for the vegetation part not just for the whole grid cell. <br/> Would the following be more appropriate? <br/> <pre> zalso(i,j)= zsnow*zsnow_alb + &amp; (1._ireals-zsnow)* &amp; (for_e(i,j)*0.10_ireals + &amp; for_d(i,j)*0.15_ireals + &amp; (zvege-for_e(i,j)-for_d(i,j))*0.20_ireals+ &amp; (1._ireals-zvege)*zalso(i,j)) </pre> <br/> What do you think? <br/> Anyway, at the end the meaning can only be revealed by the programmer (whom I do not know). </p>

I just looked at the EXTPAR source code. As far as I understand now I have misinterpreted the sentence
Values that depend on the plant cover, such as PLCOV MX, PLCOV MN, LAI MN, LAI MX, RS MIN , FOR E, FOR D, ROOTDP and z0, are weighted with the plant cover maximum in addition to the pixel area.
This seems to hold only for GLOBECOVER and there is a general maximum plant cover in a grid cell defined for this. I mixed it up with the actual plant cover which is a different thing. Therefore I think you are right and for_e and for_d are fractions of the total grid cell and thus the long_names are OK.
From this the equation for zsnow_alb is clear now and it fits to your example for vegetation fraction of 0.8, for_e = 0.4, for_d = 0.3 and veg_low = 0.1.
What the equation for also concerns I can only suspect that the programmer assumed that the fractions for for_e and for_d hold also for the vegetation part not just for the whole grid cell.
Would the following be more appropriate?

zalso(i,j)= zsnow*zsnow_alb +                                &
         (1._ireals-zsnow)*                                  &
         (for_e(i,j)*0.10_ireals     +                       &
          for_d(i,j)*0.15_ireals     +                       &
         (zvege-for_e(i,j)-for_d(i,j))*0.20_ireals+          &
         (1._ireals-zvege)*zalso(i,j))

What do you think?
Anyway, at the end the meaning can only be revealed by the programmer (whom I do not know).

<p> Dear Burkhardt </p> <p> Yes, exactly. The modified equation is consistent with veg_part = for_e+for_d+veg_low . </p> <p> Thanks for your help. <br/> Sebastian </p>

  @sebastianschubert in #9b72678

<p> Dear Burkhardt </p> <p> Yes, exactly. The modified equation is consistent with veg_part = for_e+for_d+veg_low . </p> <p> Thanks for your help. <br/> Sebastian </p>

Dear Burkhardt

Yes, exactly. The modified equation is consistent with veg_part = for_e+for_d+veg_low .

Thanks for your help.
Sebastian