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 5086 for branches/2014/dev_r4650_UKMO3_masked_damping/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90 – NEMO

Ignore:
Timestamp:
2015-02-17T10:06:39+01:00 (9 years ago)
Author:
timgraham
Message:

Merged head of trunk into branch in preparation for putting code back onto the trunk
In working copy ran the command:
svn merge svn+sshtimgraham@…/ipsl/forge/projets/nemo/svn/trunk

Also recompiled NEMO_book.pdf with merged input files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO3_masked_damping/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r4624 r5086  
    1515   !!            3.2  ! 2009-04  (R. Benshila)  vvl: correction of een scheme 
    1616   !!            3.3  ! 2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
     17   !!            3.7  ! 2014-04  (G. Madec) trend simplification: suppress jpdyn_trd_dat vorticity  
    1718   !!---------------------------------------------------------------------- 
    1819 
     
    2930   USE dommsk         ! ocean mask 
    3031   USE dynadv         ! momentum advection (use ln_dynadv_vec value) 
    31    USE trdmod         ! ocean dynamics trends  
    32    USE trdmod_oce     ! ocean variables trends 
     32   USE trd_oce        ! trends: ocean variables 
     33   USE trddyn         ! trend manager: dynamics 
    3334   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    3435   USE prtctl         ! Print control 
     
    5051   LOGICAL, PUBLIC ::   ln_dynvor_mix   !: mixed scheme 
    5152   LOGICAL, PUBLIC ::   ln_dynvor_een   !: energy and enstrophy conserving scheme 
     53   LOGICAL, PUBLIC ::   ln_dynvor_een_old !: energy and enstrophy conserving scheme (original formulation) 
    5254 
    5355   INTEGER ::   nvor = 0   ! type of vorticity trend used 
     
    7375      !! ** Action : - Update (ua,va) with the now vorticity term trend 
    7476      !!             - save the trends in (ztrdu,ztrdv) in 2 parts (relative 
    75       !!               and planetary vorticity trends) ('key_trddyn') 
     77      !!               and planetary vorticity trends) and send them to trd_dyn  
     78      !!               for futher diagnostics (l_trddyn=T) 
    7679      !!---------------------------------------------------------------------- 
    7780      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     
    108111            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    109112            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    110             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt ) 
     113            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    111114            ztrdu(:,:,:) = ua(:,:,:) 
    112115            ztrdv(:,:,:) = va(:,:,:) 
     
    114117            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    115118            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    116             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 
    117             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
     119            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    118120         ELSE 
    119121            CALL vor_ene( kt, ntot, ua, va )                ! total vorticity 
     
    127129            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    128130            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    129             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt ) 
     131            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    130132            ztrdu(:,:,:) = ua(:,:,:) 
    131133            ztrdv(:,:,:) = va(:,:,:) 
     
    133135            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    134136            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    135             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 
    136             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
     137            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    137138         ELSE 
    138139            CALL vor_ens( kt, ntot, ua, va )                ! total vorticity 
     
    146147            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    147148            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    148             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt ) 
     149            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    149150            ztrdu(:,:,:) = ua(:,:,:) 
    150151            ztrdv(:,:,:) = va(:,:,:) 
     
    152153            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    153154            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    154             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 
    155             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
     155            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    156156         ELSE 
    157157            CALL vor_mix( kt )                               ! total vorticity (mix=ens-ene) 
     
    165165            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    166166            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    167             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt ) 
     167            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    168168            ztrdu(:,:,:) = ua(:,:,:) 
    169169            ztrdv(:,:,:) = va(:,:,:) 
     
    171171            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    172172            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    173             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 
    174             CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
     173            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    175174         ELSE 
    176175            CALL vor_een( kt, ntot, ua, va )                ! total vorticity 
     
    211210      !! 
    212211      !! ** Action : - Update (ua,va) with the now vorticity term trend 
    213       !!             - save the trends in (ztrdu,ztrdv) in 2 parts (relative 
    214       !!               and planetary vorticity trends) ('key_trddyn') 
    215212      !! 
    216213      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
     
    328325      !! 
    329326      !! ** Action : - Update (ua,va) arrays with the now vorticity term trend 
    330       !!             - Save the trends in (ztrdu,ztrdv) in 2 parts (relative 
    331       !!               and planetary vorticity trends) ('key_trddyn') 
    332327      !! 
    333328      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
     
    444439      !! 
    445440      !! ** Action : - Update (ua,va) arrays with the now vorticity term trend 
    446       !!             - Save the trends in (ztrdu,ztrdv) in 2 parts (relative  
    447       !!               and planetary vorticity trends) ('key_trddyn') 
    448441      !! 
    449442      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
     
    557550      !! 
    558551      !! ** Action : - Update (ua,va) with the now vorticity term trend 
    559       !!             - save the trends in (ztrdu,ztrdv) in 2 parts (relative 
    560       !!               and planetary vorticity trends) ('key_trddyn') 
    561552      !! 
    562553      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
     
    601592            IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'dyn:vor_een : unable to allocate arrays' ) 
    602593         ENDIF 
    603          ze3f(:,:,:) = 0.d0 
     594         ze3f(:,:,:) = 0._wp 
    604595#endif 
    605596      ENDIF 
    606597 
    607598      IF( kt == nit000 .OR. lk_vvl ) THEN      ! reciprocal of e3 at F-point (masked averaging of e3t over ocean points) 
    608          DO jk = 1, jpk 
    609             DO jj = 1, jpjm1 
    610                DO ji = 1, jpim1 
    611                   ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
    612                      &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
    613                   zmsk = (                   tmask(ji,jj+1,jk) +                     tmask(ji+1,jj+1,jk)   & 
    614                      &                     + tmask(ji,jj  ,jk) +                     tmask(ji+1,jj  ,jk) ) 
    615                   IF( ze3 /= 0._wp )   ze3f(ji,jj,jk) = zmsk / ze3 
    616                END DO 
    617             END DO 
    618          END DO 
     599 
     600         IF( ln_dynvor_een_old ) THEN ! original formulation 
     601            DO jk = 1, jpk 
     602               DO jj = 1, jpjm1 
     603                  DO ji = 1, jpim1 
     604                     ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
     605                        &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
     606                     IF( ze3 /= 0._wp )   ze3f(ji,jj,jk) = 4.0_wp / ze3 
     607                  END DO 
     608               END DO 
     609            END DO 
     610         ELSE ! new formulation from NEMO 3.6 
     611            DO jk = 1, jpk 
     612               DO jj = 1, jpjm1 
     613                  DO ji = 1, jpim1 
     614                     ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
     615                        &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
     616                     zmsk = (                   tmask(ji,jj+1,jk) +                     tmask(ji+1,jj+1,jk)   & 
     617                        &                     + tmask(ji,jj  ,jk) +                     tmask(ji+1,jj  ,jk) ) 
     618                     IF( ze3 /= 0._wp )   ze3f(ji,jj,jk) = zmsk / ze3 
     619                  END DO 
     620               END DO 
     621            END DO 
     622         ENDIF 
     623 
    619624         CALL lbc_lnk( ze3f, 'F', 1. ) 
    620625      ENDIF 
     
    715720      INTEGER ::   ios             ! Local integer output status for namelist read 
    716721      !! 
    717       NAMELIST/namdyn_vor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix, ln_dynvor_een 
     722      NAMELIST/namdyn_vor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix, ln_dynvor_een, ln_dynvor_een_old 
    718723      !!---------------------------------------------------------------------- 
    719724 
     
    736741         WRITE(numout,*) '           mixed enstrophy/energy conserving scheme   ln_dynvor_mix = ', ln_dynvor_mix 
    737742         WRITE(numout,*) '           enstrophy and energy conserving scheme     ln_dynvor_een = ', ln_dynvor_een 
     743         WRITE(numout,*) '           enstrophy and energy conserving scheme (old) ln_dynvor_een_old= ', ln_dynvor_een_old 
    738744      ENDIF 
    739745 
     
    759765      IF( ln_dynvor_mix )   ioptio = ioptio + 1 
    760766      IF( ln_dynvor_een )   ioptio = ioptio + 1 
     767      IF( ln_dynvor_een_old )   ioptio = ioptio + 1 
    761768      IF( lk_esopa      )   ioptio =          1 
    762769 
     
    767774      IF( ln_dynvor_ens )   nvor =  1 
    768775      IF( ln_dynvor_mix )   nvor =  2 
    769       IF( ln_dynvor_een )   nvor =  3 
     776      IF( ln_dynvor_een .or. ln_dynvor_een_old )   nvor =  3 
    770777      IF( lk_esopa      )   nvor = -1 
    771778       
Note: See TracChangeset for help on using the changeset viewer.