Ignore:
Timestamp:
2016-09-23T14:56:46+02:00 (5 years ago)
Author:
jamesharle
Message:

updated masking code in bdyini.F90 and dommsk.F90 to properly account for bdy_msk

Location:
branches/NERC/dev_r5840_BDY_MSK/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5840_BDY_MSK/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r5836 r6948  
    11161116      !          = 0  elsewhere    
    11171117  
     1118      bdytmask(:,:) = ssmask(:,:) 
     1119 
    11181120      IF( ln_mask_file ) THEN 
    11191121         CALL iom_open( cn_mask_file, inum ) 
     
    11321134         CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
    11331135 
    1134  
    1135          ! Mask corrections 
    1136          ! ---------------- 
    1137          DO ik = 1, jpkm1 
    1138             DO ij = 1, jpj 
    1139                DO ii = 1, jpi 
    1140                   tmask(ii,ij,ik) = tmask(ii,ij,ik) * bdytmask(ii,ij) 
    1141                   umask(ii,ij,ik) = umask(ii,ij,ik) * bdyumask(ii,ij) 
    1142                   vmask(ii,ij,ik) = vmask(ii,ij,ik) * bdyvmask(ii,ij) 
    1143                   bmask(ii,ij)    = bmask(ii,ij)    * bdytmask(ii,ij) 
    1144                END DO       
    1145             END DO 
    1146          END DO 
    1147  
    1148          DO ik = 1, jpkm1 
    1149             DO ij = 2, jpjm1 
    1150                DO ii = 2, jpim1 
    1151                   fmask(ii,ij,ik) = fmask(ii,ij,ik) * bdytmask(ii,ij  ) * bdytmask(ii+1,ij  )   & 
    1152                      &                              * bdytmask(ii,ij+1) * bdytmask(ii+1,ij+1) 
    1153                END DO       
    1154             END DO 
    1155          END DO 
    1156  
    1157          tmask_i (:,:) = ssmask(:,:) * tmask_i(:,:) 
    1158  
    11591136      ENDIF ! ln_mask_file=.TRUE. 
    11601137       
    1161       bdytmask(:,:) = ssmask(:,:) 
    11621138      IF( .not. ln_mask_file ) THEN 
    11631139         ! If .not. ln_mask_file then we need to derive mask on U and V grid  
  • branches/NERC/dev_r5840_BDY_MSK/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r5836 r6948  
    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 
     
    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 
     
    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      ! 
     
    168179      END DO   
    169180       
     181#if defined key_bdy  
     182      REWIND( numnam_ref )              ! Namelist nambdy in reference namelist :Unstructured open boundaries   
     183      READ  ( numnam_ref, nambdy, IOSTAT = ios, ERR = 901) 
     184903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 
     185 
     186      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
     187      READ  ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 
     188904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 
     189      IF(lwm) WRITE ( numond, nambdy ) 
     190 
     191     IF( ln_mask_file ) THEN ! correct for bdy mask 
     192         CALL iom_open( cn_mask_file, inum ) 
     193         CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 
     194         CALL iom_close( inum ) 
     195 
     196         ! Derive mask on U and V grid from mask on T grid 
     197         bdyumask(:,:) = 0.e0 
     198         bdyvmask(:,:) = 0.e0 
     199         DO jj=1, jpjm1 
     200            DO ji=1, jpim1 
     201               bdyumask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji+1, jj ) 
     202               bdyvmask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji  ,jj+1) 
     203            END DO 
     204         END DO 
     205         CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
     206 
     207 
     208         ! Mask corrections 
     209         ! ---------------- 
     210         DO jk = 1, jpkm1 
     211            DO jj = 1, jpj 
     212               DO ji = 1, jpi 
     213                  tmask(ji,jj,jk) = tmask(ji,jj,jk) * bdytmask(ji,jj) 
     214               END DO 
     215            END DO 
     216         END DO 
     217      ENDIF 
     218#endif 
    170219      ! (ISF) define barotropic mask and mask the ice shelf point 
    171220      ssmask(:,:)=tmask(:,:,1) ! at this stage ice shelf is not masked 
Note: See TracChangeset for help on using the changeset viewer.