# HG changeset patch # User Michiel Broek # Date 1657198644 -7200 # Node ID b9af88bfe972cbbd094862427430dccdc499d7b2 # Parent 2f3cfb983fccec87bc3419fc34df436fbc14edb3 Added cooling parameters to the toIBU function. diff -r 2f3cfb983fcc -r b9af88bfe972 src/EditProductExport.cpp --- a/src/EditProductExport.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/EditProductExport.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -456,7 +456,8 @@ for (int i = 0; i < product->hops.size(); i++) { double ibu = Utils::toIBU(product->hops.at(i).useat, product->hops.at(i).form, product->preboil_sg, product->batch_size, product->hops.at(i).amount, product->hops.at(i).time, product->hops.at(i).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); memo.append("[row][data]" + product->hops.at(i).name + " (" + product->hops.at(i).origin + ")[/data]"); memo.append("[data]" + QCoreApplication::translate("HopForm", g_hop_forms[product->hops.at(i).form]) + "[/data]"); memo.append("[data]" + QString::number(product->hops.at(i).alpha, 'f', 1) + "[/data]"); diff -r 2f3cfb983fcc -r b9af88bfe972 src/EditProductTab4.cpp --- a/src/EditProductTab4.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/EditProductTab4.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -106,7 +106,8 @@ double ibu = Utils::toIBU(product->hops.at(i).useat, product->hops.at(i).form, product->preboil_sg, product->batch_size, product->hops.at(i).amount, product->hops.at(i).time, product->hops.at(i).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); ui->hopsTable->setItem(i, 7, item); @@ -258,11 +259,13 @@ ibus += Utils::toIBU(product->hops.at(i).useat, product->hops.at(i).form, product->preboil_sg, product->batch_size, product->hops.at(i).amount, product->hops.at(i).time, product->hops.at(i).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); ferm_ibus += Utils::toIBU(product->hops.at(i).useat, product->hops.at(i).form, product->preboil_sg, product->brew_fermenter_volume + product->brew_fermenter_tcloss, product->hops.at(i).amount, product->hops.at(i).time, product->hops.at(i).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); hop_flavour += Utils::hopFlavourContribution(product->hops.at(i).time, product->batch_size, product->hops.at(i).useat, product->hops.at(i).amount); hop_aroma += Utils::hopAromaContribution(product->hops.at(i).time, product->batch_size, product->hops.at(i).useat, product->hops.at(i).amount); @@ -360,7 +363,8 @@ double ibu = Utils::toIBU(product->hops.at(product->hops_row).useat, product->hops.at(product->hops_row).form, product->preboil_sg, product->batch_size, product->hops.at(product->hops_row).amount, product->hops.at(product->hops_row).time, product->hops.at(product->hops_row).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -394,7 +398,8 @@ double ibu = Utils::toIBU(product->hops.at(product->hops_row).useat, product->hops.at(product->hops_row).form, product->preboil_sg, product->batch_size, product->hops.at(product->hops_row).amount, product->hops.at(product->hops_row).time, product->hops.at(product->hops_row).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -459,7 +464,8 @@ double ibu = Utils::toIBU(product->hops.at(product->hops_row).useat, product->hops.at(product->hops_row).form, product->preboil_sg, product->batch_size, product->hops.at(product->hops_row).amount, product->hops.at(product->hops_row).time, product->hops.at(product->hops_row).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); ibuEdit->setValue(ibu); ui->hopsTable->setItem(product->hops_row, 0, new QTableWidgetItem(product->hops.at(product->hops_row).origin)); @@ -683,7 +689,8 @@ double ibu = Utils::toIBU(product->hops.at(product->hops_row).useat, product->hops.at(product->hops_row).form, product->preboil_sg, product->batch_size, product->hops.at(product->hops_row).amount, product->hops.at(product->hops_row).time, product->hops.at(product->hops_row).alpha, product->ibu_method, - product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time, + product->brew_cooling_method, 0, 0); ibuEdit->setValue(ibu); hop_instock_changed(true); diff -r 2f3cfb983fcc -r b9af88bfe972 src/EditRecipeExport.cpp --- a/src/EditRecipeExport.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/EditRecipeExport.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -473,7 +473,7 @@ for (int i = 0; i < recipe->hops.size(); i++) { double ibu = Utils::toIBU(recipe->hops.at(i).useat, recipe->hops.at(i).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(i).amount, recipe->hops.at(i).time, recipe->hops.at(i).alpha, recipe->ibu_method, - 0, recipe->hops.at(i).time, 0, recipe->boil_time); + 0, recipe->hops.at(i).time, 0, recipe->boil_time, 0, 0, 0); memo.append("[row][data]" + recipe->hops.at(i).name + " (" + recipe->hops.at(i).origin + ")[/data]"); memo.append("[data]" + QCoreApplication::translate("HopForm", g_hop_forms[recipe->hops.at(i).form]) + "[/data]"); memo.append("[data]" + QString::number(recipe->hops.at(i).alpha, 'f', 1) + "[/data]"); diff -r 2f3cfb983fcc -r b9af88bfe972 src/EditRecipeTab3.cpp --- a/src/EditRecipeTab3.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/EditRecipeTab3.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -97,7 +97,7 @@ double ibu = Utils::toIBU(recipe->hops.at(i).useat, recipe->hops.at(i).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(i).amount, recipe->hops.at(i).time, recipe->hops.at(i).alpha, recipe->ibu_method, 0, recipe->hops.at(i).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); ui->hopsTable->setItem(i, 7, item); @@ -224,7 +224,7 @@ ibus += Utils::toIBU(recipe->hops.at(i).useat, recipe->hops.at(i).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(i).amount, recipe->hops.at(i).time, recipe->hops.at(i).alpha, recipe->ibu_method, 0, recipe->hops.at(i).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); hop_flavour += Utils::hopFlavourContribution(recipe->hops.at(i).time, recipe->batch_size, recipe->hops.at(i).useat, recipe->hops.at(i).amount); hop_aroma += Utils::hopAromaContribution(recipe->hops.at(i).time, recipe->batch_size, recipe->hops.at(i).useat, recipe->hops.at(i).amount); } @@ -311,7 +311,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -335,7 +335,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -367,7 +367,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -429,7 +429,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); ui->hopsTable->setItem(recipe->hops_row, 0, new QTableWidgetItem(recipe->hops.at(recipe->hops_row).origin)); @@ -516,7 +516,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); item = new QTableWidgetItem(QString("%1").arg(ibu, 2, 'f', 1, '0')); @@ -691,7 +691,7 @@ double ibu = Utils::toIBU(recipe->hops.at(recipe->hops_row).useat, recipe->hops.at(recipe->hops_row).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(recipe->hops_row).amount, recipe->hops.at(recipe->hops_row).time, recipe->hops.at(recipe->hops_row).alpha, recipe->ibu_method, 0, recipe->hops.at(recipe->hops_row).time, - 0, recipe->boil_time); + 0, recipe->boil_time, 0, 0, 0); ibuEdit->setValue(ibu); hop_instock_changed(true); diff -r 2f3cfb983fcc -r b9af88bfe972 src/PrinterDialog.cpp --- a/src/PrinterDialog.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/PrinterDialog.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -438,7 +438,7 @@ cost_hops += cost; double ibu = Utils::toIBU(recipe->hops.at(i).useat, recipe->hops.at(i).form, recipe->preboil_sg, recipe->batch_size, recipe->hops.at(i).amount, recipe->hops.at(i).time, recipe->hops.at(i).alpha, - recipe->ibu_method, 0, recipe->hops.at(i).time, 0, recipe->boil_time); + recipe->ibu_method, 0, recipe->hops.at(i).time, 0, recipe->boil_time, 0, 0, 0); if (recipe->hops.at(i).useat == 2 || recipe->hops.at(i).useat == 4) // Boil or Whirlpool use = QCoreApplication::translate("HopUse", g_hop_useat[recipe->hops.at(i).useat]) + QString(" %1 min").arg(recipe->hops.at(i).time); @@ -838,7 +838,8 @@ cost_hops += cost; double ibu = Utils::toIBU(product->hops.at(i).useat, product->hops.at(i).form, product->preboil_sg, product->batch_size, product->hops.at(i).amount, product->hops.at(i).time, product->hops.at(i).alpha, - product->ibu_method, product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, product->boil_time); + product->ibu_method, product->brew_whirlpool9, product->brew_whirlpool7, product->brew_whirlpool6, + product->boil_time, product->brew_cooling_method, 0, 0); if (product->hops.at(i).useat == 2 || product->hops.at(i).useat == 4) // Boil or Whirlpool use = QCoreApplication::translate("HopUse", g_hop_useat[product->hops.at(i).useat]) + QString(" %1 min").arg(product->hops.at(i).time); diff -r 2f3cfb983fcc -r b9af88bfe972 src/Utils.cpp --- a/src/Utils.cpp Thu Jul 07 14:17:53 2022 +0200 +++ b/src/Utils.cpp Thu Jul 07 14:57:24 2022 +0200 @@ -411,8 +411,9 @@ double Utils::toIBU(int Use, int Form, double SG, double Volume, double Amount, double Boiltime, double Alpha, - int Method, double Whirlpool9, double Whirlpool7, double Whirlpool6, double Fulltime) + int Method, double Whirlpool9, double Whirlpool7, double Whirlpool6, double Fulltime, int Cooltype, double Coolparm1, double Coolparm2) { + double steep_time = 0; /* Total time a hop in the kettle. */ double loss_boiltemp = 1.0; /* Loss due to the lower boil temperature at higher altitude. */ double ibu = 0.0, whirlibus = 0.0; @@ -460,6 +461,10 @@ // qDebug() << "whirpool" << wibu << wibu * IBU_reduction(74); } + if ((Use == HOP_USEAT_MASH) || (Use == HOP_USEAT_FWH) || (Use == HOP_USEAT_BOIL)) { + steep_time += Boiltime; + } + /* * IBU's from hops during Mash, FWH and boil. */ diff -r 2f3cfb983fcc -r b9af88bfe972 src/Utils.h --- a/src/Utils.h Thu Jul 07 14:17:53 2022 +0200 +++ b/src/Utils.h Thu Jul 07 14:57:24 2022 +0200 @@ -78,10 +78,14 @@ * @param Whirlpool7 time in whirlpool between 72°C and 77°C. * @param Whirlpool6 time in whirlpool between 60°C amd 66°C. * @param Fulltime, full boiltime, even for aroma hops. + * @param Cooltype 0 = N/A, 1 = Emersion chiller, 2 = Counterflow, 3 = Au bain marie, 4 = natural + * @param Coolparm1 to define later + * @param Coolparm2 to define later * @return The calculated IBU's */ double toIBU(int Use, int Form, double SG, double Volume, double Amount, double Boiltime, double Alpha, - int Method, double Whirlpool9, double Whirlpool7, double Whirlpool6, double Fulltime); + int Method, double Whirlpool9, double Whirlpool7, double Whirlpool6, double Fulltime, + int Cooltype, double Coolparm1, double Coolparm2); double hopFlavourContribution(double bt, double vol, int use, double amount); double hopAromaContribution(double bt, double vol, int use, double amount);