River Routing

General Info (from pgriv.F)

 river discharge estimation coded by kei yoshimura (07/02/09)

 compute river discharge by TRIP (Oki and Sud, 1996)
    S(t+1)=S(t)*exp(-dc*dt)+(1-exp(-dc*dt))*I/dc
    O=(S(t+1)-S(t))/dt+I
    S:river storage 
    O:river discharge
    I:input to the flow (inflow from upstream and total runoff 
      accumulated in a grid)
    dc=v/l (v: flow velocity, l: flowpath length)

    input runoff are taken from LSM and output river discharge etc.
    are written to riv.ftXX in grib format.

 variables:
    gdriv: river storage [kg/m/m]
    rflow: river discharge [kg/s]
    imap : flow direction (0:sea, 9:rivermouth)
          8  1  2
          7  *  3
          6  5  4
    roff : converted runoff [kg/m/m/s]

 initial and restart file:
    rivi (if not exsited, all river channel storage is assumed
          to have 10mm water)

Specification

  • New codes
    • src/fcst/pgriv.F : river routine.
    • src/fcst/gau2llc.F : horizontal interpolation for a grid center.
    • src/share/gribit2.F : called from wriflx for gribing river variables.
    • src/include/comfriv.h :
    • con/flwdirGSWP2.one.Z : 1.0 degree digital river map (Oki and Sud, 1998)
    • con/flwdirGSWP2.hlf.Z : 0.5 degree digital river map (Okada, 2000)
  • Modified codes
    • src/fcst/gsmstep.F : call pgriv and write restart file (rivi)
    • src/fcst/gbphys.F : calculate total runoff (surface+subsurface)
    • src/fcst/wriflx.F : writing to riv.ftXX in grib format.
    • src/share/idsdef.F : (in share directory) define output variable IDs.
      gdriv(199), rflow(200), imap(202), roff(203)
    • configure-model : add --enable-riv1 or riv05 option.
    • install : add --enable-riv1 or riv05 option.
    • def/misc.h : add RIV1 and RIV05 definitions.
    • def/depend.h : add IO2 and JO2 definitions.
    • src/fcst/Makefile.in : add pgriv.o and gau2llc.o
    • src/share/Makefile.in : add gribit2.o
    • runscr/fcst.in : add a link from digital river map.

Step by step

1. Select river resolution (1deg or 0.5deg). Get digital river map. Make a binary (of course River version).

  • The digital river maps are on courtesy of Oki Lab, IIS, UT.

2. Soft-link the river map as "fort.93"

  • It is better to add "ln" command in gruns/runscr/fcst. Such as,
    ln -fs /home/kei/work5/GSMpsplit/flwdir.GSWP2hlf.txt              fort.93

3. Modify the main script.

  • As usual. Simulation period, initial files, boundary files, etc.etc.

4. Execution.

  • Output will be "riv.ftXX". Restart and initial files are named as "rivi".

Notes (from pgriv.F)

 Note1: 
    Calculation is in a single processor 
    (Same as I/O process. Does not influence to other routines.)
 Note2: 
    Map(s) of riverflow direction is very important.
    Currently, 1deg x 1deg version (Oki and Sud, 1996) and
    0.5deg x 0.5deg version (Okada, 1999) are available.
    The map should be placed/linked as fort.93
 Note3: 
    io_ and jo_ in paramodel.h are used as io2_ and jo2_.
    t126 (io_=360,jo_=181) and t248 (io_=720,jo_=361) are
    usable in default, but other resolution io2_ and jo2_ 
    needs to be selected manually. => in comfriv.h and gau2llc.F

    Grid coordination (1deg) is centered, such as 
    (0.5E, 89.5N)  - (0.5W, 89.5N) ; i=1,io_
                   :               ; j=1,jo_-1
    (0.5E, 89.5S)  - (0.5W, 89.5S) 
    (        dummy column        ) ; j=jo_