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 11868 for NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_sponge.F90 – NEMO

Ignore:
Timestamp:
2019-11-06T16:43:51+01:00 (4 years ago)
Author:
jchanut
Message:

#2222, 1) Correct sponge mainly for using AGRIF in 2DV domains, 2) Add check of bathymetry consistency

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_sponge.F90

    r11827 r11868  
    6060#endif 
    6161      ! 
    62       CALL iom_put("agrif_spu", fspu(:,:)) 
    63       CALL iom_put("agrif_spv", fspv(:,:)) 
     62      CALL iom_put( 'agrif_spu', fspu(:,:)) 
     63      CALL iom_put( 'agrif_spv', fspv(:,:)) 
    6464      ! 
    6565   END SUBROUTINE Agrif_Sponge_Tra 
     
    9090#endif 
    9191      ! 
    92       CALL iom_put("agrif_spt", fspt(:,:)) 
    93       CALL iom_put("agrif_spf", fspf(:,:)) 
     92      CALL iom_put( 'agrif_spt', fspt(:,:)) 
     93      CALL iom_put( 'agrif_spf', fspf(:,:)) 
    9494      ! 
    9595   END SUBROUTINE Agrif_Sponge_dyn 
     
    128128         ind1 = 1+nbghostcells 
    129129         DO ji = mi0(ind1), mi1(ind1)                 
    130             ztabramp(ji,:) = umask(ji,:,1) 
     130            ztabramp(ji,:) = ssumask(ji,:) 
    131131         END DO 
    132132         ! 
     
    138138         ind1 = jpiglo - nbghostcells - 1 
    139139         DO ji = mi0(ind1), mi1(ind1)                  
    140             ztabramp(ji,:) = umask(ji,:,1) 
     140            ztabramp(ji,:) = ssumask(ji,:) 
    141141         END DO 
    142142         ! 
     
    148148         ind1 = 1+nbghostcells 
    149149         DO jj = mj0(ind1), mj1(ind1)                  
    150             ztabramp(:,jj) = vmask(:,jj,1) 
     150            ztabramp(:,jj) = ssvmask(:,jj) 
    151151         END DO 
    152152         ! 
     
    158158         ind1 = jpjglo - nbghostcells - 1 
    159159         DO jj = mj0(ind1), mj1(ind1)                  
    160             ztabramp(:,jj) = vmask(:,jj,1) 
     160            ztabramp(:,jj) = ssvmask(:,jj) 
    161161         END DO 
    162162         ! 
     
    180180          
    181181         ztabramp(:,:) = 0._wp 
    182          IF ( Agrif_irhox()==1 ) ispongearea =-1 
    183          IF ( Agrif_irhoy()==1 ) jspongearea =-1 
     182 
     183         ! Trick to remove sponge in 2DV domains: 
     184         IF ( nbcellsx <= 3 ) ispongearea = -1 
     185         IF ( nbcellsy <= 3 ) jspongearea = -1 
    184186 
    185187         ! --- West --- ! 
     
    192194         END DO 
    193195 
    194          ! ghost cells (cosmetic): 
     196         ! ghost cells: 
    195197         ind1 = 1 
    196          ind2 = nbghostcells 
     198         ind2 = nbghostcells + 1 
    197199         DO ji = mi0(ind1), mi1(ind2)    
    198200            DO jj = 1, jpj                
     
    210212         END DO 
    211213 
    212          ! ghost cells (cosmetic): 
    213          ind1 = jpiglo - nbghostcells + 1 
     214         ! ghost cells: 
     215         ind1 = jpiglo - nbghostcells 
    214216         ind2 = jpiglo 
    215217         DO ji = mi0(ind1), mi1(ind2) 
     
    228230         END DO 
    229231 
    230          ! ghost cells (cosmetic): 
     232         ! ghost cells: 
    231233         ind1 = 1 
    232          ind2 = nbghostcells 
     234         ind2 = nbghostcells + 1 
    233235         DO jj = mj0(ind1), mj1(ind2)  
    234236            DO ji = 1, jpi 
     
    246248         END DO 
    247249 
    248          ! ghost cells (cosmetic): 
    249          ind1 = jpjglo - nbghostcells + 1 
     250         ! ghost cells: 
     251         ind1 = jpjglo - nbghostcells 
    250252         ind2 = jpjglo 
    251253         DO jj = mj0(ind1), mj1(ind2) 
     
    263265         DO jj = 2, jpjm1 
    264266            DO ji = 2, jpim1   ! vector opt. 
    265                fspu(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji+1,jj  ) ) 
    266                fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji  ,jj+1) ) 
     267               fspu(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji+1,jj  ) ) * ssumask(ji,jj) 
     268               fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji  ,jj+1) ) * ssvmask(ji,jj) 
    267269            END DO 
    268270         END DO 
     
    279281         DO jj = 2, jpjm1 
    280282            DO ji = 2, jpim1   ! vector opt. 
    281                fspt(ji,jj) = ztabramp(ji,jj) 
    282                fspf(ji,jj) = 0.25_wp * ( ztabramp(ji  ,jj  ) + ztabramp(ji  ,jj+1) & 
    283                                      &  +ztabramp(ji+1,jj+1) + ztabramp(ji+1,jj  ) ) 
     283               fspt(ji,jj) = ztabramp(ji,jj) * ssmask(ji,jj) 
     284               fspf(ji,jj) = 0.25_wp * ( ztabramp(ji  ,jj  ) + ztabramp(ji  ,jj+1)   & 
     285                                     &  +ztabramp(ji+1,jj+1) + ztabramp(ji+1,jj  ) ) & 
     286                                     &  * ssvmask(ji,jj) * ssvmask(ji,jj+1) 
    284287            END DO 
    285288         END DO 
     
    291294 
    292295#if defined key_vertical 
    293       ! Trick to vertical remove interpolation in sponge layer in case of 2DV domains: 
     296      ! Remove vertical interpolation where not needed: 
    294297      DO jj = 2, jpjm1 
    295298         DO ji = 2, jpim1 
     
    303306            &   (fspf(ji-1,jj)==0._wp).AND.(fspf(ji,jj)==0._wp)) mbkv_parent(ji,jj) = 0 
    304307! 
    305             IF (mbkt(ji,jj) == 0) mbkt_parent(ji,jj) = 0 
    306             IF (mbku(ji,jj) == 0) mbku_parent(ji,jj) = 0 
    307             IF (mbkv(ji,jj) == 0) mbkv_parent(ji,jj) = 0 
     308            IF ( ssmask(ji,jj) == 0._wp) mbkt_parent(ji,jj) = 0 
     309            IF (ssumask(ji,jj) == 0._wp) mbku_parent(ji,jj) = 0 
     310            IF (ssvmask(ji,jj) == 0._wp) mbkv_parent(ji,jj) = 0 
    308311         END DO 
    309312      END DO 
Note: See TracChangeset for help on using the changeset viewer.