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

source: branches/UKMO/dev_r5518_GO6_fix_key_comp/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_med_diag_iomput.F90 @ 9991

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

Fixes to allow MEDUSA to compile with C1D without
the need for multiple (apparently) unrelated CPP keys
merely to satisfy spurious code interdependencies.

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