src/EditProductTab8.cpp

changeset 365
4bc746c65650
parent 362
6a615dbae216
child 395
7212b980a527
--- a/src/EditProductTab8.cpp	Tue Jul 19 16:00:52 2022 +0200
+++ b/src/EditProductTab8.cpp	Wed Jul 20 12:44:02 2022 +0200
@@ -470,52 +470,58 @@
 void EditProduct::calcSparge()
 {
     double TargetpH = product->sparge_ph;
-    double Source_pH = product->w1_ph;
-    double Source_alkalinity = product->w1_total_alkalinity;
+    double Source_pH = 7.0;
 
     qDebug() << "calcSparge()";
-
     setButtons(product->stage > PROD_STAGE_BREW);
 
     if (product->sparge_source == 1 && product->w2_ph > 0.0) {
+	product->ws_calcium = product->w2_calcium;
+	product->ws_magnesium = product->w2_magnesium;
+	product->ws_total_alkalinity = product->w2_total_alkalinity;
+	product->ws_sodium = product->w2_sodium;
+	product->ws_chloride = product->w2_chloride;
+	product->ws_sulfate = product->w2_sulfate;
 	Source_pH = product->w2_ph;
-	Source_alkalinity = product->w2_total_alkalinity;
-	ui->sp_caEdit->setValue(product->w2_calcium);
-        ui->sp_mgEdit->setValue(product->w2_magnesium);
-        ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->w2_total_alkalinity, product->w2_ph));
-        ui->sp_caco3Edit->setValue(product->w2_total_alkalinity);
-        ui->sp_naEdit->setValue(product->w2_sodium);
-        ui->sp_clEdit->setValue(product->w2_chloride);
-        ui->sp_so4Edit->setValue(product->w2_sulfate);
-        ui->sp_phShow->setValue(product->w2_ph);
-        ui->sp_hardnessEdit->setValue(Utils::Hardness(product->w2_calcium, product->w2_magnesium));
-        ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium));
     } else if (product->sparge_source == 2 && product->w2_ph > 0.0) {
+	product->ws_calcium = product->wg_calcium;
+	product->ws_magnesium = product->wg_magnesium;
+	product->ws_total_alkalinity = product->wg_total_alkalinity;
+	product->ws_sodium = product->wg_sodium;
+	product->ws_chloride = product->wg_chloride;
+	product->ws_sulfate = product->wg_sulfate;
 	Source_pH = product->wg_ph;
-	Source_alkalinity = product->wg_total_alkalinity;
-	ui->sp_caEdit->setValue(product->wg_calcium);
-	ui->sp_mgEdit->setValue(product->wg_magnesium);
-	ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->wg_total_alkalinity, product->wg_ph));
-	ui->sp_caco3Edit->setValue(product->wg_total_alkalinity);
-	ui->sp_naEdit->setValue(product->wg_sodium);
-	ui->sp_clEdit->setValue(product->wg_chloride);
-	ui->sp_so4Edit->setValue(product->wg_sulfate);
-	ui->sp_phShow->setValue(product->wg_ph);
-	ui->sp_hardnessEdit->setValue(Utils::Hardness(product->wg_calcium, product->wg_magnesium));
-	ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->wg_total_alkalinity, product->wg_calcium, product->wg_magnesium));
     } else {
-	ui->sp_caEdit->setValue(product->w1_calcium);
-	ui->sp_mgEdit->setValue(product->w1_magnesium);
-	ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->w1_total_alkalinity, product->w1_ph));
-	ui->sp_caco3Edit->setValue(product->w1_total_alkalinity);
-	ui->sp_naEdit->setValue(product->w1_sodium);
-	ui->sp_clEdit->setValue(product->w1_chloride);
-	ui->sp_so4Edit->setValue(product->w1_sulfate);
-	ui->sp_phShow->setValue(product->w1_ph);
-	ui->sp_hardnessEdit->setValue(Utils::Hardness(product->w1_calcium, product->w1_magnesium));
-	ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->w1_total_alkalinity, product->w1_calcium, product->w1_magnesium));
+	product->ws_calcium = product->w1_calcium;
+	product->ws_magnesium = product->w1_magnesium;
+	product->ws_total_alkalinity = product->w1_total_alkalinity;
+	product->ws_sodium = product->w1_sodium;
+	product->ws_chloride = product->w1_chloride;
+	product->ws_sulfate = product->w1_sulfate;
+	Source_pH = product->w1_ph;
     }
