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 13146 for NEMO – NEMO

Changeset 13146 for NEMO


Ignore:
Timestamp:
2020-06-23T17:08:22+02:00 (4 years ago)
Author:
jchanut
Message:

#2129, set adimensional agrif sponge parameters

Location:
NEMO/branches/2020/dev_r12973_AGRIF_CMEMS
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/cfgs/AGRIF_DEMO/EXPREF/2_namelist_cfg

    r13058 r13146  
    176176!----------------------------------------------------------------------- 
    177177   ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    178    rn_sponge_tra = 1440.   !  coefficient for tracer   sponge layer [m2/s] 
    179    rn_sponge_dyn = 1440.   !  coefficient for dynamics sponge layer [m2/s] 
    180178   ln_chk_bathy  = .true.  !  =T  check the parent bathymetry 
    181179/ 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/cfgs/AGRIF_DEMO/EXPREF/3_namelist_cfg

    r13058 r13146  
    158158!----------------------------------------------------------------------- 
    159159   ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    160    rn_sponge_tra =  480.   !  coefficient for tracer   sponge layer [m2/s] 
    161    rn_sponge_dyn =  480.   !  coefficient for dynamics sponge layer [m2/s] 
    162160   ln_chk_bathy  = .true.  !  =T  check the parent bathymetry 
    163161/ 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/cfgs/SHARED/namelist_ref

    r13141 r13146  
    641641   ln_init_chfrpar = .false. !  initialize child grids from parent 
    642642   ln_spc_dyn      = .true.  !  use 0 as special value for dynamics 
    643    rn_sponge_tra   = 2880.   !  coefficient for tracer   sponge layer [m2/s] 
    644    rn_sponge_dyn   = 2880.   !  coefficient for dynamics sponge layer [m2/s] 
     643   rn_sponge_tra   = 0.002   !  coefficient for tracer   sponge layer [] 
     644   rn_sponge_dyn   = 0.002   !  coefficient for dynamics sponge layer [] 
    645645   rn_trelax_tra   = 0.01    !  inverse of relaxation time (in steps) for tracers [] 
    646646   rn_trelax_dyn   = 0.01    !  inverse of relaxation time (in steps) for dynamics [] 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/NST/agrif_oce_sponge.F90

    r13026 r13146  
    356356      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    357357      INTEGER  ::   iku, ikv 
    358       REAL(wp) :: ztsa, zabe1, zabe2, zbtr, zhtot, ztrelax 
     358      REAL(wp) :: ztsa, zabe1, zabe2, zbtr, zhtot 
    359359      REAL(wp), DIMENSION(i1:i2,j1:j2,jpk) :: ztu, ztv 
    360360      REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tsbdiff 
     
    460460         ENDDO 
    461461 
    462          !* set relaxation time scale 
    463          IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rn_Dt ) 
    464          ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rn_Dt ) 
    465          ENDIF 
    466  
    467462         DO jn = 1, jpts             
    468463            DO jk = 1, jpkm1 
     
    470465               DO jj = j1,j2 
    471466                  DO ji = i1,i2-1 
    472                      zabe1 = rn_sponge_tra * fspu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 
     467                     zabe1 = rn_sponge_tra * r1_Dt * fspu(ji,jj) * umask(ji,jj,jk) * e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 
    473468                     ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )  
    474469                  END DO 
     
    477472               DO ji = i1,i2 
    478473                  DO jj = j1,j2-1 
    479                      zabe2 = rn_sponge_tra * fspv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 
     474                     zabe2 = rn_sponge_tra * r1_Dt * fspv(ji,jj) * vmask(ji,jj,jk) * e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 
    480475                     ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji  ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 
    481476                  END DO 
     
    502497                        ! horizontal diffusive trends 
    503498                        ztsa = zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) & 
    504                              &  - ztrelax * fspt(ji,jj) * tsbdiff(ji,jj,jk,jn)  
     499                             &  - rn_trelax_tra * r1_Dt * fspt(ji,jj) * tsbdiff(ji,jj,jk,jn)  
    505500                        ! add it to the general tracer trends 
    506501                        ts(ji,jj,jk,jn,Krhs_a) = ts(ji,jj,jk,jn,Krhs_a) + ztsa 
     
    529524 
    530525      ! sponge parameters  
    531       REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 
     526      REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot 
    532527      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: ubdiff 
    533528      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: rotdiff, hdivdiff 
     
    617612         ubdiff(i1:i2,j1:j2,:) = (uu(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*umask(i1:i2,j1:j2,:) 
    618613#endif 
    619          !* set relaxation time scale 
    620          IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rn_Dt ) 
    621          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rn_Dt ) 
    622          ENDIF 
    623614         ! 
    624615         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    630621            DO jj = j1,j2 
    631622               DO ji = i1+1,i2   ! vector opt. 
    632                   zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kbb_a) * rn_sponge_dyn * fspt(ji,jj) 
     623                  zbtr = rn_sponge_dyn * r1_Dt * fspt(ji,jj) / e3t(ji,jj,jk,Kbb_a) 
    633624                  hdivdiff(ji,jj,jk) = (  e2u(ji  ,jj)*e3u(ji  ,jj,jk,Kbb_a) * ubdiff(ji  ,jj,jk) & 
    634625                                     &   -e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kbb_a) * ubdiff(ji-1,jj,jk) ) * zbtr 
     
    638629            DO jj = j1,j2-1 
    639630               DO ji = i1,i2   ! vector opt. 
    640                   zbtr = r1_e1e2f(ji,jj) * e3f(ji,jj,jk) * rn_sponge_dyn * fspf(ji,jj) 
     631                  zbtr = rn_sponge_dyn * r1_Dt * fspf(ji,jj) * e3f(ji,jj,jk)  
    641632                  rotdiff(ji,jj,jk) = ( -e1u(ji,jj+1) * ubdiff(ji,jj+1,jk)   & 
    642633                                    &   +e1u(ji,jj  ) * ubdiff(ji,jj  ,jk) ) * fmask(ji,jj,jk) * zbtr  
     
    655646                     zua = - ( ze2u - rotdiff (ji,jj-1,jk) ) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) )   & 
    656647                         & + ( hdivdiff(ji+1,jj,jk) - ze1v ) * r1_e1u(ji,jj) &  
    657                          & - ztrelax * fspu(ji,jj) * ubdiff(ji,jj,jk) 
     648                         & - rn_trelax_dyn * r1_Dt * fspu(ji,jj) * ubdiff(ji,jj,jk) 
    658649 
    659650                     ! add it to the general momentum trends 
     
    707698      ! 
    708699      INTEGER  ::   ji, jj, jk, imax 
    709       REAL(wp) ::   ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 
     700      REAL(wp) ::   ze2u, ze1v, zua, zva, zbtr, zhtot 
    710701      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: vbdiff 
    711702      REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: rotdiff, hdivdiff 
     
    794785         vbdiff(i1:i2,j1:j2,:) = (vv(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*vmask(i1:i2,j1:j2,:) 
    795786# endif 
    796          !* set relaxation time scale 
    797          IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rn_Dt ) 
    798          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rn_Dt ) 
    799          ENDIF 
    800787         ! 
    801788         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    807794            DO jj = j1+1,j2 
    808795               DO ji = i1,i2   ! vector opt. 
    809                   zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kbb_a) * rn_sponge_dyn * fspt(ji,jj) 
     796                  zbtr = rn_sponge_dyn * r1_Dt * fspt(ji,jj) / e3t(ji,jj,jk,Kbb_a) 
    810797                  hdivdiff(ji,jj,jk) = ( e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kbb_a) * vbdiff(ji,jj  ,jk)  & 
    811798                                     &  -e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kbb_a) * vbdiff(ji,jj-1,jk)  ) * zbtr 
     
    814801            DO jj = j1,j2 
    815802               DO ji = i1,i2-1   ! vector opt. 
    816                   zbtr = r1_e1e2f(ji,jj) * e3f(ji,jj,jk) * rn_sponge_dyn * fspf(ji,jj) 
     803                  zbtr = rn_sponge_dyn * r1_Dt * fspf(ji,jj) * e3f(ji,jj,jk)  
    817804                  rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) &  
    818805                                    &  -e2v(ji  ,jj) * vbdiff(ji  ,jj,jk)  ) * fmask(ji,jj,jk) * zbtr 
     
    832819               IF( .NOT. tabspongedone_u(ji,jj) ) THEN 
    833820                  DO jk = 1, jpkm1 
    834                      uu(ji,jj,jk,Krhs_a) = uu(ji,jj,jk,Krhs_a)                                                               & 
     821                     uu(ji,jj,jk,Krhs_a) = uu(ji,jj,jk,Krhs_a)                                                     & 
    835822                        & - ( rotdiff (ji  ,jj,jk) - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) )  & 
    836823                        & + ( hdivdiff(ji+1,jj,jk) - hdivdiff(ji,jj  ,jk)) * r1_e1u(ji,jj) 
     
    846833               IF( .NOT. tabspongedone_v(ji,jj) ) THEN 
    847834                  DO jk = 1, jpkm1 
    848                      vv(ji,jj,jk,Krhs_a) = vv(ji,jj,jk,Krhs_a)                                                                  & 
     835                     vv(ji,jj,jk,Krhs_a) = vv(ji,jj,jk,Krhs_a)                                                        & 
    849836                        &  + ( rotdiff (ji,jj  ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) )   & 
    850                         &  + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji  ,jj,jk) ) * r1_e2v(ji,jj)                      & 
    851                         &  - ztrelax * fspv(ji,jj) * vbdiff(ji,jj,jk) 
     837                        &  + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji  ,jj,jk) ) * r1_e2v(ji,jj)                          & 
     838                        &  - rn_trelax_dyn * r1_Dt * fspv(ji,jj) * vbdiff(ji,jj,jk) 
    852839                  END DO 
    853840               ENDIF 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/tests/VORTEX/EXPREF/1_namelist_cfg

    r12489 r13146  
    9898&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    9999!----------------------------------------------------------------------- 
    100    ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    101    rn_sponge_tra =  800.   !  coefficient for tracer   sponge layer [m2/s] 
    102    rn_sponge_dyn =  800.   !  coefficient for dynamics sponge layer [m2/s] 
    103    ln_chk_bathy  = .FALSE. ! 
     100   rn_sponge_tra =  0.00768   !  coefficient for tracer   sponge layer [] 
     101   rn_sponge_dyn =  0.00768   !  coefficient for dynamics sponge layer [] 
    104102/ 
    105103!!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.