diff --git a/genie-biogem/src/fortran/biogem.f90 b/genie-biogem/src/fortran/biogem.f90 index cc377506c..55d774600 100644 --- a/genie-biogem/src/fortran/biogem.f90 +++ b/genie-biogem/src/fortran/biogem.f90 @@ -487,23 +487,60 @@ subroutine biogem( & loc_vocn(l) = ocn(l2io(l),i,j,loc_k1) end DO call sub_box_remin_redfield(loc_vocn,loc_conv_ls_lo(:,:)) + ! set sed tracer -> POP ls = is2l(is_POP) loc_tot_i = conv_ls_lo_i(0,ls) do loc_i=1,loc_tot_i lo = conv_ls_lo_i(loc_i,ls) if (lo == io2l(io_PO4)) then loc_remin = loc_conv_ls_lo(lo,ls)*bio_settle(l2is(ls),i,j,loc_k1) - dum_sfxsumrok1(io_PO4,i,j) = dum_sfxsumrok1(io_PO4,i,j) + & - & (loc_remin - locij_fsedocn(io_PO4,i,j)) + dum_sfxsumrok1(l2io(lo),i,j) = dum_sfxsumrok1(l2io(lo),i,j) + & + & (loc_remin - locij_fsedocn(l2io(lo),i,j)) if (ctrl_bio_red_ALKwithPOC) then ! do nothing -- ALK with POC else dum_sfxsumrok1(io_ALK,i,j) = dum_sfxsumrok1(io_ALK,i,j) + & - & conv_sed_ocn(io_ALK,is_POP)*(loc_remin - locij_fsedocn(io_PO4,i,j)) + & conv_sed_ocn(io_ALK,is_POP)*(loc_remin - locij_fsedocn(io_PO4,i,j)) end if end if end do end if + if (ctrl_force_sed_closed_C) then + ! special case of partial closure -- calculate theoretical DIC remin flux required for closure + ! set weathering equal to imbalance in DIC return + DO l=1,n_l_ocn + loc_vocn(l) = ocn(l2io(l),i,j,loc_k1) + end DO + call sub_box_remin_redfield(loc_vocn,loc_conv_ls_lo(:,:)) + ! set sed tracer -> POC + ls = is2l(is_POC) + loc_tot_i = conv_ls_lo_i(0,ls) + do loc_i=1,loc_tot_i + lo = conv_ls_lo_i(loc_i,ls) + if (lo == io2l(io_DIC)) then + loc_remin = loc_conv_ls_lo(lo,ls)*bio_settle(l2is(ls),i,j,loc_k1) + dum_sfxsumrok1(l2io(lo),i,j) = dum_sfxsumrok1(l2io(lo),i,j) + & + & (loc_remin - locij_fsedocn(l2io(lo),i,j)) + if (ctrl_bio_red_ALKwithPOC) then + dum_sfxsumrok1(io_ALK,i,j) = dum_sfxsumrok1(io_ALK,i,j) + & + & conv_sed_ocn(io_ALK,is_POC)*(loc_remin - locij_fsedocn(l2io(lo),i,j)) + else + ! do nothing -- ALK with POP + end if + end if + end do + ! set sed tracer -> 13POC + ls = is2l(is_POC_13C) + loc_tot_i = conv_ls_lo_i(0,ls) + do loc_i=1,loc_tot_i + lo = conv_ls_lo_i(loc_i,ls) + if (lo == io2l(io_DIC_13C)) then + loc_remin = loc_conv_ls_lo(lo,ls)*bio_settle(l2is(ls),i,j,loc_k1) + dum_sfxsumrok1(l2io(lo),i,j) = dum_sfxsumrok1(l2io(lo),i,j) + & + & (loc_remin - locij_fsedocn(l2io(lo),i,j)) + end if + end do + end if end if ! [(ctrl_force_sed_closedsystem)] ! convert fluxes to remin DO l=3,n_l_ocn diff --git a/genie-biogem/src/fortran/biogem_data.f90 b/genie-biogem/src/fortran/biogem_data.f90 index 7b23bc13f..2c9f47600 100755 --- a/genie-biogem/src/fortran/biogem_data.f90 +++ b/genie-biogem/src/fortran/biogem_data.f90 @@ -100,6 +100,7 @@ SUBROUTINE sub_load_goin_biogem(dum_dtyr) print*,'--- BOUNDARY CONDITIONS ----------------------------' print*,'Set dissolution flux = rain flux to close system? : ',ctrl_force_sed_closedsystem print*,'Balance the P cycle (with weathering)? : ',ctrl_force_sed_closed_P + print*,'Balance the C cycle (with weathering)? : ',ctrl_force_sed_closed_C print*,'set reflective boundary condition for POM? : ',ctrl_force_sed_reflective_POM print*,'Allow temperature / salinity forcing of climate? : ',ctrl_force_GOLDSTEInTS print*,'Allow ONLY temperature / salinity forcing? : ',ctrl_force_GOLDSTEInTSonly diff --git a/genie-biogem/src/fortran/biogem_lib.f90 b/genie-biogem/src/fortran/biogem_lib.f90 index 214618465..076c871d5 100755 --- a/genie-biogem/src/fortran/biogem_lib.f90 +++ b/genie-biogem/src/fortran/biogem_lib.f90 @@ -64,7 +64,8 @@ MODULE biogem_lib logical::ctrl_force_sed_closedsystem ! Set dissolution flux = rain flux to close system? NAMELIST /ini_biogem_nml/ctrl_force_sed_closedsystem logical::ctrl_force_sed_closed_P ! Balance the P cycle (with weathering)? - NAMELIST /ini_biogem_nml/ctrl_force_sed_closed_P + logical::ctrl_force_sed_closed_C ! Balance the C cycle (with weathering)? + NAMELIST /ini_biogem_nml/ctrl_force_sed_closed_P,ctrl_force_sed_closed_C logical::ctrl_force_sed_reflective_POM ! Set reflective boundary condition for POM? NAMELIST /ini_biogem_nml/ctrl_force_sed_reflective_POM logical::ctrl_force_GOLDSTEInTS ! Allow temperature / salinity forcing of climate? diff --git a/genie-main/src/xml-config/xml/definition.xml b/genie-main/src/xml-config/xml/definition.xml index 86b587c5f..a0f189500 100644 --- a/genie-main/src/xml-config/xml/definition.xml +++ b/genie-main/src/xml-config/xml/definition.xml @@ -4020,6 +4020,10 @@ .false. Balance the P cycle (with weathering)? + + .false. + Balance the C cycle (with weathering)? + .false. Set reflective boundary condition for POM?