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 786 for branches/dev_001_GM/NEMO/OPA_SRC/TRA/trazdf.F90 – NEMO

Ignore:
Timestamp:
2008-01-10T18:11:23+01:00 (16 years ago)
Author:
gm
Message:

dev_001_GM - merge TRC-TRA on OPA only, trabbl & zpshde not done and trdmld not OK - compilation OK

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_001_GM/NEMO/OPA_SRC/TRA/trazdf.F90

    r719 r786  
    1414   USE dom_oce         ! ocean space and time domain variables  
    1515   USE zdf_oce         ! ocean vertical physics variables 
     16   USE zdfddm          ! vertical mixing: double diffusion 
    1617 
    1718   USE trazdf_exp      ! vertical diffusion: explicit (tra_zdf_exp     routine) 
    1819   USE trazdf_imp      ! vertical diffusion: implicit (tra_zdf_imp     routine) 
    19    USE trazdf_imp_jki  ! vertical diffusion  implicit (tra_zdf_imp_jki routine) 
    2020 
    2121   USE ldftra_oce      ! ocean active tracers: lateral physics 
     
    4747#  include "vectopt_loop_substitute.h90" 
    4848   !!---------------------------------------------------------------------- 
    49    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    50    !! $Header$  
     49   !! NEMO/OPA 2.4 , LOCEAN-IPSL (2008)  
     50   !! $Id:$  
    5151   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    5252   !!---------------------------------------------------------------------- 
     
    8484      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    8585      CASE ( -1 )                                       ! esopa: test all possibility with control print 
    86          CALL tra_zdf_exp    ( kt, r2dt ) 
     86         CALL tra_zdf_exp    ( kt, r2dt,   avt       , tb, ta )   ! temperature 
     87         CALL tra_zdf_exp    ( kt, r2dt, fsavs(:,:,:), tb, ta )   ! salinity 
    8788         CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf0 - Ta: ', mask1=tmask,               & 
    8889            &          tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    89          CALL tra_zdf_imp    ( kt, r2dt ) 
    90          CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf1 - Ta: ', mask1=tmask,               & 
    91             &          tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    92          CALL tra_zdf_imp_jki( kt, r2dt ) 
    93          CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf2 - Ta: ', mask1=tmask,               & 
    94             &          tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     90         CALL tra_zdf_imp( kt, r2dt, 'TRA' )                      ! T & S zdf trends 
    9591 
    9692      CASE ( 0 )                                       ! explicit scheme 
    97          CALL tra_zdf_exp    ( kt, r2dt ) 
    98          IF( l_trdtra )   THEN                         ! save the vertical diffusive trends for further diagnostics 
     93         CALL tra_zdf_exp    ( kt, r2dt,   avt       , tb, ta )   ! temperature 
     94         CALL tra_zdf_exp    ( kt, r2dt, fsavs(:,:,:), tb, ta )   ! salinity 
     95         IF( l_trdtra )   THEN                                    ! zdf trends diagnostics 
    9996            ztrdt(:,:,:) = ta(:,:,:) - ztrdt(:,:,:) 
    10097            ztrds(:,:,:) = sa(:,:,:) - ztrds(:,:,:) 
    101             CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 
     98            CALL trd_tra( kt, jp_tem, jpt_trd_ldf, 'TRA', ptrd3d=ztrdt) 
     99            CALL trd_tra( kt, jp_sal, jpt_trd_ldf, 'TRA', ptrd3d=ztrds) 
    102100         ENDIF 
    103101 
    104       CASE ( 1 )                                       ! implicit scheme (k-j-i loop) 
    105          CALL tra_zdf_imp    ( kt, r2dt ) 
    106          IF( l_trdtra )   THEN                         ! save the vertical diffusive trends for further diagnostics 
     102      CASE ( 1 )                                       ! implicit scheme 
     103         CALL tra_zdf_imp( kt, r2dt, 'TRA' )                      ! T & S zdf trends 
     104         IF( l_trdtra )   THEN                                    ! zdf trends diagnostics 
    107105            DO jk = 1, jpkm1 
    108106               ztrdt(:,:,jk) = ( ( ta(:,:,jk) - tb(:,:,jk) ) / r2dt(jk) ) - ztrdt(:,:,jk) 
    109107               ztrds(:,:,jk) = ( ( sa(:,:,jk) - sb(:,:,jk) ) / r2dt(jk) ) - ztrds(:,:,jk) 
    110108            END DO 
    111             CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 
    112          ENDIF 
    113  
    114       CASE ( 2 )                                       ! implicit scheme (j-k-i loop) 
    115          CALL tra_zdf_imp_jki( kt, r2dt ) 
    116          IF( l_trdtra )   THEN                         ! save the vertical diffusive trends for further diagnostics 
    117             DO jk = 1, jpkm1 
    118                ztrdt(:,:,jk) = ( ( ta(:,:,jk) - tb(:,:,jk) ) / r2dt(jk) ) - ztrdt(:,:,jk) 
    119                ztrds(:,:,jk) = ( ( sa(:,:,jk) - sb(:,:,jk) ) / r2dt(jk) ) - ztrds(:,:,jk) 
    120             END DO 
    121             CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 
     109            CALL trd_tra( kt, jp_tem, jpt_trd_zdf, 'TRA', ptrd3d=ztrdt) 
     110            CALL trd_tra( kt, jp_sal, jpt_trd_zdf, 'TRA', ptrd3d=ztrds) 
    122111         ENDIF 
    123112 
     
    127116      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf  - Ta: ', mask1=tmask,               & 
    128117         &                       tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    129  
     118      ! 
    130119   END SUBROUTINE tra_zdf 
    131120 
     
    153142 
    154143      ! Choice from ln_zdfexp already read in namelist in zdfini module 
    155       IF( ln_zdfexp ) THEN               ! use explicit scheme 
    156          nzdf = 0 
    157       ELSE                               ! use implicit scheme 
    158          nzdf = 1 
     144      IF( ln_zdfexp ) THEN   ;   nzdf = 0              ! use explicit scheme 
     145      ELSE                   ;   nzdf = 1              ! use implicit scheme 
    159146      ENDIF 
    160147 
     
    169156      ENDIF 
    170157 
    171       ! NEC autotasking / OpenMP 
    172 #if defined key_mpp_omp 
    173       IF( nzdf == 1 )   nzdf = 2                       ! j-k-i loop 
    174 #endif 
    175  
    176158      ! Test: esopa 
    177159      IF( lk_esopa )    nzdf = -1                      ! All schemes used 
     
    184166         IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    185167         IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
    186          IF( nzdf ==  2 )   WRITE(numout,*) '              Implicit (euler backward) scheme with j-k-i loops' 
    187168      ENDIF 
    188169 
Note: See TracChangeset for help on using the changeset viewer.