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 12397 for NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90 – NEMO

Ignore:
Timestamp:
2020-02-18T11:58:37+01:00 (4 years ago)
Author:
davestorkey
Message:

2020/KERNEL-03_Storkey_Coward_RK3_stage2 : Consolidation of code to
handle initial Euler timestep in the context of leapfrog
timestepping. This version passes all SETTE tests but fails to bit
compare with the control for several tests (ORCA2_ICE_PISCES, AMM12,
ISOMIP, AGRIF_DEMO, SPITZ12).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90

    r12377 r12397  
    8686      INTEGER  ::  ip,jp,kp         ! dummy loop indices 
    8787      INTEGER  ::  ierr            ! local integer 
    88       REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3          ! local scalars 
    89       REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4          !   -      - 
    90       REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt  !   -      - 
     88      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3    ! local scalars 
     89      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4    !   -      - 
     90      REAL(wp) ::  zcoef0, ze3w_2, zsign          !   -      - 
    9191      ! 
    9292      REAL(wp) ::   zslope_skew, zslope_iso, zslope2, zbu, zbv 
     
    111111      l_hst = .FALSE. 
    112112      l_ptr = .FALSE. 
    113       IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) )      l_ptr = .TRUE.  
    114       IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 
    115          &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE. 
    116       ! 
    117       !                                                        ! set time step size (Euler/Leapfrog) 
    118       IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
    119       ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
     113      IF( cdtype == 'TRA' ) THEN 
     114         IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf') )      l_ptr = .TRUE.  
     115         IF( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR.                   & 
     116         &   iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  )   l_hst = .TRUE. 
    120117      ENDIF 
    121       z1_2dt = 1._wp / z2dt 
    122118      ! 
    123119      IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0) 
     
    189185               DO_3D_10_10( 2, jpkm1 ) 
    190186                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    191                   zcoef0 = z2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
    192                   akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * z1_2dt 
     187                  zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     188                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt 
    193189               END_3D 
    194190           ENDIF 
Note: See TracChangeset for help on using the changeset viewer.