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 13024 for utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/dommsk.F90 – NEMO

Ignore:
Timestamp:
2020-06-03T16:26:23+02:00 (4 years ago)
Author:
rblod
Message:

First version of new nesting tools merged with domaincfg, see ticket #2129

File:
1 edited

Legend:

Unmodified
Added
Removed
  • utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/dommsk.F90

    r12414 r13024  
    2626   USE domisf         ! domain: ice shelf 
    2727   USE domwri         ! domain: write the meshmask file 
     28   USE usrdef_fmask   ! user defined fmask 
    2829   USE bdy_oce        ! open boundary 
    2930   ! 
     
    5253CONTAINS 
    5354 
    54    SUBROUTINE dom_msk 
     55   SUBROUTINE dom_msk( k_top, k_bot ) 
    5556      !!--------------------------------------------------------------------- 
    5657      !!                 ***  ROUTINE dom_msk  *** 
     
    6263      !!      and ko_bot, the indices of the fist and last ocean t-levels which  
    6364      !!      are either defined in usrdef_zgr or read in zgr_read. 
    64       !!                The velocity masks (umask, vmask)  
     65      !!                The velocity masks (umask, vmask, wmask, wumask, wvmask)  
    6566      !!      are deduced from a product of the two neighboring tmask. 
    6667      !!                The vorticity mask (fmask) is deduced from tmask taking 
     
    7778      !!                due to cyclic or North Fold boundaries as well as MPP halos. 
    7879      !! 
    79       !! ** Action :   tmask, umask, vmask, wmask : land/ocean mask  
     80      !! ** Action :   tmask, umask, vmask, wmask, wumask, wvmask : land/ocean mask  
    8081      !!                         at t-, u-, v- w, wu-, and wv-points (=0. or 1.) 
    8182      !!               fmask   : land/ocean mask at f-point (=0., or =1., or  
     
    8586      !!               ssmask , ssumask, ssvmask, ssfmask : 2D ocean mask 
    8687      !!---------------------------------------------------------------------- 
     88 
     89      INTEGER, DIMENSION(:,:), INTENT(in) ::   k_top, k_bot   ! first and last ocean level 
    8790      ! 
    8891      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     
    133136     ! N.B. tmask has already the right boundary conditions since mbathy is ok 
    134137     ! 
     138!      tmask(:,:,:) = 0._wp 
     139!      DO jk = 1, jpk 
     140!         DO jj = 1, jpj 
     141!            DO ji = 1, jpi 
     142!               IF(      ( REAL( mbathy (ji,jj) - jk, wp ) + 0.1_wp >= 0._wp )         & 
     143!               &  .AND. ( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp <= 0._wp ) ) THEN 
     144!                  tmask(ji,jj,jk) = 1._wp 
     145!               END IF   
     146!            END DO 
     147!         END DO 
     148!      END DO     
     149  
     150!      IF ( ln_isfsubgl ) CALL zgr_isf_subgl 
     151 
     152      !  Ocean/land mask at t-point  (computed from ko_top and ko_bot) 
     153      ! ---------------------------- 
     154      ! 
    135155      tmask(:,:,:) = 0._wp 
    136       DO jk = 1, jpk 
     156      IF( ln_read_cfg) THEN 
    137157         DO jj = 1, jpj 
    138158            DO ji = 1, jpi 
    139                IF(      ( REAL( mbathy (ji,jj) - jk, wp ) + 0.1_wp >= 0._wp )         & 
    140                &  .AND. ( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp <= 0._wp ) ) THEN 
    141                   tmask(ji,jj,jk) = 1._wp 
    142                END IF   
     159               iktop = k_top(ji,jj) 
     160               ikbot = k_bot(ji,jj) 
     161               IF( iktop /= 0 ) THEN       ! water in the column 
     162                  tmask(ji,jj,iktop:ikbot  ) = 1._wp 
     163               ENDIF 
     164            END DO   
     165         END DO   
     166         ELSE 
     167         DO jk = 1, jpk 
     168            DO jj = 1, jpj 
     169               DO ji = 1, jpi 
     170                  IF(      ( REAL( mbathy (ji,jj) - jk, wp ) + 0.1_wp >= 0._wp )         & 
     171                  &  .AND. ( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp <= 0._wp ) ) THEN 
     172                     tmask(ji,jj,jk) = 1._wp 
     173                  END IF 
     174               END DO 
    143175            END DO 
    144176         END DO 
    145       END DO     
    146   
    147       IF ( ln_isfsubgl ) CALL zgr_isf_subgl 
     177         IF ( ln_isfsubgl ) CALL zgr_isf_subgl 
     178      ENDIF 
     179 
    148180 
    149181!SF  add here lbc_lnk: bug not still understood : cause now domain configuration is read ! 
     
    272304#if defined key_agrif  
    273305            IF( .NOT. AGRIF_Root() ) THEN  
    274                IF ((nbondi ==  1).OR.(nbondi == 2)) fmask(nlci-1 , :     ,jk) = 0.e0      ! east  
    275                IF ((nbondi == -1).OR.(nbondi == 2)) fmask(1      , :     ,jk) = 0.e0      ! west  
    276                IF ((nbondj ==  1).OR.(nbondj == 2)) fmask(:      ,nlcj-1 ,jk) = 0.e0      ! north  
    277                IF ((nbondj == -1).OR.(nbondj == 2)) fmask(:      ,1      ,jk) = 0.e0      ! south  
     306               IF(lk_east) fmask(nlci-1 , :     ,jk) = 0.e0      ! east  
     307               IF(lk_west) fmask(1      , :     ,jk) = 0.e0      ! west  
     308               IF(lk_north) fmask(:      ,nlcj-1 ,jk) = 0.e0      ! north  
     309               IF(lk_south) fmask(:      ,1      ,jk) = 0.e0      ! south  
    278310            ENDIF  
    279311#endif  
     
    287319         ! 
    288320      ENDIF 
    289       ! 
    290       ! write out mesh mask 
    291       IF ( nn_msh > 0 ) CALL dom_wri 
     321       
     322      ! User defined alteration of fmask (use to reduce ocean transport in specified straits) 
     323      ! --------------------------------  
     324      ! 
     325 
     326      CALL usr_def_fmask( cn_cfg, nn_cfg, fmask ) 
    292327      ! 
    293328   END SUBROUTINE dom_msk 
Note: See TracChangeset for help on using the changeset viewer.