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 13766 for NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2020-11-10T12:57:08+01:00 (3 years ago)
Author:
andmirek
Message:

Ticket #2475: merge with trunk rev 13688

Location:
NEMO/branches/2020/dev_12905_xios_ancil
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_12905_xios_ancil

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domzgr.F90

    r13016 r13766  
    7575      INTEGER  ::   ioptio, ibat, ios   ! local integer 
    7676      REAL(wp) ::   zrefdep             ! depth of the reference level (~10m) 
     77      REAL(wp), DIMENSION(jpi,jpj) ::   zmsk 
    7778      !!---------------------------------------------------------------------- 
    7879      ! 
     
    109110         ! 
    110111      ENDIF 
     112      ! 
     113      ! the following is mandatory 
     114      ! make sure that closed boundaries are correctly defined in k_top that will be used to compute all mask arrays 
     115      ! 
     116      zmsk(:,:) = 1._wp                                       ! default: no closed boundaries 
     117      IF( jperio == 0 .OR. jperio == 2 .OR. jperio == 3 .OR. jperio == 5 ) THEN   ! E-W closed 
     118         zmsk(  mi0(     1+nn_hls):mi1(     1+nn_hls),:) = 0._wp   ! first column of inner global domain at 0 
     119         zmsk(  mi0(jpiglo-nn_hls):mi1(jpiglo-nn_hls),:) = 0._wp   ! last  column of inner global domain at 0  
     120      ENDIF 
     121      IF( .NOT. ( jperio == 2 .OR. jperio == 7 ) ) THEN                           ! S closed 
     122         zmsk(:,mj0(     1+nn_hls):mj1(     1+nn_hls)  ) = 0._wp   ! first   line of inner global domain at 0 
     123      ENDIF 
     124      IF( jperio == 0 .OR. jperio == 1 ) THEN                                     ! N closed 
     125         zmsk(:,mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls)  ) = 0._wp   ! last    line of inner global domain at 0 
     126      ENDIF 
     127      CALL lbc_lnk( 'usrdef_zgr', zmsk, 'T', 1. )             ! set halos 
     128      k_top(:,:) = k_top(:,:) * NINT( zmsk(:,:) ) 
    111129      ! 
    112130!!gm to be remove when removing the OLD definition of e3 scale factors so that gde3w disappears 
     
    150168      ! 
    151169      !                                ! ice shelf draft and bathymetry 
    152       DO_2D_11_11 
     170      DO_2D( 1, 1, 1, 1 ) 
    153171         ikt = mikt(ji,jj) 
    154172         ikb = mbkt(ji,jj) 
     
    164182!!gm end bug 
    165183      ! 
    166       IF( nprint == 1 .AND. lwp )   THEN 
     184      IF( lwp )   THEN 
    167185         WRITE(numout,*) ' MIN val k_top   ', MINVAL(   k_top(:,:) ), ' MAX ', MAXVAL( k_top(:,:) ) 
    168186         WRITE(numout,*) ' MIN val k_bot   ', MINVAL(   k_bot(:,:) ), ' MAX ', MAXVAL( k_bot(:,:) ) 
     
    238256      CALL iom_get( inum, jpdom_unknown, 'e3w_1d'  , pe3w_1d, ldxios = lcfg_xios   ) 
    239257      ! 
    240       CALL iom_get( inum, jpdom_data, 'e3t_0'  , pe3t  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )    ! 3D coordinate 
    241       CALL iom_get( inum, jpdom_data, 'e3u_0'  , pe3u  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    242       CALL iom_get( inum, jpdom_data, 'e3v_0'  , pe3v  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    243       CALL iom_get( inum, jpdom_data, 'e3f_0'  , pe3f  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    244       CALL iom_get( inum, jpdom_data, 'e3w_0'  , pe3w  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    245       CALL iom_get( inum, jpdom_data, 'e3uw_0' , pe3uw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    246       CALL iom_get( inum, jpdom_data, 'e3vw_0' , pe3vw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     258      CALL iom_get( inum, jpdom_global, 'e3t_0'  , pe3t , cd_type = 'T', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios )    ! 3D coordinate 
     259      CALL iom_get( inum, jpdom_global, 'e3u_0'  , pe3u , cd_type = 'U', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     260      CALL iom_get( inum, jpdom_global, 'e3v_0'  , pe3v , cd_type = 'V', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     261      CALL iom_get( inum, jpdom_global, 'e3f_0'  , pe3f , cd_type = 'F', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     262      CALL iom_get( inum, jpdom_global, 'e3w_0'  , pe3w , cd_type = 'W', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     263      CALL iom_get( inum, jpdom_global, 'e3uw_0' , pe3uw, cd_type = 'U', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     264      CALL iom_get( inum, jpdom_global, 'e3vw_0' , pe3vw, cd_type = 'V', psgn = 1._wp, kfill = jpfillcopy, ldxios = lcfg_xios ) 
    247265      ! 
    248266      !                          !* depths 
     
    256274         CALL iom_get( inum, jpdom_unknown, 'gdept_1d', pdept_1d, ldxios = lcfg_xios )    
    257275         CALL iom_get( inum, jpdom_unknown, 'gdepw_1d', pdepw_1d, ldxios = lcfg_xios ) 
    258          CALL iom_get( inum, jpdom_data   , 'gdept_0' , pdept , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    259          CALL iom_get( inum, jpdom_data   , 'gdepw_0' , pdepw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     276         CALL iom_get( inum, jpdom_global , 'gdept_0' , pdept, kfill = jpfillcopy, ldxios = lcfg_xios ) 
     277         CALL iom_get( inum, jpdom_global , 'gdepw_0' , pdepw, kfill = jpfillcopy, ldxios = lcfg_xios ) 
    260278         ! 
    261279      ELSE                                !- depths computed from e3. scale factors 
     
    271289      ! 
    272290      !                          !* ocean top and bottom level 
    273       CALL iom_get( inum, jpdom_data, 'top_level'    , z2d  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )   ! 1st wet T-points (ISF) 
     291      CALL iom_get( inum, jpdom_global, 'top_level'    , z2d, ldxios = lcfg_xios  )   ! 1st wet T-points (ISF) 
    274292      k_top(:,:) = NINT( z2d(:,:) ) 
    275       CALL iom_get( inum, jpdom_data, 'bottom_level' , z2d  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )   ! last wet T-points 
     293      CALL iom_get( inum, jpdom_global, 'bottom_level' , z2d, ldxios = lcfg_xios  )   ! last wet T-points 
    276294      k_bot(:,:) = NINT( z2d(:,:) ) 
    277295      ! 
     
    318336      !                                    ! N.B.  top     k-index of W-level = mikt 
    319337      !                                    !       bottom  k-index of W-level = mbkt+1 
    320       DO_2D_10_10 
     338      DO_2D( 1, 0, 1, 0 ) 
    321339         miku(ji,jj) = MAX(  mikt(ji+1,jj  ) , mikt(ji,jj)  ) 
    322340         mikv(ji,jj) = MAX(  mikt(ji  ,jj+1) , mikt(ji,jj)  ) 
     
    327345      END_2D 
    328346      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    329       zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1. )   ;   miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    330       zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1. )   ;   mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    331       zk(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'F', 1. )   ;   mikf(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    332       ! 
    333       zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1. )   ;   mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    334       zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1. )   ;   mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     347      zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp )   ;   miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     348      zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp )   ;   mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     349      zk(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'F', 1.0_wp )   ;   mikf(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     350      ! 
     351      zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp )   ;   mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     352      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp )   ;   mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    335353      ! 
    336354   END SUBROUTINE zgr_top_bot 
Note: See TracChangeset for help on using the changeset viewer.