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.
trdmod_trc.F90 in trunk/NEMOGCM/NEMO/TOP_SRC/TRP – NEMO

source: trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trdmod_trc.F90 @ 3294

Last change on this file since 3294 was 3294, checked in by rblod, 12 years ago

Merge of 3.4beta into the trunk

  • Property svn:keywords set to Id
File size: 7.6 KB
Line 
1MODULE trdmod_trc
2   !!======================================================================
3   !!                       ***  MODULE  trdmod_trc  ***
4   !! Ocean diagnostics:  mixed layer passive tracer trends
5   !!======================================================================
6   !! History :  3.0  !  2010-07  (C. Ethe)  Original code (from trdmod.F90)
7   !!----------------------------------------------------------------------
8#if   defined key_top && ( defined key_trdmld_trc   ||   defined key_trdtrc )
9   !!----------------------------------------------------------------------
10   !!   'key_trdmld_trc'                  mixed layer trend diagnostics
11   !!   'key_trdtrc'                      3D trend diagnostics
12   !!----------------------------------------------------------------------
13   !!   trd_mod_trc      : passive tracer trends
14   !!----------------------------------------------------------------------
15   USE trc               ! tracer definitions (trn, trb, tra, etc.)
16   USE trcnam_trp
17   USE trdmod_oce
18   USE trdmod_trc_oce    ! definition of main arrays used for trends computations
19   USE trdmld_trc        ! Mixed layer trends diag.
20   USE iom               ! I/O library
21
22   IMPLICIT NONE
23   PRIVATE
24
25   INTERFACE trd_mod_trc
26      MODULE PROCEDURE trd_mod_trc_trp, trd_mod_trc_bio
27   END INTERFACE
28
29   PUBLIC trd_mod_trc
30
31   !! * Substitutions
32#  include "top_substitute.h90"
33   !!----------------------------------------------------------------------
34   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
35   !! $Header:  $
36   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
37   !!----------------------------------------------------------------------
38
39CONTAINS
40
41   SUBROUTINE trd_mod_trc_trp( ptrtrd, kjn, ktrd, kt )
42      !!----------------------------------------------------------------------
43      !!                  ***  ROUTINE trd_mod_trc  ***
44      !!----------------------------------------------------------------------
45      INTEGER, INTENT( in )  ::   kt                                  ! time step
46      INTEGER, INTENT( in )  ::   kjn                                 ! tracer index
47      INTEGER, INTENT( in )  ::   ktrd                                ! tracer trend index
48      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout )  ::   ptrtrd  ! Temperature or U trend
49      CHARACTER (len=20) :: cltra
50      !!----------------------------------------------------------------------
51
52      IF( kt == nittrc000 ) THEN
53!         IF(lwp)WRITE(numout,*)
54!         IF(lwp)WRITE(numout,*) 'trd_mod_trc:'
55!         IF(lwp)WRITE(numout,*) '~~~~~~~~~~~~'
56      ENDIF
57
58      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59      ! Mixed layer trends for passive tracers
60      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
61      IF( lk_trdmld_trc .AND. ln_trdtrc( kjn ) ) THEN
62         !
63         SELECT CASE ( ktrd )
64         CASE ( jptra_trd_xad     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_xad, '3D', kjn )
65         CASE ( jptra_trd_yad     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_yad, '3D', kjn )
66         CASE ( jptra_trd_zad     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_zad, '3D', kjn )
67         CASE ( jptra_trd_ldf     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_ldf, '3D', kjn )
68         CASE ( jptra_trd_bbl     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_bbl, '3D', kjn )
69         CASE ( jptra_trd_zdf     )
70            IF( ln_trcldf_iso ) THEN
71               CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_ldf, '3D', kjn )
72            ELSE
73               CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_zdf, '3D', kjn )
74            ENDIF
75         CASE ( jptra_trd_dmp     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_dmp , '3D', kjn )
76         CASE ( jptra_trd_nsr     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_sbc , '2D', kjn )
77         CASE ( jptra_trd_sms     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_sms , '3D', kjn )
78         CASE ( jptra_trd_radb    )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_radb, '3D', kjn )
79         CASE ( jptra_trd_radn    )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_radn, '3D', kjn )
80         CASE ( jptra_trd_atf     )   ;   CALL trd_mld_trc_zint( ptrtrd, jpmld_trc_atf , '3D', kjn )
81         END SELECT
82         !
83      END IF
84
85      IF( lk_trdtrc .AND. ln_trdtrc( kjn ) ) THEN
86         !
87         SELECT CASE( ktrd )
88         CASE( jptra_trd_xad )       ;    WRITE (cltra,'("XAD_",16a)')   ctrcnm(kjn)
89         CASE( jptra_trd_yad )       ;    WRITE (cltra,'("YAD_",16a)')   ctrcnm(kjn)
90         CASE( jptra_trd_zad )       ;    WRITE (cltra,'("ZAD_",16a)')   ctrcnm(kjn)
91         CASE( jptra_trd_ldf )       ;    WRITE (cltra,'("LDF_",16a)')   ctrcnm(kjn)
92         CASE( jptra_trd_bbl )       ;    WRITE (cltra,'("BBL_",16a)')   ctrcnm(kjn)
93         CASE( jptra_trd_zdf )       ;    WRITE (cltra,'("ZDF_",16a)')   ctrcnm(kjn)
94         CASE( jptra_trd_dmp )       ;    WRITE (cltra,'("DMP_",16a)')   ctrcnm(kjn)
95         CASE( jptra_trd_nsr )       ;    WRITE (cltra,'("FOR_",16a)')   ctrcnm(kjn)
96         END SELECT
97                                          CALL iom_put( cltra,  ptrtrd(:,:,:) )
98         !
99      END IF
100
101   END SUBROUTINE trd_mod_trc_trp
102
103   SUBROUTINE trd_mod_trc_bio( ptrbio, ktrd, kt )
104      !!----------------------------------------------------------------------
105      !!                  ***  ROUTINE trd_mod_bio  ***
106      !!----------------------------------------------------------------------
107
108      INTEGER, INTENT( in )  ::   kt                                  ! time step
109      INTEGER, INTENT( in )  ::   ktrd                                ! bio trend index
110      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout )  ::   ptrbio  ! Bio trend
111      !!----------------------------------------------------------------------
112
113      CALL trd_mld_bio_zint( ptrbio, ktrd ) ! Verticaly integrated biological trends
114
115   END SUBROUTINE trd_mod_trc_bio
116#else
117   !!----------------------------------------------------------------------
118   !!   Default option :                                       Empty module
119   !!----------------------------------------------------------------------
120
121   INTERFACE trd_mod_trc
122      MODULE PROCEDURE trd_mod_trc_trp, trd_mod_trc_bio
123   END INTERFACE
124
125CONTAINS
126
127   SUBROUTINE trd_mod_trc_trp( ptrtrd, kjn, ktrd, kt )
128      INTEGER               , INTENT( in )     ::   kt      ! time step
129      INTEGER               , INTENT( in )     ::   kjn     ! tracer index
130      INTEGER               , INTENT( in )     ::   ktrd    ! tracer trend index
131      REAL, DIMENSION(:,:,:), INTENT( inout )  ::   ptrtrd  ! Temperature or U trend
132      WRITE(*,*) 'trd_mod_trc_trp : You should not have seen this print! error?', ptrtrd(1,1,1)
133      WRITE(*,*) '  "      "      : You should not have seen this print! error?', kjn
134      WRITE(*,*) '  "      "      : You should not have seen this print! error?', ktrd
135      WRITE(*,*) '  "      "      : You should not have seen this print! error?', kt
136   END SUBROUTINE trd_mod_trc_trp
137
138   SUBROUTINE trd_mod_trc_bio( ptrbio, ktrd, kt )
139      INTEGER               , INTENT( in )     ::   kt      ! time step
140      INTEGER               , INTENT( in )     ::   ktrd    ! tracer trend index
141      REAL, DIMENSION(:,:,:), INTENT( inout )  ::   ptrbio  ! Temperature or U trend
142      WRITE(*,*) 'trd_mod_trc_trp : You should not have seen this print! error?', ptrbio(1,1,1)
143      WRITE(*,*) '  "      "      : You should not have seen this print! error?', ktrd
144      WRITE(*,*) '  "      "      : You should not have seen this print! error?', kt
145   END SUBROUTINE trd_mod_trc_bio
146
147#endif
148   !!======================================================================
149END MODULE trdmod_trc
Note: See TracBrowser for help on using the repository browser.