source: branches/NERC/dev_r5518_GO6_CO2_cmip/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcavg_medusa.F90 @ 9309

Last change on this file since 9309 was 8074, checked in by jpalmier, 3 years ago

JPALM — reverse MEDUSA cleaning and update MOCSY

File size: 5.1 KB
Line 
1MODULE trcavg_medusa
2   !!======================================================================
3   !!                         ***  MODULE trcavg_medusa  ***
4   !! TOP :   MEDUSA
5   !!======================================================================
6   !! History :    -   !  2015-07  (A. Yool) Original code
7   !!----------------------------------------------------------------------
8#if defined key_medusa && defined key_roam
9   !!----------------------------------------------------------------------
10   !!                                        MEDUSA rolling averages
11   !!----------------------------------------------------------------------
12   !!   trc_avg_medusa        : 
13   !!----------------------------------------------------------------------
14      USE oce_trc
15      USE trc
16      USE sms_medusa
17      USE lbclnk
18      USE prtctl_trc      ! Print control for debugging
19      USE in_out_manager  ! I/O manager
20
21      IMPLICIT NONE
22      PRIVATE
23
24      PUBLIC   trc_avg_medusa    ! called in trc_sms_medusa
25
26   !!* Substitution
27#  include "domzgr_substitute.h90"
28   !!----------------------------------------------------------------------
29   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
30   !! $Id$
31   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
32   !!----------------------------------------------------------------------
33
34CONTAINS
35
36!=======================================================================
37!
38      SUBROUTINE trc_avg_medusa( kt )
39!     
40!=======================================================================
41      !!
42      !! Title  : Calculates rolling averages of variables
43      !! Author : Andrew Yool
44      !! Date   : 23/07/15
45      !!
46      !! Calculates and updates rolling averages of properties such
47      !! as surface irradiance and mixed layer depth that are used
48      !! in functions that require average rather than instantaneous
49      !! values.
50      !!
51      !! This functionality was originally added to support the
52      !! calculation of surface DMS concentrations - and was done so
53      !! within the trcbio_meduse.F90 routine - but was moved to
54      !! this separate module so that its calculations could be used
55      !! to inform MEDUSA's submarine irradiance field
56      !!
57!=======================================================================
58!
59      IMPLICIT NONE
60!
61      INTEGER, INTENT( in ) ::   kt   ! index of the time stepping
62!
63!=======================================================================
64# if defined key_debug_medusa
65         IF(lwp) WRITE(numout,*) ' MEDUSA inside trc_avg_medusa'
66         CALL flush(numout)
67# endif
68      !! AXY (24/07/15): alter this to report on first MEDUSA call
69      IF( kt == nittrc000 ) THEN
70         IF(lwp) WRITE(numout,*)
71         IF(lwp) WRITE(numout,*) ' trc_avg_medusa: MEDUSA rolling average'
72         IF(lwp) WRITE(numout,*) ' ~~~~~~~'
73         IF(lwp) WRITE(numout,*) ' kt =',kt
74      ENDIF
75      !!
76      !!----------------------------------------------------------------------
77      !! Process average fields
78      !! The empirical formulae used for estimating surface DMS concentrations
79      !! require temporally averaged input fields; this block calculates these
80      !! averages based on diel averages; note that rdt
81      !!----------------------------------------------------------------------
82      !!
83      zn_dms_chn(:,:) = ( zb_dms_chn(:,:) * ((86400. - rdt) / 86400.) ) &
84      &                  + ( trn(:,:,1,jpchn) * (rdt / 86400.) )
85      zb_dms_chn(:,:) = zn_dms_chn(:,:)
86      zn_dms_chd(:,:) = ( zb_dms_chd(:,:) * ((86400. - rdt) / 86400.) ) &
87      &                  + ( trn(:,:,1,jpchd) * (rdt / 86400.) )
88      zb_dms_chd(:,:) = zn_dms_chd(:,:)
89      zn_dms_mld(:,:) = ( zb_dms_mld(:,:) * ((86400. - rdt) / 86400.) ) &
90      &                  + (        hmld(:,:) * (rdt / 86400.) )
91      zb_dms_mld(:,:) = zn_dms_mld(:,:)
92      zn_dms_qsr(:,:) = ( zb_dms_qsr(:,:) * ((86400. - rdt) / 86400.) ) &
93      &                  + (         qsr(:,:) * (rdt / 86400.) )
94      zb_dms_qsr(:,:) = zn_dms_qsr(:,:)
95      zn_dms_din(:,:) = ( zb_dms_din(:,:) * ((86400. - rdt) / 86400.) ) &
96      &                  + ( trn(:,:,1,jpdin) * (rdt / 86400.) )
97      zb_dms_din(:,:) = zn_dms_din(:,:)
98
99  END SUBROUTINE trc_avg_medusa
100
101!=======================================================================
102!=======================================================================
103!=======================================================================
104
105#else
106   !!======================================================================
107   !!  Dummy module :                                   No MEDUSA bio-model
108   !!======================================================================
109
110CONTAINS
111
112!=======================================================================
113!
114   SUBROUTINE trc_avg_medusa( kt )                                        !! EMPTY Routine
115!     
116!
117      INTEGER, INTENT( in ) ::   kt
118!
119
120      WRITE(*,*) 'trc_avg_medusa: You should not have seen this print! error?'
121
122   END SUBROUTINE trc_avg_medusa
123#endif
124
125   !!======================================================================
126END MODULE  trcavg_medusa
127
128
Note: See TracBrowser for help on using the repository browser.