Skip to content

Commit cc8707c

Browse files
pearsebdougiesquire
andcommitted
Apply suggestions from code review
Agree with all you suggestions Dougie, except for the removal of the "0.0"s in the sources and sinks terms AT THIS STAGE. We can remove them at the latest PR. Co-authored-by: Dougie Squire <[email protected]>
1 parent 4d11673 commit cc8707c

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

generic_tracers/generic_WOMBATmid.F90

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ module generic_WOMBATmid
151151
!=======================================================================
152152
character(len=10) :: co2_calc = 'mocsy' ! other option is 'ocmip2'
153153
logical :: do_caco3_dynamics = .true. ! do dynamic CaCO3 precipitation, dissolution and ballasting?
154-
logical :: do_burial = .false. ! permanently bury organics and CaCO3 in sediments?
154+
logical :: do_burial = .false. ! permanently bury organics and CaCO3 in sediments?
155155
logical :: do_conserve_tracers = .false. ! add back the lost NO3 and Alk due to burial to surface?
156156
logical :: do_nitrogen_fixation= .true. ! N cycle has nitrogen fixation?
157157
logical :: do_anammox = .true. ! N cycle has anammox?
@@ -3074,11 +3074,11 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
30743074
real, dimension(nbands) :: sw_pen
30753075
real :: swpar
30763076
real :: u_npz, g_npz, m_npz, g_peffect
3077-
real :: zooprefphy, zooprefdia, zooprefdet
3078-
real :: mesprefphy, mesprefdia, mesprefdet, mesprefbdet, mesprefzoo
3077+
real :: zooprefphy, zooprefdia, zooprefdet, I_zprefnorm
3078+
real :: mesprefphy, mesprefdia, mesprefdet, mesprefbdet, mesprefzoo, I_mprefnorm
30793079
real :: biono3, bionh4, biooxy, biofer
30803080
real :: biophy, biodia, biozoo, biomes, biodet, biobdet, biobac, biodoc, biodon, biocaco3
3081-
real :: biophyfe, biodiafe, biozoofe, biomesfe, zooprey, mesprey
3081+
real :: biophyfe, biodiafe, biozoofe, biomesfe, zooprey, mesprey, I_zooprey, I_mesprey
30823082
real :: fbc
30833083
real :: no3_bgc_change, caco3_bgc_change
30843084
real :: epsi = 1.0e-30
@@ -3813,14 +3813,12 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
38133813
wombat%phy_lpar(i,j,k) = (1. - exp(-phy_pisl2 * wombat%radbio(i,j,k)))
38143814
wombat%phy_mu(i,j,k) = wombat%phy_mumax(i,j,k) * wombat%phy_lpar(i,j,k) * &
38153815
min(wombat%phy_lnit(i,j,k), wombat%phy_lfer(i,j,k))
3816-
38173816
!!!~~~ Microphytoplankton ~~~!!!
38183817
dia_pisl = max(wombat%alphabio_dia * dia_chlc, wombat%alphabio_dia * wombat%diaminqc)
38193818
dia_pisl2 = dia_pisl / ( (1. + wombat%dialmor*86400.0 * fbc) ) ! add daylength estimate here
38203819
wombat%dia_lpar(i,j,k) = (1. - exp(-dia_pisl2 * wombat%radbio(i,j,k)))
38213820
wombat%dia_mu(i,j,k) = wombat%dia_mumax(i,j,k) * wombat%dia_lpar(i,j,k) * &
38223821
min(wombat%dia_lnit(i,j,k), wombat%dia_lfer(i,j,k))
3823-
38243822

38253823
!-----------------------------------------------------------------------!
38263824
!-----------------------------------------------------------------------!
@@ -3955,7 +3953,6 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
39553953
! Coagulation of colloidal Fe (umol/m3) to form sinking particles (mmol/m3)
39563954
! Following Tagliabue et al. (2023), make coagulation rate dependent on DOC and Phytoplankton biomass
39573955
biof = max(1/3., biophy / (biophy + 0.03))
3958-
!biodoc = 40.0 + (1.0 - min(wombat%phy_lnit(i,j,k), wombat%phy_lfer(i,j,k))) * 40.0 ! proxy of DOC (mmol/m3)
39593956
! Colloidal shunt associated with small particles and DOC (Tagliabue et al., 2023)
39603957
if (wombat%zw(i,j,k).le.hblt_depth(i,j)) then
39613958
zval = ( (12.*biof*biodoc + 9.*biodet) + 2.5*biodet + 128.*biof*biodoc + 725.*biodet )*wombat%kcoag_dfe
@@ -3998,9 +3995,10 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
39983995
!!!~~~ Zooplankton ~~~!!!
39993996
! Grazing function ! [1/s]
40003997
! Based on Gentleman et al., (2003) DSRII - normalize the prey preference kernal to reflect dietary fractions
4001-
zooprefphy = wombat%zprefphy / (wombat%zprefphy + wombat%zprefdia + wombat%zprefdet)
4002-
zooprefdia = wombat%zprefdia / (wombat%zprefphy + wombat%zprefdia + wombat%zprefdet)
4003-
zooprefdet = wombat%zprefdet / (wombat%zprefphy + wombat%zprefdia + wombat%zprefdet)
3998+
I_zprefnorm = 1.0 / (wombat%zprefphy + wombat%zprefdia + wombat%zprefdet)
3999+
zooprefphy = wombat%zprefphy * I_zprefnorm
4000+
zooprefdia = wombat%zprefdia * I_zprefnorm
4001+
zooprefdet = wombat%zprefdet * I_zprefnorm
40044002
zooprey = zooprefphy * biophy + zooprefdia * biodia + zooprefdet * biodet
40054003
! Epsilon (prey capture rate coefficient) is made a function of prey density (Fig 2 of Rohr et al., 2024; GRL)
40064004
! - scales towards lower values (microzooplankton) as prey biomass increases
@@ -4011,11 +4009,12 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
40114009

