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 7351 for branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90 – NEMO

Ignore:
Timestamp:
2016-11-28T17:04:10+01:00 (7 years ago)
Author:
emanuelaclementi
Message:

ticket #1805 step 3: /2016/dev_INGV_UKMO_2016 aligned to the trunk at revision 7161

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r5836 r7351  
    3232 
    3333   PUBLIC   trc_adv        
    34    PUBLIC   trc_adv_alloc  
    3534   PUBLIC   trc_adv_ini   
    3635 
     
    5857   INTEGER ::              nadv             ! chosen advection scheme 
    5958   ! 
    60    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dt  ! vertical profile time-step, = 2 rdttra 
    61    !                                                    ! except at nitrrc000 (=rdttra) if neuler=0 
     59   REAL(wp) ::   r2dttrc  ! vertical profile time-step, = 2 rdt 
     60   !                                                    ! except at nitrrc000 (=rdt) if neuler=0 
    6261 
    6362   !! * Substitutions 
    64 #  include "domzgr_substitute.h90" 
    6563#  include "vectopt_loop_substitute.h90" 
    6664   !!---------------------------------------------------------------------- 
     
    7068   !!---------------------------------------------------------------------- 
    7169CONTAINS 
    72  
    73    INTEGER FUNCTION trc_adv_alloc() 
    74       !!---------------------------------------------------------------------- 
    75       !!                  ***  ROUTINE trc_adv_alloc  *** 
    76       !!---------------------------------------------------------------------- 
    77       ! 
    78       ALLOCATE( r2dt(jpk), STAT=trc_adv_alloc ) 
    79       ! 
    80       IF( trc_adv_alloc /= 0 ) CALL ctl_warn('trc_adv_alloc : failed to allocate array.') 
    81       ! 
    82    END FUNCTION trc_adv_alloc 
    83  
    8470 
    8571   SUBROUTINE trc_adv( kt ) 
     
    10389      ! 
    10490      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN     ! at nittrc000 
    105          r2dt(:) =  rdttrc(:)           ! = rdttrc (use or restarting with Euler time stepping) 
     91         r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping) 
    10692      ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nittrc000 or nittrc000+1 
    107          r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     93         r2dttrc = 2. * rdttrc       ! = 2 rdttrc (leapfrog) 
    10894      ENDIF 
    10995      !                                               !==  effective transport  ==! 
    11096      DO jk = 1, jpkm1 
    111          zun(:,:,jk) = e2u  (:,:) * fse3u(:,:,jk) * un(:,:,jk)                   ! eulerian transport 
    112          zvn(:,:,jk) = e1v  (:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
     97         zun(:,:,jk) = e2u  (:,:) * e3u_n(:,:,jk) * un(:,:,jk)                   ! eulerian transport 
     98         zvn(:,:,jk) = e1v  (:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    11399         zwn(:,:,jk) = e1e2t(:,:)                 * wn(:,:,jk) 
    114100      END DO 
     
    134120         CALL tra_adv_cen    ( kt, nittrc000,'TRC',       zun, zvn, zwn     , trn, tra, jptra, nn_cen_h, nn_cen_v ) 
    135121      CASE ( np_FCT )                                    ! FCT      : 2nd / 4th order 
    136          CALL tra_adv_fct    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
     122         CALL tra_adv_fct    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
    137123      CASE ( np_FCT_zts )                                ! 2nd order FCT with vertical time-splitting 
    138          CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra        , nn_fct_zts ) 
     124         CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra        , nn_fct_zts ) 
    139125      CASE ( np_MUS )                                    ! MUSCL 
    140          CALL tra_adv_mus    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
     126         CALL tra_adv_mus    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
    141127      CASE ( np_UBS )                                    ! UBS 
    142          CALL tra_adv_ubs    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra        , nn_ubs_v   ) 
     128         CALL tra_adv_ubs    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra        , nn_ubs_v   ) 
    143129      CASE ( np_QCK )                                    ! QUICKEST 
    144          CALL tra_adv_qck    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
     130         CALL tra_adv_qck    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
    145131      ! 
    146132      END SELECT 
     
    231217            CALL ctl_stop( 'trc_adv_init: force 2nd order FCT scheme, 4th order does not exist with sub-timestepping' ) 
    232218         ENDIF 
    233          IF( lk_vvl ) THEN 
     219         IF( .NOT.ln_linssh ) THEN 
    234220            CALL ctl_stop( 'trc_adv_init: vertical sub-timestepping not allow in non-linear free surface' ) 
    235221         ENDIF 
Note: See TracChangeset for help on using the changeset viewer.