Skip to content

Commit

Permalink
introduce linear scaling parameter for reactivity
Browse files Browse the repository at this point in the history
  • Loading branch information
jmaerz committed Feb 20, 2025
1 parent 3e57fd5 commit 977bc2e
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 10 deletions.
20 changes: 20 additions & 0 deletions cime_config/namelist_definition_blom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4760,6 +4760,26 @@
<desc>Sediment: CaCO3 dissolution rate (1/(kmol CO3--/m3 s))</desc>
</entry>

<entry id="sed_alpha_poc">
<type>real</type>
<category>bgcparams</category>
<group>bgcparams</group>
<values>
<value>None</value>
</values>
<desc>Sediment: moving-average prcorca decay rate for sed. qualiy-based remin (1/d)</desc>
</entry>

<entry id="sed_qual_sc">
<type>real</type>
<category>bgcparams</category>
<group>bgcparams</group>
<values>
<value>None</value>
</values>
<desc>Sediment: scaling factor for sed. qualiy-based remin. rate (-)</desc>
</entry>

<entry id="rano3denit_sed">
<type>real</type>
<category>bgcparams</category>
Expand Down
9 changes: 5 additions & 4 deletions hamocc/mo_param_bgc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ module mo_param_bgc
public :: POM_remin_q10,opal_remin_q10,POM_remin_Tref,opal_remin_Tref
public :: O2thresh_aerob,O2thresh_hypoxic,NO3thresh_sulf
public :: shelfbreak_depth
public :: sed_alpha_poc
public :: sed_alpha_poc,sed_qual_sc

! extended nitrogen cycle
public :: q10ano3denit,sc_ano3denit,Trefano3denit,rano3denit,bkano3denit, &
Expand Down Expand Up @@ -488,8 +488,8 @@ module mo_param_bgc
real, protected :: disso_sil = 3.e-8 ! 1/(kmol Si(OH)4/m3 s) Dissolution rate constant of opal
real, protected :: disso_caco3 = 1.e-7 ! 1/(kmol CO3--/m3 s) Dissolution rate constant of CaCO3
real, protected :: sed_denit = 0.01/86400. ! 1/s Denitrification rate constant of POP
real, protected :: sed_alpha_poc = 1./90. ! 1/d 1/decay time for sediment moving average

real, protected :: sed_alpha_poc = 1./90. ! 1/d 1/decay time for sediment moving average - assuming ~3 month memory here
real, protected :: sed_qual_sc = 1. ! scaling factor for sediment quality-based remineralization
!********************************************************************
! Densities etc. for SEDIMENT SHIFTING
!********************************************************************
Expand Down Expand Up @@ -629,7 +629,7 @@ subroutine read_bgcnamelist()
bkoxan2odenit_sed,bkan2odenit_sed,q10dnra_sed, &
bkoxdnra_sed,bkdnra_sed,q10anh4nitr_sed, &
bkoxamox_sed,bkanh4nitr_sed,q10ano2nitr_sed, &
bkoxnitr_sed,bkano2nitr_sed
bkoxnitr_sed,bkano2nitr_sed,sed_alpha_poc,sed_qual_sc

if (mnproc.eq.1) then
write(io_stdo_bgc,*)
Expand Down Expand Up @@ -1013,6 +1013,7 @@ subroutine write_parambgc()
call pinfo_add_entry('claydens', claydens)
if (use_sediment_quality) then
call pinfo_add_entry('sed_alpha_poc', sed_alpha_poc)
call pinfo_add_entry('sed_qual_sc', sed_qual_sc)
endif
endif
if (use_extNcycle) then
Expand Down
17 changes: 11 additions & 6 deletions hamocc/mo_powach.F90
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ subroutine powach(kpie,kpje,kpke,kbnd,prho,omask,psao,ptho,lspin)
use mo_chemcon, only: calcon
use mo_param_bgc, only: rnit,rcar,rdnit1,rdnit2,ro2ut,disso_sil,silsat,disso_poc,sed_denit, &
& disso_caco3,ro2utammo,sed_alpha_poc, &
& POM_remin_q10_sed,POM_remin_Tref_sed,bkox_drempoc_sed
& POM_remin_q10_sed,POM_remin_Tref_sed,bkox_drempoc_sed,sed_qual_sc
use mo_sedmnt, only: porwat,porsol,powtra,produs,prcaca,prorca,seddw,sedhpl,sedlay, &
silpro,pror13,pror14,prca13,prca14,prorca_mavg,sed_reactivity_a, &
sed_reactivity_k,sed_applied_reminrate
Expand Down Expand Up @@ -213,17 +213,22 @@ subroutine powach(kpie,kpje,kpke,kbnd,prho,omask,psao,ptho,lspin)
if (omask(i,j) > 0.5 ) then
! update moving average TOC flux to bottom - units of prorca: kmol P/m2/dt
! prorca_mvg in mmol P/m2/d
prorca_mavg(i,j) = sed_alpha_poc * prorca(i,j)*1e6*dtbgc/86400. + (1.-sed_alpha_poc)*prorca_mavg(i,j)
prorca_mavg(i,j) = sed_alpha_poc*prorca(i,j)*1e6*dtbgc/86400. &
& + (1.-sed_alpha_poc)*prorca_mavg(i,j)

! update surface age due to fresh POC sedimentation flux
sedlay(i,j,1,issso12_age) = sedlay(i,j,1,issso12) * sedlay(i,j,1,issso12_age) &
& / ((prorca(i,j)/(porsol(i,j,1)*seddw(1))) + sedlay(i,j,1,issso12) + eps)
do k = 1, ks
sedlay(i,j,k,issso12_age) = sedlay(i,j,k,issso12_age) + dtbgc/31104000. ! [years]
avgDOU = prorca_mavg(i,j)*ro2ut ! mean DOU flux [mmol/m2/d] (NOTE: thus far oxidation to NO3 assumed)
sed_reactivity_a(i,j,k) = 2.48 * 10**(1.293 - 0.9822*log10(avgDOU)) ! Eq.(12) in Pika et al. 2023 * correction factor 2.48 = a (sed reactivity)
! Calculating overall reactivity k [1/year] -> [1/(kmol O2/m3 dt)] using 1mumol O2/m3 as reference for now
sed_reactivity_k(i,j,k) = 0.151/(sed_reactivity_a(i,j,k) + sedlay(i,j,k,issso12_age))*dtbgc/31104000./1e-6
! mean DOU flux [mmol/m2/d] (NOTE: thus far oxidation to NO3 assumed)
avgDOU = max(eps,prorca_mavg(i,j)*ro2ut)
! Eq.(12) in Pika et al. 2023 * correction factor 2.48 = a (sed reactivity)
sed_reactivity_a(i,j,k) = 2.48 * 10**(1.293 - 0.9822*log10(avgDOU))
! Calculating overall (scaled) reactivity k [1/year] -> [1/(kmol O2/m3 dt)]
! using 1mumol O2/m3 as reference
sed_reactivity_k(i,j,k) = sed_qual_sc*0.151*dtbgc/(31104000.*1e-6) &
& /(sed_reactivity_a(i,j,k) + sedlay(i,j,k,issso12_age)+eps)
enddo
endif
enddo
Expand Down

0 comments on commit 977bc2e

Please sign in to comment.