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

Changeset 14604


Ignore:
Timestamp:
2021-03-09T14:12:13+01:00 (3 years ago)
Author:
techene
Message:

#2605 : allow time filtering of barotropic variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/DYN/dynspg_ts.F90

    r14549 r14604  
    156156      LOGICAL  ::   ll_init               ! =T : special startup of 2d equations 
    157157      INTEGER  ::   noffset               ! local integers  : time offset for bdy update 
    158       REAL(wp) ::   z1_hu, z1_hv              ! local scalars 
     158      REAL(wp) ::   z1_hu , z1_hv             ! local scalars 
     159      REAL(wp) ::   zzsshu, zzsshv            !   -      - 
    159160      REAL(wp) ::   za0, za1, za2, za3        !   -      - 
    160161      REAL(wp) ::   zztmp, zldg               !   -      - 
     
    234235      !                    !========================================! 
    235236      ! 
    236       !                          ! Currently, RK3 requires the forward mode and NO time filtering of barotropic variables 
     237      !                          ! Currently, RK3 requires the forward mode 
    237238      IF( kt == nit000 ) THEN 
    238          IF( .NOT.ln_bt_fw  .OR. ln_bt_av )   CALL ctl_stop( 'dyn_spg_ts: RK3 requires ln_bt_fw=T AND ln_bt_av=F') 
     239         IF( .NOT.ln_bt_fw  )   CALL ctl_stop( 'dyn_spg_ts: RK3 requires forward mode (ln_bt_fw=T)' ) 
    239240      ENDIF 
    240241      ! 
     
    764765#if defined key_RK3 
    765766      !                                                !*  RK3 case 
     767      ! 
     768      IF( ln_bt_av ) THEN                  ! at this stage, pssh(:,:,:,Krhs) has been corrected: compute new depths at velocity points 
     769         ! 
     770# if defined key_qcoTest_FluxForm 
     771         !                                       ! 'key_qcoTest_FluxForm' : simple ssh average 
     772         DO_2D( 0, 0, 0, 0 ) 
     773            zzsshu = r1_2 * ( pssh(ji,jj,Kaa) + pssh(ji+1,jj  ,Kaa) ) * ssumask(ji,jj) 
     774            zzsshv = r1_2 * ( pssh(ji,jj,Kaa) + pssh(ji  ,jj+1,Kaa) ) * ssvmask(ji,jj) 
     775            ! 
     776            !                              ! Save barotropic velocities (not transport) 
     777            puu_b(ji,jj,Kaa) = puu_b(ji,jj,Kaa) / ( hu_0(ji,jj) + zzsshu + 1._wp - ssumask(ji,jj) ) 
     778            pvv_b(ji,jj,Kaa) = pvv_b(ji,jj,Kaa) / ( hv_0(ji,jj) + zzsshv + 1._wp - ssvmask(ji,jj) ) 
     779         END_2D 
     780# else 
     781         DO_2D( 0, 0, 0, 0 ) 
     782            zzsshu = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji  ,jj) * pssh(ji  ,jj,Kaa)   & 
     783               &                              + e1e2t(ji+1,jj) * pssh(ji+1,jj,Kaa) ) * ssumask(ji,jj) 
     784            zzsshv = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  ) * pssh(ji,jj  ,Kaa)   & 
     785               &                              + e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) * ssvmask(ji,jj) 
     786            ! 
     787            !                             ! Save barotropic velocities (not transport) 
     788            puu_b(ji,jj,Kaa) = puu_b(ji,jj,Kaa) / ( hu_0(ji,jj) + zzsshu + 1._wp - ssumask(ji,jj) ) 
     789            pvv_b(ji,jj,Kaa) = pvv_b(ji,jj,Kaa) / ( hv_0(ji,jj) + zzsshv + 1._wp - ssvmask(ji,jj) ) 
     790         END_2D 
     791# endif    
     792         ! 
     793         CALL lbc_lnk_multi( 'dynspg_ts', puu_b, 'U', -1._wp, pvv_b, 'V', -1._wp ) ! Boundary conditions 
     794         ! 
     795      ENDIF 
    766796      ! 
    767797      ! advective transport from N to N+1 (i.e. Kbb to Kaa)  
Note: See TracChangeset for help on using the changeset viewer.