Skip to content

Secondary precipitation#367

Open
johnryantaylor wants to merge 5 commits into
mainfrom
secondary_precipitation
Open

Secondary precipitation#367
johnryantaylor wants to merge 5 commits into
mainfrom
secondary_precipitation

Conversation

@johnryantaylor

Copy link
Copy Markdown
Collaborator

Created a simple biogeochemical model to model secondary precipitation of CaCO3. The model includes DIC, Alk, and CaCO3 particulates. A validation script compares against shipboard experiments reported in Hashim et al. 2025. For this, I simply folllowed the example to create a new biogeochemical model. We should think about the best way to include this capability.

Created a simple biogeochemical model to model secondary precipitation of CaCO3.  The model includes DIC, Alk, and CaCO3 particulates. A validation script compares against shipboard experiments reported in Hashim et al. 2025
@johnryantaylor johnryantaylor requested a review from jagoosw May 7, 2026 20:07
@jagoosw

jagoosw commented May 7, 2026

Copy link
Copy Markdown
Collaborator

Thank you for making this (and for catching the bug in the equilibrium constants, I might make a separate PR to change that right away)!

This is encouraging, typically CaCO3 is sometimes considered part of the detritus category, I think because you might want to use whatever aggregation/sinking/etc. processes that the particles experience, and as primary precipitation comes from the same processes like grazing waste.

I'm not sure this makes sense in this kind of framework because that means we don't have the flexibility of using different detritus models. I think it would be best to have this as an optional extension of the CarbonateSystem, and then have that call the plankton model for primary precipitation, and the detritus model for any particle processes.

Screenshot 2026-05-07 at 16 41 49

I'm happy to make the integration if you're happy with that?

+ c.sea_S_sqrt_S³ * S^convert(FT, 1.5))

return pressure_correction * exp(lnK_therm + lnK_sea)
# The Mucci (1983) / Millero (2007) formula gives log₁₀(KSP), so the

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know where this is in the paper? I can't see any log10s?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a problem with the current calcite saturation, I think it is off by a factor of 1000, but I thought currently that it might be a unit problem with the Ca+ ions?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is in Mucci 1983 page 792. It is confusing because it just says "log", but below equation 10, the text says that log refers to log_10. It is worth double checking with another source, though. Presumably CO2SYS has this formula in it?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The image that you posted does have ln(). Is this from Millero?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what CO2SYS has:
% CalciteSolubility:
% ' Mucci, Alphonso, Amer. J. of Science 283:781-799, 1983.
logKCa = -171.9065 - 0.077993.*TempK + 2839.319./TempK;
logKCa = logKCa + 71.595.*logTempK./log(10);
logKCa = logKCa + (-0.77712 + 0.0028426.*TempK + 178.34./TempK).*sqrSal;
logKCa = logKCa - 0.07711.*Sal + 0.0041249.*sqrSal.*Sal;
% ' sd fit = .01 (for Sal part, not part independent of Sal)
KCa = 10.^(logKCa);% ' this is in (mol/kg-SW)^2

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is the Matlab implementation of CO2SYS.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I'm looking at it, the pressure correction term for aragonite in CO2SYS looks very different:
% PressureCorrectionForAragonite:
% ' Millero, Geochemica et Cosmochemica Acta 43:1651-1661, 1979,
% ' same as Millero, GCA 1995 except for typos (-.5304, -.3692,
% ' and 10^3 for Kappa factor)
deltaVKAr = deltaVKCa + 2.8;
KappaKAr = KappaKCa;
lnKArfac = (-deltaVKAr + 0.5.*KappaKAr.*Pbar).*Pbar./RT;
KAr = KAr.*exp(lnKArfac);

The pressure correction for calcite is the same as what we have. Is it possible that this needs to be updated too?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, scratch that last comment - I hadn't spotted that CO2SYS is just modifying the calcite values. This looks fine

@jagoosw jagoosw May 8, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found how this slipped through, the book I used for the check values also just lists "log", and I realise now they use "ln" for the natural log
Screenshot 2026-05-08 at 17 26 04

@johnryantaylor

Copy link
Copy Markdown
Collaborator Author

@jagoosw , just to add that I'm happy for you to integrate this into CarbonateSystem. Let me know if I can help.

I didn't mean to include this script in the PR.  It doesn't make sense as a test of CaCO3 precipitation since the simulation is short and that process is relatively slow.
Added example script to demonstrate sinking and dissolution of particulate phase.
@johnryantaylor

Copy link
Copy Markdown
Collaborator Author

@jagoosw, I added an example script which demonstrates particle sinking and dissolution.

Updated the CaCO3 default dissolution rate to match PISCES
@jagoosw jagoosw mentioned this pull request May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants