641 SO42 := W2.Sulfate.Value / MMSO4; |
641 SO42 := W2.Sulfate.Value / MMSO4; |
642 Cl1 := W.Sulfate.Value / MMSO4; |
642 Cl1 := W.Sulfate.Value / MMSO4; |
643 Cl2 := W2.Sulfate.Value / MMSO4; |
643 Cl2 := W2.Sulfate.Value / MMSO4; |
644 |
644 |
645 |
645 |
646 procedure MixWater(W1, W2, Wr: TWater); |
|
647 |
|
648 function Mix(V1, V2, C1, C2: double): double; |
|
649 begin |
|
650 if (V1 + V2) > 0 then |
|
651 Result := (V1 * C1 + V2 * C2) / (V1 + V2) |
|
652 else |
|
653 Result := 0; |
|
654 end; |
|
655 |
|
656 var |
|
657 vol1, vol2: double; |
|
658 phnew: double; |
|
659 begin |
|
660 vol1 := W1.Amount.Value; |
|
661 vol2 := W2.Amount.Value; |
|
662 if (vol1 + vol2) > 0 then |
|
663 begin |
|
664 Wr.Amount.Value := vol1 + vol2; |
|
665 Wr.Calcium.Value := Mix(vol1, vol2, W1.Calcium.Value, W2.Calcium.Value); |
|
666 Wr.Magnesium.Value := Mix(vol1, vol2, W1.Magnesium.Value, W2.Magnesium.Value); |
|
667 Wr.Sodium.Value := Mix(vol1, vol2, W1.Sodium.Value, W2.Sodium.Value); |
|
668 Wr.Bicarbonate.Value := Mix(vol1, vol2, W1.Bicarbonate.Value, W2.Bicarbonate.Value); |
|
669 Wr.Sulfate.Value := Mix(vol1, vol2, W1.Sulfate.Value, W2.Sulfate.Value); |
|
670 Wr.Chloride.Value := Mix(vol1, vol2, W1.Chloride.Value, W2.Chloride.Value); |
|
671 pHnew := -log10((power(10, -W1.pHWater.Value) * vol1 + |
|
672 power(10, -W2.pHWater.Value) * vol2) / (vol1 + vol2)); |
|
673 Wr.pHwater.Value := pHnew; |
|
674 end; |
|
675 end; |
|
676 |
|
677 |
|
678 |
|
679 |
|
680 procedure TRecipe.CalcWaterBalance; |
646 procedure TRecipe.CalcWaterBalance; |
681 var |
647 var |
682 i: integer; |
648 i: integer; |
683 F: TFermentable; |
649 F: TFermentable; |
684 begin |
650 begin |