src/EditRecipeTab7.cpp

changeset 133
08635b028dcf
parent 131
0115b97e8c39
child 134
5099df8ba6c6
--- a/src/EditRecipeTab7.cpp	Tue Apr 12 22:33:24 2022 +0200
+++ b/src/EditRecipeTab7.cpp	Thu Apr 14 21:54:37 2022 +0200
@@ -20,54 +20,6 @@
 
 void EditRecipe::refreshWaters()
 {
-    // recipe->w1_name
-    ui->w1_volEdit->setValue(recipe->w1_amount);
-    ui->w1_caEdit->setValue(recipe->w1_calcium);
-    ui->w1_mgEdit->setValue(recipe->w1_magnesium);
-    ui->w1_hco3Edit->setValue(recipe->w1_total_alkalinity * 1.22);
-    ui->w1_caco3Edit->setValue(recipe->w1_total_alkalinity);
-    ui->w1_naEdit->setValue(recipe->w1_sodium);
-    ui->w1_clEdit->setValue(recipe->w1_chloride);
-    ui->w1_so4Edit->setValue(recipe->w1_sulfate);
-    ui->w1_phEdit->setValue(recipe->w1_ph);
-
-    // recipe->w2_name
-    ui->w2_volEdit->setValue(recipe->w2_amount);
-    ui->w2_caEdit->setValue(recipe->w2_calcium);
-    ui->w2_mgEdit->setValue(recipe->w2_magnesium);
-    ui->w2_hco3Edit->setValue(recipe->w2_total_alkalinity * 1.22);
-    ui->w2_caco3Edit->setValue(recipe->w2_total_alkalinity);
-    ui->w2_naEdit->setValue(recipe->w2_sodium);
-    ui->w2_clEdit->setValue(recipe->w2_chloride);
-    ui->w2_so4Edit->setValue(recipe->w2_sulfate);
-    ui->w2_phEdit->setValue(recipe->w2_ph);
-
-    ui->wg_volEdit->setValue(recipe->wg_amount);
-    ui->wg_caEdit->setValue(recipe->wg_calcium);
-    ui->wg_mgEdit->setValue(recipe->wg_magnesium);
-    ui->wg_hco3Edit->setValue(recipe->wg_total_alkalinity * 1.22);
-    ui->wg_caco3Edit->setValue(recipe->wg_total_alkalinity);
-    ui->wg_naEdit->setValue(recipe->wg_sodium);
-    ui->wg_clEdit->setValue(recipe->wg_chloride);
-    ui->wg_so4Edit->setValue(recipe->wg_sulfate);
-    ui->wg_phEdit->setValue(recipe->wg_ph);
-
-    ui->wb_caEdit->setValue(recipe->wb_calcium);
-    ui->wb_mgEdit->setValue(recipe->wb_magnesium);
-    ui->wb_hco3Edit->setValue(recipe->wb_total_alkalinity * 1.22);
-    ui->wb_caco3Edit->setValue(recipe->wb_total_alkalinity);
-    ui->wb_naEdit->setValue(recipe->wb_sodium);
-    ui->wb_clEdit->setValue(recipe->wb_chloride);
-    ui->wb_so4Edit->setValue(recipe->wb_sulfate);
-    ui->wb_phEdit->setValue(recipe->wb_ph);
-
-    ui->sp_volEdit->setValue(recipe->sparge_volume);
-    ui->sp_tempEdit->setValue(recipe->sparge_temp);
-    ui->sp_phEdit->setValue(recipe->sparge_ph);
-    // sparge_source
-    // sparge_acid_type
-    ui->sp_acidpercEdit->setValue(recipe->sparge_acid_perc);
-    ui->sp_acidvolEdit->setValue(recipe->sparge_acid_amount);
 
     // calc_acid
     ui->mw_phEdit->setValue(recipe->mash_ph);
@@ -76,3 +28,128 @@
 
 }
 
