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 15365 – NEMO

Changeset 15365


Ignore:
Timestamp:
2021-10-14T09:32:07+02:00 (3 years ago)
Author:
kingr
Message:

Updated logic to catch edge cases.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update_DepthBug/NEMOGCM/NEMO/OPA_SRC/OBS/obsinter_z1d.h90

    r15356 r15365  
    6363         z1dp = ( pobsdep(jdep)    - pdep(kkco(jdep)-1) ) 
    6464          
    65          ! Where ob is at or above top model T-point, use model top rather than extrapolate 
    66          IF ( pobsdep(jdep) <= pdep(kkco(jdep)-1) ) z1dp = 0.0_wp 
     65         ! Where both levels are masked, return a fill value 
     66         IF ( pobsmask(kkco(jdep)-1) == 0.0_wp ) .and. (pobsmask(kkco(jdep)) == 0.0_wp) THEN 
     67            pobs(jdep)  = 99999. 
     68         ELSE 
    6769          
    68          ! Where ob is at or below bottom model T-point, use model bottom rather than extrapolate 
    69          IF ( pobsdep(jdep) >= pdep(kkco(jdep)) ) z1dm = 0.0_wp 
    70  
    71          ! Where deeper level is masked, only use higher level 
    72          IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 
    73  
    74          zsum = z1dm + z1dp 
     70            ! Where upper level is masked (e.g., under ice cavity), only use deeper level 
     71            IF ( pobsmask(kkco(jdep)-1) == 0.0_wp ) z1dm = 0.0_wp 
     72 
     73            ! Where deeper level is masked (e.g., near sea bed), only use upper level 
     74            IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 
     75 
     76            ! Where ob is at or above upper level model T-point, use upper model level  
     77            ! rather than extrapolate, except where that level is masked  
     78            IF ( pobsdep(jdep) <= pdep(kkco(jdep)-1) ) .and. & 
     79            &  ( pobsmask(kkco(jdep)-1) == 0.0_wp ) ) z1dp = 0.0_wp 
     80 
     81            ! Where ob is at or below deeper level model T-point, use deeper model level 
     82            ! rather than extrapolate, except where that level is masked  
     83            IF ( pobsdep(jdep) >= pdep(kkco(jdep)) ) .and. & 
     84            &  ( pobsmask(kkco(jdep)) == 0.0_wp ) ) z1dm = 0.0_wp 
     85 
     86 
     87            zsum = z1dm + z1dp 
    7588          
    76          IF ( zsum > 0.0_wp ) THEN 
    7789            IF ( k1dint == 0 ) THEN 
    7890 
     
    97109 
    98110            ENDIF 
    99          ELSE ! take value directly from the higher model level 
    100             pobs(jdep)  = pobsk(kkco(jdep)-1) 
    101          ENDIF 
    102111      END DO 
    103112 
Note: See TracChangeset for help on using the changeset viewer.