source: branches/NERC/dev_r5518_GO6_split_trcbiomedusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_fin.F90 @ 8419

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

JPALM — 08-08-2017 — clean trcbio_medusa split only - running this time

File size: 43.4 KB
Line 
1MODULE bio_medusa_fin_mod
2   !!======================================================================
3   !!                         ***  MODULE bio_medusa_fin_mod  ***
4   !! Finalisation for TRC_BIO_MEDUSA
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_fin     ! 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_fin( kt )
28      !!---------------------------------------------------------------------
29      !!                     ***  ROUTINE bio_medusa_fin  ***
30      !! This called from TRC_BIO_MEDUSA and
31      !!  - ...
32      !!----------------------------------------------------------------------
33      USE bio_medusa_mod
34      USE dom_oce,           ONLY: atfp, atfp1, neuler, rdt
35      USE in_out_manager,    ONLY: lwp, numout
36# if defined key_iomput
37      USE iom,               ONLY: iom_put, lk_iomput
38# endif
39      USE lbclnk,            ONLY: lbc_lnk
40      USE par_medusa,        ONLY: jp_medusa_2d, jp_medusa_3d,          &
41                                   jp_medusa_trd
42      USE par_oce,           ONLY: jpi, jpim1, jpj, jpjm1, jpk
43      USE phycst,            ONLY: rsmall
44      USE sms_medusa,        ONLY: jinorgben, jorgben,                  &
45                                   f3_co3, f3_h2co3, f3_hco3,           &
46                                   f3_omarg, f3_omcal, f3_pH,           &
47                                   za_sed_c, za_sed_ca, za_sed_fe,      &
48                                   za_sed_n, za_sed_si,                 &
49                                   zb_sed_c, zb_sed_ca, zb_sed_fe,      &
50                                   zb_sed_n, zb_sed_si,                 &
51                                   zn_sed_c, zn_sed_ca, zn_sed_fe,      &
52                                   zn_sed_n, zn_sed_si
53      USE trc,               ONLY: ctrc2d, ctrc3d, ln_diatrc,           &
54                                   med_diag, nittrc000,                 &
55                                   trbio, trc2d, trc3d
56      USE trcnam_trp,        ONLY: ln_trcadv_cen2, ln_trcadv_tvd
57 
58      !! time (integer timestep)
59      INTEGER, INTENT( in ) ::    kt
60
61      INTEGER :: ji, jj
62      INTEGER :: jn
63      !!----------------------------------------------------------------------
64      !! Process benthic in/out fluxes
65      !! These can be handled outside of the 3D calculations since the
66      !! benthic pools (and fluxes) are 2D in nature; this code is
67      !! (shamelessly) borrowed from corresponding code in the LOBSTER
68      !! model
69      !!----------------------------------------------------------------------
70      !!
71      !! IF(lwp) WRITE(numout,*) 'AXY: rdt = ', rdt
72      if (jorgben.eq.1) then
73         za_sed_n(:,:)  = zn_sed_n(:,:)  +                                 & 
74                          ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  -          &
75                            f_benout_n(:,:)  ) * (rdt / 86400.)
76         zn_sed_n(:,:)  = za_sed_n(:,:)
77         !!
78         za_sed_fe(:,:) = zn_sed_fe(:,:) +                                 &
79                          ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) -          &
80                            f_benout_fe(:,:) ) * (rdt / 86400.)
81         zn_sed_fe(:,:) = za_sed_fe(:,:)
82         !!
83         za_sed_c(:,:)  = zn_sed_c(:,:)  +                                 &
84                          ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  -          &
85                            f_benout_c(:,:)  ) * (rdt / 86400.)
86         zn_sed_c(:,:)  = za_sed_c(:,:)
87      endif
88      if (jinorgben.eq.1) then
89         za_sed_si(:,:) = zn_sed_si(:,:) +                                 & 
90                          ( f_fbenin_si(:,:) - f_benout_si(:,:) ) *        &
91                          (rdt / 86400.)
92         zn_sed_si(:,:) = za_sed_si(:,:)
93         !!
94         za_sed_ca(:,:) = zn_sed_ca(:,:) +                                 &
95                          ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) *        &
96                          (rdt / 86400.)
97         zn_sed_ca(:,:) = za_sed_ca(:,:)
98      endif
99      IF( ln_diatrc ) THEN
100         DO jj = 2,jpjm1
101            DO ji = 2,jpim1
102               trc2d(ji,jj,131) = za_sed_n(ji,jj)
103               trc2d(ji,jj,132) = za_sed_fe(ji,jj)
104               trc2d(ji,jj,133) = za_sed_c(ji,jj)
105               trc2d(ji,jj,134) = za_sed_si(ji,jj)
106               trc2d(ji,jj,135) = za_sed_ca(ji,jj)
107            ENDDO
108         ENDDO
109         !! AXY (07/07/15): temporary hijacking
110# if defined key_roam
111  !!       trc2d(:,:,126) = zn_dms_chn(:,:)
112  !!       trc2d(:,:,127) = zn_dms_chd(:,:)
113  !!       trc2d(:,:,128) = zn_dms_mld(:,:)
114  !!       trc2d(:,:,129) = zn_dms_qsr(:,:)
115  !!       trc2d(:,:,130) = zn_dms_din(:,:)
116# endif
117      ENDIF 
118      !!
119      if (ibenthic.eq.2) then
120         !! The code below (in this if ... then ... endif loop) is
121         !! effectively commented out because it does not work as
122         !! anticipated; it can be deleted at a later date
123         if (jorgben.eq.1) then
124            za_sed_n(:,:)  = ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  -       &
125                               f_benout_n(:,:)  ) * rdt
126            za_sed_fe(:,:) = ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) -       &
127                               f_benout_fe(:,:) ) * rdt
128            za_sed_c(:,:)  = ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  -       &
129                               f_benout_c(:,:)  ) * rdt
130         endif
131         if (jinorgben.eq.1) then
132            za_sed_si(:,:) = ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * rdt
133            za_sed_ca(:,:) = ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * rdt
134         endif
135         !!
136         !! Leap-frog scheme - only in explicit case, otherwise the
137         !! time stepping is already being done in trczdf
138         !! IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN
139         !!    zfact = 2. * rdttra(jk) * FLOAT( ndttrc )
140         !!    IF( neuler == 0 .AND. kt == nittrc000 )  zfact = rdttra(jk) *
141         !!                                             FLOAT(ndttrc)
142         !!    if (jorgben.eq.1) then
143         !!       za_sed_n(:,:)  = zb_sed_n(:,:)  + ( zfact * za_sed_n(:,:)  )
144         !!      za_sed_fe(:,:) = zb_sed_fe(:,:) + ( zfact * za_sed_fe(:,:) )
145         !!       za_sed_c(:,:)  = zb_sed_c(:,:)  + ( zfact * za_sed_c(:,:)  )
146         !!    endif
147         !!    if (jinorgben.eq.1) then
148         !!       za_sed_si(:,:) = zb_sed_si(:,:) + ( zfact * za_sed_si(:,:) )
149         !!       za_sed_ca(:,:) = zb_sed_ca(:,:) + ( zfact * za_sed_ca(:,:) )
150         !!    endif
151         !! ENDIF
152         !!
153         !! Time filter and swap of arrays
154         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN ! centred or tvd scheme
155            IF( neuler == 0 .AND. kt == nittrc000 ) THEN
156               if (jorgben.eq.1) then
157                  zb_sed_n(:,:)  = zn_sed_n(:,:)
158                  zn_sed_n(:,:)  = za_sed_n(:,:)
159                  za_sed_n(:,:)  = 0.0
160                  !!
161                  zb_sed_fe(:,:) = zn_sed_fe(:,:)
162                  zn_sed_fe(:,:) = za_sed_fe(:,:)
163                  za_sed_fe(:,:) = 0.0
164                  !!
165                  zb_sed_c(:,:)  = zn_sed_c(:,:)
166                  zn_sed_c(:,:)  = za_sed_c(:,:)
167                  za_sed_c(:,:)  = 0.0
168               endif
169               if (jinorgben.eq.1) then
170                  zb_sed_si(:,:) = zn_sed_si(:,:)
171                  zn_sed_si(:,:) = za_sed_si(:,:)
172                  za_sed_si(:,:) = 0.0
173                  !!
174                  zb_sed_ca(:,:) = zn_sed_ca(:,:)
175                  zn_sed_ca(:,:) = za_sed_ca(:,:)
176                  za_sed_ca(:,:) = 0.0
177               endif
178            ELSE
179               if (jorgben.eq.1) then
180                  zb_sed_n(:,:)  = (atfp  *                                 &
181                                    ( zb_sed_n(:,:)  + za_sed_n(:,:)  )) +  &
182                                      (atfp1 * zn_sed_n(:,:) )
183                  zn_sed_n(:,:)  = za_sed_n(:,:)
184                  za_sed_n(:,:)  = 0.0
185                  !!
186                  zb_sed_fe(:,:) = (atfp  *                                 &
187                                    ( zb_sed_fe(:,:) + za_sed_fe(:,:) )) +  &
188                                      (atfp1 * zn_sed_fe(:,:))
189                  zn_sed_fe(:,:) = za_sed_fe(:,:)
190                  za_sed_fe(:,:) = 0.0
191                  !!
192                  zb_sed_c(:,:)  = (atfp  *                                 &
193                                    ( zb_sed_c(:,:)  + za_sed_c(:,:)  )) +  &
194                                      (atfp1 * zn_sed_c(:,:) )
195                  zn_sed_c(:,:)  = za_sed_c(:,:)
196                  za_sed_c(:,:)  = 0.0
197               endif
198               if (jinorgben.eq.1) then
199                  zb_sed_si(:,:) = (atfp  *                                 &
200                                    ( zb_sed_si(:,:) + za_sed_si(:,:) )) +  &
201                                      (atfp1 * zn_sed_si(:,:))
202                  zn_sed_si(:,:) = za_sed_si(:,:)
203                  za_sed_si(:,:) = 0.0
204                  !!
205                  zb_sed_ca(:,:) = (atfp  *                                 &
206                                    ( zb_sed_ca(:,:) + za_sed_ca(:,:) )) +  &
207                                      (atfp1 * zn_sed_ca(:,:))
208                  zn_sed_ca(:,:) = za_sed_ca(:,:)
209                  za_sed_ca(:,:) = 0.0
210               endif
211            ENDIF
212         ELSE                   !  case of smolar scheme or muscl
213            if (jorgben.eq.1) then
214               zb_sed_n(:,:)  = za_sed_n(:,:)
215               zn_sed_n(:,:)  = za_sed_n(:,:)
216               za_sed_n(:,:)  = 0.0
217               !!
218               zb_sed_fe(:,:) = za_sed_fe(:,:)
219               zn_sed_fe(:,:) = za_sed_fe(:,:)
220               za_sed_fe(:,:) = 0.0
221               !!
222               zb_sed_c(:,:)  = za_sed_c(:,:)
223               zn_sed_c(:,:)  = za_sed_c(:,:)
224               za_sed_c(:,:)  = 0.0
225            endif
226            if (jinorgben.eq.1) then
227               zb_sed_si(:,:) = za_sed_si(:,:)
228               zn_sed_si(:,:) = za_sed_si(:,:)
229               za_sed_si(:,:) = 0.0
230               !!
231               zb_sed_ca(:,:) = za_sed_ca(:,:)
232               zn_sed_ca(:,:) = za_sed_ca(:,:)
233               za_sed_ca(:,:) = 0.0
234            endif
235         ENDIF
236      endif
237     
238      IF( ln_diatrc ) THEN
239         !!-----------------------------------------------------------------
240         !! Output several accumulated diagnostics
241         !!   - biomass-average phytoplankton limitation terms
242         !!   - integrated tendency terms
243         !!-----------------------------------------------------------------
244         !!
245         DO jj = 2,jpjm1
246            DO ji = 2,jpim1
247               !! non-diatom phytoplankton limitations
248               trc2d(ji,jj,25)  = trc2d(ji,jj,25) / MAX(ftot_pn(ji,jj), rsmall)
249               trc2d(ji,jj,26)  = trc2d(ji,jj,26) / MAX(ftot_pn(ji,jj), rsmall)
250               trc2d(ji,jj,27)  = trc2d(ji,jj,27) / MAX(ftot_pn(ji,jj), rsmall)
251               !! diatom phytoplankton limitations
252               trc2d(ji,jj,28)  = trc2d(ji,jj,28) / MAX(ftot_pd(ji,jj), rsmall)
253               trc2d(ji,jj,29)  = trc2d(ji,jj,29) / MAX(ftot_pd(ji,jj), rsmall)
254               trc2d(ji,jj,30)  = trc2d(ji,jj,30) / MAX(ftot_pd(ji,jj), rsmall)
255               trc2d(ji,jj,31)  = trc2d(ji,jj,31) / MAX(ftot_pd(ji,jj), rsmall)
256               trc2d(ji,jj,32)  = trc2d(ji,jj,32) / MAX(ftot_pd(ji,jj), rsmall)
257               !! tendency terms
258               trc2d(ji,jj,76)  = fflx_n(ji,jj)
259               trc2d(ji,jj,77)  = fflx_si(ji,jj)
260               trc2d(ji,jj,78)  = fflx_fe(ji,jj)
261               !! Integrated biomass.
262               !! integrated non-diatom phytoplankton
263               trc2d(ji,jj,79)  = ftot_pn(ji,jj)
264               !! integrated diatom phytoplankton
265               trc2d(ji,jj,80)  = ftot_pd(ji,jj)
266               !! Integrated microzooplankton
267               trc2d(ji,jj,217) = ftot_zmi(ji,jj)
268               !! Integrated mesozooplankton
269               trc2d(ji,jj,218) = ftot_zme(ji,jj)
270               !! Integrated slow detritus, nitrogen
271               trc2d(ji,jj,219) = ftot_det(ji,jj)
272               !! Integrated slow detritus, carbon
273               trc2d(ji,jj,220) = ftot_dtc(ji,jj)
274# if defined key_roam
275               !! The balance of nitrogen production/consumption.
276               !! integrated nitrogen production
277               trc2d(ji,jj,111) = fnit_prod(ji,jj)
278               !! integrated nitrogen consumption
279               trc2d(ji,jj,112) = fnit_cons(ji,jj)
280               !! The balance of carbon production/consumption.
281               !! integrated carbon production
282               trc2d(ji,jj,113) = fcar_prod(ji,jj)
283               !! integrated carbon consumption
284               trc2d(ji,jj,114) = fcar_cons(ji,jj)
285               !! The balance of oxygen production/consumption.
286               !! integrated oxygen production
287               trc2d(ji,jj,115) = foxy_prod(ji,jj)
288               !! integrated oxygen consumption
289               trc2d(ji,jj,116) = foxy_cons(ji,jj)
290               !! integrated unrealised oxygen consumption
291               trc2d(ji,jj,117) = foxy_anox(ji,jj)
292# endif
293            ENDDO
294         ENDDO
295         
296# if defined key_roam
297#  if defined key_axy_nancheck
298         !!---------------------------------------------------------------
299         !! Check for NaNs in diagnostic outputs
300         !!---------------------------------------------------------------
301         !!
302         !! 2D diagnostics
303         DO jn = 1,150
304            fq0 = SUM(trc2d(:,:,jn))
305            !! AXY (30/01/14): "isnan" problem on HECTOR
306            !! if (fq0 /= fq0 ) then
307            if ( ieee_is_nan( fq0 ) ) then
308               !! there's a NaN here
309               if (lwp) write(numout,*)                                     &
310                  'NAN detected in 2D diagnostic field', jn, 'at time',     &
311                   kt, 'at position:'
312               DO jj = 1,jpj
313                  DO ji = 1,jpi
314                     if ( ieee_is_nan( trc2d(ji,jj,jn) ) ) then
315                        if (lwp) write (numout,'(a,3i6)') 'NAN-CHECK',      &
316                                 ji, jj, jn
317                     endif
318                  ENDDO
319               ENDDO
320          CALL ctl_stop( 'trcbio_medusa, NAN in 2D diagnostic field' )
321            endif
322         ENDDO
323         !!
324         !! 3D diagnostics
325         DO jn = 1,5
326            fq0 = SUM(trc3d(:,:,:,jn))
327            !! AXY (30/01/14): "isnan" problem on HECTOR
328            !! if (fq0 /= fq0 ) then
329            if ( ieee_is_nan( fq0 ) ) then
330               !! there's a NaN here
331               if (lwp) write(numout,*)                                     &
332                  'NAN detected in 3D diagnostic field', jn, 'at time',     &
333                  kt, 'at position:'
334               DO jk = 1,jpk
335                  DO jj = 1,jpj
336                     DO ji = 1,jpi
337                        if ( ieee_is_nan( trc3d(ji,jj,jk,jn) ) ) then
338                           if (lwp) write (numout,'(a,4i6)') 'NAN-CHECK',   &
339                                    ji, jj, jk, jn
340                        endif
341                     ENDDO
342                  ENDDO
343               ENDDO
344          CALL ctl_stop( 'trcbio_medusa, NAN in 3D diagnostic field' )
345            endif
346         ENDDO
347    CALL flush(numout)
348#  endif
349# endif
350
351         !!----------------------------------------------------------------
352         !! Don't know what this does; belongs to someone else ...
353         !!----------------------------------------------------------------
354         !!
355         !! Lateral boundary conditions on trc2d
356         DO jn=1,jp_medusa_2d
357             CALL lbc_lnk(trc2d(:,:,jn),'T',1. )
358         ENDDO 
359
360         !! Lateral boundary conditions on trc3d
361         DO jn=1,jp_medusa_3d
362             CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. )
363         ENDDO 
364
365
366# if defined key_axy_nodiag
367         !!----------------------------------------------------------------
368         !! Blank diagnostics as a NaN-trap
369         !!----------------------------------------------------------------
370         !!
371         !! blank 2D diagnostic array
372         trc2d(:,:,:) = 0.e0
373         !!
374         !! blank 3D diagnostic array
375         trc3d(:,:,:,:) = 0.e0
376# endif
377
378
379         !!----------------------------------------------------------------
380         !! Add in XML diagnostics stuff
381         !!----------------------------------------------------------------
382         !!
383         !! ** 2D diagnostics
384         DO jn=1,jp_medusa_2d
385            CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn))
386         END DO
387!! AXY (17/02/14): don't think I need this if I modify the above for
388!! all diagnostics
389!! #  if defined key_roam
390!!          DO jn=91,jp_medusa_2d
391!!             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn))
392!!          END DO     
393!! #  endif
394         !!
395         !! ** 3D diagnostics
396         DO jn=1,jp_medusa_3d
397            CALL iom_put(TRIM(ctrc3d(jn)), trc3d(:,:,:,jn))
398         END DO
399!! AXY (17/02/14): don't think I need this if I modify the above for
400!! all diagnostics
401!! #  if defined key_roam
402!!          CALL iom_put(TRIM(ctrc3d(5)), trc3d(:,:,:,5))
403!! #  endif
404
405
406      ELSE IF( lk_iomput .AND. .NOT. ln_diatrc ) THEN
407         !!!---------------------------------------------------------------
408         !! Add very last diag calculations
409         !!!---------------------------------------------------------------
410         DO jj = 2,jpjm1
411            DO ji = 2,jpim1
412               !!         
413               IF( med_diag%PN_JLIM%dgsave ) THEN
414                  fjln2d(ji,jj) = fjln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall)
415               ENDIF
416               IF( med_diag%PN_NLIM%dgsave ) THEN
417                  fnln2d(ji,jj) = fnln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall)
418               ENDIF
419               IF( med_diag%PN_FELIM%dgsave ) THEN
420                  ffln2d(ji,jj) = ffln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall)
421               ENDIF
422               IF( med_diag%PD_JLIM%dgsave ) THEN
423                  fjld2d(ji,jj) = fjld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall)
424               ENDIF
425               IF( med_diag%PD_NLIM%dgsave ) THEN
426                  fnld2d(ji,jj) = fnld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall)
427               ENDIF
428               IF( med_diag%PD_FELIM%dgsave ) THEN
429                  ffld2d(ji,jj) = ffld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall)
430               ENDIF
431               IF( med_diag%PD_SILIM%dgsave ) THEN
432                  fsld2d2(ji,jj) = fsld2d2(ji,jj) / MAX(ftot_pd(ji,jj), rsmall)
433               ENDIF
434               IF( med_diag%PDSILIM2%dgsave ) THEN
435                  fsld2d(ji,jj) = fsld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall)
436               ENDIF
437            ENDDO
438         ENDDO
439         !!----------------------------------------------------------------
440         !! Add in XML diagnostics stuff
441         !!----------------------------------------------------------------
442         !!
443         !! ** 2D diagnostics
444#   if defined key_debug_medusa
445         IF (lwp) write (numout,*) 'trc_bio_medusa: export all diag.'
446         CALL flush(numout)
447#   endif
448         IF ( med_diag%INVTN%dgsave ) THEN
449            CALL iom_put( "INVTN"  , ftot_n )
450         ENDIF
451         IF ( med_diag%INVTSI%dgsave ) THEN
452            CALL iom_put( "INVTSI"  , ftot_si )
453         ENDIF
454         IF ( med_diag%INVTFE%dgsave ) THEN
455            CALL iom_put( "INVTFE"  , ftot_fe )
456         ENDIF                           
457         IF ( med_diag%ML_PRN%dgsave ) THEN
458            CALL iom_put( "ML_PRN"  , fprn_ml )
459         ENDIF
460         IF ( med_diag%ML_PRD%dgsave ) THEN
461            CALL iom_put( "ML_PRD"  , fprd_ml )
462         ENDIF
463         IF ( med_diag%OCAL_LVL%dgsave ) THEN
464            CALL iom_put( "OCAL_LVL"  , fccd )
465         ENDIF
466         IF ( med_diag%PN_JLIM%dgsave ) THEN
467            CALL iom_put( "PN_JLIM"  , fjln2d )
468            DEALLOCATE( fjln2d )
469         ENDIF
470         IF ( med_diag%PN_NLIM%dgsave ) THEN
471            CALL iom_put( "PN_NLIM"  , fnln2d )
472            DEALLOCATE( fnln2d )
473         ENDIF
474         IF ( med_diag%PN_FELIM%dgsave ) THEN
475            CALL iom_put( "PN_FELIM"  , ffln2d )
476            DEALLOCATE( ffln2d )
477         ENDIF
478         IF ( med_diag%PD_JLIM%dgsave ) THEN
479            CALL iom_put( "PD_JLIM"  , fjld2d )
480            DEALLOCATE( fjld2d )
481         ENDIF
482         IF ( med_diag%PD_NLIM%dgsave ) THEN
483            CALL iom_put( "PD_NLIM"  , fnld2d )
484            DEALLOCATE( fnld2d )
485         ENDIF
486         IF ( med_diag%PD_FELIM%dgsave ) THEN
487            CALL iom_put( "PD_FELIM"  , ffld2d )
488            DEALLOCATE( ffld2d )
489         ENDIF
490         IF ( med_diag%PD_SILIM%dgsave ) THEN
491            CALL iom_put( "PD_SILIM"  , fsld2d2 )
492            DEALLOCATE( fsld2d2 )
493         ENDIF
494         IF ( med_diag%PDSILIM2%dgsave ) THEN
495            CALL iom_put( "PDSILIM2"  , fsld2d )
496            DEALLOCATE( fsld2d )
497         ENDIF
498         IF ( med_diag%INTFLX_N%dgsave ) THEN
499            CALL iom_put( "INTFLX_N"  , fflx_n )
500         ENDIF
501         IF ( med_diag%INTFLX_SI%dgsave ) THEN
502            CALL iom_put( "INTFLX_SI"  , fflx_si )
503         ENDIF
504         IF ( med_diag%INTFLX_FE%dgsave ) THEN
505            CALL iom_put( "INTFLX_FE"  , fflx_fe )
506         ENDIF       
507         IF ( med_diag%INT_PN%dgsave ) THEN
508            CALL iom_put( "INT_PN"  , ftot_pn )
509         ENDIF
510         IF ( med_diag%INT_PD%dgsave ) THEN
511            CALL iom_put( "INT_PD"  , ftot_pd )
512         ENDIF         
513         IF ( med_diag%INT_ZMI%dgsave ) THEN
514            CALL iom_put( "INT_ZMI"  , ftot_zmi )
515         ENDIF
516         IF ( med_diag%INT_ZME%dgsave ) THEN
517            CALL iom_put( "INT_ZME"  , ftot_zme )
518         ENDIF
519         IF ( med_diag%INT_DET%dgsave ) THEN
520            CALL iom_put( "INT_DET"  , ftot_det )
521         ENDIF
522         IF ( med_diag%INT_DTC%dgsave ) THEN
523            CALL iom_put( "INT_DTC"  , ftot_dtc )
524         ENDIF
525         IF ( med_diag%BEN_N%dgsave ) THEN
526            CALL iom_put( "BEN_N"  , za_sed_n )
527         ENDIF
528         IF ( med_diag%BEN_FE%dgsave ) THEN
529            CALL iom_put( "BEN_FE"  , za_sed_fe )
530         ENDIF
531         IF ( med_diag%BEN_C%dgsave ) THEN
532            CALL iom_put( "BEN_C"  , za_sed_c )
533         ENDIF
534         IF ( med_diag%BEN_SI%dgsave ) THEN
535            CALL iom_put( "BEN_SI"  , za_sed_si )
536         ENDIF
537         IF ( med_diag%BEN_CA%dgsave ) THEN
538            CALL iom_put( "BEN_CA"  , za_sed_ca )
539         ENDIF
540         IF ( med_diag%RUNOFF%dgsave ) THEN
541            CALL iom_put( "RUNOFF"  , f_runoff )
542         ENDIF 
543# if defined key_roam       
544         IF ( med_diag%N_PROD%dgsave ) THEN
545            CALL iom_put( "N_PROD"  , fnit_prod )
546         ENDIF
547         IF ( med_diag%N_CONS%dgsave ) THEN
548            CALL iom_put( "N_CONS"  , fnit_cons )
549         ENDIF
550         IF ( med_diag%C_PROD%dgsave ) THEN
551            CALL iom_put( "C_PROD"  , fcar_prod )
552         ENDIF
553         IF ( med_diag%C_CONS%dgsave ) THEN
554            CALL iom_put( "C_CONS"  , fcar_cons )
555         ENDIF
556         IF ( med_diag%O2_PROD%dgsave ) THEN
557            CALL iom_put( "O2_PROD"  , foxy_prod )
558         ENDIF
559         IF ( med_diag%O2_CONS%dgsave ) THEN
560            CALL iom_put( "O2_CONS"  , foxy_cons )
561         ENDIF
562         IF ( med_diag%O2_ANOX%dgsave ) THEN
563            CALL iom_put( "O2_ANOX"  , foxy_anox )
564         ENDIF
565         IF ( med_diag%INVTC%dgsave ) THEN
566            CALL iom_put( "INVTC"  , ftot_c )
567         ENDIF
568         IF ( med_diag%INVTALK%dgsave ) THEN
569            CALL iom_put( "INVTALK"  , ftot_a )
570         ENDIF
571         IF ( med_diag%INVTO2%dgsave ) THEN
572            CALL iom_put( "INVTO2"  , ftot_o2 )
573         ENDIF
574         IF ( med_diag%COM_RESP%dgsave ) THEN
575            CALL iom_put( "COM_RESP"  , fcomm_resp )
576         ENDIF         
577# endif     
578         !!
579         !! diagnostic filled in the i-j-k main loop
580         !!--------------------------------------------
581         IF ( med_diag%PRN%dgsave ) THEN
582            CALL iom_put( "PRN"  , fprn2d )
583            DEALLOCATE( fprn2d )
584         ENDIF
585         IF ( med_diag%MPN%dgsave ) THEN
586            CALL iom_put( "MPN"  ,fdpn2d )
587            DEALLOCATE( fdpn2d )
588         ENDIF
589         IF ( med_diag%PRD%dgsave ) THEN
590            CALL iom_put( "PRD"  ,fprd2d )
591            DEALLOCATE( fprd2d )
592         ENDIF
593         IF( med_diag%MPD%dgsave ) THEN
594            CALL iom_put( "MPD"  , fdpd2d )
595            DEALLOCATE( fdpd2d )
596         ENDIF
597         !  IF( med_diag%DSED%dgsave ) THEN
598         !      CALL iom_put( "DSED"  , ftot_n )
599         !  ENDIF
600         IF( med_diag%OPAL%dgsave ) THEN
601            CALL iom_put( "OPAL"  , fprds2d )
602            DEALLOCATE( fprds2d )
603         ENDIF
604         IF( med_diag%OPALDISS%dgsave ) THEN
605            CALL iom_put( "OPALDISS"  , fsdiss2d )
606            DEALLOCATE( fsdiss2d )
607         ENDIF
608         IF( med_diag%GMIPn%dgsave ) THEN
609            CALL iom_put( "GMIPn"  , fgmipn2d )
610            DEALLOCATE( fgmipn2d )
611         ENDIF
612         IF( med_diag%GMID%dgsave ) THEN
613            CALL iom_put( "GMID"  , fgmid2d )
614            DEALLOCATE( fgmid2d )
615         ENDIF
616         IF( med_diag%MZMI%dgsave ) THEN
617            CALL iom_put( "MZMI"  , fdzmi2d )
618            DEALLOCATE( fdzmi2d )
619         ENDIF
620         IF( med_diag%GMEPN%dgsave ) THEN
621            CALL iom_put( "GMEPN"  , fgmepn2d )
622            DEALLOCATE( fgmepn2d )
623         ENDIF
624         IF( med_diag%GMEPD%dgsave ) THEN
625            CALL iom_put( "GMEPD"  , fgmepd2d )
626            DEALLOCATE( fgmepd2d )
627         ENDIF
628         IF( med_diag%GMEZMI%dgsave ) THEN
629            CALL iom_put( "GMEZMI"  , fgmezmi2d )
630            DEALLOCATE( fgmezmi2d )
631         ENDIF
632         IF( med_diag%GMED%dgsave ) THEN
633            CALL iom_put( "GMED"  , fgmed2d )
634            DEALLOCATE( fgmed2d )
635         ENDIF
636         IF( med_diag%MZME%dgsave ) THEN
637            CALL iom_put( "MZME"  , fdzme2d )
638            DEALLOCATE( fdzme2d )
639         ENDIF
640         !  IF( med_diag%DEXP%dgsave ) THEN
641         !      CALL iom_put( "DEXP"  , ftot_n )
642         !  ENDIF
643         IF( med_diag%DETN%dgsave ) THEN
644            CALL iom_put( "DETN"  , fslown2d )
645            DEALLOCATE( fslown2d )
646         ENDIF
647         IF( med_diag%MDET%dgsave ) THEN
648            CALL iom_put( "MDET"  , fdd2d )
649            DEALLOCATE( fdd2d )
650         ENDIF
651         IF( med_diag%AEOLIAN%dgsave ) THEN
652            CALL iom_put( "AEOLIAN"  , ffetop2d )
653            DEALLOCATE( ffetop2d )
654         ENDIF
655         IF( med_diag%BENTHIC%dgsave ) THEN
656            CALL iom_put( "BENTHIC"  , ffebot2d )
657            DEALLOCATE( ffebot2d )
658         ENDIF
659         IF( med_diag%SCAVENGE%dgsave ) THEN
660            CALL iom_put( "SCAVENGE"  , ffescav2d )
661            DEALLOCATE( ffescav2d )
662         ENDIF
663         !!
664         IF( med_diag%TOTREG_N%dgsave ) THEN
665            CALL iom_put( "TOTREG_N"  , fregen2d )
666            DEALLOCATE( fregen2d )
667         ENDIF
668         IF( med_diag%TOTRG_SI%dgsave ) THEN
669            CALL iom_put( "TOTRG_SI"  , fregensi2d )
670            DEALLOCATE( fregensi2d )
671         ENDIF
672         !!
673         IF( med_diag%FASTN%dgsave ) THEN
674            CALL iom_put( "FASTN"  , ftempn2d )
675            DEALLOCATE( ftempn2d )
676         ENDIF
677         IF( med_diag%FASTSI%dgsave ) THEN
678            CALL iom_put( "FASTSI"  , ftempsi2d )
679            DEALLOCATE( ftempsi2d )
680         ENDIF
681         IF( med_diag%FASTFE%dgsave ) THEN
682            CALL iom_put( "FASTFE"  , ftempfe2d )
683            DEALLOCATE( ftempfe2d )
684         ENDIF
685         IF( med_diag%FASTC%dgsave ) THEN
686            CALL iom_put( "FASTC"  , ftempc2d )
687            DEALLOCATE( ftempc2d )
688         ENDIF
689         IF( med_diag%FASTCA%dgsave ) THEN
690            CALL iom_put( "FASTCA"  , ftempca2d )
691            DEALLOCATE( ftempca2d )
692         ENDIF
693         !!
694         IF( med_diag%REMINN%dgsave ) THEN
695            CALL iom_put( "REMINN"  , freminn2d )
696            DEALLOCATE( freminn2d )
697         ENDIF
698         IF( med_diag%REMINSI%dgsave ) THEN
699            CALL iom_put( "REMINSI"  , freminsi2d )
700            DEALLOCATE( freminsi2d )
701         ENDIF
702         IF( med_diag%REMINFE%dgsave ) THEN
703            CALL iom_put( "REMINFE"  , freminfe2d )
704            DEALLOCATE( freminfe2d )
705         ENDIF
706         IF( med_diag%REMINC%dgsave ) THEN
707            CALL iom_put( "REMINC"  , freminc2d )
708            DEALLOCATE( freminc2d )
709         ENDIF
710         IF( med_diag%REMINCA%dgsave ) THEN
711            CALL iom_put( "REMINCA"  , freminca2d )
712            DEALLOCATE( freminca2d )
713         ENDIF
714         IF( med_diag%SEAFLRN%dgsave ) THEN
715            CALL iom_put( "SEAFLRN"  , fsedn )
716         ENDIF
717         IF( med_diag%SEAFLRSI%dgsave ) THEN
718            CALL iom_put( "SEAFLRSI"  , fsedsi )
719         ENDIF
720         IF( med_diag%SEAFLRFE%dgsave ) THEN
721            CALL iom_put( "SEAFLRFE"  , fsedfe )
722         ENDIF
723         IF( med_diag%SEAFLRC%dgsave ) THEN
724            CALL iom_put( "SEAFLRC"  , fsedc )
725         ENDIF
726         IF( med_diag%SEAFLRCA%dgsave ) THEN
727            CALL iom_put( "SEAFLRCA"  , fsedca )
728         ENDIF
729         !!
730# if defined key_roam           
731         !!
732         IF( med_diag%RIV_N%dgsave ) THEN
733            CALL iom_put( "RIV_N"  , rivn2d )
734            DEALLOCATE( rivn2d )
735         ENDIF
736         IF( med_diag%RIV_SI%dgsave ) THEN
737            CALL iom_put( "RIV_SI"  , rivsi2d )
738            DEALLOCATE( rivsi2d )
739         ENDIF
740         IF( med_diag%RIV_C%dgsave ) THEN
741            CALL iom_put( "RIV_C"  , rivc2d )
742            DEALLOCATE( rivc2d )
743         ENDIF
744         IF( med_diag%RIV_ALK%dgsave ) THEN
745            CALL iom_put( "RIV_ALK"  , rivalk2d )
746            DEALLOCATE( rivalk2d )
747         ENDIF
748         IF( med_diag%DETC%dgsave ) THEN
749            CALL iom_put( "DETC"  , fslowc2d )
750            DEALLOCATE( fslowc2d )
751         ENDIF
752         !!
753         IF( med_diag%PN_LLOSS%dgsave ) THEN
754            CALL iom_put( "PN_LLOSS"  , fdpn22d )
755            DEALLOCATE( fdpn22d )
756         ENDIF
757         IF( med_diag%PD_LLOSS%dgsave ) THEN
758            CALL iom_put( "PD_LLOSS"  , fdpd22d )
759            DEALLOCATE( fdpd22d )
760         ENDIF
761         IF( med_diag%ZI_LLOSS%dgsave ) THEN
762            CALL iom_put( "ZI_LLOSS"  , fdzmi22d )
763             DEALLOCATE( fdzmi22d )
764          ENDIF
765          IF( med_diag%ZE_LLOSS%dgsave ) THEN
766             CALL iom_put( "ZE_LLOSS"  , fdzme22d )
767             DEALLOCATE( fdzme22d )
768          ENDIF
769          IF( med_diag%ZI_MES_N%dgsave ) THEN
770             CALL iom_put( "ZI_MES_N"  , zimesn2d )
771             DEALLOCATE( zimesn2d )
772          ENDIF
773          IF( med_diag%ZI_MES_D%dgsave ) THEN
774             CALL iom_put( "ZI_MES_D"  , zimesd2d )
775             DEALLOCATE( zimesd2d )
776          ENDIF
777          IF( med_diag%ZI_MES_C%dgsave ) THEN
778             CALL iom_put( "ZI_MES_C"  , zimesc2d )
779             DEALLOCATE( zimesc2d )
780          ENDIF
781          IF( med_diag%ZI_MESDC%dgsave ) THEN
782             CALL iom_put( "ZI_MESDC"  ,zimesdc2d )
783             DEALLOCATE( zimesdc2d )
784          ENDIF
785          IF( med_diag%ZI_EXCR%dgsave ) THEN
786             CALL iom_put( "ZI_EXCR"  , ziexcr2d )
787             DEALLOCATE( ziexcr2d )
788          ENDIF
789          IF( med_diag%ZI_RESP%dgsave ) THEN
790             CALL iom_put( "ZI_RESP"  , ziresp2d )
791             DEALLOCATE( ziresp2d )
792          ENDIF
793          IF( med_diag%ZI_GROW%dgsave ) THEN
794             CALL iom_put( "ZI_GROW"  , zigrow2d )
795             DEALLOCATE( zigrow2d )
796          ENDIF
797          IF( med_diag%ZE_MES_N%dgsave ) THEN
798             CALL iom_put( "ZE_MES_N"  , zemesn2d )
799             DEALLOCATE( zemesn2d )
800          ENDIF
801          IF( med_diag%ZE_MES_D%dgsave ) THEN
802             CALL iom_put( "ZE_MES_D"  , zemesd2d )
803             DEALLOCATE( zemesd2d )
804          ENDIF
805          IF( med_diag%ZE_MES_C%dgsave ) THEN
806             CALL iom_put( "ZE_MES_C"  , zemesc2d )
807             DEALLOCATE( zemesc2d )
808          ENDIF
809          IF( med_diag%ZE_MESDC%dgsave ) THEN
810             CALL iom_put( "ZE_MESDC"  , zemesdc2d )
811             DEALLOCATE( zemesdc2d )
812          ENDIF
813          IF( med_diag%ZE_EXCR%dgsave ) THEN
814             CALL iom_put( "ZE_EXCR"  , zeexcr2d )
815             DEALLOCATE( zeexcr2d )
816          ENDIF
817          IF( med_diag%ZE_RESP%dgsave ) THEN
818             CALL iom_put( "ZE_RESP"  , zeresp2d )
819             DEALLOCATE( zeresp2d )
820          ENDIF
821          IF( med_diag%ZE_GROW%dgsave ) THEN
822             CALL iom_put( "ZE_GROW"  , zegrow2d )
823             DEALLOCATE( zegrow2d )
824          ENDIF
825          IF( med_diag%MDETC%dgsave ) THEN
826             CALL iom_put( "MDETC"  , mdetc2d )
827             DEALLOCATE( mdetc2d )
828          ENDIF
829          IF( med_diag%GMIDC%dgsave ) THEN
830             CALL iom_put( "GMIDC"  , gmidc2d )
831             DEALLOCATE( gmidc2d )
832          ENDIF
833          IF( med_diag%GMEDC%dgsave ) THEN
834             CALL iom_put( "GMEDC"  , gmedc2d )
835             DEALLOCATE( gmedc2d )
836          ENDIF
837          IF( med_diag%IBEN_N%dgsave ) THEN
838             CALL iom_put( "IBEN_N"  , iben_n2d )
839             DEALLOCATE( iben_n2d )
840          ENDIF
841          IF( med_diag%IBEN_FE%dgsave ) THEN
842             CALL iom_put( "IBEN_FE"  , iben_fe2d )
843             DEALLOCATE( iben_fe2d )
844          ENDIF
845          IF( med_diag%IBEN_C%dgsave ) THEN
846             CALL iom_put( "IBEN_C"  , iben_c2d )
847             DEALLOCATE( iben_c2d )
848          ENDIF
849          IF( med_diag%IBEN_SI%dgsave ) THEN
850             CALL iom_put( "IBEN_SI"  , iben_si2d )
851             DEALLOCATE( iben_si2d )
852          ENDIF
853          IF( med_diag%IBEN_CA%dgsave ) THEN
854             CALL iom_put( "IBEN_CA"  , iben_ca2d )
855             DEALLOCATE( iben_ca2d )
856          ENDIF
857          IF( med_diag%OBEN_N%dgsave ) THEN
858             CALL iom_put( "OBEN_N"  , oben_n2d )
859             DEALLOCATE( oben_n2d )
860          ENDIF
861          IF( med_diag%OBEN_FE%dgsave ) THEN
862             CALL iom_put( "OBEN_FE"  , oben_fe2d )
863             DEALLOCATE( oben_fe2d )
864          ENDIF
865          IF( med_diag%OBEN_C%dgsave ) THEN
866             CALL iom_put( "OBEN_C"  , oben_c2d )
867             DEALLOCATE( oben_c2d )
868          ENDIF
869          IF( med_diag%OBEN_SI%dgsave ) THEN
870             CALL iom_put( "OBEN_SI"  , oben_si2d )
871             DEALLOCATE( oben_si2d )
872          ENDIF
873          IF( med_diag%OBEN_CA%dgsave ) THEN
874             CALL iom_put( "OBEN_CA"  , oben_ca2d )
875             DEALLOCATE( oben_ca2d )
876          ENDIF
877          IF( med_diag%SFR_OCAL%dgsave ) THEN
878             CALL iom_put( "SFR_OCAL"  , sfr_ocal2d )
879             DEALLOCATE( sfr_ocal2d )
880          ENDIF
881          IF( med_diag%SFR_OARG%dgsave ) THEN
882             CALL iom_put( "SFR_OARG"  , sfr_oarg2d )
883             DEALLOCATE( sfr_oarg2d )
884          ENDIF
885          IF( med_diag%LYSO_CA%dgsave ) THEN
886             CALL iom_put( "LYSO_CA"  , lyso_ca2d )
887             DEALLOCATE( lyso_ca2d )
888          ENDIF
889# endif                   
890          !!
891          !! ** 3D diagnostics
892          IF( med_diag%TPP3%dgsave ) THEN
893             CALL iom_put( "TPP3"  , tpp3d )
894             DEALLOCATE( tpp3d )
895          ENDIF
896          IF( med_diag%DETFLUX3%dgsave ) THEN
897             CALL iom_put( "DETFLUX3"  , detflux3d )
898             DEALLOCATE( detflux3d )
899          ENDIF
900          IF( med_diag%REMIN3N%dgsave ) THEN
901             CALL iom_put( "REMIN3N"  , remin3dn )
902             DEALLOCATE( remin3dn )
903          ENDIF
904# if defined key_roam         
905          IF( med_diag%PH3%dgsave ) THEN
906             CALL iom_put( "PH3"  , f3_pH )
907          ENDIF
908          IF( med_diag%OM_CAL3%dgsave ) THEN
909             CALL iom_put( "OM_CAL3"  , f3_omcal )
910          ENDIF
911          !!
912          !! AXY (09/11/16): 2D CMIP6 diagnostics
913          IF( med_diag%INTDISSIC%dgsave ) THEN
914             CALL iom_put( "INTDISSIC"  , intdissic )
915             DEALLOCATE( intdissic )
916          ENDIF         
917          IF( med_diag%INTDISSIN%dgsave ) THEN
918             CALL iom_put( "INTDISSIN"  , intdissin )
919             DEALLOCATE( intdissin )
920          ENDIF         
921          IF( med_diag%INTDISSISI%dgsave ) THEN
922             CALL iom_put( "INTDISSISI"  , intdissisi )
923             DEALLOCATE( intdissisi )
924          ENDIF         
925          IF( med_diag%INTTALK%dgsave ) THEN
926             CALL iom_put( "INTTALK"  , inttalk )
927             DEALLOCATE( inttalk )
928          ENDIF         
929          IF( med_diag%O2min%dgsave ) THEN
930             CALL iom_put( "O2min"  , o2min )
931             DEALLOCATE( o2min )
932          ENDIF         
933          IF( med_diag%ZO2min%dgsave ) THEN
934             CALL iom_put( "ZO2min"  , zo2min )
935             DEALLOCATE( zo2min )
936          ENDIF         
937          IF( med_diag%FBDDTALK%dgsave ) THEN
938             CALL iom_put( "FBDDTALK"  , fbddtalk )
939             DEALLOCATE( fbddtalk )
940          ENDIF         
941          IF( med_diag%FBDDTDIC%dgsave ) THEN
942             CALL iom_put( "FBDDTDIC"  , fbddtdic )
943             DEALLOCATE( fbddtdic )
944          ENDIF         
945          IF( med_diag%FBDDTDIFE%dgsave ) THEN
946             CALL iom_put( "FBDDTDIFE" , fbddtdife )
947             DEALLOCATE( fbddtdife )
948          ENDIF         
949          IF( med_diag%FBDDTDIN%dgsave ) THEN
950             CALL iom_put( "FBDDTDIN"  , fbddtdin )
951             DEALLOCATE( fbddtdin )
952          ENDIF         
953          IF( med_diag%FBDDTDISI%dgsave ) THEN
954             CALL iom_put( "FBDDTDISI" , fbddtdisi )
955             DEALLOCATE( fbddtdisi )
956          ENDIF   
957          !!
958          !! AXY (09/11/16): 3D CMIP6 diagnostics
959          IF( med_diag%TPPD3%dgsave ) THEN
960             CALL iom_put( "TPPD3"     , tppd3 )
961             DEALLOCATE( tppd3 )
962          ENDIF         
963          IF( med_diag%BDDTALK3%dgsave ) THEN
964             CALL iom_put( "BDDTALK3"  , bddtalk3 )
965             DEALLOCATE( bddtalk3 )
966          ENDIF         
967          IF( med_diag%BDDTDIC3%dgsave ) THEN
968             CALL iom_put( "BDDTDIC3"  , bddtdic3 )
969             DEALLOCATE( bddtdic3 )
970          ENDIF         
971          IF( med_diag%BDDTDIFE3%dgsave ) THEN
972             CALL iom_put( "BDDTDIFE3" , bddtdife3 )
973             DEALLOCATE( bddtdife3 )
974          ENDIF         
975          IF( med_diag%BDDTDIN3%dgsave ) THEN
976             CALL iom_put( "BDDTDIN3"  , bddtdin3 )
977             DEALLOCATE( bddtdin3 )
978          ENDIF         
979          IF( med_diag%BDDTDISI3%dgsave ) THEN
980             CALL iom_put( "BDDTDISI3" , bddtdisi3 )
981             DEALLOCATE( bddtdisi3 )
982          ENDIF   
983          IF( med_diag%FD_NIT3%dgsave ) THEN
984             CALL iom_put( "FD_NIT3"  , fd_nit3 )
985             DEALLOCATE( fd_nit3 )
986          ENDIF
987          IF( med_diag%FD_SIL3%dgsave ) THEN
988             CALL iom_put( "FD_SIL3"  , fd_sil3 )
989             DEALLOCATE( fd_sil3 )
990          ENDIF
991          IF( med_diag%FD_CAL3%dgsave ) THEN
992             CALL iom_put( "FD_CAL3"  , fd_cal3 )
993             DEALLOCATE( fd_cal3 )
994          ENDIF
995          IF( med_diag%FD_CAR3%dgsave ) THEN
996             CALL iom_put( "FD_CAR3"  , fd_car3 )
997             DEALLOCATE( fd_car3 )
998          ENDIF
999          IF( med_diag%CO33%dgsave ) THEN
1000             CALL iom_put( "CO33"  , f3_co3 )
1001          ENDIF                   
1002          IF( med_diag%CO3SATARAG3%dgsave ) THEN
1003             CALL iom_put( "CO3SATARAG3"  , f3_omarg )
1004          ENDIF                   
1005          IF( med_diag%CO3SATCALC3%dgsave ) THEN
1006             CALL iom_put( "CO3SATCALC3"  , f3_omcal )
1007          ENDIF                   
1008          IF( med_diag%EXPC3%dgsave ) THEN
1009             CALL iom_put( "EXPC3"  , expc3 )
1010             DEALLOCATE( expc3 )
1011          ENDIF                   
1012          IF( med_diag%EXPN3%dgsave ) THEN
1013             CALL iom_put( "EXPN3"  , expn3 )
1014             DEALLOCATE( expn3 )
1015          ENDIF                   
1016          IF( med_diag%DCALC3%dgsave ) THEN
1017             CALL iom_put( "DCALC3"  , dcalc3 )
1018             DEALLOCATE( dcalc3 )
1019          ENDIF                   
1020          IF( med_diag%FEDISS3%dgsave ) THEN
1021             CALL iom_put( "FEDISS3"  , fediss3 )
1022             DEALLOCATE( fediss3 )
1023          ENDIF                   
1024          IF( med_diag%FESCAV3%dgsave ) THEN
1025             CALL iom_put( "FESCAV3"  , fescav3 )
1026             DEALLOCATE( fescav3 )
1027          ENDIF                   
1028          IF( med_diag%MIGRAZP3%dgsave ) THEN
1029             CALL iom_put( "MIGRAZP3"  , migrazp3 )
1030             DEALLOCATE( migrazp3 )
1031          ENDIF                   
1032          IF( med_diag%MIGRAZD3%dgsave ) THEN
1033             CALL iom_put( "MIGRAZD3"  , migrazd3 )
1034             DEALLOCATE( migrazd3 )
1035          ENDIF                   
1036          IF( med_diag%MEGRAZP3%dgsave ) THEN
1037             CALL iom_put( "MEGRAZP3"  , megrazp3 )
1038             DEALLOCATE( megrazp3 )
1039          ENDIF                   
1040          IF( med_diag%MEGRAZD3%dgsave ) THEN
1041             CALL iom_put( "MEGRAZD3"  , megrazd3 )
1042             DEALLOCATE( megrazd3 )
1043          ENDIF                   
1044          IF( med_diag%MEGRAZZ3%dgsave ) THEN
1045             CALL iom_put( "MEGRAZZ3"  , megrazz3 )
1046             DEALLOCATE( megrazz3 )
1047          ENDIF                   
1048          IF( med_diag%O2SAT3%dgsave ) THEN
1049             CALL iom_put( "O2SAT3"  , o2sat3 )
1050             DEALLOCATE( o2sat3 )
1051          ENDIF                   
1052          IF( med_diag%PBSI3%dgsave ) THEN
1053             CALL iom_put( "PBSI3"  , pbsi3 )
1054             DEALLOCATE( pbsi3 )
1055          ENDIF                   
1056          IF( med_diag%PCAL3%dgsave ) THEN
1057             CALL iom_put( "PCAL3"  , pcal3 )
1058             DEALLOCATE( pcal3 )
1059          ENDIF                   
1060          IF( med_diag%REMOC3%dgsave ) THEN
1061             CALL iom_put( "REMOC3"  , remoc3 )
1062             DEALLOCATE( remoc3 )
1063          ENDIF                   
1064          IF( med_diag%PNLIMJ3%dgsave ) THEN
1065             CALL iom_put( "PNLIMJ3" , pnlimj3 )
1066             DEALLOCATE( pnlimj3 )
1067          ENDIF                   
1068          IF( med_diag%PNLIMN3%dgsave ) THEN
1069             CALL iom_put( "PNLIMN3" , pnlimn3 )
1070             DEALLOCATE( pnlimn3 )
1071          ENDIF                   
1072          IF( med_diag%PNLIMFE3%dgsave ) THEN
1073             CALL iom_put( "PNLIMFE3" , pnlimfe3 )
1074             DEALLOCATE( pnlimfe3 )
1075          ENDIF                   
1076          IF( med_diag%PDLIMJ3%dgsave ) THEN
1077             CALL iom_put( "PDLIMJ3" , pdlimj3 )
1078             DEALLOCATE( pdlimj3 )
1079          ENDIF                   
1080          IF( med_diag%PDLIMN3%dgsave ) THEN
1081             CALL iom_put( "PDLIMN3" , pdlimn3 )
1082             DEALLOCATE( pdlimn3 )
1083          ENDIF                   
1084          IF( med_diag%PDLIMFE3%dgsave ) THEN
1085             CALL iom_put( "PDLIMFE3" , pdlimfe3 )
1086             DEALLOCATE( pdlimfe3 )
1087          ENDIF                   
1088          IF( med_diag%PDLIMSI3%dgsave ) THEN
1089             CALL iom_put( "PDLIMSI3" , pdlimsi3 )
1090             DEALLOCATE( pdlimsi3 )
1091          ENDIF                   
1092         
1093# endif         
1094
1095          DEALLOCATE( zw2d )
1096
1097       ENDIF                    ! end of ln_diatrc option
1098
1099   END SUBROUTINE bio_medusa_fin
1100
1101#else
1102   !!======================================================================
1103   !!  Dummy module :                                   No MEDUSA bio-model
1104   !!======================================================================
1105CONTAINS
1106   SUBROUTINE bio_medusa_fin( )                    ! Empty routine
1107      WRITE(*,*) 'bio_medusa_fin: You should not have seen this print! error?'
1108   END SUBROUTINE bio_medusa_fin
1109#endif 
1110
1111   !!======================================================================
1112END MODULE bio_medusa_fin_mod
Note: See TracBrowser for help on using the repository browser.