wiki:DevelopmentActivities/Bugs

Version 29 (modified by ajornet, 5 years ago) (diff)

--

Current Bugs

List of bugs that need to be fixed. They are ordered by priority from the top to the bottom.

VSD merge

How to deal with already designed MICT soil layers ?

In Albert's branch, we have two possible different sets of values for soil_capa and soil_cond based on the keyword SOIL_LAYERS_DISCRE_METHOD (see constantes_soil.f90 and get_discretization_constants in thermosoil.f90).

This gives access to two different vertical discretization schemes (see thermosoil_levels). I copied all this relevant code below.

  1. Do we agree that we completely let down these two discretization schemes to get the new one (see vertical_soil_init)?
  1. I have the impression that soil_capa and soil_cond may intervene elsewhere, do we still keep the two different sets of values?

Note: this is a good opportunity to introduce unit tests.

Diffuco

Floating exception at:

! Eq. 18 of Yin et al. (2009)
Cc = ( gamma_star(icinic) * x1 + ( assimi(icinic) + Rd(icinic) ) * x2 )  &
                        / ( x1 - ( assimi(icinic) + Rd(icinic) ) )

x1, assimi are Rd are 0.

Check for:

/ccc/work/cont003/dsm/p529jorn/experiments/SECHSTOM.DGVM.10336

At coordinates latitude = 9 and longitude=101 (sea).

Forcesoil

The orchidee (r3022) can not run after one time of forcesoil, it showed a error "floating overflow"

The error can be found in this file: /home/users/yhuang/job/orchidee/test_f/oe.yfpe0f.g.nrouting.Ye.ori

And the output are all in: /home/orchidee04/yhuang/test/spinup/g/yfpe0f.g.nrouting.Ye.ori/

Reported by Ye

New Drivers

Test performance

compiling error

gmake driver met a error showed as below:

mpif90 -c -cpp -DCPP_PARA -p -g -fpe0 -traceback -fp-stack-check -ftrapuv -check bounds  -i4 -r8 -I../../../lib -module ../../../lib -I/usr/local/install/netcdf-4.3.2p/include  sechiba.f90
sechiba.f90(44): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [THERMOSOILC]
  USE thermosoilc
------^
compilation aborted for sechiba.f90 (code 1)
gmake[2]: *** [../../../lib/libsechiba.a(sechiba.o)] Error 1
gmake[2]: Leaving directory `/home/users/yhuang/modipsl/modeles/ORCHIDEE/src_sechiba'
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/home/users/yhuang/modipsl/modeles/ORCHIDEE/src_sechiba'
gmake: *** [libsechiba] Error 2

thermosoilc.f90 is just a copy of thermosoil.f90, but sechiba.f90 used module thermosoilc (at line 44 in sechiba.f90), but there is no command dealing with thermosoilc.f90 in AA_make in the same directory, I think that is why I can not use gmake driver to compile.

Reported Ye

flags consistency

Check flags consistency between VEGET_UPDATE= 1Y and IMPOSE_VEG= y.

VEGET_UPDATE= 0Y
-> Pour les crops on utilise la première carte lue.
VEGET_UPDATE= 1Y
-> On active le LUC, on lit la carte de vegétation seulement pour prendre en compte les crops qui évoluent alors ; le DGVM continue de gérer les PFTs naturels en fonction des conditions climatiques (enfin c'est ce que j'ai compris).

Il ne faut surtout pas mettre IMPOSE_VEG= y puisque si on impose la végétation elle ne va pas pouvoir évoluer en fonction du climat (je n'ai pas testé mais ce fonctionnement semble absurde, il faudrait arrêter avec un message d'erreur).

New Drivers

Test performance

River routing

Albert's personal branch (r3022) can not run for four points when RIVER_ROUTING is on, but can run for globe.

/home/orchidee04/yhuang/test/spinup/4p.nrouting/yfpe0f.yrouting.Ye.v2

Possible it is caused by the region I choose is not large enough, but it is still a bug.

Reported by Ye.

Fix on forcesoil r3050

Spitfire

Multiple floating point exceptions at reat_of_spread

There is a floating overflow exception at exp(XXXX) from lpj_spitfire.f90 -> rate_of_spread

! reaction intensity
a(:)=8.9033*(sigma(:)**(-0.7913))
WHERE (a(:).le.0.00001 .OR. bet(:).le.0.00001)
   dummy(:)=0.0
ELSEWHERE
   dummy(:)=exp(a(:)*(1.0-bet(:)))
ENDWHERE

Proposed solution: set sigma values to 10000. FAILED

     !calculate mass weighted surface-area-to-volume ratio by fuel types.
     WHERE (dead_fuel(:).gt.min_stomate)
       sigma(:)=(fuel_1hr_total(:) * sigma_1hr + &
            fuel_10hr_total(:) * sigma_10hr + &
            fuel_100hr_total(:) * sigma_100hr) / dead_fuel(:)
     ELSEWHERE
       sigma(:)=0.00001 -> 10000
     ENDWHERE

Proposed solution: check sigma instead of a. OK (Accepted by Chao and Fabienne)

! reaction intensity
a(:)=8.9033*(sigma(:)**(-0.7913))
WHERE (sigma(:).le.0.00001 .OR. bet(:).le.0.00001)
   dummy(:)=0.0
ELSEWHERE
   dummy(:)=exp(a(:)*(1.0-bet(:)))
ENDWHERE

This is not the root of the problem here. It comes from somewhere else but it triggers at this point. Proposal not applied.

Attention: the use of WHERE statement with min_stomate is a bad practice which leads to potential bugs. What if the value is negative? In this case it would be ignored.