source: branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90 @ 8463

Last change on this file since 8463 was 8463, checked in by jpalmier, 4 years ago

JPALM - trdtrc - fixes, update field_def

File size: 4.6 KB
Line 
1MODULE trcsms_medusa
2   !!======================================================================
3   !!                         ***  MODULE trcsms_medusa  ***
4   !! TOP :   Main module of the MEDUSA tracers
5   !!======================================================================
6   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code
7   !!              -   !  2008-08  (K. Popova) adaptation for MEDUSA
8   !!              -   !  2008-11  (A. Yool) continuing adaptation for MEDUSA
9   !!              -   !  2010-03  (A. Yool) updated for branch inclusion
10   !!----------------------------------------------------------------------
11#if defined key_medusa
12   !!----------------------------------------------------------------------
13   !!   'key_medusa'                                       bio tracers
14   !!----------------------------------------------------------------------
15   !! trc_sms_medusa   : MEDUSA_TRC model main routine
16   !!----------------------------------------------------------------------
17   USE par_trc         ! TOP parameters
18   USE oce_trc
19   USE trc
20   USE trcbio_medusa
21   USE trcopt_medusa
22   USE trcsed_medusa
23   USE trcavg_medusa
24   !! for SMS trends
25   USE par_medusa,    ONLY: jp_msa0, jp_msa1
26   USE par_oce,       ONLY: jpi, jpj, jpk
27   USE trd_oce,       ONLY: jptra_sms, l_trdtrc
28   USE trdtrc
29
30
31   IMPLICIT NONE
32   PRIVATE
33
34   PUBLIC   trc_sms_medusa   ! called by trcsms.F90 module
35
36   !!----------------------------------------------------------------------
37   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
38   !! $Id$
39   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
40   !!----------------------------------------------------------------------
41
42CONTAINS
43
44   SUBROUTINE trc_sms_medusa( kt )
45      !!----------------------------------------------------------------------
46      !!                     ***  trc_sms_medusa  *** 
47      !!
48      !! ** Purpose :   main routine of MEDUSA_TRC model
49      !!
50      !! ** Method  : -
51      !!----------------------------------------------------------------------
52      INTEGER, INTENT(in) :: kt   ! ocean time-step index
53      !! Loop variables
54      INTEGER :: jn
55      !! trend temporary array:
56      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrmed
57
58
59# if defined key_debug_medusa
60         IF(lwp) WRITE(numout,*) ' MEDUSA inside trc_sms_medusa'
61         CALL flush(numout)
62# endif
63
64      IF( kt == nittrc000 ) THEN
65       IF(lwp) WRITE(numout,*)
66       IF(lwp) WRITE(numout,*) ' trc_sms_medusa:  MEDUSA model'
67       IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
68      ENDIF
69
70      CALL trc_avg_medusa( kt ) ! rolling average module
71# if defined key_debug_medusa
72      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_avg_medusa'
73      CALL flush(numout)
74# endif
75     
76      CALL trc_opt_medusa( kt ) ! optical model
77# if defined key_debug_medusa
78      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_opt_medusa'
79      CALL flush(numout)
80# endif
81
82      !! AXY & JPALM (28/02/17): call dust before trc_bio_medusa (because of coupling)
83      CALL trc_sed_medusa_dust( kt ) ! dust submodel
84# if defined key_debug_medusa
85      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa_dust'
86      CALL flush(numout)
87# endif
88
89# if defined key_kill_medusa
90      !! MEDUSA skipped
91      IF(lwp) WRITE(numout,*) ' MEDUSA killed at kt =', kt
92      CALL flush(numout)
93# else
94      CALL trc_bio_medusa( kt ) ! biological model
95#  if defined key_debug_medusa
96      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_bio_medusa'
97      CALL flush(numout)
98#  endif
99     
100      CALL trc_sed_medusa( kt ) ! sedimentation model
101#  if defined key_debug_medusa
102      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa'
103      CALL flush(numout)
104#  endif
105# endif
106
107      !! MEDUSA SMS trends:
108      IF( l_trdtrc ) THEN
109          CALL wrk_alloc( jpi, jpj, jpk, ztrmed )
110          DO jn = jp_msa0, jp_msa1
111            ztrmed(:,:,:) = tra(:,:,:,jn)
112            CALL trd_trc( ztrmed, jn, jptra_sms, kt )   ! save trends
113          END DO
114          CALL wrk_dealloc( jpi, jpj, jpk, ztrmed )
115      END IF
116
117
118   END SUBROUTINE trc_sms_medusa
119   
120#else
121   !!----------------------------------------------------------------------
122   !!   Dummy module                                        No MEDUSA model
123   !!----------------------------------------------------------------------
124CONTAINS
125   SUBROUTINE trc_sms_medusa( kt )             ! Empty routine
126      INTEGER, INTENT( in ) ::   kt
127      WRITE(*,*) 'trc_sms_medusa: You should not have seen this print! error?', kt
128   END SUBROUTINE trc_sms_medusa
129#endif
130
131   !!======================================================================
132END MODULE trcsms_medusa
133
Note: See TracBrowser for help on using the repository browser.