wiki:DevelopmentActivities/Bugs

Version 37 (modified by maignan, 8 years ago) (diff)

--

Current Bugs

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

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

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).

Spitfire

Problem with LIGHTNING_FILE (r3273 01/04/2016)

In constantes.f90,

CALL getin_p('FIRE_DISABLE', disable_fire)

is done under

IF (ok_stomate) THEN

Sarah is using MICT with no stomate (OOL_SEC configuration) and she has FIRE_DISABLE=y in her param run.def, but as it is not read (ok_stomate=f), in slowproc the program does

CALL getin_p('LIGHTNING_FILE',data_filename)

and data_filename has no initial value

so it crashes.

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.

Merge Issues

The following points show the problems when merging. They need to be solved.

Revision 3059

r3059

enerbil.f90

snowflx is deleted. But In trunk it does not exist this form:

<<<<<<< .working (MICT)
      IF (SUM(snowdz(ji,:)) .GT. snowcritd_thermal .AND. ok_explicitsnow) THEN
         sum_old = netrad(ji) + sensfl_old + larsub_old + lareva_old + snowflx(ji)
      ELSE
         sum_old = netrad(ji) + sensfl_old + larsub_old + lareva_old + soilflx(ji)
      ENDIF
=======   (TRUNK)
      sum_old = netrad(ji) + sensfl_old + larsub_old + lareva_old + soilflx(ji)
>>>>>>> .merge-right.r3059
<<<<<<< .working (MICT)
IF (SUM(snowdz(ji,:)) .GT. snowcritd_thermal .AND. ok_explicitsnow) THEN
   dtheta = dt_sechiba * sum_old / (zicp(ji) * snowcap(ji) + dt_sechiba * sum_sns)
ELSE
   dtheta = dt_sechiba * sum_old / (zicp(ji) * soilcap(ji) + dt_sechiba * sum_sns)
ENDIF
=======   (TRUNK)
dtheta = dt_sechiba * sum_old / (zicp(ji) * soilcap(ji) + dt_sechiba * sum_sns)

>>>>>>> .merge-right.r3059