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 NEMO/branches/UKMO/r8395_coupling_sequence/NEMOGCM/NEMO/TOP_SRC/TRP – NEMO

source: NEMO/branches/UKMO/r8395_coupling_sequence/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90 @ 10763

Last change on this file since 10763 was 10763, checked in by jcastill, 5 years ago

Remove svn keywords properly

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