MODULE bio_medusa_init_mod !!====================================================================== !! *** MODULE bio_medusa_init *** !! Initialisation for TRC_BIO_MEDUSA !!====================================================================== !! History : !! - ! 2017-04 (M. Stringer) Code taken from trcbio_medusa.F90 !!---------------------------------------------------------------------- #if defined key_medusa !!---------------------------------------------------------------------- !! MEDUSA bio-model !!---------------------------------------------------------------------- IMPLICIT NONE PRIVATE PUBLIC bio_medusa_init ! Called in trcbio_medusa.F90 !!---------------------------------------------------------------------- !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) !! $Id$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE bio_medusa_init( kt ) !!--------------------------------------------------------------------- !! *** ROUTINE bio_medusa_init *** !! This called from TRC_BIO_MEDUSA and !! - zeroes arrays used in TRC_BIO_MEDUSA !! - sets up the arrays needed for the diagnostics !!---------------------------------------------------------------------- USE bio_medusa_mod USE iom, ONLY: lk_iomput, numout USE par_oce, ONLY: jpi, jpj, jpk USE sms_medusa, ONLY: jdms USE trc, ONLY: ln_diatrc, med_diag, nittrc000 USE trcnam_medusa, ONLY: trc_nam_iom_medusa USE wrk_nemo, ONLY: wrk_alloc !! time (integer timestep) INTEGER, INTENT( in ) :: kt ! tmp - marc write(numout,*) 'bbb1. kt=',kt flush(numout) ! !!---------------------------------------------------------------------- !! Zero fast-sinking detritus 2D fields !!---------------------------------------------------------------------- !! ffastn(:,:) = 0.0 !! organic nitrogen ffastsi(:,:) = 0.0 !! biogenic silicon ffastfe(:,:) = 0.0 !! organic iron ffastc(:,:) = 0.0 !! organic carbon ffastca(:,:) = 0.0 !! biogenic calcium carbonate !! fsedn(:,:) = 0.0 !! Seafloor flux of N fsedsi(:,:) = 0.0 !! Seafloor flux of Si fsedfe(:,:) = 0.0 !! Seafloor flux of Fe fsedc(:,:) = 0.0 !! Seafloor flux of C fsedca(:,:) = 0.0 !! Seafloor flux of CaCO3 !! fregenfast(:,:) = 0.0 !! integrated N regeneration (fast detritus) fregenfastsi(:,:) = 0.0 !! integrated Si regeneration (fast detritus) # if defined key_roam fregenfastc(:,:) = 0.0 !! integrated C regeneration (fast detritus) # endif !! fccd(:,:) = 0.0 !! last depth level before CCD !!---------------------------------------------------------------------- !! blank nutrient/flux inventories !!---------------------------------------------------------------------- !! fflx_n(:,:) = 0.0 !! nitrogen flux total fflx_si(:,:) = 0.0 !! silicon flux total fflx_fe(:,:) = 0.0 !! iron flux total fifd_n(:,:) = 0.0 !! nitrogen fast detritus production fifd_si(:,:) = 0.0 !! silicon fast detritus production fifd_fe(:,:) = 0.0 !! iron fast detritus production fofd_n(:,:) = 0.0 !! nitrogen fast detritus remineralisation fofd_si(:,:) = 0.0 !! silicon fast detritus remineralisation fofd_fe(:,:) = 0.0 !! iron fast detritus remineralisation # if defined key_roam fflx_c(:,:) = 0.0 !! carbon flux total fflx_a(:,:) = 0.0 !! alkalinity flux total fflx_o2(:,:) = 0.0 !! oxygen flux total ftot_c(:,:) = 0.0 !! carbon inventory ftot_a(:,:) = 0.0 !! alkalinity inventory ftot_o2(:,:) = 0.0 !! oxygen inventory fifd_c(:,:) = 0.0 !! carbon fast detritus production fifd_a(:,:) = 0.0 !! alkalinity fast detritus production fifd_o2(:,:) = 0.0 !! oxygen fast detritus production fofd_c(:,:) = 0.0 !! carbon fast detritus remineralisation fofd_a(:,:) = 0.0 !! alkalinity fast detritus remineralisation fofd_o2(:,:) = 0.0 !! oxygen fast detritus remineralisation !! fnit_prod(:,:) = 0.0 !! (organic) nitrogen production fnit_cons(:,:) = 0.0 !! (organic) nitrogen consumption fsil_prod(:,:) = 0.0 !! (inorganic) silicon production fsil_cons(:,:) = 0.0 !! (inorganic) silicon consumption fcar_prod(:,:) = 0.0 !! (organic) carbon production fcar_cons(:,:) = 0.0 !! (organic) carbon consumption !! foxy_prod(:,:) = 0.0 !! oxygen production foxy_cons(:,:) = 0.0 !! oxygen consumption foxy_anox(:,:) = 0.0 !! unrealised oxygen consumption !! # endif ftot_n(:,:) = 0.0 !! N inventory ftot_si(:,:) = 0.0 !! Si inventory ftot_fe(:,:) = 0.0 !! Fe inventory ftot_pn(:,:) = 0.0 !! integrated non-diatom phytoplankton ftot_pd(:,:) = 0.0 !! integrated diatom phytoplankton ftot_zmi(:,:) = 0.0 !! integrated microzooplankton ftot_zme(:,:) = 0.0 !! integrated mesozooplankton ftot_det(:,:) = 0.0 !! integrated slow detritus, nitrogen ftot_dtc(:,:) = 0.0 !! integrated slow detritus, carbon !! fzmi_i(:,:) = 0.0 !! material grazed by microzooplankton fzmi_o(:,:) = 0.0 !! ... sum of fate of this material fzme_i(:,:) = 0.0 !! material grazed by mesozooplankton fzme_o(:,:) = 0.0 !! ... sum of fate of this material !! f_sbenin_n(:,:) = 0.0 !! slow detritus N -> benthic pool f_sbenin_fe(:,:) = 0.0 !! slow detritus Fe -> benthic pool f_sbenin_c(:,:) = 0.0 !! slow detritus C -> benthic pool f_fbenin_n(:,:) = 0.0 !! fast detritus N -> benthic pool f_fbenin_fe(:,:) = 0.0 !! fast detritus Fe -> benthic pool f_fbenin_si(:,:) = 0.0 !! fast detritus Si -> benthic pool f_fbenin_c(:,:) = 0.0 !! fast detritus C -> benthic pool f_fbenin_ca(:,:) = 0.0 !! fast detritus Ca -> benthic pool !! f_benout_n(:,:) = 0.0 !! benthic N pool -> dissolved f_benout_fe(:,:) = 0.0 !! benthic Fe pool -> dissolved f_benout_si(:,:) = 0.0 !! benthic Si pool -> dissolved f_benout_c(:,:) = 0.0 !! benthic C pool -> dissolved f_benout_ca(:,:) = 0.0 !! benthic Ca pool -> dissolved !! f_benout_lyso_ca(:,:) = 0.0 !! benthic Ca pool -> dissolved (when it shouldn't!) !! f_runoff(:,:) = 0.0 !! riverine runoff f_riv_n(:,:) = 0.0 !! riverine N input f_riv_si(:,:) = 0.0 !! riverine Si input f_riv_c(:,:) = 0.0 !! riverine C input f_riv_alk(:,:) = 0.0 !! riverine alk input !! !! Jpalm -- 06-03-2017 -- Forgotten var to init f_omarg(:,:) = 0.0 !! f_omcal(:,:) = 0.0 xFree(:,:) = 0.0 !! state variables for iron-ligand system fcomm_resp(:,:) = 0.0 fprn_ml(:,:) = 0.0 !! mixed layer PP diagnostics fprd_ml(:,:) = 0.0 !! mixed layer PP diagnostics !! !! allocate and initiate 2D diag !! ----------------------------- !! Juju :: add kt condition !! IF ( lk_iomput .AND. .NOT. ln_diatrc ) THEN !! initialise iom_use test IF ( kt == nittrc000 ) CALL trc_nam_iom_medusa CALL wrk_alloc( jpi, jpj, zw2d ) zw2d(:,:) = 0.0 !! IF ( med_diag%PRN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fprn2d ) fprn2d(:,:) = 0.0 !! ENDIF IF ( med_diag%MPN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdpn2d ) fdpn2d(:,:) = 0.0 !! ENDIF IF ( med_diag%PRD%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fprd2d ) fprd2d(:,:) = 0.0 !! ENDIF IF( med_diag%MPD%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdpd2d ) fdpd2d(:,:) = 0.0 !! ENDIF IF( med_diag%OPAL%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fprds2d ) fprds2d(:,:) = 0.0 !! ENDIF IF( med_diag%OPALDISS%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fsdiss2d ) fsdiss2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMIPn%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmipn2d ) fgmipn2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMID%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmid2d ) fgmid2d(:,:) = 0.0 !! ENDIF IF( med_diag%MZMI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdzmi2d ) fdzmi2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMEPN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmepn2d ) fgmepn2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMEPD%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmepd2d ) fgmepd2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMEZMI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmezmi2d ) fgmezmi2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMED%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgmed2d ) fgmed2d(:,:) = 0.0 !! ENDIF IF( med_diag%MZME%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdzme2d ) fdzme2d(:,:) = 0.0 !! ENDIF IF( med_diag%DETN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fslown2d ) fslown2d(:,:) = 0.0 !! ENDIF IF( med_diag%MDET%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdd2d ) fdd2d(:,:) = 0.0 !! ENDIF IF( med_diag%AEOLIAN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffetop2d ) ffetop2d(:,:) = 0.0 !! ENDIF IF( med_diag%BENTHIC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffebot2d ) ffebot2d(:,:) = 0.0 !! ENDIF IF( med_diag%SCAVENGE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffescav2d ) ffescav2d(:,:) = 0.0 !! ENDIF IF( med_diag%PN_JLIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fjln2d ) fjln2d(:,:) = 0.0 !! ENDIF IF( med_diag%PN_NLIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fnln2d ) fnln2d(:,:) = 0.0 !! ENDIF IF( med_diag%PN_FELIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffln2d ) ffln2d(:,:) = 0.0 !! ENDIF IF( med_diag%PD_JLIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fjld2d ) fjld2d(:,:) = 0.0 !! ENDIF IF( med_diag%PD_NLIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fnld2d ) fnld2d(:,:) = 0.0 !! ENDIF IF( med_diag%PD_FELIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffld2d ) ffld2d(:,:) = 0.0 !! ENDIF IF( med_diag%PD_SILIM%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fsld2d2 ) fsld2d2(:,:) = 0.0 !! ENDIF IF( med_diag%PDSILIM2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fsld2d ) fsld2d(:,:) = 0.0 !! ENDIF !! !! skip SDT_XXXX diagnostics here !! IF( med_diag%TOTREG_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fregen2d ) fregen2d(:,:) = 0.0 !! ENDIF IF( med_diag%TOTRG_SI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fregensi2d ) fregensi2d(:,:) = 0.0 !! ENDIF !! !! skip REG_XXXX diagnostics here !! IF( med_diag%FASTN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ftempn2d ) ftempn2d(:,:) = 0.0 !! ENDIF IF( med_diag%FASTSI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ftempsi2d ) ftempsi2d(:,:) = 0.0 !! ENDIF IF( med_diag%FASTFE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ftempfe2d ) ftempfe2d(:,:) = 0.0 !! ENDIF IF( med_diag%FASTC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ftempc2d ) ftempc2d(:,:) = 0.0 !! ENDIF IF( med_diag%FASTCA%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ftempca2d ) ftempca2d(:,:) = 0.0 !! ENDIF !! !! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGS_XXXXF diagnostics here !! IF( med_diag%REMINN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, freminn2d ) freminn2d(:,:) = 0.0 !! ENDIF IF( med_diag%REMINSI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, freminsi2d ) freminsi2d(:,:) = 0.0 !! ENDIF IF( med_diag%REMINFE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, freminfe2d ) freminfe2d(:,:) = 0.0 !! ENDIF IF( med_diag%REMINC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, freminc2d ) freminc2d(:,:) = 0.0 !! ENDIF IF( med_diag%REMINCA%dgsave ) THEN CALL wrk_alloc( jpi, jpj, freminca2d ) freminca2d(:,:) = 0.0 !! ENDIF # if defined key_roam !! !! skip SEAFLRXX, MED_XXXX, INTFLX_XX, INT_XX, ML_XXX, OCAL_XXX, FE_XXXX, MED_XZE, WIND diagnostics here !! IF( med_diag%RR_0100%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ffastca2d ) ffastca2d(:,:) = 0.0 !! ENDIF IF( med_diag%ATM_PCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_pco2a2d ) f_pco2a2d(:,:) = 0.0 !! ENDIF !! !! skip OCN_PH diagnostic here !! IF( med_diag%OCN_PCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_pco2w2d ) f_pco2w2d(:,:) = 0.0 !! ENDIF !! !! skip OCNH2CO3, OCN_HCO3, OCN_CO3 diagnostics here !! IF( med_diag%CO2FLUX%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_co2flux2d ) f_co2flux2d(:,:) = 0.0 !! ENDIF !! !! skip OM_XXX diagnostics here !! IF( med_diag%TCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_TDIC2d ) f_TDIC2d(:,:) = 0.0 !! ENDIF IF( med_diag%TALK%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_TALK2d ) f_TALK2d(:,:) = 0.0 !! ENDIF IF( med_diag%KW660%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_kw6602d ) f_kw6602d(:,:) = 0.0 !! ENDIF IF( med_diag%ATM_PP0%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_pp02d ) f_pp02d(:,:) = 0.0 !! ENDIF IF( med_diag%O2FLUX%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_o2flux2d ) f_o2flux2d(:,:) = 0.0 !! ENDIF IF( med_diag%O2SAT%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_o2sat2d ) f_o2sat2d(:,:) = 0.0 !! ENDIF !! !! skip XXX_CCD diagnostics here !! IF( med_diag%SFR_OCAL%dgsave ) THEN CALL wrk_alloc( jpi, jpj, sfr_ocal2d ) sfr_ocal2d(:,:) = 0.0 !! ENDIF IF( med_diag%SFR_OARG%dgsave ) THEN CALL wrk_alloc( jpi, jpj, sfr_oarg2d ) sfr_oarg2d(:,:) = 0.0 !! ENDIF !! !! skip XX_PROD, XX_CONS, O2_ANOX, RR_XXXX diagnostics here !! IF( med_diag%IBEN_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, iben_n2d ) iben_n2d(:,:) = 0.0 !! ENDIF IF( med_diag%IBEN_FE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, iben_fe2d ) iben_fe2d(:,:) = 0.0 !! ENDIF IF( med_diag%IBEN_C%dgsave ) THEN CALL wrk_alloc( jpi, jpj, iben_c2d ) iben_c2d(:,:) = 0.0 !! ENDIF IF( med_diag%IBEN_SI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, iben_si2d ) iben_si2d(:,:) = 0.0 !! ENDIF IF( med_diag%IBEN_CA%dgsave ) THEN CALL wrk_alloc( jpi, jpj, iben_ca2d ) iben_ca2d(:,:) = 0.0 !! ENDIF IF( med_diag%OBEN_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, oben_n2d ) oben_n2d(:,:) = 0.0 !! ENDIF IF( med_diag%OBEN_FE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, oben_fe2d ) oben_fe2d(:,:) = 0.0 !! ENDIF IF( med_diag%OBEN_C%dgsave ) THEN CALL wrk_alloc( jpi, jpj, oben_c2d ) oben_c2d(:,:) = 0.0 !! ENDIF IF( med_diag%OBEN_SI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, oben_si2d ) oben_si2d(:,:) = 0.0 !! ENDIF IF( med_diag%OBEN_CA%dgsave ) THEN CALL wrk_alloc( jpi, jpj, oben_ca2d ) oben_ca2d(:,:) = 0.0 !! ENDIF !! !! skip BEN_XX diagnostics here !! IF( med_diag%RIV_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, rivn2d ) rivn2d(:,:) = 0.0 !! ENDIF IF( med_diag%RIV_SI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, rivsi2d ) rivsi2d(:,:) = 0.0 !! ENDIF IF( med_diag%RIV_C%dgsave ) THEN CALL wrk_alloc( jpi, jpj, rivc2d ) rivc2d(:,:) = 0.0 !! ENDIF IF( med_diag%RIV_ALK%dgsave ) THEN CALL wrk_alloc( jpi, jpj, rivalk2d ) rivalk2d(:,:) = 0.0 !! ENDIF IF( med_diag%DETC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fslowc2d ) fslowc2d(:,:) = 0.0 !! ENDIF !! !! skip SDC_XXXX, INVTXXX diagnostics here !! IF( med_diag%LYSO_CA%dgsave ) THEN CALL wrk_alloc( jpi, jpj, lyso_ca2d ) lyso_ca2d(:,:) = 0.0 !! ENDIF !! !! skip COM_RESP diagnostic here !! IF( med_diag%PN_LLOSS%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdpn22d ) fdpn22d(:,:) = 0.0 !! ENDIF IF( med_diag%PD_LLOSS%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdpd22d ) fdpd22d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_LLOSS%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdzmi22d ) fdzmi22d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_LLOSS%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fdzme22d ) fdzme22d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_MES_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zimesn2d ) zimesn2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_MES_D%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zimesd2d ) zimesd2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_MES_C%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zimesc2d ) zimesc2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_MESDC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zimesdc2d ) zimesdc2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_EXCR%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ziexcr2d ) ziexcr2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_RESP%dgsave ) THEN CALL wrk_alloc( jpi, jpj, ziresp2d ) ziresp2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZI_GROW%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zigrow2d ) zigrow2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_MES_N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zemesn2d ) zemesn2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_MES_D%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zemesd2d ) zemesd2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_MES_C%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zemesc2d ) zemesc2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_MESDC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zemesdc2d ) zemesdc2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_EXCR%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zeexcr2d ) zeexcr2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_RESP%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zeresp2d ) zeresp2d(:,:) = 0.0 !! ENDIF IF( med_diag%ZE_GROW%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zegrow2d ) zegrow2d(:,:) = 0.0 !! ENDIF IF( med_diag%MDETC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, mdetc2d ) mdetc2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMIDC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, gmidc2d ) gmidc2d(:,:) = 0.0 !! ENDIF IF( med_diag%GMEDC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, gmedc2d ) gmedc2d(:,:) = 0.0 !! ENDIF !! !! skip INT_XXX diagnostics here !! IF (jdms .eq. 1) THEN IF( med_diag%DMS_SURF%dgsave ) THEN CALL wrk_alloc( jpi, jpj, dms_surf2d ) dms_surf2d(:,:) = 0.0 !! ENDIF IF( med_diag%DMS_ANDR%dgsave ) THEN CALL wrk_alloc( jpi, jpj, dms_andr2d ) dms_andr2d(:,:) = 0.0 !! ENDIF IF( med_diag%DMS_SIMO%dgsave ) THEN CALL wrk_alloc( jpi, jpj, dms_simo2d ) dms_simo2d(:,:) = 0.0 !! ENDIF IF( med_diag%DMS_ARAN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, dms_aran2d ) dms_aran2d(:,:) = 0.0 !! ENDIF IF( med_diag%DMS_HALL%dgsave ) THEN CALL wrk_alloc( jpi, jpj, dms_hall2d ) dms_hall2d(:,:) = 0.0 !! ENDIF ENDIF !! !! AXY (24/11/16): extra MOCSY diagnostics, 2D IF( med_diag%ATM_XCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_xco2a_2d ) f_xco2a_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_FCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_fco2w_2d ) f_fco2w_2d(:,:) = 0.0 !! ENDIF IF( med_diag%ATM_FCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_fco2a_2d ) f_fco2a_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_RHOSW%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_ocnrhosw_2d ) f_ocnrhosw_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_SCHCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_ocnschco2_2d ) f_ocnschco2_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_KWCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_ocnkwco2_2d ) f_ocnkwco2_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_K0%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_ocnk0_2d ) f_ocnk0_2d(:,:) = 0.0 !! ENDIF IF( med_diag%CO2STARAIR%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_co2starair_2d ) f_co2starair_2d(:,:) = 0.0 !! ENDIF IF( med_diag%OCN_DPCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, f_ocndpco2_2d ) f_ocndpco2_2d(:,:) = 0.0 !! ENDIF # endif IF( med_diag%TPP3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, tpp3d ) tpp3d(:,:,:) = 0.0 !! ENDIF IF( med_diag%DETFLUX3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, detflux3d ) detflux3d(:,:,:) = 0.0 !! ENDIF IF( med_diag%REMIN3N%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, remin3dn ) remin3dn(:,:,:) = 0.0 !! ENDIF !! !! AXY (10/11/16): CMIP6 diagnostics, 2D !! JPALM -- 17-11-16 -- put fgco2 alloc out of diag request !! needed for coupling/passed through restart !! IF( med_diag%FGCO2%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fgco2 ) fgco2(:,:) = 0.0 !! !! ENDIF IF( med_diag%INTDISSIC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, intdissic ) intdissic(:,:) = 0.0 !! ENDIF IF( med_diag%INTDISSIN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, intdissin ) intdissin(:,:) = 0.0 !! ENDIF IF( med_diag%INTDISSISI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, intdissisi ) intdissisi(:,:) = 0.0 !! ENDIF IF( med_diag%INTTALK%dgsave ) THEN CALL wrk_alloc( jpi, jpj, inttalk ) inttalk(:,:) = 0.0 !! ENDIF IF( med_diag%O2min%dgsave ) THEN CALL wrk_alloc( jpi, jpj, o2min ) o2min(:,:) = 1.e3 !! set to high value as we're looking for min(o2) ENDIF IF( med_diag%ZO2min%dgsave ) THEN CALL wrk_alloc( jpi, jpj, zo2min ) zo2min(:,:) = 0.0 !! ENDIF IF( med_diag%FBDDTALK%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fbddtalk ) fbddtalk(:,:) = 0.0 !! ENDIF IF( med_diag%FBDDTDIC%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fbddtdic ) fbddtdic(:,:) = 0.0 !! ENDIF IF( med_diag%FBDDTDIFE%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fbddtdife ) fbddtdife(:,:) = 0.0 !! ENDIF IF( med_diag%FBDDTDIN%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fbddtdin ) fbddtdin(:,:) = 0.0 !! ENDIF IF( med_diag%FBDDTDISI%dgsave ) THEN CALL wrk_alloc( jpi, jpj, fbddtdisi ) fbddtdisi(:,:) = 0.0 !! ENDIF !! !! AXY (10/11/16): CMIP6 diagnostics, 3D IF( med_diag%TPPD3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, tppd3 ) tppd3(:,:,:) = 0.0 !! ENDIF IF( med_diag%BDDTALK3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, bddtalk3 ) bddtalk3(:,:,:) = 0.0 !! ENDIF IF( med_diag%BDDTDIC3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, bddtdic3 ) bddtdic3(:,:,:) = 0.0 !! ENDIF IF( med_diag%BDDTDIFE3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, bddtdife3 ) bddtdife3(:,:,:) = 0.0 !! ENDIF IF( med_diag%BDDTDIN3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, bddtdin3 ) bddtdin3(:,:,:) = 0.0 !! ENDIF IF( med_diag%BDDTDISI3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, bddtdisi3 ) bddtdisi3(:,:,:) = 0.0 !! ENDIF IF( med_diag%FD_NIT3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fd_nit3 ) fd_nit3(:,:,:) = 0.0 !! ENDIF IF( med_diag%FD_SIL3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fd_sil3 ) fd_sil3(:,:,:) = 0.0 !! ENDIF IF( med_diag%FD_CAR3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fd_car3 ) fd_car3(:,:,:) = 0.0 !! ENDIF IF( med_diag%FD_CAL3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fd_cal3 ) fd_cal3(:,:,:) = 0.0 !! ENDIF IF( med_diag%DCALC3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, dcalc3 ) dcalc3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%EXPC3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, expc3 ) expc3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%EXPN3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, expn3 ) expn3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%FEDISS3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fediss3 ) fediss3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%FESCAV3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, fescav3 ) fescav3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%MIGRAZP3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, migrazp3 ) migrazp3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%MIGRAZD3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, migrazd3 ) migrazd3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%MEGRAZP3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, megrazp3 ) megrazp3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%MEGRAZD3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, megrazd3 ) megrazd3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%MEGRAZZ3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, megrazz3 ) megrazz3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%O2SAT3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, o2sat3 ) o2sat3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PBSI3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pbsi3 ) pbsi3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PCAL3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pcal3 ) pcal3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%REMOC3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, remoc3 ) remoc3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PNLIMJ3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pnlimj3 ) pnlimj3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PNLIMN3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pnlimn3 ) pnlimn3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PNLIMFE3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pnlimfe3 ) pnlimfe3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PDLIMJ3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pdlimj3 ) pdlimj3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PDLIMN3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pdlimn3 ) pdlimn3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PDLIMFE3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pdlimfe3 ) pdlimfe3(:,:,: ) = 0.0 !! ENDIF IF( med_diag%PDLIMSI3%dgsave ) THEN CALL wrk_alloc( jpi, jpj, jpk, pdlimsi3 ) pdlimsi3(:,:,: ) = 0.0 !! ENDIF ENDIF !! lk_iomput ! tmp - marc write(numout,*) 'bbb9. kt=',kt flush(numout) ! END SUBROUTINE bio_medusa_init #else !!====================================================================== !! Dummy module : No MEDUSA bio-model !!====================================================================== CONTAINS SUBROUTINE bio_medusa_init( ) ! Empty routine WRITE(*,*) 'bio_medusa_init: You should not have seen this print! error?' END SUBROUTINE bio_medusa_init #endif !!====================================================================== END MODULE bio_medusa_init_mod