Changeset 7886
- Timestamp:
- 2017-04-10T17:01:50+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90
r7880 r7886 155 155 !! 156 156 !! model state variables 157 REAL(wp) :: zchn,zchd,zphn,zphd,zpds,zzmi158 REAL(wp) :: zzme,zdet,zdtc,zdin,zsil,zfer157 REAL(wp), DIMENSION(jpi,jpj) :: zchn,zchd,zphn,zphd,zpds,zzmi 158 REAL(wp), DIMENSION(jpi,jpj) :: zzme,zdet,zdtc,zdin,zsil,zfer 159 159 REAL(wp) :: zage 160 160 # if defined key_roam 161 REAL(wp) :: zdic, zalk, zoxy162 REAL(wp) :: ztmp, zsal161 REAL(wp), DIMENSION(jpi,jpj) :: zdic, zalk, zoxy 162 REAL(wp), DIMENSION(jpi,jpj) :: ztmp, zsal 163 163 # endif 164 164 # if defined key_mocsy 165 REAL(wp) :: zpho165 REAL(wp), DIMENSION(jpi,jpj) :: zpho 166 166 # endif 167 167 !! … … 170 170 !! AXY (23/08/13): changed from individual variables for each flux to 171 171 !! an array that holds all fluxes 172 REAL(wp), DIMENSION(jp _medusa) :: btra172 REAL(wp), DIMENSION(jpi,jpj,jp_medusa) :: btra 173 173 !! 174 174 !! primary production and chl related quantities 175 REAL(wp) 176 REAL(wp) 175 REAL(wp), DIMENSION(jpi,jpj) :: fthetan,faln,fchn1,fchn,fjln,fprn,frn 176 REAL(wp), DIMENSION(jpi,jpj) :: fthetad,fald,fchd1,fchd,fjld,fprd,frd 177 177 !! AXY (23/11/16): add in light-only limitation term (normalised 0-1 range) 178 REAL(wp) 178 REAL(wp), DIMENSION(jpi,jpj) :: fjlim_pn, fjlim_pd 179 179 !! AXY (03/02/11): add in Liebig terms 180 REAL(wp) :: fpnlim, fpdlim180 REAL(wp), DIMENSION(jpi,jpj) :: fpnlim, fpdlim 181 181 !! AXY (16/07/09): add in Eppley curve functionality 182 REAL(wp) :: loc_T,fun_T,xvpnT,xvpdT182 REAL(wp), DIMENSION(jpi,jpj) :: fun_T,xvpnT,xvpdT 183 183 INTEGER :: ieppley 184 184 !! AXY (16/05/11): per Katya's prompting, add in new T-dependence 185 185 !! for phytoplankton growth only (i.e. no change 186 186 !! for remineralisation) 187 REAL(wp) :: fun_Q10187 REAL(wp), DIMENSION(jpi,jpj) :: fun_Q10 188 188 !! AXY (01/03/10): add in mixed layer PP diagnostics 189 REAL(wp), DIMENSION(jpi,jpj) :: fprn_ml,fprd_ml189 REAL(wp), DIMENSION(jpi,jpj) :: fprn_ml,fprd_ml 190 190 !! 191 191 !! nutrient limiting factors 192 REAL(wp) :: fnln,ffln !! N and Fe193 REAL(wp) :: fnld,ffld,fsld,fsld2 !! N, Fe and Si192 REAL(wp), DIMENSION(jpi,jpj) :: fnln,ffln !! N and Fe 193 REAL(wp), DIMENSION(jpi,jpj) :: fnld,ffld,fsld,fsld2 !! N, Fe and Si 194 194 !! 195 195 !! silicon cycle 196 REAL(wp) :: fsin,fnsi,fsin1,fnsi1,fnsi2,fprds,fsdiss 196 REAL(wp), DIMENSION(jpi,jpj) :: fsin,fnsi,fprds,fsdiss 197 REAL(wp) :: fsin1,fnsi1,fnsi2 197 198 !! 198 199 !! iron cycle; includes parameters for Parekh et al. (2005) iron scheme 199 REAL(wp) :: ffetop,ffebot,ffescav200 REAL(wp), DIMENSION(jpi,jpj) :: ffetop,ffebot,ffescav 200 201 REAL(wp) :: xLgF, xFeT, xFeF, xFeL !! state variables for iron-ligand system 201 202 REAL(wp), DIMENSION(jpi,jpj) :: xFree !! state variables for iron-ligand system … … 214 215 !! 215 216 !! microzooplankton grazing 216 REAL(wp) :: fmi1,fmi,fgmipn,fgmid,fgmidc217 REAL(wp) :: finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp217 REAL(wp), DIMENSION(jpi,jpj) :: fmi1,fmi,fgmipn,fgmid,fgmidc 218 REAL(wp), DIMENSION(jpi,jpj) :: finmi,ficmi,fstarmi,fmith,fmigrow,fmiexcr,fmiresp 218 219 !! 219 220 !! mesozooplankton grazing 220 REAL(wp) :: fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc221 REAL(wp) :: finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp221 REAL(wp), DIMENSION(jpi,jpj) :: fme1,fme,fgmepn,fgmepd,fgmepds,fgmezmi,fgmed,fgmedc 222 REAL(wp), DIMENSION(jpi,jpj) :: finme,ficme,fstarme,fmeth,fmegrow,fmeexcr,fmeresp 222 223 !! 223 224 !! mortality/Remineralisation (defunct parameter "fz" removed) 224 REAL(wp ) :: fdpn,fdpd,fdpds,fdzmi,fdzme,fdd225 REAL(wp, DIMENSION(jpi,jpj)) :: fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 225 226 # if defined key_roam 226 REAL(wp ) :: fddc227 # endif 228 REAL(wp) :: fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2229 REAL(wp) :: fslown, fslowc227 REAL(wp, DIMENSION(jpi,jpj)) :: fddc 228 # endif 229 REAL(wp), DIMENSION(jpi,jpj) :: fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 230 REAL(wp), DIMENSION(jpi,jpj) :: fslown, fslowc 230 231 REAL(wp), DIMENSION(jpi,jpj) :: fslownflux, fslowcflux 231 REAL(wp) :: fregen,fregensi232 REAL(wp), DIMENSION(jpi,jpj) :: fregen,fregensi 232 233 REAL(wp), DIMENSION(jpi,jpj) :: fregenfast,fregenfastsi 233 234 # if defined key_roam 234 REAL(wp) :: fregenc 235 ! Doesn't look like this is used - marc 10/4/17 236 ! REAL(wp), DIMENSION(jpi,jpj) :: fregenc 235 237 REAL(wp), DIMENSION(jpi,jpj) :: fregenfastc 236 238 # endif 237 239 !! 238 240 !! particle flux 239 REAL(WP) :: fthk,fdep,fdep1,fdep2,flat,fcaco3240 REAL(WP) :: ftempn,ftempsi,ftempfe,ftempc,ftempca241 REAL(wp) :: freminn,freminsi,freminfe,freminc,freminca241 REAL(WP), DIMENSION(jpi,jpj) :: fdep1,fcaco3 242 REAL(WP), DIMENSION(jpi,jpj) :: ftempn,ftempsi,ftempfe,ftempc,ftempca 243 REAL(wp), DIMENSION(jpi,jpj) :: freminn,freminsi,freminfe,freminc,freminca 242 244 REAL(wp), DIMENSION(jpi,jpj) :: ffastn,ffastsi,ffastfe,ffastc,ffastca 243 REAL(wp) :: fleftn,fleftsi,fleftfe,fleftc,fleftca 244 REAL(wp) :: fheren,fheresi,fherefe,fherec,fhereca 245 REAL(wp) :: fprotf 245 REAL(wp), DIMENSION(jpi,jpj) :: fprotf 246 246 REAL(wp), DIMENSION(jpi,jpj) :: fsedn,fsedsi,fsedfe,fsedc,fsedca 247 247 REAL(wp), DIMENSION(jpi,jpj) :: fccd 248 REAL(wp) :: fccd_dep 249 !! AXY (28/11/16): fix mbathy bug 250 INTEGER :: jmbathy 248 REAL(wp), DIMENSION(jpi,jpj) :: fccd_dep 251 249 !! 252 250 !! AXY (06/07/11): alternative fast detritus schemes … … 254 252 !! 255 253 !! AXY (08/07/11): fate of fast detritus reaching the seafloor 256 REAL(wp) :: ffast2slown,ffast2slowfe,ffast2slowc 254 ! I don't think ffast2slowfe is used - marc 10/4/17 255 ! REAL(wp), DIMENSION(jpi,jpj) :: ffast2slown,ffast2slowfe,ffast2slowc 256 REAL(wp), DIMENSION(jpi,jpj) :: ffast2slown,ffast2slow 257 257 !! 258 258 !! conservation law … … 299 299 INTEGER, DIMENSION(jpi,jpj) :: i2_omcal,i2_omarg 300 300 !! 301 !! ROAM air-sea flux and diagnostic parameters302 REAL(wp) :: f_wind303 301 !! AXY (24/11/16): add xCO2 variable for atmosphere (what we actually have) 304 REAL(wp) :: f_xco2a305 REAL(wp) :: f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_co2flux306 REAL(wp) :: f_TDIC, f_TALK, f_dcf, f_henry307 REAL(wp) :: f_uwind, f_vwind,f_pp0308 REAL(wp) :: f_kw660, f_o2flux, f_o2sat, f_o2sat3302 REAL(wp) :: f_xco2a 303 REAL(wp), DIMENSION(jpi,jpj) :: f_ph, f_pco2w, f_h2co3, f_hco3, f_co3, f_co2flux 304 REAL(wp), DIMENSION(jpi,jpj) :: f_TDIC, f_TALK, f_dcf, f_henry 305 REAL(wp), DIMENSION(jpi,jpj) :: f_pp0 306 REAL(wp), DIMENSION(jpi,jpj) :: f_kw660, f_o2flux, f_o2sat, f_o2sat3 309 307 REAL(wp), DIMENSION(jpi,jpj) :: f_omcal, f_omarg 310 308 !! 311 309 !! AXY (23/06/15): additional diagnostics for MOCSY and oxygen 312 REAL(wp) :: f_fco2w, f_BetaD, f_rhosw, f_opres, f_insitut, f_pco2atm, f_fco2atm313 REAL(wp) :: f_schmidtco2, f_kwco2, f_K0, f_co2starair, f_dpco2, f_kwo2310 REAL(wp), DIMENSION(jpi,jpj) :: f_fco2w, f_BetaD, f_rhosw, f_opres, f_insitut, f_pco2atm, f_fco2atm 311 REAL(wp), DIMENSION(jpi,jpj) :: f_schmidtco2, f_kwco2, f_K0, f_co2starair, f_dpco2, f_kwo2 314 312 !! jpalm 14-07-2016: convert CO2flux diag from mmol/m2/d to kg/m2/s 315 313 REAL, PARAMETER :: weight_CO2_mol = 44.0095 !! g / mol … … 318 316 319 317 !! 320 INTEGER :: iters318 INTEGER, DIMENSION(jpi,jpj) :: iters 321 319 REAL(wp) :: f_year 322 320 INTEGER :: i_year … … 329 327 !! 330 328 !! oxygen production and consumption (and non-consumption) 331 REAL(wp) :: fo2_prod, fo2_cons, fo2_ncons, fo2_ccons329 REAL(wp), DIMENSION(jpi,jpj) :: fo2_prod, fo2_cons, fo2_ncons, fo2_ccons 332 330 REAL(wp), DIMENSION(jpi,jpj) :: foxy_prod, foxy_cons, foxy_anox 333 331 !! Jpalm (11-08-2014) 334 332 !! add DMS in MEDUSA for UKESM1 model 335 REAL(wp) :: dms_surf333 REAL(wp), DIMENSION(jpi,jpj) :: dms_surf 336 334 !! AXY (13/03/15): add in other DMS calculations 337 REAL(wp) :: dms_andr, dms_simo, dms_aran, dms_hall335 REAL(wp), DIMENSION(jpi,jpj) :: dms_andr, dms_simo, dms_aran, dms_hall 338 336 339 337 # endif … … 352 350 REAL(wp), DIMENSION(jpi,jpj) :: f_runoff, f_riv_n, f_riv_si, f_riv_c, f_riv_alk 353 351 !! AXY (19/07/12): variables for local riverine fluxes to handle inputs below surface 354 REAL(wp) ::f_riv_loc_n, f_riv_loc_si, f_riv_loc_c, f_riv_loc_alk352 REAL(wp), DIMENSION(jpi,jpj) :: f_riv_loc_n, f_riv_loc_si, f_riv_loc_c, f_riv_loc_alk 355 353 !! 356 354 !! Jpalm -- 11-10-2015 -- adapt diag to iom_use … … 1359 1357 !! do carbonate chemistry 1360 1358 !! 1361 fdep2 = fsdept(ji,jj,jk) !! set up level midpoint1362 !! AXY (28/11/16): local seafloor depth1363 !! previously mbathy(ji,jj) - 1, now mbathy(ji,jj)1364 jmbathy = mbathy(ji,jj)1365 !!1366 1359 !! set up required state variables 1367 zdic = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon1368 zalk = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity1369 ztmp = tsn(ji,jj,jk,jp_tem) !! temperature1370 zsal = tsn(ji,jj,jk,jp_sal) !! salinity1360 zdic(ji,jj) = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 1361 zalk(ji,jj) = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 1362 ztmp(ji,jj) = tsn(ji,jj,jk,jp_tem) !! temperature 1363 zsal(ji,jj) = tsn(ji,jj,jk,jp_sal) !! salinity 1371 1364 # if defined key_mocsy 1372 zsil = max(0.,trn(ji,jj,jk,jpsil)) !! silicic acid1373 zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield1365 zsil(ji,jj) = max(0.,trn(ji,jj,jk,jpsil)) !! silicic acid 1366 zpho(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 1374 1367 # endif 1375 1368 !! 1376 1369 !! AXY (28/02/14): check input fields 1377 if (ztmp .lt. -3.0 .or. ztmp.gt. 40.0 ) then1370 if (ztmp(ji,jj) .lt. -3.0 .or. ztmp(ji,jj) .gt. 40.0 ) then 1378 1371 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 3D, ', & 1379 1372 tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (', & … … 1381 1374 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 3D, ', & 1382 1375 tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 1383 ztmp = tsb(ji,jj,jk,jp_tem) !! temperature1376 ztmp(ji,jj) = tsb(ji,jj,jk,jp_tem) !! temperature 1384 1377 endif 1385 if (zsal .lt. 0.0 .or. zsal.gt. 45.0 ) then1378 if (zsal(ji,jj) .lt. 0.0 .or. zsal(ji,jj) .gt. 45.0 ) then 1386 1379 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 3D, ', & 1387 1380 tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (', & … … 1390 1383 !! 1391 1384 !! blank input variables not used at this stage (they relate to air-sea flux) 1392 f_kw660 = 1.01393 f_pp0 = 1.01385 f_kw660(ji,jj) = 1.0 1386 f_pp0(ji,jj) = 1.0 1394 1387 !! 1395 1388 !! calculate carbonate chemistry at grid cell midpoint … … 1397 1390 !! AXY (22/06/15): use Orr & Epitalon (2015) MOCSY-2 carbonate 1398 1391 !! chemistry package 1399 CALL mocsy_interface( ztmp , zsal, zalk, zdic, zsil, zpho, & ! inputs1400 f_pp0 , fdep2, gphit(ji,jj), f_kw660, f_xco2a, 1, & ! inputs1401 f_ph , f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj), & ! outputs1402 f_omcal(ji,jj), f_BetaD , f_rhosw, f_opres, f_insitut, & ! outputs1403 f_pco2atm , f_fco2atm, f_schmidtco2, f_kwco2, f_K0, & ! outputs1404 f_co2starair , f_co2flux, f_dpco2) ! outputs1392 CALL mocsy_interface( ztmp(ji,jj), zsal(ji,jj), zalk(ji,jj), zdic(ji,jj), zsil(ji,jj), zpho(ji,jj), & ! inputs 1393 f_pp0(ji,jj), fsdept(ji,jj,jk), gphit(ji,jj), f_kw660(ji,jj), f_xco2a, 1, & ! inputs 1394 f_ph(ji,jj), f_pco2w(ji,jj), f_fco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omarg(ji,jj), & ! outputs 1395 f_omcal(ji,jj), f_BetaD(ji,jj), f_rhosw(ji,jj), f_opres(ji,jj), f_insitut(ji,jj), & ! outputs 1396 f_pco2atm(ji,jj), f_fco2atm(ji,jj), f_schmidtco2(ji,jj), f_kwco2(ji,jj), f_K0(ji,jj), & ! outputs 1397 f_co2starair(ji,jj), f_co2flux(ji,jj), f_dpco2(ji,jj) ) ! outputs 1405 1398 !! 1406 f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg1407 f_TALK = (zalk / f_rhosw) * 1000. ! meq / m3 -> ueq / kg1408 f_dcf = f_rhosw1399 f_TDIC(ji,jj) = (zdic(ji,jj) / f_rhosw(ji,jj)) * 1000. ! mmol / m3 -> umol / kg 1400 f_TALK(ji,jj) = (zalk(ji,jj) / f_rhosw(ji,jj)) * 1000. ! meq / m3 -> ueq / kg 1401 f_dcf(ji,jj) = f_rhosw(ji,jj) 1409 1402 # else 1410 1403 !! AXY (22/06/15): use old PML carbonate chemistry package (the 1411 1404 !! MEDUSA-2 default) 1412 CALL trc_co2_medusa( ztmp , zsal, zdic, zalk, fdep2, f_kw660, & ! inputs1413 f_xco2a, f_ph , f_pco2w, f_h2co3, f_hco3, f_co3, f_omcal(ji,jj), & ! outputs1414 f_omarg(ji,jj), f_co2flux , f_TDIC, f_TALK, f_dcf, f_henry, iters) ! outputs1405 CALL trc_co2_medusa( ztmp(ji,jj), zsal(ji,jj), zdic(ji,jj), zalk(ji,jj), fsdept(ji,jj,jk), f_kw660(ji,jj), & ! inputs 1406 f_xco2a, f_ph(ji,jj), f_pco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omcal(ji,jj), & ! outputs 1407 f_omarg(ji,jj), f_co2flux(ji,jj), f_TDIC(ji,jj), f_TALK(ji,jj), f_dcf(ji,jj), f_henry(ji,jj), iters(ji,jj)) ! outputs 1415 1408 !! 1416 1409 !! AXY (28/02/14): check output fields 1417 if (iters .eq. 25) then1410 if (iters(ji,jj) .eq. 25) then 1418 1411 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: 3D ITERS WARNING, ', & 1419 iters , ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt1412 iters(ji,jj), ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 1420 1413 endif 1421 1414 # endif 1422 1415 !! 1423 1416 !! store 3D outputs 1424 f3_pH(ji,jj,jk) = f_ph 1425 f3_h2co3(ji,jj,jk) = f_h2co3 1426 f3_hco3(ji,jj,jk) = f_hco3 1427 f3_co3(ji,jj,jk) = f_co3 1417 f3_pH(ji,jj,jk) = f_ph(ji,jj) 1418 f3_h2co3(ji,jj,jk) = f_h2co3(ji,jj) 1419 f3_hco3(ji,jj,jk) = f_hco3(ji,jj) 1420 f3_co3(ji,jj,jk) = f_co3(ji,jj) 1428 1421 f3_omcal(ji,jj,jk) = f_omcal(ji,jj) 1429 1422 f3_omarg(ji,jj,jk) = f_omarg(ji,jj) … … 1432 1425 if (i2_omcal(ji,jj) .eq. 0 .and. f_omcal(ji,jj) .lt. 1.0) then 1433 1426 if (jk .eq. 1) then 1434 f2_ccd_cal(ji,jj) = f dep21427 f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk) 1435 1428 else 1436 1429 fq0 = f3_omcal(ji,jj,jk-1) - f_omcal(ji,jj) 1437 1430 fq1 = f3_omcal(ji,jj,jk-1) - 1.0 1438 1431 fq2 = fq1 / (fq0 + tiny(fq0)) 1439 fq3 = f dep2- fsdept(ji,jj,jk-1)1432 fq3 = fsdept(ji,jj,jk) - fsdept(ji,jj,jk-1) 1440 1433 fq4 = fq2 * fq3 1441 1434 f2_ccd_cal(ji,jj) = fsdept(ji,jj,jk-1) + fq4 … … 1443 1436 i2_omcal(ji,jj) = 1 1444 1437 endif 1445 if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. jmbathy) then1438 if ( i2_omcal(ji,jj) .eq. 0 .and. jk .eq. mbathy(ji,jj) ) then 1446 1439 !! reached seafloor and still no dissolution; set to seafloor (W-point) 1447 1440 f2_ccd_cal(ji,jj) = fsdepw(ji,jj,jk+1) … … 1452 1445 if (i2_omarg(ji,jj) .eq. 0 .and. f_omarg(ji,jj) .lt. 1.0) then 1453 1446 if (jk .eq. 1) then 1454 f2_ccd_arg(ji,jj) = f dep21447 f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk) 1455 1448 else 1456 1449 fq0 = f3_omarg(ji,jj,jk-1) - f_omarg(ji,jj) 1457 1450 fq1 = f3_omarg(ji,jj,jk-1) - 1.0 1458 1451 fq2 = fq1 / (fq0 + tiny(fq0)) 1459 fq3 = f dep2- fsdept(ji,jj,jk-1)1452 fq3 = fsdept(ji,jj,jk) - fsdept(ji,jj,jk-1) 1460 1453 fq4 = fq2 * fq3 1461 1454 f2_ccd_arg(ji,jj) = fsdept(ji,jj,jk-1) + fq4 … … 1463 1456 i2_omarg(ji,jj) = 1 1464 1457 endif 1465 if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. jmbathy) then1458 if ( i2_omarg(ji,jj) .eq. 0 .and. jk .eq. mbathy(ji,jj) ) then 1466 1459 !! reached seafloor and still no dissolution; set to seafloor (W-point) 1467 1460 f2_ccd_arg(ji,jj) = fsdepw(ji,jj,jk+1) … … 1514 1507 !!--------------------------------------------------------------------- 1515 1508 !! 1516 !! AXY (11/12/08): set up level thickness1517 fthk = fse3t(ji,jj,jk)1518 !! AXY (25/02/10): set up level depth (top of level)1519 fdep = fsdepw(ji,jj,jk)1520 1509 !! AXY (01/03/10): set up level depth (bottom of level) 1521 fdep1 = fdep + fthk1510 fdep1(ji,jj) = fsdepw(ji,jj,jk) + fse3t(ji,jj,jk) 1522 1511 !! AXY (28/11/16): local seafloor depth 1523 1512 !! previously mbathy(ji,jj) - 1, now mbathy(ji,jj) 1524 jmbathy= mbathy(ji,jj)1513 mbathy(ji,jj) = mbathy(ji,jj) 1525 1514 !! 1526 1515 !! set up model tracers 1527 1516 !! negative values of state variables are not allowed to 1528 1517 !! contribute to the calculated fluxes 1529 zchn = max(0.,trn(ji,jj,jk,jpchn)) !! non-diatom chlorophyll1530 zchd = max(0.,trn(ji,jj,jk,jpchd)) !! diatom chlorophyll1531 zphn = max(0.,trn(ji,jj,jk,jpphn)) !! non-diatoms1532 zphd = max(0.,trn(ji,jj,jk,jpphd)) !! diatoms1533 zpds = max(0.,trn(ji,jj,jk,jppds)) !! diatom silicon1518 zchn(ji,jj) = max(0.,trn(ji,jj,jk,jpchn)) !! non-diatom chlorophyll 1519 zchd(ji,jj) = max(0.,trn(ji,jj,jk,jpchd)) !! diatom chlorophyll 1520 zphn(ji,jj) = max(0.,trn(ji,jj,jk,jpphn)) !! non-diatoms 1521 zphd(ji,jj) = max(0.,trn(ji,jj,jk,jpphd)) !! diatoms 1522 zpds(ji,jj) = max(0.,trn(ji,jj,jk,jppds)) !! diatom silicon 1534 1523 !! AXY (28/01/10): probably need to take account of chl/biomass connection 1535 if (zchn .eq.0.) zphn= 0.1536 if (zchd .eq.0.) zphd= 0.1537 if (zphn .eq.0.) zchn= 0.1538 if (zphd .eq.0.) zchd= 0.1524 if (zchn(ji,jj).eq.0.) zphn(ji,jj) = 0. 1525 if (zchd(ji,jj).eq.0.) zphd(ji,jj) = 0. 1526 if (zphn(ji,jj).eq.0.) zchn(ji,jj) = 0. 1527 if (zphd(ji,jj).eq.0.) zchd(ji,jj) = 0. 1539 1528 !! AXY (23/01/14): duh - why did I forget diatom silicon? 1540 if (zpds .eq.0.) zphd= 0.1541 if (zphd .eq.0.) zpds= 0.1542 zzmi = max(0.,trn(ji,jj,jk,jpzmi)) !! microzooplankton1543 zzme = max(0.,trn(ji,jj,jk,jpzme)) !! mesozooplankton1544 zdet = max(0.,trn(ji,jj,jk,jpdet)) !! detrital nitrogen1545 zdin = max(0.,trn(ji,jj,jk,jpdin)) !! dissolved inorganic nitrogen1546 zsil = max(0.,trn(ji,jj,jk,jpsil)) !! dissolved silicic acid1547 zfer = max(0.,trn(ji,jj,jk,jpfer)) !! dissolved "iron"1529 if (zpds(ji,jj).eq.0.) zphd(ji,jj) = 0. 1530 if (zphd(ji,jj).eq.0.) zpds(ji,jj) = 0. 1531 zzmi(ji,jj) = max(0.,trn(ji,jj,jk,jpzmi)) !! microzooplankton 1532 zzme(ji,jj) = max(0.,trn(ji,jj,jk,jpzme)) !! mesozooplankton 1533 zdet(ji,jj) = max(0.,trn(ji,jj,jk,jpdet)) !! detrital nitrogen 1534 zdin(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) !! dissolved inorganic nitrogen 1535 zsil(ji,jj) = max(0.,trn(ji,jj,jk,jpsil)) !! dissolved silicic acid 1536 zfer(ji,jj) = max(0.,trn(ji,jj,jk,jpfer)) !! dissolved "iron" 1548 1537 # if defined key_roam 1549 zdtc = max(0.,trn(ji,jj,jk,jpdtc)) !! detrital carbon1550 zdic = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon1551 zalk = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity1552 zoxy = max(0.,trn(ji,jj,jk,jpoxy)) !! oxygen1538 zdtc(ji,jj) = max(0.,trn(ji,jj,jk,jpdtc)) !! detrital carbon 1539 zdic(ji,jj) = max(0.,trn(ji,jj,jk,jpdic)) !! dissolved inorganic carbon 1540 zalk(ji,jj) = max(0.,trn(ji,jj,jk,jpalk)) !! alkalinity 1541 zoxy(ji,jj) = max(0.,trn(ji,jj,jk,jpoxy)) !! oxygen 1553 1542 # if defined key_axy_carbchem && defined key_mocsy 1554 zpho = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield1543 zpho(ji,jj) = max(0.,trn(ji,jj,jk,jpdin)) / 16.0 !! phosphate via DIN and Redfield 1555 1544 # endif 1556 1545 !! 1557 1546 !! also need physical parameters for gas exchange calculations 1558 ztmp = tsn(ji,jj,jk,jp_tem)1559 zsal = tsn(ji,jj,jk,jp_sal)1547 ztmp(ji,jj) = tsn(ji,jj,jk,jp_tem) 1548 zsal(ji,jj) = tsn(ji,jj,jk,jp_sal) 1560 1549 !! 1561 1550 !! AXY (28/02/14): check input fields 1562 if (ztmp .lt. -3.0 .or. ztmp.gt. 40.0 ) then1551 if (ztmp(ji,jj) .lt. -3.0 .or. ztmp(ji,jj) .gt. 40.0 ) then 1563 1552 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T WARNING 2D, ', & 1564 1553 tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), ' at (', & … … 1566 1555 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: T SWITCHING 2D, ', & 1567 1556 tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 1568 ztmp = tsb(ji,jj,jk,jp_tem) !! temperature1557 ztmp(ji,jj) = tsb(ji,jj,jk,jp_tem) !! temperature 1569 1558 endif 1570 if (zsal .lt. 0.0 .or. zsal.gt. 45.0 ) then1559 if (zsal(ji,jj) .lt. 0.0 .or. zsal(ji,jj) .gt. 45.0 ) then 1571 1560 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: S WARNING 2D, ', & 1572 1561 tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), ' at (', & … … 1574 1563 endif 1575 1564 # else 1576 zdtc = zdet* xthetad !! implicit detrital carbon1565 zdtc(ji,jj) = zdet(ji,jj) * xthetad !! implicit detrital carbon 1577 1566 # endif 1578 1567 # if defined key_debug_medusa … … 1612 1601 if (idf.eq.1.AND.idfval.eq.1) then 1613 1602 IF (lwp) write (numout,*) '------------------------------' 1614 IF (lwp) write (numout,*) 'fthk(',jk,') = ', f thk1615 IF (lwp) write (numout,*) 'zphn(',jk,') = ', zphn 1616 IF (lwp) write (numout,*) 'zphd(',jk,') = ', zphd 1617 IF (lwp) write (numout,*) 'zpds(',jk,') = ', zpds 1618 IF (lwp) write (numout,*) 'zzmi(',jk,') = ', zzmi 1619 IF (lwp) write (numout,*) 'zzme(',jk,') = ', zzme 1620 IF (lwp) write (numout,*) 'zdet(',jk,') = ', zdet 1621 IF (lwp) write (numout,*) 'zdin(',jk,') = ', zdin 1622 IF (lwp) write (numout,*) 'zsil(',jk,') = ', zsil 1623 IF (lwp) write (numout,*) 'zfer(',jk,') = ', zfer 1603 IF (lwp) write (numout,*) 'fthk(',jk,') = ', fse3t(ji,jj,jk) 1604 IF (lwp) write (numout,*) 'zphn(',jk,') = ', zphn(ji,jj) 1605 IF (lwp) write (numout,*) 'zphd(',jk,') = ', zphd(ji,jj) 1606 IF (lwp) write (numout,*) 'zpds(',jk,') = ', zpds(ji,jj) 1607 IF (lwp) write (numout,*) 'zzmi(',jk,') = ', zzmi(ji,jj) 1608 IF (lwp) write (numout,*) 'zzme(',jk,') = ', zzme(ji,jj) 1609 IF (lwp) write (numout,*) 'zdet(',jk,') = ', zdet(ji,jj) 1610 IF (lwp) write (numout,*) 'zdin(',jk,') = ', zdin(ji,jj) 1611 IF (lwp) write (numout,*) 'zsil(',jk,') = ', zsil(ji,jj) 1612 IF (lwp) write (numout,*) 'zfer(',jk,') = ', zfer(ji,jj) 1624 1613 # if defined key_roam 1625 IF (lwp) write (numout,*) 'zdtc(',jk,') = ', zdtc 1626 IF (lwp) write (numout,*) 'zdic(',jk,') = ', zdic 1627 IF (lwp) write (numout,*) 'zalk(',jk,') = ', zalk 1628 IF (lwp) write (numout,*) 'zoxy(',jk,') = ', zoxy 1614 IF (lwp) write (numout,*) 'zdtc(',jk,') = ', zdtc(ji,jj) 1615 IF (lwp) write (numout,*) 'zdic(',jk,') = ', zdic(ji,jj) 1616 IF (lwp) write (numout,*) 'zalk(',jk,') = ', zalk(ji,jj) 1617 IF (lwp) write (numout,*) 'zoxy(',jk,') = ', zoxy(ji,jj) 1629 1618 # endif 1630 1619 endif … … 1642 1631 IF ( med_diag%INVTN%dgsave ) THEN 1643 1632 ftot_n(ji,jj) = ftot_n(ji,jj) + & 1644 (f thk * ( zphn + zphd + zzmi + zzme + zdet + zdin) )1633 (fse3t(ji,jj,jk) * ( zphn(ji,jj) + zphd(ji,jj) + zzmi(ji,jj) + zzme(ji,jj) + zdet(ji,jj) + zdin(ji,jj) ) ) 1645 1634 ENDIF 1646 1635 IF ( med_diag%INVTSI%dgsave ) THEN 1647 1636 ftot_si(ji,jj) = ftot_si(ji,jj) + & 1648 (f thk * ( zpds + zsil) )1637 (fse3t(ji,jj,jk) * ( zpds(ji,jj) + zsil(ji,jj) ) ) 1649 1638 ENDIF 1650 1639 IF ( med_diag%INVTFE%dgsave ) THEN 1651 1640 ftot_fe(ji,jj) = ftot_fe(ji,jj) + & 1652 (f thk * ( xrfn * ( zphn + zphd + zzmi + zzme + zdet ) + zfer) )1641 (fse3t(ji,jj,jk) * ( xrfn * ( zphn(ji,jj) + zphd(ji,jj) + zzmi(ji,jj) + zzme(ji,jj) + zdet(ji,jj) ) + zfer(ji,jj) ) ) 1653 1642 ENDIF 1654 1643 # if defined key_roam 1655 1644 IF ( med_diag%INVTC%dgsave ) THEN 1656 1645 ftot_c(ji,jj) = ftot_c(ji,jj) + & 1657 (f thk * ( (xthetapn * zphn) + (xthetapd * zphd) + &1658 (xthetazmi * zzmi ) + (xthetazme * zzme) + zdtc+ &1659 zdic ) )1646 (fse3t(ji,jj,jk) * ( (xthetapn * zphn(ji,jj)) + (xthetapd * zphd(ji,jj)) + & 1647 (xthetazmi * zzmi(ji,jj)) + (xthetazme * zzme(ji,jj)) + zdtc(ji,jj) + & 1648 zdic(ji,jj) ) ) 1660 1649 ENDIF 1661 1650 IF ( med_diag%INVTALK%dgsave ) THEN 1662 ftot_a(ji,jj) = ftot_a(ji,jj) + (f thk * ( zalk) )1651 ftot_a(ji,jj) = ftot_a(ji,jj) + (fse3t(ji,jj,jk) * ( zalk(ji,jj) ) ) 1663 1652 ENDIF 1664 1653 IF ( med_diag%INVTO2%dgsave ) THEN 1665 ftot_o2(ji,jj) = ftot_o2(ji,jj) + (f thk * ( zoxy) )1654 ftot_o2(ji,jj) = ftot_o2(ji,jj) + (fse3t(ji,jj,jk) * ( zoxy(ji,jj) ) ) 1666 1655 ENDIF 1667 1656 !! 1668 1657 !! AXY (10/11/16): CMIP6 diagnostics 1669 1658 IF ( med_diag%INTDISSIC%dgsave ) THEN 1670 intdissic(ji,jj) = intdissic(ji,jj) + (f thk * zdic)1659 intdissic(ji,jj) = intdissic(ji,jj) + (fse3t(ji,jj,jk) * zdic(ji,jj)) 1671 1660 ENDIF 1672 1661 IF ( med_diag%INTDISSIN%dgsave ) THEN 1673 intdissin(ji,jj) = intdissin(ji,jj) + (f thk * zdin)1662 intdissin(ji,jj) = intdissin(ji,jj) + (fse3t(ji,jj,jk) * zdin(ji,jj)) 1674 1663 ENDIF 1675 1664 IF ( med_diag%INTDISSISI%dgsave ) THEN 1676 intdissisi(ji,jj) = intdissisi(ji,jj) + (f thk * zsil)1665 intdissisi(ji,jj) = intdissisi(ji,jj) + (fse3t(ji,jj,jk) * zsil(ji,jj)) 1677 1666 ENDIF 1678 1667 IF ( med_diag%INTTALK%dgsave ) THEN 1679 inttalk(ji,jj) = inttalk(ji,jj) + (f thk * zalk)1668 inttalk(ji,jj) = inttalk(ji,jj) + (fse3t(ji,jj,jk) * zalk(ji,jj)) 1680 1669 ENDIF 1681 1670 IF ( med_diag%O2min%dgsave ) THEN 1682 if ( zoxy < o2min(ji,jj) ) then1683 o2min(ji,jj) = zoxy 1671 if ( zoxy(ji,jj) < o2min(ji,jj) ) then 1672 o2min(ji,jj) = zoxy(ji,jj) 1684 1673 IF ( med_diag%ZO2min%dgsave ) THEN 1685 zo2min(ji,jj) = (f dep + fdep1) / 2. !! layer midpoint1674 zo2min(ji,jj) = (fsdepw(ji,jj,jk) + fdep1(ji,jj)) / 2. !! layer midpoint 1686 1675 ENDIF 1687 1676 endif … … 1701 1690 !! Air-sea gas exchange 1702 1691 !!---------------------------------------------------------------------- 1703 !!1704 !! AXY (17/07/14): zwind_i and zwind_j do not exist in this1705 !! version of NEMO because it does not include1706 !! the SBC changes that our local version has1707 !! for accessing the HadGEM2 forcing; they1708 !! could be added, but an alternative approach1709 !! is to make use of wndm from oce_trc.F901710 !! which is wind speed at 10m (which is what1711 !! is required here; this may need to be1712 !! revisited when MEDUSA properly interacts1713 !! with UKESM1 physics1714 !!1715 f_wind = wndm(ji,jj)1716 1692 IF (lk_oasis) THEN 1717 1693 f_xco2a = PCO2a_in_cpl(ji,jj) !! use 2D atm xCO2 from atm coupling … … 1731 1707 CALL flush(numout) 1732 1708 # endif 1733 CALL gas_transfer( f_wind, 1, 7, & ! inputs1734 f_kw660 ) ! outputs1709 CALL gas_transfer( wndm(ji,jj), 1, 7, & ! inputs 1710 f_kw660(ji,jj) ) ! outputs 1735 1711 # if defined key_debug_medusa 1736 1712 IF (lwp) write (numout,*) 'trc_bio_medusa: exiting gas_transfer' … … 1741 1717 !! of the UKESM1 atmosphere 1742 1718 !! 1743 f_pp0 = 1.01744 !! 1745 !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp =', ztmp 1719 f_pp0(ji,jj) = 1.0 1720 !! 1721 !! IF(lwp) WRITE(numout,*) ' MEDUSA ztmp =', ztmp(ji,jj) 1746 1722 !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_i =', zwind_i(ji,jj) 1747 1723 !! IF(lwp) WRITE(numout,*) ' MEDUSA zwind_j =', zwind_j(ji,jj) 1748 !! IF(lwp) WRITE(numout,*) ' MEDUSA f_wind =', f_wind1724 !! IF(lwp) WRITE(numout,*) ' MEDUSA wndm =', wndm(ji,jj) 1749 1725 !! IF(lwp) WRITE(numout,*) ' MEDUSA fr_i =', fr_i(ji,jj) 1750 1726 !! … … 1755 1731 !! chemistry package; note that depth is set to 1756 1732 !! zero in this call 1757 CALL mocsy_interface( ztmp , zsal, zalk, zdic, zsil, zpho, & ! inputs1758 f_pp0 , 0.0, gphit(ji,jj), f_kw660, f_xco2a, 1, & ! inputs1759 f_ph , f_pco2w, f_fco2w, f_h2co3, f_hco3, f_co3, f_omarg(ji,jj), & ! outputs1760 f_omcal(ji,jj), f_BetaD , f_rhosw, f_opres, f_insitut, & ! outputs1761 f_pco2atm , f_fco2atm, f_schmidtco2, f_kwco2, f_K0, & ! outputs1762 f_co2starair , f_co2flux, f_dpco2) ! outputs1763 !! 1764 f_TDIC = (zdic / f_rhosw) * 1000. ! mmol / m3 -> umol / kg1765 f_TALK = (zalk / f_rhosw) * 1000. ! meq / m3 -> ueq / kg1766 f_dcf = f_rhosw1733 CALL mocsy_interface( ztmp(ji,jj), zsal(ji,jj), zalk(ji,jj), zdic(ji,jj), zsil(ji,jj), zpho(ji,jj), & ! inputs 1734 f_pp0(ji,jj), 0.0, gphit(ji,jj), f_kw660(ji,jj), f_xco2a, 1, & ! inputs 1735 f_ph(ji,jj), f_pco2w(ji,jj), f_fco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omarg(ji,jj), & ! outputs 1736 f_omcal(ji,jj), f_BetaD(ji,jj), f_rhosw(ji,jj), f_opres(ji,jj), f_insitut(ji,jj), & ! outputs 1737 f_pco2atm(ji,jj), f_fco2atm(ji,jj), f_schmidtco2(ji,jj), f_kwco2(ji,jj), f_K0(ji,jj), & ! outputs 1738 f_co2starair(ji,jj), f_co2flux(ji,jj), f_dpco2(ji,jj) ) ! outputs 1739 !! 1740 f_TDIC(ji,jj) = (zdic(ji,jj) / f_rhosw(ji,jj)) * 1000. ! mmol / m3 -> umol / kg 1741 f_TALK(ji,jj) = (zalk(ji,jj) / f_rhosw(ji,jj)) * 1000. ! meq / m3 -> ueq / kg 1742 f_dcf(ji,jj) = f_rhosw(ji,jj) 1767 1743 # else 1768 iters = 01744 iters(ji,jj) = 0 1769 1745 !! 1770 1746 !! carbon dioxide (CO2); Jerry Blackford code (ostensibly OCMIP-2, but not) 1771 CALL trc_co2_medusa( ztmp , zsal, zdic, zalk, 0.0, f_kw660, f_xco2a, & ! inputs1772 f_ph , f_pco2w, f_h2co3, f_hco3, f_co3, f_omcal(ji,jj), & ! outputs1773 f_omarg(ji,jj), f_co2flux , f_TDIC, f_TALK, f_dcf, f_henry, iters) ! outputs1747 CALL trc_co2_medusa( ztmp(ji,jj), zsal(ji,jj), zdic(ji,jj), zalk(ji,jj), 0.0, f_kw660(ji,jj), f_xco2a, & ! inputs 1748 f_ph(ji,jj), f_pco2w(ji,jj), f_h2co3(ji,jj), f_hco3(ji,jj), f_co3(ji,jj), f_omcal(ji,jj), & ! outputs 1749 f_omarg(ji,jj), f_co2flux(ji,jj), f_TDIC(ji,jj), f_TALK(ji,jj), f_dcf(ji,jj), f_henry(ji,jj), iters(ji,jj) ) ! outputs 1774 1750 !! 1775 1751 !! AXY (09/01/14): removed iteration and NaN checks; these have … … 1779 1755 !! output warnings are retained here so that 1780 1756 !! failure position can be determined 1781 if (iters .eq. 25) then1757 if (iters(ji,jj) .eq. 25) then 1782 1758 IF(lwp) WRITE(numout,*) ' trc_bio_medusa: ITERS WARNING, ', & 1783 iters , ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt1759 iters(ji,jj), ' AT (', ji, ', ', jj, ', ', jk, ') AT ', kt 1784 1760 endif 1785 1761 # endif … … 1787 1763 !! AXY (18/04/13): switch off carbonate chemistry calculations; provide 1788 1764 !! quasi-sensible alternatives 1789 f_ph = 8.11790 f_pco2w = f_xco2a1791 f_h2co3 = 0.005 * zdic1792 f_hco3 = 0.865 * zdic1793 f_co3 = 0.130 * zdic1765 f_ph(ji,jj) = 8.1 1766 f_pco2w(ji,jj) = f_xco2a 1767 f_h2co3(ji,jj) = 0.005 * zdic(ji,jj) 1768 f_hco3(ji,jj) = 0.865 * zdic(ji,jj) 1769 f_co3(ji,jj) = 0.130 * zdic(ji,jj) 1794 1770 f_omcal(ji,jj) = 4. 1795 1771 f_omarg(ji,jj) = 2. 1796 f_co2flux = 0.1797 f_TDIC = zdic1798 f_TALK = zalk1799 f_dcf = 1.0261800 f_henry = 1.1772 f_co2flux(ji,jj) = 0. 1773 f_TDIC(ji,jj) = zdic(ji,jj) 1774 f_TALK(ji,jj) = zalk(ji,jj) 1775 f_dcf(ji,jj) = 1.026 1776 f_henry(ji,jj) = 1. 1801 1777 !! AXY (23/06/15): add in some extra MOCSY diagnostics 1802 f_fco2w = f_xco2a1803 f_BetaD = 1.1804 f_rhosw = 1.0261805 f_opres = 0.1806 f_insitut = ztmp1807 f_pco2atm = f_xco2a1808 f_fco2atm = f_xco2a1809 f_schmidtco2 = 660.1810 f_kwco2 = 0.1811 f_K0 = 0.1812 f_co2starair = f_xco2a1813 f_dpco2 = 0.1778 f_fco2w(ji,jj) = f_xco2a 1779 f_BetaD(ji,jj) = 1. 1780 f_rhosw(ji,jj) = 1.026 1781 f_opres(ji,jj) = 0. 1782 f_insitut(ji,jj) = ztmp(ji,jj) 1783 f_pco2atm(ji,jj) = f_xco2a 1784 f_fco2atm(ji,jj) = f_xco2a 1785 f_schmidtco2(ji,jj) = 660. 1786 f_kwco2(ji,jj) = 0. 1787 f_K0(ji,jj) = 0. 1788 f_co2starair(ji,jj) = f_xco2a 1789 f_dpco2(ji,jj) = 0. 1814 1790 # endif 1815 1791 !! 1816 1792 !! mmol/m2/s -> mmol/m3/d; correct for sea-ice; divide through by layer thickness 1817 f_co2flux = (1. - fr_i(ji,jj)) * f_co2flux * 86400. / fthk1793 f_co2flux(ji,jj) = (1. - fr_i(ji,jj)) * f_co2flux(ji,jj) * 86400. / fse3t(ji,jj,jk) 1818 1794 !! 1819 1795 !! oxygen (O2); OCMIP-2 code 1820 1796 !! AXY (23/06/15): amend input list for oxygen to account for common gas 1821 1797 !! transfer velocity 1822 !! CALL trc_oxy_medusa( ztmp, zsal, f_uwind, f_vwind, f_pp0, zoxy / 1000., fthk, & ! inputs1823 !! f_kw660, f_o2flux, f_o2sat ) ! outputs1824 CALL trc_oxy_medusa( ztmp , zsal, f_kw660, f_pp0, zoxy, & ! inputs1825 f_kwo2 , f_o2flux, f_o2sat) ! outputs1798 !! Note that f_kwo2 is an about from the subroutine below, 1799 !! which doesn't seem to be used - marc 10/4/17 1800 CALL trc_oxy_medusa( ztmp(ji,jj), zsal(ji,jj), f_kw660(ji,jj), f_pp0(ji,jj), zoxy(ji,jj), & ! inputs 1801 f_kwo2(ji,jj), f_o2flux(ji,jj), f_o2sat(ji,jj) ) ! outputs 1826 1802 !! 1827 1803 !! mmol/m2/s -> mol/m3/d; correct for sea-ice; divide through by layer thickness 1828 f_o2flux = (1. - fr_i(ji,jj)) * f_o2flux * 86400. / fthk1804 f_o2flux(ji,jj) = (1. - fr_i(ji,jj)) * f_o2flux(ji,jj) * 86400. / fse3t(ji,jj,jk) 1829 1805 !! 1830 1806 !! Jpalm (08-2014) … … 1846 1822 if (jdms_input .eq. 0) then 1847 1823 !! use instantaneous inputs 1848 CALL trc_dms_medusa( zchn , zchd, hmld(ji,jj), qsr(ji,jj), zdin, & ! inputs1849 dms_andr , dms_simo, dms_aran, dms_hall) ! outputs1824 CALL trc_dms_medusa( zchn(ji,jj), zchd(ji,jj), hmld(ji,jj), qsr(ji,jj), zdin(ji,jj), & ! inputs 1825 dms_andr(ji,jj), dms_simo(ji,jj), dms_aran(ji,jj), dms_hall(ji,jj) ) ! outputs 1850 1826 else 1851 1827 !! use diel-average inputs 1852 1828 CALL trc_dms_medusa( zn_dms_chn(ji,jj), zn_dms_chd(ji,jj), & ! inputs 1853 1829 zn_dms_mld(ji,jj), zn_dms_qsr(ji,jj), zn_dms_din(ji,jj), & ! inputs 1854 dms_andr , dms_simo, dms_aran, dms_hall) ! outputs1830 dms_andr(ji,jj), dms_simo(ji,jj), dms_aran(ji,jj), dms_hall(ji,jj) ) ! outputs 1855 1831 endif 1856 1832 !! 1857 1833 !! assign correct output to variable passed to atmosphere 1858 1834 if (jdms_model .eq. 1) then 1859 dms_surf = dms_andr1835 dms_surf(ji,jj) = dms_andr(ji,jj) 1860 1836 elseif (jdms_model .eq. 2) then 1861 dms_surf = dms_simo1837 dms_surf(ji,jj) = dms_simo(ji,jj) 1862 1838 elseif (jdms_model .eq. 3) then 1863 dms_surf = dms_aran1839 dms_surf(ji,jj) = dms_aran(ji,jj) 1864 1840 elseif (jdms_model .eq. 4) then 1865 dms_surf = dms_hall1841 dms_surf(ji,jj) = dms_hall(ji,jj) 1866 1842 endif 1867 1843 !! … … 1869 1845 IF( lk_iomput ) THEN 1870 1846 IF( med_diag%DMS_SURF%dgsave ) THEN 1871 dms_surf2d(ji,jj) = dms_surf 1847 dms_surf2d(ji,jj) = dms_surf(ji,jj) 1872 1848 ENDIF 1873 1849 IF( med_diag%DMS_ANDR%dgsave ) THEN 1874 dms_andr2d(ji,jj) = dms_andr 1850 dms_andr2d(ji,jj) = dms_andr(ji,jj) 1875 1851 ENDIF 1876 1852 IF( med_diag%DMS_SIMO%dgsave ) THEN 1877 dms_simo2d(ji,jj) = dms_simo 1853 dms_simo2d(ji,jj) = dms_simo(ji,jj) 1878 1854 ENDIF 1879 1855 IF( med_diag%DMS_ARAN%dgsave ) THEN 1880 dms_aran2d(ji,jj) = dms_aran 1856 dms_aran2d(ji,jj) = dms_aran(ji,jj) 1881 1857 ENDIF 1882 1858 IF( med_diag%DMS_HALL%dgsave ) THEN 1883 dms_hall2d(ji,jj) = dms_hall 1859 dms_hall2d(ji,jj) = dms_hall(ji,jj) 1884 1860 ENDIF 1885 1861 # if defined key_debug_medusa … … 1898 1874 !! IF( med_diag%FGCO2%dgsave ) THEN 1899 1875 !! convert from mol/m2/day to kg/m2/s 1900 fgco2(ji,jj) = f_co2flux * fthk* CO2flux_conv !! mmol-C/m3/d -> kg-CO2/m2/s1876 fgco2(ji,jj) = f_co2flux(ji,jj) * fse3t(ji,jj,jk) * CO2flux_conv !! mmol-C/m3/d -> kg-CO2/m2/s 1901 1877 !! ENDIF 1902 1878 IF ( lk_iomput ) THEN 1903 1879 IF( med_diag%ATM_PCO2%dgsave ) THEN 1904 f_pco2a2d(ji,jj) = f_pco2atm 1880 f_pco2a2d(ji,jj) = f_pco2atm(ji,jj) 1905 1881 ENDIF 1906 1882 IF( med_diag%OCN_PCO2%dgsave ) THEN 1907 f_pco2w2d(ji,jj) = f_pco2w 1883 f_pco2w2d(ji,jj) = f_pco2w(ji,jj) 1908 1884 ENDIF 1909 1885 IF( med_diag%CO2FLUX%dgsave ) THEN 1910 f_co2flux 2d(ji,jj) = f_co2flux * fthk!! mmol/m3/d -> mmol/m2/d1886 f_co2flux(ji,jj)2d(ji,jj) = f_co2flux(ji,jj) * fse3t(ji,jj,jk) !! mmol/m3/d -> mmol/m2/d 1911 1887 ENDIF 1912 1888 IF( med_diag%TCO2%dgsave ) THEN 1913 f_TDIC2d(ji,jj) = f_TDIC 1889 f_TDIC2d(ji,jj) = f_TDIC(ji,jj) 1914 1890 ENDIF 1915 1891 IF( med_diag%TALK%dgsave ) THEN 1916 f_TALK2d(ji,jj) = f_TALK 1892 f_TALK2d(ji,jj) = f_TALK(ji,jj) 1917 1893 ENDIF 1918 1894 IF( med_diag%KW660%dgsave ) THEN 1919 f_kw6602d(ji,jj) = f_kw660 1895 f_kw6602d(ji,jj) = f_kw660(ji,jj) 1920 1896 ENDIF 1921 1897 IF( med_diag%ATM_PP0%dgsave ) THEN 1922 f_pp02d(ji,jj) = f_pp0 1898 f_pp02d(ji,jj) = f_pp0(ji,jj) 1923 1899 ENDIF 1924 1900 IF( med_diag%O2FLUX%dgsave ) THEN 1925 f_o2flux2d(ji,jj) = f_o2flux 1901 f_o2flux2d(ji,jj) = f_o2flux(ji,jj) 1926 1902 ENDIF 1927 1903 IF( med_diag%O2SAT%dgsave ) THEN 1928 f_o2sat2d(ji,jj) = f_o2sat 1904 f_o2sat2d(ji,jj) = f_o2sat(ji,jj) 1929 1905 ENDIF 1930 1906 !! AXY (24/11/16): add in extra MOCSY diagnostics … … 1933 1909 ENDIF 1934 1910 IF( med_diag%OCN_FCO2%dgsave ) THEN 1935 f_fco2w_2d(ji,jj) = f_fco2w 1911 f_fco2w_2d(ji,jj) = f_fco2w(ji,jj) 1936 1912 ENDIF 1937 1913 IF( med_diag%ATM_FCO2%dgsave ) THEN 1938 f_fco2a_2d(ji,jj) = f_fco2atm 1914 f_fco2a_2d(ji,jj) = f_fco2atm(ji,jj) 1939 1915 ENDIF 1940 1916 IF( med_diag%OCN_RHOSW%dgsave ) THEN 1941 f_ocnrhosw_2d(ji,jj) = f_rhosw 1917 f_ocnrhosw_2d(ji,jj) = f_rhosw(ji,jj) 1942 1918 ENDIF 1943 1919 IF( med_diag%OCN_SCHCO2%dgsave ) THEN 1944 f_ocnschco2_2d(ji,jj) = f_schmidtco2 1920 f_ocnschco2_2d(ji,jj) = f_schmidtco2(ji,jj) 1945 1921 ENDIF 1946 1922 IF( med_diag%OCN_KWCO2%dgsave ) THEN 1947 f_ocnkwco2_2d(ji,jj) = f_kwco2 1923 f_ocnkwco2_2d(ji,jj) = f_kwco2(ji,jj) 1948 1924 ENDIF 1949 1925 IF( med_diag%OCN_K0%dgsave ) THEN 1950 f_ocnk0_2d(ji,jj) = f_K0 1926 f_ocnk0_2d(ji,jj) = f_K0(ji,jj) 1951 1927 ENDIF 1952 1928 IF( med_diag%CO2STARAIR%dgsave ) THEN 1953 f_co2starair_2d(ji,jj) = f_co2starair 1929 f_co2starair_2d(ji,jj) = f_co2starair(ji,jj) 1954 1930 ENDIF 1955 1931 IF( med_diag%OCN_DPCO2%dgsave ) THEN 1956 f_ocndpco2_2d(ji,jj) = f_dpco2 1932 f_ocndpco2_2d(ji,jj) = f_dpco2(ji,jj) 1957 1933 ENDIF 1958 1934 ENDIF … … 1963 1939 !! AXY (11/11/16): CMIP6 oxygen saturation 3D diagnostic 1964 1940 IF ( med_diag%O2SAT3%dgsave ) THEN 1965 call oxy_sato( ztmp , zsal, f_o2sat3 )1941 call oxy_sato( ztmp(ji,jj), zsal(ji,jj), f_o2sat3 ) 1966 1942 o2sat3(ji, jj, jk) = f_o2sat3 1967 1943 ENDIF … … 2049 2025 !! 2050 2026 !! non-diatoms 2051 if (zphn .GT.rsmall) then2052 fthetan = max(tiny(zchn), (zchn * xxi) / (zphn + tiny(zphn)))2053 faln = xaln * fthetan2027 if (zphn(ji,jj).GT.rsmall) then 2028 fthetan(ji,jj) = max(tiny(zchn(ji,jj)), (zchn(ji,jj) * xxi) / (zphn(ji,jj) + tiny(zphn(ji,jj)))) 2029 faln(ji,jj) = xaln * fthetan(ji,jj) 2054 2030 else 2055 fthetan = 0.2056 faln = 0.2031 fthetan(ji,jj) = 0. 2032 faln(ji,jj) = 0. 2057 2033 endif 2058 2034 !! 2059 2035 !! diatoms 2060 if (zphd .GT.rsmall) then2061 fthetad = max(tiny(zchd), (zchd * xxi) / (zphd + tiny(zphd)))2062 fald = xald * fthetad2036 if (zphd(ji,jj).GT.rsmall) then 2037 fthetad(ji,jj) = max(tiny(zchd(ji,jj)), (zchd(ji,jj) * xxi) / (zphd(ji,jj) + tiny(zphd(ji,jj)))) 2038 fald(ji,jj) = xald * fthetad(ji,jj) 2063 2039 else 2064 fthetad = 0.2065 fald = 0.2040 fthetad(ji,jj) = 0. 2041 fald(ji,jj) = 0. 2066 2042 endif 2067 2043 … … 2070 2046 if (idf.eq.1.AND.idfval.eq.1) then 2071 2047 IF (lwp) write (numout,*) '------------------------------' 2072 IF (lwp) write (numout,*) 'faln(',jk,') = ', faln 2073 IF (lwp) write (numout,*) 'fald(',jk,') = ', fald 2048 IF (lwp) write (numout,*) 'faln(',jk,') = ', faln(ji,jj) 2049 IF (lwp) write (numout,*) 'fald(',jk,') = ', fald(ji,jj) 2074 2050 endif 2075 2051 # endif … … 2092 2068 !! AXY (16/07/09) 2093 2069 !! temperature for new Eppley style phytoplankton growth 2094 loc_T = tsn(ji,jj,jk,jp_tem) 2095 fun_T = 1.066**(1.0 * loc_T) 2070 fun_T(ji,jj) = 1.066**(1.0 * tsn(ji,jj,jk,jp_tem)) 2096 2071 !! AXY (16/05/11): add in new Q10 (1.5, not 2.0) for 2097 2072 !phytoplankton 2098 2073 !! growth; remin. unaffected 2099 fun_Q10 = jq10**((loc_T- 0.0) / 10.0)2074 fun_Q10(ji,jj) = jq10**((tsn(ji,jj,jk,jp_tem) - 0.0) / 10.0) 2100 2075 if (jphy.eq.1) then 2101 xvpnT = xvpn * fun_T2102 xvpdT = xvpd * fun_T2076 xvpnT(ji,jj) = xvpn * fun_T(ji,jj) 2077 xvpdT(ji,jj) = xvpd * fun_T(ji,jj) 2103 2078 elseif (jphy.eq.2) then 2104 xvpnT = xvpn * fun_Q102105 xvpdT = xvpd * fun_Q102079 xvpnT(ji,jj) = xvpn * fun_Q10(ji,jj) 2080 xvpdT(ji,jj) = xvpd * fun_Q10(ji,jj) 2106 2081 else 2107 xvpnT = xvpn2108 xvpdT = xvpd2082 xvpnT(ji,jj) = xvpn 2083 xvpdT(ji,jj) = xvpd 2109 2084 endif 2110 2085 !! 2111 2086 !! non-diatoms 2112 fchn1 = (xvpnT * xvpnT) + (faln * faln* xpar(ji,jj,jk) * xpar(ji,jj,jk))2113 if (fchn1 .GT.rsmall) then2114 fchn = xvpnT / (sqrt(fchn1) + tiny(fchn1))2087 fchn1(ji,jj) = (xvpnT(ji,jj) * xvpnT(ji,jj)) + (faln(ji,jj) * faln(ji,jj) * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 2088 if (fchn1(ji,jj).GT.rsmall) then 2089 fchn(ji,jj) = xvpnT(ji,jj) / (sqrt(fchn1(ji,jj)) + tiny(fchn1(ji,jj))) 2115 2090 else 2116 fchn = 0.2091 fchn(ji,jj) = 0. 2117 2092 endif 2118 fjln = fchn * faln* xpar(ji,jj,jk) !! non-diatom J term2119 fjlim_pn = fjln / xvpnT2093 fjln(ji,jj) = fchn(ji,jj) * faln(ji,jj) * xpar(ji,jj,jk) !! non-diatom J term 2094 fjlim_pn(ji,jj) = fjln(ji,jj) / xvpnT(ji,jj) 2120 2095 !! 2121 2096 !! diatoms 2122 fchd1 = (xvpdT * xvpdT) + (fald * fald* xpar(ji,jj,jk) * xpar(ji,jj,jk))2123 if (fchd1 .GT.rsmall) then2124 fchd = xvpdT / (sqrt(fchd1) + tiny(fchd1))2097 fchd1(ji,jj) = (xvpdT(ji,jj) * xvpdT(ji,jj)) + (fald(ji,jj) * fald(ji,jj) * xpar(ji,jj,jk) * xpar(ji,jj,jk)) 2098 if (fchd1(ji,jj).GT.rsmall) then 2099 fchd(ji,jj) = xvpdT(ji,jj) / (sqrt(fchd1(ji,jj)) + tiny(fchd1(ji,jj))) 2125 2100 else 2126 fchd = 0.2101 fchd(ji,jj) = 0. 2127 2102 endif 2128 fjld = fchd * fald* xpar(ji,jj,jk) !! diatom J term2129 fjlim_pd = fjld / xvpdT2103 fjld(ji,jj) = fchd(ji,jj) * fald(ji,jj) * xpar(ji,jj,jk) !! diatom J term 2104 fjlim_pd(ji,jj) = fjld(ji,jj) / xvpdT(ji,jj) 2130 2105 2131 2106 # if defined key_debug_medusa … … 2133 2108 if (idf.eq.1.AND.idfval.eq.1) then 2134 2109 IF (lwp) write (numout,*) '------------------------------' 2135 IF (lwp) write (numout,*) 'fchn(',jk,') = ', fchn 2136 IF (lwp) write (numout,*) 'fchd(',jk,') = ', fchd 2137 IF (lwp) write (numout,*) 'fjln(',jk,') = ', fjln 2138 IF (lwp) write (numout,*) 'fjld(',jk,') = ', fjld 2110 IF (lwp) write (numout,*) 'fchn(',jk,') = ', fchn(ji,jj) 2111 IF (lwp) write (numout,*) 'fchd(',jk,') = ', fchd(ji,jj) 2112 IF (lwp) write (numout,*) 'fjln(',jk,') = ', fjln(ji,jj) 2113 IF (lwp) write (numout,*) 'fjld(',jk,') = ', fjld(ji,jj) 2139 2114 endif 2140 2115 # endif … … 2145 2120 !! 2146 2121 !! non-diatoms (N, Fe) 2147 fnln = zdin / (zdin+ xnln) !! non-diatom Qn term2148 ffln = zfer / (zfer+ xfln) !! non-diatom Qf term2122 fnln(ji,jj) = zdin(ji,jj) / (zdin(ji,jj) + xnln) !! non-diatom Qn term 2123 ffln(ji,jj) = zfer(ji,jj) / (zfer(ji,jj) + xfln) !! non-diatom Qf term 2149 2124 !! 2150 2125 !! diatoms (N, Si, Fe) 2151 fnld = zdin / (zdin+ xnld) !! diatom Qn term2152 fsld = zsil / (zsil+ xsld) !! diatom Qs term2153 ffld = zfer / (zfer+ xfld) !! diatom Qf term2126 fnld(ji,jj) = zdin(ji,jj) / (zdin(ji,jj) + xnld) !! diatom Qn term 2127 fsld(ji,jj) = zsil(ji,jj) / (zsil(ji,jj) + xsld) !! diatom Qs term 2128 ffld(ji,jj) = zfer(ji,jj) / (zfer(ji,jj) + xfld) !! diatom Qf term 2154 2129 2155 2130 # if defined key_debug_medusa … … 2157 2132 if (idf.eq.1.AND.idfval.eq.1) then 2158 2133 IF (lwp) write (numout,*) '------------------------------' 2159 IF (lwp) write (numout,*) 'fnln(',jk,') = ', fnln 2160 IF (lwp) write (numout,*) 'fnld(',jk,') = ', fnld 2161 IF (lwp) write (numout,*) 'ffln(',jk,') = ', ffln 2162 IF (lwp) write (numout,*) 'ffld(',jk,') = ', ffld 2163 IF (lwp) write (numout,*) 'fsld(',jk,') = ', fsld 2134 IF (lwp) write (numout,*) 'fnln(',jk,') = ', fnln(ji,jj) 2135 IF (lwp) write (numout,*) 'fnld(',jk,') = ', fnld(ji,jj) 2136 IF (lwp) write (numout,*) 'ffln(',jk,') = ', ffln(ji,jj) 2137 IF (lwp) write (numout,*) 'ffld(',jk,') = ', ffld(ji,jj) 2138 IF (lwp) write (numout,*) 'fsld(',jk,') = ', fsld(ji,jj) 2164 2139 endif 2165 2140 # endif … … 2172 2147 if (jliebig .eq. 0) then 2173 2148 !! multiplicative nutrient limitation 2174 fpnlim = fnln * ffln2149 fpnlim(ji,jj) = fnln(ji,jj) * ffln(ji,jj) 2175 2150 elseif (jliebig .eq. 1) then 2176 2151 !! Liebig Law (= most limiting) nutrient limitation 2177 fpnlim = min(fnln, ffln)2152 fpnlim(ji,jj) = min(fnln(ji,jj), ffln(ji,jj)) 2178 2153 endif 2179 fprn = fjln * fpnlim2154 fprn(ji,jj) = fjln(ji,jj) * fpnlim(ji,jj) 2180 2155 2181 2156 !!---------------------------------------------------------------------- … … 2191 2166 if (jliebig .eq. 0) then 2192 2167 !! multiplicative nutrient limitation 2193 fpdlim = fnld * ffld2168 fpdlim(ji,jj) = fnld(ji,jj) * ffld(ji,jj) 2194 2169 elseif (jliebig .eq. 1) then 2195 2170 !! Liebig Law (= most limiting) nutrient limitation 2196 fpdlim = min(fnld, ffld)2171 fpdlim(ji,jj) = min(fnld(ji,jj), ffld(ji,jj)) 2197 2172 endif 2198 2173 !! 2199 if (zphd .GT.rsmall .AND. zpds.GT.rsmall) then2174 if (zphd(ji,jj).GT.rsmall .AND. zpds(ji,jj).GT.rsmall) then 2200 2175 !! "intracellular" elemental ratios 2201 ! fsin = zpds / (zphd + tiny(zphd))2202 ! fnsi = zphd / (zpds + tiny(zpds))2203 fsin = 0.02204 IF( zphd .GT. rsmall) fsin = zpds / zphd2205 fnsi = 0.02206 IF( zpds .GT. rsmall) fnsi = zphd / zpds2176 ! fsin(ji,jj) = zpds(ji,jj) / (zphd(ji,jj) + tiny(zphd(ji,jj))) 2177 ! fnsi(ji,jj) = zphd(ji,jj) / (zpds(ji,jj) + tiny(zpds(ji,jj))) 2178 fsin(ji,jj) = 0.0 2179 IF( zphd(ji,jj) .GT. rsmall) fsin(ji,jj) = zpds(ji,jj) / zphd(ji,jj) 2180 fnsi(ji,jj) = 0.0 2181 IF( zpds(ji,jj) .GT. rsmall) fnsi(ji,jj) = zphd(ji,jj) / zpds(ji,jj) 2207 2182 !! AXY (23/02/10): these next variables derive from Mongin et al. (2003) 2208 2183 fsin1 = 3.0 * xsin0 !! = 0.6 … … 2212 2187 !! conditionalities based on ratios 2213 2188 !! nitrogen (and iron and carbon) 2214 if (fsin .le.xsin0) then2215 fprd = 0.02216 fsld2 = 0.02217 elseif (fsin .lt.fsin1) then2218 fprd = xuif * ((fsin - xsin0) / (fsin + tiny(fsin))) * (fjld * fpdlim)2219 fsld2 = xuif * ((fsin - xsin0) / (fsin + tiny(fsin)))2220 elseif (fsin .ge.fsin1) then2221 fprd = (fjld * fpdlim)2222 fsld2 = 1.02189 if (fsin(ji,jj).le.xsin0) then 2190 fprd(ji,jj) = 0.0 2191 fsld2(ji,jj) = 0.0 2192 elseif (fsin(ji,jj).lt.fsin1) then 2193 fprd(ji,jj) = xuif * ((fsin(ji,jj) - xsin0) / (fsin(ji,jj) + tiny(fsin(ji,jj)))) * (fjld(ji,jj) * fpdlim(ji,jj)) 2194 fsld2(ji,jj) = xuif * ((fsin(ji,jj) - xsin0) / (fsin(ji,jj) + tiny(fsin(ji,jj)))) 2195 elseif (fsin(ji,jj).ge.fsin1) then 2196 fprd(ji,jj) = (fjld(ji,jj) * fpdlim(ji,jj)) 2197 fsld2(ji,jj) = 1.0 2223 2198 endif 2224 2199 !! 2225 2200 !! silicon 2226 if (fsin .lt.fnsi1) then2227 fprds = (fjld * fsld)2228 elseif (fsin .lt.fnsi2) then2229 fprds = xuif * ((fnsi - xnsi0) / (fnsi + tiny(fnsi))) * (fjld * fsld)2201 if (fsin(ji,jj).lt.fnsi1) then 2202 fprds(ji,jj) = (fjld(ji,jj) * fsld(ji,jj)) 2203 elseif (fsin(ji,jj).lt.fnsi2) then 2204 fprds(ji,jj) = xuif * ((fnsi(ji,jj) - xnsi0) / (fnsi(ji,jj) + tiny(fnsi(ji,jj)))) * (fjld(ji,jj) * fsld(ji,jj)) 2230 2205 else 2231 fprds = 0.02206 fprds(ji,jj) = 0.0 2232 2207 endif 2233 2208 else 2234 fsin = 0.02235 fnsi = 0.02236 fprd = 0.02237 fsld2 = 0.02238 fprds = 0.02209 fsin(ji,jj) = 0.0 2210 fnsi(ji,jj) = 0.0 2211 fprd(ji,jj) = 0.0 2212 fsld2(ji,jj) = 0.0 2213 fprds(ji,jj) = 0.0 2239 2214 endif 2240 2215 … … 2243 2218 if (idf.eq.1.AND.idfval.eq.1) then 2244 2219 IF (lwp) write (numout,*) '------------------------------' 2245 IF (lwp) write (numout,*) 'fsin(',jk,') = ', fsin 2246 IF (lwp) write (numout,*) 'fnsi(',jk,') = ', fnsi 2247 IF (lwp) write (numout,*) 'fsld2(',jk,') = ', fsld2 2248 IF (lwp) write (numout,*) 'fprn(',jk,') = ', fprn 2249 IF (lwp) write (numout,*) 'fprd(',jk,') = ', fprd 2250 IF (lwp) write (numout,*) 'fprds(',jk,') = ', fprds 2220 IF (lwp) write (numout,*) 'fsin(',jk,') = ', fsin(ji,jj) 2221 IF (lwp) write (numout,*) 'fnsi(',jk,') = ', fnsi(ji,jj) 2222 IF (lwp) write (numout,*) 'fsld2(',jk,') = ', fsld2(ji,jj) 2223 IF (lwp) write (numout,*) 'fprn(',jk,') = ', fprn(ji,jj) 2224 IF (lwp) write (numout,*) 'fprd(',jk,') = ', fprd(ji,jj) 2225 IF (lwp) write (numout,*) 'fprds(',jk,') = ', fprds(ji,jj) 2251 2226 endif 2252 2227 # endif … … 2261 2236 !!---------------------------------------------------------------------- 2262 2237 !! 2263 if (fdep1 .le.hmld(ji,jj)) then2238 if (fdep1(ji,jj).le.hmld(ji,jj)) then 2264 2239 !! this level is entirely in the mixed layer 2265 2240 fq0 = 1.0 2266 elseif (f dep.ge.hmld(ji,jj)) then2241 elseif (fsdepw(ji,jj,jk).ge.hmld(ji,jj)) then 2267 2242 !! this level is entirely below the mixed layer 2268 2243 fq0 = 0.0 2269 2244 else 2270 2245 !! this level straddles the mixed layer 2271 fq0 = (hmld(ji,jj) - f dep) / fthk2246 fq0 = (hmld(ji,jj) - fsdepw(ji,jj,jk)) / fse3t(ji,jj,jk) 2272 2247 endif 2273 2248 !! 2274 fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn * zphn * fthk* fq0)2275 fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd * zphd * fthk* fq0)2249 fprn_ml(ji,jj) = fprn_ml(ji,jj) + (fprn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk) * fq0) 2250 fprd_ml(ji,jj) = fprd_ml(ji,jj) + (fprd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk) * fq0) 2276 2251 2277 2252 !!---------------------------------------------------------------------- 2278 2253 !! Vertical Integral -- 2279 2254 !!---------------------------------------------------------------------- 2280 ftot_pn(ji,jj) = ftot_pn(ji,jj) + (zphn * fthk) !! vertical integral non-diatom phytoplankton2281 ftot_pd(ji,jj) = ftot_pd(ji,jj) + (zphd * fthk) !! vertical integral diatom phytoplankton2282 ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi * fthk) !! vertical integral microzooplankton2283 ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme * fthk) !! vertical integral mesozooplankton2284 ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet * fthk) !! vertical integral slow detritus, nitrogen2285 ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc * fthk) !! vertical integral slow detritus, carbon2255 ftot_pn(ji,jj) = ftot_pn(ji,jj) + (zphn(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral non-diatom phytoplankton 2256 ftot_pd(ji,jj) = ftot_pd(ji,jj) + (zphd(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral diatom phytoplankton 2257 ftot_zmi(ji,jj) = ftot_zmi(ji,jj) + (zzmi(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral microzooplankton 2258 ftot_zme(ji,jj) = ftot_zme(ji,jj) + (zzme(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral mesozooplankton 2259 ftot_det(ji,jj) = ftot_det(ji,jj) + (zdet(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral slow detritus, nitrogen 2260 ftot_dtc(ji,jj) = ftot_dtc(ji,jj) + (zdtc(ji,jj) * fse3t(ji,jj,jk)) !! vertical integral slow detritus, carbon 2286 2261 2287 2262 !!---------------------------------------------------------------------- … … 2289 2264 !!---------------------------------------------------------------------- 2290 2265 !! 2291 !! frn = (xthetam / fthetan) * (fprn / (fthetan* xpar(ji,jj,jk)))2292 !! frd = (xthetam / fthetad) * (fprd / (fthetad* xpar(ji,jj,jk)))2293 frn = (xthetam * fchn * fnln * ffln ) / (fthetan + tiny(fthetan))2266 !! frn(ji,jj) = (xthetam / fthetan(ji,jj)) * (fprn(ji,jj) / (fthetan(ji,jj) * xpar(ji,jj,jk))) 2267 !! frd(ji,jj) = (xthetam / fthetad(ji,jj)) * (fprd(ji,jj) / (fthetad(ji,jj) * xpar(ji,jj,jk))) 2268 frn(ji,jj) = (xthetam * fchn(ji,jj) * fnln(ji,jj) * ffln(ji,jj) ) / (fthetan(ji,jj) + tiny(fthetan(ji,jj))) 2294 2269 !! AXY (12/05/09): there's potentially a problem here; fsld, silicic acid 2295 2270 !! limitation, is used in the following line to regulate chlorophyll … … 2297 2272 !! of biomass growth; the Mongin term term used in growth is more complex 2298 2273 !! than the simple multiplicative function used below 2299 !! frd = (xthetam * fchd * fnld * ffld * fsld) / (fthetad + tiny(fthetad))2274 !! frd(ji,jj) = (xthetam * fchd(ji,jj) * fnld(ji,jj) * ffld(ji,jj) * fsld(ji,jj)) / (fthetad(ji,jj) + tiny(fthetad(ji,jj))) 2300 2275 !! AXY (12/05/09): this replacement line uses the new variable, fsld2, to 2301 2276 !! regulate chlorophyll growth 2302 frd = (xthetamd * fchd * fnld * ffld * fsld2) / (fthetad + tiny(fthetad))2277 frd(ji,jj) = (xthetamd * fchd(ji,jj) * fnld(ji,jj) * ffld(ji,jj) * fsld2(ji,jj)) / (fthetad(ji,jj) + tiny(fthetad(ji,jj))) 2303 2278 2304 2279 # if defined key_debug_medusa … … 2306 2281 if (idf.eq.1.AND.idfval.eq.1) then 2307 2282 IF (lwp) write (numout,*) '------------------------------' 2308 IF (lwp) write (numout,*) 'fthetan(',jk,') = ', fthetan 2309 IF (lwp) write (numout,*) 'fthetad(',jk,') = ', fthetad 2310 IF (lwp) write (numout,*) 'frn(',jk,') = ', frn 2311 IF (lwp) write (numout,*) 'frd(',jk,') = ', frd 2283 IF (lwp) write (numout,*) 'fthetan(',jk,') = ', fthetan(ji,jj) 2284 IF (lwp) write (numout,*) 'fthetad(',jk,') = ', fthetad(ji,jj) 2285 IF (lwp) write (numout,*) 'frn(',jk,') = ', frn(ji,jj) 2286 IF (lwp) write (numout,*) 'frd(',jk,') = ', frd(ji,jj) 2312 2287 endif 2313 2288 # endif … … 2329 2304 !!---------------------------------------------------------------------- 2330 2305 !! 2331 fmi1 = (xkmi * xkmi) + (xpmipn * zphn * zphn) + (xpmid * zdet * zdet)2332 fmi = xgmi * zzmi / fmi12333 fgmipn = fmi * xpmipn * zphn * zphn!! grazing on non-diatoms2334 fgmid = fmi * xpmid * zdet * zdet!! grazing on detrital nitrogen2306 fmi1(ji,jj) = (xkmi * xkmi) + (xpmipn * zphn(ji,jj) * zphn(ji,jj)) + (xpmid * zdet(ji,jj) * zdet(ji,jj)) 2307 fmi(ji,jj) = xgmi * zzmi(ji,jj) / fmi1(ji,jj) 2308 fgmipn(ji,jj) = fmi(ji,jj) * xpmipn * zphn(ji,jj) * zphn(ji,jj) !! grazing on non-diatoms 2309 fgmid(ji,jj) = fmi(ji,jj) * xpmid * zdet(ji,jj) * zdet(ji,jj) !! grazing on detrital nitrogen 2335 2310 # if defined key_roam 2336 fgmidc = rsmall !acc2337 IF ( zdet .GT. rsmall ) fgmidc = (zdtc / (zdet + tiny(zdet))) * fgmid!! grazing on detrital carbon2311 fgmidc(ji,jj) = rsmall !acc 2312 IF ( zdet(ji,jj) .GT. rsmall ) fgmidc(ji,jj) = (zdtc(ji,jj) / (zdet(ji,jj) + tiny(zdet(ji,jj)))) * fgmid(ji,jj) !! grazing on detrital carbon 2338 2313 # else 2339 2314 !! AXY (26/11/08): implicit detrital carbon change 2340 fgmidc = xthetad * fgmid!! grazing on detrital carbon2315 fgmidc(ji,jj) = xthetad * fgmid(ji,jj) !! grazing on detrital carbon 2341 2316 # endif 2342 2317 !! 2343 2318 !! which translates to these incoming N and C fluxes 2344 finmi = (1.0 - xphi) * (fgmipn + fgmid)2345 ficmi = (1.0 - xphi) * ((xthetapn * fgmipn) + fgmidc)2319 finmi(ji,jj) = (1.0 - xphi) * (fgmipn(ji,jj) + fgmid(ji,jj)) 2320 ficmi(ji,jj) = (1.0 - xphi) * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) 2346 2321 !! 2347 2322 !! the ideal food C:N ratio for microzooplankton 2348 2323 !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 2349 fstarmi = (xbetan * xthetazmi) / (xbetac * xkc)2324 fstarmi(ji,jj) = (xbetan * xthetazmi) / (xbetac * xkc) 2350 2325 !! 2351 2326 !! process these to determine proportioning of grazed N and C 2352 2327 !! (since there is no explicit consideration of respiration, 2353 2328 !! only growth and excretion are calculated here) 2354 fmith = (ficmi / (finmi + tiny(finmi)))2355 if (fmith .ge.fstarmi) then2356 fmigrow = xbetan * finmi2357 fmiexcr = 0.02329 fmith(ji,jj) = (ficmi(ji,jj) / (finmi(ji,jj) + tiny(finmi(ji,jj)))) 2330 if (fmith(ji,jj).ge.fstarmi(ji,jj)) then 2331 fmigrow(ji,jj) = xbetan * finmi(ji,jj) 2332 fmiexcr(ji,jj) = 0.0 2358 2333 else 2359 fmigrow = (xbetac * xkc * ficmi) / xthetazmi2360 fmiexcr = ficmi * ((xbetan / (fmith + tiny(fmith))) - ((xbetac * xkc) / xthetazmi))2334 fmigrow(ji,jj) = (xbetac * xkc * ficmi(ji,jj)) / xthetazmi 2335 fmiexcr(ji,jj) = ficmi(ji,jj) * ((xbetan / (fmith(ji,jj) + tiny(fmith(ji,jj)))) - ((xbetac * xkc) / xthetazmi)) 2361 2336 endif 2362 2337 # if defined key_roam 2363 fmiresp = (xbetac * ficmi) - (xthetazmi * fmigrow)2338 fmiresp(ji,jj) = (xbetac * ficmi(ji,jj)) - (xthetazmi * fmigrow(ji,jj)) 2364 2339 # endif 2365 2340 … … 2368 2343 if (idf.eq.1.AND.idfval.eq.1) then 2369 2344 IF (lwp) write (numout,*) '------------------------------' 2370 IF (lwp) write (numout,*) 'fmi1(',jk,') = ', fmi1 2371 IF (lwp) write (numout,*) 'fmi(',jk,') = ', fmi 2372 IF (lwp) write (numout,*) 'fgmipn(',jk,') = ', fgmipn 2373 IF (lwp) write (numout,*) 'fgmid(',jk,') = ', fgmid 2374 IF (lwp) write (numout,*) 'fgmidc(',jk,') = ', fgmidc 2375 IF (lwp) write (numout,*) 'finmi(',jk,') = ', finmi 2376 IF (lwp) write (numout,*) 'ficmi(',jk,') = ', ficmi 2377 IF (lwp) write (numout,*) 'fstarmi(',jk,') = ', fstarmi 2378 IF (lwp) write (numout,*) 'fmith(',jk,') = ', fmith 2379 IF (lwp) write (numout,*) 'fmigrow(',jk,') = ', fmigrow 2380 IF (lwp) write (numout,*) 'fmiexcr(',jk,') = ', fmiexcr 2345 IF (lwp) write (numout,*) 'fmi1(',jk,') = ', fmi1(ji,jj) 2346 IF (lwp) write (numout,*) 'fmi(',jk,') = ', fmi(ji,jj) 2347 IF (lwp) write (numout,*) 'fgmipn(',jk,') = ', fgmipn(ji,jj) 2348 IF (lwp) write (numout,*) 'fgmid(',jk,') = ', fgmid(ji,jj) 2349 IF (lwp) write (numout,*) 'fgmidc(',jk,') = ', fgmidc(ji,jj) 2350 IF (lwp) write (numout,*) 'finmi(',jk,') = ', finmi(ji,jj) 2351 IF (lwp) write (numout,*) 'ficmi(',jk,') = ', ficmi(ji,jj) 2352 IF (lwp) write (numout,*) 'fstarmi(',jk,') = ', fstarmi(ji,jj) 2353 IF (lwp) write (numout,*) 'fmith(',jk,') = ', fmith(ji,jj) 2354 IF (lwp) write (numout,*) 'fmigrow(',jk,') = ', fmigrow(ji,jj) 2355 IF (lwp) write (numout,*) 'fmiexcr(',jk,') = ', fmiexcr(ji,jj) 2381 2356 # if defined key_roam 2382 IF (lwp) write (numout,*) 'fmiresp(',jk,') = ', fmiresp 2357 IF (lwp) write (numout,*) 'fmiresp(',jk,') = ', fmiresp(ji,jj) 2383 2358 # endif 2384 2359 endif … … 2389 2364 !!---------------------------------------------------------------------- 2390 2365 !! 2391 fme1 = (xkme * xkme) + (xpmepn * zphn * zphn) + (xpmepd * zphd * zphd) + &2392 (xpmezmi * zzmi * zzmi) + (xpmed * zdet * zdet)2393 fme = xgme * zzme / fme12394 fgmepn = fme * xpmepn * zphn * zphn!! grazing on non-diatoms2395 fgmepd = fme * xpmepd * zphd * zphd!! grazing on diatoms2396 fgmepds = fsin * fgmepd!! grazing on diatom silicon2397 fgmezmi = fme * xpmezmi * zzmi * zzmi!! grazing on microzooplankton2398 fgmed = fme * xpmed * zdet * zdet!! grazing on detrital nitrogen2366 fme1(ji,jj) = (xkme * xkme) + (xpmepn * zphn(ji,jj) * zphn(ji,jj)) + (xpmepd * zphd(ji,jj) * zphd(ji,jj)) + & 2367 (xpmezmi * zzmi(ji,jj) * zzmi(ji,jj)) + (xpmed * zdet(ji,jj) * zdet(ji,jj)) 2368 fme(ji,jj) = xgme * zzme(ji,jj) / fme1(ji,jj) 2369 fgmepn(ji,jj) = fme(ji,jj) * xpmepn * zphn(ji,jj) * zphn(ji,jj) !! grazing on non-diatoms 2370 fgmepd(ji,jj) = fme(ji,jj) * xpmepd * zphd(ji,jj) * zphd(ji,jj) !! grazing on diatoms 2371 fgmepds(ji,jj) = fsin(ji,jj) * fgmepd(ji,jj) !! grazing on diatom silicon 2372 fgmezmi(ji,jj) = fme(ji,jj) * xpmezmi * zzmi(ji,jj) * zzmi(ji,jj) !! grazing on microzooplankton 2373 fgmed(ji,jj) = fme(ji,jj) * xpmed * zdet(ji,jj) * zdet(ji,jj) !! grazing on detrital nitrogen 2399 2374 # if defined key_roam 2400 fgmedc = rsmall !acc2401 IF ( zdet .GT. rsmall ) fgmedc = (zdtc / (zdet + tiny(zdet))) * fgmed!! grazing on detrital carbon2375 fgmedc(ji,jj) = rsmall !acc 2376 IF ( zdet(ji,jj) .GT. rsmall ) fgmedc(ji,jj) = (zdtc(ji,jj) / (zdet(ji,jj) + tiny(zdet(ji,jj)))) * fgmed(ji,jj) !! grazing on detrital carbon 2402 2377 # else 2403 2378 !! AXY (26/11/08): implicit detrital carbon change 2404 fgmedc = xthetad * fgmed!! grazing on detrital carbon2379 fgmedc(ji,jj) = xthetad * fgmed(ji,jj) !! grazing on detrital carbon 2405 2380 # endif 2406 2381 !! 2407 2382 !! which translates to these incoming N and C fluxes 2408 finme = (1.0 - xphi) * (fgmepn + fgmepd + fgmezmi + fgmed)2409 ficme = (1.0 - xphi) * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + &2410 (xthetazmi * fgmezmi ) + fgmedc)2383 finme(ji,jj) = (1.0 - xphi) * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) 2384 ficme(ji,jj) = (1.0 - xphi) * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & 2385 (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) 2411 2386 !! 2412 2387 !! the ideal food C:N ratio for mesozooplankton 2413 2388 !! xbetan = 0.77; xthetaz = 5.625; xbetac = 0.64; xkc = 0.80 2414 fstarme = (xbetan * xthetazme) / (xbetac * xkc)2389 fstarme(ji,jj) = (xbetan * xthetazme) / (xbetac * xkc) 2415 2390 !! 2416 2391 !! process these to determine proportioning of grazed N and C 2417 2392 !! (since there is no explicit consideration of respiration, 2418 2393 !! only growth and excretion are calculated here) 2419 fmeth = (ficme / (finme + tiny(finme)))2420 if (fmeth .ge.fstarme) then2421 fmegrow = xbetan * finme2422 fmeexcr = 0.02394 fmeth(ji,jj) = (ficme(ji,jj) / (finme(ji,jj) + tiny(finme(ji,jj)))) 2395 if (fmeth(ji,jj).ge.fstarme(ji,jj)) then 2396 fmegrow(ji,jj) = xbetan * finme(ji,jj) 2397 fmeexcr(ji,jj) = 0.0 2423 2398 else 2424 fmegrow = (xbetac * xkc * ficme) / xthetazme2425 fmeexcr = ficme * ((xbetan / (fmeth + tiny(fmeth))) - ((xbetac * xkc) / xthetazme))2399 fmegrow(ji,jj) = (xbetac * xkc * ficme(ji,jj)) / xthetazme 2400 fmeexcr(ji,jj) = ficme(ji,jj) * ((xbetan / (fmeth(ji,jj) + tiny(fmeth(ji,jj)))) - ((xbetac * xkc) / xthetazme)) 2426 2401 endif 2427 2402 # if defined key_roam 2428 fmeresp = (xbetac * ficme) - (xthetazme * fmegrow)2403 fmeresp(ji,jj) = (xbetac * ficme(ji,jj)) - (xthetazme * fmegrow(ji,jj)) 2429 2404 # endif 2430 2405 … … 2433 2408 if (idf.eq.1.AND.idfval.eq.1) then 2434 2409 IF (lwp) write (numout,*) '------------------------------' 2435 IF (lwp) write (numout,*) 'fme1(',jk,') = ', fme1 2436 IF (lwp) write (numout,*) 'fme(',jk,') = ', fme 2437 IF (lwp) write (numout,*) 'fgmepn(',jk,') = ', fgmepn 2438 IF (lwp) write (numout,*) 'fgmepd(',jk,') = ', fgmepd 2439 IF (lwp) write (numout,*) 'fgmepds(',jk,') = ', fgmepds 2440 IF (lwp) write (numout,*) 'fgmezmi(',jk,') = ', fgmezmi 2441 IF (lwp) write (numout,*) 'fgmed(',jk,') = ', fgmed 2442 IF (lwp) write (numout,*) 'fgmedc(',jk,') = ', fgmedc 2443 IF (lwp) write (numout,*) 'finme(',jk,') = ', finme 2444 IF (lwp) write (numout,*) 'ficme(',jk,') = ', ficme 2445 IF (lwp) write (numout,*) 'fstarme(',jk,') = ', fstarme 2446 IF (lwp) write (numout,*) 'fmeth(',jk,') = ', fmeth 2447 IF (lwp) write (numout,*) 'fmegrow(',jk,') = ', fmegrow 2448 IF (lwp) write (numout,*) 'fmeexcr(',jk,') = ', fmeexcr 2410 IF (lwp) write (numout,*) 'fme1(',jk,') = ', fme1(ji,jj) 2411 IF (lwp) write (numout,*) 'fme(',jk,') = ', fme(ji,jj) 2412 IF (lwp) write (numout,*) 'fgmepn(',jk,') = ', fgmepn(ji,jj) 2413 IF (lwp) write (numout,*) 'fgmepd(',jk,') = ', fgmepd(ji,jj) 2414 IF (lwp) write (numout,*) 'fgmepds(',jk,') = ', fgmepds(ji,jj) 2415 IF (lwp) write (numout,*) 'fgmezmi(',jk,') = ', fgmezmi(ji,jj) 2416 IF (lwp) write (numout,*) 'fgmed(',jk,') = ', fgmed(ji,jj) 2417 IF (lwp) write (numout,*) 'fgmedc(',jk,') = ', fgmedc(ji,jj) 2418 IF (lwp) write (numout,*) 'finme(',jk,') = ', finme(ji,jj) 2419 IF (lwp) write (numout,*) 'ficme(',jk,') = ', ficme(ji,jj) 2420 IF (lwp) write (numout,*) 'fstarme(',jk,') = ', fstarme(ji,jj) 2421 IF (lwp) write (numout,*) 'fmeth(',jk,') = ', fmeth(ji,jj) 2422 IF (lwp) write (numout,*) 'fmegrow(',jk,') = ', fmegrow(ji,jj) 2423 IF (lwp) write (numout,*) 'fmeexcr(',jk,') = ', fmeexcr(ji,jj) 2449 2424 # if defined key_roam 2450 IF (lwp) write (numout,*) 'fmeresp(',jk,') = ', fmeresp 2425 IF (lwp) write (numout,*) 'fmeresp(',jk,') = ', fmeresp(ji,jj) 2451 2426 # endif 2452 2427 endif 2453 2428 # endif 2454 2429 2455 fzmi_i(ji,jj) = fzmi_i(ji,jj) + f thk* ( &2456 fgmipn + fgmid)2457 fzmi_o(ji,jj) = fzmi_o(ji,jj) + f thk* ( &2458 fmigrow + (xphi * (fgmipn + fgmid)) + fmiexcr + ((1.0 - xbetan) * finmi) )2459 fzme_i(ji,jj) = fzme_i(ji,jj) + f thk* ( &2460 fgmepn + fgmepd + fgmezmi + fgmed)2461 fzme_o(ji,jj) = fzme_o(ji,jj) + f thk* ( &2462 fmegrow + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) + fmeexcr + ((1.0 - xbetan) * finme) )2430 fzmi_i(ji,jj) = fzmi_i(ji,jj) + fse3t(ji,jj,jk) * ( & 2431 fgmipn(ji,jj) + fgmid(ji,jj) ) 2432 fzmi_o(ji,jj) = fzmi_o(ji,jj) + fse3t(ji,jj,jk) * ( & 2433 fmigrow(ji,jj) + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj))) + fmiexcr(ji,jj) + ((1.0 - xbetan) * finmi(ji,jj)) ) 2434 fzme_i(ji,jj) = fzme_i(ji,jj) + fse3t(ji,jj,jk) * ( & 2435 fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj) ) 2436 fzme_o(ji,jj) = fzme_o(ji,jj) + fse3t(ji,jj,jk) * ( & 2437 fmegrow(ji,jj) + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj))) + fmeexcr(ji,jj) + ((1.0 - xbetan) * finme(ji,jj)) ) 2463 2438 2464 2439 !!---------------------------------------------------------------------- … … 2467 2442 !!---------------------------------------------------------------------- 2468 2443 !! 2469 fdpn2 = xmetapn * zphn2470 fdpd2 = xmetapd * zphd2471 fdpds2 = xmetapd * zpds2472 fdzmi2 = xmetazmi * zzmi2473 fdzme2 = xmetazme * zzme2444 fdpn2(ji,jj) = xmetapn * zphn(ji,jj) 2445 fdpd2(ji,jj) = xmetapd * zphd(ji,jj) 2446 fdpds2(ji,jj) = xmetapd * zpds(ji,jj) 2447 fdzmi2(ji,jj) = xmetazmi * zzmi(ji,jj) 2448 fdzme2(ji,jj) = xmetazme * zzme(ji,jj) 2474 2449 2475 2450 !!---------------------------------------------------------------------- … … 2480 2455 !! 2481 2456 !! non-diatom phytoplankton 2482 if (jmpn.eq.1) fdpn = xmpn * zphn!! linear2483 if (jmpn.eq.2) fdpn = xmpn * zphn * zphn!! quadratic2484 if (jmpn.eq.3) fdpn = xmpn * zphn* & !! hyperbolic2485 (zphn / (xkphn + zphn))2486 if (jmpn.eq.4) fdpn = xmpn * zphn* & !! sigmoid2487 ((zphn * zphn) / (xkphn + (zphn * zphn)))2457 if (jmpn.eq.1) fdpn(ji,jj) = xmpn * zphn(ji,jj) !! linear 2458 if (jmpn.eq.2) fdpn(ji,jj) = xmpn * zphn(ji,jj) * zphn(ji,jj) !! quadratic 2459 if (jmpn.eq.3) fdpn(ji,jj) = xmpn * zphn(ji,jj) * & !! hyperbolic 2460 (zphn(ji,jj) / (xkphn + zphn(ji,jj))) 2461 if (jmpn.eq.4) fdpn(ji,jj) = xmpn * zphn(ji,jj) * & !! sigmoid 2462 ((zphn(ji,jj) * zphn(ji,jj)) / (xkphn + (zphn(ji,jj) * zphn(ji,jj)))) 2488 2463 !! 2489 2464 !! diatom phytoplankton 2490 if (jmpd.eq.1) fdpd = xmpd * zphd!! linear2491 if (jmpd.eq.2) fdpd = xmpd * zphd * zphd!! quadratic2492 if (jmpd.eq.3) fdpd = xmpd * zphd* & !! hyperbolic2493 (zphd / (xkphd + zphd))2494 if (jmpd.eq.4) fdpd = xmpd * zphd* & !! sigmoid2495 ((zphd * zphd) / (xkphd + (zphd * zphd)))2496 fdpds = fdpd * fsin2465 if (jmpd.eq.1) fdpd(ji,jj) = xmpd * zphd(ji,jj) !! linear 2466 if (jmpd.eq.2) fdpd(ji,jj) = xmpd * zphd(ji,jj) * zphd(ji,jj) !! quadratic 2467 if (jmpd.eq.3) fdpd(ji,jj) = xmpd * zphd(ji,jj) * & !! hyperbolic 2468 (zphd(ji,jj) / (xkphd + zphd(ji,jj))) 2469 if (jmpd.eq.4) fdpd(ji,jj) = xmpd * zphd(ji,jj) * & !! sigmoid 2470 ((zphd(ji,jj) * zphd(ji,jj)) / (xkphd + (zphd(ji,jj) * zphd(ji,jj)))) 2471 fdpds(ji,jj) = fdpd(ji,jj) * fsin(ji,jj) 2497 2472 !! 2498 2473 !! microzooplankton 2499 if (jmzmi.eq.1) fdzmi = xmzmi * zzmi!! linear2500 if (jmzmi.eq.2) fdzmi = xmzmi * zzmi * zzmi!! quadratic2501 if (jmzmi.eq.3) fdzmi = xmzmi * zzmi* & !! hyperbolic2502 (zzmi / (xkzmi + zzmi))2503 if (jmzmi.eq.4) fdzmi = xmzmi * zzmi* & !! sigmoid2504 ((zzmi * zzmi) / (xkzmi + (zzmi * zzmi)))2474 if (jmzmi.eq.1) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) !! linear 2475 if (jmzmi.eq.2) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * zzmi(ji,jj) !! quadratic 2476 if (jmzmi.eq.3) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * & !! hyperbolic 2477 (zzmi(ji,jj) / (xkzmi + zzmi(ji,jj))) 2478 if (jmzmi.eq.4) fdzmi(ji,jj) = xmzmi * zzmi(ji,jj) * & !! sigmoid 2479 ((zzmi(ji,jj) * zzmi(ji,jj)) / (xkzmi + (zzmi(ji,jj) * zzmi(ji,jj)))) 2505 2480 !! 2506 2481 !! mesozooplankton 2507 if (jmzme.eq.1) fdzme = xmzme * zzme!! linear2508 if (jmzme.eq.2) fdzme = xmzme * zzme * zzme!! quadratic2509 if (jmzme.eq.3) fdzme = xmzme * zzme* & !! hyperbolic2510 (zzme / (xkzme + zzme))2511 if (jmzme.eq.4) fdzme = xmzme * zzme* & !! sigmoid2512 ((zzme * zzme) / (xkzme + (zzme * zzme)))2482 if (jmzme.eq.1) fdzme(ji,jj) = xmzme * zzme(ji,jj) !! linear 2483 if (jmzme.eq.2) fdzme(ji,jj) = xmzme * zzme(ji,jj) * zzme(ji,jj) !! quadratic 2484 if (jmzme.eq.3) fdzme(ji,jj) = xmzme * zzme(ji,jj) * & !! hyperbolic 2485 (zzme(ji,jj) / (xkzme + zzme(ji,jj))) 2486 if (jmzme.eq.4) fdzme(ji,jj) = xmzme * zzme(ji,jj) * & !! sigmoid 2487 ((zzme(ji,jj) * zzme(ji,jj)) / (xkzme + (zzme(ji,jj) * zzme(ji,jj)))) 2513 2488 2514 2489 !!---------------------------------------------------------------------- … … 2519 2494 if (jmd.eq.1) then 2520 2495 !! temperature-dependent 2521 fdd = xmd * fun_T * zdet2496 fdd(ji,jj) = xmd * fun_T(ji,jj) * zdet(ji,jj) 2522 2497 # if defined key_roam 2523 fddc = xmdc * fun_T * zdtc2498 fddc(ji,jj) = xmdc * fun_T(ji,jj) * zdtc(ji,jj) 2524 2499 # endif 2525 2500 elseif (jmd.eq.2) then 2526 2501 !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 2527 2502 !! temperature-dependent 2528 fdd = xmd * fun_Q10 * zdet2503 fdd(ji,jj) = xmd * fun_Q10(ji,jj) * zdet(ji,jj) 2529 2504 #if defined key_roam 2530 fddc = xmdc * fun_Q10 * zdtc2505 fddc(ji,jj) = xmdc * fun_Q10(ji,jj) * zdtc(ji,jj) 2531 2506 #endif 2532 2507 else 2533 2508 !! temperature-independent 2534 fdd = xmd * zdet2509 fdd(ji,jj) = xmd * zdet(ji,jj) 2535 2510 # if defined key_roam 2536 fddc = xmdc * zdtc2511 fddc(ji,jj) = xmdc * zdtc(ji,jj) 2537 2512 # endif 2538 2513 endif 2539 2514 !! 2540 2515 !! AXY (22/07/09): accelerate detrital remineralisation in the bottom box 2541 if ((jk.eq. jmbathy) .and. jsfd.eq.1) then2542 fdd = 1.0 * zdet2516 if ((jk.eq.mbathy(ji,jj)) .and. jsfd.eq.1) then 2517 fdd(ji,jj) = 1.0 * zdet(ji,jj) 2543 2518 # if defined key_roam 2544 fddc = 1.0 * zdtc2519 fddc(ji,jj) = 1.0 * zdtc(ji,jj) 2545 2520 # endif 2546 2521 endif … … 2550 2525 if (idf.eq.1.AND.idfval.eq.1) then 2551 2526 IF (lwp) write (numout,*) '------------------------------' 2552 IF (lwp) write (numout,*) 'fdpn2(',jk,') = ', fdpn2 2553 IF (lwp) write (numout,*) 'fdpd2(',jk,') = ', fdpd2 2554 IF (lwp) write (numout,*) 'fdpds2(',jk,')= ', fdpds2 2555 IF (lwp) write (numout,*) 'fdzmi2(',jk,')= ', fdzmi2 2556 IF (lwp) write (numout,*) 'fdzme2(',jk,')= ', fdzme2 2557 IF (lwp) write (numout,*) 'fdpn(',jk,') = ', fdpn 2558 IF (lwp) write (numout,*) 'fdpd(',jk,') = ', fdpd 2559 IF (lwp) write (numout,*) 'fdpds(',jk,') = ', fdpds 2560 IF (lwp) write (numout,*) 'fdzmi(',jk,') = ', fdzmi 2561 IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme 2562 IF (lwp) write (numout,*) 'fdd(',jk,') = ', fdd 2527 IF (lwp) write (numout,*) 'fdpn2(',jk,') = ', fdpn2(ji,jj) 2528 IF (lwp) write (numout,*) 'fdpd2(',jk,') = ', fdpd2(ji,jj) 2529 IF (lwp) write (numout,*) 'fdpds2(',jk,')= ', fdpds2(ji,jj) 2530 IF (lwp) write (numout,*) 'fdzmi2(',jk,')= ', fdzmi2(ji,jj) 2531 IF (lwp) write (numout,*) 'fdzme2(',jk,')= ', fdzme2(ji,jj) 2532 IF (lwp) write (numout,*) 'fdpn(',jk,') = ', fdpn(ji,jj) 2533 IF (lwp) write (numout,*) 'fdpd(',jk,') = ', fdpd(ji,jj) 2534 IF (lwp) write (numout,*) 'fdpds(',jk,') = ', fdpds(ji,jj) 2535 IF (lwp) write (numout,*) 'fdzmi(',jk,') = ', fdzmi(ji,jj) 2536 IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme(ji,jj) 2537 IF (lwp) write (numout,*) 'fdd(',jk,') = ', fdd(ji,jj) 2563 2538 # if defined key_roam 2564 IF (lwp) write (numout,*) 'fddc(',jk,') = ', fddc 2539 IF (lwp) write (numout,*) 'fddc(',jk,') = ', fddc(ji,jj) 2565 2540 # endif 2566 2541 endif … … 2573 2548 !!---------------------------------------------------------------------- 2574 2549 !! 2575 if ((jk.eq. jmbathy) .and. jorgben.eq.1) then2550 if ((jk.eq.mbathy(ji,jj)) .and. jorgben.eq.1) then 2576 2551 !! this is the BOTTOM OCEAN BOX -> into the benthic pool! 2577 2552 !! 2578 f_sbenin_n(ji,jj) = (zdet * vsed * 86400.)2579 f_sbenin_fe(ji,jj) = (zdet * vsed * 86400. * xrfn)2553 f_sbenin_n(ji,jj) = (zdet(ji,jj) * vsed * 86400.) 2554 f_sbenin_fe(ji,jj) = (zdet(ji,jj) * vsed * 86400. * xrfn) 2580 2555 # if defined key_roam 2581 f_sbenin_c(ji,jj) = (zdtc * vsed * 86400.)2556 f_sbenin_c(ji,jj) = (zdtc(ji,jj) * vsed * 86400.) 2582 2557 # else 2583 f_sbenin_c(ji,jj) = (zdet * vsed * 86400. * xthetad)2558 f_sbenin_c(ji,jj) = (zdet(ji,jj) * vsed * 86400. * xthetad) 2584 2559 # endif 2585 2560 endif … … 2594 2569 !! 2595 2570 !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 2596 xFeT = zfer * 1.e32571 xFeT = zfer(ji,jj) * 1.e3 2597 2572 !! 2598 2573 !! calculate fractionation (based on Diat-HadOCC; in turn based on Parekh et al., 2004) … … 2608 2583 !! "free" iron concentration (and convert to mmol Fe / m3) 2609 2584 xFeF = (xFeT - xFeL) * 1.e-3 2610 xFree(ji,jj)= xFeF / (zfer + tiny(zfer))2585 xFree(ji,jj)= xFeF / (zfer(ji,jj) + tiny(zfer(ji,jj))) 2611 2586 !! 2612 2587 !! scavenging of iron (multiple schemes); I'm only really happy with the … … 2621 2596 !!---------------------------------------------------------------------- 2622 2597 !! 2623 ffescav = xk_sc_Fe * xFeF ! = mmol/m3/d2598 ffescav(ji,jj) = xk_sc_Fe * xFeF ! = mmol/m3/d 2624 2599 !! 2625 2600 !!---------------------------------------------------------------------- … … 2652 2627 !! scale of 1 day; seems reasonable to me ... (famous last words) 2653 2628 !! 2654 ffescav = ffescav+ fdeltaFe ! = mmol/m3/d2629 ffescav(ji,jj) = ffescav(ji,jj) + fdeltaFe ! = mmol/m3/d 2655 2630 !! 2656 2631 # if defined key_deep_fe_fix … … 2670 2645 !! justifying this in a paper though! 2671 2646 !! 2672 if ((f dep.gt.1000.) .and. (xFeT.lt.0.5)) then2673 ffescav = 0.2647 if ((fsdepw(ji,jj,jk).gt.1000.) .and. (xFeT.lt.0.5)) then 2648 ffescav(ji,jj) = 0. 2674 2649 endif 2675 2650 # endif … … 2684 2659 !! 2685 2660 !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 2686 xFeT = zfer * 1.e32661 xFeT = zfer(ji,jj) * 1.e3 2687 2662 !! 2688 2663 !! this has a base scavenging rate (12% / y) which is modified by local … … 2713 2688 !! by a magic factor, 0.002, to get it into nmol C / cm2 / s 2714 2689 !! 2715 fscal_part = ((xthetapn * zphn ) + (xthetapd * zphd) + (xthetazmi * zzmi) + &2716 (xthetazme * zzme ) + (xthetad * zdet)) * 0.0022690 fscal_part = ((xthetapn * zphn(ji,jj)) + (xthetapd * zphd(ji,jj)) + (xthetazmi * zzmi(ji,jj)) + & 2691 (xthetazme * zzme(ji,jj)) + (xthetad * zdet(ji,jj))) * 0.002 2717 2692 !! 2718 2693 !! calculate scaling factor for base scavenging rate … … 2748 2723 !! apply the calculated scavenging rate ... 2749 2724 !! 2750 ffescav = fscal_scav * zfer2725 ffescav(ji,jj) = fscal_scav * zfer(ji,jj) 2751 2726 !! 2752 2727 elseif (jiron.eq.3) then … … 2762 2737 !! 2763 2738 !! total iron concentration (mmol Fe / m3 -> umol Fe / m3) 2764 xFeT = zfer * 1.e32739 xFeT = zfer(ji,jj) * 1.e3 2765 2740 !! 2766 2741 !! this has a base scavenging rate which is modified by local … … 2822 2797 !! apply the calculated scavenging rate ... 2823 2798 !! 2824 ffescav = fscal_scav * zfer2799 ffescav(ji,jj) = fscal_scav * zfer(ji,jj) 2825 2800 !! 2826 2801 elseif (jiron.eq.4) then … … 2861 2836 !! 2862 2837 !! sum these two terms together 2863 ffescav = xORGscav + xINORGscav2838 ffescav(ji,jj) = xORGscav + xINORGscav 2864 2839 else 2865 2840 !!---------------------------------------------------------------------- … … 2869 2844 !! you fool! 2870 2845 !!---------------------------------------------------------------------- 2871 ffescav = 0.2846 ffescav(ji,jj) = 0. 2872 2847 endif 2873 2848 … … 2879 2854 if (jk.eq.1) then 2880 2855 !! zirondep is in mmol-Fe / m2 / day 2881 !! ffetop is in mmol-dissolved-Fe / m3 / day2882 ffetop = zirondep(ji,jj) * xfe_sol / fthk2856 !! ffetop(ji,jj) is in mmol-dissolved-Fe / m3 / day 2857 ffetop(ji,jj) = zirondep(ji,jj) * xfe_sol / fse3t(ji,jj,jk) 2883 2858 else 2884 ffetop = 0.02859 ffetop(ji,jj) = 0.0 2885 2860 endif 2886 2861 !! … … 2888 2863 !! AXY (10/07/12): amended to only apply sedimentary flux up to ~500 m down 2889 2864 !! if (jk.eq.(mbathy(ji,jj)-1).AND.jk.lt.i1100) then 2890 if ((jk.eq. jmbathy).AND.jk.le.i0500) then2865 if ((jk.eq.mbathy(ji,jj)).AND.jk.le.i0500) then 2891 2866 !! Moore et al. (2004) cite a coastal California value of 5 umol/m2/d, but adopt a 2892 2867 !! global value of 2 umol/m2/d for all areas < 1100 m; here we use this latter value 2893 2868 !! but apply it everywhere 2894 2869 !! AXY (21/07/09): actually, let's just apply it below 1100 m (levels 1-37) 2895 ffebot = (xfe_sed / fthk)2870 ffebot(ji,jj) = (xfe_sed / fse3t(ji,jj,jk)) 2896 2871 else 2897 ffebot = 0.02872 ffebot(ji,jj) = 0.0 2898 2873 endif 2899 2874 … … 2903 2878 !! iron addition at the seafloor is still permitted with the idea that this extra 2904 2879 !! iron will be removed by the restoration away from the source 2905 !! ffescav = 0.02906 !! ffetop = 0.02907 !! ffebot = 0.02880 !! ffescav(ji,jj) = 0.0 2881 !! ffetop(ji,jj) = 0.0 2882 !! ffebot(ji,jj) = 0.0 2908 2883 2909 2884 # if defined key_debug_medusa … … 2913 2888 IF (lwp) write (numout,*) 'xfe_sol = ', xfe_sol 2914 2889 IF (lwp) write (numout,*) 'xfe_mass = ', xfe_mass 2915 IF (lwp) write (numout,*) 'ffetop(',jk,') = ', ffetop 2916 IF (lwp) write (numout,*) 'ffebot(',jk,') = ', ffebot 2890 IF (lwp) write (numout,*) 'ffetop(',jk,') = ', ffetop(ji,jj) 2891 IF (lwp) write (numout,*) 'ffebot(',jk,') = ', ffebot(ji,jj) 2917 2892 IF (lwp) write (numout,*) 'xFree(',jk,') = ', xFree(ji,jj) 2918 IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav 2893 IF (lwp) write (numout,*) 'ffescav(',jk,') = ', ffescav(ji,jj) 2919 2894 endif 2920 2895 # endif … … 2925 2900 !! 2926 2901 !! diatom frustule dissolution 2927 fsdiss = xsdiss * zpds2902 fsdiss(ji,jj) = xsdiss * zpds(ji,jj) 2928 2903 2929 2904 # if defined key_debug_medusa … … 2931 2906 if (idf.eq.1.AND.idfval.eq.1) then 2932 2907 IF (lwp) write (numout,*) '------------------------------' 2933 IF (lwp) write (numout,*) 'fsdiss(',jk,') = ', fsdiss 2908 IF (lwp) write (numout,*) 'fsdiss(',jk,') = ', fsdiss(ji,jj) 2934 2909 endif 2935 2910 # endif … … 2941 2916 !! to allow the split between fast and slow detritus to be 2942 2917 !! diagnosed 2943 fslown = fdpn + fdzmi + ((1.0 - xfdfrac1) * fdpd) + &2944 ((1.0 - xfdfrac2) * fdzme ) + ((1.0 - xbetan) * (finmi + finme))2918 fslown(ji,jj) = fdpn(ji,jj) + fdzmi(ji,jj) + ((1.0 - xfdfrac1) * fdpd(ji,jj)) + & 2919 ((1.0 - xfdfrac2) * fdzme(ji,jj)) + ((1.0 - xbetan) * (finmi(ji,jj) + finme(ji,jj))) 2945 2920 !! 2946 2921 !! this variable records the slow detrital sinking flux at this … … 2948 2923 !! standard depths in the diagnostic outputs; needs to be 2949 2924 !! adjusted from per second to per day because of parameter vsed 2950 fslownflux(ji,jj) = zdet * vsed * 86400.2925 fslownflux(ji,jj) = zdet(ji,jj) * vsed * 86400. 2951 2926 # if defined key_roam 2952 2927 !! 2953 2928 !! and the same for detrital carbon 2954 fslowc = (xthetapn * fdpn) + (xthetazmi * fdzmi) + &2955 (xthetapd * (1.0 - xfdfrac1) * fdpd ) + &2956 (xthetazme * (1.0 - xfdfrac2) * fdzme ) + &2957 ((1.0 - xbetac) * (ficmi + ficme))2929 fslowc(ji,jj) = (xthetapn * fdpn(ji,jj)) + (xthetazmi * fdzmi(ji,jj)) + & 2930 (xthetapd * (1.0 - xfdfrac1) * fdpd(ji,jj)) + & 2931 (xthetazme * (1.0 - xfdfrac2) * fdzme(ji,jj)) + & 2932 ((1.0 - xbetac) * (ficmi(ji,jj) + ficme(ji,jj))) 2958 2933 !! 2959 2934 !! this variable records the slow detrital sinking flux at this … … 2961 2936 !! standard depths in the diagnostic outputs; needs to be 2962 2937 !! adjusted from per second to per day because of parameter vsed 2963 fslowcflux(ji,jj) = zdtc * vsed * 86400.2938 fslowcflux(ji,jj) = zdtc(ji,jj) * vsed * 86400. 2964 2939 # endif 2965 2940 … … 2975 2950 !! 2976 2951 !! nitrogen 2977 fregen = (( (xphi * (fgmipn + fgmid)) + & ! messy feeding2978 (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) + & ! messy feeding2979 fmiexcr + fmeexcr + fdd+ & ! excretion + D remin.2980 fdpn2 + fdpd2 + fdzmi2 + fdzme2) * fthk) ! linear mortality2952 fregen(ji,jj) = (( (xphi * (fgmipn(ji,jj) + fgmid(ji,jj))) + & ! messy feeding 2953 (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj))) + & ! messy feeding 2954 fmiexcr(ji,jj) + fmeexcr(ji,jj) + fdd(ji,jj) + & ! excretion + D remin. 2955 fdpn2(ji,jj) + fdpd2(ji,jj) + fdzmi2(ji,jj) + fdzme2(ji,jj)) * fse3t(ji,jj,jk)) ! linear mortality 2981 2956 !! 2982 2957 !! silicon 2983 fregensi = (( fsdiss + ((1.0 - xfdfrac1) * fdpds) + & ! dissolution + non-lin. mortality2984 ((1.0 - xfdfrac3) * fgmepds ) + & ! egestion by zooplankton2985 fdpds2 ) * fthk) ! linear mortality2958 fregensi(ji,jj) = (( fsdiss(ji,jj) + ((1.0 - xfdfrac1) * fdpds(ji,jj)) + & ! dissolution + non-lin. mortality 2959 ((1.0 - xfdfrac3) * fgmepds(ji,jj)) + & ! egestion by zooplankton 2960 fdpds2(ji,jj)) * fse3t(ji,jj,jk)) ! linear mortality 2986 2961 # if defined key_roam 2987 2962 !! 2988 2963 !! carbon 2989 fregenc = (( (xphi * ((xthetapn * fgmipn) + fgmidc)) + & ! messy feeding 2990 (xphi * ((xthetapn * fgmepn) + (xthetapd * fgmepd) + & ! messy feeding 2991 (xthetazmi * fgmezmi) + fgmedc)) + & ! messy feeding 2992 fmiresp + fmeresp + fddc + & ! respiration + D remin. 2993 (xthetapn * fdpn2) + (xthetapd * fdpd2) + & ! linear mortality 2994 (xthetazmi * fdzmi2) + (xthetazme * fdzme2)) * fthk) ! linear mortality 2964 ! Doesn't look this is used - marc 10/4/17 2965 ! fregenc(ji,jj) = (( (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj))) + & ! messy feeding 2966 ! (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & ! messy feeding 2967 ! (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj))) + & ! messy feeding 2968 ! fmiresp(ji,jj) + fmeresp(ji,jj) + fddc(ji,jj) + & ! respiration + D remin. 2969 ! (xthetapn * fdpn2(ji,jj)) + (xthetapd * fdpd2(ji,jj)) + & ! linear mortality 2970 ! (xthetazmi * fdzmi2(ji,jj)) + (xthetazme * fdzme2(ji,jj))) * fse3t(ji,jj,jk)) ! linear mortality 2995 2971 # endif 2996 2972 … … 3005 2981 !! 3006 2982 !! nitrogen: diatom and mesozooplankton mortality 3007 ftempn = b0 * ((xfdfrac1 * fdpd) + (xfdfrac2 * fdzme))2983 ftempn(ji,jj) = b0 * ((xfdfrac1 * fdpd(ji,jj)) + (xfdfrac2 * fdzme(ji,jj))) 3008 2984 !! 3009 2985 !! silicon: diatom mortality and grazed diatoms 3010 ftempsi = b0 * ((xfdfrac1 * fdpds) + (xfdfrac3 * fgmepds))2986 ftempsi(ji,jj) = b0 * ((xfdfrac1 * fdpds(ji,jj)) + (xfdfrac3 * fgmepds(ji,jj))) 3011 2987 !! 3012 2988 !! iron: diatom and mesozooplankton mortality 3013 ftempfe = b0 * (((xfdfrac1 * fdpd) + (xfdfrac2 * fdzme)) * xrfn)2989 ftempfe(ji,jj) = b0 * (((xfdfrac1 * fdpd(ji,jj)) + (xfdfrac2 * fdzme(ji,jj))) * xrfn) 3014 2990 !! 3015 2991 !! carbon: diatom and mesozooplankton mortality 3016 ftempc = b0 * ((xfdfrac1 * xthetapd * fdpd) + &3017 (xfdfrac2 * xthetazme * fdzme ))2992 ftempc(ji,jj) = b0 * ((xfdfrac1 * xthetapd * fdpd(ji,jj)) + & 2993 (xfdfrac2 * xthetazme * fdzme(ji,jj))) 3018 2994 !! 3019 2995 # if defined key_roam 3020 2996 if (jrratio.eq.0) then 3021 2997 !! CaCO3: latitudinally-based fraction of total primary production 3022 !! absolute latitude of current grid cell3023 flat = abs(gphit(ji,jj))3024 2998 !! 0.10 at equator; 0.02 at pole 3025 fcaco3 = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0))2999 fcaco3(ji,jj) = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 3026 3000 elseif (jrratio.eq.1) then 3027 3001 !! CaCO3: Ridgwell et al. (2007) submodel, version 1 … … 3032 3006 fq1 = 0. 3033 3007 endif 3034 fcaco3 = xridg_r0 * fq13008 fcaco3(ji,jj) = xridg_r0 * fq1 3035 3009 elseif (jrratio.eq.2) then 3036 3010 !! CaCO3: Ridgwell et al. (2007) submodel, version 2 … … 3041 3015 fq1 = 0. 3042 3016 endif 3043 fcaco3 = xridg_r0 * fq13017 fcaco3(ji,jj) = xridg_r0 * fq1 3044 3018 endif 3045 3019 # else 3046 3020 !! CaCO3: latitudinally-based fraction of total primary production 3047 !! absolute latitude of current grid cell3048 flat = abs(gphit(ji,jj))3049 3021 !! 0.10 at equator; 0.02 at pole 3050 fcaco3 = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - flat) / 90.0))3022 fcaco3(ji,jj) = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 3051 3023 # endif 3052 3024 !! AXY (09/03/09): convert CaCO3 production from function of … … 3056 3028 !! chlorophyll to an export flux for which they apply conversion 3057 3029 !! factors to estimate the various elemental fractions (Si, Ca) 3058 ftempca = ftempc * fcaco33030 ftempca(ji,jj) = ftempc(ji,jj) * fcaco3(ji,jj) 3059 3031 3060 3032 # if defined key_debug_medusa 3061 3033 !! integrate total fast detritus production 3062 3034 if (idf.eq.1) then 3063 fifd_n(ji,jj) = fifd_n(ji,jj) + (ftempn * fthk)3064 fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi * fthk)3065 fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe * fthk)3035 fifd_n(ji,jj) = fifd_n(ji,jj) + (ftempn(ji,jj) * fse3t(ji,jj,jk)) 3036 fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 3037 fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 3066 3038 # if defined key_roam 3067 fifd_c(ji,jj) = fifd_c(ji,jj) + (ftempc * fthk)3039 fifd_c(ji,jj) = fifd_c(ji,jj) + (ftempc(ji,jj) * fse3t(ji,jj,jk)) 3068 3040 # endif 3069 3041 endif … … 3072 3044 if (idf.eq.1.AND.idfval.eq.1) then 3073 3045 IF (lwp) write (numout,*) '------------------------------' 3074 IF (lwp) write (numout,*) 'fdpd(',jk,') = ', fdpd 3075 IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme 3076 IF (lwp) write (numout,*) 'ftempn(',jk,') = ', ftempn 3077 IF (lwp) write (numout,*) 'ftempsi(',jk,') = ', ftempsi 3078 IF (lwp) write (numout,*) 'ftempfe(',jk,') = ', ftempfe 3079 IF (lwp) write (numout,*) 'ftempc(',jk,') = ', ftempc 3080 IF (lwp) write (numout,*) 'ftempca(',jk,') = ', ftempca 3081 IF (lwp) write (numout,*) 'flat(',jk,') = ', flat3082 IF (lwp) write (numout,*) 'fcaco3(',jk,') = ', fcaco3 3046 IF (lwp) write (numout,*) 'fdpd(',jk,') = ', fdpd(ji,jj) 3047 IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme(ji,jj) 3048 IF (lwp) write (numout,*) 'ftempn(',jk,') = ', ftempn(ji,jj) 3049 IF (lwp) write (numout,*) 'ftempsi(',jk,') = ', ftempsi(ji,jj) 3050 IF (lwp) write (numout,*) 'ftempfe(',jk,') = ', ftempfe(ji,jj) 3051 IF (lwp) write (numout,*) 'ftempc(',jk,') = ', ftempc(ji,jj) 3052 IF (lwp) write (numout,*) 'ftempca(',jk,') = ', ftempca(ji,jj) 3053 IF (lwp) write (numout,*) 'flat(',jk,') = ', abs(gphit(ji,jj)) 3054 IF (lwp) write (numout,*) 'fcaco3(',jk,') = ', fcaco3(ji,jj) 3083 3055 endif 3084 3056 # endif … … 3151 3123 !! this is the SURFACE OCEAN BOX (no remineralisation) 3152 3124 !! 3153 freminc = 0.03154 freminn = 0.03155 freminfe = 0.03156 freminsi = 0.03157 freminca = 0.03158 elseif (jk.le. jmbathy) then3125 freminc(ji,jj) = 0.0 3126 freminn(ji,jj) = 0.0 3127 freminfe(ji,jj) = 0.0 3128 freminsi(ji,jj) = 0.0 3129 freminca(ji,jj) = 0.0 3130 elseif (jk.le.mbathy(ji,jj)) then 3159 3131 !! this is an OCEAN BOX (remineralise some material) 3160 3132 !! … … 3162 3134 if (jocalccd.eq.0) then 3163 3135 !! use default CCD field 3164 fccd_dep = ocal_ccd(ji,jj)3136 fccd_dep(ji,jj) = ocal_ccd(ji,jj) 3165 3137 elseif (jocalccd.eq.1) then 3166 3138 !! use calculated CCD field 3167 fccd_dep = f2_ccd_cal(ji,jj)3139 fccd_dep(ji,jj) = f2_ccd_cal(ji,jj) 3168 3140 endif 3169 3141 !! … … 3178 3150 !! it needs to be protected in case ALL C is protected 3179 3151 if (fq4.lt.fq1) then 3180 fprotf = (fq4 / (fq1 + tiny(fq1))) !! protected fraction of total organic C (non-dim)3152 fprotf(ji,jj) = (fq4 / (fq1 + tiny(fq1))) !! protected fraction of total organic C (non-dim) 3181 3153 else 3182 fprotf = 1.0 !! all organic C is protected (non-dim)3154 fprotf(ji,jj) = 1.0 !! all organic C is protected (non-dim) 3183 3155 endif 3184 fq5 = (1.0 - fprotf ) !! unprotected fraction of total organic C (non-dim)3156 fq5 = (1.0 - fprotf(ji,jj)) !! unprotected fraction of total organic C (non-dim) 3185 3157 fq6 = (fq0 * fq5) !! how much organic C is unprotected (mol) 3186 fq7 = (fq6 * exp(-(f thk/ xfastc))) !! how much unprotected C leaves this box (mol)3187 fq8 = (fq7 + (fq0 * fprotf )) !! how much total C leaves this box (mol)3188 freminc = (fq0 - fq8) / fthk!! C remineralisation in this box (mol)3158 fq7 = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc))) !! how much unprotected C leaves this box (mol) 3159 fq8 = (fq7 + (fq0 * fprotf(ji,jj))) !! how much total C leaves this box (mol) 3160 freminc(ji,jj) = (fq0 - fq8) / fse3t(ji,jj,jk) !! C remineralisation in this box (mol) 3189 3161 ffastc(ji,jj) = fq8 3190 3162 # if defined key_debug_medusa … … 3194 3166 IF (lwp) write (numout,*) 'totalC(',jk,') = ', fq1 3195 3167 IF (lwp) write (numout,*) 'prtctC(',jk,') = ', fq4 3196 IF (lwp) write (numout,*) 'fprotf(',jk,') = ', fprotf 3168 IF (lwp) write (numout,*) 'fprotf(',jk,') = ', fprotf(ji,jj) 3197 3169 IF (lwp) write (numout,*) '------------------------------' 3198 3170 IF (lwp) write (numout,*) 'IN C(',jk,') = ', fq0 3199 IF (lwp) write (numout,*) 'LOST C(',jk,') = ', freminc * fthk3171 IF (lwp) write (numout,*) 'LOST C(',jk,') = ', freminc(ji,jj) * fse3t(ji,jj,jk) 3200 3172 IF (lwp) write (numout,*) 'OUT C(',jk,') = ', fq8 3201 IF (lwp) write (numout,*) 'NEW C(',jk,') = ', ftempc * fthk3173 IF (lwp) write (numout,*) 'NEW C(',jk,') = ', ftempc(ji,jj) * fse3t(ji,jj,jk) 3202 3174 endif 3203 3175 # endif 3204 3176 else 3205 fq1 = fq0 * exp(-(f thk/ xfastc)) !! how much organic C leaves this box (mol)3206 freminc = (fq0 - fq1) / fthk!! C remineralisation in this box (mol)3177 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc)) !! how much organic C leaves this box (mol) 3178 freminc(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! C remineralisation in this box (mol) 3207 3179 ffastc(ji,jj) = fq1 3208 3180 endif … … 3211 3183 fq0 = ffastn(ji,jj) !! how much organic N enters this box (mol) 3212 3184 if (iball.eq.1) then 3213 fq5 = (1.0 - fprotf ) !! unprotected fraction of total organic N (non-dim)3185 fq5 = (1.0 - fprotf(ji,jj)) !! unprotected fraction of total organic N (non-dim) 3214 3186 fq6 = (fq0 * fq5) !! how much organic N is unprotected (mol) 3215 fq7 = (fq6 * exp(-(f thk/ xfastc))) !! how much unprotected N leaves this box (mol)3216 fq8 = (fq7 + (fq0 * fprotf )) !! how much total N leaves this box (mol)3217 freminn = (fq0 - fq8) / fthk!! N remineralisation in this box (mol)3187 fq7 = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc))) !! how much unprotected N leaves this box (mol) 3188 fq8 = (fq7 + (fq0 * fprotf(ji,jj))) !! how much total N leaves this box (mol) 3189 freminn(ji,jj) = (fq0 - fq8) / fse3t(ji,jj,jk) !! N remineralisation in this box (mol) 3218 3190 ffastn(ji,jj) = fq8 3219 3191 # if defined key_debug_medusa … … 3223 3195 IF (lwp) write (numout,*) 'totalN(',jk,') = ', fq1 3224 3196 IF (lwp) write (numout,*) 'prtctN(',jk,') = ', fq4 3225 IF (lwp) write (numout,*) 'fprotf(',jk,') = ', fprotf 3197 IF (lwp) write (numout,*) 'fprotf(',jk,') = ', fprotf(ji,jj) 3226 3198 IF (lwp) write (numout,*) '------------------------------' 3227 if (freminn < 0.0) then3199 if (freminn(ji,jj) < 0.0) then 3228 3200 IF (lwp) write (numout,*) '** FREMIN ERROR **' 3229 3201 endif 3230 3202 IF (lwp) write (numout,*) 'IN N(',jk,') = ', fq0 3231 IF (lwp) write (numout,*) 'LOST N(',jk,') = ', freminn * fthk3203 IF (lwp) write (numout,*) 'LOST N(',jk,') = ', freminn(ji,jj) * fse3t(ji,jj,jk) 3232 3204 IF (lwp) write (numout,*) 'OUT N(',jk,') = ', fq8 3233 IF (lwp) write (numout,*) 'NEW N(',jk,') = ', ftempn * fthk3205 IF (lwp) write (numout,*) 'NEW N(',jk,') = ', ftempn(ji,jj) * fse3t(ji,jj,jk) 3234 3206 endif 3235 3207 # endif 3236 3208 else 3237 fq1 = fq0 * exp(-(f thk/ xfastc)) !! how much organic N leaves this box (mol)3238 freminn = (fq0 - fq1) / fthk!! N remineralisation in this box (mol)3209 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc)) !! how much organic N leaves this box (mol) 3210 freminn(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! N remineralisation in this box (mol) 3239 3211 ffastn(ji,jj) = fq1 3240 3212 endif … … 3243 3215 fq0 = ffastfe(ji,jj) !! how much organic Fe enters this box (mol) 3244 3216 if (iball.eq.1) then 3245 fq5 = (1.0 - fprotf ) !! unprotected fraction of total organic Fe (non-dim)3217 fq5 = (1.0 - fprotf(ji,jj)) !! unprotected fraction of total organic Fe (non-dim) 3246 3218 fq6 = (fq0 * fq5) !! how much organic Fe is unprotected (mol) 3247 fq7 = (fq6 * exp(-(f thk/ xfastc))) !! how much unprotected Fe leaves this box (mol)3248 fq8 = (fq7 + (fq0 * fprotf )) !! how much total Fe leaves this box (mol)3249 freminfe = (fq0 - fq8) / fthk!! Fe remineralisation in this box (mol)3219 fq7 = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc))) !! how much unprotected Fe leaves this box (mol) 3220 fq8 = (fq7 + (fq0 * fprotf(ji,jj))) !! how much total Fe leaves this box (mol) 3221 freminfe(ji,jj) = (fq0 - fq8) / fse3t(ji,jj,jk) !! Fe remineralisation in this box (mol) 3250 3222 ffastfe(ji,jj) = fq8 3251 3223 else 3252 fq1 = fq0 * exp(-(f thk/ xfastc)) !! how much total Fe leaves this box (mol)3253 freminfe = (fq0 - fq1) / fthk!! Fe remineralisation in this box (mol)3224 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc)) !! how much total Fe leaves this box (mol) 3225 freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Fe remineralisation in this box (mol) 3254 3226 ffastfe(ji,jj) = fq1 3255 3227 endif … … 3257 3229 !! === biogenic silicon === 3258 3230 fq0 = ffastsi(ji,jj) !! how much opal centers this box (mol) 3259 fq1 = fq0 * exp(-(f thk/ xfastsi)) !! how much opal leaves this box (mol)3260 freminsi = (fq0 - fq1) / fthk!! Si remineralisation in this box (mol)3231 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi)) !! how much opal leaves this box (mol) 3232 freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Si remineralisation in this box (mol) 3261 3233 ffastsi(ji,jj) = fq1 3262 3234 !! 3263 3235 !! === biogenic calcium carbonate === 3264 3236 fq0 = ffastca(ji,jj) !! how much CaCO3 enters this box (mol) 3265 if (f dep.le.fccd_dep) then3237 if (fsdepw(ji,jj,jk).le.fccd_dep(ji,jj)) then 3266 3238 !! whole grid cell above CCD 3267 3239 fq1 = fq0 !! above lysocline, no Ca dissolves (mol) 3268 freminca = 0.0 !! above lysocline, no Ca dissolves (mol)3240 freminca(ji,jj) = 0.0 !! above lysocline, no Ca dissolves (mol) 3269 3241 fccd(ji,jj) = real(jk) !! which is the last level above the CCD? (#) 3270 elseif (f dep.ge.fccd_dep) then3242 elseif (fsdepw(ji,jj,jk).ge.fccd_dep(ji,jj)) then 3271 3243 !! whole grid cell below CCD 3272 fq1 = fq0 * exp(-(f thk/ xfastca)) !! how much CaCO3 leaves this box (mol)3273 freminca = (fq0 - fq1) / fthk!! Ca remineralisation in this box (mol)3244 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca)) !! how much CaCO3 leaves this box (mol) 3245 freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Ca remineralisation in this box (mol) 3274 3246 else 3275 3247 !! partial grid cell below CCD 3276 fq2 = fdep1 - fccd_dep!! amount of grid cell below CCD (m)3248 fq2 = fdep1(ji,jj) - fccd_dep(ji,jj) !! amount of grid cell below CCD (m) 3277 3249 fq1 = fq0 * exp(-(fq2 / xfastca)) !! how much CaCO3 leaves this box (mol) 3278 freminca = (fq0 - fq1) / fthk!! Ca remineralisation in this box (mol)3250 freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Ca remineralisation in this box (mol) 3279 3251 endif 3280 3252 ffastca(ji,jj) = fq1 3281 3253 else 3282 3254 !! this is BELOW THE LAST OCEAN BOX (do nothing) 3283 freminc = 0.03284 freminn = 0.03285 freminfe = 0.03286 freminsi = 0.03287 freminca = 0.03255 freminc(ji,jj) = 0.0 3256 freminn(ji,jj) = 0.0 3257 freminfe(ji,jj) = 0.0 3258 freminsi(ji,jj) = 0.0 3259 freminca(ji,jj) = 0.0 3288 3260 endif 3289 3261 … … 3334 3306 !! this is the SURFACE OCEAN BOX (no remineralisation) 3335 3307 !! 3336 freminc = 0.03337 freminn = 0.03338 freminfe = 0.03339 freminsi = 0.03340 freminca = 0.03341 elseif (jk.le. jmbathy) then3308 freminc(ji,jj) = 0.0 3309 freminn(ji,jj) = 0.0 3310 freminfe(ji,jj) = 0.0 3311 freminsi(ji,jj) = 0.0 3312 freminca(ji,jj) = 0.0 3313 elseif (jk.le.mbathy(ji,jj)) then 3342 3314 !! this is an OCEAN BOX (remineralise some material) 3343 3315 !! 3344 3316 !! === organic carbon === 3345 3317 fq0 = ffastc(ji,jj) !! how much organic C enters this box (mol) 3346 fq1 = fq0 * ((fdep1 /fdep)**fb_val) !! how much organic C leaves this box (mol)3347 freminc = (fq0 - fq1) / fthk!! C remineralisation in this box (mol)3318 fq1 = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val) !! how much organic C leaves this box (mol) 3319 freminc(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! C remineralisation in this box (mol) 3348 3320 ffastc(ji,jj) = fq1 3349 3321 !! 3350 3322 !! === organic nitrogen === 3351 3323 fq0 = ffastn(ji,jj) !! how much organic N enters this box (mol) 3352 fq1 = fq0 * ((fdep1 /fdep)**fb_val) !! how much organic N leaves this box (mol)3353 freminn = (fq0 - fq1) / fthk!! N remineralisation in this box (mol)3324 fq1 = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val) !! how much organic N leaves this box (mol) 3325 freminn(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! N remineralisation in this box (mol) 3354 3326 ffastn(ji,jj) = fq1 3355 3327 !! 3356 3328 !! === organic iron === 3357 3329 fq0 = ffastfe(ji,jj) !! how much organic Fe enters this box (mol) 3358 fq1 = fq0 * ((fdep1 /fdep)**fb_val) !! how much organic Fe leaves this box (mol)3359 freminfe = (fq0 - fq1) / fthk!! Fe remineralisation in this box (mol)3330 fq1 = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val) !! how much organic Fe leaves this box (mol) 3331 freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Fe remineralisation in this box (mol) 3360 3332 ffastfe(ji,jj) = fq1 3361 3333 !! 3362 3334 !! === biogenic silicon === 3363 3335 fq0 = ffastsi(ji,jj) !! how much opal centers this box (mol) 3364 fq1 = fq0 * exp(-(f thk/ xfastsi)) !! how much opal leaves this box (mol)3365 freminsi = (fq0 - fq1) / fthk!! Si remineralisation in this box (mol)3336 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi)) !! how much opal leaves this box (mol) 3337 freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Si remineralisation in this box (mol) 3366 3338 ffastsi(ji,jj) = fq1 3367 3339 !! 3368 3340 !! === biogenic calcium carbonate === 3369 3341 fq0 = ffastca(ji,jj) !! how much CaCO3 enters this box (mol) 3370 if (f dep.le.ocal_ccd(ji,jj)) then3342 if (fsdepw(ji,jj,jk).le.ocal_ccd(ji,jj)) then 3371 3343 !! whole grid cell above CCD 3372 3344 fq1 = fq0 !! above lysocline, no Ca dissolves (mol) 3373 freminca = 0.0 !! above lysocline, no Ca dissolves (mol)3345 freminca(ji,jj) = 0.0 !! above lysocline, no Ca dissolves (mol) 3374 3346 fccd(ji,jj) = real(jk) !! which is the last level above the CCD? (#) 3375 elseif (f dep.ge.ocal_ccd(ji,jj)) then3347 elseif (fsdepw(ji,jj,jk).ge.ocal_ccd(ji,jj)) then 3376 3348 !! whole grid cell below CCD 3377 fq1 = fq0 * exp(-(f thk/ xfastca)) !! how much CaCO3 leaves this box (mol)3378 freminca = (fq0 - fq1) / fthk!! Ca remineralisation in this box (mol)3349 fq1 = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca)) !! how much CaCO3 leaves this box (mol) 3350 freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Ca remineralisation in this box (mol) 3379 3351 else 3380 3352 !! partial grid cell below CCD 3381 fq2 = fdep1 - ocal_ccd(ji,jj) !! amount of grid cell below CCD (m)3353 fq2 = fdep1(ji,jj) - ocal_ccd(ji,jj) !! amount of grid cell below CCD (m) 3382 3354 fq1 = fq0 * exp(-(fq2 / xfastca)) !! how much CaCO3 leaves this box (mol) 3383 freminca = (fq0 - fq1) / fthk!! Ca remineralisation in this box (mol)3355 freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk) !! Ca remineralisation in this box (mol) 3384 3356 endif 3385 3357 ffastca(ji,jj) = fq1 3386 3358 else 3387 3359 !! this is BELOW THE LAST OCEAN BOX (do nothing) 3388 freminc = 0.03389 freminn = 0.03390 freminfe = 0.03391 freminsi = 0.03392 freminca = 0.03360 freminc(ji,jj) = 0.0 3361 freminn(ji,jj) = 0.0 3362 freminfe(ji,jj) = 0.0 3363 freminsi(ji,jj) = 0.0 3364 freminca(ji,jj) = 0.0 3393 3365 endif 3394 3366 … … 3406 3378 !! 3407 3379 !! === organic carbon === (diatom and mesozooplankton mortality) 3408 ffastc(ji,jj) = ffastc(ji,jj) + (ftempc * fthk)3380 ffastc(ji,jj) = ffastc(ji,jj) + (ftempc(ji,jj) * fse3t(ji,jj,jk)) 3409 3381 !! 3410 3382 !! === organic nitrogen === (diatom and mesozooplankton mortality) 3411 ffastn(ji,jj) = ffastn(ji,jj) + (ftempn * fthk)3383 ffastn(ji,jj) = ffastn(ji,jj) + (ftempn(ji,jj) * fse3t(ji,jj,jk)) 3412 3384 !! 3413 3385 !! === organic iron === (diatom and mesozooplankton mortality) 3414 ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe * fthk)3386 ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 3415 3387 !! 3416 3388 !! === biogenic silicon === (diatom mortality and grazed diatoms) 3417 ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi * fthk)3389 ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 3418 3390 !! 3419 3391 !! === biogenic calcium carbonate === (latitudinally-based fraction of total primary production) 3420 ffastca(ji,jj) = ffastca(ji,jj) + (ftempca * fthk)3392 ffastca(ji,jj) = ffastca(ji,jj) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) 3421 3393 3422 3394 !!---------------------------------------------------------------------- … … 3456 3428 !!---------------------------------------------------------------------- 3457 3429 !! 3458 ffast2slowc = 0.0 3459 ffast2slown = 0.0 3460 ffast2slowfe = 0.0 3461 !! 3462 if (jk.eq.jmbathy) then 3430 ffast2slowc(ji,jj) = 0.0 3431 ffast2slown(ji,jj) = 0.0 3432 ! I don't think this is used - marc 10/4/17 3433 ! ffast2slowfe(ji,jj) = 0.0 3434 !! 3435 if (jk.eq.mbathy(ji,jj)) then 3463 3436 !! this is the BOTTOM OCEAN BOX (remineralise everything) 3464 3437 !! … … 3467 3440 !! === organic carbon === 3468 3441 if (jfdfate.eq.0 .and. jorgben.eq.0) then 3469 freminc = freminc + (ffastc(ji,jj) / fthk) !! C remineralisation in this box (mol/m3)3442 freminc(ji,jj) = freminc(ji,jj) + (ffastc(ji,jj) / fse3t(ji,jj,jk)) !! C remineralisation in this box (mol/m3) 3470 3443 elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 3471 ffast2slowc = ffastc(ji,jj) / fthk!! fast C -> slow C (mol/m3)3472 fslowc = fslowc + ffast2slowc3444 ffast2slowc(ji,jj) = ffastc(ji,jj) / fse3t(ji,jj,jk) !! fast C -> slow C (mol/m3) 3445 fslowc(ji,jj) = fslowc(ji,jj) + ffast2slowc(ji,jj) 3473 3446 elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 3474 3447 f_fbenin_c(ji,jj) = ffastc(ji,jj) !! fast C -> benthic C (mol/m2) … … 3479 3452 !! === organic nitrogen === 3480 3453 if (jfdfate.eq.0 .and. jorgben.eq.0) then 3481 freminn = freminn + (ffastn(ji,jj) / fthk) !! N remineralisation in this box (mol/m3)3454 freminn(ji,jj) = freminn(ji,jj) + (ffastn(ji,jj) / fse3t(ji,jj,jk)) !! N remineralisation in this box (mol/m3) 3482 3455 elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 3483 ffast2slown = ffastn(ji,jj) / fthk!! fast N -> slow N (mol/m3)3484 fslown = fslown + ffast2slown3456 ffast2slown(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk) !! fast N -> slow N (mol/m3) 3457 fslown(ji,jj) = fslown(ji,jj) + ffast2slown(ji,jj) 3485 3458 elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 3486 3459 f_fbenin_n(ji,jj) = ffastn(ji,jj) !! fast N -> benthic N (mol/m2) … … 3491 3464 !! === organic iron === 3492 3465 if (jfdfate.eq.0 .and. jorgben.eq.0) then 3493 freminfe = freminfe + (ffastfe(ji,jj) / fthk) !! Fe remineralisation in this box (mol/m3) 3494 elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 3495 ffast2slowfe = ffastn(ji,jj) / fthk !! fast Fe -> slow Fe (mol/m3) 3466 freminfe(ji,jj) = freminfe(ji,jj) + (ffastfe(ji,jj) / fse3t(ji,jj,jk)) !! Fe remineralisation in this box (mol/m3) 3467 ! I don't think ffast2slowfe is used - marc 10/4/17 3468 ! elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 3469 ! ffast2slowfe(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk) !! fast Fe -> slow Fe (mol/m3) 3496 3470 elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 3497 3471 f_fbenin_fe(ji,jj) = ffastfe(ji,jj) !! fast Fe -> benthic Fe (mol/m2) … … 3502 3476 !! === biogenic silicon === 3503 3477 if (jinorgben.eq.0) then 3504 freminsi = freminsi + (ffastsi(ji,jj) / fthk) !! Si remineralisation in this box (mol/m3)3478 freminsi(ji,jj) = freminsi(ji,jj) + (ffastsi(ji,jj) / fse3t(ji,jj,jk)) !! Si remineralisation in this box (mol/m3) 3505 3479 elseif (jinorgben.eq.1) then 3506 3480 f_fbenin_si(ji,jj) = ffastsi(ji,jj) !! fast Si -> benthic Si (mol/m2) … … 3511 3485 !! === biogenic calcium carbonate === 3512 3486 if (jinorgben.eq.0) then 3513 freminca = freminca + (ffastca(ji,jj) / fthk) !! Ca remineralisation in this box (mol/m3)3487 freminca(ji,jj) = freminca(ji,jj) + (ffastca(ji,jj) / fse3t(ji,jj,jk)) !! Ca remineralisation in this box (mol/m3) 3514 3488 elseif (jinorgben.eq.1) then 3515 3489 f_fbenin_ca(ji,jj) = ffastca(ji,jj) !! fast Ca -> benthic Ca (mol/m2) … … 3525 3499 !!---------------------------------------------------------------------- 3526 3500 !! 3527 fofd_n(ji,jj) = fofd_n(ji,jj) + (freminn * fthk)3528 fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi * fthk)3529 fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe * fthk)3501 fofd_n(ji,jj) = fofd_n(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) 3502 fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 3503 fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe(ji,jj) * fse3t(ji,jj,jk)) 3530 3504 # if defined key_roam 3531 fofd_c(ji,jj) = fofd_c(ji,jj) + (freminc * fthk)3505 fofd_c(ji,jj) = fofd_c(ji,jj) + (freminc(ji,jj) * fse3t(ji,jj,jk)) 3532 3506 # endif 3533 3507 endif … … 3539 3513 !! 3540 3514 !! update fast-sinking regeneration arrays 3541 fregenfast(ji,jj) = fregenfast(ji,jj) + (freminn * fthk)3542 fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi * fthk)3515 fregenfast(ji,jj) = fregenfast(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) 3516 fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 3543 3517 # if defined key_roam 3544 fregenfastc(ji,jj) = fregenfastc(ji,jj) + (freminc * fthk)3518 fregenfastc(ji,jj) = fregenfastc(ji,jj) + (freminc(ji,jj) * fse3t(ji,jj,jk)) 3545 3519 # endif 3546 3520 … … 3549 3523 !!---------------------------------------------------------------------- 3550 3524 !! 3551 if (jk.eq. jmbathy) then3525 if (jk.eq.mbathy(ji,jj)) then 3552 3526 !! 3553 3527 !! organic components … … 3564 3538 !! 3565 3539 !! account for CaCO3 that dissolves when it shouldn't 3566 if ( f dep .le. fccd_dep) then3540 if ( fsdepw(ji,jj,jk) .le. fccd_dep(ji,jj) ) then 3567 3541 f_benout_lyso_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 3568 3542 endif … … 3581 3555 !!---------------------------------------------------------------------- 3582 3556 !! chlorophyll 3583 btra(j pchn) = b0 * ( &3584 + ((frn * fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2) * (fthetan/ xxi) )3585 btra(j pchd) = b0 * ( &3586 + ((frd * fprd * zphd) - fgmepd - fdpd - fdpd2) * (fthetad/ xxi) )3557 btra(ji,jj,jpchn) = b0 * ( & 3558 + ((frn(ji,jj) * fprn(ji,jj) * zphn(ji,jj)) - fgmipn(ji,jj) - fgmepn(ji,jj) - fdpn(ji,jj) - fdpn2(ji,jj)) * (fthetan(ji,jj) / xxi) ) 3559 btra(ji,jj,jpchd) = b0 * ( & 3560 + ((frd(ji,jj) * fprd(ji,jj) * zphd(ji,jj)) - fgmepd(ji,jj) - fdpd(ji,jj) - fdpd2(ji,jj)) * (fthetad(ji,jj) / xxi) ) 3587 3561 !! 3588 3562 !!---------------------------------------------------------------------- 3589 3563 !! phytoplankton 3590 btra(j pphn) = b0 * ( &3591 + (fprn * zphn) - fgmipn - fgmepn - fdpn - fdpn2)3592 btra(j pphd) = b0 * ( &3593 + (fprd * zphd) - fgmepd - fdpd - fdpd2)3594 btra(j ppds) = b0 * ( &3595 + (fprds * zpds) - fgmepds - fdpds - fsdiss - fdpds2)3564 btra(ji,jj,jpphn) = b0 * ( & 3565 + (fprn(ji,jj) * zphn(ji,jj)) - fgmipn(ji,jj) - fgmepn(ji,jj) - fdpn(ji,jj) - fdpn2(ji,jj) ) 3566 btra(ji,jj,jpphd) = b0 * ( & 3567 + (fprd(ji,jj) * zphd(ji,jj)) - fgmepd(ji,jj) - fdpd(ji,jj) - fdpd2(ji,jj) ) 3568 btra(ji,jj,jppds) = b0 * ( & 3569 + (fprds(ji,jj) * zpds(ji,jj)) - fgmepds(ji,jj) - fdpds(ji,jj) - fsdiss(ji,jj) - fdpds2(ji,jj) ) 3596 3570 !! 3597 3571 !!---------------------------------------------------------------------- 3598 3572 !! zooplankton 3599 btra(j pzmi) = b0 * ( &3600 + fmigrow - fgmezmi - fdzmi - fdzmi2)3601 btra(j pzme) = b0 * ( &3602 + fmegrow - fdzme - fdzme2)3573 btra(ji,jj,jpzmi) = b0 * ( & 3574 + fmigrow(ji,jj) - fgmezmi(ji,jj) - fdzmi(ji,jj) - fdzmi2(ji,jj) ) 3575 btra(ji,jj,jpzme) = b0 * ( & 3576 + fmegrow(ji,jj) - fdzme(ji,jj) - fdzme2(ji,jj) ) 3603 3577 !! 3604 3578 !!---------------------------------------------------------------------- 3605 3579 !! detritus 3606 btra(j pdet) = b0 * ( &3607 + fdpn + ((1.0 - xfdfrac1) * fdpd) & ! mort. losses3608 + fdzmi + ((1.0 - xfdfrac2) * fdzme) & ! mort. losses3609 + ((1.0 - xbetan) * (finmi + finme)) & ! assim. inefficiency3610 - fgmid - fgmed - fdd& ! grazing and remin.3611 + ffast2slown ) ! seafloor fast->slow3580 btra(ji,jj,jpdet) = b0 * ( & 3581 + fdpn(ji,jj) + ((1.0 - xfdfrac1) * fdpd(ji,jj)) & ! mort. losses 3582 + fdzmi(ji,jj) + ((1.0 - xfdfrac2) * fdzme(ji,jj)) & ! mort. losses 3583 + ((1.0 - xbetan) * (finmi(ji,jj) + finme(ji,jj))) & ! assim. inefficiency 3584 - fgmid(ji,jj) - fgmed(ji,jj) - fdd(ji,jj) & ! grazing and remin. 3585 + ffast2slown(ji,jj) ) ! seafloor fast->slow 3612 3586 !! 3613 3587 !!---------------------------------------------------------------------- 3614 3588 !! dissolved inorganic nitrogen nutrient 3615 3589 fn_cons = 0.0 & 3616 - (fprn * zphn) - (fprd * zphd) ! primary production3590 - (fprn(ji,jj) * zphn(ji,jj)) - (fprd(ji,jj) * zphd(ji,jj)) ! primary production 3617 3591 fn_prod = 0.0 & 3618 + (xphi * (fgmipn + fgmid)) & ! messy feeding remin.3619 + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed)) & ! messy feeding remin.3620 + fmiexcr + fmeexcr + fdd + freminn& ! excretion and remin.3621 + fdpn2 + fdpd2 + fdzmi2 + fdzme2! metab. losses3592 + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj))) & ! messy feeding remin. 3593 + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj))) & ! messy feeding remin. 3594 + fmiexcr(ji,jj) + fmeexcr(ji,jj) + fdd(ji,jj) + freminn(ji,jj) & ! excretion and remin. 3595 + fdpn2(ji,jj) + fdpd2(ji,jj) + fdzmi2(ji,jj) + fdzme2(ji,jj) ! metab. losses 3622 3596 !! 3623 3597 !! riverine flux 3624 3598 if ( jriver_n .gt. 0 ) then 3625 f_riv_loc_n = f_riv_n(ji,jj) * friver_dep(jk,jmbathy) / fthk3626 fn_prod = fn_prod + f_riv_loc_n 3599 f_riv_loc_n(ji,jj) = f_riv_n(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 3600 fn_prod = fn_prod + f_riv_loc_n(ji,jj) 3627 3601 endif 3628 3602 !! 3629 3603 !! benthic remineralisation 3630 if (jk.eq. jmbathy.and. jorgben.eq.1 .and. ibenthic.eq.1) then3631 fn_prod = fn_prod + (f_benout_n(ji,jj) / f thk)3604 if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 3605 fn_prod = fn_prod + (f_benout_n(ji,jj) / fse3t(ji,jj,jk)) 3632 3606 endif 3633 3607 !! 3634 btra(j pdin) = b0 * ( &3608 btra(ji,jj,jpdin) = b0 * ( & 3635 3609 fn_prod + fn_cons ) 3636 3610 !! 3637 fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( f thk* ( & ! consumption of dissolved nitrogen3611 fnit_cons(ji,jj) = fnit_cons(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! consumption of dissolved nitrogen 3638 3612 fn_cons ) ) 3639 fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( f thk* ( & ! production of dissolved nitrogen3613 fnit_prod(ji,jj) = fnit_prod(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! production of dissolved nitrogen 3640 3614 fn_prod ) ) 3641 3615 !! … … 3643 3617 !! dissolved silicic acid nutrient 3644 3618 fs_cons = 0.0 & 3645 - (fprds * zpds) ! opal production3619 - (fprds(ji,jj) * zpds(ji,jj)) ! opal production 3646 3620 fs_prod = 0.0 & 3647 + fsdiss & ! opal dissolution3648 + ((1.0 - xfdfrac1) * fdpds ) & ! mort. loss3649 + ((1.0 - xfdfrac3) * fgmepds ) & ! egestion of grazed Si3650 + freminsi + fdpds2! fast diss. and metab. losses3621 + fsdiss(ji,jj) & ! opal dissolution 3622 + ((1.0 - xfdfrac1) * fdpds(ji,jj)) & ! mort. loss 3623 + ((1.0 - xfdfrac3) * fgmepds(ji,jj)) & ! egestion of grazed Si 3624 + freminsi(ji,jj) + fdpds2(ji,jj) ! fast diss. and metab. losses 3651 3625 !! 3652 3626 !! riverine flux 3653 3627 if ( jriver_si .gt. 0 ) then 3654 f_riv_loc_si = f_riv_si(ji,jj) * friver_dep(jk,jmbathy) / fthk3655 fs_prod = fs_prod + f_riv_loc_si 3628 f_riv_loc_si(ji,jj) = f_riv_si(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 3629 fs_prod = fs_prod + f_riv_loc_si(ji,jj) 3656 3630 endif 3657 3631 !! 3658 3632 !! benthic remineralisation 3659 if (jk.eq. jmbathy.and. jinorgben.eq.1 .and. ibenthic.eq.1) then3660 fs_prod = fs_prod + (f_benout_si(ji,jj) / f thk)3633 if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 3634 fs_prod = fs_prod + (f_benout_si(ji,jj) / fse3t(ji,jj,jk)) 3661 3635 endif 3662 3636 !! 3663 btra(j psil) = b0 * ( &3637 btra(ji,jj,jpsil) = b0 * ( & 3664 3638 fs_prod + fs_cons ) 3665 3639 !! 3666 fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( f thk* ( & ! consumption of dissolved silicon3640 fsil_cons(ji,jj) = fsil_cons(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! consumption of dissolved silicon 3667 3641 fs_cons ) ) 3668 fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( f thk* ( & ! production of dissolved silicon3642 fsil_prod(ji,jj) = fsil_prod(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! production of dissolved silicon 3669 3643 fs_prod ) ) 3670 3644 !! 3671 3645 !!---------------------------------------------------------------------- 3672 3646 !! dissolved "iron" nutrient 3673 btra(j pfer) = b0 * ( &3674 + (xrfn * btra(j pdin)) + ffetop + ffebot - ffescav)3647 btra(ji,jj,jpfer) = b0 * ( & 3648 + (xrfn * btra(ji,jj,jpdin)) + ffetop(ji,jj) + ffebot(ji,jj) - ffescav(ji,jj) ) 3675 3649 3676 3650 # if defined key_roam … … 3678 3652 !!---------------------------------------------------------------------- 3679 3653 !! AXY (26/11/08): implicit detrital carbon change 3680 btra(j pdtc) = b0 * ( &3681 + (xthetapn * fdpn ) + ((1.0 - xfdfrac1) * (xthetapd * fdpd)) & ! mort. losses3682 + (xthetazmi * fdzmi ) + ((1.0 - xfdfrac2) * (xthetazme * fdzme)) & ! mort. losses3683 + ((1.0 - xbetac) * (ficmi + ficme)) & ! assim. inefficiency3684 - fgmidc - fgmedc - fddc& ! grazing and remin.3685 + ffast2slowc ) ! seafloor fast->slow3654 btra(ji,jj,jpdtc) = b0 * ( & 3655 + (xthetapn * fdpn(ji,jj)) + ((1.0 - xfdfrac1) * (xthetapd * fdpd(ji,jj))) & ! mort. losses 3656 + (xthetazmi * fdzmi(ji,jj)) + ((1.0 - xfdfrac2) * (xthetazme * fdzme(ji,jj))) & ! mort. losses 3657 + ((1.0 - xbetac) * (ficmi(ji,jj) + ficme(ji,jj))) & ! assim. inefficiency 3658 - fgmidc(ji,jj) - fgmedc(ji,jj) - fddc(ji,jj) & ! grazing and remin. 3659 + ffast2slowc(ji,jj) ) ! seafloor fast->slow 3686 3660 !! 3687 3661 !!---------------------------------------------------------------------- 3688 3662 !! dissolved inorganic carbon 3689 3663 fc_cons = 0.0 & 3690 - (xthetapn * fprn * zphn) - (xthetapd * fprd * zphd) ! primary production3664 - (xthetapn * fprn(ji,jj) * zphn(ji,jj)) - (xthetapd * fprd(ji,jj) * zphd(ji,jj)) ! primary production 3691 3665 fc_prod = 0.0 & 3692 + (xthetapn * xphi * fgmipn ) + (xphi * fgmidc) & ! messy feeding remin3693 + (xthetapn * xphi * fgmepn ) + (xthetapd * xphi * fgmepd) & ! messy feeding remin3694 + (xthetazmi * xphi * fgmezmi ) + (xphi * fgmedc) & ! messy feeding remin3695 + fmiresp + fmeresp + fddc + freminc + (xthetapn * fdpn2) & ! resp., remin., losses3696 + (xthetapd * fdpd2 ) + (xthetazmi * fdzmi2) & ! losses3697 + (xthetazme * fdzme2 ) ! losses3666 + (xthetapn * xphi * fgmipn(ji,jj)) + (xphi * fgmidc(ji,jj)) & ! messy feeding remin 3667 + (xthetapn * xphi * fgmepn(ji,jj)) + (xthetapd * xphi * fgmepd(ji,jj)) & ! messy feeding remin 3668 + (xthetazmi * xphi * fgmezmi(ji,jj)) + (xphi * fgmedc(ji,jj)) & ! messy feeding remin 3669 + fmiresp(ji,jj) + fmeresp(ji,jj) + fddc(ji,jj) + freminc(ji,jj) + (xthetapn * fdpn2(ji,jj)) & ! resp., remin., losses 3670 + (xthetapd * fdpd2(ji,jj)) + (xthetazmi * fdzmi2(ji,jj)) & ! losses 3671 + (xthetazme * fdzme2(ji,jj)) ! losses 3698 3672 !! 3699 3673 !! riverine flux 3700 3674 if ( jriver_c .gt. 0 ) then 3701 f_riv_loc_c = f_riv_c(ji,jj) * friver_dep(jk,jmbathy) / fthk3702 fc_prod = fc_prod + f_riv_loc_c 3675 f_riv_loc_c(ji,jj) = f_riv_c(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 3676 fc_prod = fc_prod + f_riv_loc_c(ji,jj) 3703 3677 endif 3704 3678 !! 3705 3679 !! benthic remineralisation 3706 if (jk.eq. jmbathy.and. jorgben.eq.1 .and. ibenthic.eq.1) then3707 fc_prod = fc_prod + (f_benout_c(ji,jj) / f thk)3680 if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 3681 fc_prod = fc_prod + (f_benout_c(ji,jj) / fse3t(ji,jj,jk)) 3708 3682 endif 3709 if (jk.eq. jmbathy.and. jinorgben.eq.1 .and. ibenthic.eq.1) then3710 fc_prod = fc_prod + (f_benout_ca(ji,jj) / f thk)3683 if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 3684 fc_prod = fc_prod + (f_benout_ca(ji,jj) / fse3t(ji,jj,jk)) 3711 3685 endif 3712 3686 !! … … 3715 3689 !! 3716 3690 !! CaCO3 3717 fc_prod = fc_prod - ftempca + freminca3691 fc_prod = fc_prod - ftempca(ji,jj) + freminca(ji,jj) 3718 3692 !! 3719 3693 !! riverine flux … … 3722 3696 endif 3723 3697 !! 3724 btra(j pdic) = b0 * ( &3698 btra(ji,jj,jpdic) = b0 * ( & 3725 3699 fc_prod + fc_cons ) 3726 3700 !! 3727 fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( f thk* ( & ! consumption of dissolved carbon3701 fcar_cons(ji,jj) = fcar_cons(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! consumption of dissolved carbon 3728 3702 fc_cons ) ) 3729 fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( f thk* ( & ! production of dissolved carbon3703 fcar_prod(ji,jj) = fcar_prod(ji,jj) + ( fse3t(ji,jj,jk) * ( & ! production of dissolved carbon 3730 3704 fc_prod ) ) 3731 3705 !! … … 3733 3707 !! alkalinity 3734 3708 fa_prod = 0.0 & 3735 + (2.0 * freminca ) ! CaCO3 dissolution3709 + (2.0 * freminca(ji,jj)) ! CaCO3 dissolution 3736 3710 fa_cons = 0.0 & 3737 - (2.0 * ftempca ) ! CaCO3 production3711 - (2.0 * ftempca(ji,jj)) ! CaCO3 production 3738 3712 !! 3739 3713 !! riverine flux 3740 3714 if ( jriver_alk .gt. 0 ) then 3741 f_riv_loc_alk = f_riv_alk(ji,jj) * friver_dep(jk,jmbathy) / fthk3742 fa_prod = fa_prod + f_riv_loc_alk 3715 f_riv_loc_alk(ji,jj) = f_riv_alk(ji,jj) * friver_dep(jk,mbathy(ji,jj)) / fse3t(ji,jj,jk) 3716 fa_prod = fa_prod + f_riv_loc_alk(ji,jj) 3743 3717 endif 3744 3718 !! 3745 3719 !! benthic remineralisation 3746 if (jk.eq. jmbathy.and. jinorgben.eq.1 .and. ibenthic.eq.1) then3747 fa_prod = fa_prod + (2.0 * f_benout_ca(ji,jj) / f thk)3720 if (jk.eq.mbathy(ji,jj) .and. jinorgben.eq.1 .and. ibenthic.eq.1) then 3721 fa_prod = fa_prod + (2.0 * f_benout_ca(ji,jj) / fse3t(ji,jj,jk)) 3748 3722 endif 3749 3723 !! 3750 btra(j palk) = b0 * ( &3724 btra(ji,jj,jpalk) = b0 * ( & 3751 3725 fa_prod + fa_cons ) 3752 3726 !! 3753 3727 !!---------------------------------------------------------------------- 3754 3728 !! oxygen (has protection at low O2 concentrations; OCMIP-2 style) 3755 fo2_prod = 0.0 &3756 + (xthetanit * fprn * zphn) & ! Pn primary production, N3757 + (xthetanit * fprd * zphd) & ! Pd primary production, N3758 + (xthetarem * xthetapn * fprn * zphn) & ! Pn primary production, C3759 + (xthetarem * xthetapd * fprd * zphd) ! Pd primary production, C3760 fo2_ncons = 0.0 &3761 - (xthetanit * xphi * fgmipn ) & ! Pn messy feeding remin., N3762 - (xthetanit * xphi * fgmid ) & ! D messy feeding remin., N3763 - (xthetanit * xphi * fgmepn ) & ! Pn messy feeding remin., N3764 - (xthetanit * xphi * fgmepd ) & ! Pd messy feeding remin., N3765 - (xthetanit * xphi * fgmezmi ) & ! Zi messy feeding remin., N3766 - (xthetanit * xphi * fgmed ) & ! D messy feeding remin., N3767 - (xthetanit * fmiexcr ) & ! microzoo excretion, N3768 - (xthetanit * fmeexcr ) & ! mesozoo excretion, N3769 - (xthetanit * fdd ) & ! slow detritus remin., N3770 - (xthetanit * freminn ) & ! fast detritus remin., N3771 - (xthetanit * fdpn2 ) & ! Pn losses, N3772 - (xthetanit * fdpd2 ) & ! Pd losses, N3773 - (xthetanit * fdzmi2 ) & ! Zmi losses, N3774 - (xthetanit * fdzme2 ) ! Zme losses, N3729 fo2_prod(ji,jj) = 0.0 & 3730 + (xthetanit * fprn(ji,jj) * zphn(ji,jj)) & ! Pn primary production, N 3731 + (xthetanit * fprd(ji,jj) * zphd(ji,jj)) & ! Pd primary production, N 3732 + (xthetarem * xthetapn * fprn(ji,jj) * zphn(ji,jj)) & ! Pn primary production, C 3733 + (xthetarem * xthetapd * fprd(ji,jj) * zphd(ji,jj)) ! Pd primary production, C 3734 fo2_ncons(ji,jj) = 0.0 & 3735 - (xthetanit * xphi * fgmipn(ji,jj)) & ! Pn messy feeding remin., N 3736 - (xthetanit * xphi * fgmid(ji,jj)) & ! D messy feeding remin., N 3737 - (xthetanit * xphi * fgmepn(ji,jj)) & ! Pn messy feeding remin., N 3738 - (xthetanit * xphi * fgmepd(ji,jj)) & ! Pd messy feeding remin., N 3739 - (xthetanit * xphi * fgmezmi(ji,jj)) & ! Zi messy feeding remin., N 3740 - (xthetanit * xphi * fgmed(ji,jj)) & ! D messy feeding remin., N 3741 - (xthetanit * fmiexcr(ji,jj)) & ! microzoo excretion, N 3742 - (xthetanit * fmeexcr(ji,jj)) & ! mesozoo excretion, N 3743 - (xthetanit * fdd(ji,jj)) & ! slow detritus remin., N 3744 - (xthetanit * freminn(ji,jj)) & ! fast detritus remin., N 3745 - (xthetanit * fdpn2(ji,jj)) & ! Pn losses, N 3746 - (xthetanit * fdpd2(ji,jj)) & ! Pd losses, N 3747 - (xthetanit * fdzmi2(ji,jj)) & ! Zmi losses, N 3748 - (xthetanit * fdzme2(ji,jj)) ! Zme losses, N 3775 3749 !! 3776 3750 !! benthic remineralisation 3777 if (jk.eq. jmbathy.and. jorgben.eq.1 .and. ibenthic.eq.1) then3778 fo2_ncons = fo2_ncons - (xthetanit * f_benout_n(ji,jj) / fthk)3751 if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 3752 fo2_ncons(ji,jj) = fo2_ncons(ji,jj) - (xthetanit * f_benout_n(ji,jj) / fse3t(ji,jj,jk)) 3779 3753 endif 3780 fo2_ccons = 0.0 &3781 - (xthetarem * xthetapn * xphi * fgmipn ) & ! Pn messy feeding remin., C3782 - (xthetarem * xphi * fgmidc ) & ! D messy feeding remin., C3783 - (xthetarem * xthetapn * xphi * fgmepn ) & ! Pn messy feeding remin., C3784 - (xthetarem * xthetapd * xphi * fgmepd ) & ! Pd messy feeding remin., C3785 - (xthetarem * xthetazmi * xphi * fgmezmi ) & ! Zi messy feeding remin., C3786 - (xthetarem * xphi * fgmedc ) & ! D messy feeding remin., C3787 - (xthetarem * fmiresp ) & ! microzoo respiration, C3788 - (xthetarem * fmeresp ) & ! mesozoo respiration, C3789 - (xthetarem * fddc ) & ! slow detritus remin., C3790 - (xthetarem * freminc ) & ! fast detritus remin., C3791 - (xthetarem * xthetapn * fdpn2 ) & ! Pn losses, C3792 - (xthetarem * xthetapd * fdpd2 ) & ! Pd losses, C3793 - (xthetarem * xthetazmi * fdzmi2 ) & ! Zmi losses, C3794 - (xthetarem * xthetazme * fdzme2 ) ! Zme losses, C3754 fo2_ccons(ji,jj) = 0.0 & 3755 - (xthetarem * xthetapn * xphi * fgmipn(ji,jj)) & ! Pn messy feeding remin., C 3756 - (xthetarem * xphi * fgmidc(ji,jj)) & ! D messy feeding remin., C 3757 - (xthetarem * xthetapn * xphi * fgmepn(ji,jj)) & ! Pn messy feeding remin., C 3758 - (xthetarem * xthetapd * xphi * fgmepd(ji,jj)) & ! Pd messy feeding remin., C 3759 - (xthetarem * xthetazmi * xphi * fgmezmi(ji,jj)) & ! Zi messy feeding remin., C 3760 - (xthetarem * xphi * fgmedc(ji,jj)) & ! D messy feeding remin., C 3761 - (xthetarem * fmiresp(ji,jj)) & ! microzoo respiration, C 3762 - (xthetarem * fmeresp(ji,jj)) & ! mesozoo respiration, C 3763 - (xthetarem * fddc(ji,jj)) & ! slow detritus remin., C 3764 - (xthetarem * freminc(ji,jj)) & ! fast detritus remin., C 3765 - (xthetarem * xthetapn * fdpn2(ji,jj)) & ! Pn losses, C 3766 - (xthetarem * xthetapd * fdpd2(ji,jj)) & ! Pd losses, C 3767 - (xthetarem * xthetazmi * fdzmi2(ji,jj)) & ! Zmi losses, C 3768 - (xthetarem * xthetazme * fdzme2(ji,jj)) ! Zme losses, C 3795 3769 !! 3796 3770 !! benthic remineralisation 3797 if (jk.eq. jmbathy.and. jorgben.eq.1 .and. ibenthic.eq.1) then3798 fo2_ccons = fo2_ccons - (xthetarem * f_benout_c(ji,jj) / fthk)3771 if (jk.eq.mbathy(ji,jj) .and. jorgben.eq.1 .and. ibenthic.eq.1) then 3772 fo2_ccons(ji,jj) = fo2_ccons(ji,jj) - (xthetarem * f_benout_c(ji,jj) / fse3t(ji,jj,jk)) 3799 3773 endif 3800 fo2_cons = fo2_ncons + fo2_ccons3774 fo2_cons(ji,jj) = fo2_ncons(ji,jj) + fo2_ccons(ji,jj) 3801 3775 !! 3802 3776 !! is this a suboxic zone? 3803 if (zoxy .lt.xo2min) then ! deficient O2; production fluxes only3804 btra(j poxy) = b0 * ( &3805 fo2_prod )3806 foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( f thk * fo2_prod)3807 foxy_anox(ji,jj) = foxy_anox(ji,jj) + ( f thk * fo2_cons)3777 if (zoxy(ji,jj).lt.xo2min) then ! deficient O2; production fluxes only 3778 btra(ji,jj,jpoxy) = b0 * ( & 3779 fo2_prod(ji,jj) ) 3780 foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fse3t(ji,jj,jk) * fo2_prod(ji,jj) ) 3781 foxy_anox(ji,jj) = foxy_anox(ji,jj) + ( fse3t(ji,jj,jk) * fo2_cons(ji,jj) ) 3808 3782 else ! sufficient O2; production + consumption fluxes 3809 btra(j poxy) = b0 * ( &3810 fo2_prod + fo2_cons)3811 foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( f thk * fo2_prod)3812 foxy_cons(ji,jj) = foxy_cons(ji,jj) + ( f thk * fo2_cons)3783 btra(ji,jj,jpoxy) = b0 * ( & 3784 fo2_prod(ji,jj) + fo2_cons(ji,jj) ) 3785 foxy_prod(ji,jj) = foxy_prod(ji,jj) + ( fse3t(ji,jj,jk) * fo2_prod(ji,jj) ) 3786 foxy_cons(ji,jj) = foxy_cons(ji,jj) + ( fse3t(ji,jj,jk) * fo2_cons(ji,jj) ) 3813 3787 endif 3814 3788 !! … … 3817 3791 !! 3818 3792 !! CO2 flux 3819 btra(j pdic) = btra(jpdic) + (b0 * f_co2flux)3793 btra(ji,jj,jpdic) = btra(ji,jj,jpdic) + (b0 * f_co2flux(ji,jj)) 3820 3794 !! 3821 3795 !! O2 flux (mol/m3/s -> mmol/m3/d) 3822 btra(j poxy) = btra(jpoxy) + (b0 * f_o2flux)3796 btra(ji,jj,jpoxy) = btra(ji,jj,jpoxy) + (b0 * f_o2flux(ji,jj)) 3823 3797 endif 3824 3798 # endif … … 3828 3802 if (idf.eq.1.AND.idfval.eq.1) then 3829 3803 IF (lwp) write (numout,*) '------------------------------' 3830 IF (lwp) write (numout,*) 'btra(j pchn)(',jk,') = ', btra(jpchn)3831 IF (lwp) write (numout,*) 'btra(j pchd)(',jk,') = ', btra(jpchd)3832 IF (lwp) write (numout,*) 'btra(j pphn)(',jk,') = ', btra(jpphn)3833 IF (lwp) write (numout,*) 'btra(j pphd)(',jk,') = ', btra(jpphd)3834 IF (lwp) write (numout,*) 'btra(j ppds)(',jk,') = ', btra(jppds)3835 IF (lwp) write (numout,*) 'btra(j pzmi)(',jk,') = ', btra(jpzmi)3836 IF (lwp) write (numout,*) 'btra(j pzme)(',jk,') = ', btra(jpzme)3837 IF (lwp) write (numout,*) 'btra(j pdet)(',jk,') = ', btra(jpdet)3838 IF (lwp) write (numout,*) 'btra(j pdin)(',jk,') = ', btra(jpdin)3839 IF (lwp) write (numout,*) 'btra(j psil)(',jk,') = ', btra(jpsil)3840 IF (lwp) write (numout,*) 'btra(j pfer)(',jk,') = ', btra(jpfer)3804 IF (lwp) write (numout,*) 'btra(ji,jj,jpchn)(',jk,') = ', btra(ji,jj,jpchn) 3805 IF (lwp) write (numout,*) 'btra(ji,jj,jpchd)(',jk,') = ', btra(ji,jj,jpchd) 3806 IF (lwp) write (numout,*) 'btra(ji,jj,jpphn)(',jk,') = ', btra(ji,jj,jpphn) 3807 IF (lwp) write (numout,*) 'btra(ji,jj,jpphd)(',jk,') = ', btra(ji,jj,jpphd) 3808 IF (lwp) write (numout,*) 'btra(ji,jj,jppds)(',jk,') = ', btra(ji,jj,jppds) 3809 IF (lwp) write (numout,*) 'btra(ji,jj,jpzmi)(',jk,') = ', btra(ji,jj,jpzmi) 3810 IF (lwp) write (numout,*) 'btra(ji,jj,jpzme)(',jk,') = ', btra(ji,jj,jpzme) 3811 IF (lwp) write (numout,*) 'btra(ji,jj,jpdet)(',jk,') = ', btra(ji,jj,jpdet) 3812 IF (lwp) write (numout,*) 'btra(ji,jj,jpdin)(',jk,') = ', btra(ji,jj,jpdin) 3813 IF (lwp) write (numout,*) 'btra(ji,jj,jpsil)(',jk,') = ', btra(ji,jj,jpsil) 3814 IF (lwp) write (numout,*) 'btra(ji,jj,jpfer)(',jk,') = ', btra(ji,jj,jpfer) 3841 3815 # if defined key_roam 3842 IF (lwp) write (numout,*) 'btra(j pdtc)(',jk,') = ', btra(jpdtc)3843 IF (lwp) write (numout,*) 'btra(j pdic)(',jk,') = ', btra(jpdic)3844 IF (lwp) write (numout,*) 'btra(j palk)(',jk,') = ', btra(jpalk)3845 IF (lwp) write (numout,*) 'btra(j poxy)(',jk,') = ', btra(jpoxy)3816 IF (lwp) write (numout,*) 'btra(ji,jj,jpdtc)(',jk,') = ', btra(ji,jj,jpdtc) 3817 IF (lwp) write (numout,*) 'btra(ji,jj,jpdic)(',jk,') = ', btra(ji,jj,jpdic) 3818 IF (lwp) write (numout,*) 'btra(ji,jj,jpalk)(',jk,') = ', btra(ji,jj,jpalk) 3819 IF (lwp) write (numout,*) 'btra(ji,jj,jpoxy)(',jk,') = ', btra(ji,jj,jpoxy) 3846 3820 # endif 3847 3821 endif … … 3854 3828 !! === nitrogen === 3855 3829 fflx_n(ji,jj) = fflx_n(ji,jj) + & 3856 f thk * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin) )3830 fse3t(ji,jj,jk) * ( btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet) + btra(ji,jj,jpdin) ) 3857 3831 !! === silicon === 3858 3832 fflx_si(ji,jj) = fflx_si(ji,jj) + & 3859 f thk * ( btra(jppds) + btra(jpsil) )3833 fse3t(ji,jj,jk) * ( btra(ji,jj,jppds) + btra(ji,jj,jpsil) ) 3860 3834 !! === iron === 3861 3835 fflx_fe(ji,jj) = fflx_fe(ji,jj) + & 3862 f thk * ( ( xrfn * ( btra(jpphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet)) ) + btra(jpfer) )3836 fse3t(ji,jj,jk) * ( ( xrfn * ( btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet)) ) + btra(ji,jj,jpfer) ) 3863 3837 # if defined key_roam 3864 3838 !! === carbon === 3865 3839 fflx_c(ji,jj) = fflx_c(ji,jj) + & 3866 f thk * ( (xthetapn * btra(jpphn)) + (xthetapd * btra(jpphd)) + &3867 (xthetazmi * btra(j pzmi)) + (xthetazme * btra(jpzme)) + btra(jpdtc) + btra(jpdic) )3840 fse3t(ji,jj,jk) * ( (xthetapn * btra(ji,jj,jpphn)) + (xthetapd * btra(ji,jj,jpphd)) + & 3841 (xthetazmi * btra(ji,jj,jpzmi)) + (xthetazme * btra(ji,jj,jpzme)) + btra(ji,jj,jpdtc) + btra(ji,jj,jpdic) ) 3868 3842 !! === alkalinity === 3869 3843 fflx_a(ji,jj) = fflx_a(ji,jj) + & 3870 f thk * ( btra(jpalk) )3844 fse3t(ji,jj,jk) * ( btra(ji,jj,jpalk) ) 3871 3845 !! === oxygen === 3872 3846 fflx_o2(ji,jj) = fflx_o2(ji,jj) + & 3873 f thk * ( btra(jpoxy) )3847 fse3t(ji,jj,jk) * ( btra(ji,jj,jpoxy) ) 3874 3848 # endif 3875 3849 … … 3895 3869 # endif 3896 3870 if (ibio_switch.eq.1) then 3897 tra(ji,jj,jk,jpchn) = tra(ji,jj,jk,jpchn) + (btra(j pchn) / 86400.)3898 tra(ji,jj,jk,jpchd) = tra(ji,jj,jk,jpchd) + (btra(j pchd) / 86400.)3899 tra(ji,jj,jk,jpphn) = tra(ji,jj,jk,jpphn) + (btra(j pphn) / 86400.)3900 tra(ji,jj,jk,jpphd) = tra(ji,jj,jk,jpphd) + (btra(j pphd) / 86400.)3901 tra(ji,jj,jk,jppds) = tra(ji,jj,jk,jppds) + (btra(j ppds) / 86400.)3902 tra(ji,jj,jk,jpzmi) = tra(ji,jj,jk,jpzmi) + (btra(j pzmi) / 86400.)3903 tra(ji,jj,jk,jpzme) = tra(ji,jj,jk,jpzme) + (btra(j pzme) / 86400.)3904 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + (btra(j pdet) / 86400.)3905 tra(ji,jj,jk,jpdin) = tra(ji,jj,jk,jpdin) + (btra(j pdin) / 86400.)3906 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + (btra(j psil) / 86400.)3907 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + (btra(j pfer) / 86400.)3871 tra(ji,jj,jk,jpchn) = tra(ji,jj,jk,jpchn) + (btra(ji,jj,jpchn) / 86400.) 3872 tra(ji,jj,jk,jpchd) = tra(ji,jj,jk,jpchd) + (btra(ji,jj,jpchd) / 86400.) 3873 tra(ji,jj,jk,jpphn) = tra(ji,jj,jk,jpphn) + (btra(ji,jj,jpphn) / 86400.) 3874 tra(ji,jj,jk,jpphd) = tra(ji,jj,jk,jpphd) + (btra(ji,jj,jpphd) / 86400.) 3875 tra(ji,jj,jk,jppds) = tra(ji,jj,jk,jppds) + (btra(ji,jj,jppds) / 86400.) 3876 tra(ji,jj,jk,jpzmi) = tra(ji,jj,jk,jpzmi) + (btra(ji,jj,jpzmi) / 86400.) 3877 tra(ji,jj,jk,jpzme) = tra(ji,jj,jk,jpzme) + (btra(ji,jj,jpzme) / 86400.) 3878 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + (btra(ji,jj,jpdet) / 86400.) 3879 tra(ji,jj,jk,jpdin) = tra(ji,jj,jk,jpdin) + (btra(ji,jj,jpdin) / 86400.) 3880 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + (btra(ji,jj,jpsil) / 86400.) 3881 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + (btra(ji,jj,jpfer) / 86400.) 3908 3882 # if defined key_roam 3909 tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + (btra(j pdtc) / 86400.)3910 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + (btra(j pdic) / 86400.)3911 tra(ji,jj,jk,jpalk) = tra(ji,jj,jk,jpalk) + (btra(j palk) / 86400.)3912 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + (btra(j poxy) / 86400.)3883 tra(ji,jj,jk,jpdtc) = tra(ji,jj,jk,jpdtc) + (btra(ji,jj,jpdtc) / 86400.) 3884 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + (btra(ji,jj,jpdic) / 86400.) 3885 tra(ji,jj,jk,jpalk) = tra(ji,jj,jk,jpalk) + (btra(ji,jj,jpalk) / 86400.) 3886 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + (btra(ji,jj,jpoxy) / 86400.) 3913 3887 # endif 3914 3888 endif … … 3916 3890 !! AXY (18/11/16): CMIP6 diagnostics 3917 3891 IF( med_diag%FBDDTALK%dgsave ) THEN 3918 fbddtalk(ji,jj) = fbddtalk(ji,jj) + (btra(j palk) * fthk)3892 fbddtalk(ji,jj) = fbddtalk(ji,jj) + (btra(ji,jj,jpalk) * fse3t(ji,jj,jk)) 3919 3893 ENDIF 3920 3894 IF( med_diag%FBDDTDIC%dgsave ) THEN 3921 fbddtdic(ji,jj) = fbddtdic(ji,jj) + (btra(j pdic) * fthk)3895 fbddtdic(ji,jj) = fbddtdic(ji,jj) + (btra(ji,jj,jpdic) * fse3t(ji,jj,jk)) 3922 3896 ENDIF 3923 3897 IF( med_diag%FBDDTDIFE%dgsave ) THEN 3924 fbddtdife(ji,jj) = fbddtdife(ji,jj) + (btra(j pfer) * fthk)3898 fbddtdife(ji,jj) = fbddtdife(ji,jj) + (btra(ji,jj,jpfer) * fse3t(ji,jj,jk)) 3925 3899 ENDIF 3926 3900 IF( med_diag%FBDDTDIN%dgsave ) THEN 3927 fbddtdin(ji,jj) = fbddtdin(ji,jj) + (btra(j pdin) * fthk)3901 fbddtdin(ji,jj) = fbddtdin(ji,jj) + (btra(ji,jj,jpdin) * fse3t(ji,jj,jk)) 3928 3902 ENDIF 3929 3903 IF( med_diag%FBDDTDISI%dgsave ) THEN 3930 fbddtdisi(ji,jj) = fbddtdisi(ji,jj) + (btra(j psil) * fthk)3904 fbddtdisi(ji,jj) = fbddtdisi(ji,jj) + (btra(ji,jj,jpsil) * fse3t(ji,jj,jk)) 3931 3905 ENDIF 3932 3906 !! 3933 3907 IF( med_diag%BDDTALK3%dgsave ) THEN 3934 bddtalk3(ji,jj,jk) = btra(j palk)3908 bddtalk3(ji,jj,jk) = btra(ji,jj,jpalk) 3935 3909 ENDIF 3936 3910 IF( med_diag%BDDTDIC3%dgsave ) THEN 3937 bddtdic3(ji,jj,jk) = btra(j pdic)3911 bddtdic3(ji,jj,jk) = btra(ji,jj,jpdic) 3938 3912 ENDIF 3939 3913 IF( med_diag%BDDTDIFE3%dgsave ) THEN 3940 bddtdife3(ji,jj,jk) = btra(j pfer)3914 bddtdife3(ji,jj,jk) = btra(ji,jj,jpfer) 3941 3915 ENDIF 3942 3916 IF( med_diag%BDDTDIN3%dgsave ) THEN 3943 bddtdin3(ji,jj,jk) = btra(j pdin)3917 bddtdin3(ji,jj,jk) = btra(ji,jj,jpdin) 3944 3918 ENDIF 3945 3919 IF( med_diag%BDDTDISI3%dgsave ) THEN 3946 bddtdisi3(ji,jj,jk) = btra(j psil)3920 bddtdisi3(ji,jj,jk) = btra(ji,jj,jpsil) 3947 3921 ENDIF 3948 3922 … … 3960 3934 !! 3961 3935 DO jn = 1,jptra 3962 fq0 = btra(j n)3936 fq0 = btra(ji,jj,jn) 3963 3937 !! AXY (30/01/14): "isnan" problem on HECTOR 3964 3938 !! if (fq0 /= fq0 ) then 3965 3939 if ( ieee_is_nan( fq0 ) ) then 3966 3940 !! there's a NaN here 3967 if (lwp) write(numout,*) 'NAN detected in btra( ', ji, ',', &3941 if (lwp) write(numout,*) 'NAN detected in btra(ji,jj,', ji, ',', & 3968 3942 & jj, ',', jk, ',', jn, ') at time', kt 3969 3943 CALL ctl_stop( 'trcbio_medusa, NAN in btra field' ) … … 3993 3967 !!---------------------------------------------------------------------- 3994 3968 !! 3995 !! fnit0 = btra(j pphn) + btra(jpphd) + btra(jpzmi) + btra(jpzme) + btra(jpdet) + btra(jpdin) ! + ftempn3996 !! fsil0 = btra(j ppds) + btra(jpsil) ! + ftempsi3997 !! ffer0 = (xrfn * fnit0) + btra(j pfer)3969 !! fnit0 = btra(ji,jj,jpphn) + btra(ji,jj,jpphd) + btra(ji,jj,jpzmi) + btra(ji,jj,jpzme) + btra(ji,jj,jpdet) + btra(ji,jj,jpdin) ! + ftempn(ji,jj) 3970 !! fsil0 = btra(ji,jj,jppds) + btra(ji,jj,jpsil) ! + ftempsi(ji,jj) 3971 !! ffer0 = (xrfn * fnit0) + btra(ji,jj,jpfer) 3998 3972 # if defined key_roam 3999 3973 !! fcar0 = 0. … … 4027 4001 !! 4028 4002 IF(lwp) WRITE(numout,*) ' MEDUSA does not support key_trc_diabio' 4029 !! trbio(ji,jj,jk, 1) = fprn 4003 !! trbio(ji,jj,jk, 1) = fprn(ji,jj) 4030 4004 # endif 4031 4005 … … 4041 4015 # endif 4042 4016 IF ( med_diag%PRN%dgsave ) THEN 4043 fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn * zphn * fthk)4017 fprn2d(ji,jj) = fprn2d(ji,jj) + (fprn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) 4044 4018 ENDIF 4045 4019 IF ( med_diag%MPN%dgsave ) THEN 4046 fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn * fthk)4020 fdpn2d(ji,jj) = fdpn2d(ji,jj) + (fdpn(ji,jj) * fse3t(ji,jj,jk)) 4047 4021 ENDIF 4048 4022 IF ( med_diag%PRD%dgsave ) THEN 4049 fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd * zphd * fthk)4023 fprd2d(ji,jj) = fprd2d(ji,jj) + (fprd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4050 4024 ENDIF 4051 4025 IF( med_diag%MPD%dgsave ) THEN 4052 fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd * fthk)4026 fdpd2d(ji,jj) = fdpd2d(ji,jj) + (fdpd(ji,jj) * fse3t(ji,jj,jk)) 4053 4027 ENDIF 4054 4028 ! IF( med_diag%DSED%dgsave ) THEN … … 4056 4030 ! ENDIF 4057 4031 IF( med_diag%OPAL%dgsave ) THEN 4058 fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds * zpds * fthk)4032 fprds2d(ji,jj) = fprds2d(ji,jj) + (fprds(ji,jj) * zpds(ji,jj) * fse3t(ji,jj,jk)) 4059 4033 ENDIF 4060 4034 IF( med_diag%OPALDISS%dgsave ) THEN 4061 fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss * fthk)4035 fsdiss2d(ji,jj) = fsdiss2d(ji,jj) + (fsdiss(ji,jj) * fse3t(ji,jj,jk)) 4062 4036 ENDIF 4063 4037 IF( med_diag%GMIPn%dgsave ) THEN 4064 fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn * fthk)4038 fgmipn2d(ji,jj) = fgmipn2d(ji,jj) + (fgmipn(ji,jj) * fse3t(ji,jj,jk)) 4065 4039 ENDIF 4066 4040 IF( med_diag%GMID%dgsave ) THEN 4067 fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid * fthk)4041 fgmid2d(ji,jj) = fgmid2d(ji,jj) + (fgmid(ji,jj) * fse3t(ji,jj,jk)) 4068 4042 ENDIF 4069 4043 IF( med_diag%MZMI%dgsave ) THEN 4070 fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi * fthk)4044 fdzmi2d(ji,jj) = fdzmi2d(ji,jj) + (fdzmi(ji,jj) * fse3t(ji,jj,jk)) 4071 4045 ENDIF 4072 4046 IF( med_diag%GMEPN%dgsave ) THEN 4073 fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn * fthk)4047 fgmepn2d(ji,jj) = fgmepn2d(ji,jj) + (fgmepn(ji,jj) * fse3t(ji,jj,jk)) 4074 4048 ENDIF 4075 4049 IF( med_diag%GMEPD%dgsave ) THEN 4076 fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd * fthk)4050 fgmepd2d(ji,jj) = fgmepd2d(ji,jj) + (fgmepd(ji,jj) * fse3t(ji,jj,jk)) 4077 4051 ENDIF 4078 4052 IF( med_diag%GMEZMI%dgsave ) THEN 4079 fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi * fthk)4053 fgmezmi2d(ji,jj) = fgmezmi2d(ji,jj) + (fgmezmi(ji,jj) * fse3t(ji,jj,jk)) 4080 4054 ENDIF 4081 4055 IF( med_diag%GMED%dgsave ) THEN 4082 fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed * fthk)4056 fgmed2d(ji,jj) = fgmed2d(ji,jj) + (fgmed(ji,jj) * fse3t(ji,jj,jk)) 4083 4057 ENDIF 4084 4058 IF( med_diag%MZME%dgsave ) THEN 4085 fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme * fthk)4059 fdzme2d(ji,jj) = fdzme2d(ji,jj) + (fdzme(ji,jj) * fse3t(ji,jj,jk)) 4086 4060 ENDIF 4087 4061 ! IF( med_diag%DEXP%dgsave ) THEN … … 4089 4063 ! ENDIF 4090 4064 IF( med_diag%DETN%dgsave ) THEN 4091 fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown * fthk)4065 fslown2d(ji,jj) = fslown2d(ji,jj) + (fslown(ji,jj) * fse3t(ji,jj,jk)) 4092 4066 ENDIF 4093 4067 IF( med_diag%MDET%dgsave ) THEN 4094 fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd * fthk)4068 fdd2d(ji,jj) = fdd2d(ji,jj) + (fdd(ji,jj) * fse3t(ji,jj,jk)) 4095 4069 ENDIF 4096 4070 IF( med_diag%AEOLIAN%dgsave ) THEN 4097 ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop * fthk)4071 ffetop2d(ji,jj) = ffetop2d(ji,jj) + (ffetop(ji,jj) * fse3t(ji,jj,jk)) 4098 4072 ENDIF 4099 4073 IF( med_diag%BENTHIC%dgsave ) THEN 4100 ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot * fthk)4074 ffebot2d(ji,jj) = ffebot2d(ji,jj) + (ffebot(ji,jj) * fse3t(ji,jj,jk)) 4101 4075 ENDIF 4102 4076 IF( med_diag%SCAVENGE%dgsave ) THEN 4103 ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav * fthk)4077 ffescav2d(ji,jj) = ffescav2d(ji,jj) + (ffescav(ji,jj) * fse3t(ji,jj,jk)) 4104 4078 ENDIF 4105 4079 IF( med_diag%PN_JLIM%dgsave ) THEN 4106 ! fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln * zphn * fthk)4107 fjln2d(ji,jj) = fjln2d(ji,jj) + (fjlim_pn * zphn * fthk)4080 ! fjln2d(ji,jj) = fjln2d(ji,jj) + (fjln(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) 4081 fjln2d(ji,jj) = fjln2d(ji,jj) + (fjlim_pn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) 4108 4082 ENDIF 4109 4083 IF( med_diag%PN_NLIM%dgsave ) THEN 4110 fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln * zphn * fthk)4084 fnln2d(ji,jj) = fnln2d(ji,jj) + (fnln(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) 4111 4085 ENDIF 4112 4086 IF( med_diag%PN_FELIM%dgsave ) THEN 4113 ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln * zphn * fthk)4087 ffln2d(ji,jj) = ffln2d(ji,jj) + (ffln(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) 4114 4088 ENDIF 4115 4089 IF( med_diag%PD_JLIM%dgsave ) THEN 4116 ! fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld * zphd * fthk)4117 fjld2d(ji,jj) = fjld2d(ji,jj) + (fjlim_pd * zphd * fthk)4090 ! fjld2d(ji,jj) = fjld2d(ji,jj) + (fjld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4091 fjld2d(ji,jj) = fjld2d(ji,jj) + (fjlim_pd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4118 4092 ENDIF 4119 4093 IF( med_diag%PD_NLIM%dgsave ) THEN 4120 fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld * zphd * fthk)4094 fnld2d(ji,jj) = fnld2d(ji,jj) + (fnld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4121 4095 ENDIF 4122 4096 IF( med_diag%PD_FELIM%dgsave ) THEN 4123 ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld * zphd * fthk)4097 ffld2d(ji,jj) = ffld2d(ji,jj) + (ffld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4124 4098 ENDIF 4125 4099 IF( med_diag%PD_SILIM%dgsave ) THEN 4126 fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2 * zphd * fthk)4100 fsld2d2(ji,jj) = fsld2d2(ji,jj) + (fsld2(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4127 4101 ENDIF 4128 4102 IF( med_diag%PDSILIM2%dgsave ) THEN 4129 fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld * zphd * fthk)4103 fsld2d(ji,jj) = fsld2d(ji,jj) + (fsld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) 4130 4104 ENDIF 4131 4105 !! 4132 4106 IF( med_diag%TOTREG_N%dgsave ) THEN 4133 fregen2d(ji,jj) = fregen2d(ji,jj) + fregen 4107 fregen2d(ji,jj) = fregen2d(ji,jj) + fregen(ji,jj) 4134 4108 ENDIF 4135 4109 IF( med_diag%TOTRG_SI%dgsave ) THEN 4136 fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi 4110 fregensi2d(ji,jj) = fregensi2d(ji,jj) + fregensi(ji,jj) 4137 4111 ENDIF 4138 4112 !! 4139 4113 IF( med_diag%FASTN%dgsave ) THEN 4140 ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn * fthk)4114 ftempn2d(ji,jj) = ftempn2d(ji,jj) + (ftempn(ji,jj) * fse3t(ji,jj,jk)) 4141 4115 ENDIF 4142 4116 IF( med_diag%FASTSI%dgsave ) THEN 4143 ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi * fthk)4117 ftempsi2d(ji,jj) = ftempsi2d(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 4144 4118 ENDIF 4145 4119 IF( med_diag%FASTFE%dgsave ) THEN 4146 ftempfe2d(ji,jj) =ftempfe2d(ji,jj) + (ftempfe * fthk)4120 ftempfe2d(ji,jj) =ftempfe2d(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 4147 4121 ENDIF 4148 4122 IF( med_diag%FASTC%dgsave ) THEN 4149 ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc * fthk)4123 ftempc2d(ji,jj) = ftempc2d(ji,jj) + (ftempc(ji,jj) * fse3t(ji,jj,jk)) 4150 4124 ENDIF 4151 4125 IF( med_diag%FASTCA%dgsave ) THEN 4152 ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca * fthk)4126 ftempca2d(ji,jj) = ftempca2d(ji,jj) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) 4153 4127 ENDIF 4154 4128 !! 4155 4129 IF( med_diag%REMINN%dgsave ) THEN 4156 freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn * fthk)4130 freminn2d(ji,jj) = freminn2d(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) 4157 4131 ENDIF 4158 4132 IF( med_diag%REMINSI%dgsave ) THEN 4159 freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi * fthk)4133 freminsi2d(ji,jj) = freminsi2d(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 4160 4134 ENDIF 4161 4135 IF( med_diag%REMINFE%dgsave ) THEN 4162 freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe * fthk)4136 freminfe2d(ji,jj)= freminfe2d(ji,jj) + (freminfe(ji,jj) * fse3t(ji,jj,jk)) 4163 4137 ENDIF 4164 4138 IF( med_diag%REMINC%dgsave ) THEN 4165 freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc * fthk)4139 freminc2d(ji,jj) = freminc2d(ji,jj) + (freminc(ji,jj) * fse3t(ji,jj,jk)) 4166 4140 ENDIF 4167 4141 IF( med_diag%REMINCA%dgsave ) THEN 4168 freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca * fthk)4142 freminca2d(ji,jj) = freminca2d(ji,jj) + (freminca(ji,jj) * fse3t(ji,jj,jk)) 4169 4143 ENDIF 4170 4144 !! … … 4200 4174 ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) 4201 4175 ENDIF 4202 ELSE IF (jk.eq. jmbathy) THEN4176 ELSE IF (jk.eq.mbathy(ji,jj)) THEN 4203 4177 IF( med_diag%IBEN_N%dgsave ) THEN 4204 4178 iben_n2d(ji,jj) = f_sbenin_n(ji,jj) + f_fbenin_n(ji,jj) … … 4244 4218 !! 4245 4219 IF( med_diag%RIV_N%dgsave ) THEN 4246 rivn2d(ji,jj) = rivn2d(ji,jj) + (f_riv_loc_n * fthk)4220 rivn2d(ji,jj) = rivn2d(ji,jj) + (f_riv_loc_n(ji,jj) * fse3t(ji,jj,jk)) 4247 4221 ENDIF 4248 4222 IF( med_diag%RIV_SI%dgsave ) THEN 4249 rivsi2d(ji,jj) = rivsi2d(ji,jj) + (f_riv_loc_si * fthk)4223 rivsi2d(ji,jj) = rivsi2d(ji,jj) + (f_riv_loc_si(ji,jj) * fse3t(ji,jj,jk)) 4250 4224 ENDIF 4251 4225 IF( med_diag%RIV_C%dgsave ) THEN 4252 rivc2d(ji,jj) = rivc2d(ji,jj) + (f_riv_loc_c * fthk)4226 rivc2d(ji,jj) = rivc2d(ji,jj) + (f_riv_loc_c(ji,jj) * fse3t(ji,jj,jk)) 4253 4227 ENDIF 4254 4228 IF( med_diag%RIV_ALK%dgsave ) THEN 4255 rivalk2d(ji,jj) = rivalk2d(ji,jj) + (f_riv_loc_alk * fthk)4229 rivalk2d(ji,jj) = rivalk2d(ji,jj) + (f_riv_loc_alk(ji,jj) * fse3t(ji,jj,jk)) 4256 4230 ENDIF 4257 4231 IF( med_diag%DETC%dgsave ) THEN 4258 fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc * fthk)4232 fslowc2d(ji,jj) = fslowc2d(ji,jj) + (fslowc(ji,jj) * fse3t(ji,jj,jk)) 4259 4233 ENDIF 4260 4234 !! … … 4262 4236 !! 4263 4237 IF( med_diag%PN_LLOSS%dgsave ) THEN 4264 fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2 * fthk)4238 fdpn22d(ji,jj) = fdpn22d(ji,jj) + (fdpn2(ji,jj) * fse3t(ji,jj,jk)) 4265 4239 ENDIF 4266 4240 IF( med_diag%PD_LLOSS%dgsave ) THEN 4267 fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2 * fthk)4241 fdpd22d(ji,jj) = fdpd22d(ji,jj) + (fdpd2(ji,jj) * fse3t(ji,jj,jk)) 4268 4242 ENDIF 4269 4243 IF( med_diag%ZI_LLOSS%dgsave ) THEN 4270 fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2 * fthk)4244 fdzmi22d(ji,jj) = fdzmi22d(ji,jj) + (fdzmi2(ji,jj) * fse3t(ji,jj,jk)) 4271 4245 ENDIF 4272 4246 IF( med_diag%ZE_LLOSS%dgsave ) THEN 4273 fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2 * fthk)4247 fdzme22d(ji,jj) = fdzme22d(ji,jj) + (fdzme2(ji,jj) * fse3t(ji,jj,jk)) 4274 4248 ENDIF 4275 4249 IF( med_diag%ZI_MES_N%dgsave ) THEN 4276 4250 zimesn2d(ji,jj) = zimesn2d(ji,jj) + & 4277 (xphi * (fgmipn + fgmid) * fthk)4251 (xphi * (fgmipn(ji,jj) + fgmid(ji,jj)) * fse3t(ji,jj,jk)) 4278 4252 ENDIF 4279 4253 IF( med_diag%ZI_MES_D%dgsave ) THEN 4280 4254 zimesd2d(ji,jj) = zimesd2d(ji,jj) + & 4281 ((1. - xbetan) * finmi * fthk)4255 ((1. - xbetan) * finmi(ji,jj) * fse3t(ji,jj,jk)) 4282 4256 ENDIF 4283 4257 IF( med_diag%ZI_MES_C%dgsave ) THEN 4284 4258 zimesc2d(ji,jj) = zimesc2d(ji,jj) + & 4285 (xphi * ((xthetapn * fgmipn ) + fgmidc) * fthk)4259 (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) * fse3t(ji,jj,jk)) 4286 4260 ENDIF 4287 4261 IF( med_diag%ZI_MESDC%dgsave ) THEN 4288 4262 zimesdc2d(ji,jj) = zimesdc2d(ji,jj) + & 4289 ((1. - xbetac) * ficmi * fthk)4263 ((1. - xbetac) * ficmi(ji,jj) * fse3t(ji,jj,jk)) 4290 4264 ENDIF 4291 4265 IF( med_diag%ZI_EXCR%dgsave ) THEN 4292 ziexcr2d(ji,jj) = ziexcr2d(ji,jj) + (fmiexcr * fthk)4266 ziexcr2d(ji,jj) = ziexcr2d(ji,jj) + (fmiexcr(ji,jj) * fse3t(ji,jj,jk)) 4293 4267 ENDIF 4294 4268 IF( med_diag%ZI_RESP%dgsave ) THEN 4295 ziresp2d(ji,jj) = ziresp2d(ji,jj) + (fmiresp * fthk)4269 ziresp2d(ji,jj) = ziresp2d(ji,jj) + (fmiresp(ji,jj) * fse3t(ji,jj,jk)) 4296 4270 ENDIF 4297 4271 IF( med_diag%ZI_GROW%dgsave ) THEN 4298 zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow * fthk)4272 zigrow2d(ji,jj) = zigrow2d(ji,jj) + (fmigrow(ji,jj) * fse3t(ji,jj,jk)) 4299 4273 ENDIF 4300 4274 IF( med_diag%ZE_MES_N%dgsave ) THEN 4301 4275 zemesn2d(ji,jj) = zemesn2d(ji,jj) + & 4302 (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk)4276 (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) * fse3t(ji,jj,jk)) 4303 4277 ENDIF 4304 4278 IF( med_diag%ZE_MES_D%dgsave ) THEN 4305 4279 zemesd2d(ji,jj) = zemesd2d(ji,jj) + & 4306 ((1. - xbetan) * finme * fthk)4280 ((1. - xbetan) * finme(ji,jj) * fse3t(ji,jj,jk)) 4307 4281 ENDIF 4308 4282 IF( med_diag%ZE_MES_C%dgsave ) THEN 4309 4283 zemesc2d(ji,jj) = zemesc2d(ji,jj) + & 4310 (xphi * ((xthetapn * fgmepn ) + (xthetapd * fgmepd) + &4311 (xthetazmi * fgmezmi ) + fgmedc) * fthk)4284 (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & 4285 (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) * fse3t(ji,jj,jk)) 4312 4286 ENDIF 4313 4287 IF( med_diag%ZE_MESDC%dgsave ) THEN 4314 4288 zemesdc2d(ji,jj) = zemesdc2d(ji,jj) + & 4315 ((1. - xbetac) * ficme * fthk)4289 ((1. - xbetac) * ficme(ji,jj) * fse3t(ji,jj,jk)) 4316 4290 ENDIF 4317 4291 IF( med_diag%ZE_EXCR%dgsave ) THEN 4318 zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr * fthk)4292 zeexcr2d(ji,jj) = zeexcr2d(ji,jj) + (fmeexcr(ji,jj) * fse3t(ji,jj,jk)) 4319 4293 ENDIF 4320 4294 IF( med_diag%ZE_RESP%dgsave ) THEN 4321 zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp * fthk)4295 zeresp2d(ji,jj) = zeresp2d(ji,jj) + (fmeresp(ji,jj) * fse3t(ji,jj,jk)) 4322 4296 ENDIF 4323 4297 IF( med_diag%ZE_GROW%dgsave ) THEN 4324 zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow * fthk)4298 zegrow2d(ji,jj) = zegrow2d(ji,jj) + (fmegrow(ji,jj) * fse3t(ji,jj,jk)) 4325 4299 ENDIF 4326 4300 IF( med_diag%MDETC%dgsave ) THEN 4327 mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc * fthk)4301 mdetc2d(ji,jj) = mdetc2d(ji,jj) + (fddc(ji,jj) * fse3t(ji,jj,jk)) 4328 4302 ENDIF 4329 4303 IF( med_diag%GMIDC%dgsave ) THEN 4330 gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc * fthk)4304 gmidc2d(ji,jj) = gmidc2d(ji,jj) + (fgmidc(ji,jj) * fse3t(ji,jj,jk)) 4331 4305 ENDIF 4332 4306 IF( med_diag%GMEDC%dgsave ) THEN 4333 gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc * fthk)4307 gmedc2d(ji,jj) = gmedc2d(ji,jj) + (fgmedc(ji,jj) * fse3t(ji,jj,jk)) 4334 4308 ENDIF 4335 4309 !! … … 4338 4312 !! ** 3D diagnostics 4339 4313 IF( med_diag%TPP3%dgsave ) THEN 4340 tpp3d(ji,jj,jk) = (fprn * zphn) + (fprd * zphd)4314 tpp3d(ji,jj,jk) = (fprn(ji,jj) * zphn(ji,jj)) + (fprd(ji,jj) * zphd(ji,jj)) 4341 4315 !CALL iom_put( "TPP3" , tpp3d ) 4342 4316 ENDIF 4343 4317 IF( med_diag%TPPD3%dgsave ) THEN 4344 tppd3(ji,jj,jk) = (fprd * zphd)4318 tppd3(ji,jj,jk) = (fprd(ji,jj) * zphd(ji,jj)) 4345 4319 ENDIF 4346 4320 4347 4321 IF( med_diag%REMIN3N%dgsave ) THEN 4348 remin3dn(ji,jj,jk) = fregen + (freminn * fthk) !! remineralisation4322 remin3dn(ji,jj,jk) = fregen(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) !! remineralisation 4349 4323 !CALL iom_put( "REMIN3N" , remin3dn ) 4350 4324 ENDIF … … 4358 4332 !! AXY (09/11/16): CMIP6 diagnostics 4359 4333 IF ( med_diag%DCALC3%dgsave ) THEN 4360 dcalc3(ji,jj,jk) = freminca 4334 dcalc3(ji,jj,jk) = freminca(ji,jj) 4361 4335 ENDIF 4362 4336 IF ( med_diag%FEDISS3%dgsave ) THEN 4363 fediss3(ji,jj,jk) = ffetop 4337 fediss3(ji,jj,jk) = ffetop(ji,jj) 4364 4338 ENDIF 4365 4339 IF ( med_diag%FESCAV3%dgsave ) THEN 4366 fescav3(ji,jj,jk) = ffescav 4340 fescav3(ji,jj,jk) = ffescav(ji,jj) 4367 4341 ENDIF 4368 4342 IF ( med_diag%MIGRAZP3%dgsave ) THEN 4369 migrazp3(ji,jj,jk) = fgmipn * xthetapn4343 migrazp3(ji,jj,jk) = fgmipn(ji,jj) * xthetapn 4370 4344 ENDIF 4371 4345 IF ( med_diag%MIGRAZD3%dgsave ) THEN 4372 migrazd3(ji,jj,jk) = fgmidc 4346 migrazd3(ji,jj,jk) = fgmidc(ji,jj) 4373 4347 ENDIF 4374 4348 IF ( med_diag%MEGRAZP3%dgsave ) THEN 4375 megrazp3(ji,jj,jk) = (fgmepn * xthetapn) + (fgmepd* xthetapd)4349 megrazp3(ji,jj,jk) = (fgmepn(ji,jj) * xthetapn) + (fgmepd(ji,jj) * xthetapd) 4376 4350 ENDIF 4377 4351 IF ( med_diag%MEGRAZD3%dgsave ) THEN 4378 megrazd3(ji,jj,jk) = fgmedc 4352 megrazd3(ji,jj,jk) = fgmedc(ji,jj) 4379 4353 ENDIF 4380 4354 IF ( med_diag%MEGRAZZ3%dgsave ) THEN 4381 megrazz3(ji,jj,jk) = (fgmezmi * xthetazmi)4355 megrazz3(ji,jj,jk) = (fgmezmi(ji,jj) * xthetazmi) 4382 4356 ENDIF 4383 4357 IF ( med_diag%PBSI3%dgsave ) THEN 4384 pbsi3(ji,jj,jk) = (fprds * zpds)4358 pbsi3(ji,jj,jk) = (fprds(ji,jj) * zpds(ji,jj)) 4385 4359 ENDIF 4386 4360 IF ( med_diag%PCAL3%dgsave ) THEN 4387 pcal3(ji,jj,jk) = ftempca 4361 pcal3(ji,jj,jk) = ftempca(ji,jj) 4388 4362 ENDIF 4389 4363 IF ( med_diag%REMOC3%dgsave ) THEN 4390 remoc3(ji,jj,jk) = freminc 4364 remoc3(ji,jj,jk) = freminc(ji,jj) 4391 4365 ENDIF 4392 4366 IF ( med_diag%PNLIMJ3%dgsave ) THEN 4393 ! pnlimj3(ji,jj,jk) = fjln 4394 pnlimj3(ji,jj,jk) = fjlim_pn 4367 ! pnlimj3(ji,jj,jk) = fjln(ji,jj) 4368 pnlimj3(ji,jj,jk) = fjlim_pn(ji,jj) 4395 4369 ENDIF 4396 4370 IF ( med_diag%PNLIMN3%dgsave ) THEN 4397 pnlimn3(ji,jj,jk) = fnln 4371 pnlimn3(ji,jj,jk) = fnln(ji,jj) 4398 4372 ENDIF 4399 4373 IF ( med_diag%PNLIMFE3%dgsave ) THEN 4400 pnlimfe3(ji,jj,jk) = ffln 4374 pnlimfe3(ji,jj,jk) = ffln(ji,jj) 4401 4375 ENDIF 4402 4376 IF ( med_diag%PDLIMJ3%dgsave ) THEN 4403 ! pdlimj3(ji,jj,jk) = fjld 4404 pdlimj3(ji,jj,jk) = fjlim_pd 4377 ! pdlimj3(ji,jj,jk) = fjld(ji,jj) 4378 pdlimj3(ji,jj,jk) = fjlim_pd(ji,jj) 4405 4379 ENDIF 4406 4380 IF ( med_diag%PDLIMN3%dgsave ) THEN 4407 pdlimn3(ji,jj,jk) = fnld 4381 pdlimn3(ji,jj,jk) = fnld(ji,jj) 4408 4382 ENDIF 4409 4383 IF ( med_diag%PDLIMFE3%dgsave ) THEN 4410 pdlimfe3(ji,jj,jk) = ffld 4384 pdlimfe3(ji,jj,jk) = ffld(ji,jj) 4411 4385 ENDIF 4412 4386 IF ( med_diag%PDLIMSI3%dgsave ) THEN 4413 pdlimsi3(ji,jj,jk) = fsld2 4387 pdlimsi3(ji,jj,jk) = fsld2(ji,jj) 4414 4388 ENDIF 4415 4389 !! … … 4430 4404 trc2d(ji,jj,2) = ftot_si(ji,jj) !! silicon inventory 4431 4405 trc2d(ji,jj,3) = ftot_fe(ji,jj) !! iron inventory 4432 trc2d(ji,jj,4) = trc2d(ji,jj,4) + (fprn * zphn * fthk) !! non-diatom production4433 trc2d(ji,jj,5) = trc2d(ji,jj,5) + (fdpn * fthk) !! non-diatom non-grazing losses4434 trc2d(ji,jj,6) = trc2d(ji,jj,6) + (fprd * zphd * fthk) !! diatom production4435 trc2d(ji,jj,7) = trc2d(ji,jj,7) + (fdpd * fthk) !! diatom non-grazing losses4406 trc2d(ji,jj,4) = trc2d(ji,jj,4) + (fprn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom production 4407 trc2d(ji,jj,5) = trc2d(ji,jj,5) + (fdpn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom non-grazing losses 4408 trc2d(ji,jj,6) = trc2d(ji,jj,6) + (fprd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom production 4409 trc2d(ji,jj,7) = trc2d(ji,jj,7) + (fdpd(ji,jj) * fse3t(ji,jj,jk)) !! diatom non-grazing losses 4436 4410 !! diagnostic field 8 is (ostensibly) supplied by trcsed.F 4437 trc2d(ji,jj,9) = trc2d(ji,jj,9) + (fprds * zpds * fthk) !! diatom silicon production4438 trc2d(ji,jj,10) = trc2d(ji,jj,10) + (fsdiss * fthk) !! diatom silicon dissolution4439 trc2d(ji,jj,11) = trc2d(ji,jj,11) + (fgmipn * fthk) !! microzoo grazing on non-diatoms4440 trc2d(ji,jj,12) = trc2d(ji,jj,12) + (fgmid * fthk) !! microzoo grazing on detrital nitrogen4441 trc2d(ji,jj,13) = trc2d(ji,jj,13) + (fdzmi * fthk) !! microzoo non-grazing losses4442 trc2d(ji,jj,14) = trc2d(ji,jj,14) + (fgmepn * fthk) !! mesozoo grazing on non-diatoms4443 trc2d(ji,jj,15) = trc2d(ji,jj,15) + (fgmepd * fthk) !! mesozoo grazing on diatoms4444 trc2d(ji,jj,16) = trc2d(ji,jj,16) + (fgmezmi * fthk) !! mesozoo grazing on microzoo4445 trc2d(ji,jj,17) = trc2d(ji,jj,17) + (fgmed * fthk) !! mesozoo grazing on detrital nitrogen4446 trc2d(ji,jj,18) = trc2d(ji,jj,18) + (fdzme * fthk) !! mesozoo non-grazing losses4411 trc2d(ji,jj,9) = trc2d(ji,jj,9) + (fprds(ji,jj) * zpds(ji,jj) * fse3t(ji,jj,jk)) !! diatom silicon production 4412 trc2d(ji,jj,10) = trc2d(ji,jj,10) + (fsdiss(ji,jj) * fse3t(ji,jj,jk)) !! diatom silicon dissolution 4413 trc2d(ji,jj,11) = trc2d(ji,jj,11) + (fgmipn(ji,jj) * fse3t(ji,jj,jk)) !! microzoo grazing on non-diatoms 4414 trc2d(ji,jj,12) = trc2d(ji,jj,12) + (fgmid(ji,jj) * fse3t(ji,jj,jk)) !! microzoo grazing on detrital nitrogen 4415 trc2d(ji,jj,13) = trc2d(ji,jj,13) + (fdzmi(ji,jj) * fse3t(ji,jj,jk)) !! microzoo non-grazing losses 4416 trc2d(ji,jj,14) = trc2d(ji,jj,14) + (fgmepn(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo grazing on non-diatoms 4417 trc2d(ji,jj,15) = trc2d(ji,jj,15) + (fgmepd(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo grazing on diatoms 4418 trc2d(ji,jj,16) = trc2d(ji,jj,16) + (fgmezmi(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo grazing on microzoo 4419 trc2d(ji,jj,17) = trc2d(ji,jj,17) + (fgmed(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo grazing on detrital nitrogen 4420 trc2d(ji,jj,18) = trc2d(ji,jj,18) + (fdzme(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo non-grazing losses 4447 4421 !! diagnostic field 19 is (ostensibly) supplied by trcexp.F 4448 trc2d(ji,jj,20) = trc2d(ji,jj,20) + (fslown * fthk) !! slow sinking detritus N production4449 trc2d(ji,jj,21) = trc2d(ji,jj,21) + (fdd * fthk) !! detrital remineralisation4450 trc2d(ji,jj,22) = trc2d(ji,jj,22) + (ffetop * fthk) !! aeolian iron addition4451 trc2d(ji,jj,23) = trc2d(ji,jj,23) + (ffebot * fthk) !! seafloor iron addition4452 trc2d(ji,jj,24) = trc2d(ji,jj,24) + (ffescav * fthk) !! "free" iron scavenging4453 trc2d(ji,jj,25) = trc2d(ji,jj,25) + (fjlim_pn * zphn * fthk) !! non-diatom J limitation term4454 trc2d(ji,jj,26) = trc2d(ji,jj,26) + (fnln * zphn * fthk) !! non-diatom N limitation term4455 trc2d(ji,jj,27) = trc2d(ji,jj,27) + (ffln * zphn * fthk) !! non-diatom Fe limitation term4456 trc2d(ji,jj,28) = trc2d(ji,jj,28) + (fjlim_pd * zphd * fthk) !! diatom J limitation term4457 trc2d(ji,jj,29) = trc2d(ji,jj,29) + (fnld * zphd * fthk) !! diatom N limitation term4458 trc2d(ji,jj,30) = trc2d(ji,jj,30) + (ffld * zphd * fthk) !! diatom Fe limitation term4459 trc2d(ji,jj,31) = trc2d(ji,jj,31) + (fsld2 * zphd * fthk) !! diatom Si limitation term4460 trc2d(ji,jj,32) = trc2d(ji,jj,32) + (fsld * zphd * fthk) !! diatom Si uptake limitation term4422 trc2d(ji,jj,20) = trc2d(ji,jj,20) + (fslown(ji,jj) * fse3t(ji,jj,jk)) !! slow sinking detritus N production 4423 trc2d(ji,jj,21) = trc2d(ji,jj,21) + (fdd(ji,jj) * fse3t(ji,jj,jk)) !! detrital remineralisation 4424 trc2d(ji,jj,22) = trc2d(ji,jj,22) + (ffetop(ji,jj) * fse3t(ji,jj,jk)) !! aeolian iron addition 4425 trc2d(ji,jj,23) = trc2d(ji,jj,23) + (ffebot(ji,jj) * fse3t(ji,jj,jk)) !! seafloor iron addition 4426 trc2d(ji,jj,24) = trc2d(ji,jj,24) + (ffescav(ji,jj) * fse3t(ji,jj,jk)) !! "free" iron scavenging 4427 trc2d(ji,jj,25) = trc2d(ji,jj,25) + (fjlim_pn(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom J limitation term 4428 trc2d(ji,jj,26) = trc2d(ji,jj,26) + (fnln(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom N limitation term 4429 trc2d(ji,jj,27) = trc2d(ji,jj,27) + (ffln(ji,jj) * zphn(ji,jj) * fse3t(ji,jj,jk)) !! non-diatom Fe limitation term 4430 trc2d(ji,jj,28) = trc2d(ji,jj,28) + (fjlim_pd(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom J limitation term 4431 trc2d(ji,jj,29) = trc2d(ji,jj,29) + (fnld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom N limitation term 4432 trc2d(ji,jj,30) = trc2d(ji,jj,30) + (ffld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom Fe limitation term 4433 trc2d(ji,jj,31) = trc2d(ji,jj,31) + (fsld2(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom Si limitation term 4434 trc2d(ji,jj,32) = trc2d(ji,jj,32) + (fsld(ji,jj) * zphd(ji,jj) * fse3t(ji,jj,jk)) !! diatom Si uptake limitation term 4461 4435 if (jk.eq.i0100) trc2d(ji,jj,33) = fslownflux(ji,jj) !! slow detritus flux at 100 m 4462 4436 if (jk.eq.i0200) trc2d(ji,jj,34) = fslownflux(ji,jj) !! slow detritus flux at 200 m 4463 4437 if (jk.eq.i0500) trc2d(ji,jj,35) = fslownflux(ji,jj) !! slow detritus flux at 500 m 4464 4438 if (jk.eq.i1000) trc2d(ji,jj,36) = fslownflux(ji,jj) !! slow detritus flux at 1000 m 4465 trc2d(ji,jj,37) = trc2d(ji,jj,37) + fregen !! non-fast N full column regeneration4466 trc2d(ji,jj,38) = trc2d(ji,jj,38) + fregensi !! non-fast Si full column regeneration4439 trc2d(ji,jj,37) = trc2d(ji,jj,37) + fregen(ji,jj) !! non-fast N full column regeneration 4440 trc2d(ji,jj,38) = trc2d(ji,jj,38) + fregensi(ji,jj) !! non-fast Si full column regeneration 4467 4441 if (jk.eq.i0100) trc2d(ji,jj,39) = trc2d(ji,jj,37) !! non-fast N regeneration to 100 m 4468 4442 if (jk.eq.i0200) trc2d(ji,jj,40) = trc2d(ji,jj,37) !! non-fast N regeneration to 200 m 4469 4443 if (jk.eq.i0500) trc2d(ji,jj,41) = trc2d(ji,jj,37) !! non-fast N regeneration to 500 m 4470 4444 if (jk.eq.i1000) trc2d(ji,jj,42) = trc2d(ji,jj,37) !! non-fast N regeneration to 1000 m 4471 trc2d(ji,jj,43) = trc2d(ji,jj,43) + (ftempn * fthk) !! fast sinking detritus N production4472 trc2d(ji,jj,44) = trc2d(ji,jj,44) + (ftempsi * fthk) !! fast sinking detritus Si production4473 trc2d(ji,jj,45) = trc2d(ji,jj,45) + (ftempfe * fthk) !! fast sinking detritus Fe production4474 trc2d(ji,jj,46) = trc2d(ji,jj,46) + (ftempc * fthk) !! fast sinking detritus C production4475 trc2d(ji,jj,47) = trc2d(ji,jj,47) + (ftempca * fthk) !! fast sinking detritus CaCO3 production4445 trc2d(ji,jj,43) = trc2d(ji,jj,43) + (ftempn(ji,jj) * fse3t(ji,jj,jk)) !! fast sinking detritus N production 4446 trc2d(ji,jj,44) = trc2d(ji,jj,44) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) !! fast sinking detritus Si production 4447 trc2d(ji,jj,45) = trc2d(ji,jj,45) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) !! fast sinking detritus Fe production 4448 trc2d(ji,jj,46) = trc2d(ji,jj,46) + (ftempc(ji,jj) * fse3t(ji,jj,jk)) !! fast sinking detritus C production 4449 trc2d(ji,jj,47) = trc2d(ji,jj,47) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) !! fast sinking detritus CaCO3 production 4476 4450 if (jk.eq.i0100) trc2d(ji,jj,48) = ffastn(ji,jj) !! fast detritus N flux at 100 m 4477 4451 if (jk.eq.i0200) trc2d(ji,jj,49) = ffastn(ji,jj) !! fast detritus N flux at 200 m … … 4490 4464 if (jk.eq.i0500) trc2d(ji,jj,62) = fregenfastsi(ji,jj) !! Si regeneration to 500 m 4491 4465 if (jk.eq.i1000) trc2d(ji,jj,63) = fregenfastsi(ji,jj) !! Si regeneration to 1000 m 4492 trc2d(ji,jj,64) = trc2d(ji,jj,64) + (freminn * fthk) !! sum of fast-sinking N fluxes4493 trc2d(ji,jj,65) = trc2d(ji,jj,65) + (freminsi * fthk) !! sum of fast-sinking Si fluxes4494 trc2d(ji,jj,66) = trc2d(ji,jj,66) + (freminfe * fthk) !! sum of fast-sinking Fe fluxes4495 trc2d(ji,jj,67) = trc2d(ji,jj,67) + (freminc * fthk) !! sum of fast-sinking C fluxes4496 trc2d(ji,jj,68) = trc2d(ji,jj,68) + (freminca * fthk) !! sum of fast-sinking Ca fluxes4497 if (jk.eq. jmbathy) then4466 trc2d(ji,jj,64) = trc2d(ji,jj,64) + (freminn(ji,jj) * fse3t(ji,jj,jk)) !! sum of fast-sinking N fluxes 4467 trc2d(ji,jj,65) = trc2d(ji,jj,65) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) !! sum of fast-sinking Si fluxes 4468 trc2d(ji,jj,66) = trc2d(ji,jj,66) + (freminfe(ji,jj) * fse3t(ji,jj,jk)) !! sum of fast-sinking Fe fluxes 4469 trc2d(ji,jj,67) = trc2d(ji,jj,67) + (freminc(ji,jj) * fse3t(ji,jj,jk)) !! sum of fast-sinking C fluxes 4470 trc2d(ji,jj,68) = trc2d(ji,jj,68) + (freminca(ji,jj) * fse3t(ji,jj,jk)) !! sum of fast-sinking Ca fluxes 4471 if (jk.eq.mbathy(ji,jj)) then 4498 4472 trc2d(ji,jj,69) = fsedn(ji,jj) !! N sedimentation flux 4499 4473 trc2d(ji,jj,70) = fsedsi(ji,jj) !! Si sedimentation flux … … 4504 4478 if (jk.eq.1) trc2d(ji,jj,74) = qsr(ji,jj) 4505 4479 if (jk.eq.1) trc2d(ji,jj,75) = xpar(ji,jj,jk) 4506 !! if (jk.eq.1) trc2d(ji,jj,75) = real(iters )4480 !! if (jk.eq.1) trc2d(ji,jj,75) = real(iters(ji,jj)) 4507 4481 !! diagnostic fields 76 to 80 calculated below 4508 4482 trc2d(ji,jj,81) = trc2d(ji,jj,81) + fprn_ml(ji,jj) !! mixed layer non-diatom production … … 4525 4499 !! ROAM provisionally has access to a further 20 2D diagnostics 4526 4500 if (jk .eq. 1) then 4527 trc2d(ji,jj,91) = trc2d(ji,jj,91) + f_wind!! surface wind4528 trc2d(ji,jj,92) = trc2d(ji,jj,92) + f_pco2atm !! atmospheric pCO24529 trc2d(ji,jj,93) = trc2d(ji,jj,93) + f_ph !! ocean pH4530 trc2d(ji,jj,94) = trc2d(ji,jj,94) + f_pco2w !! ocean pCO24531 trc2d(ji,jj,95) = trc2d(ji,jj,95) + f_h2co3 !! ocean H2CO3 conc.4532 trc2d(ji,jj,96) = trc2d(ji,jj,96) + f_hco3 !! ocean HCO3 conc.4533 trc2d(ji,jj,97) = trc2d(ji,jj,97) + f_co3 !! ocean CO3 conc.4534 trc2d(ji,jj,98) = trc2d(ji,jj,98) + f_co2flux !! air-sea CO2 flux4501 trc2d(ji,jj,91) = trc2d(ji,jj,91) + wndm(ji,jj) !! surface wind 4502 trc2d(ji,jj,92) = trc2d(ji,jj,92) + f_pco2atm(ji,jj) !! atmospheric pCO2 4503 trc2d(ji,jj,93) = trc2d(ji,jj,93) + f_ph(ji,jj) !! ocean pH 4504 trc2d(ji,jj,94) = trc2d(ji,jj,94) + f_pco2w(ji,jj) !! ocean pCO2 4505 trc2d(ji,jj,95) = trc2d(ji,jj,95) + f_h2co3(ji,jj) !! ocean H2CO3 conc. 4506 trc2d(ji,jj,96) = trc2d(ji,jj,96) + f_hco3(ji,jj) !! ocean HCO3 conc. 4507 trc2d(ji,jj,97) = trc2d(ji,jj,97) + f_co3(ji,jj) !! ocean CO3 conc. 4508 trc2d(ji,jj,98) = trc2d(ji,jj,98) + f_co2flux(ji,jj) !! air-sea CO2 flux 4535 4509 trc2d(ji,jj,99) = trc2d(ji,jj,99) + f_omcal(ji,jj) !! ocean omega calcite 4536 4510 trc2d(ji,jj,100) = trc2d(ji,jj,100) + f_omarg(ji,jj) !! ocean omega aragonite 4537 trc2d(ji,jj,101) = trc2d(ji,jj,101) + f_TDIC !! ocean TDIC4538 trc2d(ji,jj,102) = trc2d(ji,jj,102) + f_TALK !! ocean TALK4539 trc2d(ji,jj,103) = trc2d(ji,jj,103) + f_kw660 !! surface kw6604540 trc2d(ji,jj,104) = trc2d(ji,jj,104) + f_pp0 !! surface pressure4541 trc2d(ji,jj,105) = trc2d(ji,jj,105) + f_o2flux !! air-sea O2 flux4542 trc2d(ji,jj,106) = trc2d(ji,jj,106) + f_o2sat !! ocean O2 saturation4511 trc2d(ji,jj,101) = trc2d(ji,jj,101) + f_TDIC(ji,jj) !! ocean TDIC 4512 trc2d(ji,jj,102) = trc2d(ji,jj,102) + f_TALK(ji,jj) !! ocean TALK 4513 trc2d(ji,jj,103) = trc2d(ji,jj,103) + f_kw660(ji,jj) !! surface kw660 4514 trc2d(ji,jj,104) = trc2d(ji,jj,104) + f_pp0(ji,jj) !! surface pressure 4515 trc2d(ji,jj,105) = trc2d(ji,jj,105) + f_o2flux(ji,jj) !! air-sea O2 flux 4516 trc2d(ji,jj,106) = trc2d(ji,jj,106) + f_o2sat(ji,jj) !! ocean O2 saturation 4543 4517 trc2d(ji,jj,107) = f2_ccd_cal(ji,jj) !! depth calcite CCD 4544 4518 trc2d(ji,jj,108) = f2_ccd_arg(ji,jj) !! depth aragonite CCD 4545 4519 endif 4546 if (jk .eq. jmbathy) then4520 if (jk .eq. mbathy(ji,jj)) then 4547 4521 trc2d(ji,jj,109) = f3_omcal(ji,jj,jk) !! seafloor omega calcite 4548 4522 trc2d(ji,jj,110) = f3_omarg(ji,jj,jk) !! seafloor omega aragonite … … 4553 4527 if (jk.eq.i1000) trc2d(ji,jj,120) = ffastca(ji,jj)/MAX(ffastc(ji,jj), rsmall) !! rain ratio at 1000 m 4554 4528 !! AXY (18/01/12): benthic flux diagnostics 4555 if (jk.eq. jmbathy) then4529 if (jk.eq.mbathy(ji,jj)) then 4556 4530 trc2d(ji,jj,121) = f_sbenin_n(ji,jj) + f_fbenin_n(ji,jj) 4557 4531 trc2d(ji,jj,122) = f_sbenin_fe(ji,jj) + f_fbenin_fe(ji,jj) … … 4568 4542 trc2d(ji,jj,136) = f_runoff(ji,jj) 4569 4543 !! AXY (19/07/12): amended to allow for riverine nutrient addition below surface 4570 trc2d(ji,jj,137) = trc2d(ji,jj,137) + (f_riv_loc_n * fthk)4571 trc2d(ji,jj,138) = trc2d(ji,jj,138) + (f_riv_loc_si * fthk)4572 trc2d(ji,jj,139) = trc2d(ji,jj,139) + (f_riv_loc_c * fthk)4573 trc2d(ji,jj,140) = trc2d(ji,jj,140) + (f_riv_loc_alk * fthk)4574 trc2d(ji,jj,141) = trc2d(ji,jj,141) + (fslowc * fthk) !! slow sinking detritus C production4544 trc2d(ji,jj,137) = trc2d(ji,jj,137) + (f_riv_loc_n(ji,jj) * fse3t(ji,jj,jk)) 4545 trc2d(ji,jj,138) = trc2d(ji,jj,138) + (f_riv_loc_si(ji,jj) * fse3t(ji,jj,jk)) 4546 trc2d(ji,jj,139) = trc2d(ji,jj,139) + (f_riv_loc_c(ji,jj) * fse3t(ji,jj,jk)) 4547 trc2d(ji,jj,140) = trc2d(ji,jj,140) + (f_riv_loc_alk(ji,jj) * fse3t(ji,jj,jk)) 4548 trc2d(ji,jj,141) = trc2d(ji,jj,141) + (fslowc(ji,jj) * fse3t(ji,jj,jk)) !! slow sinking detritus C production 4575 4549 if (jk.eq.i0100) trc2d(ji,jj,142) = fslowcflux(ji,jj) !! slow detritus flux at 100 m 4576 4550 if (jk.eq.i0200) trc2d(ji,jj,143) = fslowcflux(ji,jj) !! slow detritus flux at 200 m … … 4580 4554 trc2d(ji,jj,147) = trc2d(ji,jj,147) + ftot_a(ji,jj) !! alkalinity inventory 4581 4555 trc2d(ji,jj,148) = trc2d(ji,jj,148) + ftot_o2(ji,jj) !! oxygen inventory 4582 if (jk.eq. jmbathy) then4556 if (jk.eq.mbathy(ji,jj)) then 4583 4557 trc2d(ji,jj,149) = f_benout_lyso_ca(ji,jj) 4584 4558 endif 4585 trc2d(ji,jj,150) = fcomm_resp(ji,jj) * f thk!! community respiration4559 trc2d(ji,jj,150) = fcomm_resp(ji,jj) * fse3t(ji,jj,jk) !! community respiration 4586 4560 !! 4587 4561 !! AXY (14/02/14): a Valentines Day gift to BASIN - a shedload of new … … 4593 4567 !! linear losses 4594 4568 !! non-diatom 4595 trc2d(ji,jj,151) = trc2d(ji,jj,151) + (fdpn2 * fthk)4569 trc2d(ji,jj,151) = trc2d(ji,jj,151) + (fdpn2(ji,jj) * fse3t(ji,jj,jk)) 4596 4570 !! diatom 4597 trc2d(ji,jj,152) = trc2d(ji,jj,152) + (fdpd2 * fthk)4571 trc2d(ji,jj,152) = trc2d(ji,jj,152) + (fdpd2(ji,jj) * fse3t(ji,jj,jk)) 4598 4572 !! microzooplankton 4599 trc2d(ji,jj,153) = trc2d(ji,jj,153) + (fdzmi2 * fthk)4573 trc2d(ji,jj,153) = trc2d(ji,jj,153) + (fdzmi2(ji,jj) * fse3t(ji,jj,jk)) 4600 4574 !! mesozooplankton 4601 trc2d(ji,jj,154) = trc2d(ji,jj,154) + (fdzme2 * fthk)4575 trc2d(ji,jj,154) = trc2d(ji,jj,154) + (fdzme2(ji,jj) * fse3t(ji,jj,jk)) 4602 4576 !! ---------------------------------------------------------------------- 4603 4577 !! microzooplankton grazing 4604 4578 !! microzooplankton messy -> N 4605 trc2d(ji,jj,155) = trc2d(ji,jj,155) + (xphi * (fgmipn + fgmid) * fthk)4579 trc2d(ji,jj,155) = trc2d(ji,jj,155) + (xphi * (fgmipn(ji,jj) + fgmid(ji,jj)) * fse3t(ji,jj,jk)) 4606 4580 !! microzooplankton messy -> D 4607 trc2d(ji,jj,156) = trc2d(ji,jj,156) + ((1. - xbetan) * finmi * fthk)4581 trc2d(ji,jj,156) = trc2d(ji,jj,156) + ((1. - xbetan) * finmi(ji,jj) * fse3t(ji,jj,jk)) 4608 4582 !! microzooplankton messy -> DIC 4609 trc2d(ji,jj,157) = trc2d(ji,jj,157) + (xphi * ((xthetapn * fgmipn ) + fgmidc) * fthk)4583 trc2d(ji,jj,157) = trc2d(ji,jj,157) + (xphi * ((xthetapn * fgmipn(ji,jj)) + fgmidc(ji,jj)) * fse3t(ji,jj,jk)) 4610 4584 !! microzooplankton messy -> Dc 4611 trc2d(ji,jj,158) = trc2d(ji,jj,158) + ((1. - xbetac) * ficmi * fthk)4585 trc2d(ji,jj,158) = trc2d(ji,jj,158) + ((1. - xbetac) * ficmi(ji,jj) * fse3t(ji,jj,jk)) 4612 4586 !! microzooplankton excretion 4613 trc2d(ji,jj,159) = trc2d(ji,jj,159) + (fmiexcr * fthk)4587 trc2d(ji,jj,159) = trc2d(ji,jj,159) + (fmiexcr(ji,jj) * fse3t(ji,jj,jk)) 4614 4588 !! microzooplankton respiration 4615 trc2d(ji,jj,160) = trc2d(ji,jj,160) + (fmiresp * fthk)4589 trc2d(ji,jj,160) = trc2d(ji,jj,160) + (fmiresp(ji,jj) * fse3t(ji,jj,jk)) 4616 4590 !! microzooplankton growth 4617 trc2d(ji,jj,161) = trc2d(ji,jj,161) + (fmigrow * fthk)4591 trc2d(ji,jj,161) = trc2d(ji,jj,161) + (fmigrow(ji,jj) * fse3t(ji,jj,jk)) 4618 4592 !! ---------------------------------------------------------------------- 4619 4593 !! mesozooplankton grazing 4620 4594 !! mesozooplankton messy -> N 4621 trc2d(ji,jj,162) = trc2d(ji,jj,162) + (xphi * (fgmepn + fgmepd + fgmezmi + fgmed) * fthk)4595 trc2d(ji,jj,162) = trc2d(ji,jj,162) + (xphi * (fgmepn(ji,jj) + fgmepd(ji,jj) + fgmezmi(ji,jj) + fgmed(ji,jj)) * fse3t(ji,jj,jk)) 4622 4596 !! mesozooplankton messy -> D 4623 trc2d(ji,jj,163) = trc2d(ji,jj,163) + ((1. - xbetan) * finme * fthk)4597 trc2d(ji,jj,163) = trc2d(ji,jj,163) + ((1. - xbetan) * finme(ji,jj) * fse3t(ji,jj,jk)) 4624 4598 !! mesozooplankton messy -> DIC 4625 trc2d(ji,jj,164) = trc2d(ji,jj,164) + (xphi * ((xthetapn * fgmepn ) + (xthetapd * fgmepd) + &4626 & (xthetazmi * fgmezmi ) + fgmedc) * fthk)4599 trc2d(ji,jj,164) = trc2d(ji,jj,164) + (xphi * ((xthetapn * fgmepn(ji,jj)) + (xthetapd * fgmepd(ji,jj)) + & 4600 & (xthetazmi * fgmezmi(ji,jj)) + fgmedc(ji,jj)) * fse3t(ji,jj,jk)) 4627 4601 !! mesozooplankton messy -> Dc 4628 trc2d(ji,jj,165) = trc2d(ji,jj,165) + ((1. - xbetac) * ficme * fthk)4602 trc2d(ji,jj,165) = trc2d(ji,jj,165) + ((1. - xbetac) * ficme(ji,jj) * fse3t(ji,jj,jk)) 4629 4603 !! mesozooplankton excretion 4630 trc2d(ji,jj,166) = trc2d(ji,jj,166) + (fmeexcr * fthk)4604 trc2d(ji,jj,166) = trc2d(ji,jj,166) + (fmeexcr(ji,jj) * fse3t(ji,jj,jk)) 4631 4605 !! mesozooplankton respiration 4632 trc2d(ji,jj,167) = trc2d(ji,jj,167) + (fmeresp * fthk)4606 trc2d(ji,jj,167) = trc2d(ji,jj,167) + (fmeresp(ji,jj) * fse3t(ji,jj,jk)) 4633 4607 !! mesozooplankton growth 4634 trc2d(ji,jj,168) = trc2d(ji,jj,168) + (fmegrow * fthk)4608 trc2d(ji,jj,168) = trc2d(ji,jj,168) + (fmegrow(ji,jj) * fse3t(ji,jj,jk)) 4635 4609 !! ---------------------------------------------------------------------- 4636 4610 !! miscellaneous 4637 trc2d(ji,jj,169) = trc2d(ji,jj,169) + (fddc * fthk) !! detrital C remineralisation4638 trc2d(ji,jj,170) = trc2d(ji,jj,170) + (fgmidc * fthk) !! microzoo grazing on detrital carbon4639 trc2d(ji,jj,171) = trc2d(ji,jj,171) + (fgmedc * fthk) !! mesozoo grazing on detrital carbon4611 trc2d(ji,jj,169) = trc2d(ji,jj,169) + (fddc(ji,jj) * fse3t(ji,jj,jk)) !! detrital C remineralisation 4612 trc2d(ji,jj,170) = trc2d(ji,jj,170) + (fgmidc(ji,jj) * fse3t(ji,jj,jk)) !! microzoo grazing on detrital carbon 4613 trc2d(ji,jj,171) = trc2d(ji,jj,171) + (fgmedc(ji,jj) * fse3t(ji,jj,jk)) !! mesozoo grazing on detrital carbon 4640 4614 !! 4641 4615 !! ---------------------------------------------------------------------- … … 4646 4620 !! below this section) 4647 4621 !! 4648 !! extract fields at surface4649 !! if (jk .eq. 1) then4650 !! trc2d(ji,jj,172) = zchn !! Pn chlorophyll4651 !! trc2d(ji,jj,173) = zphn !! Pn biomass4652 !! trc2d(ji,jj,174) = fjln !! Pn J-term4653 !! trc2d(ji,jj,175) = (fprn * zphn) !! Pn PP4654 !! trc2d(ji,jj,176) = zchd !! Pd chlorophyll4655 !! trc2d(ji,jj,177) = zphd !! Pd biomass4656 !! trc2d(ji,jj,178) = fjld !! Pd J-term4657 !! trc2d(ji,jj,179) = xpar(ji,jj,jk) !! Pd PP4658 !! trc2d(ji,jj,180) = loc_T !! local temperature4659 !! endif4660 !! !!4661 !! !! extract fields at 50m (actually 44-50m)4662 !! if (jk .eq. 18) then4663 !! trc2d(ji,jj,181) = zchn !! Pn chlorophyll4664 !! trc2d(ji,jj,182) = zphn !! Pn biomass4665 !! trc2d(ji,jj,183) = fjln !! Pn J-term4666 !! trc2d(ji,jj,184) = (fprn * zphn) !! Pn PP4667 !! trc2d(ji,jj,185) = zchd !! Pd chlorophyll4668 !! trc2d(ji,jj,186) = zphd !! Pd biomass4669 !! trc2d(ji,jj,187) = fjld !! Pd J-term4670 !! trc2d(ji,jj,188) = xpar(ji,jj,jk) !! Pd PP4671 !! trc2d(ji,jj,189) = loc_T !! local temperature4672 !! endif4673 !! !!4674 !! !! extract fields at 100m4675 !! if (jk .eq. i0100) then4676 !! trc2d(ji,jj,190) = zchn !! Pn chlorophyll4677 !! trc2d(ji,jj,191) = zphn !! Pn biomass4678 !! trc2d(ji,jj,192) = fjln !! Pn J-term4679 !! trc2d(ji,jj,193) = (fprn * zphn) !! Pn PP4680 !! trc2d(ji,jj,194) = zchd !! Pd chlorophyll4681 !! trc2d(ji,jj,195) = zphd !! Pd biomass4682 !! trc2d(ji,jj,196) = fjld !! Pd J-term4683 !! trc2d(ji,jj,197) = xpar(ji,jj,jk) !! Pd PP4684 !! trc2d(ji,jj,198) = loc_T !! local temperature4685 !! endif4686 !!4687 4622 !! extract relevant BASIN fields at 150m 4688 4623 if (jk .eq. i0150) then … … 4738 4673 !!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4739 4674 if ((jk .eq. 1) .and.( jdms.eq.1)) then 4740 trc2d(ji,jj,221) = dms_surf !! DMS surface concentration4675 trc2d(ji,jj,221) = dms_surf(ji,jj) !! DMS surface concentration 4741 4676 !! AXY (13/03/15): add in other DMS estimates 4742 trc2d(ji,jj,222) = dms_andr !! DMS surface concentration4743 trc2d(ji,jj,223) = dms_simo !! DMS surface concentration4744 trc2d(ji,jj,224) = dms_aran !! DMS surface concentration4745 trc2d(ji,jj,225) = dms_hall !! DMS surface concentration4677 trc2d(ji,jj,222) = dms_andr(ji,jj) !! DMS surface concentration 4678 trc2d(ji,jj,223) = dms_simo(ji,jj) !! DMS surface concentration 4679 trc2d(ji,jj,224) = dms_aran(ji,jj) !! DMS surface concentration 4680 trc2d(ji,jj,225) = dms_hall(ji,jj) !! DMS surface concentration 4746 4681 endif 4747 4682 # endif … … 4756 4691 !!---------------------------------------------------------------------- 4757 4692 !! 4758 trc3d(ji,jj,jk,1) = ((fprn + fprd) * zphn) !! primary production4693 trc3d(ji,jj,jk,1) = ((fprn(ji,jj) + fprd(ji,jj)) * zphn(ji,jj)) !! primary production 4759 4694 trc3d(ji,jj,jk,2) = fslownflux(ji,jj) + ffastn(ji,jj) !! detrital flux 4760 trc3d(ji,jj,jk,3) = fregen + (freminn * fthk) !! remineralisation4695 trc3d(ji,jj,jk,3) = fregen(ji,jj) + (freminn(ji,jj) * fse3t(ji,jj,jk)) !! remineralisation 4761 4696 # if defined key_roam 4762 4697 trc3d(ji,jj,jk,4) = f3_pH(ji,jj,jk) !! pH
Note: See TracChangeset
for help on using the changeset viewer.