--- a/src/EditProductTab8.cpp Thu Aug 11 10:50:18 2022 +0200 +++ b/src/EditProductTab8.cpp Wed Aug 17 14:30:33 2022 +0200 @@ -187,6 +187,49 @@ } +void EditProduct::calcBU() +{ + if (product->stage < PROD_STAGE_WAIT) + return; + + double BUGU = GetBUGU(); + ui->buguEdit->setValue(BUGU); + ui->est_buguEdit->setValue(BUGU); + ui->est_buguShow->setValue(BUGU); + if (BUGU < 0.32) + ui->buguResult->setText(tr("Very malty and sweet")); + else if (BUGU < 0.43) + ui->buguResult->setText(tr("Malty, sweet")); + else if (BUGU < 0.52) + ui->buguResult->setText(tr("Balanced")); + else if (BUGU < 0.63) + ui->buguResult->setText(tr("Hoppy, bitter")); + else + ui->buguResult->setText(tr("Very hoppy, very bitter")); + + double og = product->est_og; + double fg = product->est_fg; + double ibu = product->est_ibu; + + if (product->stage > PROD_STAGE_BREW) { + og = product->brew_fermenter_sg; + ibu = product->brew_fermenter_ibu; + } + if (product->stage > PROD_STAGE_TERTIARY) { + fg = product->fg; + } + + if (fg < 1.002) /* Can't be too low for this */ + fg = 1.002; + + double bure = ibu / ((0.1808 * Utils::sg_to_plato(og)) + (0.8192 * Utils::sg_to_plato(fg))); + qDebug() << "BU:RE" << bure << product->est_fg << product->fg << product->est_ibu << product->brew_fermenter_ibu; + ui->est_bufguEdit->setValue(bure); + ui->est_bufguShow->setValue(bure); + +} + + void EditProduct::calcWater() { double liters = 0; @@ -383,18 +426,7 @@ chloride = wg_chloride + RA; } - double BUGU = GetBUGU(); - ui->buguEdit->setValue(BUGU); - if (BUGU < 0.32) - ui->buguResult->setText(tr("Very malty and sweet")); - else if (BUGU < 0.43) - ui->buguResult->setText(tr("Malty, sweet")); - else if (BUGU < 0.52) - ui->buguResult->setText(tr("Balanced")); - else if (BUGU < 0.63) - ui->buguResult->setText(tr("Hoppy, bitter")); - else - ui->buguResult->setText(tr("Very hoppy, very bitter")); + calcBU(); double OptSO4Clratio = GetOptSO4Clratio(); ui->so4clEdit->setValue(OptSO4Clratio); @@ -774,9 +806,17 @@ double EditProduct::GetBUGU() { - double gu = (product->est_og - 1) * 1000; + double og = product->est_og; + double ibu = product->est_ibu; + + if (product->stage > PROD_STAGE_BREW) { + og = product->brew_fermenter_sg; + ibu = product->brew_fermenter_ibu; + } + + double gu = (og - 1) * 1000; if (gu > 0) - return product->est_ibu / gu; + return ibu / gu; return 0.5; }