Opened 7 months ago

Closed 4 months ago

#822 closed defect (fixed)

Incompatibility between the routing scheme and CRUJRA /recent CRU-NCEPT forcing filesl

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

Description (last modified by jgipsl)

Le forcage CRU-JRA ne fonctionne pas avec le routage. Dans la trunk, le routage dans OOL_SEC_STO_FG2 a été desactivé. Pour garder le routage activé, il faut revenir sur CRU-NCEP v5.3.2 (les forçage CRU-NCEP plus récents sont aussi incompatibles avec le routage).

Des échanges brefs entre Philipp et JanP en octobre 2021 concluent que le plus plausible est un chgt dans le land-sea mask.

Si on compare donc (ci-dessous) deux forçages à deux degrés, CRUJRA/v2.2 avec lequel le routage ne marche pas, vs CRU-NCEP/v5.3.2 avec lequel le routage marche, on peut voir qu'ils sont tous les deux en 2D, avec un contfrac. Mais il y a une différence : CRUJRAv2.2 contient aussi la variable land.

C'étaient déjà des modifications de structure des fichiers nc, liées au traitement de contfrac et de la compression land, qui faisaient planter le nouveau driver avec les CRU-JRA, cf

C'est probablement encore la raison, pour des raisons qui cette fois doivent tenir à des IF sur contfrac et landpoints dans routing.90. A noter quand même que la variable land ne sert sans doute à rien dans les fichiers CRUJRA puisque les variables sont lon,lat...

        tstep = UNLIMITED ; // (1460 currently)
        land = 67209 ;
        y = 360 ;
        x = 720 ;
        int land(land) ;
                land:compress = "y x" ;
        float nav_lon(y, x) ;
                nav_lon:units = "degrees_east" ;
                nav_lon:long_name = "Longitude" ;
        float nav_lat(y, x) ;
                nav_lat:units = "degrees_north" ;
                nav_lat:long_name = "Latitude" ;
        float contfrac(latitude, longitude) ;
                contfrac:_FillValue = 1.e+20f ;
                contfrac:units = "1" ;
                contfrac:long_name = "Continental fraction (from ESACCI WB product)" ;
        float Tair(tstep, latitude, longitude) ;
                Tair:_FillValue = 1.e+20f ;
                Tair:units = "K" ;
                Tair:long_name = "Temperature at 2m" ;
                Tair:missing_value = 1.e+20 ;
                Tair:cell_methods = "timeplussix: instantaneous" ;

        tstep = UNLIMITED ; // (1460 currently)
        longitude = 180 ;
        latitude = 90 ;
        float nav_lon(latitude, longitude) ;
                nav_lon:units = "degrees_east" ;
                nav_lon:long_name = "Longitude" ;
        float nav_lat(latitude, longitude) ;
                nav_lat:units = "degrees_north" ;
                nav_lat:long_name = "Latitude" ;
        float Tair(tstep, latitude, longitude) ;
                Tair:long_name = "Tair" ;
                Tair:units = "K" ;
                Tair:coordinates = "lon lat tstep" ;
                Tair:missing_value = 1.e+20f ;
                Tair:_FillValue = 1.e+20f ;
        float contfrac(latitude, longitude) ;
                contfrac:long_name = "Continental fraction" ;
                contfrac:units = "1" ;
                contfrac:coordinates = "lon lat" ;
                contfrac:missing_value = 1.e+20f ;
                contfrac:_FillValue = 1.e+20f ;

Change History (7)

comment:1 Changed 7 months ago by aducharne

What I wrote above on the land variable in CRUJRA 2D (at twodeg) is WRONG, I apologize.

So, after debriefing at the weekly meeting today, the problem is rather the following: the contfrac map in CRUJRAv2.2/twodeg is larger than the one in CRU-NCEPv5.3.2/twodeg; in particular, it includes islands that were absent before, and that the halfdeg drainage direction map used for the routing must consider as ocean points.

Xiaoni has checked that CRUJRA2.2/twodeg runs with routing if you use the former contfrac.
Now, how to generalize this solution??

comment:2 Changed 7 months ago by jgipsl

  • Description modified (diff)

comment:3 Changed 6 months ago by cyue

The land-sea mask and continental fractions should in principle are independent of the climate forcing. We should think to keep them constant.

comment:4 Changed 5 months ago by bastrikov

The CRUJRA forcing is distributed within the TRENDY project at 0.5-degree resolution and contains 67209 land points. Regridding to 2-degree resolution is done with CDO commands and results in 5151 land points. The number of land points in CRUNCEPv5.3.2 is 4717. I made few tests dropping the land points in CRUJRA where continental fraction is less than a certain threshold and tested if the ORCHIDEE routing scheme works or not:

Contfrac thresholdResulting number of land pointsNumber of points present in CRUJRA but absent in CRUNCEPNumber of points filtered from CRUNCEPORCHIDEE test

These tests show that the model crash is due to the islands and/or coastal pixels with small continental fraction. For consistency reasons I suggest to impose the land-sea mask from the old CRUNCEP forcing to the resulting new CRUJRA forcing at 2-degree resolution.

The CRUJRA v2.2 two-degree forcing with imposed CRUNCEP land-sea mask is prepared here:
I made a test and this forcing works fine with the ORCHIDEE routing scheme.

comment:5 Changed 5 months ago by jgipsl

The new files with imposed land-sea mask produced by Vlad are now on the shared repository here :
(for example at obelix /home/orchideeshare/igcmg/IGCM/SRF/METEO/CRUJRA/v2.2.2)
See README file in the same folder.

Done in ORCHIDEE trunk [7538] and in ORCHIDEE_2_2 [7539]: all experiments using CRUJRA have now been updated to use these forcing data and RIVER_ROUTING=y have been put back.

Note that in ORCHIDEE_2_2, many experiements still uses CRU-NCEP.

comment:6 Changed 4 months ago by aducharne

  • Milestone changed from ORCHIDEE 4.3 to ORCHIDEE_2_2

comment:7 Changed 4 months ago by aducharne

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

In branch 2.2, r7563 updates all configs CRU-NCEP to useCRUJRA/v2.2.2 (done by Josefine).

Note: See TracTickets for help on using tickets.