You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 25 Next »

FG departures for 2D-OI (2m temperature, relative humidity and snow depth analysis) are calculated at fg2obs.F90. At first, observations are sorted by OBS_RAWTABLE(jpraw_refcoord, jtotal) based on latitude and longitude (prepared at scan_cma_odb.F90).

ssa/sub/scan_cma_odb.F90
            izlat = int( zlat * 100.0_JPRB)
            izlon = int( zlon * 100.0_JPRB)
            i_refcoord = sign(1,izlat) * (abs(izlat) * 100000 + izlon)
            OBS_RAWTABLE(jpraw_refcoord, jtotal) =&
              &sign(1,i_refcoord) * (abs(i_refcoord) +&
              &1 * 0.01_JPRB)
ssa/sub/fg2obs.F90
!**   Used to compute averages (always in the same order)

call KEYSORT(irc, POBS, KLEN,key=jpraw_refcoord,transposed=.TRUE.)

The observations should be sorted in ascending order by latitude because FG departures are calculated in turn from south pole to north pole by the following code.

ssa/sub/fg2obs.F90
!**   (Lat, Lon) of observations

jlatN = NDGL + 1
LoopAllObs: do j=1,KLEN
  iflag = 0
  ZOBSLAT = POBS(kplat,j)
  ZOBSLON = mod(POBS(kplon,j) + 360.0_JPRB, 360.0_JPRB)

!**   Calculate latitudinal NW-pivot values for each observation (i.e. point#1)


  WHILE_LOOP: do while (jlatN > 0.and. ZOBSLAT > ALAT(jlatN))
    jlatN = jlatN - 1
  enddo WHILE_LOOP

However, latitude is rounded down to the second decimal place when OBS_RAWTABLE(jpraw_refcoord, jtotal) is calculated. As a results, the indexes are sometimes not in ascending order precisely and the sorting doesn't work well. The following table shows the example. ZOBSLAT should be at the latitude between ALAT(jlatN) and ALAT(jlatS) but it is not there (at south side of ALAT(jlatS)).

StationIDZOBSLATZOBSLONAltitudeALAT(jlatN)ALAT(jlatS)
3033756.32107.6233056.5521456.32728

I found there are about 200 of snow depth observations and 400 of 2m temperature observations affected by this bug (at 0 UTC on 3 Dec 2020). You can see the list of affected observations in affected_points.xlsx (note that this list comes from a 49r1 experiment including snow DA changws). In order to modify the bug, it seems to be better to be sorted in ascending order by latitude directly.

ssa/sub/fg2obs.F90
!**   Used to compute averages (always in the same order)

call KEYSORT(irc, POBS, KLEN,key=kplat,transposed=.TRUE.)
  • No labels