--- a/src/Utils.cpp Thu Apr 14 21:54:37 2022 +0200 +++ b/src/Utils.cpp Thu Apr 14 22:47:05 2022 +0200 @@ -464,3 +464,37 @@ } +double Utils::mix(double v1, double v2, double c1, double c2) +{ + if ((v1 + v2) > 0) { + return ((v1 * c1) + (v2 * c2)) / (v1 + v2); + } + return 0; +} + + +double Utils::ResidualAlkalinity(double total_alkalinity, double calcium, double magnesium) +{ + return total_alkalinity - (calcium / 1.4 + magnesium / 1.7); +} + + +double Utils::PartCO3(double pH) +{ + double H = pow(10, -pH); + return 100 * Ka1 * Ka2 / (H * H + H * Ka1 + Ka1 * Ka2); +} + + +double Utils::PartHCO3(double pH) +{ + double H = pow(10, -pH); + return 100 * Ka1 * H / (H * H + H * Ka1 + Ka1 * Ka2); +} + + +double Utils::Charge(double pH) +{ + return (-2 * PartCO3(pH) - PartHCO3(pH)); +} +