Opened 2 years ago

Closed 21 months ago

#786 closed defect (fixed)

Compatibility problems between new driver and certain forcing files

Reported by: aducharne Owned by: aducharne
Priority: major Milestone: ORCHIDEE_2_2
Component: Driver files Version: trunc
Keywords: Cc:

Description

This problem was found by Agnès and Xiaoni with r7263 of branch 2.2, but it is also very likely present in the trunk and branch 3.0.

In branch 2.2, the new driver was found to work fine with the following forcing datasets including the correct attributes (cell_methods = "time:...") :

  • uncompressed 2D : CRUJRA/v2.1/twodeg; CRU-NCEP/v7.2/twodeg; CRU-NCEP/v7.2/onedeg
  • compressed in land points without contfrac variable: WFDEI_GPCC/v2/leap; CRU-NCEP/v7.2/halfdeg

BUT the simulation fails with the following files, which include correct attributes (cell_methods = "time:...") :

  • compressed in land points WITH contfrac(y,x) variable : CRUJRA/v2.1/halfdeg; CRUJRA/v2.2/halfdeg has the same structure and should also crash, but it was not tested. The old driver driver works fine with these files.

The problem occurs in src_driver_forcing_tools.f90, as shown by Debug/JobName_out_execution_error:

 Forcing file with dimensions :          720         360       67420
 Zoom forcing : lon =   -180.000000000000        180.000000000000     
 Zoom forcing : lat =   -90.0000000000000        90.0000000000000     
 nbindex_g after calling globgrd_getdomsz in orchideedriver           0
 forcing_givegrid:: nbpoint_loc=       67420
 forcing_givegrid:: nbland_loc=           0

FATAL ERROR FROM ROUTINE forcing_givegrid
 --> nbpoint_loc and nbland_loc do match
 --> The calculation of land points is not correct
 --> 

Fatal error from IOIPSL. STOP in ipslerr with code
1
srun: error: r1i1n11: task 0: Exited with exit code 1
srun: Terminating job step 609241.0
slurmstepd: error: *** STEP 609241.0 ON r1i1n11 CANCELLED AT 2021-07-29T18:51:00 ***
forrtl: error (78): process killed (SIGTERM)

Analysis by Xiaoni

When I looked at the results of CRU JRA 2deg, the variable 'compressed' in subroutine forcing_getglogrid is False. But it is True with CRU JRA 0.5 deg. This is due to different values of 'landvar_id'.

In fact the 0.5deg file has a variable 'land', while 2deg has no such variable. This is why we got different values of 'landvar_id' and 'compressed', and why we call different functions.

The 'land' variable is 1D array, with a length of land points, given by input data. The variable 'Qair' has the dimension of time x length(land) in the 0.5 deg file, but Qair has time x lat x lon in 2deg file. This is why we have to call different functions when dealing with 0.5 deg....

The calling of forcing_buildindex and forcing_reindex should be necessary in this case, which was not included in the original driver code. I am not sure yet if some extra adaptation is necessary when using these two subroutines in the case.

Conclusion

Two options seem possible: either to change the forcing files, or to change the code of forcing_tools.f90. Since the old driver manages to use compressed files with an uncompressed contfrac (which can be useful for uncompressing), it is probably better to update the code.

Change History (9)

comment:1 follow-up: Changed 2 years ago by xnwang

This problem is fixed in the recent version rev 7288 of trunk (and afterward). The most recent version of CRUJRA v2.2 0.5 degree was used in the test. It works and gives consistent simulation results.

comment:2 Changed 2 years ago by luyssaert

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

comment:3 Changed 2 years ago by aducharne

  • Milestone changed from ORCHIDEE 4.1 to ORCHIDEE 2.0
  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:4 Changed 2 years ago by jgipsl

  • Owner changed from somebody to xnwang
  • Status changed from reopened to assigned

Problem is resolved in the trunk but needs to be done in ORCHIDEE_2_2 as well.

comment:5 Changed 2 years ago by jgipsl

  • Milestone changed from ORCHIDEE 2.0 to ORCHIDEE_2_2
  • Owner changed from xnwang to aducharne

comment:6 in reply to: ↑ 1 Changed 2 years ago by aducharne

Replying to xnwang:

This problem is fixed in the recent version rev 7288 of trunk (and afterward). The most recent version of CRUJRA v2.2 0.5 degree was used in the test. It works and gives consistent simulation results.

The corresponding trunk revision is r7281

comment:7 Changed 2 years ago by aducharne

Les modifications de r7281 qui marchent dans le trunk ne suffisent pas pour la branche 2_2.
Un run test avec le nouveau driver et CRUJRA v2.1 à 0.5° plante avec ce message d'erreur, très proche de ce qui avait été noté à l'ouverture du ticket, bien que nbland_loc ne soit plus zero :

 Forcing file with dimensions :          720         360       67420
 Zoom forcing : lon =   -180.000000000000        180.000000000000
 Zoom forcing : lat =   -90.0000000000000        90.0000000000000
 nbindex_g after calling globgrd_getdomsz in orchideedriver       67230
 forcing_givegrid:: nbpoint_loc=       67420
 forcing_givegrid:: nbland_loc=       67230

FATAL ERROR FROM ROUTINE forcing_givegrid
 --> nbpoint_loc and nbland_loc do match
 --> The calculation of land points is not correct
 -->

Fatal error from IOIPSL. STOP in ipslerr with code

comment:8 Changed 21 months ago by aducharne

The latest committs proposed by Xiaoni to make the new driver work in branch 2.2 (r7364) are not enough. I've just run a test with r7427, including FG2nd configuration for the new driver and CRUJRA-2.2 :

  • this revision and config work well at two degree
  • but it does not work at half degree, with an error message again linked to the fact that the forcing files are compressed in landpoints:
  Forcing file with dimensions :          720         360       67209
 Zoom forcing : lon =   -180.000000000000        180.000000000000
 Zoom forcing : lat =   -90.0000000000000        90.0000000000000
 nbindex_g after calling globgrd_getdomsz in orchideedriver           0
 forcing_givegrid:: nbpoint_loc=       67209
 forcing_givegrid:: nbland_loc=           0

FATAL ERROR FROM ROUTINE forcing_givegrid
 --> nbpoint_loc and nbland_loc do match
 --> The calculation of land points is not correct
 -->

Fatal error from IOIPSL. STOP in ipslerr with code
1

So we are back to the same error as reported at the beginning of this ticket.

comment:9 Changed 21 months ago by aducharne

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

The change in forcing_tools.f90 committed in r7429 (after 7281 in trunk) solves the problem in branch 2.2, which now runs with CRUJRA.2.2 at half degree.

Note that the results are not perfectly equal, however, with the old driver. A pair of runs were realized for 10 days at the beginning of January 2001. On average over land and the last 5 days (Jan 6th to Jan 10th, evapotranspiration (evap) is 3% smaller with the new driver, total runoff is 0.14% higher, owing to small differences in forcing variables (all are differents, and the largest differences are for LWdown and wind, respectively -0.035% and -0.07% smaller in ND than in OD).

Note: See TracTickets for help on using tickets.