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 9806 for NEMO/trunk/src/NST/agrif_oce_sponge.F90 – NEMO

Ignore:
Timestamp:
2018-06-15T17:57:53+02:00 (6 years ago)
Author:
jchanut
Message:

Differentiates x and y refinement in tracer bc ; correct sponge #2102 ; Passes x and y symmetry tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/NST/agrif_oce_sponge.F90

    r9786 r9806  
    103103         ! Store it in ztabramp 
    104104 
    105          ispongearea  = 2 + nn_sponge_len * Agrif_irhox() 
    106          z1_spongearea = 1._wp / REAL( ispongearea - 1 ) 
     105         ispongearea  = 1 + nn_sponge_len * Agrif_irhox() 
     106         z1_spongearea = 1._wp / REAL( ispongearea ) 
    107107          
    108108         ztabramp(:,:) = 0._wp 
     
    111111         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
    112112            ind1 = 1+nbghostcells 
    113             ind2 = 1+nbghostcells + (ispongearea-1) 
     113            ind2 = 1+nbghostcells + ispongearea  
    114114            DO jj = 1, jpj 
    115                DO ji = ind1, ind2                   
     115               DO ji = ind1, ind2                 
    116116                  ztabramp(ji,jj) = REAL( ind2 - ji ) * z1_spongearea * umask(ind1,jj,1) 
    117117               END DO 
     
    121121         ! --- East --- ! 
    122122         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
    123             ind1 = nlci - (1+nbghostcells) - (ispongearea-1) 
    124             ind2 = nlci - (1+nbghostcells) 
     123            ind1 = nlci - nbghostcells - ispongearea 
     124            ind2 = nlci - nbghostcells 
    125125            DO jj = 1, jpj 
    126126               DO ji = ind1, ind2 
     
    133133         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
    134134            ind1 = 1+nbghostcells 
    135             ind2 = 1+nbghostcells + (ispongearea-1) 
    136             DO jj = ind1, ind2 
     135            ind2 = 1+nbghostcells + ispongearea 
     136            DO jj = ind1, ind2  
    137137               DO ji = 1, jpi 
    138138                  ztabramp(ji,jj) = MAX( ztabramp(ji,jj), REAL( ind2 - jj ) * z1_spongearea * vmask(ji,ind1,1) ) 
     
    143143         ! --- North --- ! 
    144144         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
    145             ind1 = nlcj - (1+nbghostcells) - (ispongearea-1) 
    146             ind2 = nlcj - (1+nbghostcells) 
     145            ind1 = nlcj - nbghostcells - ispongearea 
     146            ind2 = nlcj - nbghostcells 
    147147            DO jj = ind1, ind2 
    148148               DO ji = 1, jpi 
     
    177177            DO ji = 2, jpim1   ! vector opt. 
    178178               fsahm_spt(ji,jj) = visc_dyn * ztabramp(ji,jj) 
    179                fsahm_spf(ji,jj) = 0.25_wp * visc_dyn * ( ztabramp(ji,jj) + ztabramp(ji  ,jj+1) & 
    180                                                      &  +ztabramp(ji,jj) + ztabramp(ji+1,jj  ) ) 
     179               fsahm_spf(ji,jj) = 0.25_wp * visc_dyn * ( ztabramp(ji  ,jj  ) + ztabramp(ji  ,jj+1) & 
     180                                                     &  +ztabramp(ji+1,jj+1) + ztabramp(ji+1,jj  ) ) 
    181181            END DO 
    182182         END DO 
     
    278278         DO jn = 1, jpts             
    279279            DO jk = 1, jpkm1 
    280                DO jj = j1,j2-1 
     280               ztu(i1:i2,j1:j2,jk) = 0._wp 
     281               DO jj = j1,j2 
    281282                  DO ji = i1,i2-1 
    282283                     zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) 
     284                     ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )  
     285                  END DO 
     286               END DO 
     287               ztv(i1:i2,j1:j2,jk) = 0._wp 
     288               DO ji = i1,i2 
     289                  DO jj = j1,j2-1 
    283290                     zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) 
    284                      ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )  
    285291                     ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji  ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 
    286292                  END DO 
     
    288294               ! 
    289295               IF( ln_zps ) THEN      ! set gradient at partial step level 
    290                   DO jj = j1,j2-1 
    291                      DO ji = i1,i2-1 
     296                  DO jj = j1,j2 
     297                     DO ji = i1,i2 
    292298                        ! last level 
    293299                        iku = mbku(ji,jj) 
Note: See TracChangeset for help on using the changeset viewer.