diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 56e2c14..fe53df4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,6 +20,7 @@ add_library(fabm_models_ersem OBJECT mesozooplankton.F90 bacteria.F90 bacteria_docdyn.F90 + TDOC.F90 calcification.F90 carbonate.F90 oxygen.F90 diff --git a/src/TDOC.F90 b/src/TDOC.F90 new file mode 100644 index 0000000..5222cea --- /dev/null +++ b/src/TDOC.F90 @@ -0,0 +1,373 @@ +#include "fabm_driver.h" + +module ersem_TDOC + + use fabm_types + use fabm_builtin_models + use fabm_particle + + use ersem_shared + use ersem_pelagic_base + + implicit none + + private + + type,extends(type_ersem_pelagic_base),public :: type_ersem_TDOC + ! Variables + type (type_state_variable_id) :: id_RPc,id_T2c, id_O3c + type (type_state_variable_id) :: id_RPn, id_RPp, id_T2n, id_T2p, id_N1p, id_N4n + type (type_state_variable_id) :: id_TD_older_c,id_TD_older_n,id_TD_older_p + type (type_model_id) :: id_T2, id_TD_older + type (type_dependency_id) :: id_ETW, id_chemEIR + type (type_dependency_id) :: id_shadow_bioflux, id_dz + type (type_dependency_id) :: id_X1X ! Salinity +! type (type_horizontal_dependency_id) :: id_R1c,id_R1d + type (type_horizontal_diagnostic_variable_id) :: id_surface_photolysis, id_surface_photo_aging + type (type_diagnostic_variable_id) :: id_photolysis,id_flocc, id_photo_aging, id_bio_aging + + ! Parameters + + real(rk) :: suva, iref,phyref,surf_phyref,phyt,floc,qp,qn,scx,sbx,chemEIR_scaling + real(rk) :: age, photoaging,bioaging + logical :: is_photolabile + + contains +! Model procedures + procedure :: initialize + procedure :: do_surface + procedure :: do + end type + + ! Submodel that is seen by bacteria for microbial degradation + ! this is currently needed because the microbial degradation flux (calculated by the bacteria module) is needed here for the aging of tDOC + type,extends(type_particle_model),public :: type_ersem_shadow_tDOC + type (type_diagnostic_variable_id) :: id_c_shadow ! shadow state variable + type (type_state_variable_id) :: id_parent_c, id_TD_older_parent_c ! ,id_parent_n, id_T1_older_parent_n,id_parent_p, id_T1_older_parent_p + type (type_model_id) :: id_parent, id_TD_older_parent + + real (rk) :: qn, qp, bioaging + + contains + procedure :: initialize => shadow_initialize + procedure :: do => shadow_do + end type + + +contains + + subroutine initialize(self,configunit) +! +! !DESCRIPTION: +! +! !INPUT PARAMETERS: + class (type_ersem_TDOC),intent(inout),target :: self + integer, intent(in) :: configunit + +! !LOCAL VARIABLES: + real(rk) :: c0,EPS + class (type_ersem_shadow_tDOC), pointer :: shadow +! +!EOP +!----------------------------------------------------------------------- +!BOC +! call self%get_parameter(self%kuw,'kuw', 'm-1', 'extinction of UV in the water') +! call self%get_parameter(self%suva,'suva','m2*mmol C-1', 'specific UV absorption at 350 nm') + call self%get_parameter(self%qp, 'qp', 'mmol P/mg C','phosphorus to carbon ratio') + call self%get_parameter(self%qn, 'qn', 'mmol N/mg C','nitrogen to carbon ratio') + call self%get_parameter(EPS, 'EPS', 'm^2/mg C','specific shortwave attenuation', default=4.E-4_rk) + call self%get_parameter(c0,'c0','mg C/m^3','background carbon concentration') + !call self%get_parameter(self%age, 'age', 'd', 'Characteristic age of the tDOC pool', default=0._rk)) ! for now the parameter is calculated a priori + call self%get_parameter(self%photoaging, 'photoaging', '-', 'aging due to photo oxidation') + call self%get_parameter(self%bioaging, 'bioaging', '-', 'aging due to microbial oxidation') + call self%get_parameter(self%is_photolabile,'photolabile','-', 'definition of the type of tDOC: True=photolabile; False=non-photolabile') + + ! if it is photolabile then set all process parameters + if (self%is_photolabile) then + call self%get_parameter(self%chemEIR_scaling, 'chemEIR_scaling', '', 'scaling factor for incoming radiation activating photochemical reaction', default=1._rk) + call self%get_parameter(self%iref,'iref','W m-2', 'reference irradiance') + call self%get_parameter(self%phyref,'phyref','d-1 ', 'reference photooxidation rate',default=0._rk) + call self%get_parameter(self%surf_phyref,'surf_phyref','d-1 ', 'reference surface_photooxidation rate',default=0._rk) + call self%get_parameter(self%phyt,'phyt','adim', 'photooxidated fraction of T1 going into T2) ') + call self%get_parameter(self%floc,'floc','(mmol C-3)-1*d-1 ', 'reference photooxidation rate') + call self%get_parameter(self%sbx, 'sbx', 'psu', 'optimal salinity') + call self%get_parameter(self%scx, 'scx', '', 'salinity function parameter') + endif + +! Allow ERSEM base model to declare our own state variables. + call self%initialize_ersem_base(sedimentation=.false.) + call self%add_constituent('c',1.e-4_rk,c0,qn=self%qn,qp=self%qp) +! call self%add_constituent('c',0.0_rk) + +! Register links to nutrient pools. +! call self%register_dependency(self%id_EIR,'EIR','W/m^2','downwelling_shortwave_flux', & +! standard_variable=standard_variables%downwelling_shortwave_flux,source=source_do_column) + !call self%register_dependency(self%id_EIR,standard_variables%downwelling_shortwave_flux) + + if (self%is_photolabile) then + call self%register_dependency(self%id_dz, standard_variables%cell_thickness) + call self%register_dependency(self%id_X1X,standard_variables%practical_salinity) + call self%register_state_dependency(self%id_RPc,'RPc','mg C/m^3', 'particulate organic carbon') + call self%register_state_dependency(self%id_RPp,'RPp','mmol P/m^3', 'particulate organic phosphorus') + call self%register_state_dependency(self%id_RPn,'RPn','mmol N/m^3', 'particulate organic nitrogen') + call self%register_model_dependency(self%id_T2,'T2') + call self%register_state_dependency(self%id_T2c,'T2c','mg C/m^3','non photolabile terrigenous DOC') + call self%register_state_dependency(self%id_T2n,'T2n','mmol N/m^3','non photolabile terrigenous DON') + call self%register_state_dependency(self%id_T2p,'T2p','mmol P/m^3','non photolabile terrigenous DOP') + call self%request_coupling_to_model(self%id_T2c,self%id_T2,'c') + call self%request_coupling_to_model(self%id_T2n,self%id_T2,standard_variables%total_nitrogen) + call self%request_coupling_to_model(self%id_T2p,self%id_T2,standard_variables%total_phosphorus) + call self%register_dependency(self%id_chemEIR,'chemEIR','W/m^2','incoming radiation activating photochemical reaction') + call self%register_state_dependency(self%id_O3c,'O3c','mmol C/m^3','carbon dioxide sink') + call self%register_state_dependency(self%id_N1p,'N1p','mmol P/m^3','phosphate') + call self%register_state_dependency(self%id_N4n,'N4n','mmol N/m^3','ammonium') + call self%register_diagnostic_variable(self%id_photolysis,'photolysis','mgC/m^3/d','photolysis') + call self%register_horizontal_diagnostic_variable(self%id_surface_photolysis,'surface_photolysis','mgC/m^3/d','surface photolysis',source=source_do_surface) + call self%register_diagnostic_variable(self%id_flocc,'flocc','mgC/m^3/d','flocculation') + end if + + if ((self%bioaging.gt.0._rk).or.(self%photoaging.gt.0._rk)) then + call self%register_model_dependency(self%id_TD_older,'TD_older') + call self%register_state_dependency(self%id_TD_older_c,'TD_older_c','mg C/m^3','non photolabile terrigenous DOC') + call self%register_state_dependency(self%id_TD_older_n,'TD_older_n','mmol N/m^3','non photolabile terrigenous DON') + call self%register_state_dependency(self%id_TD_older_p,'TD_older_p','mmol P/m^3','non photolabile terrigenous DOP') + call self%request_coupling_to_model(self%id_TD_older_c,self%id_TD_older,'c') + call self%request_coupling_to_model(self%id_TD_older_n,self%id_TD_older,standard_variables%total_nitrogen) + call self%request_coupling_to_model(self%id_TD_older_p,self%id_TD_older,standard_variables%total_phosphorus) + if (self%is_photolabile) then + call self%register_diagnostic_variable(self%id_photo_aging,'photoaging','mgC/m^3/d','aging due to 3D photoloysis') + call self%register_horizontal_diagnostic_variable(self%id_surface_photo_aging,'surface_photoaging','mgC/m^3/d','aging due to surface photolysis',source=source_do_surface) + end if + call self%register_diagnostic_variable(self%id_bio_aging,'bioaging','mgC/m^3/d','aging due to microbial degrdation') + + + end if + + ! Register contribution to light extinction + call self%add_to_aggregate_variable(standard_variables%attenuation_coefficient_of_photosynthetic_radiative_flux, & + self%id_c,scale_factor=EPS,include_background=.true.) + + + allocate(shadow) + shadow%qn=self%qn + shadow%qp=self%qp + shadow%bioaging=self%bioaging + call shadow%couplings%set_string('parent',self%name) + call self%add_child(shadow,'shadow',configunit=configunit) + if ((self%bioaging.gt.0._rk)) then + call shadow%couplings%set_string('TD_older_parent','../TD_older') + !call self%register_dependency(self%id_shadow_bioflux,'B_degradation','','bacterial degradation of tDOC') + !call self%request_coupling(self%id_shadow_bioflux,trim(shadow%id_c_shadow%link%target%name//'_sms_tot')) ! + !call copy_fluxes(self,shadow%id_c_shadow,self%id_c,(1._rk+self%bioaging)) + endif + + end subroutine initialize + + + subroutine do(self,_ARGUMENTS_DO_) + + class (type_ersem_TDOC),intent(in) :: self + _DECLARE_ARGUMENTS_DO_ + + ! !LOCAL VARIABLES: + real(rk) :: flocc,photolysis,R8cP,R8c,T2c,T2n,T2p,O3c,O3cP,T2cP,chemEIR,c,Xp,Xn,XXn,T1T2,px,nx, bio_flux + real(rk) :: X1X,sal + +! Enter spatial loops (if any) + _LOOP_BEGIN_ + + if (self%is_photolabile) then + _GET_(self%id_c,c) + _GET_(self%id_T2c,T2cP) +! _GET_(self%id_R8c,R8cP) + _GET_(self%id_O3c,O3cP) + _GET_WITH_BACKGROUND_(self%id_T2c,T2c) + _GET_WITH_BACKGROUND_(self%id_T2n,T2n) + _GET_WITH_BACKGROUND_(self%id_T2p,T2p) +! _GET_WITH_BACKGROUND_(self%id_R8c,R8c) + _GET_(self%id_chemEIR,chemEIR) + _GET_(self%id_X1X,X1X) + + IF(T2c.gt.0._rk) then + Xn=self%qn/(T2n/T2c) + Xp=self%qp/(T2p/T2c) + nx=self%qn-(T2n/T2c) + px=self%qp-(T2p/T2c) + else + Xn=0._rk + Xp=0._rk + nx=1._rk + px=1._rk + endif + + XXn=min(Xn,Xp) + +!Flocculation is assumed to be (log-normal) function of salinity(sal) + + X1X=max(X1X,0.01_rk) !to avoid log(0) in sal!! + sal=exp(-((log(X1X)-self%sbx)**2._rk)/(2._rk*self%scx**2._rk)) + flocc=self%floc*sal*c**2 + +! Photolysis + photolysis=self%phyref*(chemEIR*self%chemEIR_scaling/self%iref)*c + +! in order to ensure mass conservation, the fraction of carbon going from T1 to T2 after photolysis is down regulated +! if T1 has less N and/or P than T2. Any excess of nutrients is redirected into the dissolved pool (N1p and N4n). (Luca, July 2018) + T1T2=self%phyt*min(1._rk,XXn) + + _SET_ODE_(self%id_c,-(1._rk+self%photoaging)*photolysis-flocc) + + if (self%photoaging.gt.0._rk) then + _SET_ODE_(self%id_TD_older_c,self%photoaging*photolysis) +! _SET_ODE_(self%id_TD_older_n,self%photoaging*photolysis*self%qn) +! _SET_ODE_(self%id_TD_older_p,self%photoaging*photolysis*self%qp) + end if + + !if (self%bioaging.gt.0._rk) then + ! _GET_(self%id_shadow_bioflux,bio_flux) + ! _SET_ODE_(self%id_TD_older_c,self%bioaging*bio_flux) + ! _SET_DIAGNOSTIC_(self%id_bio_aging,self%bioaging*bio_flux) + !endif + + _SET_ODE_(self%id_RPc,+flocc) + _SET_ODE_(self%id_RPn,+flocc*self%qn) + _SET_ODE_(self%id_RPp,+flocc*self%qp) + _SET_ODE_(self%id_T2c,+photolysis*T1T2) + _SET_ODE_(self%id_O3c,+photolysis*(1._rk-T1T2)/CMass) + _SET_ODE_(self%id_N1p,+photolysis*(1._rk-T1T2)*self%qp+photolysis*T1T2*px) + _SET_ODE_(self%id_N4n,+photolysis*(1._rk-T1T2)*self%qn+photolysis*T1T2*nx) + _SET_DIAGNOSTIC_(self%id_photolysis, photolysis) + _SET_DIAGNOSTIC_(self%id_flocc, flocc) + + end if !is_photolabile + _LOOP_END_ + + end subroutine do + + subroutine do_surface(self,_ARGUMENTS_DO_SURFACE_) + class (type_ersem_TDOC), intent(in) :: self + _DECLARE_ARGUMENTS_DO_SURFACE_ + + real (rk) :: chemEIR,photolysis,c,T1T2,T2c,T2n,T2p + real (rk) :: Xn,Xp,XXn,nx,px,dz + +! Enter horizontal loops (if any) + _HORIZONTAL_LOOP_BEGIN_ + + if (self%is_photolabile) then + _GET_(self%id_chemEIR,chemEIR) + _GET_(self%id_c,c) + _GET_(self%id_dz,dz) + _GET_WITH_BACKGROUND_(self%id_T2c,T2c) + _GET_WITH_BACKGROUND_(self%id_T2n,T2n) + _GET_WITH_BACKGROUND_(self%id_T2p,T2p) + + ! YA: this BLOCK is commented because does not work as it should + ! for now I leave it like that and force behaviour as if T1 stoichiometry is identical to T2 stoichiometry (True for LOCATE 3D runs) +! IF(T2c.gt.0._rk) then +! Xn=self%qn/(T2n/T2c) +! Xp=self%qp/(T2p/T2c) +! nx=self%qn-(T2n/T2c) +! px=self%qp-(T2p/T2c) +! else +! Xn=0._rk +! Xp=0._rk +! nx=1._rk +! px=1._rk +! endif +! +! ! the two following checks are needed because due to roundings, N and P are not conserved otherwise +! if (abs(nx).lt.1.e-5_rk) then +! nx=0._rk +! Xn=1._rk +! endif +! if (abs(px).lt.1.e-5_rk) then +! px=0._rk +! Xp=1._rk +! endif + + nx=0._rk + Xn=1._rk + px=0._rk + Xp=1._rk + XXn=min(Xn,Xp) + ! Photolysis + ! this is the real photolitic rate in mgC/m3/d + photolysis=self%surf_phyref*(chemEIR*self%chemEIR_scaling/self%iref)*c + _SET_HORIZONTAL_DIAGNOSTIC_(self%id_surface_photolysis, photolysis) + + ! because this is a do_surface subroutine only _set_surface_exchange_ can be used, not _set_ode_ + ! _set_surface_exchange_ requires the flux being vertically integrated (units = 1/m2/d) + ! so the flux is multiplied by the cell thickness. _set_surface_exchange_ will re-convert back the unit automatically + + photolysis = photolysis * dz + + ! in order to ensure mass conservation, the fraction of carbon going from T1 to T2 after photolysis is down regulated + ! if T1 has less N and/or P than T2. Any excess of nutrients is redirected into the dissolved pool (N1p and N4n). (Luca, July 2018) + T1T2=self%phyt*min(1._rk,XXn) + + + _SET_SURFACE_EXCHANGE_(self%id_c,-photolysis*(1+self%photoaging)) + _SET_SURFACE_EXCHANGE_(self%id_T2c,+photolysis*T1T2) + + if (self%photoaging.gt.0._rk) then + _SET_SURFACE_EXCHANGE_(self%id_TD_older_c,self%photoaging*photolysis) +! _SET_SURFACE_EXCHANGE_(self%id_TD_older_n,-self%photoaging*photolysis*self%qn) +! _SET_SURFACE_EXCHANGE_(self%id_TD_older_p,-self%photoaging*photolysis*self%qp) + end if + + _SET_SURFACE_EXCHANGE_(self%id_O3c,+photolysis*(1._rk-T1T2)/CMass) + if (nx.NE.0._rk) write(6,*) trim(self%name),T2c,T2n,self%qn,Xn + _SET_SURFACE_EXCHANGE_(self%id_N1p,+photolysis*(1._rk-T1T2)*self%qp)!+photolysis*T1T2*px) + _SET_SURFACE_EXCHANGE_(self%id_N4n,+photolysis*(1._rk-T1T2)*self%qn)!+photolysis*T1T2*nx) + end if !is_photolabile + _HORIZONTAL_LOOP_END_ + end subroutine + + subroutine shadow_initialize(self,configunit) + + ! !INPUT PARAMETERS: + class (type_ersem_shadow_TDOC),intent(inout),target :: self + integer, intent(in) :: configunit + + self%dt = 3600._rk*24._rk + + call self%register_diagnostic_variable(self%id_c_shadow,'c','mgC/m^3','shadow carbon',act_as_state_variable=.true.,output=output_none) + call self%add_to_aggregate_variable(standard_variables%total_carbon,self%id_c_shadow) + call self%add_to_aggregate_variable(standard_variables%total_phosphorus,self%id_c_shadow,scale_factor=self%qp) + call self%add_to_aggregate_variable(standard_variables%total_nitrogen,self%id_c_shadow,scale_factor=self%qn) + + call self%register_model_dependency(self%id_parent,'parent') + call self%register_state_dependency(self%id_parent_c,'parent_c','mg C/m^3','non photolabile terrigenous DOC') + call self%request_coupling_to_model(self%id_parent_c,self%id_parent,'c') + + if (self%bioaging.gt.0._rk) then + call self%register_model_dependency(self%id_TD_older_parent,'TD_older_parent') + call self%register_state_dependency(self%id_TD_older_parent_c,'TD_older_parent_c','mg C/m^3','non photolabile terrigenous DOC') + call self%request_coupling_to_model(self%id_TD_older_parent_c,self%id_TD_older_parent,'c') + call copy_fluxes(self,self%id_c_shadow,self%id_TD_older_parent_c,-self%bioaging) ! - because an uptake (negative flux) from bacteria correspond to increase of the older DOC (positive fulx) + + end if + + call copy_fluxes(self,self%id_c_shadow,self%id_parent_c,1._rk+self%bioaging)!scale_factor=(1._rk+self%bioaging)) + + end subroutine shadow_initialize + + subroutine shadow_do(self,_ARGUMENTS_DO_) + + class (type_ersem_shadow_TDOC),intent(in) :: self + _DECLARE_ARGUMENTS_DO_ + + real (rk) :: c_shadow + +! Enter horizontal loops (if any) + _LOOP_BEGIN_ + + _GET_(self%id_parent_c,c_shadow) + _SET_DIAGNOSTIC_(self%id_c_shadow,c_shadow) + + _LOOP_END_ + end subroutine shadow_do + + +end module diff --git a/src/bacteria_docdyn.F90 b/src/bacteria_docdyn.F90 index 9d5807d..2e21558 100644 --- a/src/bacteria_docdyn.F90 +++ b/src/bacteria_docdyn.F90 @@ -15,7 +15,7 @@ module ersem_bacteria_docdyn type,extends(type_ersem_pelagic_base),public :: type_ersem_bacteria_docdyn ! Variables type (type_state_variable_id) :: id_O3c, id_O2o, id_TA, id_N3n - type (type_state_variable_id) :: id_R1c, id_R2c, id_R3c + type (type_state_variable_id) :: id_R1c, id_R2c, id_R3c,id_T1c,id_T2c type (type_state_variable_id) :: id_R1p type (type_state_variable_id) :: id_R1n type (type_state_variable_id) :: id_N1p,id_N4n,id_N7f,id_N6 @@ -24,12 +24,19 @@ module ersem_bacteria_docdyn type (type_model_id), allocatable,dimension(:) :: id_RP type (type_diagnostic_variable_id) :: id_fB1O3c, id_fB1NIn, id_fB1N1p,id_bgeff,id_fdenit,id_fanox,id_freox - + type (type_state_variable_id),allocatable,dimension(:) :: id_TDc,id_TDp,id_TDn + type (type_model_id), allocatable,dimension(:) :: id_TD + type (type_model_id) :: id_T1,id_T2 type (type_diagnostic_variable_id) :: id_fR1B1c, id_fR2B1c, id_fR3B1c,id_fRPB1c,id_fB1R1c, id_fB1R2c, id_fB1R3c type (type_diagnostic_variable_id) :: id_fR1B1n,id_fB1R1n,id_fR1B1p,id_fB1R1p,id_fRPB1n,id_fRPB1p + type (type_diagnostic_variable_id), allocatable,dimension(:) :: id_fTDB1c type (type_diagnostic_variable_id) :: id_minn,id_minp + ! add diagnostics variables for bacteria production and respiration budgets and metabolic status + ! RJT 2019 + type (type_diagnostic_variable_id) :: id_net_B1,id_uptake_B1 + ! RJT 2019 ! Parameters - integer :: nRP + integer :: nRP,nTD integer :: iswBlimX real(rk) :: q10B1X,chdB1oX real(rk) :: chB1nX,chB1pX @@ -39,7 +46,7 @@ module ersem_bacteria_docdyn real(rk) :: qpB1cX,qnB1cX real(rk) :: urB1_O2X real(rk) :: rR2B1X,rR3B1X - real(rk),allocatable :: sRPR1(:) + real(rk),allocatable :: sRPR1(:), rTDB1X(:) real(rk) :: frB1R3 real(rk) :: DeniX,reoX,omroX,omonX,chN3oX integer :: denit @@ -68,7 +75,7 @@ subroutine initialize(self,configunit) ! !REVISION HISTORY: ! ! !LOCAL VARIABLES: - integer :: iRP + integer :: iRP,iTD character(len=16) :: index real(rk) :: c0 !EOP @@ -153,6 +160,27 @@ subroutine initialize(self,configunit) end if end do + + ! Register links to terrestrial Dissolved Organic Matter. + call self%get_parameter(self%nTD,'nTD','','number of substrates',default=0) + allocate(self%id_TD(self%nTD)) + allocate(self%id_TDc(self%nTD)) + allocate(self%id_TDn(self%nTD)) + allocate(self%id_TDp(self%nTD)) + allocate(self%id_fTDB1c(self%nTD)) + do iTD=1,self%nTD + write (index,'(i0)') iTD + call self%register_state_dependency(self%id_TDc(iTD),'TD'//trim(index)//'c','mg C/m^3', 'carbon in substrate '//trim(index)) + call self%register_state_dependency(self%id_TDn(iTD),'TD'//trim(index)//'n','mmol N/m^3', 'nitrogen in substrate '//trim(index)) + call self%register_state_dependency(self%id_TDp(iTD),'TD'//trim(index)//'p','mmol P/m^3', 'phosphorus in substrate '//trim(index)) + call self%register_model_dependency(self%id_TD(iTD),'TD'//trim(index)) + call self%request_coupling_to_model(self%id_TDc(iTD),self%id_TD(iTD),'c') ! For now link to hardcoded "c" to get a direct link to state mg C/m3 (and not a diagnostic for mmol C/m3) + call self%request_coupling_to_model(self%id_TDn(iTD),self%id_TD(iTD),standard_variables%total_nitrogen) + call self%request_coupling_to_model(self%id_TDp(iTD),self%id_TD(iTD),standard_variables%total_phosphorus) + call self%register_diagnostic_variable(self%id_fTDB1c(iTD),'fT'//trim(index)//'B1c','mg C/m^3/d','uptake of terrigenous DOC'//trim(index)) + end do + + ! Register links to semi-refractory dissolved organic matter pool. call self%register_state_dependency(self%id_R3c,'R3c','mg C/m^3','semi-refractory DOC') @@ -162,6 +190,12 @@ subroutine initialize(self,configunit) call self%get_parameter(self%sRPR1(iRP),'sRP'//trim(index)//'R1','1/d','remineralisation of substrate '//trim(index)//' to DOM') end do + allocate(self%rTDB1X(self%nTD)) + do iTD=1,self%nTD + write (index,'(i0)') iTD + call self%get_parameter(self%rTDB1X(iTD),'rTD'//trim(index),'-','fraction of substrate T'//trim(index)//'available to bacteria') + end do + call self%get_parameter(self%rR2B1X,'rR2','-','fraction of semi-labile DOC available to bacteria') call self%get_parameter(self%rR3B1X,'rR3','-','fraction of semi-refractory DOC available to bacteria') call self%get_parameter(self%frB1R3,'frR3','-','fraction of activity respiration converted to semi-refractory DOC') @@ -181,11 +215,11 @@ subroutine initialize(self,configunit) call self%register_diagnostic_variable(self%id_fB1N1p,'fB1N1p','mmol P/m^3/d','release of DIP') call self%register_diagnostic_variable(self%id_bgeff,'bgeff','','bacterial growth efficiency') - call self%register_diagnostic_variable(self%id_fB1R1c,'fB1R1c','mg C/m^3/d','release of labile DOC ') - call self%register_diagnostic_variable(self%id_fB1R2c,'fB1R2c','mg C/m^3/d','release of semi-labile DOC ') - call self%register_diagnostic_variable(self%id_fB1R3c,'fB1R3c','mg C/m^3/d','release of semi-refractory DOC ') - call self%register_diagnostic_variable(self%id_fB1R1n,'fB1R1n','mmol N/m^3/d','release of DON') - call self%register_diagnostic_variable(self%id_fB1R1p,'fB1R1p','mmol P/m^3/d','release of DOP') + call self%register_diagnostic_variable(self%id_fB1R1c,'fB1R1c','mg C/m^3/d','bacterial release of labile DOC ') + call self%register_diagnostic_variable(self%id_fB1R2c,'fB1R2c','mg C/m^3/d','bacterial release of semi-labile DOC ') + call self%register_diagnostic_variable(self%id_fB1R3c,'fB1R3c','mg C/m^3/d','bacterial release of semi-refractory DOC ') + call self%register_diagnostic_variable(self%id_fB1R1n,'fB1R1n','mmol N/m^3/d','bacterial DON release') + call self%register_diagnostic_variable(self%id_fB1R1p,'fB1R1p','mmol P/m^3/d','bacterial DOP release') call self%register_diagnostic_variable(self%id_fR1B1c,'fR1B1c','mg C/m^3/d','uptake of labile DOC ') call self%register_diagnostic_variable(self%id_fR2B1c,'fR2B1c','mg C/m^3/d','uptake of semi-labile DOC ') @@ -198,6 +232,11 @@ subroutine initialize(self,configunit) call self%register_diagnostic_variable(self%id_minn,'minn','mmol N/m^3/d','mineralisation of DON to DIN') call self%register_diagnostic_variable(self%id_minp,'minp','mmol P/m^3/d','mineralisation of DOP to DIP') + +! RJT 2019 - Bacteria metabolic status diagnostics + call self%register_diagnostic_variable(self%id_net_B1,'netB1','mmol C/m^3/d','net bacterial production') + call self%register_diagnostic_variable(self%id_uptake_B1,'rugB1','mmol C/m^3/d','actual uptake from substrates') +! RJT 2019 end subroutine subroutine do(self,_ARGUMENTS_DO_) @@ -222,10 +261,12 @@ subroutine do(self,_ARGUMENTS_DO_) real(rk) :: totsubst real(rk) :: CORROX real(rk) :: fdenit,denitpot,deniteff,o2state,freox,fanox - integer :: iRP + integer :: iRP, iTD real(rk),dimension(self%nRP) :: RPc,RPcP,RPnP,RPpP real(rk),dimension(self%nRP) :: fRPB1c,fRPB1p,fRPB1n - + real(rk),dimension(self%nTD) :: TDcP,TDc,TDnP,TDpP + real(rk),dimension(self%nTD) :: fTDB1c,fTDB1p,fTDB1n + ! Enter spatial loops (if any) _LOOP_BEGIN_ @@ -244,6 +285,7 @@ subroutine do(self,_ARGUMENTS_DO_) _GET_(self%id_N4n,N4nP) _GET_WITH_BACKGROUND_(self%id_R1c,R1c) _GET_WITH_BACKGROUND_(self%id_R2c,R2c) + _GET_(self%id_R1c,R1cP) _GET_(self%id_R1p,R1pP) _GET_(self%id_R1n,R1nP) @@ -251,6 +293,8 @@ subroutine do(self,_ARGUMENTS_DO_) _GET_WITH_BACKGROUND_(self%id_R3c,R3c) _GET_(self%id_R2c,R2cP) _GET_(self%id_R3c,R3cP) + + do iRP=1,self%nRP _GET_WITH_BACKGROUND_(self%id_RPc(iRP),RPc(iRP)) _GET_(self%id_RPc(iRP),RPcP(iRP)) @@ -258,6 +302,13 @@ subroutine do(self,_ARGUMENTS_DO_) _GET_(self%id_RPp(iRP),RPpP(iRP)) end do + do iTD=1,self%nTD + _GET_WITH_BACKGROUND_(self%id_TDc(iTD),TDc(iTD)) + _GET_(self%id_TDc(iTD),TDcP(iTD)) + _GET_(self%id_TDn(iTD),TDnP(iTD)) + _GET_(self%id_TDp(iTD),TDpP(iTD)) + end do + qpB1c = B1p/B1c qnB1c = B1n/B1c @@ -296,7 +347,7 @@ subroutine do(self,_ARGUMENTS_DO_) ! rugB1 = MIN(rumB1,rutB1) ! specific in substrate concentration: - totsubst = R1cP+R2cP*self%rR2B1X+R3cP*self%rR3B1X+sum(RPcP*self%sRPR1/sutB1) + totsubst = R1cP+R2cP*self%rR2B1X+R3cP*self%rR3B1X+sum(TDcP*self%rTDB1X)+sum(RPcP*self%sRPR1/sutB1) ! Jorn: check whether total substrate>0 to prevent NaNs if (totsubst>0.0_rk) then sugB1 = rumB1/max(rumB1/sutB1,totsubst) @@ -305,7 +356,7 @@ subroutine do(self,_ARGUMENTS_DO_) end if ! = MIN(rumB1,rutB1)=MIN(rumB1/(R1cP+R2cP*rR2B1X,sutB1) avoid pot. div. by 0 fRPB1c = sugB1*RPcP*self%sRPR1/sutB1 - rugB1 = sugB1*(R1cP+R2cP*self%rR2B1X+R3cP*self%rR3B1X)+sum(fRPB1c) + rugB1 = sugB1*(R1cP+R2cP*self%rR2B1X+R3cP*self%rR3B1X+sum(TDcP*self%rTDB1X))+sum(fRPB1c) !..Respiration : @@ -362,6 +413,10 @@ subroutine do(self,_ARGUMENTS_DO_) _SET_ODE_(self%id_R2c,+ fB1R2c - sugB1*R2cP*self%rR2B1X) _SET_ODE_(self%id_R3c,+ fB1R3c - sugB1*R3cP*self%rR3B1X) +! RJT 2019 Bacteria production diagnostics + _SET_DIAGNOSTIC_(self%id_net_B1, netB1) + _SET_DIAGNOSTIC_(self%id_uptake_B1, rugB1) +! RJT 2019 _SET_DIAGNOSTIC_(self%id_fB1R1c, fB1R1c) _SET_DIAGNOSTIC_(self%id_fB1R2c, fB1R2c) _SET_DIAGNOSTIC_(self%id_fB1R3c, fB1R3c) @@ -374,6 +429,12 @@ subroutine do(self,_ARGUMENTS_DO_) _SET_ODE_(self%id_RPc(iRP), -fRPB1c(iRP)) end do + do iTD=1,self%nTD + _SET_ODE_(self%id_TDc(iTD), -sugB1*TDcP(iTD)*self%rTDB1X(iTD)) + _SET_DIAGNOSTIC_(self%id_fTDB1c(iTD), sugB1*TDcP(iTD)*self%rTDB1X(iTD)) + end do + + _SET_ODE_(self%id_O3c,+ fB1O3c/CMass) !..oxygen consumption..................................................... @@ -396,6 +457,7 @@ subroutine do(self,_ARGUMENTS_DO_) !..uptake of DOP fR1B1p = sugB1*R1pP + fTDB1p= sugB1*TDpP*self%rTDB1X !..flux of DOP from B1 @@ -410,7 +472,7 @@ subroutine do(self,_ARGUMENTS_DO_) _SET_ODE_(self%id_RPp(iRP), - fRPB1p(iRP)) end do - _SET_ODE_(self%id_p, + fR1B1p - fB1N1p - fB1RDp) + _SET_ODE_(self%id_p, + fR1B1p + sum(fTDB1p) - fB1N1p - fB1RDp) _SET_ODE_(self%id_N1p, + fB1N1p) _SET_ODE_(self%id_R1p, + fB1RDp - fR1B1p) _SET_ODE_(self%id_TA, - fB1N1p) ! Contribution to alkalinity: -1 for phosphate @@ -433,6 +495,7 @@ subroutine do(self,_ARGUMENTS_DO_) !..uptake of DON fR1B1n = sugB1*R1nP + fTDB1n= sugB1*TDnP*self%rTDB1X !..flux of DON from B1 @@ -447,7 +510,7 @@ subroutine do(self,_ARGUMENTS_DO_) end do _SET_ODE_(self%id_N4n, + fB1NIn) - _SET_ODE_(self%id_n, + fR1B1n - fB1NIn - fB1RDn) + _SET_ODE_(self%id_n, + fR1B1n + sum(fTDB1n) - fB1NIn - fB1RDn) _SET_ODE_(self%id_R1n, + fB1RDn - fR1B1n) _SET_ODE_(self%id_TA, + fB1NIn) ! Contribution to alkalinity: +1 for ammonium diff --git a/src/ersem_model_library.F90 b/src/ersem_model_library.F90 index 912abcc..1ab5c30 100644 --- a/src/ersem_model_library.F90 +++ b/src/ersem_model_library.F90 @@ -13,6 +13,7 @@ module ersem_model_library use ersem_mesozooplankton use ersem_bacteria use ersem_bacteria_docdyn + use ersem_TDOC use ersem_nitrification use ersem_nitrous_oxide use ersem_light @@ -65,6 +66,7 @@ subroutine create(self,name,model) case ('mesozooplankton'); allocate(type_ersem_mesozooplankton::model) case ('bacteria'); allocate(type_ersem_bacteria::model) case ('bacteria_docdyn'); allocate(type_ersem_bacteria_docdyn::model) + case ('TDOC'); allocate(type_ersem_TDOC::model) case ('nitrification'); allocate(type_ersem_nitrification::model) case ('nitrous_oxide'); allocate(type_ersem_nitrous_oxide::model) case ('light'); allocate(type_ersem_light::model) diff --git a/testcases/fabm_tDOC.yaml b/testcases/fabm_tDOC.yaml new file mode 100644 index 0000000..113c876 --- /dev/null +++ b/testcases/fabm_tDOC.yaml @@ -0,0 +1,1324 @@ +check_conservation: false +require_initialization: true +instances: + zenithAngle: + model: ersem/zenith_angle + light: + model: ersem/light_iop + parameters: + a0w: 0.03 # absorption coefficient of clear water (1/m), default = 0.036 + b0w: 0.0015 # backscatter coefficient of clear water (1/m), default = 0.0016 + pEIR_eow: 0.5 # photosynthetically active fraction of shortwave radiation (-), default = 0.5 + N1: + long_name: phosphate + model: ersem/pelagic_base + parameters: + composition: p # elemental composition + c0: 0.001 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + p: 0.4 # phosphorus (mmol P/m^3) + N3: + long_name: nitrate + model: ersem/pelagic_base + parameters: + composition: n # elemental composition + c0: 0.001 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + n: 8.0 # nitrogen (mmol N/m^3) + N4: + long_name: ammonium + model: ersem/pelagic_base + parameters: + composition: n # elemental composition + c0: 0.001 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + n: 0.1 # nitrogen (mmol N/m^3) + N5: + long_name: silicate + model: ersem/pelagic_base + parameters: + composition: s # elemental composition + s0: 0.0003 # background silicon concentration (mmol Si/m^3), default = 0.0 + initialization: + s: 4.5 # silicate (mmol Si/m^3) + O2: + long_name: oxygen + model: ersem/oxygen + parameters: + iswO2: 2 # saturation formulation (1: legacy ERSEM, 2: Weiss 1970) + initialization: + o: 300.0 # oxygen (mmol O_2/m^3) + O3: + long_name: carbonate + model: ersem/carbonate + parameters: + iswCO2: 1 # carbonate system diagnostics (0: off, 1: on), default = 1 + iswASFLUX: 1 # air-sea CO2 exchange (0: none, 1: Nightingale et al. 2000, 2: Wanninkhof 1992 without chemical enhancement, 3: Wanninkhof 1992 with chemical enhancement, 4: Wanninkhof and McGillis 1999, 5: Wanninkhof 1992 switching to Wanninkhof and McGillis 1999, 6: Wan, default = 6 + iswtalk: 5 # alkalinity formulation (1-4: from salinity and temperature, 5: dynamic alkalinity), default = 5 + pHscale: 1 # pH scale (1: total, 0: SWS, -1: SWS backward compatible), default = 1 + initialization: + c: 2130.0 # total dissolved inorganic carbon (mmol C/m^3) + TA: 2300.0 # total alkalinity (mmol/m^3) + R1: + long_name: labile dissolved organic matter + model: ersem/pelagic_base + parameters: + composition: cnp # elemental composition + c0: 0.0034 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 10.0 # carbon (mg C/m^3) + n: 0.14 # nitrogen (mmol N/m^3) + p: 0.01 # phosphorus (mmol P/m^3) + R2: + long_name: semi-labile dissolved organic matter + model: ersem/pelagic_base + parameters: + composition: c # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 12.0 # carbon (mg C/m^3) + R3: + long_name: semi-refractory dissolved organic matter + model: ersem/pelagic_base + parameters: + composition: c # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 12.0 # carbon (mg C/m^3) + R4: + long_name: small-size pom + model: ersem/pelagic_base + parameters: + composition: cnpf # elemental composition + iopABS: 1e-05 # specific shortwave absorption (m^2/mg C), default = 0.0 + iopBBS: 1.6e-05 # specific shortwave backscatter (m^2/mg C), default = 0.0 + rm: 1.0 # sinking velocity (m/d), default = 0.0 + ndeposition: 2 # number of target pools where the sedimentation flux goes (-) + qxc2: 0.1 + qxn2: 0.1 + qxp2: 0.06 + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 7.2 # carbon (mg C/m^3) + n: 0.1 # nitrogen (mmol N/m^3) + p: 0.007 # phosphorus (mmol P/m^3) + coupling: + deposition_target1: Q6/surface + deposition_target2: Q7/surface + R6: + long_name: medium-size pom + model: ersem/pelagic_base + parameters: + composition: cnpsf # elemental composition + iopABS: 1e-05 # specific shortwave absorption (m^2/mg C), default = 0.0 + iopBBS: 1.6e-05 # specific shortwave backscatter (m^2/mg C), default = 0.0 + rm: 5.0 # sinking velocity (m/d), default = 0.0 + ndeposition: 2 # number of target pools where the sedimentation flux goes (-) + qxc2: 0.1 + qxn2: 0.1 + qxp2: 0.06 + qxs2: 0.0 + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 17.0 # carbon (mg C/m^3) + n: 0.24 # nitrogen (mmol N/m^3) + p: 0.02 # phosphorus (mmol P/m^3) + s: 0.1 # silicate (mmol Si/m^3) + coupling: + deposition_target1: Q6/surface + deposition_target2: Q7/surface + R8: + long_name: large-size pom + model: ersem/pelagic_base + parameters: + composition: cnps # elemental composition + iopABS: 1e-05 # specific shortwave absorption (m^2/mg C), default = 0.0 + iopBBS: 1.6e-05 # specific shortwave backscatter (m^2/mg C), default = 0.0 + rm: 10.0 # sinking velocity (m/d), default = 0.0 + ndeposition: 2 # number of target pools where the sedimentation flux goes (-) + qxc2: 0.1 + qxn2: 0.1 + qxp2: 0.06 + qxs2: 0.0 + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 0.17 # carbon (mg C/m^3) + n: 0.0024 # nitrogen (mmol N/m^3) + p: 0.0002 # phosphorus (mmol P/m^3) + s: 0.001 # silicate (mmol Si/m^3) + coupling: + deposition_target1: Q6/surface + deposition_target2: Q7/surface + Q1: + long_name: benthic dissolved organic matter + model: ersem/benthic_base + parameters: + composition: cnp # elemental composition + c0: 0.001 # background carbon concentration (mg C/m^2) + initialization: + c: 18.9 # carbon (mg C/m^2) + n: 0.6 # nitrogen (mmol N/m^2) + p: 0.0035 # phosphorus (mmol P/m^2) + Q6: + long_name: benthic particulate organic matter + model: ersem/benthic_column_particulate_matter + parameters: + composition: cnpsf # elemental composition + resuspension: true # enable resuspension, default = false + c0: 0.001 # background carbon concentration (mg C/m^2) + initialization: + c: 3052.0 # carbon (mg C/m^2) + n: 3.5 # nitrogen (mmol N/m^2) + p: 0.5 # phosphorus (mmol P/m^2) + s: 149.0 # silicate (mmol Si/m^2) + pen_depth_c: 0.0173 # penetration depth of carbon (m) + pen_depth_n: 0.02 # penetration depth of nitrogen (m) + pen_depth_p: 0.025 # penetration depth of phosphorus (m) + pen_depth_s: 0.0313 # penetration depth of silicate (m) + coupling: + RP: R6 + Q7: + long_name: benthic refractory matter + model: ersem/benthic_column_particulate_matter + parameters: + composition: cnp # elemental composition + burial: true # enable burial, default = false + c0: 0.001 # background carbon concentration (mg C/m^2) + initialization: + c: 30520.0 # carbon (mg C/m^2) + n: 80.0 # nitrogen (mmol N/m^2) + p: 8.0 # phosphorus (mmol P/m^2) + pen_depth_c: 0.2 # penetration depth of carbon (m) + pen_depth_n: 0.25 # penetration depth of nitrogen (m) + pen_depth_p: 0.313 # penetration depth of phosphorus (m) + coupling: + burial_target: Q17 + Q17: + long_name: benthic buried matter + model: ersem/benthic_base + parameters: + composition: cnp # elemental composition + initialization: + c: 0.0 # carbon (mg C/m^2) + n: 0.0 # nitrogen (mmol N/m^2) + p: 0.0 # phosphorus (mmol P/m^2) + B1: + long_name: bacteria + model: ersem/bacteria_docdyn + parameters: + iswBlim: 2 # nutrient limitation (1: minimum of inorganic and organic availability, 2: additive availability) + q10: 2.0 # Q_10 temperature coefficient (-) + chdo: 0.31 # Michaelis-Menten constant for oxygen limitation (-) + chn: 0.5 # Michaelis-Menten constant for nitrate limitation (mmol N/m^3) + chp: 0.1 # Michaelis-Menten constant for phosphate limitation (mmol P/m^3) + sd: 0.05 # specific mortality at reference temperature (1/d) + sum: 2.2 # maximum specific uptake at reference temperature (1/d) + pu: 0.6 # efficiency at high oxygen levels (-) + puo: 0.2 # efficiency at low oxygen levels (-) + srs: 0.1 # specific rest respiration at reference temperature (1/d) + sR1: 1.0 # maximum turn-over rate of DOM (1/d), default = 1.0 + qpc: 0.0019 # maximum phosphorus to carbon ratio (mmol P/mg C) + qnc: 0.0167 # maximum nitrogen to carbon ratio (mmol N/mg C) + ur_O2: 0.1 # oxygen consumed per carbon respired (mmol O_2/mg C) + sR1N1: 0.0 # mineralisation rate of labile dissolved organic phosphorus (1/d) + sR1N4: 0.0 # mineralisation rate of labile dissolved organic nitrogen (1/d) + fsink: 7e-05 # scavenging rate for iron (1/d) + c0: 0.01 # background carbon concentration (mg C/m^3) + nRP: 3 # number of substrates, default = 0 + sRP1R1: 0.01 # remineralisation of substrate 1 to DOM (1/d) + sRP2R1: 0.0025 # remineralisation of substrate 2 to DOM (1/d) + sRP3R1: 0.001 # remineralisation of substrate 3 to DOM (1/d) + rR2: 0.0075 # fraction of semi-labile DOC available to bacteria (-) + rR3: 0.0025 # fraction of semi-refractory DOC available to bacteria (-) + frR3: 0.3 # fraction of activity respiration converted to semi-refractory DOC (-) + nTD: 6 # number of substrates, default = 0 + rTD1: 0.003525 # fraction of tDOC pool 1 available for bacteria + rTD2: 0.000627 # factor of .17777 from 30d # fraction of tDOC pool 2 available for bacteria + rTD3: 0.000275 # factor of .078 from 30d # fraction of tDOC pool 3 available for bacteria + rTD4: 0.0106 # fraction of tDOC pool 4 available for bacteria + rTD5: 0.001888 # factor of .17777 from 30d # fraction of tDOC pool 5 available for bacteria + rTD6: 0.000825 # factor of .078 from 30d # fraction of tDOC pool 6 available for bacteria + initialization: + c: 15.7 # carbon (mg C/m^3) + n: 0.26 # nitrogen (mmol N/m^3) + p: 0.029 # phosphorus (mmol P/m^3) + coupling: + RP1: R4 + RP2: R6 + RP3: R8 + N1p: N1/p # phosphate (mmol P/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # labile dissolved organic carbon (mg C/m^3) + R1p: R1/p # labile dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # labile dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + R3c: R3/c + TD1: T1_30d/shadow # terrigenous dissolved organic carbon pool 1 (mg C/m^3) + TD2: T1_8y/shadow # terrigenous dissolved organic carbon pool 2 (mg C/m^3) + TD3: T1_70y/shadow # terrigenous dissolved organic carbon pool 3 (mg C/m^3) + TD4: T2_30d/shadow # terrigenous dissolved organic carbon pool 4 (mg C/m^3) + TD5: T2_8y/shadow # terrigenous dissolved organic carbon pool 5 (mg C/m^3) + TD6: T2_70y/shadow # terrigenous dissolved organic carbon pool 6 (mg C/m^3) + O3c: O3/c # carbon dioxide (mmol C/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + pel_nit: + long_name: pelagic nitrification + model: ersem/nitrification + parameters: + q10: 2.0 # Q_10 temperature coefficient (-) + ISWph: 1 # pH impact on nitrification (0: off, 1: on) + sN4N3: 0.5 # specific nitrification rate (1/d) + chN3o: 2700.0 # Michaelis-Menten constant for cubic oxygen dependence of nitrification ((mmol O_2/m^3)^3) + chN4n: 0.5 # Michaelis-Menten constant for cubic ammonium dependence of nitrification ((mmol N/m^3)^3), default = 0.0 + coupling: + N3n: N3/n # nitrate (mmol N/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + P1: + long_name: diatoms + model: ersem/primary_producer + parameters: + sum: 1.375 # maximum specific productivity at reference temperature (1/d) + q10: 2.0 # Q_10 temperature coefficient (-) + srs: 0.04 # specific rest respiration at reference temperature (1/d) + pu_ea: 0.2 # excreted fraction of primary production (-) + pu_ra: 0.2 # respired fraction of primary production (-) + qnlc: 0.0042 # minimum nitrogen to carbon ratio (mmol N/mg C) + qplc: 0.0001 # minimum phosphorus to carbon ratio (mmol P/mg C) + xqcp: 1.0 # threshold for phosphorus limitation (relative to Redfield ratio) (-) + xqcn: 1.0 # threshold for nitrogen limitation (relative to Redfield ratio) (-) + xqp: 2.0 # maximum phosphorus to carbon ratio (relative to Redfield ratio) (-) + xqn: 1.075 # maximum nitrogen to carbon ratio (relative to Redfield ratio) (-) + qun3: 0.0025 # nitrate affinity (m^3/mg C/d) + qun4: 0.0025 # ammonium affinity (m^3/mg C/d) + qurp: 0.003 # phosphate affinity (m^3/mg C/d) + snplux: 1.0 # specific tendency of luxury uptake of nutrients towards maximum quota (1/d), default = 1.0 + use_Si: true # use silicate, default = false + qsc: 0.0118 # maximum silicate to carbon ratio (mmol Si/mg C) + chs: 0.2 # Michaelis-Menten constant for silicate limitation (mmol/m^3) + sdo: 0.05 # 1.1 of minimal specific lysis rate (1/d) + alpha: 4.0 # initial slope of PI-curve (mg C m^2/mg Chl/W/d) + beta: 0.07 # photoinhibition parameter (mg C m^2/mg Chl/W/d) + phim: 0.06 # maximum effective chlorophyll to carbon photosynthesis ratio (mg Chl/mg C) + Limnut: 1 # nitrogen-phosphorus colimitation formulation (0: geometric mean, 1: minimum, 2: harmonic mean) + docdyn: true # use dynamic ratio of labile to semi-labile DOM production, default = false + uB1c_O2: 0.11 # oxygen produced per unit of carbon fixed (mmol O_2/mg C) + urB1_O2: 0.1 # oxygen consumed per unit of carbon respired (mmol O_2/mg C) + iopABS: 0.007 # specific shortwave absorption (m^2/mg Chl), default = 0.008 + iopBBS: 0.00048 # specific shortwave backscatter (m^2/mg Chl), default = 0.003 + c0: 0.0001 # background carbon concentration (mg C/m^3), default = 0.0 + resm: 5.0 # maximum nutrient-limitation-induced sinking velocity (m/d), default = 0.0 + esni: 0.7 # level of nutrient limitation below which sinking commences (-) + cenh: false # enable atmospheric CO2 influence on photosynthesis, default = false + ndeposition: 3 # number of target pools for sedimentation, default = 1 + qxc2: 0.2 # fraction of carbon sinking into deposition target 2 (-) + qxc3: 0.005 # fraction of carbon sinking into deposition target 3 (-) + qxn2: 0.2 # fraction of nitrogen sinking into deposition target 2 (-) + qxn3: 0.005 # fraction of nitrogen sinking into deposition target 3 (-) + qxp2: 0.24 # fraction of phosphorus sinking into deposition target 2 (-) + qxp3: 0.003 # fraction of phosphorus sinking into deposition target 3 (-) + qxs2: 0.0 # fraction of silicate sinking into deposition target 2 (-) + qxs3: 0.0 # fraction of silicate sinking into deposition target 3 (-) + initialization: + c: 8.0 # carbon (mg C/m^3) + n: 0.1114 # nitrogen (mmol N/m^3) + p: 0.009 # phosphorus (mmol P/m^3) + s: 0.128 # silicate (mmol Si/m^3) + Chl: 0.4 # chlorophyll a (mg/m^3) + coupling: + RP: R6 + deposition_target1: Q6/surface + deposition_target2: Q1 + deposition_target3: Q7/surface + N1p: N1/p # phosphate (mmol P/m^3) + N3n: N3/n # nitrate (mmol N/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + N5s: N5/s # silicate (mmol Si/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + O3c: O3/c # carbon dioxide (mmol C/m^3) + P2: + long_name: nanophytoplankton + model: ersem/primary_producer + parameters: + sum: 1.625 # maximum specific productivity at reference temperature (1/d) + q10: 2.0 # Q_10 temperature coefficient (-) + srs: 0.04 # specific rest respiration at reference temperature (1/d) + pu_ea: 0.2 # excreted fraction of primary production (-) + pu_ra: 0.2 # respired fraction of primary production (-) + qnlc: 0.005 # minimum nitrogen to carbon ratio (mmol N/mg C) + qplc: 0.000225 # minimum phosphorus to carbon ratio (mmol P/mg C) + xqcp: 1.0 # threshold for phosphorus limitation (relative to Redfield ratio) (-) + xqcn: 1.0 # threshold for nitrogen limitation (relative to Redfield ratio) (-) + xqp: 2.0 # maximum phosphorus to carbon ratio (relative to Redfield ratio) (-) + xqn: 1.075 # maximum nitrogen to carbon ratio (relative to Redfield ratio) (-) + qun3: 0.004 # nitrate affinity (m^3/mg C/d) + qun4: 0.004 # ammonium affinity (m^3/mg C/d) + qurp: 0.004 # phosphate affinity (m^3/mg C/d) + snplux: 1.0 # specific tendency of luxury uptake of nutrients towards maximum quota (1/d), default = 1.0 + use_Si: false # use silicate, default = false + sdo: 0.05 # 1.1 of minimal specific lysis rate (1/d) + alpha: 5.0 # initial slope of PI-curve (mg C m^2/mg Chl/W/d) + beta: 0.1 # photoinhibition parameter (mg C m^2/mg Chl/W/d) + phim: 0.025 # maximum effective chlorophyll to carbon photosynthesis ratio (mg Chl/mg C) + Limnut: 1 # nitrogen-phosphorus colimitation formulation (0: geometric mean, 1: minimum, 2: harmonic mean) + docdyn: true # use dynamic ratio of labile to semi-labile DOM production, default = false + uB1c_O2: 0.11 # oxygen produced per unit of carbon fixed (mmol O_2/mg C) + urB1_O2: 0.1 # oxygen consumed per unit of carbon respired (mmol O_2/mg C) + iopABS: 0.0041 # specific shortwave absorption (m^2/mg Chl), default = 0.008 + iopBBS: 0.003 # specific shortwave backscatter (m^2/mg Chl), default = 0.003 + c0: 0.001 # background carbon concentration (mg C/m^3), default = 0.0 + calcify: true # calcify, default = false + resm: 0.0 # maximum nutrient-limitation-induced sinking velocity (m/d), default = 0.0 + esni: 0.7 # level of nutrient limitation below which sinking commences (-) + cenh: false # enable atmospheric CO2 influence on photosynthesis, default = false + ndeposition: 3 # number of target pools for sedimentation, default = 1 + qxc2: 0.5 # fraction of carbon sinking into deposition target 2 (-) + qxc3: 0.05 # fraction of carbon sinking into deposition target 3 (-) + qxn2: 0.5 # fraction of nitrogen sinking into deposition target 2 (-) + qxn3: 0.05 # fraction of nitrogen sinking into deposition target 3 (-) + qxp2: 0.6 # fraction of phosphorus sinking into deposition target 2 (-) + qxp3: 0.03 # fraction of phosphorus sinking into deposition target 3 (-) + initialization: + c: 5.9 # carbon (mg C/m^3) + n: 0.0926 # nitrogen (mmol N/m^3) + p: 0.0036 # phosphorus (mmol P/m^3) + Chl: 0.3 # chlorophyll a (mg/m^3) + coupling: + RP: R4 + deposition_target1: Q6/surface + deposition_target2: Q1 + deposition_target3: Q7/surface + N1p: N1/p # phosphate (mmol P/m^3) + N3n: N3/n # nitrate (mmol N/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + O3c: O3/c # carbon dioxide (mmol C/m^3) + RainR: L2/RainR # rain ratio (PIC : POC) (-) + L2c: L2/c # free calcite (mg C/m^3) + P3: + long_name: picophytoplankton + model: ersem/primary_producer + parameters: + sum: 2.0 # maximum specific productivity at reference temperature (1/d) + q10: 2.0 # Q_10 temperature coefficient (-) + srs: 0.045 # specific rest respiration at reference temperature (1/d) + pu_ea: 0.2 # excreted fraction of primary production (-) + pu_ra: 0.2 # respired fraction of primary production (-) + qnlc: 0.006 # minimum nitrogen to carbon ratio (mmol N/mg C) + qplc: 0.00035 # minimum phosphorus to carbon ratio (mmol P/mg C) + xqcp: 1.0 # threshold for phosphorus limitation (relative to Redfield ratio) (-) + xqcn: 1.0 # threshold for nitrogen limitation (relative to Redfield ratio) (-) + xqp: 1.5 # maximum phosphorus to carbon ratio (relative to Redfield ratio) (-) + xqn: 1.05 # maximum nitrogen to carbon ratio (relative to Redfield ratio) (-) + qun3: 0.006 # nitrate affinity (m^3/mg C/d) + qun4: 0.007 # ammonium affinity (m^3/mg C/d) + qurp: 0.006 # phosphate affinity (m^3/mg C/d) + snplux: 1.0 # specific tendency of luxury uptake of nutrients towards maximum quota (1/d), default = 1.0 + use_Si: false # use silicate, default = false + sdo: 0.055 # 1.1 of minimal specific lysis rate (1/d) + alpha: 6.0 # initial slope of PI-curve (mg C m^2/mg Chl/W/d) + beta: 0.12 # photoinhibition parameter (mg C m^2/mg Chl/W/d) + phim: 0.015 # maximum effective chlorophyll to carbon photosynthesis ratio (mg Chl/mg C) + Limnut: 1 # nitrogen-phosphorus colimitation formulation (0: geometric mean, 1: minimum, 2: harmonic mean) + docdyn: true # use dynamic ratio of labile to semi-labile DOM production, default = false + uB1c_O2: 0.11 # oxygen produced per unit of carbon fixed (mmol O_2/mg C) + urB1_O2: 0.1 # oxygen consumed per unit of carbon respired (mmol O_2/mg C) + iopABS: 0.023 # specific shortwave absorption (m^2/mg Chl), default = 0.008 + iopBBS: 0.003 # specific shortwave backscatter (m^2/mg Chl), default = 0.003 + c0: 0.0088 # background carbon concentration (mg C/m^3), default = 0.0 + resm: 0.0 # maximum nutrient-limitation-induced sinking velocity (m/d), default = 0.0 + esni: 0.7 # level of nutrient limitation below which sinking commences (-) + cenh: false # enable atmospheric CO2 influence on photosynthesis, default = false + ndeposition: 3 # number of target pools for sedimentation, default = 1 + qxc2: 0.5 # fraction of carbon sinking into deposition target 2 (-) + qxc3: 0.05 # fraction of carbon sinking into deposition target 3 (-) + qxn2: 0.5 # fraction of nitrogen sinking into deposition target 2 (-) + qxn3: 0.05 # fraction of nitrogen sinking into deposition target 3 (-) + qxp2: 0.6 # fraction of phosphorus sinking into deposition target 2 (-) + qxp3: 0.03 # fraction of phosphorus sinking into deposition target 3 (-) + initialization: + c: 5.9 # carbon (mg C/m^3) + n: 0.0926 # nitrogen (mmol N/m^3) + p: 0.0036 # phosphorus (mmol P/m^3) + Chl: 0.3 # chlorophyll a (mg/m^3) + coupling: + RP: R4 + deposition_target1: Q6/surface + deposition_target2: Q1 + deposition_target3: Q7/surface + N1p: N1/p # phosphate (mmol P/m^3) + N3n: N3/n # nitrate (mmol N/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + O3c: O3/c # carbon dioxide (mmol C/m^3) + P4: + long_name: microphytoplankton + model: ersem/primary_producer + parameters: + sum: 1.125 # maximum specific productivity at reference temperature (1/d) + q10: 2.0 # Q_10 temperature coefficient (-) + srs: 0.035 # specific rest respiration at reference temperature (1/d) + pu_ea: 0.2 # excreted fraction of primary production (-) + pu_ra: 0.2 # respired fraction of primary production (-) + qnlc: 0.0042 # minimum nitrogen to carbon ratio (mmol N/mg C) + qplc: 0.0001 # minimum phosphorus to carbon ratio (mmol P/mg C) + xqcp: 1.0 # threshold for phosphorus limitation (relative to Redfield ratio) (-) + xqcn: 1.0 # threshold for nitrogen limitation (relative to Redfield ratio) (-) + xqp: 2.7 # maximum phosphorus to carbon ratio (relative to Redfield ratio) (-) + xqn: 1.1 # maximum nitrogen to carbon ratio (relative to Redfield ratio) (-) + qun3: 0.002 # nitrate affinity (m^3/mg C/d) + qun4: 0.002 # ammonium affinity (m^3/mg C/d) + qurp: 0.002 # phosphate affinity (m^3/mg C/d) + snplux: 1.0 # specific tendency of luxury uptake of nutrients towards maximum quota (1/d), default = 1.0 + use_Si: false # use silicate, default = false + sdo: 0.045 # 1.1 of minimal specific lysis rate (1/d) + alpha: 3.0 # initial slope of PI-curve (mg C m^2/mg Chl/W/d) + beta: 0.06 # photoinhibition parameter (mg C m^2/mg Chl/W/d) + phim: 0.045 # maximum effective chlorophyll to carbon photosynthesis ratio (mg Chl/mg C) + Limnut: 1 # nitrogen-phosphorus colimitation formulation (0: geometric mean, 1: minimum, 2: harmonic mean) + docdyn: true # use dynamic ratio of labile to semi-labile DOM production, default = false + uB1c_O2: 0.11 # oxygen produced per unit of carbon fixed (mmol O_2/mg C) + urB1_O2: 0.1 # oxygen consumed per unit of carbon respired (mmol O_2/mg C) + iopABS: 0.008 # specific shortwave absorption (m^2/mg Chl), default = 0.008 + iopBBS: 0.00048 # specific shortwave backscatter (m^2/mg Chl), default = 0.003 + c0: 0.0001 # background carbon concentration (mg C/m^3), default = 0.0 + resm: 5.0 # maximum nutrient-limitation-induced sinking velocity (m/d), default = 0.0 + esni: 0.7 # level of nutrient limitation below which sinking commences (-) + cenh: false # enable atmospheric CO2 influence on photosynthesis, default = false + ndeposition: 3 # number of target pools for sedimentation, default = 1 + qxc2: 0.5 # fraction of carbon sinking into deposition target 2 (-) + qxc3: 0.05 # fraction of carbon sinking into deposition target 3 (-) + qxn2: 0.5 # fraction of nitrogen sinking into deposition target 2 (-) + qxn3: 0.05 # fraction of nitrogen sinking into deposition target 3 (-) + qxp2: 0.6 # fraction of phosphorus sinking into deposition target 2 (-) + qxp3: 0.03 # fraction of phosphorus sinking into deposition target 3 (-) + initialization: + c: 5.9 # carbon (mg C/m^3) + n: 0.0926 # nitrogen (mmol N/m^3) + p: 0.0036 # phosphorus (mmol P/m^3) + Chl: 0.3 # chlorophyll a (mg/m^3) + coupling: + RP: R6 + deposition_target1: Q6/surface + deposition_target2: Q1 + deposition_target3: Q7/surface + N1p: N1/p # phosphate (mmol P/m^3) + N3n: N3/n # nitrate (mmol N/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen (mmol O_2/m^3) + O3c: O3/c # carbon dioxide (mmol C/m^3) + Z4: + long_name: mesozooplankton + model: ersem/mesozooplankton + parameters: + q10: 2.0 # Q_10 temperature coefficient (-) + minfood: 12.0 # Michaelis-Menten constant to perceive food (mg C/m^3) + chuc: 36.0 # Michaelis-Menten constant for food uptake (mg C/m^3) + sum: 1.0 # maximum specific uptake at reference temperature (1/d) + pu: 0.6 # assimilation efficiency (-) + pu_ea: 0.5 # fraction of unassimilated prey that is excreted (not respired) (-) + pu_eaR: 0.9 # fraction of unassimilated detritus that is excreted (not respired) (-) + pe_R1: 0.5 # dissolved fraction of excreted/dying matter (-) + srs: 0.015 # specific rest respiration at reference temperature (1/d) + sd: 0.05 # basal mortality (1/d) + sdo: 0.2 # maximum mortality due to oxygen limitation (1/d) + chro: 7.81 # Michaelis-Menten constant for oxygen limitation (-) + qpc: 0.000786 # phosphorus to carbon ratio (mmol P/mg C) + qnc: 0.0126 # nitrogen to carbon ratio (mmol N/mg C) + Minprey: 300.0 # food threshold for overwintering state (mg C/m^2) + repw: 0.0025 # specific overwintering respiration (1/d) + mort: 0.0025 # specific overwintering mortality (1/d) + R1R2: 1.0 # labile fraction of produced dissolved organic carbon (-) + xR1p: 1.2 # transfer of phosphorus to DOM, relative to POM (-), default = 0.0 + xR1n: 1.0 # transfer of nitrogen to DOM, relative to POM (-), default = 0.0 + urB1_O2: 0.1 # oxygen consumed per carbon respired (mmol O_2/mg C) + gutdiss: 0.5 # fraction of prey calcite that dissolves after ingestion (-) + c0: 0.0033 # background concentration (mg C/m^3) + nprey: 9 # number of prey types, default = 0 + suprey1: 0.15 # relative affinity for prey type 1 (-) + suprey2: 0.05 # relative affinity for prey type 2 (-) + suprey3: 0.0 # relative affinity for prey type 3 (-) + suprey4: 0.15 # relative affinity for prey type 4 (-) + suprey5: 0.25 # relative affinity for prey type 5 (-) + suprey6: 0.25 # relative affinity for prey type 6 (-) + suprey7: 0.05 # relative affinity for prey type 7 (-) + suprey8: 0.0 # relative affinity for prey type 8 (-) + suprey9: 0.1 # relative affinity for prey type 9 (-) + prey9ispom: true # prey type 9 is detritus, default = false + initialization: + c: 1.2 # carbon (mg C/m^3) + coupling: + prey1: P1 + prey2: P2 + prey3: P3 + prey4: P4 + prey5: Z4 + prey6: Z5 + prey7: Z6 + prey8: B1 + prey9: R6 + RP: R8 + N1p: N1/p # phosphate (mmol P/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen source (mmol O_2/m^3) + O3c: O3/c # carbon dioxide sink (mmol C/m^3) + L2c: L2/c # calcite (mg C/m^3) + Z5: + long_name: microzooplankton + model: ersem/microzooplankton + parameters: + q10: 2.0 # Q_10 temperature coefficient (-) + minfood: 12.0 # Michaelis-Menten constant to perceive food (mg C/m^3) + chuc: 32.0 # Michaelis-Menten constant for food uptake (mg C/m^3) + sum: 1.25 # maximum specific uptake at reference temperature (1/d) + pu: 0.5 # assimilation efficiency (-) + pu_ea: 0.5 # fraction of unassimilated prey that is excreted (not respired) (-) + pe_R1: 0.5 # dissolved fraction of excreted/dying matter (-) + srs: 0.02 # specific rest respiration at reference temperature (1/d) + sd: 0.05 # basal mortality (1/d) + sdo: 0.25 # maximum mortality due to oxygen limitation (1/d) + chro: 7.81 # Michaelis-Menten constant for oxygen limitation (-) + qpc: 0.001 # maximum phosphorus to carbon ratio (mmol P/mg C) + qnc: 0.0167 # maximum nitrogen to carbon ratio (mmol N/mg C) + stempp: 0.5 # specific excretion rate of excess phosphorus (1/d) + stempn: 0.5 # specific excretion rate of excess nitrogen (1/d) + R1R2: 1.0 # labile fraction of produced dissolved organic carbon (-) + xR1p: 1.2 # transfer of phosphorus to DOM, relative to POM (-), default = 1.0 + xR1n: 1.0 # transfer of nitrogen to DOM, relative to POM (-), default = 1.0 + urB1_O2: 0.1 # oxygen consumed per carbon respired (mmol O_2/mg C) + gutdiss: 0.5 # fraction of prey calcite that dissolves after ingestion (-) + c0: 0.0033 # background concentration (mg C/m^3) + nprey: 7 # number of prey types, default = 0 + suprey1: 0.1 # relative affinity for prey type 1 (-) + suprey2: 0.15 # relative affinity for prey type 2 (-) + suprey3: 0.15 # relative affinity for prey type 3 (-) + suprey4: 0.15 # relative affinity for prey type 4 (-) + suprey5: 0.1 # relative affinity for prey type 5 (-) + suprey6: 0.15 # relative affinity for prey type 6 (-) + suprey7: 0.2 # relative affinity for prey type 7 (-) + initialization: + c: 7.2 # carbon (mg C/m^3) + n: 0.12 # nitrogen (mmol N/m^3) + p: 0.0113 # phosphorus (mmol P/m^3) + coupling: + prey1: B1 + prey2: P1 + prey3: P2 + prey4: P3 + prey5: P4 + prey6: Z5 + prey7: Z6 + RP: R6 + N1p: N1/p # phosphate (mmol P/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + O2o: O2/o # oxygen source (mmol O_2/m^3) + O3c: O3/c # carbon dioxide sink (mmol C/m^3) + L2c: L2/c # calcite (mg C/m^3) + Z6: + long_name: nanoflagellates + model: ersem/microzooplankton + parameters: + q10: 2.0 # Q_10 temperature coefficient (-) + minfood: 12.0 # Michaelis-Menten constant to perceive food (mg C/m^3) + chuc: 28.0 # Michaelis-Menten constant for food uptake (mg C/m^3) + sum: 1.5 # maximum specific uptake at reference temperature (1/d) + pu: 0.4 # assimilation efficiency (-) + pu_ea: 0.5 # fraction of unassimilated prey that is excreted (not respired) (-) + pe_R1: 0.5 # dissolved fraction of excreted/dying matter (-) + srs: 0.025 # specific rest respiration at reference temperature (1/d) + sd: 0.05 # basal mortality (1/d) + sdo: 0.3 # maximum mortality due to oxygen limitation (1/d) + chro: 7.81 # Michaelis-Menten constant for oxygen limitation (-) + qpc: 0.001 # maximum phosphorus to carbon ratio (mmol P/mg C) + qnc: 0.0167 # maximum nitrogen to carbon ratio (mmol N/mg C) + stempp: 0.5 # specific excretion rate of excess phosphorus (1/d) + stempn: 0.5 # specific excretion rate of excess nitrogen (1/d) + R1R2: 1.0 # labile fraction of produced dissolved organic carbon (-) + xR1p: 1.2 # transfer of phosphorus to DOM, relative to POM (-), default = 1.0 + xR1n: 1.0 # transfer of nitrogen to DOM, relative to POM (-), default = 1.0 + urB1_O2: 0.1 # oxygen consumed per carbon respired (mmol O_2/mg C) + gutdiss: 0.5 # fraction of prey calcite that dissolves after ingestion (-) + c0: 0.0033 # background concentration (mg C/m^3) + nprey: 4 # number of prey types, default = 0 + suprey1: 0.45 # relative affinity for prey type 1 (-) + suprey2: 0.15 # relative affinity for prey type 2 (-) + suprey3: 0.25 # relative affinity for prey type 3 (-) + suprey4: 0.15 # relative affinity for prey type 4 (-) + initialization: + c: 2.421 # carbon (mg C/m^3) + n: 0.0505 # nitrogen (mmol N/m^3) + p: 0.047 # phosphorus (mmol P/m^3) + coupling: + prey1: B1 + prey2: P2 + prey3: P3 + prey4: Z6 + RP: R4 + N1p: N1/p # phosphate (mmol P/m^3) + N4n: N4/n # ammonium (mmol N/m^3) + R1c: R1/c # dissolved organic carbon (mg C/m^3) + R1p: R1/p # dissolved organic phosphorus (mmol P/m^3) + R1n: R1/n # dissolved organic nitrogen (mmol N/m^3) + R2c: R2/c # semi-labile dissolved organic carbon (mg C/m^3) + RPs: R6/s # particulate organic silicate (mmol Si/m^3) + O2o: O2/o # oxygen source (mmol O_2/m^3) + O3c: O3/c # carbon dioxide sink (mmol C/m^3) + L2c: L2/c # calcite (mg C/m^3) + L2: + long_name: calcite + model: ersem/calcification + parameters: + iswcal: 1 # calcification/dissolution dependence on calcite saturation (1: power law, 2: hyperbolic) + ncalc: 0.81 # power of the calcification law (Ridgwell et al. 2007, mineral calcite) (-) + ndiss: 2.22 # power of the dissolution law (Keir 1980) (-) + Rain0: 0.6 # maximum rain ratio from PISCES (-) + sedL2: 10.0 # sinking velocity (m/d) + sL2O3: 0.03 # maximum specific dissolution rate (1/d), default = 1.0 + c0: 1e-05 # background concentration (mg C/m^3), default = 0.0 + ndeposition: 1 # number of target pools for sedimentation, default = 1 + initialization: + c: 0.05 # carbon (mg C/m^3) + coupling: + deposition_target1: bL2 + om_cal: O3/Om_cal # calcite saturation (-) + O3c: O3/c # total dissolved inorganic carbon (mmol C/m^3) + T1_30d: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + photolabile: True + #age: 30. + photoaging: .5 + bioaging: .5 + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + phyref: 0.0 #0.03 # reference photooxidation rate (d-1) + surf_phyref: 0.042 # 0.045 #0.03 # reference photooxidation rate (d-1) + iref: 130 # reference irradinace for photooxidation (W m-2) + floc: 0.000002 # max flocculation rate [d-1 (mg C)-1] + sbx: 0.69 # log(salinity) (psu) at which flocculation is max.max is assumed to be around 2 psu. 0.69=log(2) + scx: 1.35 # salinity function parameter. 1.35 allows the max flocc rate to decrease of one order of magnitude at 35 psu + phyt: 0.24 # fraction of T1 going to T2 after photolysis + chemEIR_scaling: 2. + initialization: + c: 1200 + coupling: + chemEIR: light/parEIR + TD_older: T1_8y + T2: T2_30d + RPc: R6/c + RPn: R6/n + RPp: R6/p + O3c: O3/c + N1p: N1/p + N4n: N4/n + T1_8y: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + #age: 10950. + photolabile: True + photoaging: 0.025 + bioaging: 0.025 + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + phyref: 0.0 #0.00533 # reference photooxidation rate (d-1) + surf_phyref: 0.0074 #0.00803 #0.00533 # factor of .17777 from 30d # reference photooxidation rate (d-1) + iref: 130 # reference irradinace for photooxidation (W m-2) + floc: 0.000002 # max flocculation rate [d-1 (mg C)-1] + sbx: 0.69 # log(salinity) (psu) at which flocculation is max.max is assumed to be around 2 psu. 0.69=log(2) + scx: 1.35 # salinity function parameter. 1.35 allows the max flocc rate to decrease of one order of magnitude at 35 psu + phyt: 0.24 # fraction of T1 going to T2 after photolysis + chemEIR_scaling: 2. + initialization: + c: 0. #1200.0 + coupling: + chemEIR: light/parEIR + TD_older: T1_70y + T2: T2_8y + RPc: R6/c + RPn: R6/n + RPp: R6/p + O3c: O3/c + N1p: N1/p + N4n: N4/n + T1_70y: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + #age: 10950. + photolabile: True + photoaging: 0. + bioaging: 0. + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + phyref: 0.0 #0.0023 # reference photooxidation rate (d-1) + surf_phyref: 0.0033 #0.00352 ##0.0023 # # factor of .078 from 30d # reference photooxidation rate (d-1) + iref: 130 # reference irradinace for photooxidation (W m-2) + floc: 0.000002 # max flocculation rate [d-1 (mg C)-1] + sbx: 0.69 # log(salinity) (psu) at which flocculation is max.max is assumed to be around 2 psu. 0.69=log(2) + scx: 1.35 # salinity function parameter. 1.35 allows the max flocc rate to decrease of one order of magnitude at 35 psu + phyt: 0.24 # fraction of T1 going to T2 after photolysis + chemEIR_scaling: 2. + initialization: + c: 0. #1200.0 + coupling: + chemEIR: light/parEIR + T2: T2_70y + RPc: R6/c + RPn: R6/n + RPp: R6/p + O3c: O3/c + N1p: N1/p + N4n: N4/n + T2_30d: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + #age: 30. + photolabile: False + photoaging: 0. + bioaging: .1 + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 1200. #1200.0 + coupling: + TD_older: T2_8y + T2_8y: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + #age: 2920 + photolabile: False + photoaging: 0.0 + bioaging: .005 + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 0. #1200.0 + coupling: + TD_older: T2_70y + T2_70y: + long_name: photolabile terrigenous DOC + model: ersem/TDOC + parameters: + #age: 25550. + photolabile: False + photoaging: 0. + bioaging: 0. + qn: 0.0042 + qp: 0.0001 # elemental composition + c0: 0.0033 # background carbon concentration (mg C/m^3), default = 0.0 + initialization: + c: 0. #1200.0 + + bL2: + long_name: benthic calcite + model: ersem/benthic_calcite + parameters: + iswcal: 1 # dissolution dependence on calcite saturation (0: none, 1: power law, 2: hyperbolic) + ndiss: 2.22 # power of the dissolution law (Keir 1980) (-) + fdissmax: 30.0 # maximum specific dissolution rate (1/d), default = 0.0 + fdissmin: 0.05 # minimum specific dissolution rate (1/d), default = 0.03 + c0: 1e-05 # background calcite concentration (mg C/m^2), default = 0.0 + initialization: + c: 0.05 # carbon (mg C/m^2) + coupling: + Om_Cal: O3/Om_cal # calcite saturation (-) + O3c: O3/c # dissolved inorganic carbon (mmol/m^3) + ben_col: + long_name: benthic column + model: ersem/benthic_column + parameters: + qPW: 0.4 # sediment porosity (-) + EDZ_mix: 20.0 # equilibrium diffusive speed between sediment surface water (d/m) + d_tot: 0.3 # depth of sediment column (m) + Etur: 2e-06 # basal bioturbation rate (m^2/d) + mtur: 10.0 # maximum relative turbation enhancement (-) + htur: 116.0 # Michaelis-Menten constant for bioturbation (mg C/m^2/d) + dtur: 0.02 # bioturbation depth (m) + EDZ_1: 5e-05 # diffusivity in oxygenated layer (m^2/d) + EDZ_2: 5e-05 # diffusivity in oxidized layer (m^2/d) + EDZ_3: 5e-05 # diffusivity in anoxic layer (m^2/d) + irr_min: 2.0 # minimum diffusion enhancement through bioirrigation (-) + mirr: 10.0 # maximum relative diffusion enhancement due to bioirrigation (-) + hirr: 101.0 # Michaelis-Menten constant for bioirrigation (mg C/m^2/d) + initialization: + D1m: 0.009 # depth of bottom interface of oxygenated layer (m) + D2m: 0.05 # depth of bottom interface of oxidized layer (m) + K1: + long_name: benthic phosphate + model: ersem/benthic_column_dissolved_matter + parameters: + composition: p # composition (any combination of c,n,p,s,o,a) + ads1: 100.0 # adsorption in layer 1 (total:dissolved) (-), default = 1.0 + ads2: 100.0 # adsorption in layer 2 (total:dissolved) (-), default = 1.0 + ads3: 2.0 # adsorption in layer 3 (total:dissolved) (-), default = 1.0 + c0: 0.0003 # background concentration (mg C/m^2) + initialization: + p: 6.8 # phosphorus (mmol/m^2) + coupling: + p_pel: N1/p # pelagic phosphorus (mmol/m^3) + K3: + long_name: benthic nitrate + model: ersem/benthic_column_dissolved_matter + parameters: + composition: n # composition (any combination of c,n,p,s,o,a) + last_layer: 2 # sediment layer where concentration drops to zero, default = 3 + relax: 5.0 # rate of relaxation towards equilibrium concentration profile (1/d) + minD: 0.0001 # minimum depth of zero-concentration isocline (m) + c0: 0.0003 # background concentration (mg C/m^2) + initialization: + n: 0.584 # nitrogen (mmol/m^2) + coupling: + n_pel: N3/n # pelagic nitrogen (mmol/m^3) + K4: + long_name: benthic ammonium + model: ersem/benthic_column_dissolved_matter + parameters: + composition: n # composition (any combination of c,n,p,s,o,a) + ads1: 3.0 # adsorption in layer 1 (total:dissolved) (-), default = 1.0 + ads2: 3.0 # adsorption in layer 2 (total:dissolved) (-), default = 1.0 + ads3: 3.0 # adsorption in layer 3 (total:dissolved) (-), default = 1.0 + correction: true # move losses in oxygenic layer to deeper layers if pelagic concentration is limiting, default = false + c0: 0.0003 # background concentration (mg C/m^2) + initialization: + n: 25.0 # nitrogen (mmol/m^2) + coupling: + n_pel: N4/n # pelagic nitrogen (mmol/m^3) + K5: + long_name: benthic silicate + model: ersem/benthic_column_dissolved_matter + parameters: + composition: s # composition (any combination of c,n,p,s,o,a) + c0: 9e-05 # background carbon concentration (mg C/m^2), default = 0.0 + initialization: + s: 20.1 # silicate (mmol/m^2) + coupling: + s_pel: N5/s # pelagic silicate (mmol/m^3) + G2: + long_name: benthic oxygen + model: ersem/benthic_column_dissolved_matter + parameters: + composition: o # composition (any combination of c,n,p,s,o,a) + last_layer: 1 # sediment layer where concentration drops to zero, default = 3 + relax: 5.0 # rate of relaxation towards equilibrium concentration profile (1/d) + minD: 0.0001 # minimum depth of zero-concentration isocline (m) + initialization: + o: 0.0225 # oxygen (mmol/m^2) + o_deep: 0 # oxygen below zero isocline (mmol/m^2) + coupling: + o_pel: O2/o # pelagic oxygen (mmol/m^3) + G3: + long_name: benthic dissolved inorganic carbon + model: ersem/benthic_column_dissolved_matter + parameters: + composition: c # composition (any combination of c,n,p,s,o,a) + initialization: + c: 375.0 # carbon (mmol/m^2) + coupling: + c_pel: O3/c # pelagic carbon (mmol/m^3) + Q6s_aerobic: + long_name: aerobic particulate silicate + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: s # elemental composition + remin: 0.007 # remineralization rate (1/d), default = 0.0 + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + variable_maximum_depth: true # maximum depth is variable, default = false + coupling: + Q: Q6 + maximum_depth: ben_col/D1m # maximum depth (m) + s_remin_target: K5/per_layer/s1 # sink for remineralized silicate (mmol Si/m^2) + Q6s_anaerobic: + long_name: anaerobic particulate silicate + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: s # elemental composition + remin: 0.007 # remineralization rate (1/d), default = 0.0 + variable_minimum_depth: true # minimum depth is variable, default = false + maximum_depth: 0.3 # maximum depth (m), default = 0.0 + source_depth_distribution: 2 # vertical distribution of changes (1: constant absolute rate, 2: constant relative rate, 3: constant carbon-based relative rate), default = 1 + coupling: + Q: Q6 + minimum_depth: ben_col/D1m # minimum depth (m) + s_remin_target: K5/per_layer/s2 # sink for remineralized silicate (mmol Si/m^2) + ben_nit: + long_name: benthic nitrogen cycle + model: ersem/benthic_nitrogen_cycle + parameters: + q10nit: 2.0 # Q_10 temperature coefficient (-) + hM4M3: 10.0 # Michaelis-Menten constant for nitrate limitation (mmol/m^3) + ISWph: 1 # pH impact on nitrification (0: off, 1: on), default = 0 + sM4M3: 4.0 # maximum nitrification rate at 10 degrees Celsius (1/d) + xno3: 2.0 # oxygen consumed per nitrate produced (mol O_2/mol N) + pammon: 0.5 # fraction of oxygen demand fulfilled by denitrification under anaerobic conditions (-) + pdenit: 0.05 # fraction of denitrification producing dinitrogen gas (remainder produces ammonium) (-) + xn2: 1.25 # oxygen demand fulfilled by reduction of nitrate to dinitrogen gas (mol O_2/mol N) + hM3G4: 1.0 # Michaelis-Menten constant for nitrate limitation of denitrification (mmol N/m^3) + coupling: + K3n: K3/per_layer/n1 # benthic nitrate in 1st layer (mmol N/m^2) + K4n: K4/per_layer/n1 # benthic ammonium in 1st layer (mmol N/m^2) + G2o: G2/per_layer/o1 # benthic oxygen in 1st layer (mmol O_2/m^2) + N4n: N4/n # pelagic ammonium (mmol N/m^3) + benTA: zero_hz # benthic alkalinity in aerobic layer (mEq/m^2) + benTA2: zero_hz # benthic alkalinity in anaerobic layer (mEq/m^2) + K3n2: K3/per_layer/n2 # benthic nitrate in 2nd layer (mmol N/m^2) + K4n2: K4/per_layer/n2 # benthic ammonium in 2nd layer (mmol N/m^2) + G2o2: G2/per_layer/o2 # oxygen in 2nd layer (mmol O_2/m^2) + layer2_thickness: ben_col/layer2_thickness # thickness of 2nd layer (m) + initialization: + G4n: 0 # dinitrogen gas (mmol N/m^2) + H1: + long_name: benthic aerobic bacteria + model: ersem/benthic_bacteria + parameters: + qnc: 0.0167 # nitrogen to carbon ratio (mmol N/mg C) + qpc: 0.00125 # phosphorus to carbon ratio (mmol P/mg C) + c0: 1e-06 # background concentration (mg C/m^2), default = 0.0 + q10: 2.0 # Q_10 temperature coefficient (-) + dd: 0.001 # Michaelis-Menten constant for oxygen limitation through layer thickness (m) + nfood: 3 # number of food sources + su1: 0.0005 # base affinity for food source 1 (m^2/mg C/d) + su2: 2e-05 # base affinity for food source 2 (m^2/mg C/d) + suf2: 0.0002 # additional affinity for food source 2 subject to nutrient limitation (m^2/mg C/d), default = 0.0 + puinc2: 2.0 # affinity for nutrients relative to carbon in food source 2 (-), default = 1.0 + pue2: 0.1 # fraction of consumed food source 2 that is excreted (-), default = 0.0 + su3: 2e-06 # base affinity for food source 3 (m^2/mg C/d) + pue3: 0.1 # fraction of consumed food source 3 that is excreted (-), default = 0.0 + pur: 0.3 # fraction of consumed carbon that is respired (-) + sr: 0.02 # specific rest respiration (1/d) + pdQ1: 0.1 # fraction of dying matter that is dissolved (-) + sd: 0.05 # specific maximum mortality related to oxygen limitation (1/d) + initialization: + c: 25.0 # carbon (mg C/m^2) + coupling: + Q1: Q1 + Q6: H1_Q6 + food1: Q1 + food2: H1_Q6 + food3: H1_Q7 + Dm: ben_col/D1m # depth interval available to bacteria (m) + K4n: K4/per_layer/n1_pw # ammonium (mmol N/m^2) + K1p: K1/per_layer/p1_pw # phosphate (mmol N/m^2) + G2o: G2/per_layer/o1 # oxygen (mmol O_2/m^2) + G3c: G3/per_layer/c1 # dissolved inorganic carbon (mmol C/m^2) + benTA: zero_hz # benthic alkalinity (mEq/m^2) + H1_Q6: + long_name: benthic aerobic bacteria POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + variable_maximum_depth: true # maximum depth is variable, default = false + coupling: + Q: Q6 + maximum_depth: ben_col/D1m # maximum depth (m) + H1_Q7: + long_name: benthic aerobic bacteria refractory POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnp # elemental composition + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + variable_maximum_depth: true # maximum depth is variable, default = false + coupling: + Q: Q7 + maximum_depth: ben_col/D1m # maximum depth (m) + H2: + long_name: benthic anaerobic bacteria + model: ersem/benthic_bacteria + parameters: + qnc: 0.0167 # nitrogen to carbon ratio (mmol N/mg C) + qpc: 0.00125 # phosphorus to carbon ratio (mmol P/mg C) + c0: 1e-06 # background concentration (mg C/m^2), default = 0.0 + q10: 2.0 # Q_10 temperature coefficient (-) + dd: 0.01 # Michaelis-Menten constant for oxygen limitation through layer thickness (m) + nfood: 2 # number of food sources + su1: 2e-05 # base affinity for food source 1 (m^2/mg C/d) + suf1: 0.0002 # additional affinity for food source 1 subject to nutrient limitation (m^2/mg C/d), default = 0.0 + puinc1: 2.0 # affinity for nutrients relative to carbon in food source 1 (-), default = 1.0 + pue1: 0.0 # fraction of consumed food source 1 that is excreted (-), default = 0.0 + su2: 2e-06 # base affinity for food source 2 (m^2/mg C/d) + pue2: 0.0 # fraction of consumed food source 2 that is excreted (-), default = 0.0 + pur: 0.3 # fraction of consumed carbon that is respired (-) + sr: 0.02 # specific rest respiration (1/d) + pdQ1: 0.0 # fraction of dying matter that is dissolved (-) + sd: 0.05 # specific maximum mortality related to oxygen limitation (1/d) + initialization: + c: 400.0 # carbon (mg C/m^2) + coupling: + Q1: Q1 + Q6: H2_Q6 + food1: H2_Q6 + food2: H2_Q7 + Dm: ben_col/layer2_thickness # depth interval available to bacteria (m) + K4n: K4/per_layer/n2_pw # ammonium (mmol N/m^2) + K1p: K1/per_layer/p2_pw # phosphate (mmol N/m^2) + G2o: ben_nit/K6_calculator/K6 # oxygen (mmol O_2/m^2) + G3c: G3/per_layer/c2 # dissolved inorganic carbon (mmol C/m^2) + benTA: zero_hz # benthic alkalinity (mEq/m^2) + H2_Q6: + long_name: benthic anaerobic bacteria POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + variable_minimum_depth: true # minimum depth is variable, default = false + maximum_depth: 0.3 # maximum depth (m), default = 0.0 + source_depth_distribution: 3 # vertical distribution of changes (1: constant absolute rate, 2: constant relative rate, 3: constant carbon-based relative rate), default = 1 + coupling: + Q: Q6 + minimum_depth: ben_col/D1m # minimum depth (m) + H2_Q7: + long_name: benthic anaerobic bacteria refractory POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnp # elemental composition + variable_minimum_depth: true # minimum depth is variable, default = false + maximum_depth: 0.3 # maximum depth (m), default = 0.0 + source_depth_distribution: 3 # vertical distribution of changes (1: constant absolute rate, 2: constant relative rate, 3: constant carbon-based relative rate), default = 1 + coupling: + Q: Q7 + minimum_depth: ben_col/D1m # minimum depth (m) + Y2: + long_name: benthic deposit feeder + model: ersem/benthic_fauna + parameters: + qnc: 0.0119 # nitrogen to carbon ratio (mmol N/mg C) + qpc: 0.000792 # phosphorus to carbon ratio (mmol P/mg C) + c0: 0.001 # background concentration (mg C/m^2), default = 0.0 + q10: 2.0 # Q_10 temperature coefficient (-) + rlO2: 0.0 # minimum pelagic oxygen concentration (mmol O2/m^3) + hO2: 0.0 # Michaelis-Menten constant for oxygen limitation (mmol O2/m^3) + xcl: 2500.0 # abundance above which crowding reduces food uptake (mg C/m^2) + xcs: 3000.0 # Michaelis-Menten constant for the impact of crowding (mg C/m^2) + xch: 5000.0 # abundance determining asymptotic threshold of crowding limitation (-> xch/(Yc+xch) for Yc-> inf) (mg C/m^2) + su: 0.11 # specific maximum uptake at reference temperature (1/d) + lu: 250.0 # Michaelis-Menten constant for food preference as function of food concentration (mg C/m^2) + hu: 3000.0 # Michaelis-Menten constant for gross carbon uptake (mg C/m^2) + pue: 0.35 # fraction of carbon in consumed live food that goes to faeces (-) + pueQ: 0.8 # fraction of carbon in consumed detritus that goes to faeces (-) + pudil: 0.8 # relative nutrient content of faeces (-) + sd: 0.001 # specific mortality at reference temperature (1/d) + sdmO2: 1.0 # specific maximum additional mortality due to oxygen stress (1/d) + sdc: 0.022 # specific maximum additional mortality induced by cold temperature (1/d) + xdc: -0.7 # e-folding temperature factor of cold mortality response (1/degree_C) + sr: 0.0027 # specific rest respiration at reference temperature (1/d) + pur: 0.35 # fraction of assimilated food that is respired (-) + nfood: 4 # number of food sources, default = 0 + pufood1: 1.0 # preference for food source 1 (-) + pufood2: 1.0 # preference for food source 2 (-) + pufood3: 0.1 # preference for food source 3 (-) + pufood4: 1.0 # preference for food source 4 (-) + food3ispom: true # food source 3 is detritus, default = false + ptur: 1.0 # relative contribution to bioturbation (-), default = 0.0 + pirr: 1.0 # relative contribution to bioirrigation (-), default = 0.0 + initialization: + c: 3000.0 # carbon (mg C/m^2) + coupling: + food1: H1 + food2: H2 + food3: Y2_Q6_source + food4: Y4 + Q: Y2_Q6_sink + Dm: ben_col/D1m # depth of limiting layer for uptake (m) + O2o: O2/o # pelagic oxygen (mmol O_2/m^3) + G3c: G3/per_layer/c1 # carbon dioxide (mmol C/m^2) + G2o: G2/per_layer/o1 # oxygen (mmol O_2/m^2) + K1p: K1/per_layer/p1 # benthic phosphate in aerobic layer (mmol P/m^2) + K4n: K4/per_layer/n1 # benthic ammonium in aerobic layer (mmol N/m^2) + K1p2: K1/per_layer/p2 # benthic phosphate in anaerobic layer (mmol P/m^2) + K4n2: K4/per_layer/n2 # benthic ammonium in anaerobic layer (mmol N/m^2) + benTA: zero_hz # benthic alkalinity in aerobic layer (mEq/m^2) + benTA2: zero_hz # benthic alkalinity in anaerobic layer (mEq/m^2) + food2c_an: H2/c # food source 2 carbon in anaerobic layer (mg C/m^2) + food3c_an: Y2_Q6_source_anaerobic/c # food source 3 carbon in anaerobic layer (mg C/m^2) + Y2_Q6_source: + long_name: benthic deposit feeder total POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + minimum_depth: 0.0025 # minimum depth (m), default = 0.0 + maximum_depth: 0.3 # maximum depth (m), default = 0.0 + coupling: + Q: Q6 + Y2_Q6_source_anaerobic: + long_name: benthic deposit feeder anaerobic POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + variable_minimum_depth: true # minimum depth is variable, default = false + maximum_depth: 0.3 # maximum depth (m), default = 0.0 + coupling: + Q: Q6 + minimum_depth: ben_col/D1m # minimum depth (m) + Y2_Q6_sink: + long_name: benthic deposit feeder POM sink + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + variable_maximum_depth: true # maximum depth is variable, default = false + coupling: + Q: Q6 + maximum_depth: Q6/pen_depth_c # maximum depth (m) + Y3: + long_name: benthic suspension feeder + model: ersem/benthic_fauna + parameters: + qnc: 0.0119 # nitrogen to carbon ratio (mmol N/mg C) + qpc: 0.000792 # phosphorus to carbon ratio (mmol P/mg C) + c0: 0.001 # background concentration (mg C/m^2), default = 0.0 + q10: 2.0 # Q_10 temperature coefficient (-) + rlO2: 0.0 # minimum pelagic oxygen concentration (mmol O2/m^3) + hO2: 0.0 # Michaelis-Menten constant for oxygen limitation (mmol O2/m^3) + xcl: 2500.0 # abundance above which crowding reduces food uptake (mg C/m^2) + xcs: 3000.0 # Michaelis-Menten constant for the impact of crowding (mg C/m^2) + xch: 5000.0 # abundance determining asymptotic threshold of crowding limitation (-> xch/(Yc+xch) for Yc-> inf) (mg C/m^2) + su: 0.09 # specific maximum uptake at reference temperature (1/d) + lu: 10.0 # Michaelis-Menten constant for food preference as function of food concentration (mg C/m^2) + hu: 300.0 # Michaelis-Menten constant for gross carbon uptake (mg C/m^2) + pue: 0.35 # fraction of carbon in consumed live food that goes to faeces (-) + pueQ: 0.85 # fraction of carbon in consumed detritus that goes to faeces (-) + pudil: 0.8 # relative nutrient content of faeces (-) + sd: 0.001 # specific mortality at reference temperature (1/d) + sdmO2: 1.0 # specific maximum additional mortality due to oxygen stress (1/d) + sdc: 0.022 # specific maximum additional mortality induced by cold temperature (1/d) + xdc: -0.7 # e-folding temperature factor of cold mortality response (1/degree_C) + sr: 0.0027 # specific rest respiration at reference temperature (1/d) + pur: 0.4 # fraction of assimilated food that is respired (-) + nfood: 6 # number of food sources, default = 0 + food1ispel: true # food source 1 is pelagic, default = false + food2ispel: true # food source 2 is pelagic, default = false + food3ispel: true # food source 3 is pelagic, default = false + food4ispel: true # food source 4 is pelagic, default = false + food5_ll: true # availability of food source 5 is limited by aerobic layer height, default = false + pufood1: 1.0 # preference for food source 1 (-) + pufood2: 1.0 # preference for food source 2 (-) + pufood3: 1.0 # preference for food source 3 (-) + pufood4: 1.0 # preference for food source 4 (-) + pufood5: 1.0 # preference for food source 5 (-) + pufood6: 0.1 # preference for food source 6 (-) + food4ispom: true # food source 4 is detritus, default = false + food6ispom: true # food source 6 is detritus, default = false + dwat: 1.0 # water layer accessible for pelagic food uptake (m), default = 1.0 + dQ6: 0.0025 # depth of available sediment layer (m), default = 0.0 + initialization: + c: 2000.0 # carbon (mg C/m^2) + coupling: + food1: P1 + food2: P2 + food3: P3 + food4: R6 + food5: H1 + food6: Y3_Q6 + Q: Y3_Q6 + Dm: ben_col/D1m # depth of limiting layer for uptake (m) + O2o: O2/o # pelagic oxygen (mmol O_2/m^3) + G3c: G3/per_layer/c1 # carbon dioxide (mmol C/m^2) + G2o: G2/per_layer/o1 # oxygen (mmol O_2/m^2) + K1p: K1/per_layer/p1 # benthic phosphate in aerobic layer (mmol P/m^2) + K4n: K4/per_layer/n1 # benthic ammonium in aerobic layer (mmol N/m^2) + K1p2: K1/per_layer/p2 # benthic phosphate in anaerobic layer (mmol P/m^2) + K4n2: K4/per_layer/n2 # benthic ammonium in anaerobic layer (mmol N/m^2) + benTA: zero_hz # benthic alkalinity in aerobic layer (mEq/m^2) + benTA2: zero_hz # benthic alkalinity in anaerobic layer (mEq/m^2) + Y3_Q6: + long_name: benthic suspension feeder POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + maximum_depth: 0.0025 # maximum depth (m), default = 0.0 + coupling: + Q: Q6 + Y4: + long_name: benthic meiofauna + model: ersem/benthic_fauna + parameters: + qnc: 0.0119 # nitrogen to carbon ratio (mmol N/mg C) + qpc: 0.000792 # phosphorus to carbon ratio (mmol P/mg C) + c0: 0.001 # background concentration (mg C/m^2), default = 0.0 + q10: 2.0 # Q_10 temperature coefficient (-) + rlO2: 0.0 # minimum pelagic oxygen concentration (mmol O2/m^3) + hO2: 0.0 # Michaelis-Menten constant for oxygen limitation (mmol O2/m^3) + xcl: 25000.0 # abundance above which crowding reduces food uptake (mg C/m^2) + xcs: 3000.0 # Michaelis-Menten constant for the impact of crowding (mg C/m^2) + xch: 5000.0 # abundance determining asymptotic threshold of crowding limitation (-> xch/(Yc+xch) for Yc-> inf) (mg C/m^2) + su: 0.4 # specific maximum uptake at reference temperature (1/d) + lu: 50.0 # Michaelis-Menten constant for food preference as function of food concentration (mg C/m^2) + hu: 1000.0 # Michaelis-Menten constant for gross carbon uptake (mg C/m^2) + pue: 0.25 # fraction of carbon in consumed live food that goes to faeces (-) + pueQ: 0.4 # fraction of carbon in consumed detritus that goes to faeces (-) + pudil: 0.8 # relative nutrient content of faeces (-) + sd: 0.01 # specific mortality at reference temperature (1/d) + sdmO2: 1.0 # specific maximum additional mortality due to oxygen stress (1/d) + sdc: 0.02 # specific maximum additional mortality induced by cold temperature (1/d) + xdc: -0.7 # e-folding temperature factor of cold mortality response (1/degree_C) + sr: 0.01 # specific rest respiration at reference temperature (1/d) + pur: 0.45 # fraction of assimilated food that is respired (-) + nfood: 4 # number of food sources, default = 0 + pufood1: 1.0 # preference for food source 1 (-) + pufood2: 1.0 # preference for food source 2 (-) + pufood3: 1.0 # preference for food source 3 (-) + pufood4: 0.3 # preference for food source 4 (-) + food4ispom: true # food source 4 is detritus, default = false + pirr: 0.2 # relative contribution to bioirrigation (-), default = 0.0 + initialization: + c: 200.0 # carbon (mg C/m^2) + coupling: + food1: H1 + food2: H2 + food3: Y4 + food4: Y4_Q6 + Q: Y4_Q6 + Dm: ben_col/D1m # depth of limiting layer for uptake (m) + O2o: O2/o # pelagic oxygen (mmol O_2/m^3) + G3c: G3/per_layer/c1 # carbon dioxide (mmol C/m^2) + G2o: G2/per_layer/o1 # oxygen (mmol O_2/m^2) + K1p: K1/per_layer/p1 # benthic phosphate in aerobic layer (mmol P/m^2) + K4n: K4/per_layer/n1 # benthic ammonium in aerobic layer (mmol N/m^2) + K1p2: K1/per_layer/p2 # benthic phosphate in anaerobic layer (mmol P/m^2) + K4n2: K4/per_layer/n2 # benthic ammonium in anaerobic layer (mmol N/m^2) + benTA: zero_hz # benthic alkalinity in aerobic layer (mEq/m^2) + benTA2: zero_hz # benthic alkalinity in anaerobic layer (mEq/m^2) + Y4_Q6: + long_name: benthic meiofauna POM + model: ersem/benthic_column_particulate_matter_layer + parameters: + composition: cnps # elemental composition + minimum_depth: 0.0 # minimum depth (m), default = 0.0 + maximum_depth: 0.03 # maximum depth (m), default = 0.0 + coupling: + Q: Q6 + erosion: + model: ersem/benthic_erosion