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.
trctrp.F90 in branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP – NEMO

source: branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trctrp.F90 @ 2194

Last change on this file since 2194 was 2194, checked in by cetlod, 14 years ago

ensure restartability of PISCES

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 5.5 KB
Line 
1MODULE trctrp
2   !!======================================================================
3   !!                       ***  MODULE trctrp  ***
4   !! Ocean Physics    : manage the passive tracer transport
5   !!======================================================================
6   !! History :   1.0  !  2004-03 (C. Ethe) Original code
7   !!             3.3  !  2010-07 (C. Ethe) Merge TRA-TRC
8   !!----------------------------------------------------------------------
9#if defined key_top
10   !!----------------------------------------------------------------------
11   !!   'key_top'                                                TOP models
12   !!----------------------------------------------------------------------
13   !!   trc_trp        : passive tracer transport
14   !!----------------------------------------------------------------------
15   USE oce_trc         ! ocean dynamics and active tracers variables
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)
19   USE trcbbl          ! bottom boundary layer               (trc_bbl routine)
20#if ! defined key_offline
21   USE zdfkpp          ! KPP non-local tracer fluxes         (trc_kpp routine)
22#endif
23   USE trcdmp          ! internal damping                    (trc_dmp routine)
24   USE trcldf          ! lateral mixing                      (trc_ldf routine)
25   USE trcadv          ! advection                           (trc_adv routine)
26   USE trczdf          ! vertical diffusion                  (trc_zdf routine)
27   USE trcnxt          ! time-stepping                       (trc_nxt routine)
28   USE trcrad          ! positivity                          (trc_rad routine)
29   USE trcsbc          ! surface boundary condition          (trc_sbc routine)
30   USE zpshde          ! partial step: hor. derivative       (zps_hde routine)
31
32#if defined key_agrif
33   USE agrif_top_sponge ! Momemtum and tracers sponges
34#endif
35
36   IMPLICIT NONE
37   PRIVATE
38
39   PUBLIC   trc_trp    ! called by trc_stp
40
41   !! * Substitutions
42#  include "top_substitute.h90"
43   !!----------------------------------------------------------------------
44   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
45   !! $Id$
46   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
47   !!----------------------------------------------------------------------
48
49CONTAINS
50
51   SUBROUTINE trc_trp( kstp )
52      !!----------------------------------------------------------------------
53      !!                     ***  ROUTINE trc_trp  ***
54      !!                     
55      !! ** Purpose :   Management of passive tracers transport
56      !!
57      !! ** Method  : - Compute the passive tracers trends
58      !!              - Update the passive tracers
59      !!----------------------------------------------------------------------
60      INTEGER, INTENT( in ) ::  kstp  ! ocean time-step index
61      !! ---------------------------------------------------------------------
62      IF( .NOT. lk_trc_c1d ) THEN
63         !
64                                CALL trc_sbc( kstp )            ! surface boundary condition
65         IF( lk_trabbl )        CALL trc_bbl( kstp )            ! advective (and/or diffusive) bottom boundary layer scheme
66         IF( lk_trcdmp )        CALL trc_dmp( kstp )            ! internal damping trends
67                                CALL trc_adv( kstp )            ! horizontal & vertical advection
68                                CALL trc_ldf( kstp )            ! lateral mixing
69#if ! defined key_offline
70         IF( lk_zdfkpp )        CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes
71#endif
72#if defined key_agrif
73         IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc           ! tracers sponge
74#endif
75                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields
76                                CALL trc_nxt( kstp )            ! tracer fields at next time step     
77         IF( ln_trcrad )        CALL trc_rad( kstp )            ! Correct artificial negative concentrations
78         IF( ln_zps    )        CALL zps_hde( kstp, jptra, trn, gtru, gtrv )  ! Partial steps: now horizontal gradient of passive
79                                                                ! tracers at the bottom ocean level
80         !
81      ELSE                                               ! 1D vertical configuration
82                                CALL trc_sbc( kstp )            ! surface boundary condition
83#if ! defined key_offline
84          IF( lk_zdfkpp )       CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes
85#endif
86                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields
87                                CALL trc_nxt( kstp )            ! tracer fields at next time step     
88          IF( ln_trcrad )       CALL trc_rad( kstp )            ! Correct artificial negative concentrations
89         !
90      END IF
91      !
92   END SUBROUTINE trc_trp
93
94#else
95   !!----------------------------------------------------------------------
96   !!   Dummy module :                                        No TOP models
97   !!----------------------------------------------------------------------
98CONTAINS
99   SUBROUTINE trc_trp( kt )              ! Empty routine
100      INTEGER, INTENT(in) ::   kt
101      WRITE(*,*) 'trc_trp: You should not have seen this print! error?', kt
102   END SUBROUTINE trc_trp
103#endif
104   
105   !!======================================================================
106END MODULE trctrp
Note: See TracBrowser for help on using the repository browser.