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 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90 – NEMO

Ignore:
Timestamp:
2010-12-27T18:33:53+01:00 (13 years ago)
Author:
rblod
Message:

Update NEMOGCM from branch nemo_v3_3_beta

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    • Property svn:eol-style deleted
    r1533 r2528  
    44   !! Ocean dynamics :  vertical component of the momentum mixing trend 
    55   !!============================================================================== 
    6    !! History :  9.0  !  05-11  (G. Madec)  Original code 
     6   !! History :  1.0  !  2005-11  (G. Madec)  Original code 
     7   !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
    78   !!---------------------------------------------------------------------- 
    89 
    910   !!---------------------------------------------------------------------- 
    1011   !!   dyn_zdf      : Update the momentum trend with the vertical diffusion 
    11    !!       zdf_ctl : initializations of the vertical diffusion scheme 
     12   !!   dyn_zdf_init : initializations of the vertical diffusion scheme 
    1213   !!---------------------------------------------------------------------- 
    1314   USE oce             ! ocean dynamics and tracers variables 
     
    2728   PRIVATE 
    2829 
    29    PUBLIC   dyn_zdf    !  routine called by step.F90 
     30   PUBLIC   dyn_zdf       !  routine called by step.F90 
     31   PUBLIC   dyn_zdf_init  !  routine called by opa.F90 
    3032 
    31    INTEGER  ::   nzdf = 0              ! type vertical diffusion algorithm used  
    32       !                                ! defined from ln_zdf...  namlist logicals) 
    33  
    34    REAL(wp) ::   r2dt                  ! time-step, = 2 rdttra 
    35       !                                ! except at nit000 (=rdttra) if neuler=0 
     33   INTEGER  ::   nzdf = 0   ! type vertical diffusion algorithm used, defined from ln_zdf... namlist logicals 
     34   REAL(wp) ::   r2dt       ! time-step, = 2 rdttra except at nit000 (=rdttra) if neuler=0 
    3635 
    3736   !! * Substitutions 
     
    4039#  include "vectopt_loop_substitute.h90" 
    4140   !!---------------------------------------------------------------------- 
    42    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     41   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    4342   !! $Id$ 
    44    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     43   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    4544   !!---------------------------------------------------------------------- 
    4645 
     
    5857      !!--------------------------------------------------------------------- 
    5958 
    60       IF( kt == nit000 )   CALL zdf_ctl          ! initialisation & control of options 
    61  
    6259      !                                          ! set time step 
    63       IF( neuler == 0 .AND. kt == nit000    ) THEN   ;   r2dt =      rdt      ! = rdtra (restarting with Euler time stepping) 
    64       ELSEIF(               kt <= nit000 + 1) THEN   ;   r2dt = 2. * rdt      ! = 2 rdttra (leapfrog) 
     60      IF( neuler == 0 .AND. kt == nit000     ) THEN   ;   r2dt =      rdt   ! = rdtra (restart with Euler time stepping) 
     61      ELSEIF(               kt <= nit000 + 1 ) THEN   ;   r2dt = 2. * rdt   ! = 2 rdttra (leapfrog) 
    6562      ENDIF 
    6663 
     
    7269      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    7370      ! 
    74       CASE ( 0 )   ;   CALL dyn_zdf_exp    ( kt, r2dt )      ! explicit scheme 
    75       CASE ( 1 )   ;   CALL dyn_zdf_imp    ( kt, r2dt )      ! implicit scheme 
     71      CASE ( 0 )   ;   CALL dyn_zdf_exp( kt, r2dt )      ! explicit scheme 
     72      CASE ( 1 )   ;   CALL dyn_zdf_imp( kt, r2dt )      ! implicit scheme 
    7673      ! 
    7774      CASE ( -1 )                                      ! esopa: test all possibility with control print 
    78                        CALL dyn_zdf_exp    ( kt, r2dt ) 
     75                       CALL dyn_zdf_exp( kt, r2dt ) 
    7976                       CALL prt_ctl( tab3d_1=ua, clinfo1=' zdf0 - Ua: ', mask1=umask,               & 
    8077            &                        tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    81                        CALL dyn_zdf_imp    ( kt, r2dt ) 
     78                       CALL dyn_zdf_imp( kt, r2dt ) 
    8279                       CALL prt_ctl( tab3d_1=ua, clinfo1=' zdf1 - Ua: ', mask1=umask,               & 
    8380            &                        tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     
    9693 
    9794 
    98    SUBROUTINE zdf_ctl 
     95   SUBROUTINE dyn_zdf_init 
    9996      !!---------------------------------------------------------------------- 
    100       !!                 ***  ROUTINE zdf_ctl  *** 
     97      !!                 ***  ROUTINE dyn_zdf_init  *** 
    10198      !! 
    10299      !! ** Purpose :   initializations of the vertical diffusion scheme 
     
    105102      !!                explicit (time-splitting) scheme if ln_zdfexp=T 
    106103      !!---------------------------------------------------------------------- 
    107       USE zdftke_old 
    108104      USE zdftke 
     105      USE zdfgls 
    109106      USE zdfkpp 
    110107      !!---------------------------------------------------------------------- 
    111  
     108      ! 
    112109      ! Choice from ln_zdfexp read in namelist in zdfini 
    113110      IF( ln_zdfexp ) THEN   ;   nzdf = 0           ! use explicit scheme 
    114111      ELSE                   ;   nzdf = 1           ! use implicit scheme 
    115112      ENDIF 
    116  
     113      ! 
    117114      ! Force implicit schemes 
    118       IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp )   nzdf = 1   ! TKE or KPP physics 
    119       IF( ln_dynldf_iso                               )   nzdf = 1   ! iso-neutral lateral physics 
    120       IF( ln_dynldf_hor .AND. ln_sco                  )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
    121  
     115      IF( lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp )   nzdf = 1   ! TKE, GLS or KPP physics 
     116      IF( ln_dynldf_iso                           )   nzdf = 1   ! iso-neutral lateral physics 
     117      IF( ln_dynldf_hor .AND. ln_sco              )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
     118      ! 
    122119      IF( lk_esopa )    nzdf = -1                   ! Esopa key: All schemes used 
    123  
     120      ! 
    124121      IF(lwp) THEN                                  ! Print the choice 
    125122         WRITE(numout,*) 
    126          WRITE(numout,*) 'dyn:zdf_ctl : vertical dynamics physics scheme' 
     123         WRITE(numout,*) 'dyn_zdf_init : vertical dynamics physics scheme' 
    127124         WRITE(numout,*) '~~~~~~~~~~~' 
    128125         IF( nzdf == -1 )   WRITE(numout,*) '              ESOPA test All scheme used' 
     
    131128      ENDIF 
    132129      ! 
    133    END SUBROUTINE zdf_ctl 
     130   END SUBROUTINE dyn_zdf_init 
    134131 
    135132   !!============================================================================== 
Note: See TracChangeset for help on using the changeset viewer.