From 66ade11a9ea16520f9d915129674f5b02f4f10b2 Mon Sep 17 00:00:00 2001 From: Oliver Jahn Date: Mon, 5 Dec 2022 13:04:52 -0500 Subject: [PATCH] Add scavenging by POC, POSi and PIC --- pkg/darwin/DARWIN_PARAMS.h | 38 +++++++++++++++++++++++++++------ pkg/darwin/darwin_check.F | 36 +++++++++++++++++++++++++------ pkg/darwin/darwin_forcing.F | 13 ++++++----- pkg/darwin/darwin_read_params.F | 24 +++++++++++++++++++-- 4 files changed, 90 insertions(+), 21 deletions(-) diff --git a/pkg/darwin/DARWIN_PARAMS.h b/pkg/darwin/DARWIN_PARAMS.h index 089412a68..99f498351 100644 --- a/pkg/darwin/DARWIN_PARAMS.h +++ b/pkg/darwin/DARWIN_PARAMS.h @@ -165,14 +165,18 @@ C uptakeTempAe :: [1/K] temperature coefficient for uptake ( C C- Iron parameters C alpfe :: [] solubility of Fe dust -C scav :: [1/s] fixed iron scavenging rate +C scav :: [1/s] fixed iron scavenging rate (#undef DARWIN_PART_SCAV) C ligand_tot :: [mol/m3] total ligand concentration C ligand_stab :: [m3/mol] ligand stability rate ratio C freefemax :: [mol/m3] max concentration of free iron -C scav_rat :: [1/s] rate of POM-based iron scavenging -C scav_inter :: [] intercept of scavenging power law -C scav_exp :: [] exponent of scavenging power law -C scav_R_POPPOC :: [mmol P / mmol C] POP:POC ratio for DARWIN_PART_SCAV_POP +C scav_tau :: [1] factor to go from Th scavenging rate to iron +C scav_inter :: [L^e mg^-e s^-1] intercept of scavenging power law (e=scav_exp) +C scav_exp :: [1] exponent of scavenging power law +C scav_POC_wgt :: [g / mmol C] weight POC contributes to POM for scavenging +C scav_POSi_wgt :: [g / mmol Si] weight POSi contributes to POM for scavenging +C scav_PIC_wgt :: [g / mmol C] weight PIC contributes to POM for scavenging +C scav_rat :: [1] factor Th to iron for DARWIN_PART_SCAV_POP +C scav_R_POPPOC :: [mmol P / g C] POP:POC ratio for DARWIN_PART_SCAV_POP C depthfesed :: [m] depth above which to add sediment source (was -1000) C fesedflux :: [mmol Fe /m2/s] fixed iron flux from sediment C fesedflux_pcm :: [mmol Fe / mmol C] iron input per POC sinking into bottom for DARWIN_IRON_SED_SOURCE_VARIABLE @@ -285,14 +289,24 @@ C depthdenit :: [m] not implemented (depth for denitrific & mort2TempAe, & uptakeTempAe, & alpfe, - & scav, & ligand_tot, & ligand_stab, & freefemax, +#ifdef DARWIN_PART_SCAV_POP & scav_rat, & scav_inter, & scav_exp, & scav_R_POPPOC, +#elif defined(DARWIN_PART_SCAV) + & scav_tau, + & scav_inter, + & scav_exp, + & scav_POC_wgt, + & scav_POSi_wgt, + & scav_PIC_wgt, +#else + & scav, +#endif & depthfesed, & fesedflux, & fesedflux_pcm, @@ -392,14 +406,24 @@ C & yono2, _RL mort2TempAe _RL uptakeTempAe _RL alpfe - _RL scav _RL ligand_tot _RL ligand_stab _RL freefemax +#ifdef DARWIN_PART_SCAV_POP _RL scav_rat _RL scav_inter _RL scav_exp _RL scav_R_POPPOC +#elif defined(DARWIN_PART_SCAV) + _RL scav_tau + _RL scav_inter + _RL scav_exp + _RL scav_POC_wgt + _RL scav_POSi_wgt + _RL scav_PIC_wgt +#else + _RL scav +#endif _RL depthfesed _RL fesedflux _RL fesedflux_pcm diff --git a/pkg/darwin/darwin_check.F b/pkg/darwin/darwin_check.F index 4622eb5c9..fdb420c0c 100644 --- a/pkg/darwin/darwin_check.F +++ b/pkg/darwin/darwin_check.F @@ -1713,9 +1713,6 @@ SUBROUTINE DARWIN_CHECK( myThid ) CALL WRITE_0D_RL(alpfe,INDEX_NONE, &'alpfe =', &' /* solubility of Fe dust */') - CALL WRITE_0D_RL(scav,INDEX_NONE, - &'scav =', - &' /* fixed iron scavenging rate (1/s) */') CALL WRITE_0D_RL(ligand_tot,INDEX_NONE, &'ligand_tot =', &' /* total ligand concentration (mol/m3) */') @@ -1725,18 +1722,43 @@ SUBROUTINE DARWIN_CHECK( myThid ) CALL WRITE_0D_RL(freefemax,INDEX_NONE, &'freefemax =', &' /* max concentration of free iron (mol/m3) */') +#ifdef DARWIN_PART_SCAV_POP CALL WRITE_0D_RL(scav_rat,INDEX_NONE, &'scav_rat =', - &' /* rate of POM-based iron scavenging (1/s) */') + &' /* rate conversion Th to iron (1/s) */') CALL WRITE_0D_RL(scav_inter,INDEX_NONE, &'scav_inter =', - &' /* intercept of scavenging power law */') + &' /* intercept of scavenging power law (L^e mg^-e) */') CALL WRITE_0D_RL(scav_exp,INDEX_NONE, &'scav_exp =', - &' /* exponent of scavenging power law */') + &' /* exponent e of scavenging power law */') CALL WRITE_0D_RL(scav_R_POPPOC,INDEX_NONE, &'scav_R_POPPOC =', - &' /* POP:POC ratio for DARWIN_PART_SCAV_POP (mmol P / mmol C) */') + &' /* POP:POC ratio for scavenging (mmol P / g) */') +#elif defined(DARWIN_PART_SCAV) + CALL WRITE_0D_RL(scav_tau,INDEX_NONE, + &'scav_tau =', + &' /* factor to go from Th scavenging rate to iron */') + CALL WRITE_0D_RL(scav_inter,INDEX_NONE, + &'scav_inter =', + &' /* intercept of scavenging power law (L^e mg^-e s^-1) */') + CALL WRITE_0D_RL(scav_exp,INDEX_NONE, + &'scav_exp =', + &' /* exponent e of scavenging power law */') + CALL WRITE_0D_RL(scav_POC_wgt,INDEX_NONE, + &'scav_POC_wgt =', + &' /* weight of POC in POM for scavenging (g / mmol C) */') + CALL WRITE_0D_RL(scav_POSi_wgt,INDEX_NONE, + &'scav_POSi_wgt =', + &' /* weight of POSi in POM for scavenging (g / mmol Si) */') + CALL WRITE_0D_RL(scav_PIC_wgt,INDEX_NONE, + &'scav_PIC_wgt =', + &' /* weight of PIC in POM for scavenging (g / mmol C) */') +#else + CALL WRITE_0D_RL(scav,INDEX_NONE, + &'scav =', + &' /* fixed iron scavenging rate (1/s) */') +#endif CALL WRITE_0D_RL(depthfesed,INDEX_NONE, &'depthfesed =', &' /* depth above which to add sediment source (was -1000) (m) */') diff --git a/pkg/darwin/darwin_forcing.F b/pkg/darwin/darwin_forcing.F index b74aeba29..27e5ece09 100644 --- a/pkg/darwin/darwin_forcing.F +++ b/pkg/darwin/darwin_forcing.F @@ -93,7 +93,7 @@ SUBROUTINE DARWIN_FORCING( Ptrdummy, _RL freeFe(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr) _RL sedFlxFe(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) _RL tmp3d(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr) - _RL scv,scav_poc + _RL scv,scav_pom _RL flx, POCl _RL ptr(nDarwin), gtr(nDarwin), PARl(nlam) _RL chlout(nPhoto) @@ -378,12 +378,15 @@ SUBROUTINE DARWIN_FORCING( Ptrdummy, DO k=1,Nr DO j=jMin,jMax DO i=iMin,iMax +C compute POM in mg/L #ifdef DARWIN_PART_SCAV_POP - scav_poc = MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOP))/scav_R_POPPOC - scv = scav_rat*scav_inter*(scav_poc**scav_exp) + scav_pom = MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOP))/scav_R_POPPOC + scv = scav_rat*scav_inter*(scav_pom**scav_exp) #elif defined(DARWIN_PART_SCAV) - scav_poc = MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOC)) - scv = scav_rat*scav_inter*(scav_poc**scav_exp) + scav_pom = scav_POC_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOC)) + & + scav_POSi_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOSi)) + & + scav_PIC_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPIC)) + scv = scav_tau*scav_inter*(scav_pom**scav_exp) #else scv = scav #endif diff --git a/pkg/darwin/darwin_read_params.F b/pkg/darwin/darwin_read_params.F index 8bcdc3965..d2d79cc32 100644 --- a/pkg/darwin/darwin_read_params.F +++ b/pkg/darwin/darwin_read_params.F @@ -69,14 +69,24 @@ SUBROUTINE DARWIN_READ_PARAMS(iUnit,oUnit,myThid) & mort2TempAe, & uptakeTempAe, & alpfe, - & scav, & ligand_tot, & ligand_stab, & freefemax, +#ifdef DARWIN_PART_SCAV_POP & scav_rat, & scav_inter, & scav_exp, & scav_R_POPPOC, +#elif defined(DARWIN_PART_SCAV) + & scav_tau, + & scav_inter, + & scav_exp, + & scav_POC_wgt, + & scav_POSi_wgt, + & scav_PIC_wgt, +#else + & scav, +#endif & depthfesed, & fesedflux, & fesedflux_pcm, @@ -310,14 +320,24 @@ SUBROUTINE DARWIN_READ_PARAMS(iUnit,oUnit,myThid) mort2TempAe = 0.0438 _d 0 uptakeTempAe = 0.0 _d 0 alpfe = 0.04 _d 0 - scav = 0.4 _d 0/pyear ligand_tot = 1. _d -3 ligand_stab = 2. _d 5 freefemax = 0.4 _d -3 +#ifdef DARWIN_PART_SCAV_POP scav_rat = 0.005 _d 0 / pday scav_inter = 0.079 _d 0 scav_exp = 0.58 _d 0 scav_R_POPPOC = 1.1321 _d -4 +#elif defined(DARWIN_PART_SCAV) + scav_tau = 0.2 + scav_inter = 0.079 _d 0 / pday + scav_exp = 0.58 _d 0 + scav_POC_wgt = 0.02173 _d 0 + scav_POSi_wgt = 0.069 _d 0 + scav_PIC_wgt = 0.100 _d 0 +#else + scav = 0.4 _d 0/pyear +#endif depthfesed = -1.0 _d 0 fesedflux = 1 _d -3 / pday fesedflux_pcm = 0.68 _d -3