462 } |
462 } |
463 return (result * amount * 1000.0) / vol; |
463 return (result * amount * 1000.0) / vol; |
464 } |
464 } |
465 |
465 |
466 |
466 |
|
467 double Utils::mix(double v1, double v2, double c1, double c2) |
|
468 { |
|
469 if ((v1 + v2) > 0) { |
|
470 return ((v1 * c1) + (v2 * c2)) / (v1 + v2); |
|
471 } |
|
472 return 0; |
|
473 } |
|
474 |
|
475 |
|
476 double Utils::ResidualAlkalinity(double total_alkalinity, double calcium, double magnesium) |
|
477 { |
|
478 return total_alkalinity - (calcium / 1.4 + magnesium / 1.7); |
|
479 } |
|
480 |
|
481 |
|
482 double Utils::PartCO3(double pH) |
|
483 { |
|
484 double H = pow(10, -pH); |
|
485 return 100 * Ka1 * Ka2 / (H * H + H * Ka1 + Ka1 * Ka2); |
|
486 } |
|
487 |
|
488 |
|
489 double Utils::PartHCO3(double pH) |
|
490 { |
|
491 double H = pow(10, -pH); |
|
492 return 100 * Ka1 * H / (H * H + H * Ka1 + Ka1 * Ka2); |
|
493 } |
|
494 |
|
495 |
|
496 double Utils::Charge(double pH) |
|
497 { |
|
498 return (-2 * PartCO3(pH) - PartHCO3(pH)); |
|
499 } |
|
500 |