src/EditRecipeTab7.cpp

changeset 350
37b3c690b02c
parent 283
242a68fa7186
child 358
d89bc21e2f07
equal deleted inserted replaced
349:f05aeee71a14 350:37b3c690b02c
158 double Acid = 0, Acidmg = 0; 158 double Acid = 0, Acidmg = 0;
159 int AT; 159 int AT;
160 160
161 qDebug() << "calcWater()"; 161 qDebug() << "calcWater()";
162 162
163 ui->w1_hardnessEdit->setValue(Utils::Hardness(recipe->w1_calcium, recipe->w1_magnesium));
164 ui->w1_raEdit->setValue(Utils::RA_ppm(recipe->w1_total_alkalinity, recipe->w1_calcium, recipe->w1_magnesium));
165
163 /* 166 /*
164 * If there is a dilute water source, mix the waters. 167 * If there is a dilute water source, mix the waters.
165 */ 168 */
166 if (recipe->w2_name != "") { 169 if (recipe->w2_name != "") {
167 liters = recipe->w1_amount + recipe->w2_amount; 170 liters = recipe->w1_amount + recipe->w2_amount;
170 sodium = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sodium, recipe->w2_sodium); 173 sodium = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sodium, recipe->w2_sodium);
171 chloride = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_chloride, recipe->w2_chloride); 174 chloride = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_chloride, recipe->w2_chloride);
172 sulfate = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sulfate, recipe->w2_sulfate); 175 sulfate = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sulfate, recipe->w2_sulfate);
173 total_alkalinity = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_total_alkalinity, recipe->w2_total_alkalinity); 176 total_alkalinity = Utils::mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_total_alkalinity, recipe->w2_total_alkalinity);
174 ph = -log10(((pow(10, -recipe->w1_ph) * recipe->w1_amount) + (pow(10, -recipe->w2_ph) * recipe->w2_amount)) / liters); 177 ph = -log10(((pow(10, -recipe->w1_ph) * recipe->w1_amount) + (pow(10, -recipe->w2_ph) * recipe->w2_amount)) / liters);
178 ui->w2_hardnessEdit->setValue(Utils::Hardness(recipe->w2_calcium, recipe->w2_magnesium));
179 ui->w2_raEdit->setValue(Utils::RA_ppm(recipe->w2_total_alkalinity, recipe->w2_calcium, recipe->w2_magnesium));
175 } else { 180 } else {
176 liters = recipe->w1_amount; 181 liters = recipe->w1_amount;
177 calcium = recipe->w1_calcium; 182 calcium = recipe->w1_calcium;
178 magnesium = recipe->w1_magnesium; 183 magnesium = recipe->w1_magnesium;
179 sodium = recipe->w1_sodium; 184 sodium = recipe->w1_sodium;
199 ui->wg_caco3Edit->setValue(total_alkalinity); 204 ui->wg_caco3Edit->setValue(total_alkalinity);
200 ui->wg_naEdit->setValue(sodium); 205 ui->wg_naEdit->setValue(sodium);
201 ui->wg_clEdit->setValue(chloride); 206 ui->wg_clEdit->setValue(chloride);
202 ui->wg_so4Edit->setValue(sulfate); 207 ui->wg_so4Edit->setValue(sulfate);
203 ui->wg_phEdit->setValue(ph); 208 ui->wg_phEdit->setValue(ph);
209 ui->wg_hardnessEdit->setValue(Utils::Hardness(calcium, magnesium));
210 ui->wg_raEdit->setValue(Utils::RA_ppm(total_alkalinity, calcium, magnesium));
204 bicarbonate = total_alkalinity * 1.22; 211 bicarbonate = total_alkalinity * 1.22;
205 212
206 /* Save mixed water ions for later */ 213 /* Save mixed water ions for later */
207 double wg_calcium = calcium; 214 double wg_calcium = calcium;
208 double wg_sodium = sodium; 215 double wg_sodium = sodium;
373 ui->wb_hco3Edit->setValue(bicarbonate); 380 ui->wb_hco3Edit->setValue(bicarbonate);
374 ui->wb_caco3Edit->setValue(total_alkalinity); 381 ui->wb_caco3Edit->setValue(total_alkalinity);
375 ui->wb_naEdit->setValue(sodium); 382 ui->wb_naEdit->setValue(sodium);
376 ui->wb_clEdit->setValue(chloride); 383 ui->wb_clEdit->setValue(chloride);
377 ui->wb_so4Edit->setValue(sulfate); 384 ui->wb_so4Edit->setValue(sulfate);
385 ui->wb_hardnessEdit->setValue(Utils::Hardness(calcium, magnesium));
386 ui->wb_raEdit->setValue(Utils::RA_ppm(total_alkalinity, calcium, magnesium));
378 387
379 ui->wb_caEdit->setStyleSheet((calcium < 40 || calcium > 150) ? "background-color: red":"background-color: green"); 388 ui->wb_caEdit->setStyleSheet((calcium < 40 || calcium > 150) ? "background-color: red":"background-color: green");
380 ui->wb_mgEdit->setStyleSheet((magnesium < 5 || magnesium > 40) ? "background-color: red":"background-color: green"); 389 ui->wb_mgEdit->setStyleSheet((magnesium < 5 || magnesium > 40) ? "background-color: red":"background-color: green");
381 ui->wb_naEdit->setStyleSheet((sodium > 150) ? "background-color: red":"background-color: green"); 390 ui->wb_naEdit->setStyleSheet((sodium > 150) ? "background-color: red":"background-color: green");
382 /* 391 /*
482 Acid = Acid / my_acids[AT].AcidSG / (recipe->sparge_acid_perc / 100); //ml 491 Acid = Acid / my_acids[AT].AcidSG / (recipe->sparge_acid_perc / 100); //ml
483 Acid *= recipe->sparge_volume; //ml acid total 492 Acid *= recipe->sparge_volume; //ml acid total
484 Acid = round(Acid * 100.0) / 100.0; 493 Acid = round(Acid * 100.0) / 100.0;
485 recipe->sparge_acid_amount = Acid / 1000; 494 recipe->sparge_acid_amount = Acid / 1000;
486 ui->sp_acidvolEdit->setValue(Acid); 495 ui->sp_acidvolEdit->setValue(Acid);
496
497 // Finally calculate the estimate preboil pH
498 recipe->preboil_ph = -log10(((pow(10, -recipe->mash_ph) * recipe->wg_amount) + (pow(10, -recipe->sparge_ph) * recipe->sparge_volume)) /
499 (recipe->wg_amount + recipe->sparge_volume));
500 ui->preboil_phEdit->setValue(recipe->preboil_ph);
487 } 501 }
488 502
489 503
490 void EditRecipe::sp_source_changed(int val) 504 void EditRecipe::sp_source_changed(int val)
491 { 505 {
658 ui->w1_caco3Edit->setValue(recipe->w1_total_alkalinity); 672 ui->w1_caco3Edit->setValue(recipe->w1_total_alkalinity);
659 ui->w1_naEdit->setValue(recipe->w1_sodium); 673 ui->w1_naEdit->setValue(recipe->w1_sodium);
660 ui->w1_clEdit->setValue(recipe->w1_chloride); 674 ui->w1_clEdit->setValue(recipe->w1_chloride);
661 ui->w1_so4Edit->setValue(recipe->w1_sulfate); 675 ui->w1_so4Edit->setValue(recipe->w1_sulfate);
662 ui->w1_phEdit->setValue(recipe->w1_ph); 676 ui->w1_phEdit->setValue(recipe->w1_ph);
677 ui->w1_hardnessEdit->setValue(Utils::Hardness(product->w1_calcium, product->w1_magnesium));
678 ui->w1_raEdit->setValue(Utils::RA_ppm(product->w1_total_alkalinity, product->w1_calcium, product->w1_magnesium));
663 679
664 is_changed(); 680 is_changed();
665 calcWater(); 681 calcWater();
666 } 682 }
667 683
668 684
669 void EditRecipe::w2_name_changed(int val) 685 void EditRecipe::w2_name_changed(int val)
670 { 686 {
671 QSqlQuery query; 687 QSqlQuery query;
688 double hardness, ra_ppm;
672 689
673 qDebug() << "w2_name_changed" << val; 690 qDebug() << "w2_name_changed" << val;
674 691
675 if (val == 0) { // Clear water 2. 692 if (val == 0) { // Clear water 2.
676 recipe->w2_name = ""; 693 recipe->w2_name = "";
681 recipe->w2_chloride = 0; 698 recipe->w2_chloride = 0;
682 recipe->w2_sulfate = 0; 699 recipe->w2_sulfate = 0;
683 recipe->w2_ph = 0; 700 recipe->w2_ph = 0;
684 recipe->w1_amount += recipe->w2_amount; 701 recipe->w1_amount += recipe->w2_amount;
685 recipe->w2_amount = 0; 702 recipe->w2_amount = 0;
703 hardness = ra_ppm = 0;
686 } else { 704 } else {
687 query.prepare("SELECT * FROM inventory_waters ORDER BY record"); 705 query.prepare("SELECT * FROM inventory_waters ORDER BY record");
688 query.exec(); 706 query.exec();
689 query.first(); 707 query.first();
690 for (int i = 0; i < (val - 1); i++) { 708 for (int i = 0; i < (val - 1); i++) {
698 recipe->w2_total_alkalinity = query.value(11).toDouble(); 716 recipe->w2_total_alkalinity = query.value(11).toDouble();
699 recipe->w2_sodium = query.value(7).toDouble(); 717 recipe->w2_sodium = query.value(7).toDouble();
700 recipe->w2_chloride = query.value(6).toDouble(); 718 recipe->w2_chloride = query.value(6).toDouble();
701 recipe->w2_sulfate = query.value(5).toDouble(); 719 recipe->w2_sulfate = query.value(5).toDouble();
702 recipe->w2_ph = query.value(9).toDouble(); 720 recipe->w2_ph = query.value(9).toDouble();
721 hardness = Utils::Hardness(product->w2_calcium, product->w2_magnesium);
722 ra_ppm = Utils::RA_ppm(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium);
703 } 723 }
704 ui->w1_volEdit->setValue(recipe->w1_amount); 724 ui->w1_volEdit->setValue(recipe->w1_amount);
705 ui->w2_volEdit->setValue(recipe->w2_amount); 725 ui->w2_volEdit->setValue(recipe->w2_amount);
706 ui->w2_caEdit->setValue(recipe->w2_calcium); 726 ui->w2_caEdit->setValue(recipe->w2_calcium);
707 ui->w2_mgEdit->setValue(recipe->w2_magnesium); 727 ui->w2_mgEdit->setValue(recipe->w2_magnesium);
709 ui->w2_caco3Edit->setValue(recipe->w2_total_alkalinity); 729 ui->w2_caco3Edit->setValue(recipe->w2_total_alkalinity);
710 ui->w2_naEdit->setValue(recipe->w2_sodium); 730 ui->w2_naEdit->setValue(recipe->w2_sodium);
711 ui->w2_clEdit->setValue(recipe->w2_chloride); 731 ui->w2_clEdit->setValue(recipe->w2_chloride);
712 ui->w2_so4Edit->setValue(recipe->w2_sulfate); 732 ui->w2_so4Edit->setValue(recipe->w2_sulfate);
713 ui->w2_phEdit->setValue(recipe->w2_ph); 733 ui->w2_phEdit->setValue(recipe->w2_ph);
734 ui->w2_hardnessEdit->setValue(hardness);
735 ui->w2_raEdit->setValue(ra_ppm);
714 736
715 is_changed(); 737 is_changed();
716 calcWater(); 738 calcWater();
717 } 739 }
718 740
728 ui->wt_hco3Edit->setValue(0); 750 ui->wt_hco3Edit->setValue(0);
729 ui->wt_caco3Edit->setValue(0); 751 ui->wt_caco3Edit->setValue(0);
730 ui->wt_naEdit->setValue(0); 752 ui->wt_naEdit->setValue(0);
731 ui->wt_clEdit->setValue(0); 753 ui->wt_clEdit->setValue(0);
732 ui->wt_so4Edit->setValue(0); 754 ui->wt_so4Edit->setValue(0);
755 ui->wt_hardnessEdit->setValue(0);
756 ui->wt_raEdit->setValue(0);
733 } else { 757 } else {
734 query.prepare("SELECT * FROM profile_water ORDER BY name"); 758 query.prepare("SELECT * FROM profile_water ORDER BY name");
735 query.exec(); 759 query.exec();
736 query.first(); 760 query.first();
737 for (int i = 0; i < (val - 1); i++) { 761 for (int i = 0; i < (val - 1); i++) {
738 query.next(); 762 query.next();
739 } 763 }
740 ui->wt_caEdit->setValue(query.value(2).toDouble()); 764 ui->wt_caEdit->setValue(query.value("calcium").toDouble());
741 ui->wt_mgEdit->setValue(query.value(7).toDouble()); 765 ui->wt_mgEdit->setValue(query.value("magnesium").toDouble());
742 ui->wt_hco3Edit->setValue(query.value(3).toDouble()); 766 ui->wt_hco3Edit->setValue(query.value("bicarbonate").toDouble());
743 ui->wt_caco3Edit->setValue(query.value(10).toDouble()); 767 ui->wt_caco3Edit->setValue(query.value("total_alkalinity").toDouble());
744 ui->wt_naEdit->setValue(query.value(6).toDouble()); 768 ui->wt_naEdit->setValue(query.value("sodium").toDouble());
745 ui->wt_clEdit->setValue(query.value(5).toDouble()); 769 ui->wt_clEdit->setValue(query.value("chloride").toDouble());
746 ui->wt_so4Edit->setValue(query.value(4).toDouble()); 770 ui->wt_so4Edit->setValue(query.value("sulfate").toDouble());
771 ui->wt_hardnessEdit->setValue(Utils::Hardness(query.value("calcium").toDouble(), query.value("magnesium").toDouble()));
772 ui->wt_raEdit->setValue(Utils::RA_ppm(query.value("total_alkalinity").toDouble(), query.value("calcium").toDouble(), query.value("magnesium").toDouble()));
747 } 773 }
748 calcWater(); 774 calcWater();
749 } 775 }
750 776
751 777

mercurial