diff -r 5099df8ba6c6 -r e68b27ad8a40 src/Utils.cpp --- a/src/Utils.cpp Thu Apr 14 22:47:05 2022 +0200 +++ b/src/Utils.cpp Fri Apr 15 20:20:22 2022 +0200 @@ -481,20 +481,34 @@ double Utils::PartCO3(double pH) { - double H = pow(10, -pH); - return 100 * Ka1 * Ka2 / (H * H + H * Ka1 + Ka1 * Ka2); + double H = pow(10.0, -pH); + return 100.0 * 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 H = pow(10.0, -pH); + return 100.0 * Ka1 * H / (H * H + H * Ka1 + Ka1 * Ka2); } double Utils::Charge(double pH) { - return (-2 * PartCO3(pH) - PartHCO3(pH)); + return (-2.0 * PartCO3(pH) - PartHCO3(pH)); } + +double Utils::CalcFrac(double TpH, double pK1, double pK2, double pK3) +{ + double r1d = pow(10.0, TpH - pK1); + double r2d = pow(10.0, TpH - pK2); + double r3d = pow(10.0, TpH - pK3); + double dd = 1.0 / (1.0 + r1d + r1d * r2d + r1d * r2d * r3d); + double f2d = r1d * dd; + double f3d = r1d * r2d * dd; + double f4d = r1d * r2d * r3d * dd; + return f2d + 2.0 * f3d + 3.0 * f4d; +} + +