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 643 for trunk/NEMO/OPA_SRC – NEMO

Changeset 643 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2007-03-15T14:34:58+01:00 (17 years ago)
Author:
opalod
Message:

nemo_v2_update_010:RB: add flux formulae for momentum

Location:
trunk/NEMO/OPA_SRC
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynvor.F90

    r541 r643  
    1212   !!            9.0  !  03-08  (G. Madec)  vor_ctl: Original code 
    1313   !!            9.0  !  05-11  (G. Madec)  dyn_vor: Original code (new step architecture) 
     14   !!            9.0  !  06-11  (G. Madec)  flux form advection: add metric term 
    1415   !!---------------------------------------------------------------------- 
    1516 
     
    2021   !!       vor_mix : mixed enstrophy/energy conserving (ln_dynvor_mix=T) 
    2122   !!       vor_een : energy and enstrophy conserving   (ln_dynvor_een=T) 
    22    !!       vor_ctl : control of the different vorticity option 
     23   !!       vor_ctl : set and control of the different vorticity option 
    2324   !!---------------------------------------------------------------------- 
    2425   USE oce            ! ocean dynamics and tracers 
    2526   USE dom_oce        ! ocean space and time domain 
     27   USE dynadv         ! momentum advection (use ln_dynadv_vec value) 
    2628   USE trdmod         ! ocean dynamics trends  
    2729   USE trdmod_oce     ! ocean variables trends 
     
    4244 
    4345   INTEGER ::   nvor = 0   ! type of vorticity trend used 
     46   INTEGER ::   ncor = 1   ! coriolis 
     47   INTEGER ::   nrvm = 2   ! =2 relative vorticity ; =3 metric term 
     48   INTEGER ::   ntot = 4   ! =4 total vorticity (relative + planetary) ; =5 coriolis + metric term 
    4449 
    4550   !! * Substitutions 
     
    7176      IF( kt == nit000 )   CALL vor_ctl          ! initialisation & control of options 
    7277 
    73       !                                          ! vorticity term including Coriolis 
     78      !                                          ! vorticity term  
    7479      SELECT CASE ( nvor )                       ! compute the vorticity trend and add it to the general trend 
    75  
     80      ! 
    7681      CASE ( -1 )                                      ! esopa: test all possibility with control print 
    77          CALL vor_ene( kt, 'TOT', ua, va ) 
     82         CALL vor_ene( kt, ntot, ua, va ) 
    7883         CALL prt_ctl( tab3d_1=ua, clinfo1=' vor0 - Ua: ', mask1=umask, & 
    7984            &          tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    80          CALL vor_ens( kt, 'TOT', ua, va ) 
     85         CALL vor_ens( kt, ntot, ua, va ) 
    8186         CALL prt_ctl( tab3d_1=ua, clinfo1=' vor1 - Ua: ', mask1=umask, & 
    8287            &          tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     
    8489         CALL prt_ctl( tab3d_1=ua, clinfo1=' vor2 - Ua: ', mask1=umask, & 
    8590            &          tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    86          CALL vor_een( kt, 'TOT', ua, va ) 
     91         CALL vor_een( kt, ntot, ua, va ) 
    8792         CALL prt_ctl( tab3d_1=ua, clinfo1=' vor3 - Ua: ', mask1=umask, & 
    8893            &          tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    89  
     94         ! 
    9095      CASE ( 0 )                                       ! energy conserving scheme 
    9196         IF( l_trddyn )   THEN 
    9297            ztrdu(:,:,:) = ua(:,:,:) 
    9398            ztrdv(:,:,:) = va(:,:,:) 
    94             CALL vor_ene( kt, 'VOR', ua, va )                ! relative vorticity trend 
     99            CALL vor_ene( kt, nrvm, ua, va )                ! relative vorticity or metric trend 
    95100            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    96101            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    98103            ztrdu(:,:,:) = ua(:,:,:) 
    99104            ztrdv(:,:,:) = va(:,:,:) 
    100             CALL vor_ene( kt, 'COR', ua, va )                ! planetary vorticity trend 
     105            CALL vor_ene( kt, ncor, ua, va )                ! planetary vorticity trend 
    101106            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    102107            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    104109            CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
    105110         ELSE 
    106             CALL vor_ene( kt, 'TOT', ua, va )                ! total vorticity 
     111            CALL vor_ene( kt, ntot, ua, va )                ! total vorticity 
    107112         ENDIF 
    108  
     113         ! 
    109114      CASE ( 1 )                                       ! enstrophy conserving scheme 
    110115         IF( l_trddyn )   THEN     
    111116            ztrdu(:,:,:) = ua(:,:,:) 
    112117            ztrdv(:,:,:) = va(:,:,:) 
    113             CALL vor_ens( kt, 'VOR', ua, va )                ! relative vorticity trend 
     118            CALL vor_ens( kt, nrvm, ua, va )                ! relative vorticity or metric trend 
    114119            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    115120            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    117122            ztrdu(:,:,:) = ua(:,:,:) 
    118123            ztrdv(:,:,:) = va(:,:,:) 
    119             CALL vor_ens( kt, 'COR', ua, va )                ! planetary vorticity trend 
     124            CALL vor_ens( kt, ncor, ua, va )                ! planetary vorticity trend 
    120125            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    121126            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    123128            CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
    124129         ELSE 
    125             CALL vor_ens( kt, 'TOT', ua, va )                ! total vorticity 
     130            CALL vor_ens( kt, ntot, ua, va )                ! total vorticity 
    126131         ENDIF 
    127  
     132         ! 
    128133      CASE ( 2 )                                       ! mixed ene-ens scheme 
    129134         IF( l_trddyn )   THEN 
    130135            ztrdu(:,:,:) = ua(:,:,:) 
    131136            ztrdv(:,:,:) = va(:,:,:) 
    132             CALL vor_ens( kt, 'VOR', ua, va )                ! relative vorticity trend (ens) 
     137            CALL vor_ens( kt, nrvm, ua, va )                ! relative vorticity or metric trend (ens) 
    133138            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    134139            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    136141            ztrdu(:,:,:) = ua(:,:,:) 
    137142            ztrdv(:,:,:) = va(:,:,:) 
    138             CALL vor_ene( kt, 'COR', ua, va )                ! planetary vorticity trend (ene) 
     143            CALL vor_ene( kt, ncor, ua, va )                ! planetary vorticity trend (ene) 
    139144            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    140145            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    144149            CALL vor_mix( kt )                               ! total vorticity (mix=ens-ene) 
    145150         ENDIF 
    146  
     151         ! 
    147152      CASE ( 3 )                                       ! energy and enstrophy conserving scheme 
    148153         IF( l_trddyn )   THEN 
    149154            ztrdu(:,:,:) = ua(:,:,:) 
    150155            ztrdv(:,:,:) = va(:,:,:) 
    151             CALL vor_een( kt, 'VOR', ua, va )                ! relative vorticity trend 
     156            CALL vor_een( kt, nrvm, ua, va )                ! relative vorticity or metric trend 
    152157            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    153158            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    155160            ztrdu(:,:,:) = ua(:,:,:) 
    156161            ztrdv(:,:,:) = va(:,:,:) 
    157             CALL vor_een( kt, 'COR', ua, va )                ! planetary vorticity trend 
     162            CALL vor_een( kt, ncor, ua, va )                ! planetary vorticity trend 
    158163            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    159164            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     
    161166            CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 
    162167         ELSE 
    163             CALL vor_een( kt, 'TOT', ua, va )                ! total vorticity 
     168            CALL vor_een( kt, ntot, ua, va )                ! total vorticity 
    164169         ENDIF 
    165  
     170         ! 
    166171      END SELECT 
    167172 
     
    173178 
    174179 
    175    SUBROUTINE vor_ene( kt, cd_vor, pua, pva ) 
     180   SUBROUTINE vor_ene( kt, kvor, pua, pva ) 
    176181      !!---------------------------------------------------------------------- 
    177182      !!                  ***  ROUTINE vor_ene  *** 
     
    199204      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    200205      !!---------------------------------------------------------------------- 
    201       INTEGER          , INTENT(in   )                         ::   kt       ! ocean time-step index 
    202       CHARACTER(len=3) , INTENT(in   )                         ::   cd_vor   ! ='COR' (planetary) ; ='VOR' (relative) 
    203          !                                                                   ! ='TOT' (total) 
    204       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua      ! total u-trend 
    205       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva      ! total v-trend 
     206      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
     207      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     208         !                                                        ! =nrvm (relative vorticity or metric) 
     209      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua    ! total u-trend 
     210      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva    ! total v-trend 
    206211      !! 
    207212      INTEGER  ::   ji, jj, jk         ! dummy loop indices 
     
    227232         ! Potential vorticity and horizontal fluxes 
    228233         ! ----------------------------------------- 
    229          SELECT CASE( cd_vor )      ! vorticity considered 
    230          CASE ( 'COR' )   ;   zwz(:,:) =                  ff(:,:)      ! planetary vorticity (Coriolis) 
    231          CASE ( 'VOR' )   ;   zwz(:,:) =   rotn(:,:,jk)                ! relative  vorticity 
    232          CASE ( 'TOT' )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) )    ! total     vorticity  
     234         SELECT CASE( kvor )      ! vorticity considered 
     235         CASE ( 1 )   ;   zwz(:,:) =                  ff(:,:)      ! planetary vorticity (Coriolis) 
     236         CASE ( 2 )   ;   zwz(:,:) =   rotn(:,:,jk)                ! relative  vorticity 
     237         CASE ( 3 )                                                ! metric term 
     238            DO jj = 1, jpjm1 
     239               DO ji = 1, fs_jpim1   ! vector opt. 
     240                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     241                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     242                       &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 
     243               END DO 
     244            END DO 
     245         CASE ( 4 )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) )    ! total (relative + planetary vorticity) 
     246         CASE ( 5 )                                                ! total (coriolis + metric) 
     247            DO jj = 1, jpjm1 
     248               DO ji = 1, fs_jpim1   ! vector opt. 
     249                  zwz(ji,jj) = ( ff (ji,jj)                                                                       & 
     250                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     251                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     252                       &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                               & 
     253                       &       ) 
     254               END DO 
     255            END DO 
    233256         END SELECT 
    234257 
     
    318341         ! ---------------------------------------------------------------- 
    319342         IF( ln_sco ) THEN         
     343            IF( ln_dynadv_vec ) THEN 
     344               zww(:,:) = rotn(:,:,jk) / fse3f(:,:,jk) 
     345            ELSE                        
     346               DO jj = 1, jpjm1 
     347                  DO ji = 1, fs_jpim1   ! vector opt. 
     348                     zww(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     349                        &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     350                        &       * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) * fse3f(ji,jj,jk) ) 
     351                  END DO 
     352               END DO 
     353            ENDIF 
    320354            zwz(:,:) = ff  (:,:)    / fse3f(:,:,jk) 
    321             zww(:,:) = rotn(:,:,jk) / fse3f(:,:,jk) 
    322355            zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
    323356            zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
    324357         ELSE 
    325             zwz(:,:) = ff(:,:) 
    326             zww(:,:) = rotn(:,:,jk) 
     358            IF( ln_dynadv_vec ) THEN 
     359               zww(:,:) = rotn(:,:,jk) 
     360            ELSE                        
     361               DO jj = 1, jpjm1 
     362                  DO ji = 1, fs_jpim1   ! vector opt. 
     363                     zww(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     364                        &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     365                        &       * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) ) 
     366                  END DO 
     367               END DO 
     368            ENDIF 
     369            zwz(:,:) = ff (:,:) 
    327370            zwx(:,:) = e2u(:,:) * un(:,:,jk) 
    328371            zwy(:,:) = e1v(:,:) * vn(:,:,jk) 
     
    354397 
    355398 
    356    SUBROUTINE vor_ens( kt, cd_vor, pua, pva ) 
     399   SUBROUTINE vor_ens( kt, kvor, pua, pva ) 
    357400      !!---------------------------------------------------------------------- 
    358401      !!                ***  ROUTINE vor_ens  *** 
     
    380423      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    381424      !!---------------------------------------------------------------------- 
    382       INTEGER          , INTENT(in   )                         ::   kt       ! ocean time-step index 
    383       CHARACTER(len=3) , INTENT(in   )                         ::   cd_vor   ! ='COR' (planetary) ; ='VOR' (relative) 
    384          !                                                                   ! ='TOT' (total) 
    385       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua      ! total u-trend 
    386       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva      ! total v-trend 
     425      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
     426      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     427         !                                                        ! =nrvm (relative vorticity or metric) 
     428      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua    ! total u-trend 
     429      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva    ! total v-trend 
    387430      !! 
    388431      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
     
    407450         ! Potential vorticity and horizontal fluxes 
    408451         ! ----------------------------------------- 
    409          SELECT CASE( cd_vor )      ! vorticity considered 
    410          CASE ( 'COR' )   ;   zwz(:,:) =                  ff(:,:)      ! planetary vorticity (Coriolis) 
    411          CASE ( 'VOR' )   ;   zwz(:,:) =   rotn(:,:,jk)                ! relative  vorticity 
    412          CASE ( 'TOT' )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) )    ! total     vorticity  
     452         SELECT CASE( kvor )      ! vorticity considered 
     453         CASE ( 1 )   ;   zwz(:,:) =                  ff(:,:)      ! planetary vorticity (Coriolis) 
     454         CASE ( 2 )   ;   zwz(:,:) =   rotn(:,:,jk)                ! relative  vorticity 
     455         CASE ( 3 )                                                ! metric term 
     456            DO jj = 1, jpjm1 
     457               DO ji = 1, fs_jpim1   ! vector opt. 
     458                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     459                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     460                       &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 
     461               END DO 
     462            END DO 
     463         CASE ( 4 )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) )    ! total (relative + planetary vorticity) 
     464         CASE ( 5 )                                                ! total (coriolis + metric) 
     465            DO jj = 1, jpjm1 
     466               DO ji = 1, fs_jpim1   ! vector opt. 
     467                  zwz(ji,jj) = ( ff (ji,jj)                                                                       & 
     468                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     469                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     470                       &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                               & 
     471                       &       ) 
     472               END DO 
     473            END DO 
    413474         END SELECT 
    414475 
     
    448509 
    449510 
    450    SUBROUTINE vor_een( kt, cd_vor, pua, pva ) 
     511   SUBROUTINE vor_een( kt, kvor, pua, pva ) 
    451512      !!---------------------------------------------------------------------- 
    452513      !!                ***  ROUTINE vor_een  *** 
     
    471532      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
    472533      !!---------------------------------------------------------------------- 
    473       INTEGER          , INTENT(in   )                         ::   kt       ! ocean time-step index 
    474       CHARACTER(len=3) , INTENT(in   )                         ::   cd_vor   ! ='COR' (planetary) ; ='VOR' (relative) 
    475          !                                                                   ! ='TOT' (total) 
    476       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua      ! total u-trend 
    477       REAL(wp)         , INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva      ! total v-trend 
     534      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
     535      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     536         !                                                        ! =nrvm (relative vorticity or metric) 
     537      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pua    ! total u-trend 
     538      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pva    ! total v-trend 
    478539      !! 
    479540      INTEGER ::   ji, jj, jk          ! dummy loop indices 
     
    513574         ! Potential vorticity and horizontal fluxes 
    514575         ! ----------------------------------------- 
    515          SELECT CASE( cd_vor )      ! vorticity considered 
    516          CASE ( 'COR' )   ;   zwz(:,:) =                  ff(:,:)   * ze3f(:,:,jk)   ! planetary vorticity (Coriolis) 
    517          CASE ( 'VOR' )   ;   zwz(:,:) =   rotn(:,:,jk)             * ze3f(:,:,jk)   ! relative  vorticity 
    518          CASE ( 'TOT' )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) * ze3f(:,:,jk)   ! total     vorticity  
     576         SELECT CASE( kvor )      ! vorticity considered 
     577         CASE ( 1 )   ;   zwz(:,:) =                  ff(:,:)      ! planetary vorticity (Coriolis) 
     578         CASE ( 2 )   ;   zwz(:,:) =   rotn(:,:,jk)                ! relative  vorticity 
     579         CASE ( 3 )                                                ! metric term 
     580            DO jj = 1, jpjm1 
     581               DO ji = 1, fs_jpim1   ! vector opt. 
     582                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     583                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     584                       &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 
     585               END DO 
     586            END DO 
     587         CASE ( 4 )   ;   zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) )    ! total (relative + planetary vorticity) 
     588         CASE ( 5 )                                                ! total (coriolis + metric) 
     589            DO jj = 1, jpjm1 
     590               DO ji = 1, fs_jpim1   ! vector opt. 
     591                  zwz(ji,jj) = ( ff (ji,jj)                                                                       & 
     592                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
     593                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
     594                       &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                               & 
     595                       &       ) * ze3f(ji,jj,jk) 
     596               END DO 
     597            END DO 
    519598         END SELECT 
    520599 
     
    590669      IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' ) 
    591670 
    592       !                              ! Set nvor 
     671      !                              ! Set nvor (type of scheme for vorticity) 
    593672      IF( ln_dynvor_ene )   nvor =  0 
    594673      IF( ln_dynvor_ens )   nvor =  1 
     
    597676      IF( lk_esopa      )   nvor = -1 
    598677       
     678      !                              ! Set ncor, nrvm, ntot (type of vorticity) 
     679      IF(lwp) WRITE(numout,*) 
     680      ncor = 1 
     681      IF( ln_dynadv_vec ) THEN      
     682         IF(lwp) WRITE(numout,*) '         Vector form advection : vorticity = Coriolis + relative vorticity' 
     683         nrvm = 2 
     684         ntot = 4 
     685      ELSE                         
     686         IF(lwp) WRITE(numout,*) '         Flux form advection   : vorticity = Coriolis + metric term' 
     687         nrvm = 3 
     688         ntot = 5 
     689      ENDIF 
     690       
    599691      IF(lwp) THEN                   ! Print the choice 
    600692         WRITE(numout,*) 
    601          IF( nvor ==  0 )   WRITE(numout,*) '         vorticity term used : energy conserving scheme' 
    602          IF( nvor ==  1 )   WRITE(numout,*) '         vorticity term used : enstrophy conserving scheme' 
    603          IF( nvor ==  2 )   WRITE(numout,*) '         vorticity term used : mixed enstrophy/energy conserving scheme' 
    604          IF( nvor ==  3 )   WRITE(numout,*) '         vorticity term used : energy and enstrophy conserving scheme' 
     693         IF( nvor ==  0 )   WRITE(numout,*) '         vorticity scheme : energy conserving scheme' 
     694         IF( nvor ==  1 )   WRITE(numout,*) '         vorticity scheme : enstrophy conserving scheme' 
     695         IF( nvor ==  2 )   WRITE(numout,*) '         vorticity scheme : mixed enstrophy/energy conserving scheme' 
     696         IF( nvor ==  3 )   WRITE(numout,*) '         vorticity scheme : energy and enstrophy conserving scheme' 
    605697         IF( nvor == -1 )   WRITE(numout,*) '         esopa test: use all lateral physics options' 
    606698      ENDIF 
  • trunk/NEMO/OPA_SRC/step.F90

    r604 r643  
    6464   USE eosbn2          ! equation of state                (eos_bn2 routine) 
    6565 
     66   USE dynadv          ! advection                        (dyn_adv routine) 
     67   USE dynvor          ! vorticity term                   (dyn_vor routine) 
    6668   USE dynhpg          ! hydrostatic pressure grad.       (dyn_hpg routine) 
    67    USE dynkeg          ! kinetic energy gradient          (dyn_keg routine) 
    68    USE dynvor          ! vorticity term                   (dyn_vor routine) 
    69    USE dynzad          ! vertical advection               (dyn_adv routine) 
    7069   USE dynldf          ! lateral momentum diffusion       (dyn_ldf routine) 
    7170   USE dynzdf          ! vertical diffusion               (dyn_zdf routine) 
     
    361360                               va(:,:,:) = 0.e0 
    362361 
    363                                CALL dyn_keg( kstp )           ! horizontal gradient of kinetic energy 
     362                               CALL dyn_adv( kstp )           ! advection (vector or flux form) 
    364363 
    365364                               CALL dyn_vor( kstp )           ! vorticity term including Coriolis 
     
    370369#endif 
    371370                               CALL dyn_hpg( kstp )           ! horizontal gradient of Hydrostatic pressure 
    372  
    373                                CALL dyn_zad( kstp )           ! vertical advection 
    374371 
    375372                               CALL dyn_zdf( kstp )           ! vertical diffusion 
Note: See TracChangeset for help on using the changeset viewer.