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.
dommsk.patch on Ticket #1618 – Attachment – NEMO

Ticket #1618: dommsk.patch

File dommsk.patch, 4.1 KB (added by jamesharle, 9 years ago)
  • dommsk.F90

     
    2424   !!---------------------------------------------------------------------- 
    2525   USE oce             ! ocean dynamics and tracers 
    2626   USE dom_oce         ! ocean space and time domain 
     27   USE bdy_oce       
    2728   USE in_out_manager  ! I/O manager 
    2829   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2930   USE lib_mpp 
     31   USE iom 
    3032   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    3133   USE wrk_nemo        ! Memory allocation 
    3234   USE timing          ! Timing 
     
    114116      INTEGER  ::   ji, jj, jk               ! dummy loop indices 
    115117      INTEGER  ::   iif, iil, ii0, ii1, ii   ! local integers 
    116118      INTEGER  ::   ijf, ijl, ij0, ij1       !   -       - 
    117       INTEGER  ::   ios 
     119      INTEGER  ::   ios, inum 
    118120      INTEGER  ::   isrow                    ! index for ORCA1 starting row 
    119121      INTEGER , POINTER, DIMENSION(:,:) ::  imsk 
    120122      REAL(wp), POINTER, DIMENSION(:,:) ::  zwf 
    121123      !! 
    122124      NAMELIST/namlbc/ rn_shlat, ln_vorlat 
     125#if defined key_bdy  
     126      NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file,                 & 
     127         &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta,     & 
     128         &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             & 
     129         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
     130         &             cn_ice_lim, nn_ice_lim_dta,                           & 
     131         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                 & 
     132         &             ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 
     133#endif 
    123134      !!--------------------------------------------------------------------- 
    124135      ! 
    125136      IF( nn_timing == 1 )  CALL timing_start('dom_msk') 
     
    167178         END DO   
    168179      END DO   
    169180       
     181#if defined key_bdy  
     182      NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file,                 & 
     183         &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta,     & 
     184         &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             & 
     185         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
     186         &             cn_ice_lim, nn_ice_lim_dta,                           & 
     187         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                 & 
     188         &             ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 
     189 
     190      REWIND( numnam_ref )              ! Namelist nambdy in reference namelist :Unstructured open boundaries   
     191      READ  ( numnam_ref, nambdy, IOSTAT = ios, ERR = 901) 
     192903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 
     193 
     194      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
     195      READ  ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 
     196904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 
     197      IF(lwm) WRITE ( numond, nambdy ) 
     198 
     199     IF( ln_mask_file ) THEN ! correct for bdy mask 
     200         CALL iom_open( cn_mask_file, inum ) 
     201         CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 
     202         CALL iom_close( inum ) 
     203 
     204         ! Derive mask on U and V grid from mask on T grid 
     205         bdyumask(:,:) = 0.e0 
     206         bdyvmask(:,:) = 0.e0 
     207         DO jj=1, jpjm1 
     208            DO ji=1, jpim1 
     209               bdyumask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji+1, jj ) 
     210               bdyvmask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji  ,jj+1) 
     211            END DO 
     212         END DO 
     213         CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
     214 
     215 
     216         ! Mask corrections 
     217         ! ---------------- 
     218         DO jk = 1, jpkm1 
     219            DO jj = 1, jpj 
     220               DO ji = 1, jpi 
     221                  tmask(ji,jj,jk) = tmask(ji,jj,jk) * bdytmask(ji,jj) 
     222               END DO 
     223            END DO 
     224         END DO 
     225      ENDIF 
     226#endif 
    170227      ! (ISF) define barotropic mask and mask the ice shelf point 
    171228      ssmask(:,:)=tmask(:,:,1) ! at this stage ice shelf is not masked