New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12783 – NEMO

Changeset 12783


Ignore:
Timestamp:
2020-04-20T20:19:21+02:00 (4 years ago)
Author:
rrenshaw
Message:

bug fixes for profiles from https://code.metoffice.gov.uk/trac/utils/ticket/335

Location:
branches/UKMO/dev_r5518_obs_oper_update_reanalysis4/NEMOGCM/NEMO/OPA_SRC/OBS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update_reanalysis4/NEMOGCM/NEMO/OPA_SRC/OBS/obs_level_search.h90

    r7960 r12783  
    1313      !! ** Method  : Straightforward search 
    1414      !! 
    15       !! ** Action  :  
     15      !! ** Action  : Will return level associated with T-point below the obs 
     16      !!              depth, except when observation is in the top box will 
     17      !!              return level 2. Also, if obs depth greater than depth 
     18      !!              of last wet T-point (kpk-1) will return level kpk. 
    1619      !! 
    1720      !! History : 
     
    2124      !!        !  2006-10  (A. Weaver) Cleanup 
    2225      !!        !  2008-10  (K. Mogensen) Remove assumptions on grid. 
     26      !!        !  2020-04  (R. King/RJR) Add Rob's fix 
     27      !!        !            https://code.metoffice.gov.uk/trac/utils/ticket/335 
    2328      !!---------------------------------------------------------------------- 
    2429 
     
    4348      DO ji = 1, kobs  
    4449         kobsk(ji) = 1 
    45          depk: DO jk = 2, kgrd 
     50         depk: DO jk = 2, kgrd-1 
    4651            IF ( pgrddep(jk) >= pobsdep(ji) ) EXIT depk 
    4752         END DO depk 
  • branches/UKMO/dev_r5518_obs_oper_update_reanalysis4/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90

    r11461 r12783  
    1616   USE par_kind, ONLY : & ! Precision variables 
    1717      & wp    
     18   USE dom_oce            ! ocean space and time domain 
    1819   USE in_out_manager     ! I/O manager 
    1920   USE obs_profiles_def   ! Definitions for storage arrays for profiles 
     
    11001101      !!        !  2007-01  (K. Mogensen) Rewrite of parts of obs_scr 
    11011102      !!        !  2007-06  (K. Mogensen et al) Reject obs. near land. 
     1103      !!        !  2020-04  (R. King/RJR) Add Rob's fix 
     1104      !!        !            https://code.metoffice.gov.uk/trac/utils/ticket/335 
    11021105      !!---------------------------------------------------------------------- 
    11031106      !! * Modules used 
     
    11631166      REAL(KIND=wp), DIMENSION(2,2,kprofno) :: & 
    11641167         & zglam, &           ! Model longitude at grid points 
    1165          & zgphi              ! Model latitude at grid points 
     1168         & zgphi, &           ! Model latitude at grid points 
     1169         & zbathy             ! Index of deepest wet level at grid points 
    11661170      INTEGER, DIMENSION(2,2,kprofno) :: & 
    11671171         & igrdi, &           ! Grid i,j 
     
    11711175      INTEGER :: iig, ijg           ! i,j of observation on model grid point. 
    11721176      INTEGER :: jobs, jobsp, jk, ji, jj 
     1177      REAL(KIND=wp) :: maxdept, maxdepw 
    11731178 
    11741179      ! Get grid point indices 
     
    12211226      CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, plam, zglam ) 
    12221227      CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, pphi, zgphi ) 
     1228      CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, REAL(mbathy), zbathy ) 
    12231229      ! Need to know the bathy depth for each observation for sco 
    12241230      CALL obs_int_comm_3d( 2, 2, kprofno, kpi, kpj, kpk, igrdi, igrdj, fsdepw(:,:,:), & 
     
    12611267         DO jobsp = kpstart(jobs), kpend(jobs) 
    12621268 
     1269            ! Calculate max T and W depths of 2x2 grid 
     1270            maxdept=zgdept(1,1,NINT(zbathy(1,1,jobs)),jobs) 
     1271            maxdepw=zgdepw(1,1,NINT(zbathy(1,1,jobs))+1,jobs) 
     1272            DO jj = 1, 2 
     1273               DO ji = 1, 2 
     1274                  IF ( zgdept(ji,jj,NINT(zbathy(ji,jj,jobs)),jobs) > maxdept ) THEN 
     1275                     maxdept = zgdept(ji,jj,NINT(zbathy(ji,jj,jobs)),jobs) 
     1276                  END IF 
     1277                  IF ( zgdepw(ji,jj,NINT(zbathy(ji,jj,jobs))+1,jobs) > maxdepw ) THEN 
     1278                     maxdepw = zgdepw(ji,jj,NINT(zbathy(ji,jj,jobs))+1,jobs) 
     1279                  END IF 
     1280               END DO 
     1281            END DO 
     1282 
    12631283            ! Flag if the observation falls outside the model spatial domain 
    12641284            IF (       ( pobslam(jobs) < -180.         )       & 
     
    12671287               &  .OR. ( pobsphi(jobs) >   90.         )       & 
    12681288               &  .OR. ( pobsdep(jobsp) < 0.0          )       & 
    1269                &  .OR. ( pobsdep(jobsp) > gdepw_1d(kpk)) ) THEN 
     1289               &  .OR. ( pobsdep(jobsp) >= maxdepw) ) THEN 
    12701290               kobsqc(jobsp) = IBSET(kobsqc(jobsp),11) 
    12711291               kosdobs = kosdobs + 1 
     
    13341354               pobsdep(jobsp) = MINVAL(zgdept(1:2,1:2,1,jobs)) 
    13351355            ENDIF 
     1356 
     1357            ! Set observation depth equal to that of the last wet T-point 
     1358            IF ( ( pobsdep(jobsp) > maxdept ) .AND. & 
     1359               & ( pobsdep(jobsp) < maxdepw ) ) THEN 
     1360               pobsdep(jobsp) = maxdept 
     1361            ENDIF 
    13361362             
    13371363#if defined key_bdy 
Note: See TracChangeset for help on using the changeset viewer.