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/TOP_SRC/TRP/trctrp.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/TOP_SRC/TRP/trctrp.F90

    • Property svn:executable deleted
    r1800 r2528  
    55   !!====================================================================== 
    66   !! History :   1.0  !  2004-03 (C. Ethe) Original code 
     7   !!             3.3  !  2010-07 (C. Ethe) Merge TRA-TRC 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_top 
     
    1314   !!---------------------------------------------------------------------- 
    1415   USE oce_trc         ! ocean dynamics and active tracers variables 
    15    USE trp_trc         ! ocean passive tracers variables  
    16    USE trctrp_lec      ! passive tracers transport parameters 
    17    USE prtctl_trc      ! Print control for debbuging 
    18  
     16   USE trc             ! ocean passive tracers variables  
     17   USE trcnam_trp      ! passive tracers transport namelist variables 
     18   USE trabbl          ! bottom boundary layer               (trc_bbl routine) 
    1919   USE trcbbl          ! bottom boundary layer               (trc_bbl routine) 
     20   USE zdfkpp          ! KPP non-local tracer fluxes         (trc_kpp routine) 
    2021   USE trcdmp          ! internal damping                    (trc_dmp routine) 
    21  
    22    USE trcldf_bilapg   ! lateral mixing               (trc_ldf_bilapg routine) 
    23    USE trcldf_bilap    ! lateral mixing                (trc_ldf_bilap routine) 
    24    USE trcldf_iso      ! lateral mixing                  (trc_ldf_iso routine) 
    25    USE trcldf_iso_zps  ! lateral mixing              (trc_ldf_iso_zps routine) 
    26    USE trcldf_lap      ! lateral mixing                  (trc_ldf_lap routine) 
    27   
     22   USE trcldf          ! lateral mixing                      (trc_ldf routine) 
     23   USE trcadv          ! advection                           (trc_adv routine) 
     24   USE trczdf          ! vertical diffusion                  (trc_zdf routine) 
    2825   USE trcnxt          ! time-stepping                       (trc_nxt routine) 
    2926   USE trcrad          ! positivity                          (trc_rad routine) 
    30  
    31    USE trcadv_cen2     ! 2nd order centered advection   (trc_adv_cen2 routine) 
    32    USE trcadv_muscl    ! MUSCL advection               (trc_adv_muscl routine) 
    33    USE trcadv_muscl2   ! MUSCL2 advection             (trc_adv_muscl2 routine) 
    34    USE trcadv_tvd      ! TVD advection                   (trc_adv_tvd routine) 
    35    USE trcadv_smolar   ! SMOLAR advection             (trc_adv_smolar routine) 
    36  
    37    USE trczdf_exp      ! vertical diffusion              (trc_zdf_exp routine) 
    38    USE trczdf_imp      ! vertical diffusion              (trc_zdf_exp routine) 
    39    USE trczdf_iso      ! vertical diffusion              (trc_zdf_exp routine) 
    40    USE trczdf_iso_vopt ! vertical diffusion              (trc_zdf_exp routine) 
    4127   USE trcsbc          ! surface boundary condition          (trc_sbc routine) 
    42  
    43    USE zpshde_trc      ! partial step: hor. derivative   (zps_hde_trc routine) 
     28   USE zpshde          ! partial step: hor. derivative       (zps_hde routine) 
    4429 
    4530#if defined key_agrif 
     
    5540#  include "top_substitute.h90" 
    5641   !!---------------------------------------------------------------------- 
    57    !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)  
     42   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    5843   !! $Id$  
    59    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     44   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    6045   !!---------------------------------------------------------------------- 
    6146 
    6247CONTAINS 
    6348 
    64    SUBROUTINE trc_trp( kt ) 
     49   SUBROUTINE trc_trp( kstp ) 
    6550      !!---------------------------------------------------------------------- 
    6651      !!                     ***  ROUTINE trc_trp  *** 
     
    7156      !!              - Update the passive tracers 
    7257      !!---------------------------------------------------------------------- 
    73       INTEGER, INTENT( in ) ::  kt  ! ocean time-step index 
    74       !! 
    75       CHARACTER (len=25) :: charout 
     58      INTEGER, INTENT( in ) ::  kstp  ! ocean time-step index 
    7659      !! --------------------------------------------------------------------- 
    77  
    78                                CALL trc_sbc( kt )            ! surface boundary condition 
    79 # if defined key_trcbbc 
    80 !!gm bug : this should be control during the initialisation phase, not here! 
    81        CALL ctl_stop( '  Bottom heat flux not yet implemented with passive tracer         ' & 
    82            &          '  Check in trc_trp routine ' ) 
    83 # endif  
    84       !                                                      ! bottom boundary condition 
    85       IF( lk_trcbbl_dif    )   CALL trc_bbl_dif( kt )            ! diffusive bottom boundary layer scheme 
    86       IF( lk_trcbbl_adv    )   CALL trc_bbl_adv( kt )            ! advective (and/or diffusive) bottom boundary layer scheme 
    87  
    88       IF( lk_trcdmp        )   CALL trc_dmp( kt )            ! internal damping trends 
    89  
    90       !                                                      ! horizontal & vertical advection 
    91       IF( ln_trcadv_cen2   )   CALL trc_adv_cen2  ( kt )         ! 2nd order centered scheme 
    92       IF( ln_trcadv_muscl  )   CALL trc_adv_muscl ( kt )         ! MUSCL scheme 
    93       IF( ln_trcadv_muscl2 )   CALL trc_adv_muscl2( kt )         ! MUSCL2 scheme 
    94       IF( ln_trcadv_tvd    )   CALL trc_adv_tvd   ( kt )         ! TVD scheme 
    95       IF( ln_trcadv_smolar )   CALL trc_adv_smolar( kt )         ! SMOLARKIEWICZ scheme 
    96  
    97   
    98       IF( n_cla == 1   ) THEN 
    99 !!gm bug : this should be control during the initialisation phase, not here! 
    100          WRITE(ctmp1,*) ' Cross Land Advection not yet implemented with passive tracer n_cla = ',n_cla 
    101          CALL ctl_stop( ctmp1 ) 
    102       ENDIF 
    103  
    104       !                                                      ! lateral mixing  
    105       IF( l_trcldf_bilapg  )   CALL trc_ldf_bilapg ( kt )        ! s-coord. horizontal bilaplacian 
    106       IF( l_trcldf_bilap   )   CALL trc_ldf_bilap  ( kt )        ! iso-level bilaplacian  
    107       IF( l_trcldf_iso     )   CALL trc_ldf_iso    ( kt )        ! iso-neutral laplacian  
    108       IF( l_trcldf_iso_zps )   CALL trc_ldf_iso_zps( kt )        ! partial step iso-neutral laplacian 
    109       IF( l_trcldf_lap     )   CALL trc_ldf_lap    ( kt )        ! iso-level laplacian 
    110  
     60      IF( .NOT. lk_c1d ) THEN 
     61         ! 
     62                                CALL trc_sbc( kstp )            ! surface boundary condition 
     63         IF( lk_trabbl )        CALL trc_bbl( kstp )            ! advective (and/or diffusive) bottom boundary layer scheme 
     64         IF( lk_trcdmp )        CALL trc_dmp( kstp )            ! internal damping trends 
     65                                CALL trc_adv( kstp )            ! horizontal & vertical advection  
     66                                CALL trc_ldf( kstp )            ! lateral mixing 
     67         IF( .NOT. lk_offline .AND. lk_zdfkpp )    & 
     68            &                   CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes 
    11169#if defined key_agrif 
    112       IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc               ! tracers sponge 
     70         IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc           ! tracers sponge 
    11371#endif 
    114   
    115       !                                                      ! vertical diffusion 
    116       IF( l_trczdf_exp     )   CALL trc_zdf_exp     ( kt )       ! explicit time stepping (time splitting scheme) 
    117       IF( l_trczdf_imp     )   CALL trc_zdf_imp     ( kt )       ! implicit time stepping (euler backward) 
    118       IF( l_trczdf_iso     )   CALL trc_zdf_iso     ( kt )       ! isopycnal 
    119       IF( l_trczdf_iso_vo  )   CALL trc_zdf_iso_vopt( kt )       ! vector opt. isopycnal 
    120  
    121                                CALL trc_nxt( kt )            ! tracer fields at next time step 
    122       
    123       IF( ln_trcrad )          CALL trc_rad( kt )            ! Correct artificial negative concentrations 
    124       !                                                      ! especially useful when isopycnal mixing is used 
    125       !                                                       
    126  
    127       IF( ln_zps .AND. .NOT. lk_trc_c1d )   &              ! Partial steps: now horizontal gradient of passive 
    128          &                     CALL zps_hde_trc( kt, trb, gtru, gtrv )       ! tracers at the bottom ocean level 
     72                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields 
     73                                CALL trc_nxt( kstp )            ! tracer fields at next time step      
     74         IF( ln_trcrad )        CALL trc_rad( kstp )            ! Correct artificial negative concentrations 
     75         IF( ln_zps    )        CALL zps_hde( kstp, jptra, trn, gtru, gtrv )  ! Partial steps: now horizontal gradient of passive 
     76                                                                ! tracers at the bottom ocean level 
     77         ! 
     78      ELSE                                               ! 1D vertical configuration 
     79                                CALL trc_sbc( kstp )            ! surface boundary condition 
     80         IF( .NOT. lk_offline .AND. lk_zdfkpp )    & 
     81            &                   CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes 
     82                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields 
     83                                CALL trc_nxt( kstp )            ! tracer fields at next time step      
     84          IF( ln_trcrad )       CALL trc_rad( kstp )            ! Correct artificial negative concentrations 
     85         ! 
     86      END IF 
    12987      ! 
    13088   END SUBROUTINE trc_trp 
Note: See TracChangeset for help on using the changeset viewer.