185 ui->w1_spButton->setChecked(true); |
185 ui->w1_spButton->setChecked(true); |
186 } |
186 } |
187 } |
187 } |
188 |
188 |
189 |
189 |
|
190 void EditProduct::calcBU() |
|
191 { |
|
192 if (product->stage < PROD_STAGE_WAIT) |
|
193 return; |
|
194 |
|
195 double BUGU = GetBUGU(); |
|
196 ui->buguEdit->setValue(BUGU); |
|
197 ui->est_buguEdit->setValue(BUGU); |
|
198 ui->est_buguShow->setValue(BUGU); |
|
199 if (BUGU < 0.32) |
|
200 ui->buguResult->setText(tr("Very malty and sweet")); |
|
201 else if (BUGU < 0.43) |
|
202 ui->buguResult->setText(tr("Malty, sweet")); |
|
203 else if (BUGU < 0.52) |
|
204 ui->buguResult->setText(tr("Balanced")); |
|
205 else if (BUGU < 0.63) |
|
206 ui->buguResult->setText(tr("Hoppy, bitter")); |
|
207 else |
|
208 ui->buguResult->setText(tr("Very hoppy, very bitter")); |
|
209 |
|
210 double og = product->est_og; |
|
211 double fg = product->est_fg; |
|
212 double ibu = product->est_ibu; |
|
213 |
|
214 if (product->stage > PROD_STAGE_BREW) { |
|
215 og = product->brew_fermenter_sg; |
|
216 ibu = product->brew_fermenter_ibu; |
|
217 } |
|
218 if (product->stage > PROD_STAGE_TERTIARY) { |
|
219 fg = product->fg; |
|
220 } |
|
221 |
|
222 if (fg < 1.002) /* Can't be too low for this */ |
|
223 fg = 1.002; |
|
224 |
|
225 double bure = ibu / ((0.1808 * Utils::sg_to_plato(og)) + (0.8192 * Utils::sg_to_plato(fg))); |
|
226 qDebug() << "BU:RE" << bure << product->est_fg << product->fg << product->est_ibu << product->brew_fermenter_ibu; |
|
227 ui->est_bufguEdit->setValue(bure); |
|
228 ui->est_bufguShow->setValue(bure); |
|
229 |
|
230 } |
|
231 |
|
232 |
190 void EditProduct::calcWater() |
233 void EditProduct::calcWater() |
191 { |
234 { |
192 double liters = 0; |
235 double liters = 0; |
193 double calcium = 0; |
236 double calcium = 0; |
194 double magnesium = 0; |
237 double magnesium = 0; |
381 RA = ui->bs_cacl2Edit->value() * MMCl / MMCaCl2 + ui->bs_naclEdit->value() * MMCl / MMNaCl + Acidmg / 1000 * MMCl / (MMCl + 1); |
424 RA = ui->bs_cacl2Edit->value() * MMCl / MMCaCl2 + ui->bs_naclEdit->value() * MMCl / MMNaCl + Acidmg / 1000 * MMCl / (MMCl + 1); |
382 RA = 1000 * RA / liters; |
425 RA = 1000 * RA / liters; |
383 chloride = wg_chloride + RA; |
426 chloride = wg_chloride + RA; |
384 } |
427 } |
385 |
428 |
386 double BUGU = GetBUGU(); |
429 calcBU(); |
387 ui->buguEdit->setValue(BUGU); |
|
388 if (BUGU < 0.32) |
|
389 ui->buguResult->setText(tr("Very malty and sweet")); |
|
390 else if (BUGU < 0.43) |
|
391 ui->buguResult->setText(tr("Malty, sweet")); |
|
392 else if (BUGU < 0.52) |
|
393 ui->buguResult->setText(tr("Balanced")); |
|
394 else if (BUGU < 0.63) |
|
395 ui->buguResult->setText(tr("Hoppy, bitter")); |
|
396 else |
|
397 ui->buguResult->setText(tr("Very hoppy, very bitter")); |
|
398 |
430 |
399 double OptSO4Clratio = GetOptSO4Clratio(); |
431 double OptSO4Clratio = GetOptSO4Clratio(); |
400 ui->so4clEdit->setValue(OptSO4Clratio); |
432 ui->so4clEdit->setValue(OptSO4Clratio); |
401 ui->cur_so4clResult->setRange(0.7 * OptSO4Clratio, 1.3 * OptSO4Clratio); |
433 ui->cur_so4clResult->setRange(0.7 * OptSO4Clratio, 1.3 * OptSO4Clratio); |
402 if (OptSO4Clratio < 0.4) |
434 if (OptSO4Clratio < 0.4) |
772 } |
804 } |
773 |
805 |
774 |
806 |
775 double EditProduct::GetBUGU() |
807 double EditProduct::GetBUGU() |
776 { |
808 { |
777 double gu = (product->est_og - 1) * 1000; |
809 double og = product->est_og; |
|
810 double ibu = product->est_ibu; |
|
811 |
|
812 if (product->stage > PROD_STAGE_BREW) { |
|
813 og = product->brew_fermenter_sg; |
|
814 ibu = product->brew_fermenter_ibu; |
|
815 } |
|
816 |
|
817 double gu = (og - 1) * 1000; |
778 if (gu > 0) |
818 if (gu > 0) |
779 return product->est_ibu / gu; |
819 return ibu / gu; |
780 return 0.5; |
820 return 0.5; |
781 } |
821 } |
782 |
822 |
783 |
823 |
784 double EditProduct::GetOptSO4Clratio() |
824 double EditProduct::GetOptSO4Clratio() |