Made the Hardness function more precise. Removed RA_ppm function, was doubles with ResidualAlkalinity. Added RA_CaCO3 and Bicarbonate functions.

Sun, 17 Jul 2022 22:14:41 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 17 Jul 2022 22:14:41 +0200
changeset 356
f60f5a1fece9
parent 355
f3318d9d6668
child 357
08f73b616345

Made the Hardness function more precise. Removed RA_ppm function, was doubles with ResidualAlkalinity. Added RA_CaCO3 and Bicarbonate functions.

src/Utils.cpp file | annotate | diff | comparison | revisions
src/Utils.h file | annotate | diff | comparison | revisions
--- a/src/Utils.cpp	Sun Jul 17 22:11:30 2022 +0200
+++ b/src/Utils.cpp	Sun Jul 17 22:14:41 2022 +0200
@@ -610,14 +610,19 @@
 
 double Utils::Hardness(double calcium, double magnesium)
 {
-    return ((calcium / 20) + (magnesium / 12.15)) * 50;
+    return 2.497 * calcium + 4.164 * magnesium;
 }
 
 
-double Utils::RA_ppm(double total_alkalinity, double calcium, double magnesium)
+double Utils::Bicarbonate(double total_alkalinity, double ph)
 {
-    double alkalinity = total_alkalinity * (1 + (2 * pow(10, -2.33)));
-    return (alkalinity - ((calcium * 0.7143) + (magnesium * 0.5879)));
+    return (total_alkalinity / (1 + 2*pow(10, ph - 10.33)) * MMHCO3 /*61.016*/ / (MMCaCO3 / 2) /*50.043*/);
+}
+
+
+double Utils::RA_CaCO3(double bicarbonate, double carbonate, double calcium, double magnesium)
+{
+    return ((bicarbonate / MMHCO3) + (2*carbonate / MMCO3) - (2*calcium / MMCa)/3.5 - (2*magnesium / MMMg)/7) * 50;
 }
 
 
--- a/src/Utils.h	Sun Jul 17 22:11:30 2022 +0200
+++ b/src/Utils.h	Sun Jul 17 22:14:41 2022 +0200
@@ -137,10 +137,30 @@
      */
     double Hardness(double calcium, double magnesium);
 
-    double RA_ppm(double total_alkalinity, double calcium, double magnesium);
+    /**
+     * @brief Calculate HCO3 (bicarbonate) from the total_alkalinity and ph.
+     * @param total_alkalinity as ppm
+     * @param ph the pH
+     * @return The bicarbonate as HCO3.
+     */
+    double Bicarbonate(double total_alkalinity, double ph);
 
     /**
-     * @brief Return mg/l as CaCO3
+     * @brief Return Residual Alkalinity as CaCO3
+     * @param bicarbonate as ppm
+     * @param carbonate CO3 as ppm
+     * @param calcium as ppm
+     * @param magnesium as ppm
+     * @return Residual Alkalinity
+     */
+    double RA_CaCO3(double bicarbonate, double carbonate, double calcium, double magnesium);
+
+    /**
+     * @brief Return Residual Alkalinity as CaCO3, Paul Kolbach.
+     * @param total_alkalinity as ppm
+     * @param calcium as ppm
+     * @param magnesium as ppm
+     * @return Residual Alkalinity
      */
     double ResidualAlkalinity(double total_alkalinity, double calcium, double magnesium);
 

mercurial