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 3896 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2013-05-02T14:40:43+02:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Fix to dynvor.F90 to remove instability when using the EEN vorticity scheme with z-tilde. Also cosmetic changes and better initial settings for zstar/ztilde when using full ice embedding

Location:
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r3802 r3896  
    572572      INTEGER  ::   ierr                                          ! local integer 
    573573      REAL(wp) ::   zfac12, zua, zva                              ! local scalars 
     574      REAL(wp) ::   zmsk, ze3                                     ! local scalars 
    574575      !                                                           !  3D workspace  
    575576      REAL(wp), POINTER    , DIMENSION(:,:  )         :: zwx, zwy, zwz 
     
    577578#if defined key_vvl 
    578579      REAL(wp), POINTER    , DIMENSION(:,:,:)         :: ze3f     !  3D workspace (lk_vvl=T) 
    579 #endif 
    580 #if ! defined key_vvl 
     580#else 
    581581      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE   :: ze3f     ! lk_vvl=F, ze3f=1/e3f saved one for all 
    582582#endif 
     
    604604      ENDIF 
    605605 
    606       IF( kt == nit000 .OR. lk_vvl ) THEN      ! reciprocal of e3 at F-point (masked averaging of e3t) 
     606      IF( kt == nit000 .OR. lk_vvl ) THEN      ! reciprocal of e3 at F-point (masked averaging of e3t over ocean points) 
    607607         DO jk = 1, jpk 
    608608            DO jj = 1, jpjm1 
    609609               DO ji = 1, jpim1 
    610                   ze3f(ji,jj,jk) = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
    611                      &             + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) * 0.25 
    612                   IF( ze3f(ji,jj,jk) /= 0._wp )   ze3f(ji,jj,jk) = 1._wp / ze3f(ji,jj,jk) 
     610                  ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
     611                     &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
     612                  zmsk = (                   tmask(ji,jj+1,jk) +                     tmask(ji+1,jj+1,jk)   & 
     613                     &                     + tmask(ji,jj  ,jk) +                     tmask(ji+1,jj  ,jk) ) 
     614                  IF( ze3 /= 0._wp )   ze3f(ji,jj,jk) = zmsk / ze3 
    613615               END DO 
    614616            END DO 
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r3865 r3896  
    110110      ! In forward Euler time stepping case, the same formulation as in the leap-frog case can be used 
    111111      ! because emp_b field is initialized with the vlaues of emp field. Hence, 0.5 * ( emp + emp_b ) = emp 
    112       z1_rau0 = 0.5 / rau0 
     112      z1_rau0 = 0.5_wp * r1_rau0 
    113113      ssha(:,:) = (  sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * tmask(:,:,1) 
    114114 
Note: See TracChangeset for help on using the changeset viewer.