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.
bio_medusa_diag_slice.F90 in branches/NERC/dev_r5518_GO6_under_ice_relax/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/NERC/dev_r5518_GO6_under_ice_relax/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_diag_slice.F90 @ 10196

Last change on this file since 10196 was 10196, checked in by jpalmier, 6 years ago

add DMS flux --

File size: 19.1 KB
Line 
1MODULE bio_medusa_diag_slice_mod
2   !!======================================================================
3   !!                         ***  MODULE bio_medusa_diag_slice_mod  ***
4   !! Diagnostic calculations at different levels
5   !!======================================================================
6   !! History :
7   !!   -   ! 2017-04 (M. Stringer)        Code taken from trcbio_medusa.F90
8   !!   -   ! 2018-08 (A. Yool)            add OMIP preindustrial DIC
9   !!   -   ! 2018-10 (A. Yool)            Add air-sea DMS flux
10   !!----------------------------------------------------------------------
11#if defined key_medusa
12   !!----------------------------------------------------------------------
13   !!                                                   MEDUSA bio-model
14   !!----------------------------------------------------------------------
15
16   IMPLICIT NONE
17   PRIVATE
18     
19   PUBLIC   bio_medusa_diag_slice     ! Called in trcbio_medusa.F90
20
21   !!----------------------------------------------------------------------
22   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
23   !! $Id$
24   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
25   !!----------------------------------------------------------------------
26
27CONTAINS
28
29   SUBROUTINE bio_medusa_diag_slice( jk )
30      !!---------------------------------------------------------------------
31      !!                     ***  ROUTINE bio_medusa_diag_slice  ***
32      !! This called from TRC_BIO_MEDUSA and
33      !!  - ...
34      !!----------------------------------------------------------------------
35      USE bio_medusa_mod
36      USE par_medusa,        ONLY: jpchd, jpchn     
37      USE dom_oce,           ONLY: tmask
38      USE in_out_manager,    ONLY: lwp, numout
39      USE iom,               ONLY: iom_put
40      USE lbclnk,            ONLY: lbc_lnk
41      USE oce,               ONLY: CO2Flux_out_cpl, DMS_out_cpl
42      USE par_oce,           ONLY: jpi, jpj
43      USE sbc_oce,           ONLY: lk_oasis, qsr, wndm
44      USE sms_medusa,        ONLY: i0100, i0150, i0200, i0500, i1000,      &
45                                   f2_ccd_arg, f2_ccd_cal,                 &
46                                   f3_co3, f3_h2co3, f3_hco3, f3_pH,       &
47                                   jdms, ocal_ccd, xpar, xze,              &
48                                   zb_co2_flx, zb_dms_srf,                 &
49                                   zn_co2_flx, zn_dms_srf
50      USE trc,               ONLY: med_diag
51
52      !! The vertical level
53      INTEGER, INTENT( in ) ::    jk
54      !!----------------------------------------------------------------------
55
56      !!-----------------------------------------
57      !!
58      !! 2d specific k level diags
59      !!
60      !!-----------------------------------------
61#   if defined key_debug_medusa
62         IF (lwp) write (numout,*) 'bio_medusa_diag_slice: start jk = ', jk
63         CALL flush(numout)
64#   endif
65      !!
66      IF (jk.eq.1) THEN
67         IF( med_diag%MED_QSR%dgsave ) THEN
68            CALL iom_put( "MED_QSR"  , qsr ) !
69         ENDIF
70         IF( med_diag%MED_XPAR%dgsave ) THEN
71            CALL iom_put( "MED_XPAR"  , xpar(:,:,jk) ) !
72         ENDIF       
73         IF( med_diag%OCAL_CCD%dgsave ) THEN
74            CALL iom_put( "OCAL_CCD"  , ocal_ccd ) !
75         ENDIF
76         IF( med_diag%FE_0000%dgsave ) THEN
77            CALL iom_put( "FE_0000"  , xFree ) !
78         ENDIF                     
79         IF( med_diag%MED_XZE%dgsave ) THEN
80            CALL iom_put( "MED_XZE"  , xze ) !
81         ENDIF 
82# if defined key_roam                     
83         IF( med_diag%WIND%dgsave ) THEN
84            CALL iom_put( "WIND"  , wndm )
85         ENDIF
86         IF( med_diag%ATM_PCO2%dgsave ) THEN
87            CALL iom_put( "ATM_PCO2"  , f_pco2a2d )
88            DEALLOCATE( f_pco2a2d )
89         ENDIF
90         IF( med_diag%OCN_PH%dgsave ) THEN
91            zw2d(:,:) = f3_pH(:,:,jk)
92            CALL iom_put( "OCN_PH"  , zw2d )
93         ENDIF
94         IF( med_diag%OCN_PCO2%dgsave ) THEN
95            CALL iom_put( "OCN_PCO2"  , f_pco2w2d )
96            DEALLOCATE( f_pco2w2d )
97         ENDIF
98         IF( med_diag%OCNH2CO3%dgsave ) THEN
99            zw2d(:,:) = f3_h2co3(:,:,jk)
100            CALL iom_put( "OCNH2CO3"  , zw2d )
101         ENDIF
102         IF( med_diag%OCN_HCO3%dgsave ) THEN
103            zw2d(:,:) = f3_hco3(:,:,jk)
104            CALL iom_put( "OCN_HCO3"  , zw2d )
105         ENDIF
106         IF( med_diag%OCN_CO3%dgsave ) THEN
107            zw2d(:,:) = f3_co3(:,:,jk)
108            CALL iom_put( "OCN_CO3"  , zw2d )
109         ENDIF
110         IF( med_diag%CO2FLUX%dgsave ) THEN
111            CALL iom_put( "CO2FLUX"  , f_co2flux2d )
112            DEALLOCATE( f_co2flux2d )
113         ENDIF
114         !!
115         !! AXY (10/11/16): repeat CO2 flux diagnostic in UKMO/CMIP6 units;
116         !!                 this both outputs the CO2 flux in specified units
117         !!                 and sends the resulting field to the coupler
118         !! JPALM (17/11/16): put CO2 flux (fgco2) alloc/unalloc/pass to zn
119         !!                   out of diag list request
120         CALL lbc_lnk( fgco2(:,:),'T',1. )
121         IF( med_diag%FGCO2%dgsave ) THEN
122            CALL iom_put( "FGCO2"  , fgco2 )
123         ENDIF
124         !! JPALM (17/11/16): should mv this fgco2 part
125         !!                   out of lk_iomput loop
126         zb_co2_flx = zn_co2_flx
127         zn_co2_flx = fgco2
128         IF (lk_oasis) THEN
129            CO2Flux_out_cpl = zn_co2_flx
130         ENDIF
131         DEALLOCATE( fgco2 )
132         !! ---
133         IF( med_diag%OM_CAL%dgsave ) THEN
134            CALL iom_put( "OM_CAL"  , f_omcal )
135         ENDIF
136         IF( med_diag%OM_ARG%dgsave ) THEN
137            CALL iom_put( "OM_ARG"  , f_omarg )
138         ENDIF
139         IF( med_diag%TCO2%dgsave ) THEN
140            CALL iom_put( "TCO2"  , f_TDIC2d )
141            DEALLOCATE( f_TDIC2d )
142         ENDIF
143         IF( med_diag%TALK%dgsave ) THEN
144            CALL iom_put( "TALK"  , f_TALK2d )
145            DEALLOCATE( f_TALK2d )
146         ENDIF
147         IF( med_diag%KW660%dgsave ) THEN
148            CALL iom_put( "KW660"  , f_kw6602d )
149            DEALLOCATE( f_kw6602d )
150         ENDIF
151         IF( med_diag%ATM_PP0%dgsave ) THEN
152            CALL iom_put( "ATM_PP0"  , f_pp02d )
153            DEALLOCATE( f_pp02d )
154         ENDIF
155         IF( med_diag%O2FLUX%dgsave ) THEN
156            CALL iom_put( "O2FLUX"  , f_o2flux2d )
157            DEALLOCATE( f_o2flux2d )
158         ENDIF
159         IF( med_diag%O2SAT%dgsave ) THEN
160            CALL iom_put( "O2SAT"  , f_o2sat2d )
161            DEALLOCATE( f_o2sat2d )
162         ENDIF
163         IF( med_diag%CAL_CCD%dgsave ) THEN
164            CALL iom_put( "CAL_CCD"  , f2_ccd_cal )
165         ENDIF
166         IF( med_diag%ARG_CCD%dgsave ) THEN
167            CALL iom_put( "ARG_CCD"  , f2_ccd_arg )
168         ENDIF
169         IF (jdms .eq. 1) THEN
170            IF( med_diag%DMS_SURF%dgsave ) THEN
171               CALL lbc_lnk(dms_surf2d(:,:),'T',1. )
172               CALL iom_put( "DMS_SURF"  , dms_surf2d )
173               zb_dms_srf = zn_dms_srf
174               zn_dms_srf = dms_surf2d
175               IF (lk_oasis) THEN
176                  DMS_out_cpl = zn_dms_srf
177               ENDIF
178               DEALLOCATE( dms_surf2d ) 
179            ENDIF
180            IF( med_diag%DMS_ANDR%dgsave ) THEN
181               CALL iom_put( "DMS_ANDR"  , dms_andr2d )
182               DEALLOCATE( dms_andr2d )
183            ENDIF
184            IF( med_diag%DMS_SIMO%dgsave ) THEN
185               CALL iom_put( "DMS_SIMO"  , dms_simo2d )
186               DEALLOCATE( dms_simo2d )
187            ENDIF
188            IF( med_diag%DMS_ARAN%dgsave ) THEN
189               CALL iom_put( "DMS_ARAN"  , dms_aran2d )
190               DEALLOCATE( dms_aran2d )
191            ENDIF
192            IF( med_diag%DMS_HALL%dgsave ) THEN
193               CALL iom_put( "DMS_HALL"  , dms_hall2d )
194               DEALLOCATE( dms_hall2d )
195            ENDIF
196            IF( med_diag%DMS_ANDM%dgsave ) THEN
197               CALL iom_put( "DMS_ANDM"  , dms_andm2d )
198               DEALLOCATE( dms_andm2d )
199            ENDIF
200            IF( med_diag%DMS_FLUX%dgsave ) THEN
201               CALL iom_put( "DMS_FLUX"  , dms_flux2d )
202               DEALLOCATE( dms_flux2d )
203            ENDIF
204         ENDIF
205         !! AXY (24/11/16): extra MOCSY diagnostics
206         IF( med_diag%ATM_XCO2%dgsave ) THEN
207            CALL iom_put( "ATM_XCO2"  ,   f_xco2a_2d      )
208            DEALLOCATE( f_xco2a_2d )
209         ENDIF
210         IF( med_diag%OCN_FCO2%dgsave ) THEN
211            CALL iom_put( "OCN_FCO2"  ,   f_fco2w_2d      )
212            DEALLOCATE( f_fco2w_2d )
213         ENDIF
214         IF( med_diag%ATM_FCO2%dgsave ) THEN
215            CALL iom_put( "ATM_FCO2"  ,   f_fco2a_2d      )
216            DEALLOCATE( f_fco2a_2d )
217         ENDIF
218         IF( med_diag%OCN_RHOSW%dgsave ) THEN
219            CALL iom_put( "OCN_RHOSW"  ,  f_ocnrhosw_2d   )
220            DEALLOCATE( f_ocnrhosw_2d )
221         ENDIF
222         IF( med_diag%OCN_SCHCO2%dgsave ) THEN
223            CALL iom_put( "OCN_SCHCO2"  , f_ocnschco2_2d  )
224            DEALLOCATE( f_ocnschco2_2d )
225         ENDIF
226         IF( med_diag%OCN_KWCO2%dgsave ) THEN
227            CALL iom_put( "OCN_KWCO2"  ,  f_ocnkwco2_2d   )
228            DEALLOCATE( f_ocnkwco2_2d )
229         ENDIF
230         IF( med_diag%OCN_K0%dgsave ) THEN
231            CALL iom_put( "OCN_K0"  ,     f_ocnk0_2d      )
232            DEALLOCATE( f_ocnk0_2d )
233         ENDIF
234         IF( med_diag%CO2STARAIR%dgsave ) THEN
235            CALL iom_put( "CO2STARAIR"  , f_co2starair_2d )
236            DEALLOCATE( f_co2starair_2d )
237         ENDIF
238         IF( med_diag%OCN_DPCO2%dgsave ) THEN
239            CALL iom_put( "OCN_DPCO2"  ,  f_ocndpco2_2d   )
240            DEALLOCATE( f_ocndpco2_2d )
241         ENDIF
242#  if defined key_omip_dic
243      !!----------------------------------------------------------------------
244      !! AXY (03/08/18): additional diagnostics for OMIP preindustrial DIC;
245      !!                 basically a subset of the normal diagnostics with
246      !!                 "PI_" stuck on the front; only includes those CO2
247      !!                 diagnostics that should differ under PI conditions
248      !!----------------------------------------------------------------------
249         IF( med_diag%PI_ATM_PCO2%dgsave ) THEN
250            CALL iom_put( "PI_ATM_PCO2"  , f_pi_pco2a_2d )
251            DEALLOCATE( f_pi_pco2a_2d )
252         ENDIF
253         IF( med_diag%PI_OCN_PH%dgsave ) THEN
254            CALL iom_put( "PI_OCN_PH"  , f_pi_ph_2d )
255            DEALLOCATE( f_pi_ph_2d )
256         ENDIF
257         IF( med_diag%PI_OCN_PCO2%dgsave ) THEN
258            CALL iom_put( "PI_OCN_PCO2"  , f_pi_pco2w_2d )
259            DEALLOCATE( f_pi_pco2w_2d )
260         ENDIF
261         IF( med_diag%PI_OCNH2CO3%dgsave ) THEN
262            CALL iom_put( "PI_OCNH2CO3"  , f_pi_h2co3_2d )
263            DEALLOCATE( f_pi_h2co3_2d )
264         ENDIF
265         IF( med_diag%PI_OCN_HCO3%dgsave ) THEN
266            CALL iom_put( "PI_OCN_HCO3"  , f_pi_hco3_2d )
267            DEALLOCATE( f_pi_hco3_2d )
268         ENDIF
269         IF( med_diag%PI_OCN_CO3%dgsave ) THEN
270            CALL iom_put( "PI_OCN_CO3"  , f_pi_co3_2d )
271            DEALLOCATE( f_pi_co3_2d )
272         ENDIF
273         IF( med_diag%PI_CO2FLUX%dgsave ) THEN
274            CALL iom_put( "PI_CO2FLUX"  , f_pi_co2flux_2d )
275            DEALLOCATE( f_pi_co2flux_2d )
276         ENDIF
277         IF( med_diag%PI_FGCO2%dgsave ) THEN
278            CALL iom_put( "PI_FGCO2"  , pi_fgco2 )
279            DEALLOCATE( pi_fgco2 )
280         ENDIF
281         IF( med_diag%PI_OM_CAL%dgsave ) THEN
282            CALL iom_put( "PI_OM_CAL"  , f_pi_omcal_2d )
283       DEALLOCATE( f_pi_omcal_2d )
284         ENDIF
285         IF( med_diag%PI_OM_ARG%dgsave ) THEN
286            CALL iom_put( "PI_OM_ARG"  , f_pi_omarg_2d )
287       DEALLOCATE( f_pi_omarg_2d )
288         ENDIF
289         IF( med_diag%PI_TCO2%dgsave ) THEN
290            CALL iom_put( "PI_TCO2"  , f_pi_TDIC_2d )
291            DEALLOCATE( f_pi_TDIC_2d )
292         ENDIF
293         IF( med_diag%PI_ATM_XCO2%dgsave ) THEN
294            CALL iom_put( "PI_ATM_XCO2"  ,   f_pi_xco2a_2d )
295            DEALLOCATE( f_pi_xco2a_2d )
296         ENDIF
297         IF( med_diag%PI_OCN_FCO2%dgsave ) THEN
298            CALL iom_put( "PI_OCN_FCO2"  ,   f_pi_fco2w_2d )
299            DEALLOCATE( f_pi_fco2w_2d )
300         ENDIF
301         IF( med_diag%PI_ATM_FCO2%dgsave ) THEN
302            CALL iom_put( "PI_ATM_FCO2"  ,   f_pi_fco2a_2d )
303            DEALLOCATE( f_pi_fco2a_2d )
304         ENDIF
305         IF( med_diag%PI_CO2STARAIR%dgsave ) THEN
306            CALL iom_put( "PI_CO2STARAIR"  , f_pi_co2starair_2d )
307            DEALLOCATE( f_pi_co2starair_2d )
308         ENDIF
309         IF( med_diag%PI_OCN_DPCO2%dgsave ) THEN
310            CALL iom_put( "PI_OCN_DPCO2"  ,  f_pi_ocndpco2_2d   )
311            DEALLOCATE( f_pi_ocndpco2_2d )
312         ENDIF
313#  endif
314         
315# endif                     
316      ELSE IF (jk.eq.i0100) THEN
317         IF( med_diag%SDT__100%dgsave ) THEN
318            zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk)
319            CALL iom_put( "SDT__100"  , zw2d )
320         ENDIF
321         IF( med_diag%REG__100%dgsave ) THEN
322            CALL iom_put( "REG__100"  , fregen2d )
323         ENDIF
324         IF( med_diag%FDT__100%dgsave ) THEN
325            CALL iom_put( "FDT__100"  , ffastn )
326         ENDIF           
327         IF( med_diag%RG__100F%dgsave ) THEN
328            CALL iom_put( "RG__100F"  , fregenfast )
329         ENDIF
330         IF( med_diag%FDS__100%dgsave ) THEN
331            CALL iom_put( "FDS__100"  , ffastsi )
332         ENDIF         
333         IF( med_diag%RGS_100F%dgsave ) THEN
334            CALL iom_put( "RGS_100F"  , fregenfastsi )
335         ENDIF
336         IF( med_diag%FE_0100%dgsave ) THEN
337            CALL iom_put( "FE_0100"  , xFree )
338         ENDIF
339# if defined key_roam                     
340         IF( med_diag%RR_0100%dgsave ) THEN
341            CALL iom_put( "RR_0100"  , ffastca2d )
342         ENDIF                     
343         IF( med_diag%SDC__100%dgsave ) THEN
344            zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk)
345            CALL iom_put( "SDC__100"  , zw2d )
346         ENDIF                 
347         IF( med_diag%epC100%dgsave    ) THEN
348            zw2d(:,:) = (fslowcflux + ffastc) * tmask(:,:,jk)
349            CALL iom_put( "epC100"    , zw2d )
350         ENDIF         
351         IF( med_diag%epCALC100%dgsave ) THEN
352            CALL iom_put( "epCALC100" , ffastca )
353         ENDIF         
354         IF( med_diag%epN100%dgsave    ) THEN
355            zw2d(:,:) = (fslownflux + ffastn) * tmask(:,:,jk)
356            CALL iom_put( "epN100"    , zw2d )
357         ENDIF         
358         IF( med_diag%epSI100%dgsave   ) THEN
359            CALL iom_put( "epSI100"   , ffastsi )
360         ENDIF         
361# endif                     
362      ELSE IF (jk.eq.i0200) THEN
363         IF( med_diag%SDT__200%dgsave ) THEN
364            zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk)
365            CALL iom_put( "SDT__200"  , zw2d )
366         ENDIF
367         IF( med_diag%REG__200%dgsave ) THEN
368            CALL iom_put( "REG__200"  , fregen2d )
369         ENDIF
370         IF( med_diag%FDT__200%dgsave ) THEN
371            CALL iom_put( "FDT__200"  , ffastn )
372         ENDIF
373         IF( med_diag%RG__200F%dgsave ) THEN
374            CALL iom_put( "RG__200F"  , fregenfast )
375         ENDIF
376         IF( med_diag%FDS__200%dgsave ) THEN
377            CALL iom_put( "FDS__200"  , ffastsi )
378         ENDIF
379         IF( med_diag%RGS_200F%dgsave ) THEN
380            CALL iom_put( "RGS_200F"  , fregenfastsi )
381         ENDIF
382         IF( med_diag%FE_0200%dgsave ) THEN
383            CALL iom_put( "FE_0200"   , xFree )
384         ENDIF
385# if defined key_roam                     
386         IF( med_diag%SDC__200%dgsave ) THEN
387            zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk)
388            CALL iom_put( "SDC__200"  , zw2d )
389         ENDIF
390# endif                     
391      ELSE IF (jk.eq.i0500) THEN
392         IF( med_diag%SDT__500%dgsave ) THEN
393            zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk)
394            CALL iom_put( "SDT__500"  , zw2d )
395         ENDIF
396         IF( med_diag%REG__500%dgsave ) THEN
397            CALL iom_put( "REG__500"  , fregen2d )
398         ENDIF     
399         IF( med_diag%FDT__500%dgsave ) THEN
400            CALL iom_put( "FDT__500"  , ffastn )
401         ENDIF
402         IF( med_diag%RG__500F%dgsave ) THEN
403            CALL iom_put( "RG__500F"  , fregenfast )
404         ENDIF
405         IF( med_diag%FDS__500%dgsave ) THEN
406            CALL iom_put( "FDS__500"  , ffastsi )
407         ENDIF
408         IF( med_diag%RGS_500F%dgsave ) THEN
409            CALL iom_put( "RGS_500F"  , fregenfastsi )
410         ENDIF
411         IF( med_diag%FE_0500%dgsave ) THEN
412            CALL iom_put( "FE_0500"  , xFree )
413         ENDIF
414# if defined key_roam                     
415         IF( med_diag%RR_0500%dgsave ) THEN
416            CALL iom_put( "RR_0500"  , ffastca2d )
417         ENDIF
418         IF( med_diag%SDC__500%dgsave ) THEN
419            zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk)
420            CALL iom_put( "SDC__500"  , zw2d )
421         ENDIF 
422# endif                     
423      ELSE IF (jk.eq.i1000) THEN
424         IF( med_diag%SDT_1000%dgsave ) THEN
425            zw2d(:,:) = fslownflux(:,:) * tmask(:,:,jk)
426            CALL iom_put( "SDT_1000"  , zw2d )
427         ENDIF
428         IF( med_diag%REG_1000%dgsave ) THEN
429            CALL iom_put( "REG_1000"  , fregen2d )
430         ENDIF 
431         IF( med_diag%FDT_1000%dgsave ) THEN
432            CALL iom_put( "FDT_1000"  , ffastn )
433         ENDIF
434         IF( med_diag%RG_1000F%dgsave ) THEN
435            CALL iom_put( "RG_1000F"  , fregenfast )
436         ENDIF
437         IF( med_diag%FDS_1000%dgsave ) THEN
438            CALL iom_put( "FDS_1000"  , ffastsi )
439         ENDIF
440         IF( med_diag%RGS1000F%dgsave ) THEN
441            CALL iom_put( "RGS1000F"  , fregenfastsi )
442         ENDIF
443         IF( med_diag%FE_1000%dgsave ) THEN
444            CALL iom_put( "FE_1000"  , xFree )
445         ENDIF
446# if defined key_roam                     
447         IF( med_diag%RR_1000%dgsave ) THEN
448            CALL iom_put( "RR_1000"  , ffastca2d )
449            DEALLOCATE( ffastca2d )
450         ENDIF
451         IF( med_diag%SDC_1000%dgsave ) THEN
452            zw2d(:,:) = fslowcflux(:,:) * tmask(:,:,jk)
453            CALL iom_put( "SDC_1000"  , zw2d )
454         ENDIF 
455# endif                     
456      ENDIF
457      !! to do on every k loop :
458      IF( med_diag%DETFLUX3%dgsave ) THEN
459         !! detrital flux
460         detflux3d(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk)
461         !CALL iom_put( "DETFLUX3"  , ftot_n )
462      ENDIF
463# if defined key_roam                     
464      IF( med_diag%EXPC3%dgsave ) THEN
465         expc3(:,:,jk) = (fslowcflux(:,:) + ffastc(:,:)) * tmask(:,:,jk)
466      ENDIF         
467      IF( med_diag%EXPN3%dgsave ) THEN
468         expn3(:,:,jk) = (fslownflux(:,:) + ffastn(:,:)) * tmask(:,:,jk)
469      ENDIF         
470# endif         
471#   if defined key_debug_medusa
472         IF (lwp) write (numout,*) 'bio_medusa_diag_slice: end jk = ', jk
473         CALL flush(numout)
474#   endif
475
476   END SUBROUTINE bio_medusa_diag_slice
477
478#else
479   !!======================================================================
480   !!  Dummy module :                                   No MEDUSA bio-model
481   !!======================================================================
482CONTAINS
483   SUBROUTINE bio_medusa_diag_slice( )                  ! Empty routine
484      WRITE(*,*) 'bio_medusa_diag_slice: You should not have seen this print! error?'
485   END SUBROUTINE bio_medusa_diag_slice
486#endif 
487
488   !!======================================================================
489END MODULE bio_medusa_diag_slice_mod
Note: See TracBrowser for help on using the repository browser.