Opened 3 years ago

Closed 2 years ago

#418 closed task (fixed)

Carbon mass conservation issue ?

Reported by: nvuilsce Owned by: somebody
Priority: major Milestone: ORCHIDEE 2.0
Component: Biogeochemical processes Version:
Keywords: Cc:

Description

In the routine lcchange_main, on the vegetation tiles that gain area, one dilutes the carbon mass in order to account for the change in veget_max and the additional carbon that comes from the tiles that loose area
for instance, line 269 : https://forge.ipsl.jussieu.fr/orchidee/browser/trunk/ORCHIDEE/src_stomate/stomate_lcchange.f90?rev=4872#L269

This is not done exactly the same way for bm_to_litter (the flow of carbon that goes to litter):
https://forge.ipsl.jussieu.fr/orchidee/browser/trunk/ORCHIDEE/src_stomate/stomate_lcchange.f90?rev=4872#L274

I wonder why there is such difference. To my opinion, one should also mutiply bm_to_litter by veget_cov_max_old as it is done for the other varialbes. This should ensure that we conserve carbon mass.

Change History (6)

comment:1 Changed 3 years ago by bguenet

After discussion with Nicolas Viovy, Nicolas Vuichard and Bertrand Guenet we agreed that this must be corrected in the code

from

bm_to_litter(i,j,isapbelow,l) = bm_to_litter(i,j,isapbelow,l) + &
                    biomass_loss(i,isapbelow,l)*delta_veg(j) / veget_cov_max_new(i,j)
bm_to_litter(i,j,iheartbelow,l) = bm_to_litter(i,j,iheartbelow,l) + &
                     biomass_loss(i,iheartbelow,l) *delta_veg(j) / veget_cov_max_new(i,j)
bm_to_litter(i,j,iroot,l) = bm_to_litter(i,j,iroot,l) + &
                     biomass_loss(i,iroot,l)*delta_veg(j) / veget_cov_max_new(i,j)
bm_to_litter(i,j,ifruit,l) = bm_to_litter(i,j,ifruit,l) + &
                     biomass_loss(i,ifruit,l)*delta_veg(j) / veget_cov_max_new(i,j)
bm_to_litter(i,j,icarbres,l) = bm_to_litter(i,j,icarbres,l) + &
                     biomass_loss(i,icarbres,l)   *delta_veg(j) / veget_cov_max_new(i,j)
bm_to_litter(i,j,ileaf,l) = bm_to_litter(i,j,ileaf,l) + &
                     biomass_loss(i,ileaf,l)*delta_veg(j) / veget_cov_max_new(i,j)

To

bm_to_litter(i,j,isapbelow,l) = (bm_to_litter(i,j,isapbelow,l)* veget_cov_max_old(i,j) + &
                    biomass_loss(i,isapbelow,l)*delta_veg(j) )/ veget_cov_max_new(i,j)
bm_to_litter(i,j,iheartbelow,l) = (bm_to_litter(i,j,iheartbelow,l)* veget_cov_max_old(i,j) + &
                     biomass_loss(i,iheartbelow,l) *delta_veg(j) )/ veget_cov_max_new(i,j)
bm_to_litter(i,j,iroot,l) = (bm_to_litter(i,j,iroot,l)* veget_cov_max_old(i,j) + &
                     biomass_loss(i,iroot,l)*delta_veg(j) )/ veget_cov_max_new(i,j)
bm_to_litter(i,j,ifruit,l) = (bm_to_litter(i,j,ifruit,l)* veget_cov_max_old(i,j) + &
                     biomass_loss(i,ifruit,l)*delta_veg(j)) / veget_cov_max_new(i,j)
bm_to_litter(i,j,icarbres,l) = (bm_to_litter(i,j,icarbres,l)* veget_cov_max_old(i,j) + &
                     biomass_loss(i,icarbres,l)   *delta_veg(j) )/ veget_cov_max_new(i,j)
bm_to_litter(i,j,ileaf,l) = (bm_to_litter(i,j,ileaf,l)* veget_cov_max_old(i,j) + &
                     biomass_loss(i,ileaf,l)*delta_veg(j) )/ veget_cov_max_new(i,j)
Last edited 3 years ago by jgipsl (previous) (diff)

comment:2 Changed 3 years ago by jgipsl

  • Milestone changed from ORCHIDEE 3.0 to ORCHIDEE 2.0

Done in the trunk rev [5090]

comment:3 Changed 3 years ago by jgipsl

  • Resolution set to fixed
  • Status changed from new to closed

comment:4 Changed 3 years ago by jgipsl

  • Resolution fixed deleted
  • Status changed from closed to reopened

Commit [5090] is not correct according to description above. Parenthesis are missing.

comment:5 Changed 3 years ago by jgipsl

Correction on previous commit done in the trunk revision [5536]

comment:6 Changed 2 years ago by nvuilsce

  • Resolution set to fixed
  • Status changed from reopened to closed
Note: See TracTickets for help on using tickets.