--- 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); +} + + +