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 10094 for NEMO/branches/UKMO/dev_r10037_dynvor_EEUV/src/OCE/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2018-09-06T15:24:19+02:00 (6 years ago)
Author:
davestorkey
Message:

UKMO dev_r10037_dynvor_EEUV branch : add new dynvor scheme.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/dev_r10037_dynvor_EEUV/src/OCE/DYN/dynspg_ts.F90

    r9950 r10094  
    104104      ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT=ierr(1) ) 
    105105      ! 
    106       IF( ln_dynvor_een .OR. ln_dynvor_eeT )   & 
     106      IF( ln_dynvor_een .OR. ln_dynvor_eeT .OR. ln_dynvor_eeUV)   & 
    107107         &     ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
    108108         &               ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(2) ) 
     
    156156      REAL(wp) ::   za0, za1, za2, za3              !   -      - 
    157157      REAL(wp) ::   zmdi, zztmp            , z1_ht  !   -      - 
     158      REAL(wp) ::   zmask_ne,zmask_nw,zmask_se,zmask_sw 
     159      REAL(wp) ::   z1_huv_ne,z1_huv_nw,z1_huv_se,z1_huv_sw 
    158160      REAL(wp), DIMENSION(jpi,jpj) :: zsshp2_e, zhf 
    159161      REAL(wp), DIMENSION(jpi,jpj) :: zwx, zu_trd, zu_frc, zssh_frc 
     
    283285                  ftse(ji,jj) = ( ff_f(ji  ,jj  ) + ff_f(ji  ,jj-1) + ff_f(ji-1,jj-1) ) * z1_ht 
    284286                  ftsw(ji,jj) = ( ff_f(ji  ,jj-1) + ff_f(ji-1,jj-1) + ff_f(ji-1,jj  ) ) * z1_ht 
     287               END DO 
     288            END DO 
     289         CASE( np_EEUV )                  != EEN scheme using e3u and e3v (energy conserving scheme) 
     290            ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     291            DO jj = 2, jpj 
     292               DO ji = 2, jpi 
     293                  zmask_ne = MAX(ssumask(ji  ,jj),ssvmask(ji,jj  )) 
     294                  zmask_nw = MAX(ssumask(ji-1,jj),ssvmask(ji,jj  )) 
     295                  zmask_se = MAX(ssumask(ji  ,jj),ssvmask(ji,jj-1)) 
     296                  zmask_sw = MAX(ssumask(ji-1,jj),ssvmask(ji,jj-1)) 
     297                  z1_huv_ne = 2._wp * zmask_ne / ( hu_n(ji  ,jj) + hv_n(ji,jj  ) + 1._wp - zmask_ne ) 
     298                  z1_huv_nw = 2._wp * zmask_nw / ( hu_n(ji-1,jj) + hv_n(ji,jj  ) + 1._wp - zmask_nw ) 
     299                  z1_huv_se = 2._wp * zmask_se / ( hu_n(ji  ,jj) + hv_n(ji,jj-1) + 1._wp - zmask_se ) 
     300                  z1_huv_sw = 2._wp * zmask_sw / ( hu_n(ji-1,jj) + hv_n(ji,jj-1) + 1._wp - zmask_sw ) 
     301                  ftne(ji,jj) = ( ff_f(ji-1,jj  ) + ff_f(ji  ,jj  ) + ff_f(ji  ,jj-1) ) * z1_huv_ne 
     302                  ftnw(ji,jj) = ( ff_f(ji-1,jj-1) + ff_f(ji-1,jj  ) + ff_f(ji  ,jj  ) ) * z1_huv_nw 
     303                  ftse(ji,jj) = ( ff_f(ji  ,jj  ) + ff_f(ji  ,jj-1) + ff_f(ji-1,jj-1) ) * z1_huv_se 
     304                  ftsw(ji,jj) = ( ff_f(ji  ,jj-1) + ff_f(ji-1,jj-1) + ff_f(ji-1,jj  ) ) * z1_huv_sw 
    285305               END DO 
    286306            END DO 
     
    426446         END DO 
    427447         ! 
    428       CASE( np_EET , np_EEN )      ! energy & enstrophy scheme (using e3t or e3f)          
     448      CASE( np_EET , np_EEN,  np_EEUV )      ! energy & enstrophy scheme (using e3t or e3f or e3u and e3v)          
    429449         DO jj = 2, jpjm1 
    430450            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10351055            END DO 
    10361056            ! 
    1037          CASE( np_EET , np_EEN )   ! energy & enstrophy scheme (using e3t or e3f) 
     1057         CASE( np_EET , np_EEN,  np_EEUV )   ! energy & enstrophy scheme (using e3t or e3f or e3u and e3v) 
    10381058            DO jj = 2, jpjm1 
    10391059               DO ji = fs_2, fs_jpim1   ! vector opt. 
Note: See TracChangeset for help on using the changeset viewer.