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/UKMO/dev_r5518_fix_diag_bitcomp/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/UKMO/dev_r5518_fix_diag_bitcomp/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_diag_slice.F90 @ 9502

Last change on this file since 9502 was 9502, checked in by frrh, 6 years ago

Ensure numerous diagnostics are bit comparable ond different PE
decompositions.

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