source: branches/NERC/dev_r5518_GO6_GeoAlk_MEDUSA/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_med_diag_iomput.F90 @ 11726

Last change on this file since 11726 was 11726, checked in by jpalmier, 13 months ago

add Changes to enable Alkalinity geo-ingeneering tests within MEDUSA

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