Opened 8 years ago
Closed 12 months ago
#223 closed enhancement (fixed)
Problem in snow albedo computation
Reported by: | maignan | Owned by: | peylin |
---|---|---|---|
Priority: | major | Milestone: | ORCHIDEE 4.2 |
Component: | Physical processes | Version: | trunc |
Keywords: | Cc: |
Description
Dan Zhu and Pascale Braconnot have reported an inconsistency in the snow albedo computation, depending on whether you're using DGVM or not.
In condveg_snow, we find:
! For vegetated surfaces fraction_veg(:) = un - totfrac_nobio(:) snowa_veg(:) = zero IF (ok_dgvm) THEN DO ji = 1, kjpindex IF ( fraction_veg(ji) .GT. min_sechiba ) THEN snowa_veg(ji) = snowa_veg(ji) + & tot_bare_soil(ji)/fraction_veg(ji) * ( snowa_aged(1)+snowa_dec(1)*agefunc_veg(ji) ) END IF END DO DO jv = 2, nvm DO ji = 1, kjpindex IF ( fraction_veg(ji) .GT. min_sechiba ) THEN snowa_veg(ji) = snowa_veg(ji) + & veget(ji,jv)/fraction_veg(ji) * ( snowa_aged(jv)+snowa_dec(jv)*agefunc_veg(ji) ) ENDIF ENDDO ENDDO ELSE DO jv = 1, nvm DO ji = 1, kjpindex IF ( fraction_veg(ji) .GT. min_sechiba ) THEN snowa_veg(ji) = snowa_veg(ji) + & veget_max(ji,jv)/fraction_veg(ji) * ( snowa_aged(jv)+snowa_dec(jv)*agefunc_veg(ji) ) ENDIF ENDDO ENDDO ENDIF
Catherine Ottlé says the right formulation is the one using tot_bare_soil and veget, meaning the ok_dgvm case.
The code should then be replaced with:
! For vegetated surfaces fraction_veg(:) = un - totfrac_nobio(:) snowa_veg(:) = zero DO ji = 1, kjpindex IF ( fraction_veg(ji) .GT. min_sechiba ) THEN snowa_veg(ji) = snowa_veg(ji) + & tot_bare_soil(ji)/fraction_veg(ji) * ( snowa_aged(1)+snowa_dec(1)*agefunc_veg(ji) ) END IF END DO DO jv = 2, nvm DO ji = 1, kjpindex IF ( fraction_veg(ji) .GT. min_sechiba ) THEN snowa_veg(ji) = snowa_veg(ji) + & veget(ji,jv)/fraction_veg(ji) * ( snowa_aged(jv)+snowa_dec(jv)*agefunc_veg(ji) ) ENDIF ENDDO ENDDO
Change History (13)
comment:1 Changed 6 years ago by jgipsl
- Owner changed from somebody to peylin
- Status changed from new to assigned
comment:2 Changed 6 years ago by jgipsl
- Milestone changed from IPSLCM6.v1 to ORCHIDEE 3.0
- Type changed from defect to enhancement
comment:3 Changed 4 years ago by jgipsl
Said during ORCH meeting today:
PP has discussed with CO, they will prepare a version with the modifications. PP will then ask AD for check before commit. PP will meet with Josefine to commit.
comment:4 Changed 4 years ago by peylin
Philippe P: we have proposed together with Catherine to use two different approaches for high vegetation covers (Trees) versus low vegetation cover (Grass, crop).
For high vegetation cover, we should keep the formulation with vegetmax as the bare soil part when there is no/few leaves (difference between veget and vegetmax) we should still consider that the "aging function" for the albedo of Tree with branches/trunk is similar to the one when there is leaves.
On the other hand, for short grass/crop vegetation, the bare soil part when there is not/few leaves should be treated as the standard bare soil fraction (veget(1)).
The code has been modified by PP for Josefine to commit.
Philippe
comment:5 Changed 4 years ago by jgipsl
Done in the trunk [6523]
comment:6 Changed 4 years ago by peylin
The Routine CONDVEG_ALBEDO has been modified to account for the proposed modifications.
The comments are:
! The new rational for the snow albedo and its dependency to snow age is (see ticket 223; PP Fevrier 2020) :
! i) Short vegetation (grass, crop): we assume that when there is no leaves (LAI=0), the snow aging is not
! impacted by the vegetation. The difference between veget and vegetmax (bare soil fraction within the PFT
! should be considered in the same way as the bare soil fraction (PFT1).
! ii) High vegetation (Tree): In this case we consider that the vegetation impacts the snow aging even when
! LAI=0 because of the trunks, branches. So these PFTs should be treated differently without any
! consideration of the bare soil fraction within the PFT.
comment:7 Changed 4 years ago by peylin
- Resolution set to fixed
- Status changed from assigned to closed
comment:8 Changed 3 years ago by nvuilsce
comment:9 Changed 3 years ago by peylin
- Resolution fixed deleted
- Status changed from closed to reopened
Following the correction on the snow albedo (for bare soil PFT), several actions are needed:
- Test the comit in branch ORCHIDEE_3 in the current Trunk
- Evaluate if the "non intuitive" fact that veget equals veget_max for PFT1 and not zero may cause some problem elsewhere in the code ?
Make these test before closing the ticket
comment:10 Changed 3 years ago by maignan
The same concerns was already expressed in #404.
comment:11 Changed 16 months ago by nvuilsce
- Milestone changed from ORCHIDEE 3.0 to ORCHIDEE 4.2
comment:12 Changed 12 months ago by xnwang
In trunk:
tot_bare_soil_notree(: ) = 0
DO ipts = 1, kjpindex
DO ivm=1,nvm
IF ( fraction_veg(ipts) .GT. min_sechiba .AND. .NOT. is_tree(ivm) ) THEN
tot_bare_soil_notree(ipts) = tot_bare_soil_notree(ipts) + veget_maipts,ivm) - veget(ipts,ivm)
In orchidee tag 3:
tot_bare_soil_notree( : ) = veget_max(:,1)
The iterration over pfts starts from 2, not from 1.
Without the modification, we compute tot_bare_soil_notree by summing over ivm from 1 to nvm, so the veget_max from baresoil is taken into account.
With the modification (to be the same as Tag3), the tot_bare_soil_notree is initialized with veg_max at bare soil. Then we compute tot_bare_notree by summing over imv from 2 to nvm. So finally tot_bare_soil_notree is computed in the same way, with or without the modification.
Some test simulations were done by applying the modifications to the trunk. Then comparisons were made on albedo results with and without modification. There is no difference in the albedo results, which confirms the above analysis of code.
comment:13 Changed 12 months ago by xnwang
- Resolution set to fixed
- Status changed from reopened to closed
The question mentioned in this ticket is clarified. The ticket can be closed. Some new issues were found while studying this ticket, which would be put into a new ticket.
Due to decision on Tuesday meeeting : The method for the case ok_dgvm=false is now used in both cases, see commit [4691].
The ticket stays open because as Catherine says above, the other method might be better but needs more tests.