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_med_diag_iomput.F90 in branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA – NEMO

source: branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_med_diag_iomput.F90 @ 8025

Last change on this file since 8025 was 8025, checked in by marc, 7 years ago

Split diagnostics in bio_medusa_diag.F90 across two other files

File size: 30.0 KB
Line 
1MODULE bio_med_diag_iomput_mod
2   !!======================================================================
3   !!                         ***  MODULE bio_med_diag_iomput_mod  ***
4   !! Calculates diagnostics
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_med_diag_iomput        ! Called in bio_medusa_diag.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_med_diag_iomput( jk )
28      !!-------------------------------------------------------------------
29      !!                     ***  ROUTINE bio_med_diag_iomput  ***
30      !! Calculates the diagnostics used with iom_put
31      !!-------------------------------------------------------------------
32      USE bio_medusa_mod
33      USE dom_oce,           ONLY: e3t_0, e3t_n, mbathy, tmask
34      USE in_out_manager,    ONLY: lwp, numout
35      USE par_oce,           ONLY: jpim1, jpjm1
36      USE phycst,            ONLY: rsmall
37      USE sms_medusa,        ONLY: f3_omarg, f3_omcal,                   &
38                                   i0100, i0500, i1000,                  &
39                                   xbetac, xbetan, xphi,                 &
40                                   xthetapd, xthetapn, xthetazmi
41      USE trc,               ONLY: med_diag
42
43   !!* Substitution
44#  include "domzgr_substitute.h90"
45
46      !! level
47      INTEGER, INTENT( in ) :: jk
48
49      !! Loop avariables
50      INTEGER :: ji, jj, jn
51
52      DO jj = 2,jpjm1
53         DO ji = 2,jpim1
54            !! OPEN wet point IF..THEN loop
55            IF (tmask(ji,jj,jk) == 1) THEN
56               !!-------------------------------------------------------
57               !! Add in XML diagnostics stuff
58               !!-------------------------------------------------------
59               !!
60               !! ** 2D diagnostics
61#   if defined key_debug_medusa
62               IF (lwp) write (numout,*)                                     &
63                  'trc_bio_medusa: diag in ij-jj-jk loop'
64               CALL flush(numout)
65#   endif
66               IF ( med_diag%PRN%dgsave ) THEN
67                   fprn2d(ji,jj) = fprn2d(ji,jj) +                           &
68                                   (fprn(ji,jj)  * zphn(ji,jj) *             &
69                                    fse3t(ji,jj,jk)) 
70               ENDIF
71               IF ( med_diag%MPN%dgsave ) THEN
72                   fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn(ji,jj) *            &
73                                                    fse3t(ji,jj,jk))
74               ENDIF
75               IF ( med_diag%PRD%dgsave ) THEN
76                   fprd2d(ji,jj) = fprd2d(ji,jj) +                           &
77                                   (fprd(ji,jj)  * zphd(ji,jj) *             &
78                                    fse3t(ji,jj,jk))
79               ENDIF
80               IF( med_diag%MPD%dgsave ) THEN
81                   fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd(ji,jj) *            &
82                                                    fse3t(ji,jj,jk)) 
83               ENDIF
84               !  IF( med_diag%DSED%dgsave ) THEN
85               !      CALL iom_put( "DSED"  , ftot_n )
86               !  ENDIF
87               IF( med_diag%OPAL%dgsave ) THEN
88                   fprds2d(ji,jj) = fprds2d(ji,jj) +                         &
89                                    (fprds(ji,jj) * zpds(ji,jj) *            &
90                                     fse3t(ji,jj,jk)) 
91               ENDIF
92            ENDIF
93         ENDDO
94      ENDDO
95
96      DO jj = 2,jpjm1
97         DO ji = 2,jpim1
98            IF (tmask(ji,jj,jk) == 1) THEN
99               IF( med_diag%OPALDISS%dgsave ) THEN
100                   fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss(ji,jj) *      &
101                                                        fse3t(ji,jj,jk)) 
102               ENDIF
103               IF( med_diag%GMIPn%dgsave ) THEN
104                   fgmipn2d(ji,jj) = fgmipn2d(ji,jj) +                       &
105                                     (fgmipn(ji,jj)  * fse3t(ji,jj,jk)) 
106               ENDIF
107               IF( med_diag%GMID%dgsave ) THEN
108                   fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid(ji,jj) *         &
109                                                      fse3t(ji,jj,jk)) 
110               ENDIF
111               IF( med_diag%MZMI%dgsave ) THEN
112                   fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi(ji,jj) *         &
113                                                      fse3t(ji,jj,jk)) 
114               ENDIF
115            ENDIF
116         ENDDO
117      ENDDO
118
119      DO jj = 2,jpjm1
120         DO ji = 2,jpim1
121            IF (tmask(ji,jj,jk) == 1) THEN
122               IF( med_diag%GMEPN%dgsave ) THEN
123                   fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn(ji,jj) *      &
124                                                        fse3t(ji,jj,jk))
125               ENDIF
126               IF( med_diag%GMEPD%dgsave ) THEN
127                   fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd(ji,jj) *      &
128                                                        fse3t(ji,jj,jk)) 
129               ENDIF
130               IF( med_diag%GMEZMI%dgsave ) THEN
131                   fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) +                     &
132                                      (fgmezmi(ji,jj) * fse3t(ji,jj,jk)) 
133               ENDIF
134               IF( med_diag%GMED%dgsave ) THEN
135                   fgmed2d(ji,jj) = fgmed2d(ji,jj) +                         &
136                                       (fgmed(ji,jj) * fse3t(ji,jj,jk)) 
137               ENDIF
138               IF( med_diag%MZME%dgsave ) THEN
139                  fdzme2d(ji,jj) = fdzme2d(ji,jj) +                          &
140                                    (fdzme(ji,jj) * fse3t(ji,jj,jk)) 
141               ENDIF
142               !  IF( med_diag%DEXP%dgsave ) THEN
143               !      CALL iom_put( "DEXP"  , ftot_n )
144               !  ENDIF
145            ENDIF
146         ENDDO
147      ENDDO
148
149      DO jj = 2,jpjm1
150         DO ji = 2,jpim1
151            IF (tmask(ji,jj,jk) == 1) THEN
152               IF( med_diag%DETN%dgsave ) THEN
153                  fslown2d(ji,jj) = fslown2d(ji,jj) +                        &
154                                    (fslown(ji,jj) * fse3t(ji,jj,jk)) 
155               ENDIF
156               IF( med_diag%MDET%dgsave ) THEN
157                  fdd2d(ji,jj) = fdd2d(ji,jj) +                              &
158                                 (fdd(ji,jj) * fse3t(ji,jj,jk)) 
159               ENDIF
160            ENDIF
161         ENDDO
162      ENDDO
163
164      DO jj = 2,jpjm1
165         DO ji = 2,jpim1
166            IF (tmask(ji,jj,jk) == 1) THEN
167               IF( med_diag%AEOLIAN%dgsave ) THEN
168                  ffetop2d(ji,jj) = ffetop2d(ji,jj) +                        &
169                                    (ffetop(ji,jj) * fse3t(ji,jj,jk)) 
170               ENDIF
171               IF( med_diag%BENTHIC%dgsave ) THEN
172                  ffebot2d(ji,jj) = ffebot2d(ji,jj) +                        &
173                                    (ffebot(ji,jj) * fse3t(ji,jj,jk)) 
174               ENDIF
175               IF( med_diag%SCAVENGE%dgsave ) THEN
176                  ffescav2d(ji,jj) = ffescav2d(ji,jj) +                      &
177                                     (ffescav(ji,jj) * fse3t(ji,jj,jk)) 
178               ENDIF
179            ENDIF
180         ENDDO
181      ENDDO
182
183      DO jj = 2,jpjm1
184         DO ji = 2,jpim1
185            IF (tmask(ji,jj,jk) == 1) THEN
186               IF( med_diag%PN_JLIM%dgsave ) THEN
187                  ! fjln2d(ji,jj) = fjln2d(ji,jj) +                          &
188                  !                 (fjln(ji,jj)  * zphn(ji,jj) *            &
189                  !                  fse3t(ji,jj,jk))
190                  fjln2d(ji,jj) = fjln2d(ji,jj) +                            &
191                                  (fjlim_pn(ji,jj) * zphn(ji,jj) *           &
192                                   fse3t(ji,jj,jk)) 
193               ENDIF
194               IF( med_diag%PN_NLIM%dgsave ) THEN
195                  fnln2d(ji,jj) = fnln2d(ji,jj) +                            &
196                                  (fnln(ji,jj) * zphn(ji,jj) *               &
197                                   fse3t(ji,jj,jk)) 
198               ENDIF
199               IF( med_diag%PN_FELIM%dgsave ) THEN
200                  ffln2d(ji,jj) = ffln2d(ji,jj) +                            &
201                                  (ffln2(ji,jj) * zphn(ji,jj) *              &
202                                   fse3t(ji,jj,jk)) 
203               ENDIF
204            ENDIF
205         ENDDO
206      ENDDO
207
208      DO jj = 2,jpjm1
209         DO ji = 2,jpim1
210            IF (tmask(ji,jj,jk) == 1) THEN
211               IF( med_diag%PD_JLIM%dgsave ) THEN
212                   ! fjld2d(ji,jj) = fjld2d(ji,jj) +                          &
213                   !                 (fjld(ji,jj)  * zphd(ji,jj) *            &
214                   !                  fse3t(ji,jj,jk))
215                   fjld2d(ji,jj) = fjld2d(ji,jj) +                           &
216                                   (fjlim_pd(ji,jj) * zphd(ji,jj) *          &
217                                    fse3t(ji,jj,jk)) 
218               ENDIF
219               IF( med_diag%PD_NLIM%dgsave ) THEN
220                   fnld2d(ji,jj) = fnld2d(ji,jj) +                           &
221                                   (fnld(ji,jj) * zphd(ji,jj) *              &
222                                    fse3t(ji,jj,jk)) 
223               ENDIF
224               IF( med_diag%PD_FELIM%dgsave ) THEN
225                   ffld2d(ji,jj) = ffld2d(ji,jj) +                           &
226                                   (ffld(ji,jj) * zphd(ji,jj) *              &
227                                    fse3t(ji,jj,jk)) 
228               ENDIF
229               IF( med_diag%PD_SILIM%dgsave ) THEN
230                   fsld2d2(ji,jj) = fsld2d2(ji,jj) +                         &
231                                    (fsld2(ji,jj) * zphd(ji,jj) *            &
232                                     fse3t(ji,jj,jk)) 
233               ENDIF
234               IF( med_diag%PDSILIM2%dgsave ) THEN
235                   fsld2d(ji,jj) = fsld2d(ji,jj) +                           &
236                                   (fsld(ji,jj) * zphd(ji,jj) *              &
237                                    fse3t(ji,jj,jk))
238               ENDIF
239            ENDIF
240         ENDDO
241      ENDDO
242
243      DO jj = 2,jpjm1
244         DO ji = 2,jpim1
245            IF (tmask(ji,jj,jk) == 1) THEN
246               !!
247               IF( med_diag%TOTREG_N%dgsave ) THEN
248                  fregen2d(ji,jj) = fregen2d(ji,jj) + fregen(ji,jj)
249               ENDIF
250               IF( med_diag%TOTRG_SI%dgsave ) THEN
251                  fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi(ji,jj)
252               ENDIF
253            ENDIF
254         ENDDO
255      ENDDO
256
257      DO jj = 2,jpjm1
258         DO ji = 2,jpim1
259            IF (tmask(ji,jj,jk) == 1) THEN
260               !!
261               IF( med_diag%FASTN%dgsave ) THEN
262                   ftempn2d(ji,jj) = ftempn2d(ji,jj) +                       &
263                                     (ftempn(ji,jj)  * fse3t(ji,jj,jk))
264               ENDIF
265               IF( med_diag%FASTSI%dgsave ) THEN
266                   ftempsi2d(ji,jj) = ftempsi2d(ji,jj) +                     &
267                                      (ftempsi(ji,jj) * fse3t(ji,jj,jk))
268               ENDIF
269               IF( med_diag%FASTFE%dgsave ) THEN
270                   ftempfe2d(ji,jj) = ftempfe2d(ji,jj) +                     &
271                                      (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 
272               ENDIF
273               IF( med_diag%FASTC%dgsave ) THEN
274                   ftempc2d(ji,jj) = ftempc2d(ji,jj) +                       &
275                                     (ftempc(ji,jj) * fse3t(ji,jj,jk))
276               ENDIF
277               IF( med_diag%FASTCA%dgsave ) THEN
278                   ftempca2d(ji,jj) = ftempca2d(ji,jj) +                     &
279                                      (ftempca(ji,jj) * fse3t(ji,jj,jk))
280               ENDIF
281            ENDIF
282         ENDDO
283      ENDDO
284
285      DO jj = 2,jpjm1
286         DO ji = 2,jpim1
287            IF (tmask(ji,jj,jk) == 1) THEN
288               !!
289               IF( med_diag%REMINN%dgsave ) THEN
290                   freminn2d(ji,jj) = freminn2d(ji,jj) +                     &
291                                      (freminn(ji,jj)  * fse3t(ji,jj,jk))
292               ENDIF
293               IF( med_diag%REMINSI%dgsave ) THEN
294                   freminsi2d(ji,jj) = freminsi2d(ji,jj) +                   &
295                                       (freminsi(ji,jj) * fse3t(ji,jj,jk))
296               ENDIF
297               IF( med_diag%REMINFE%dgsave ) THEN
298                   freminfe2d(ji,jj) = freminfe2d(ji,jj) +                   &
299                                       (freminfe(ji,jj) * fse3t(ji,jj,jk)) 
300               ENDIF
301               IF( med_diag%REMINC%dgsave ) THEN
302                   freminc2d(ji,jj) = freminc2d(ji,jj) +                     &
303                                      (freminc(ji,jj)  * fse3t(ji,jj,jk)) 
304               ENDIF
305               IF( med_diag%REMINCA%dgsave ) THEN
306                   freminca2d(ji,jj) = freminca2d(ji,jj) +                   &
307                                       (freminca(ji,jj) * fse3t(ji,jj,jk)) 
308               ENDIF
309               !!
310            ENDIF
311         ENDDO
312      ENDDO
313
314# if defined key_roam
315      DO jj = 2,jpjm1
316         DO ji = 2,jpim1
317            IF (tmask(ji,jj,jk) == 1) THEN
318               !!
319               !! AXY (09/11/16): CMIP6 diagnostics
320               IF( med_diag%FD_NIT3%dgsave ) THEN
321                  fd_nit3(ji,jj,jk) = ffastn(ji,jj)
322               ENDIF
323               IF( med_diag%FD_SIL3%dgsave ) THEN
324                  fd_sil3(ji,jj,jk) = ffastsi(ji,jj)
325               ENDIF
326               IF( med_diag%FD_CAR3%dgsave ) THEN
327                  fd_car3(ji,jj,jk) = ffastc(ji,jj)
328               ENDIF
329               IF( med_diag%FD_CAL3%dgsave ) THEN
330                  fd_cal3(ji,jj,jk) = ffastca(ji,jj)
331               ENDIF
332            ENDIF
333         ENDDO
334      ENDDO
335
336      IF (jk.eq.i0100) THEN
337         DO jj = 2,jpjm1
338            DO ji = 2,jpim1
339               IF (tmask(ji,jj,jk) == 1) THEN
340                  IF( med_diag%RR_0100%dgsave ) THEN
341                     ffastca2d(ji,jj) =                                      &
342                                ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)
343                  ENDIF
344               ENDIF
345            ENDDO
346         ENDDO
347      ELSE IF (jk.eq.i0500) THEN
348         DO jj = 2,jpjm1
349            DO ji = 2,jpim1
350               IF (tmask(ji,jj,jk) == 1) THEN
351                  IF( med_diag%RR_0500%dgsave ) THEN
352                     ffastca2d(ji,jj) =                                      &
353                                ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)
354                  ENDIF
355               ENDIF
356            ENDDO
357         ENDDO
358      ELSE IF (jk.eq.i1000) THEN
359         DO jj = 2,jpjm1
360            DO ji = 2,jpim1
361               IF (tmask(ji,jj,jk) == 1) THEN
362                  IF( med_diag%RR_1000%dgsave ) THEN
363                     ffastca2d(ji,jj) =                                      &
364                                ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall)
365                  ENDIF
366               ENDIF
367            ENDDO
368         ENDDO
369      ELSE IF (jk.eq.mbathy(ji,jj)) THEN
370         DO jj = 2,jpjm1
371            DO ji = 2,jpim1
372               IF (tmask(ji,jj,jk) == 1) THEN
373                  IF( med_diag%IBEN_N%dgsave ) THEN
374                     iben_n2d(ji,jj) = f_sbenin_n(ji,jj) +                   &
375                                       f_fbenin_n(ji,jj)
376                  ENDIF
377                  IF( med_diag%IBEN_FE%dgsave ) THEN
378                     iben_fe2d(ji,jj) = f_sbenin_fe(ji,jj) +                 &
379                                        f_fbenin_fe(ji,jj)
380                  ENDIF
381                  IF( med_diag%IBEN_C%dgsave ) THEN
382                     iben_c2d(ji,jj) = f_sbenin_c(ji,jj) +                   &
383                                       f_fbenin_c(ji,jj)
384                  ENDIF
385                  IF( med_diag%IBEN_SI%dgsave ) THEN
386                     iben_si2d(ji,jj) = f_fbenin_si(ji,jj)
387                  ENDIF
388                  IF( med_diag%IBEN_CA%dgsave ) THEN
389                     iben_ca2d(ji,jj) = f_fbenin_ca(ji,jj)
390                  ENDIF
391                  IF( med_diag%OBEN_N%dgsave ) THEN
392                     oben_n2d(ji,jj) = f_benout_n(ji,jj)
393                  ENDIF
394                  IF( med_diag%OBEN_FE%dgsave ) THEN
395                     oben_fe2d(ji,jj) = f_benout_fe(ji,jj)
396                  ENDIF
397                  IF( med_diag%OBEN_C%dgsave ) THEN
398                     oben_c2d(ji,jj) = f_benout_c(ji,jj)
399                  ENDIF
400                  IF( med_diag%OBEN_SI%dgsave ) THEN
401                     oben_si2d(ji,jj) = f_benout_si(ji,jj)
402                  ENDIF
403                  IF( med_diag%OBEN_CA%dgsave ) THEN
404                     oben_ca2d(ji,jj) = f_benout_ca(ji,jj)
405                  ENDIF
406                  IF( med_diag%SFR_OCAL%dgsave ) THEN
407                     sfr_ocal2d(ji,jj) = f3_omcal(ji,jj,jk)
408                  ENDIF
409                  IF( med_diag%SFR_OARG%dgsave ) THEN
410                     sfr_oarg2d(ji,jj) =  f3_omarg(ji,jj,jk)
411                  ENDIF
412                  IF( med_diag%LYSO_CA%dgsave ) THEN
413                     lyso_ca2d(ji,jj) = f_benout_lyso_ca(ji,jj)
414                  ENDIF
415               ENDIF
416            ENDDO
417         ENDDO
418      ENDIF
419      !! end bathy-1 diags
420
421      DO jj = 2,jpjm1
422         DO ji = 2,jpim1
423            IF (tmask(ji,jj,jk) == 1) THEN
424               !!
425               IF( med_diag%RIV_N%dgsave ) THEN
426                  rivn2d(ji,jj) = rivn2d(ji,jj) +                            &
427                                  (f_riv_loc_n(ji,jj) * fse3t(ji,jj,jk))
428               ENDIF
429               IF( med_diag%RIV_SI%dgsave ) THEN
430                  rivsi2d(ji,jj) = rivsi2d(ji,jj) +                          &
431                                   (f_riv_loc_si(ji,jj) * fse3t(ji,jj,jk))
432               ENDIF
433               IF( med_diag%RIV_C%dgsave ) THEN
434                  rivc2d(ji,jj) = rivc2d(ji,jj) +                            &
435                                  (f_riv_loc_c(ji,jj) * fse3t(ji,jj,jk))
436               ENDIF
437               IF( med_diag%RIV_ALK%dgsave ) THEN
438                  rivalk2d(ji,jj) = rivalk2d(ji,jj) +                        &
439                                    (f_riv_loc_alk(ji,jj) *                  &
440                                     fse3t(ji,jj,jk))
441               ENDIF
442               IF( med_diag%DETC%dgsave ) THEN
443                  fslowc2d(ji,jj) = fslowc2d(ji,jj) +                        &
444                                    (fslowc(ji,jj)  * fse3t(ji,jj,jk))   
445               ENDIF
446            ENDIF
447         ENDDO
448      ENDDO
449
450      DO jj = 2,jpjm1
451         DO ji = 2,jpim1
452            IF (tmask(ji,jj,jk) == 1) THEN
453               !!
454               IF( med_diag%PN_LLOSS%dgsave ) THEN
455                  fdpn22d(ji,jj) = fdpn22d(ji,jj) +                          &
456                                   (fdpn2(ji,jj)  * fse3t(ji,jj,jk))
457               ENDIF
458               IF( med_diag%PD_LLOSS%dgsave ) THEN
459                  fdpd22d(ji,jj) = fdpd22d(ji,jj) +                          &
460                                   (fdpd2(ji,jj)  * fse3t(ji,jj,jk))
461               ENDIF
462            ENDIF
463         ENDDO
464      ENDDO
465
466      DO jj = 2,jpjm1
467         DO ji = 2,jpim1
468            IF (tmask(ji,jj,jk) == 1) THEN
469               IF( med_diag%ZI_LLOSS%dgsave ) THEN
470                  fdzmi22d(ji,jj) = fdzmi22d(ji,jj) +                        &
471                                    (fdzmi2(ji,jj) * fse3t(ji,jj,jk))
472               ENDIF
473               IF( med_diag%ZE_LLOSS%dgsave ) THEN
474                  fdzme22d(ji,jj) = fdzme22d(ji,jj) +                        &
475                                    (fdzme2(ji,jj) * fse3t(ji,jj,jk))
476               ENDIF
477            ENDIF
478         ENDDO
479      ENDDO
480
481      DO jj = 2,jpjm1
482         DO ji = 2,jpim1
483            IF (tmask(ji,jj,jk) == 1) THEN
484               IF( med_diag%ZI_MES_N%dgsave ) THEN
485                  zimesn2d(ji,jj) = zimesn2d(ji,jj) +                        &
486                                    (xphi * (fgmipn(ji,jj) +                 &
487                                             fgmid(ji,jj)) *                 &
488                                     fse3t(ji,jj,jk))
489               ENDIF
490               IF( med_diag%ZI_MES_D%dgsave ) THEN
491                  zimesd2d(ji,jj) = zimesd2d(ji,jj) +                        & 
492                                    ((1. - xbetan) * finmi(ji,jj) *          &
493                                     fse3t(ji,jj,jk))
494               ENDIF
495               IF( med_diag%ZI_MES_C%dgsave ) THEN
496                  zimesc2d(ji,jj) = zimesc2d(ji,jj) +                        &
497                                    (xphi * ((xthetapn * fgmipn(ji,jj)) +    &
498                                             fgmidc(ji,jj)) *                &
499                                             fse3t(ji,jj,jk))
500               ENDIF
501               IF( med_diag%ZI_MESDC%dgsave ) THEN
502                  zimesdc2d(ji,jj) = zimesdc2d(ji,jj) +                      &
503                                     ((1. - xbetac) * ficmi(ji,jj) *         &
504                                      fse3t(ji,jj,jk))
505               ENDIF
506               IF( med_diag%ZI_EXCR%dgsave ) THEN
507                  ziexcr2d(ji,jj) = ziexcr2d(ji,jj) +                        &
508                                    (fmiexcr(ji,jj) * fse3t(ji,jj,jk))
509               ENDIF
510               IF( med_diag%ZI_RESP%dgsave ) THEN
511                  ziresp2d(ji,jj) = ziresp2d(ji,jj) +                        &
512                                    (fmiresp(ji,jj) * fse3t(ji,jj,jk))
513               ENDIF
514               IF( med_diag%ZI_GROW%dgsave ) THEN
515                  zigrow2d(ji,jj) = zigrow2d(ji,jj) +                        &
516                                    (fmigrow(ji,jj) * fse3t(ji,jj,jk))
517               ENDIF
518            ENDIF
519         ENDDO
520      ENDDO
521
522      DO jj = 2,jpjm1
523         DO ji = 2,jpim1
524            IF (tmask(ji,jj,jk) == 1) THEN
525               IF( med_diag%ZE_MES_N%dgsave ) THEN
526                  zemesn2d(ji,jj) = zemesn2d(ji,jj) +                        &
527                                    (xphi *                                  &
528                                     (fgmepn(ji,jj) + fgmepd(ji,jj) +        &
529                                      fgmezmi(ji,jj) + fgmed(ji,jj)) *       &
530                                     fse3t(ji,jj,jk))
531               ENDIF
532               IF( med_diag%ZE_MES_D%dgsave ) THEN
533                  zemesd2d(ji,jj) = zemesd2d(ji,jj) +                        &
534                                    ((1. - xbetan) * finme(ji,jj) *          &
535                                     fse3t(ji,jj,jk))
536               ENDIF
537               IF( med_diag%ZE_MES_C%dgsave ) THEN
538                  zemesc2d(ji,jj) = zemesc2d(ji,jj) +                        & 
539                                    (xphi *                                  &
540                                     ((xthetapn * fgmepn(ji,jj)) +           &
541                                      (xthetapd * fgmepd(ji,jj)) +           &
542                                      (xthetazmi * fgmezmi(ji,jj)) +         &
543                                      fgmedc(ji,jj)) * fse3t(ji,jj,jk))
544               ENDIF
545               IF( med_diag%ZE_MESDC%dgsave ) THEN
546                  zemesdc2d(ji,jj) = zemesdc2d(ji,jj) +                      &
547                                     ((1. - xbetac) * ficme(ji,jj) *         &
548                                      fse3t(ji,jj,jk))
549               ENDIF
550               IF( med_diag%ZE_EXCR%dgsave ) THEN
551                  zeexcr2d(ji,jj) = zeexcr2d(ji,jj) +                        &
552                                    (fmeexcr(ji,jj) * fse3t(ji,jj,jk))
553               ENDIF
554               IF( med_diag%ZE_RESP%dgsave ) THEN
555                  zeresp2d(ji,jj) = zeresp2d(ji,jj) +                        &
556                                    (fmeresp(ji,jj) * fse3t(ji,jj,jk))
557               ENDIF
558               IF( med_diag%ZE_GROW%dgsave ) THEN
559                  zegrow2d(ji,jj) = zegrow2d(ji,jj) +                        &
560                                    (fmegrow(ji,jj) * fse3t(ji,jj,jk))
561               ENDIF
562            ENDIF
563         ENDDO
564      ENDDO
565
566      DO jj = 2,jpjm1
567         DO ji = 2,jpim1
568            IF (tmask(ji,jj,jk) == 1) THEN
569              IF( med_diag%MDETC%dgsave ) THEN
570                  mdetc2d(ji,jj) = mdetc2d(ji,jj) +                          &
571                                   (fddc(ji,jj) * fse3t(ji,jj,jk))
572               ENDIF
573               IF( med_diag%GMIDC%dgsave ) THEN
574                  gmidc2d(ji,jj) = gmidc2d(ji,jj) +                          &
575                                   (fgmidc(ji,jj) * fse3t(ji,jj,jk))
576               ENDIF
577               IF( med_diag%GMEDC%dgsave ) THEN
578                  gmedc2d(ji,jj) = gmedc2d(ji,jj) +                          &
579                                   (fgmedc(ji,jj) * fse3t(ji,jj,jk))
580               ENDIF
581            ENDIF
582         ENDDO
583      ENDDO
584# endif                   
585
586      DO jj = 2,jpjm1
587         DO ji = 2,jpim1
588            IF (tmask(ji,jj,jk) == 1) THEN
589               !!
590               !! ** 3D diagnostics
591               IF( med_diag%TPP3%dgsave ) THEN
592                  tpp3d(ji,jj,jk) = (fprn(ji,jj) * zphn(ji,jj)) +            &
593                                    (fprd(ji,jj) * zphd(ji,jj))
594                  !CALL iom_put( "TPP3"  , tpp3d )
595               ENDIF
596               IF( med_diag%TPPD3%dgsave ) THEN
597                  tppd3(ji,jj,jk) = (fprd(ji,jj) * zphd(ji,jj))
598               ENDIF
599            ENDIF
600         ENDDO
601      ENDDO
602
603      DO jj = 2,jpjm1
604         DO ji = 2,jpim1
605            IF (tmask(ji,jj,jk) == 1) THEN
606                 
607               IF( med_diag%REMIN3N%dgsave ) THEN
608                  !! remineralisation
609                  remin3dn(ji,jj,jk) = fregen(ji,jj) +                       &
610                                       (freminn(ji,jj) * fse3t(ji,jj,jk))
611                  !CALL iom_put( "REMIN3N"  , remin3dn )
612               ENDIF
613               !! IF( med_diag%PH3%dgsave ) THEN
614               !!     CALL iom_put( "PH3"  , f3_pH )
615               !! ENDIF
616               !! IF( med_diag%OM_CAL3%dgsave ) THEN
617               !!     CALL iom_put( "OM_CAL3"  , f3_omcal )
618               !! ENDIF
619          !!
620          !! AXY (09/11/16): CMIP6 diagnostics
621          IF ( med_diag%DCALC3%dgsave   ) THEN
622                  dcalc3(ji,jj,jk) = freminca(ji,jj)
623               ENDIF
624            ENDIF
625         ENDDO
626      ENDDO
627
628      DO jj = 2,jpjm1
629         DO ji = 2,jpim1
630            IF (tmask(ji,jj,jk) == 1) THEN
631          IF ( med_diag%FEDISS3%dgsave  ) THEN
632                  fediss3(ji,jj,jk) = ffetop(ji,jj)
633               ENDIF
634          IF ( med_diag%FESCAV3%dgsave  ) THEN
635                  fescav3(ji,jj,jk) = ffescav(ji,jj)
636               ENDIF
637            ENDIF
638         ENDDO
639      ENDDO
640
641      DO jj = 2,jpjm1
642         DO ji = 2,jpim1
643            IF (tmask(ji,jj,jk) == 1) THEN
644          IF ( med_diag%MIGRAZP3%dgsave ) THEN
645                  migrazp3(ji,jj,jk) = fgmipn(ji,jj) * xthetapn
646               ENDIF
647          IF ( med_diag%MIGRAZD3%dgsave ) THEN
648                  migrazd3(ji,jj,jk) = fgmidc(ji,jj)
649               ENDIF
650          IF ( med_diag%MEGRAZP3%dgsave ) THEN
651                  megrazp3(ji,jj,jk) = (fgmepn(ji,jj) * xthetapn) +          &
652                                       (fgmepd(ji,jj) * xthetapd)
653               ENDIF
654          IF ( med_diag%MEGRAZD3%dgsave ) THEN
655                  megrazd3(ji,jj,jk) = fgmedc(ji,jj)
656               ENDIF
657          IF ( med_diag%MEGRAZZ3%dgsave ) THEN
658                   megrazz3(ji,jj,jk) = (fgmezmi(ji,jj) * xthetazmi)
659               ENDIF
660            ENDIF
661         ENDDO
662      ENDDO
663
664      DO jj = 2,jpjm1
665         DO ji = 2,jpim1
666            IF (tmask(ji,jj,jk) == 1) THEN
667          IF ( med_diag%PBSI3%dgsave    ) THEN
668                  pbsi3(ji,jj,jk)    = (fprds(ji,jj) * zpds(ji,jj))
669               ENDIF
670          IF ( med_diag%PCAL3%dgsave    ) THEN
671                  pcal3(ji,jj,jk)    = ftempca(ji,jj)
672               ENDIF
673          IF ( med_diag%REMOC3%dgsave   ) THEN
674                  remoc3(ji,jj,jk)   = freminc(ji,jj)
675               ENDIF
676            ENDIF
677         ENDDO
678      ENDDO
679
680      DO jj = 2,jpjm1
681         DO ji = 2,jpim1
682            IF (tmask(ji,jj,jk) == 1) THEN
683          IF ( med_diag%PNLIMJ3%dgsave  ) THEN
684                  ! pnlimj3(ji,jj,jk)  = fjln(ji,jj)
685                  pnlimj3(ji,jj,jk)  = fjlim_pn(ji,jj)
686               ENDIF
687          IF ( med_diag%PNLIMN3%dgsave  ) THEN
688                  pnlimn3(ji,jj,jk)  = fnln(ji,jj)
689               ENDIF
690          IF ( med_diag%PNLIMFE3%dgsave ) THEN
691                  pnlimfe3(ji,jj,jk) = ffln2(ji,jj)
692               ENDIF
693          IF ( med_diag%PDLIMJ3%dgsave  ) THEN
694                  ! pdlimj3(ji,jj,jk)  = fjld(ji,jj)
695                  pdlimj3(ji,jj,jk)  = fjlim_pd(ji,jj)
696               ENDIF
697          IF ( med_diag%PDLIMN3%dgsave  ) THEN
698                  pdlimn3(ji,jj,jk)  = fnld(ji,jj)
699               ENDIF
700          IF ( med_diag%PDLIMFE3%dgsave ) THEN
701                  pdlimfe3(ji,jj,jk) = ffld(ji,jj)
702               ENDIF
703          IF ( med_diag%PDLIMSI3%dgsave ) THEN
704                  pdlimsi3(ji,jj,jk) = fsld2(ji,jj)
705               ENDIF
706            ENDIF
707         ENDDO
708      ENDDO
709
710   END SUBROUTINE bio_med_diag_iomput
711
712#else
713   !!======================================================================
714   !!  Dummy module :                                   No MEDUSA bio-model
715   !!======================================================================
716CONTAINS
717   SUBROUTINE bio_med_diag_iomput( )                    ! Empty routine
718      WRITE(*,*) 'bio_med_diag_iomput: You should not have seen this print! error?'
719   END SUBROUTINE bio_med_diag_iomput
720#endif 
721
722   !!======================================================================
723END MODULE bio_med_diag_iomput_mod
Note: See TracBrowser for help on using the repository browser.