source: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcbbl.F90 @ 10946

Last change on this file since 10946 was 10946, checked in by acc, 2 years ago

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Convert STO, TRD and USR modules and all knock on effects of these conversions. Note change to USR module may have implications for the TEST CASES (not tested yet). Standard SETTE tested only

  • Property svn:keywords set to Id
File size: 4.7 KB
Line 
1MODULE trcbbl
2  !!======================================================================
3   !!                       ***  MODULE  trcbbl  ***
4   !! Ocean passive tracers physics :  advective and/or diffusive bottom boundary
5   !!                                  layer scheme
6   !!======================================================================
7   !! History :  OPA  !  1996-06  (L. Mortier)  Original code
8   !!            8.0  !  1997-11  (G. Madec)    Optimization
9   !!   NEMO     1.0  !  2002-08  (G. Madec)  free form + modules
10   !!             -   !  2004-01  (A. de Miranda, G. Madec, J.M. Molines ) add advective bbl
11   !!            3.3  !  2009-11  (G. Madec)  merge trabbl and trabbl_adv + style + optimization
12   !!             -   !  2010-04  (G. Madec)  Campin & Goosse advective bbl
13   !!             -   !  2010-06  (C. Ethe, G. Madec)  merge TRA-TRC
14   !!            4.0  !  2017-04  (G. Madec)  ln_trabbl namelist variable instead of a CPP key
15   !!----------------------------------------------------------------------
16#if  defined key_top
17   !!----------------------------------------------------------------------
18   !!   'key_top'                                                TOP models
19   !!----------------------------------------------------------------------
20   !!    trc_bbl      : update the tracer trends due to the bottom boundary layer (advective and/or diffusive)
21   !!----------------------------------------------------------------------
22   USE oce_trc        ! ocean dynamics and active tracers variables
23   USE trc            ! ocean passive tracers variables
24   USE trd_oce        ! trends: ocean variables
25   USE trdtra         ! tracer trends
26   USE trabbl         ! bottom boundary layer
27   USE prtctl_trc     ! Print control for debbuging
28
29   PUBLIC   trc_bbl   !  routine called by trctrp.F90
30
31   !!----------------------------------------------------------------------
32   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
33   !! $Id$
34   !! Software governed by the CeCILL license (see ./LICENSE)
35   !!----------------------------------------------------------------------
36CONTAINS
37
38   SUBROUTINE trc_bbl( kt, Kmm, Krhs )
39      !!----------------------------------------------------------------------
40      !!                  ***  ROUTINE bbl  ***
41      !!                   
42      !! ** Purpose :   Compute the before tracer (t & s) trend associated
43      !!     with the bottom boundary layer and add it to the general trend
44      !!     of tracer equations.
45      !!
46      !!---------------------------------------------------------------------- 
47      INTEGER, INTENT( in ) ::   kt   ! ocean time-step
48      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices
49      INTEGER :: jn                   ! loop index
50      CHARACTER (len=22) :: charout
51      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrtrd
52      !!----------------------------------------------------------------------
53      !
54      IF( ln_timing )   CALL timing_start('trc_bbl')
55      !
56      IF( .NOT. l_offline .AND. nn_dttrc == 1 ) THEN
57         CALL bbl( kt, nittrc000, 'TRC' )      ! Online coupling with dynamics  : Computation of bbl coef and bbl transport
58         l_bbl = .FALSE.                       ! Offline coupling with dynamics : Read bbl coef and bbl transport from input files
59      ENDIF
60
61      IF( l_trdtrc )  THEN
62         ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) ! temporary save of trends
63         ztrtrd(:,:,:,:)  = tra(:,:,:,:)
64      ENDIF
65
66      !* Diffusive bbl :
67      IF( nn_bbl_ldf == 1 ) THEN
68         !
69         CALL tra_bbl_dif( trb, tra, jptra ) 
70         IF( ln_ctl )   THEN
71            WRITE(charout, FMT="(' bbl_dif')")  ;  CALL prt_ctl_trc_info(charout)
72            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )
73         ENDIF
74         !
75      ENDIF
76
77      !* Advective bbl : bbl upstream advective trends added to the tracer trends
78      IF( nn_bbl_adv /= 0 ) THEN
79         !
80         CALL tra_bbl_adv( trb, tra, jptra ) 
81         IF( ln_ctl )   THEN
82            WRITE(charout, FMT="(' bbl_adv')")  ;  CALL prt_ctl_trc_info(charout)
83            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )
84         ENDIF
85         !
86      ENDIF
87
88      IF( l_trdtrc )   THEN                      ! save the horizontal diffusive trends for further diagnostics
89        DO jn = 1, jptra
90           ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn)
91           CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) )
92        END DO
93        DEALLOCATE( ztrtrd ) ! temporary save of trends
94      ENDIF
95      !
96      IF( ln_timing )   CALL timing_stop('trc_bbl')
97      !
98   END SUBROUTINE trc_bbl
99
100#endif
101
102   !!======================================================================
103END MODULE trcbbl
Note: See TracBrowser for help on using the repository browser.