+
+double EditRecipe::mix(double v1, double v2, double c1, double c2)
+{
+    if ((v1 + v2) > 0) {
+	return ((v1 * c1) + (v2 * c2)) / (v1 + v2);
+    }
+    return 0;
+}
+
+
+void EditRecipe::calcWater()
+{
+    double liters = 0;
+    double calcium = 0;
+    double magnesium = 0;
+    double sodium = 0;
+    double total_alkalinity = 0;
+    double bicarbonate = 0;
+    double chloride = 0;
+    double sulfate = 0;
+    double ph = 0;
+
+    qDebug() << "calcWater";
+
+    /*
+     * If there is a dilute water source, mix the waters.
+     */
+    if (recipe->w2_name != "") {
+	liters = recipe->w1_amount + recipe->w2_amount;
+	calcium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_calcium, recipe->w2_calcium);
+	magnesium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_magnesium, recipe->w2_magnesium);
+	sodium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sodium, recipe->w2_sodium);
+	chloride = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_chloride, recipe->w2_chloride);
+	sulfate = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sulfate, recipe->w2_sulfate);
+	total_alkalinity = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_total_alkalinity, recipe->w2_total_alkalinity);
+	ph = -log10(((pow(10, -recipe->w1_ph) * recipe->w1_amount) + (pow(10, -recipe->w2_ph) * recipe->w2_amount)) / liters);
+    } else {
+	liters = recipe->w1_amount;
+	calcium = recipe->w1_calcium;
+	magnesium = recipe->w1_magnesium;
+	sodium = recipe->w1_sodium;
+	chloride = recipe->w1_chloride;
+	sulfate = recipe->w1_sulfate;
+	total_alkalinity = recipe->w1_total_alkalinity;
+	ph = recipe->w1_ph;
+    }
+
+    recipe->wg_amount = liters;
+    recipe->wg_calcium = round(calcium * 10.0) / 10.0;
+    recipe->wg_magnesium = round(magnesium * 10.0) / 10.0;
+    recipe->wg_sodium = round(sodium * 10.0) / 10.0;
+    recipe->wg_chloride = round(chloride * 10.0) / 10.0;
+    recipe->wg_sulfate = round(sulfate * 10.0) / 10.0;
+    recipe->wg_total_alkalinity = round(total_alkalinity * 10.0) / 10.0;
+
+    ui->wg_volEdit->setValue(liters);
+    ui->wg_caEdit->setValue(calcium);
+    ui->wg_mgEdit->setValue(magnesium);
+    ui->wg_hco3Edit->setValue(total_alkalinity * 1.22);
+    ui->wg_caco3Edit->setValue(total_alkalinity);
+    ui->wg_naEdit->setValue(sodium);
+    ui->wg_clEdit->setValue(chloride);
+    ui->wg_so4Edit->setValue(sulfate);
+    ui->wg_phEdit->setValue(ph);
+    bicarbonate = total_alkalinity * 1.22;
+
+    /* Save mixed water ions for later */
+    double wg_calcium = calcium;
+    double wg_sodium = sodium;
+    double wg_total_alkalinity = total_alkalinity;
+    double wg_chloride = chloride;
+    double wg_sulfate = sulfate;
+    double wg_bicarbonate = bicarbonate;
+
+}
+
+
+void EditRecipe::on_w2_vol_changed(double val)
+{
+}
+
+
+void EditRecipe::on_cacl2_changed(double val)
+{
+    set_brewing_salt("CaCl2", val);
+}
+
+
+void EditRecipe::on_caso4_changed(double val)
+{
+    set_brewing_salt("CaSO4", val);
+}
+
+
+void EditRecipe::on_mgso4_changed(double val)
+{
+    set_brewing_salt("MgSO4", val);
+}
+
+
+void EditRecipe::on_nacl_changed(double val)
+{
+    set_brewing_salt("NaCl", val);
+}
+
+
+void EditRecipe::on_mgcl2_changed(double val)
+{
+    set_brewing_salt("MgCl2", val);
+}
+
+
+void EditRecipe::on_nahco3_changed(double val)
+{
+    set_brewing_salt("NaHCO3", val);
+}
+
+
+void EditRecipe::on_caco3_changed(double val)
+{
+    set_brewing_salt("CaCO3", val);
+}
+
+
+

mercurial