@@ -2328,15 +2328,15 @@ subroutine user_add_params
2328
2328
2329
2329
! Ammonia Oxidizing Archaea maximum growth * biomass rate [/s]
2330
2330
!- ----------------------------------------------------------------------
2331
- call g_tracer_add_param(' aoamumax' , wombat% aoamumax, 0.01 / 86400.0 )
2331
+ call g_tracer_add_param(' aoamumax' , wombat% aoamumax, 0.025 / 86400.0 )
2332
2332
2333
2333
! Facultative heterotrophic bacteria maximum rate of uptake of DOC [mmol/m3/s]
2334
2334
!- ----------------------------------------------------------------------
2335
- call g_tracer_add_param(' bac_Vmax_doc' , wombat% bac_Vmax_doc, 5.0 / 86400.0 )
2335
+ call g_tracer_add_param(' bac_Vmax_doc' , wombat% bac_Vmax_doc, 6.7 / 86400.0 )
2336
2336
2337
2337
! Facultative heterotrophic bacteria maximum rate of uptake of NO3 [mmol/m3/s]
2338
2338
!- ----------------------------------------------------------------------
2339
- call g_tracer_add_param(' bac_Vmax_no3' , wombat% bac_Vmax_no3, 5.0 / 86400.0 )
2339
+ call g_tracer_add_param(' bac_Vmax_no3' , wombat% bac_Vmax_no3, 7.2 / 86400.0 )
2340
2340
2341
2341
! Facultative heterotrophic bacteria diffusive uptake limit of O2 [m3/mmolC/s]
2342
2342
!- ----------------------------------------------------------------------
@@ -2348,15 +2348,15 @@ subroutine user_add_params
2348
2348
2349
2349
! Facultative heterotrophic bacteria minimum half saturation constant for DOC uptake [mmolC/m3]
2350
2350
!- ----------------------------------------------------------------------
2351
- call g_tracer_add_param(' bac_kdoc_min' , wombat% bac_kdoc_min, 1 .0 )
2351
+ call g_tracer_add_param(' bac_kdoc_min' , wombat% bac_kdoc_min, 10 .0 )
2352
2352
2353
2353
! Facultative heterotrophic bacteria maximum half saturation constant for DOC uptake [mmolC/m3]
2354
2354
!- ----------------------------------------------------------------------
2355
- call g_tracer_add_param(' bac_kdoc_max' , wombat% bac_kdoc_max, 20 .0 )
2355
+ call g_tracer_add_param(' bac_kdoc_max' , wombat% bac_kdoc_max, 100 .0 )
2356
2356
2357
2357
! Facultative heterotrophic bacteria half saturation constant for ammonium uptake [mmolN/m3]
2358
2358
!- ----------------------------------------------------------------------
2359
- call g_tracer_add_param(' bac_knh4' , wombat% bac_knh4, 0.5 )
2359
+ call g_tracer_add_param(' bac_knh4' , wombat% bac_knh4, 0.1 )
2360
2360
2361
2361
! Facultative heterotrophic bacteria half saturation constant for dissolved iron uptake [umolFe/m3]
2362
2362
!- ----------------------------------------------------------------------
@@ -4070,51 +4070,57 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
4070
4070
! Anaerobic growth (will always be lower than aerobic growth when DOC is limiting)
4071
4071
bac_Vno3 = wombat% bac_Vmax_no3 * biono3 / (biono3 + wombat% bac_kno3)
4072
4072
bac_muana = max (0.0 , min ( (bac_Vno3/ wombat% bac_yno3), (bac_Vdoc/ wombat% bac_yanaC) ) ) * fbc
4073
+ if (.not. do_wc_denitrification) bac_muana = 0.0 ! If no denitrification, anaerobic growth is zero
4073
4074
4074
4075
! Save occurance of anaerobic growth to array
4075
4076
if (bac_muana.gt. bac_muaer) wombat% bac_fanaer(i,j,k) = 1.0
4076
4077
! Take the maximum growth rate as the realised growth rate
4077
4078
wombat% bac_mu(i,j,k) = max (bac_muaer, bac_muana)
4078
4079
4079
4080
! Determine if bacteria are limited by N or Fe
4080
- if (wombat% bac_mu(i,j,k) .gt. 0.0 ) then
4081
+ if (wombat% bac_mu(i,j,k)* wombat% f_bac(i,j,k).gt. 0.0 ) then
4082
+ ! Initial estimate of the C biomass growth, DOC and DON assimilation rate by bacteria
4083
+ wombat% bacgrow(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * 1.0 / wombat% bac_yaerC * (1 . - wombat% bac_fanaer(i,j,k)) &
4084
+ + wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * 1.0 / wombat% bac_yanaC * wombat% bac_fanaer(i,j,k) ! [molC/kg/s]
4081
4085
wombat% docremi(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yaerC * (1 . - wombat% bac_fanaer(i,j,k)) &
4082
4086
+ wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yanaC * wombat% bac_fanaer(i,j,k) ! [molC/kg/s]
4083
4087
wombat% donremi(i,j,k) = wombat% docremi(i,j,k) * dom_N2C ! [molN/kg/s]
4084
4088
4085
4089
! Determine degree of N limitation of bacteria and adjust growth rate
4086
4090
if (bionh4.gt. 1e-3 ) then ! First, make sure that NH4 is available for uptake
4087
- ! Find out what they need to supplement growth
4088
- wombat% bacunh4(i,j,k) = wombat% docremi (i,j,k) / wombat% bac_C2N - wombat% donremi(i,j,k) ! [molN/kg/s]
4091
+ ! Find out what they need to supplement growth (this assumes that bacteria can achieve a N biomass yield of 1.0)
4092
+ wombat% bacunh4(i,j,k) = wombat% bacgrow (i,j,k) / wombat% bac_C2N - wombat% donremi(i,j,k) ! [molN/kg/s]
4089
4093
! Find limitation of NH4 uptake
4090
- if (wombat% bacunh4(i,j,k).gt. 0.0 ) then ! Is NH4 is needed to support growth? (when DOC:DON > bacterial C:N ratio)
4094
+ if (wombat% bacunh4(i,j,k).gt. 0.0 ) then ! NH4 is needed to support growth
4091
4095
! Apply uptake kinetics constraint on bacterial NH4 uptake
4092
4096
bac_limnh4 = bionh4 / (bionh4 + wombat% bac_knh4 + epsi)
4093
4097
wombat% bacunh4(i,j,k) = wombat% bacunh4(i,j,k) * bac_limnh4 ! [molN/kg/s]
4094
- ! Make sure bacteria don't remove more NH4 than is available
4098
+ ! Make sure bacteria don't remove more NH4 than is available (can take up as much as half at a time)
4095
4099
if (wombat% bacunh4(i,j,k).gt. wombat% f_nh4(i,j,k)* 0.5 / dt) then
4096
4100
wombat% bacunh4(i,j,k) = wombat% f_nh4(i,j,k)* 0.5 / dt ! [molN/kg/s]
4097
4101
endif
4102
+ ! Recompute N limitation of bacteria (DON + NH4 uptake)
4098
4103
wombat% bac_lnit(i,j,k) = max (0.0 , min (1.0 , (wombat% donremi(i,j,k) + wombat% bacunh4(i,j,k)) &
4099
- / (( wombat% docremi (i,j,k) + epsi ) / wombat% bac_C2N) ))
4104
+ / (wombat% bacgrow (i,j,k) / wombat% bac_C2N) ))
4100
4105
else
4106
+ wombat% bacunh4(i,j,k) = 0.0
4101
4107
wombat% bac_lnit(i,j,k) = 1.0
4102
4108
endif
4103
4109
else ! No NH4 available to supplement growth
4104
4110
wombat% bacunh4(i,j,k) = 0.0
4105
4111
wombat% bac_lnit(i,j,k) = max (0.0 , min (1.0 , (wombat% donremi(i,j,k) + wombat% bacunh4(i,j,k)) &
4106
- / (( wombat% docremi (i,j,k) + epsi ) / wombat% bac_C2N) ))
4112
+ / (wombat% bacgrow (i,j,k) / wombat% bac_C2N) ))
4107
4113
endif
4108
4114
4109
4115
! Determine degree of Fe limitation of bacteria and adjust growth rate
4110
4116
if (biofer.gt. 1e-3 ) then ! First, make sure that dFe is available for uptake
4111
4117
! Apply uptake kinetics constraint on bacterial dFe uptake
4112
4118
wombat% bac_lfer(i,j,k) = biofer / (biofer + wombat% bac_kfer + epsi)
4113
- wombat% bacufer(i,j,k) = wombat% docremi (i,j,k) / wombat% bac_C2Fe * wombat% bac_lfer(i,j,k) ! [molFe/kg/s]
4119
+ wombat% bacufer(i,j,k) = wombat% bacgrow (i,j,k) / wombat% bac_C2Fe * wombat% bac_lfer(i,j,k) ! [molFe/kg/s]
4114
4120
! Check that enough dFe is available to support growth (at any one timestep, bacteria can only take up half of the available dFe)
4115
4121
if (wombat% bacufer(i,j,k).gt. wombat% f_fe(i,j,k)* 0.5 / dt) then
4116
4122
wombat% bacufer(i,j,k) = wombat% f_fe(i,j,k)* 0.5 / dt ! [molFe/kg/s]
4117
- wombat% bac_lfer(i,j,k) = wombat% bacufer(i,j,k) / (wombat% docremi (i,j,k) / wombat% bac_C2Fe)
4123
+ wombat% bac_lfer(i,j,k) = wombat% bacufer(i,j,k) / (wombat% bacgrow (i,j,k) / wombat% bac_C2Fe)
4118
4124
endif
4119
4125
else ! No dFe available
4120
4126
wombat% bac_lfer(i,j,k) = 0.0
@@ -4123,14 +4129,13 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
4123
4129
! Adjust the growth rate to be the minumum of N-limited or dFe-limited
4124
4130
wombat% bac_mu(i,j,k) = wombat% bac_mu(i,j,k) * min (wombat% bac_lfer(i,j,k), wombat% bac_lnit(i,j,k))
4125
4131
4126
- ! Final calculation after growth rate adjustment due to possible N limitation
4132
+ ! Final calculation after growth rate adjustment due to possible N or Fe limitation
4127
4133
wombat% bacgrow(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * 1.0 / wombat% bac_yaerC * (1 . - wombat% bac_fanaer(i,j,k)) &
4128
4134
+ wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * 1.0 / wombat% bac_yanaC * wombat% bac_fanaer(i,j,k) ! [molC/kg/s]
4129
4135
wombat% docremi(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yaerC * (1 . - wombat% bac_fanaer(i,j,k)) &
4130
4136
+ wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yanaC * wombat% bac_fanaer(i,j,k) ! [molC/kg/s]
4131
4137
wombat% donremi(i,j,k) = wombat% docremi(i,j,k) * dom_N2C ! [molN/kg/s]
4132
- wombat% bacunh4(i,j,k) = wombat% docremi(i,j,k) / wombat% bac_C2N - wombat% donremi(i,j,k) ! [molN/kg/s]
4133
- wombat% bacufer(i,j,k) = wombat% docremi(i,j,k) / wombat% bac_C2Fe ! [molFe/kg/s]
4138
+ wombat% bacufer(i,j,k) = wombat% bacgrow(i,j,k) / wombat% bac_C2Fe ! [molFe/kg/s]
4134
4139
wombat% bacresp(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yoxy * (1 . - wombat% bac_fanaer(i,j,k)) ! [molO2/kg/s]
4135
4140
wombat% bacdeni(i,j,k) = wombat% bac_mu(i,j,k) * wombat% f_bac(i,j,k) * wombat% bac_yno3 * wombat% bac_fanaer(i,j,k) ! [molNO3/kg/s]
4136
4141
endif
@@ -4347,7 +4352,6 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
4347
4352
wombat% f_nh4(i,j,k) = wombat% f_nh4(i,j,k) + dtsb * ( 0.0 &
4348
4353
+ wombat% nitrfix(i,j,k) &
4349
4354
+ (wombat% donremi(i,j,k) - wombat% bacgrow(i,j,k)/ wombat% bac_C2N) &
4350
- - wombat% bacunh4(i,j,k) &
4351
4355
- wombat% ammox(i,j,k) &
4352
4356
- wombat% anammox(i,j,k) ) &
4353
4357
+ dtsb * 16 ./ 122 . * ( 0.0 &
@@ -4639,7 +4643,6 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
4639
4643
+ dtsb * ( 0.0 &
4640
4644
+ (wombat% donremi(i,j,k) - wombat% bacgrow(i,j,k)/ wombat% bac_C2N) &
4641
4645
+ wombat% bacdeni(i,j,k) &
4642
- - wombat% bacunh4(i,j,k) &
4643
4646
- wombat% anammox(i,j,k) &
4644
4647
- 2.0 * wombat% ammox(i,j,k) ) &
4645
4648
+ dtsb * 2.0 * ( 0.0 &
@@ -4750,6 +4753,11 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
4750
4753
print * , " diagrow (molC/kg/s) =" , wombat% diagrow(i,j,k)
4751
4754
print * , " detremi (molC/kg/s) =" , wombat% detremi(i,j,k)
4752
4755
print * , " bdetremi (molC/kg/s) =" , wombat% bdetremi(i,j,k)
4756
+ print * , " bacunh4 (molN/kg/s) =" , wombat% bacunh4(i,j,k)
4757
+ print * , " donremi (molN/kg/s) =" , wombat% donremi(i,j,k)
4758
+ print * , " bacdeni (molN/kg/s) =" , wombat% bacdeni(i,j,k)
4759
+ print * , " anammox (molN/kg/s) =" , wombat% anammox(i,j,k)
4760
+ print * , " nitrfix (molN/kg/s) =" , wombat% nitrfix(i,j,k)
4753
4761
print * , " zooresp (molC/kg/s) =" , wombat% zooresp(i,j,k)
4754
4762
print * , " zooexcrphy (molC/kg/s) =" , wombat% zooexcrphy(i,j,k)
4755
4763
print * , " zooexcrdia (molC/kg/s) =" , wombat% zooexcrdia(i,j,k)
@@ -5065,6 +5073,9 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
5065
5073
wombat% det_sed_denit(i,j) = wombat% det_sed_remin(i,j) * min (0.9 * 94.0 / 122.0 , &
5066
5074
(0.083 + 0.21 * 0.98 ** ((wombat% sedo2(i,j) - wombat% sedno3(i,j))/ mmol_m3_to_mol_kg)))
5067
5075
wombat% fdenit(i,j) = wombat% det_sed_denit(i,j) * 122.0 / 94.0 / (wombat% det_sed_remin(i,j) + epsi)
5076
+ else
5077
+ wombat% det_sed_denit(i,j) = 0.0 ! [mol/m2/s]
5078
+ wombat% fdenit(i,j) = 0.0
5068
5079
endif
5069
5080
5070
5081
! Remineralisation of sediments to supply nutrient fields.
0 commit comments