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/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/TRP – NEMO

source: branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90 @ 5266

Last change on this file since 5266 was 4148, checked in by cetlod, 11 years ago

merge in trunk changes between r3853 and r3940 and commit the changes, see ticket #1169

  • Property svn:keywords set to Id
File size: 5.9 KB
RevLine 
[941]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
[2528]7   !!             3.3  !  2010-07 (C. Ethe) Merge TRA-TRC
[941]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
[2528]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)
[941]19   USE trcbbl          ! bottom boundary layer               (trc_bbl routine)
[2528]20   USE zdfkpp          ! KPP non-local tracer fluxes         (trc_kpp routine)
[941]21   USE trcdmp          ! internal damping                    (trc_dmp routine)
[2528]22   USE trcldf          ! lateral mixing                      (trc_ldf routine)
23   USE trcadv          ! advection                           (trc_adv routine)
24   USE trczdf          ! vertical diffusion                  (trc_zdf routine)
[941]25   USE trcnxt          ! time-stepping                       (trc_nxt routine)
26   USE trcrad          ! positivity                          (trc_rad routine)
27   USE trcsbc          ! surface boundary condition          (trc_sbc routine)
[2528]28   USE zpshde          ! partial step: hor. derivative       (zps_hde routine)
[941]29
[1271]30#if defined key_agrif
[3680]31   USE agrif_top_sponge ! tracers sponges
32   USE agrif_top_update ! tracers updates
[1271]33#endif
34
[941]35   IMPLICIT NONE
36   PRIVATE
37
38   PUBLIC   trc_trp    ! called by trc_stp
39
40   !! * Substitutions
[1800]41#  include "top_substitute.h90"
[941]42   !!----------------------------------------------------------------------
[2528]43   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
[1146]44   !! $Id$
[2528]45   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
[941]46   !!----------------------------------------------------------------------
47
48CONTAINS
49
[2528]50   SUBROUTINE trc_trp( kstp )
[941]51      !!----------------------------------------------------------------------
52      !!                     ***  ROUTINE trc_trp  ***
53      !!                     
54      !! ** Purpose :   Management of passive tracers transport
55      !!
56      !! ** Method  : - Compute the passive tracers trends
57      !!              - Update the passive tracers
58      !!----------------------------------------------------------------------
[2528]59      INTEGER, INTENT( in ) ::  kstp  ! ocean time-step index
[941]60      !! ---------------------------------------------------------------------
[3294]61      !
62      IF( nn_timing == 1 )   CALL timing_start('trc_trp')
63      !
[2528]64      IF( .NOT. lk_c1d ) THEN
65         !
66                                CALL trc_sbc( kstp )            ! surface boundary condition
67         IF( lk_trabbl )        CALL trc_bbl( kstp )            ! advective (and/or diffusive) bottom boundary layer scheme
[4148]68         IF( ln_trcdmp )        CALL trc_dmp( kstp )            ! internal damping trends
69         IF( ln_trcdmp_clo )    CALL trc_dmp_clo( kstp )        ! internal damping trends on closed seas only
[2528]70                                CALL trc_adv( kstp )            ! horizontal & vertical advection
71                                CALL trc_ldf( kstp )            ! lateral mixing
72         IF( .NOT. lk_offline .AND. lk_zdfkpp )    &
73            &                   CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes
[1271]74#if defined key_agrif
[2528]75         IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc           ! tracers sponge
[1271]76#endif
[2528]77                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields
78                                CALL trc_nxt( kstp )            ! tracer fields at next time step     
79         IF( ln_trcrad )        CALL trc_rad( kstp )            ! Correct artificial negative concentrations
[3680]80
81#if defined key_agrif
82      IF( .NOT. Agrif_Root())   CALL Agrif_Update_Trc( kstp )   ! Update tracer at AGRIF zoom boundaries : children only
83#endif
[2528]84         IF( ln_zps    )        CALL zps_hde( kstp, jptra, trn, gtru, gtrv )  ! Partial steps: now horizontal gradient of passive
85                                                                ! tracers at the bottom ocean level
86         !
87      ELSE                                               ! 1D vertical configuration
88                                CALL trc_sbc( kstp )            ! surface boundary condition
89         IF( .NOT. lk_offline .AND. lk_zdfkpp )    &
90            &                   CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes
91                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields
92                                CALL trc_nxt( kstp )            ! tracer fields at next time step     
93          IF( ln_trcrad )       CALL trc_rad( kstp )            ! Correct artificial negative concentrations
94         !
95      END IF
[941]96      !
[3294]97      IF( nn_timing == 1 )   CALL timing_stop('trc_trp')
98      !
[941]99   END SUBROUTINE trc_trp
100
101#else
102   !!----------------------------------------------------------------------
103   !!   Dummy module :                                        No TOP models
104   !!----------------------------------------------------------------------
105CONTAINS
[3680]106   SUBROUTINE trc_trp( kstp )              ! Empty routine
107      INTEGER, INTENT(in) ::   kstp
108      WRITE(*,*) 'trc_trp: You should not have seen this print! error?', kstp
[941]109   END SUBROUTINE trc_trp
110#endif
111   
112   !!======================================================================
113END MODULE trctrp
Note: See TracBrowser for help on using the repository browser.