40124010
!!!~~~ Mesozooplankton ~~~!!!
40134011
! Grazing function ! [1/s]
4014-
mesprefphy = wombat%mprefphy / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4015-
mesprefdia = wombat%mprefdia / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4016-
mesprefdet = wombat%mprefdet / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4017-
mesprefbdet = wombat%mprefbdet / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4018-
mesprefzoo = wombat%mprefzoo / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4012+
I_mprefnorm = 1.0 / (wombat%mprefphy + wombat%mprefdia + wombat%mprefdet + wombat%mprefbdet + wombat%mprefzoo)
4013+
mesprefphy = wombat%mprefphy * I_mprefnorm
4014+
mesprefdia = wombat%mprefdia * I_mprefnorm
4015+
mesprefdet = wombat%mprefdet * I_mprefnorm
4016+
mesprefbdet = wombat%mprefbdet * I_mprefnorm
4017+
mesprefzoo = wombat%mprefzoo * I_mprefnorm
40194018
mesprey = mesprefphy * biophy + mesprefdia * biodia + mesprefdet * biodet + mesprefbdet * biobdet + mesprefzoo * biozoo
40204019
! Epsilon (prey capture rate coefficient) is made a function of prey density (Fig 2 of Rohr et al., 2024; GRL)
40214020
! - scales towards lower values (mesozooplankton) as prey biomass increases
@@ -4269,12 +4268,12 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
42694268
else
42704269
wombat%bdetremi(i,j,k) = 0.0
42714270
endif
4272-
42734271
! Grazing by microzooplankton
42744272
if (zooprey.gt.1e-3) then
4275-
wombat%zoograzphy(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefphy*biophy)/zooprey ! [molC/kg/s]
4276-
wombat%zoograzdia(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefdia*biodia)/zooprey ! [molC/kg/s]
4277-
wombat%zoograzdet(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefdet*biodet)/zooprey ! [molC/kg/s]
4273+
I_zooprey = 1.0 / zooprey
4274+
wombat%zoograzphy(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefphy*biophy)*I_zooprey ! [molC/kg/s]
4275+
wombat%zoograzdia(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefdia*biodia)*I_zooprey ! [molC/kg/s]
4276+
wombat%zoograzdet(i,j,k) = g_npz * wombat%f_zoo(i,j,k) * (zooprefdet*biodet)*I_zooprey ! [molC/kg/s]
42784277
else
42794278
wombat%zoograzphy(i,j,k) = 0.0
42804279
wombat%zoograzdia(i,j,k) = 0.0
@@ -4298,11 +4297,12 @@ subroutine generic_WOMBATmid_update_from_source(tracer_list, Temp, Salt, &
42984297

42994298
! Grazing by mesozooplankton
43004299
if (mesprey.gt.1e-3) then
4301-
wombat%mesgrazphy(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefphy*biophy)/mesprey ! [molC/kg/s]
4302-
wombat%mesgrazdia(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefdia*biodia)/mesprey ! [molC/kg/s]
4303-
wombat%mesgrazdet(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefdet*biodet)/mesprey ! [molC/kg/s]
4304-
wombat%mesgrazbdet(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefbdet*biobdet)/mesprey ! [molC/kg/s]
4305-
wombat%mesgrazzoo(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefzoo*biozoo)/mesprey ! [molC/kg/s]
4300+
I_mesprey = 1.0 / mesprey
4301+
wombat%mesgrazphy(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefphy*biophy)*I_mesprey ! [molC/kg/s]
4302+
wombat%mesgrazdia(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefdia*biodia)*I_mesprey ! [molC/kg/s]
4303+
wombat%mesgrazdet(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefdet*biodet)*I_mesprey ! [molC/kg/s]
4304+
wombat%mesgrazbdet(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefbdet*biobdet)*I_mesprey ! [molC/kg/s]
4305+
wombat%mesgrazzoo(i,j,k) = m_npz * wombat%f_mes(i,j,k) * (mesprefzoo*biozoo)*I_mesprey ! [molC/kg/s]
43064306
else
43074307
wombat%mesgrazphy(i,j,k) = 0.0
43084308
wombat%mesgrazdia(i,j,k) = 0.0

0 commit comments

Comments
 (0)