-    // The spargewater is set.
+
+    /* Calculate Salt additions */
+    if (product->sparge_volume > 0) {
+	product->ws_calcium += ( ui->ss_cacl2Edit->value() * MMCa / MMCaCl2 * 1000 + ui->ss_caso4Edit->value() * MMCa / MMCaSO4 * 1000) / product->sparge_volume;
+	product->ws_magnesium += (ui->ss_mgso4Edit->value() * MMMg / MMMgSO4 * 1000 + ui->ss_mgcl2Edit->value() * MMMg / MMMgCl2 * 1000) / product->sparge_volume;
+	product->ws_sodium += (ui->ss_naclEdit->value() * MMNa / MMNaCl * 1000) / product->sparge_volume;
+	product->ws_sulfate += (ui->ss_caso4Edit->value() * MMSO4 / MMCaSO4 * 1000 + ui->ss_mgso4Edit->value() * MMSO4 / MMMgSO4 * 1000) / product->sparge_volume;
+	product->ws_chloride += (2 * ui->ss_cacl2Edit->value() * MMCl / MMCaCl2 * 1000 + ui->ss_naclEdit->value() * MMCl / MMNaCl * 1000 +
+				ui->ss_mgcl2Edit->value() * MMCl / MMMgCl2 * 1000) / product->sparge_volume;
+    }
+
+    /* Show the spargewater with salt additions. */
+    ui->sp_caEdit->setValue(product->ws_calcium);
+    ui->sp_mgEdit->setValue(product->ws_magnesium);
+    ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->ws_total_alkalinity, Source_pH));
+    ui->sp_caco3Edit->setValue(product->ws_total_alkalinity);
+    ui->sp_naEdit->setValue(product->ws_sodium);
+    ui->sp_clEdit->setValue(product->ws_chloride);
+    ui->sp_so4Edit->setValue(product->ws_sulfate);
+    ui->sp_phShow->setValue(product->sparge_ph);
+    ui->sp_hardnessEdit->setValue(Utils::Hardness(product->ws_calcium, product->ws_magnesium));
+    ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->ws_total_alkalinity, product->ws_calcium, product->ws_magnesium));
 
     int AT = product->sparge_acid_type;
     if (AT < 0 || AT >= my_acids.size()) {
@@ -545,7 +551,7 @@
     	double f343 = r143 * r243 / d43;
 
     	// Step 4. Solve
-    	double Ct = Source_alkalinity / 50 / ((f143 - f1) + (f3 - f343));
+    	double Ct = product->ws_total_alkalinity / 50 / ((f143 - f1) + (f3 - f343));
 
     	// Step 5. Compute mole fractions at desired pH
     	double r1g = pow(10, TargetpH - 6.35);
@@ -581,7 +587,7 @@
     	ui->sp_acidvolEdit->setValue(Acid);
     }
 
-    ui->sp_phShow->setValue(product->sparge_ph);
+//    ui->sp_phShow->setValue(product->sparge_ph);
     // Finally calculate the estimate preboil pH
     product->est_preboil_ph = -log10(((pow(10, -product->mash_ph) * product->wg_amount) + (pow(10, -product->sparge_ph) * product->brew_sparge_est)) /
 		     	      (product->wg_amount + product->brew_sparge_est));
@@ -602,6 +608,12 @@
 
 void EditProduct::sp_volume_changed(double val)
 {
+    if (! product->calc_acid) {
+	product->sparge_acid_amount *= val / product->sparge_volume;
+	const QSignalBlocker blocker1(ui->sp_acidvolEdit);
+	ui->sp_acidvolEdit->setValue(product->sparge_acid_amount * 1000.0);
+    }
+
     product->sparge_volume = val;
     ui->brew_spargevolShow->setValue(val);
     calcSparge();

mercurial