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 11769 – NEMO

Changeset 11769


Ignore:
Timestamp:
2019-10-23T12:08:33+02:00 (5 years ago)
Author:
jchanut
Message:

#2222 1) change sponge definition to add time relaxation in addition to Laplacian diffusion (WRF like): Add new parameters in namelist.
2) Reduce sponge width by 1 child grid point to match coarse grid cells.

Location:
NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/cfgs/SHARED/field_def_nemo-oce.xml

    r11574 r11769  
    2929 
    3030        <!-- AGRIF sponge --> 
    31         <field id="fsahm_spt"    long_name=" AGRIF t-sponge viscosity coefficient"   unit="m2/s"                              /> 
     31        <field id="agrif_spt"         long_name=" AGRIF t-sponge coefficient"   unit=" "                              /> 
    3232 
    3333        <!-- t-eddy viscosity coefficients (ldfdyn) --> 
     
    366366 
    367367        <!-- AGRIF sponge --> 
    368         <field id="fsaht_spu"    long_name=" AGRIF u-sponge diffusivity coefficient"   unit="m2/s"         /> 
     368        <field id="agrif_spu"    long_name=" AGRIF u-sponge coefficient"   unit=" "         /> 
    369369 
    370370        <!-- u-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 
     
    423423 
    424424        <!-- AGRIF sponge --> 
    425         <field id="fsaht_spv"    long_name=" AGRIF v-sponge diffusivity coefficient"   unit="m2/s"         /> 
     425        <field id="agrif_spv"    long_name=" AGRIF v-sponge coefficient"   unit=" "         /> 
    426426 
    427427        <!-- v-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 
     
    504504      <!-- F grid --> 
    505505      <!-- AGRIF sponge --> 
    506       <field id="fsahm_spf"    long_name=" AGRIF f-sponge viscosity coefficient"   unit="m2/s"                              /> 
     506      <field id="agrif_spf"    long_name=" AGRIF f-sponge coefficient"   unit=" "                              /> 
    507507 
    508508      <!-- f-eddy viscosity coefficients (ldfdyn) --> 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/cfgs/SHARED/namelist_ref

    r11740 r11769  
    564564   rn_sponge_tra = 2880.   !  coefficient for tracer   sponge layer [m2/s] 
    565565   rn_sponge_dyn = 2880.   !  coefficient for dynamics sponge layer [m2/s] 
     566   rn_trelax_tra = 0.01    !  inverse of relaxation time (in steps) for tracers [] 
     567   rn_trelax_dyn = 0.01    !  inverse of relaxation time (in steps) for dynamics [] 
    566568   ln_chk_bathy  = .false. !  =T  check the parent bathymetry 
    567569/ 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce.F90

    r11741 r11769  
    2424   REAL(wp), PUBLIC ::   rn_sponge_tra = 2800.     !: sponge coeff. for tracers 
    2525   REAL(wp), PUBLIC ::   rn_sponge_dyn = 2800.     !: sponge coeff. for dynamics 
     26   REAL(wp), PUBLIC ::   rn_trelax_tra = 0.01      !: time relaxation parameter for tracers 
     27   REAL(wp), PUBLIC ::   rn_trelax_dyn = 0.01      !: time relaxation parameter for momentum 
    2628   LOGICAL , PUBLIC ::   ln_chk_bathy  = .FALSE.   !: check of parent bathymetry  
    2729   ! 
     
    4042   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utint_stage 
    4143   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vtint_stage 
    42    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fsaht_spu, fsaht_spv !: sponge diffusivities 
    43    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fsahm_spt, fsahm_spf !: sponge viscosities 
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fspu, fspv !: sponge arrays 
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fspt, fspf !:   "      " 
    4446 
    4547   ! Barotropic arrays used to store open boundary data during time-splitting loop: 
     
    8284      ierr(:) = 0 
    8385      ! 
    84       ALLOCATE( fsaht_spu(jpi,jpj), fsaht_spv(jpi,jpj),     & 
    85          &      fsahm_spt(jpi,jpj), fsahm_spf(jpi,jpj),     & 
     86      ALLOCATE( fspu(jpi,jpj), fspv(jpi,jpj),          & 
     87         &      fspt(jpi,jpj), fspf(jpi,jpj),               & 
    8688         &      tabspongedone_tsn(jpi,jpj),                 & 
    8789         &      utint_stage(jpi,jpj), vtint_stage(jpi,jpj), & 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_interp.F90

    r11741 r11769  
    684684        ! Interpolate thicknesses 
    685685        ! Warning: these are masked, hence extrapolated prior interpolation. 
    686         DO jk=k1,k2-1 
     686        DO jk=k1,k2 
    687687           DO jj=j1,j2 
    688688              DO ji=i1,i2 
     
    731731               N_out = 0 
    732732               DO jk=1,jpk ! jpk of child grid 
    733                   IF (tmask(ji,jj,jk) == 0) EXIT  
     733                  IF (tmask(ji,jj,jk) == 0._wp) EXIT  
    734734                  N_out = N_out + 1 
    735735                  h_out(jk) = e3t_a(ji,jj,jk) 
     
    945945                  h_out(N_out) = e3v_a(ji,jj,jk) 
    946946               END DO 
    947  
    948947               IF (N_in*N_out > 0) THEN 
    949948                  call reconstructandremap(tabin(1:N_in),h_in(1:N_in),va(ji,jj,1:N_out),h_out(1:N_out),N_in,N_out,1) 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_sponge.F90

    r11741 r11769  
    6060#endif 
    6161      ! 
    62       CALL iom_put("fsaht_spu", fsaht_spu(:,:)) 
    63       CALL iom_put("fsaht_spv", fsaht_spv(:,:)) 
     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("fsahm_spt", fsahm_spt(:,:)) 
    93       CALL iom_put("fsahm_spf", fsahm_spf(:,:)) 
     92      CALL iom_put("agrif_spt", fspt(:,:)) 
     93      CALL iom_put("agrif_spf", fspf(:,:)) 
    9494      ! 
    9595   END SUBROUTINE Agrif_Sponge_dyn 
     
    108108      !!---------------------------------------------------------------------- 
    109109      ! 
     110      ! Sponge 1d example with: 
     111      !      iraf = 3 ; nbghost = 3 ; nn_sponge_len = 2 
     112      !                         
     113      !coarse :     U     T     U     T     U     T     U 
     114      !|            |           |           |           | 
     115      !fine :     t u t u t u t u t u t u t u t u t u t u t 
     116      !sponge val:0   0   0   1  5/6 4/6 3/6 2/6 1/6  0   0 
     117      !           |   ghost     | <-- sponge area  -- > | 
     118      !           |   points    |                       | 
     119      !                         |--> dynamical interface 
     120 
    110121#if defined SPONGE || defined SPONGE_TOP 
    111122      IF (( .NOT. spongedoneT ).OR.( .NOT. spongedoneU )) THEN 
     
    163174         ! Store it in ztabramp 
    164175 
    165          ispongearea  = 1 + nn_sponge_len * Agrif_irhox() 
     176         ispongearea  = nn_sponge_len * Agrif_irhox() 
    166177         z1_ispongearea = 1._wp / REAL( ispongearea ) 
    167          jspongearea  = 1 + nn_sponge_len * Agrif_irhoy() 
     178         jspongearea  = nn_sponge_len * Agrif_irhoy() 
    168179         z1_jspongearea = 1._wp / REAL( jspongearea ) 
    169180          
     
    248259      ! Tracers 
    249260      IF( .NOT. spongedoneT ) THEN 
    250          fsaht_spu(:,:) = 0._wp 
    251          fsaht_spv(:,:) = 0._wp 
     261         fspu(:,:) = 0._wp 
     262         fspv(:,:) = 0._wp 
    252263         DO jj = 2, jpjm1 
    253264            DO ji = 2, jpim1   ! vector opt. 
    254                fsaht_spu(ji,jj) = 0.5_wp * rn_sponge_tra * ( ztabramp(ji,jj) + ztabramp(ji+1,jj  ) ) 
    255                fsaht_spv(ji,jj) = 0.5_wp * rn_sponge_tra * ( ztabramp(ji,jj) + ztabramp(ji  ,jj+1) ) 
    256             END DO 
    257          END DO 
    258          CALL lbc_lnk( 'agrif_Sponge', fsaht_spu, 'U', 1. )   ! Lateral boundary conditions 
    259          CALL lbc_lnk( 'agrif_Sponge', fsaht_spv, 'V', 1. ) 
     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            END DO 
     268         END DO 
     269         CALL lbc_lnk( 'agrif_Sponge', fspu, 'U', 1. )   ! Lateral boundary conditions 
     270         CALL lbc_lnk( 'agrif_Sponge', fspv, 'V', 1. ) 
    260271 
    261272         spongedoneT = .TRUE. 
     
    264275      ! Dynamics 
    265276      IF( .NOT. spongedoneU ) THEN 
    266          fsahm_spt(:,:) = 0._wp 
    267          fsahm_spf(:,:) = 0._wp 
     277         fspt(:,:) = 0._wp 
     278         fspf(:,:) = 0._wp 
    268279         DO jj = 2, jpjm1 
    269280            DO ji = 2, jpim1   ! vector opt. 
    270                fsahm_spt(ji,jj) = rn_sponge_dyn * ztabramp(ji,jj) 
    271                fsahm_spf(ji,jj) = 0.25_wp * rn_sponge_dyn * ( ztabramp(ji  ,jj  ) + ztabramp(ji  ,jj+1) & 
    272                                                           &  +ztabramp(ji+1,jj+1) + ztabramp(ji+1,jj  ) ) 
    273             END DO 
    274          END DO 
    275          CALL lbc_lnk( 'agrif_Sponge', fsahm_spt, 'T', 1. )   ! Lateral boundary conditions 
    276          CALL lbc_lnk( 'agrif_Sponge', fsahm_spf, 'F', 1. ) 
     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  ) ) 
     284            END DO 
     285         END DO 
     286         CALL lbc_lnk( 'agrif_Sponge', fspt, 'T', 1. )   ! Lateral boundary conditions 
     287         CALL lbc_lnk( 'agrif_Sponge', fspf, 'F', 1. ) 
    277288          
    278289         spongedoneU = .TRUE. 
     
    293304      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    294305      INTEGER  ::   iku, ikv 
    295       REAL(wp) :: ztsa, zabe1, zabe2, zbtr, zhtot 
     306      REAL(wp) :: ztsa, zabe1, zabe2, zbtr, zhtot, ztrelax 
    296307      REAL(wp), DIMENSION(i1:i2,j1:j2,jpk) :: ztu, ztv 
    297308      REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tsbdiff 
     
    318329        ! Interpolate thicknesses 
    319330        ! Warning: these are masked, hence extrapolated prior interpolation. 
    320         DO jk=k1,k2-1 
     331        DO jk=k1,k2 
    321332           DO jj=j1,j2 
    322333              DO ji=i1,i2 
     
    397408         ENDDO 
    398409 
     410         !* set relaxation time scale 
     411         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
     412         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
     413         ENDIF 
     414 
    399415         DO jn = 1, jpts             
    400416            DO jk = 1, jpkm1 
     
    402418               DO jj = j1,j2 
    403419                  DO ji = i1,i2-1 
    404                      zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) 
     420                     zabe1 = rn_sponge_tra * fspu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) 
    405421                     ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )  
    406422                  END DO 
     
    409425               DO ji = i1,i2 
    410426                  DO jj = j1,j2-1 
    411                      zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) 
     427                     zabe2 = rn_sponge_tra * fspv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) 
    412428                     ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji  ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 
    413429                  END DO 
     
    433449                        zbtr = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    434450                        ! horizontal diffusive trends 
    435                         ztsa = zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) 
     451                        ztsa = zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) & 
     452                             &  - ztrelax * fspt(ji,jj) * tsbdiff(ji,jj,jk,jn)  
    436453                        ! add it to the general tracer trends 
    437454                        tsa(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) + ztsa 
     
    460477 
    461478      ! sponge parameters  
    462       REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot 
     479      REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 
    463480      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: ubdiff 
    464481      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: rotdiff, hdivdiff 
     
    548565         ubdiff(i1:i2,j1:j2,:) = (ub(i1:i2,j1:j2,:) - tabres(i1:i2,j1:j2,:,1))*umask(i1:i2,j1:j2,:) 
    549566#endif 
     567         !* set relaxation time scale 
     568         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
     569         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
     570         ENDIF 
    550571         ! 
    551572         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    557578            DO jj = j1,j2 
    558579               DO ji = i1+1,i2   ! vector opt. 
    559                   zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * fsahm_spt(ji,jj) 
     580                  zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * rn_sponge_dyn * fspt(ji,jj) 
    560581                  hdivdiff(ji,jj,jk) = (  e2u(ji  ,jj)*e3u_b(ji  ,jj,jk) * ubdiff(ji  ,jj,jk) & 
    561582                                     &   -e2u(ji-1,jj)*e3u_b(ji-1,jj,jk) * ubdiff(ji-1,jj,jk) ) * zbtr 
     
    565586            DO jj = j1,j2-1 
    566587               DO ji = i1,i2   ! vector opt. 
    567                   zbtr = r1_e1e2f(ji,jj) * e3f_n(ji,jj,jk) * fsahm_spf(ji,jj) 
     588                  zbtr = r1_e1e2f(ji,jj) * e3f_n(ji,jj,jk) * rn_sponge_dyn * fspf(ji,jj) 
    568589                  rotdiff(ji,jj,jk) = ( -e1u(ji,jj+1) * ubdiff(ji,jj+1,jk)   & 
    569590                                    &   +e1u(ji,jj  ) * ubdiff(ji,jj  ,jk) ) * fmask(ji,jj,jk) * zbtr  
     
    581602                     ! horizontal diffusive trends 
    582603                     zua = - ( ze2u - rotdiff (ji,jj-1,jk) ) / ( e2u(ji,jj) * e3u_n(ji,jj,jk) )   & 
    583                            + ( hdivdiff(ji+1,jj,jk) - ze1v ) * r1_e1u(ji,jj) 
     604                         & + ( hdivdiff(ji+1,jj,jk) - ze1v ) * r1_e1u(ji,jj) &  
     605                         & - ztrelax  * fspu(ji,jj) * ubdiff(ji,jj,jk) 
    584606 
    585607                     ! add it to the general momentum trends 
    586                      ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    587  
     608                     ua(ji,jj,jk) = ua(ji,jj,jk) + zua                                  
    588609                  END DO 
    589610               ENDIF 
     
    633654      ! 
    634655      INTEGER  ::   ji, jj, jk, imax 
    635       REAL(wp) ::   ze2u, ze1v, zua, zva, zbtr, zhtot 
     656      REAL(wp) ::   ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 
    636657      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: vbdiff 
    637658      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: rotdiff, hdivdiff 
     
    720741         vbdiff(i1:i2,j1:j2,:) = (vb(i1:i2,j1:j2,:) - tabres(i1:i2,j1:j2,:,1))*vmask(i1:i2,j1:j2,:) 
    721742# endif 
     743         !* set relaxation time scale 
     744         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
     745         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
     746         ENDIF 
    722747         ! 
    723748         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    729754            DO jj = j1+1,j2 
    730755               DO ji = i1,i2   ! vector opt. 
    731                   zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * fsahm_spt(ji,jj) 
     756                  zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * rn_sponge_dyn * fspt(ji,jj) 
    732757                  hdivdiff(ji,jj,jk) = ( e1v(ji,jj  ) * e3v_b(ji,jj  ,jk) * vbdiff(ji,jj  ,jk)  & 
    733758                                     &  -e1v(ji,jj-1) * e3v_b(ji,jj-1,jk) * vbdiff(ji,jj-1,jk)  ) * zbtr 
     
    736761            DO jj = j1,j2 
    737762               DO ji = i1,i2-1   ! vector opt. 
    738                   zbtr = r1_e1e2f(ji,jj) * e3f_n(ji,jj,jk) * fsahm_spf(ji,jj) 
     763                  zbtr = r1_e1e2f(ji,jj) * e3f_n(ji,jj,jk) * rn_sponge_dyn * fspf(ji,jj) 
    739764                  rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) &  
    740765                                    &  -e2v(ji  ,jj) * vbdiff(ji  ,jj,jk)  ) * fmask(ji,jj,jk) * zbtr 
     
    769794                     va(ji,jj,jk) = va(ji,jj,jk)                                                                  & 
    770795                        &  + ( rotdiff (ji,jj  ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v_n(ji,jj,jk) )   & 
    771                         &  + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji  ,jj,jk) ) * r1_e2v(ji,jj) 
     796                        &  + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji  ,jj,jk) ) * r1_e2v(ji,jj)                      & 
     797                        &  - ztrelax * fspv(ji,jj) * vbdiff(ji,jj,jk) 
    772798                  END DO 
    773799               ENDIF 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_top_sponge.F90

    r11625 r11769  
    6767      ! 
    6868      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    69       REAL(wp) ::   zabe1, zabe2 
     69      REAL(wp) ::   zabe1, zabe2, ztrelax 
    7070      REAL(wp), DIMENSION(i1:i2,j1:j2)               ::   ztu, ztv 
    7171      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,1:jptra) ::   trbdiff 
     
    136136         ENDDO 
    137137 
     138         !* set relaxation time scale 
     139         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
     140         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
     141         ENDIF 
     142 
    138143         DO jn = 1, jptra 
    139144            DO jk = 1, jpkm1 
    140145               DO jj = j1,j2-1 
    141146                  DO ji = i1,i2-1 
    142                      zabe1 = fsaht_spu(ji,jj) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) 
    143                      zabe2 = fsaht_spv(ji,jj) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
     147                     zabe1 = rn_sponge_tra * fspu(ji,jj) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) 
     148                     zabe2 = rn_sponge_tra * fspv(ji,jj) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
    144149                     ztu(ji,jj) = zabe1 * ( trbdiff(ji+1,jj  ,jk,jn) - trbdiff(ji,jj,jk,jn) ) 
    145150                     ztv(ji,jj) = zabe2 * ( trbdiff(ji  ,jj+1,jk,jn) - trbdiff(ji,jj,jk,jn) ) 
     
    152157                        tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + (  ztu(ji,jj) - ztu(ji-1,jj  )     & 
    153158                           &                                   + ztv(ji,jj) - ztv(ji  ,jj-1)  )  & 
    154                            &                                * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
     159                           &                                * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk)  & 
     160                           &                                - ztrelax * fspt(ji,jj) * trbdiff(ji,jj,jk,jn) 
    155161                     ENDIF 
    156162                  END DO 
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_user.F90

    r11741 r11769  
    383383      CALL Agrif_Set_bc( vn_interp_id, (/0,ind1-1/) ) 
    384384 
    385       CALL Agrif_Set_bc( tsn_sponge_id, (/-nn_sponge_len*Agrif_irhox()-1,0/) )  ! if west and rhox=3 and sponge=2 and ghost=1: columns 2 to 9  
    386       CALL Agrif_Set_bc(  un_sponge_id, (/-nn_sponge_len*Agrif_irhox()-1,0/) ) 
    387       CALL Agrif_Set_bc(  vn_sponge_id, (/-nn_sponge_len*Agrif_irhox()-1,0/) ) 
     385      CALL Agrif_Set_bc( tsn_sponge_id, (/-nn_sponge_len*Agrif_irhox(),0/) )  ! if west and rhox=3 and sponge=2 and ghost=1: columns 2 to 9  
     386      CALL Agrif_Set_bc(  un_sponge_id, (/-nn_sponge_len*Agrif_irhox(),0/) ) 
     387      CALL Agrif_Set_bc(  vn_sponge_id, (/-nn_sponge_len*Agrif_irhox(),0/) ) 
    388388 
    389389      CALL Agrif_Set_bc(        sshn_id, (/0,ind1-1/) ) 
     
    398398# if defined key_vertical 
    399399      ! extend the interpolation zone by 1 more point than necessary: 
    400       CALL Agrif_Set_bc(  mbkt_id, (/-nn_sponge_len*Agrif_irhox()-2,ind1/) ) 
    401       CALL Agrif_Set_bc(  ht0_id,  (/-nn_sponge_len*Agrif_irhox()-2,ind1/) ) 
     400      CALL Agrif_Set_bc(  mbkt_id, (/-nn_sponge_len*Agrif_irhox()-1,ind1/) ) 
     401      CALL Agrif_Set_bc(  ht0_id,  (/-nn_sponge_len*Agrif_irhox()-1,ind1/) ) 
    402402# endif 
    403403 
     
    691691      ! 
    692692      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    693       NAMELIST/namagrif/ ln_agrif_2way, rn_sponge_tra, rn_sponge_dyn, ln_spc_dyn, ln_chk_bathy 
     693      NAMELIST/namagrif/ ln_agrif_2way, rn_sponge_tra, rn_sponge_dyn, rn_trelax_tra, rn_trelax_dyn, & 
     694                       & ln_spc_dyn, ln_chk_bathy 
    694695      !!-------------------------------------------------------------------------------------- 
    695696      ! 
     
    710711         WRITE(numout,*) '      sponge coefficient for tracers    rn_sponge_tra = ', rn_sponge_tra, ' m^2/s' 
    711712         WRITE(numout,*) '      sponge coefficient for dynamics   rn_sponge_tra = ', rn_sponge_dyn, ' m^2/s' 
     713         WRITE(numout,*) '      time relaxation for tracers       rn_trelax_tra = ', rn_trelax_tra, ' ad.' 
     714         WRITE(numout,*) '      time relaxation for dynamics      rn_trelax_dyn = ', rn_trelax_dyn, ' ad.' 
    712715         WRITE(numout,*) '      use special values for dynamics   ln_spc_dyn    = ', ln_spc_dyn 
    713716         WRITE(numout,*) '      check bathymetry                  ln_chk_bathy  = ', ln_chk_bathy 
Note: See TracChangeset for help on using the changeset viewer.