wiki:DevelopmentActivities/MergeHydro

Version 25 (modified by maignan, 12 years ago) (diff)

--

Merge-Hydro Branch

This version will merge the version of ORCHIDEE developed at LMD with the 11-layer hydrological scheme into the latest version of the trunk (1.9.5.2). Based on the differences between the LMD version and those from which it originates (either 1_9 or 1_9_4_1) (see the attachments), several notes have been written in order to prepare the merge. Here below are the links to these notes.

The hydrology group is : isabelle.gouttevin, jan.polcher, aducharne, aurelien.campoy, matthieu.guimberteau, gerhard.krinner, nathalie.de-noblet, catherine.ottle, pierre.brender, tao.wang, frederique.cheruy, marie-alice.foujols, patricia.cadule.
Everybody with a svn login can(since 12 april 2012) download this branch but only people in the group can commit changes.

How to download ORCHIDEE Hydrology branch for use in offline configuration

  1. Get modipsl
    > svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
    
  1. Get the ORCHIDEE TOOLS-box. You will be prompted for username and password. Use personal svn login (firstname.lastname) or old sechiba cvs login.
    > cd modipsl/util
    > svn co svn://forge.ipsl.jussieu.fr/orchidee/trunk/TOOLS
    
  2. Get the hydrology version. svn_login can be your personal svn login or sechiba
    > TOOLS/recup_my_ORCHIDEE svn_login branches/Hydrology
    

How to download ORCHIDEE Hydrology branch for use in coupled LMDZOR configuration

  1. Get modipsl
    > svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
    
  1. Modifiy in modipsl/util/mod.def to get ORCHIDEE Hydrology sources instead of default.
    In modipsl/util/mod.def change following line :
    #-C- LMDZOR_v4  ORCHIDEE                    orchidee_1_9_5   2  .   modeles
    into
    #-C- LMDZOR_v4  branches/Hydrology/ORCHIDEE HEAD             15 .  modeles
    
  1. Extract configuration LMDZOR_v4 and compile, for more information see wiki LMDZOR_v4
    cd modipsl/util
    ./model LMDZOR_v4       => you will be asked for passwd for sechiba
    ./ins_make
    cd ../config/LMDZOR_v4
    gmake
    

Notes to prepare the merge

Note on CWRR

Note on evapnu

Note on dpu

Note on flag couple

Note on logz0

Note on LAI

Note on Soil Map

Note on Interpolations

Martial notes for the merge

Testing the Merge-Hydro version

Matthieu Guimberteau: Off-line tests in the Amazon with bug corrections

Aurélien Campoy (Feb 2012) - test peformed off-line using 50 years of SAFRAN met forcing for the SIRTA site, without routing, without STOMATE : compares reasonably well with the CWRR version of ORCHIDEE before the merge

Jan Polcher (March 2012) - Off-line simulation over Europe using the WATCH forcing data set : simulation performed, to be analyzed

Nicolas Vuichard (March 2012) - off-line tests at FLUXNET sites using STOMATE : ongoing

Fabienne Maignan (Feb-May 2012) - global off-line simulation

  • forcing: ERA-Interim regular grid 0.72° 3-hourly
  • computer: LSCE/obelix*
  • 16 procs
  • CWRR + STOMATE + ROUTING
  • segmentation fault SIGSEGV here:
     Projection arrays for Slope map                      : 
     nbvmax =           16
     We will work with      1000105  points of the fine grid
     Aggregate_2d : Slope map                     
     
     aggregate_2D nbvmax =           16 max used =           16
    
    The problem is in slowproc_slope after the call to aggregate_vec:
        DO ib = 1, nbpt
          idi=1
          !-
          !- Reinfiltration coefficient due to the slope: Calculation with parameteres maxlope_ro 
          !-
          slopecoef = zero
    !@BUG SOURCE      DO WHILE ( sub_area(ib,idi) > zero ) !@END BUG SOURCE 
    !@PROPOSED CORRECTION
           DO WHILE ( sub_area(ib,idi) > zero .AND. idi .LE. nbvmax) 
    !@END PROPOSED CORRECTION
             ip = sub_index(ib,idi,1)
             jp = sub_index(ib,idi,2)
             !
             slopecoef = slopecoef + MIN(slopemap(ip,jp)/slope_noreinf, un) * sub_area(ib,idi)
             idi = idi +1
          ENDDO
    
    idi may become greater than nbvmax, which causes the segmentation fault. The problem is resolved by the correction proposed in the above code.
  • stop in hydrol_soil_infilt:
    Error in the calculation of infilt tot -4.176114610371373E-008
     k, ji, jst, mc   1.17784270216726        2.16374183793683             2394
               1  0.277241865204730
    
    FATAL ERROR FROM ROUTINE hydrol_soil_infilt
     --> We will STOP after hydrol_soil_infilt.
     -->
     -->
    
    Fatal error from IOIPSL. STOP in ipslerr with code
    
    This is caused by slightly negative values in the ERA-Interim precipitations, as already mentionned by Nicolas Vuichard. Proposed (and validated) modification in intersurf_main_2d and intersurf_main_1d:
    !@ PROPOSED MODIFICATION
        WHERE(zprecip_rain(:) .LT. 0.)
    	zprecip_rain(:)=0.		
        ENDWHERE				
    !@ END PROPOSED MODIFICATION
        !
        IF (check_INPUTS) THEN
    ...
    
  • stop in routing_findbasins:
    Why are we here and can not find a trip larger than 96
     Does this mean that the basin does not have any outflow            1 -2147483648
    
    This means that there is an invalid basin number equal to -2147483648 (integer variable bname copied from the call variable basin/basin_bx).
    Before the call to routing_findbasins there is a call to routing_getgrid, with a real to integer conversion:
    basin_bx(iloc, jloc) = NINT(basins(sub_index(ib, ip, 1), sub_index(ib,ip,2)))
    
    basins is a real variable read from the file routing.nc. The missing value is 1.e20 (equal to sechiba_undef) and NINT (1.e20) = -2147483648
    This hampers the filtering against an invalid basin number in routing_findbasins:
    IF ( basin(ip,jp) .LT. undef_int) THEN
    
    (undef_int = 999999999)
    • First test: the filter is temporarily replaced with:
      IF  (basin (ip, jp). GT. 0) THEN
      
      -> Everything is fine, no more problems encountered.
    • Second test proposed by Jan: change the unvalid value just after the reading of the basins variable in routing_basins:
          CALL flinget(fid, 'basins', iml, jml, lml, tml, 1, 1, basins)
          WHERE ( basins(:,:) .GT. undef_sechiba)	!@FM_120531
      	basins(:,:) = undef_int+1		!@FM_120531
          ENDWHERE					!@FM_120531
      
      on-going...

Frédérique Cheruy - global simulation coupled to LMDz : to be done

Attachments (8)

Download all attachments as: .zip