Opened 6 years ago
Closed 6 years ago
#389 closed defect (fixed)
Negative snownobio values
Reported by: | maignan | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | IPSLCM6.v1 |
Component: | Physical processes | Version: | trunc |
Keywords: | Cc: |
Description
JG has observed that for very small nobio fractions (<~0.002), snownobio may become negative.
This can be seen in the monitoring here:
https://vesg.ipsl.upmc.fr/thredds/fileServer/IPSLFS/igcmg/interMonitoring/set60211/index.html
The problem is observed both in forced and coupled modes. See for example:
On top some pixels in Asia/Himalaya (problems with small nobio fractions), on bottom some pixels in South America (no problem, nobio fractions are higher). Outputs are here:
/ccc/store/cont003/gencmip6/p86ghatt/IGCM_OUT/LMDZOR/PROD/ref4438/CL4.4438.L6010.ref/SRF/Analyse/TS_MO
The problem originates from this part of the code in explicitsnow.f90:
IF ( snow(ji) > snowcri ) THEN subsnownobio(ji,iice) = frac_nobio(ji,iice)*vevapsno(ji) subsnowveg(ji) = vevapsno(ji) - subsnownobio(ji,iice) ELSE IF ( frac_nobio(ji,iice) .GT. min_sechiba) THEN subsnownobio(ji,iice) = vevapsno(ji) subsnowveg(ji) = zero ELSE subsnownobio(ji,iice) = zero subsnowveg(ji) = vevapsno(ji) ENDIF ENDIF ... !! 3.2. Sublimation - was calculated before it can give us negative snow_nobio but that is OK !! Once it goes below a certain values (-maxmass_snow for instance) we should kill !! the frac_nobio(ji,iice) ! snow_nobio(ji,iice) = snow_nobio(ji,iice) - subsnownobio(ji,iice)
FM and CO have analysed the code and propose the following modified code, keeping the present structure with improved comments and adding two tests to prevent negative snownobio values:
IF ( snow(ji) > snowcri ) THEN !There is enough snow to split the sublimation demand between the nobio and vegetation parts. IF (snow_nobio(ji,iice) .GE. vevapsno(ji)) THEN !There is enough snow on the ice fraction to sustain the sublimation demand. subsnownobio(ji,iice) = frac_nobio(ji,iice)*vevapsno(ji) ELSE !There is not enough snow on the ice fraction to sustain the sublimation demand. !We take all the nobio snow and set the remaining sublimation demand on the vegetation fraction. !We do this because the nobio snow cannot deal with a too high sublimation demand, whereas the vegetation fraction can, through the subsinksoil variable (see below 2.8.1), which is taken into account in the water budget (see TWBR in hydrol.f90). subsnownobio(ji,iice) = snow_nobio(ji,iice) ENDIF subsnowveg(ji) = vevapsno(ji) - subsnownobio(ji,iice) ELSE !There is a small amount of snow. IF ( frac_nobio(ji,iice) .GT. min_sechiba) THEN !The ice fraction is not too small. In this case, we make the hypothesis that the snow is mainly on the ice fraction. IF (snow_nobio(ji,iice) .GE. vevapsno(ji)) THEN !There is enough snow on the ice fraction to sustain the sublimation demand. subsnownobio(ji,iice) = vevapsno(ji) subsnowveg(ji) = zero ELSE !There is not enough snow on the ice fraction to sustain the sublimation demand. !We take all the nobio snow and set the remaining sublimation demand on the vegetation fraction. !We do this beacuse the nobio snow cannot deal with a too high sublimation demand, whereas the vegetation fraction can, through the subsinksoil variable (see below 2.8.1), which is taken into account in the water budget (see TWBR in hydrol.f90). subsnownobio(ji,iice) = snow_nobio(ji,iice) subsnowveg(ji) = vevapsno(ji) - subsnownobio(ji,iice) ENDIF ELSE !The nobio snow fraction is too small, the vegetation fraction deals with the whole sublimation demand. subsnownobio(ji,iice) = zero subsnowveg(ji) = vevapsno(ji) ENDIF ENDIF ... !! 3.2. Sublimation - was calculated before, it cannot give us negative snow_nobio (see 2.9). snow_nobio(ji,iice) = snow_nobio(ji,iice) - subsnownobio(ji,iice)
The modified code has been tested with a global run (two-degree spatial resolution, daily outputs).
initial version (snownobio in kg/m2):
MEAN(snownobio)= -0.00553174 MAX(snownobio)= 2.52271 MIN(snownobio)= -8.49522
modified version:
MEAN(snownobio)= 0.000346666 MAX(snownobio)= 2.31415 MIN(snownobio)= 0.00000
Corresponding statistics of TWBR do not change.
Attachments (1)
Change History (2)
Changed 6 years ago by maignan
comment:1 Changed 6 years ago by jgipsl
- Resolution set to fixed
- Status changed from new to closed
Commit done in the trunk rev [4575]