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(product->w1_calcium, product->w1_magnesium)); |
|
164 ui->w1_raEdit->setValue(Utils::RA_ppm(product->w1_total_alkalinity, product->w1_calcium, product->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 (product->w2_name != "") { |
169 if (product->w2_name != "") { |
167 liters = product->w1_amount + product->w2_amount; |
170 liters = product->w1_amount + product->w2_amount; |
170 sodium = Utils::mix(product->w1_amount, product->w2_amount, product->w1_sodium, product->w2_sodium); |
173 sodium = Utils::mix(product->w1_amount, product->w2_amount, product->w1_sodium, product->w2_sodium); |
171 chloride = Utils::mix(product->w1_amount, product->w2_amount, product->w1_chloride, product->w2_chloride); |
174 chloride = Utils::mix(product->w1_amount, product->w2_amount, product->w1_chloride, product->w2_chloride); |
172 sulfate = Utils::mix(product->w1_amount, product->w2_amount, product->w1_sulfate, product->w2_sulfate); |
175 sulfate = Utils::mix(product->w1_amount, product->w2_amount, product->w1_sulfate, product->w2_sulfate); |
173 total_alkalinity = Utils::mix(product->w1_amount, product->w2_amount, product->w1_total_alkalinity, product->w2_total_alkalinity); |
176 total_alkalinity = Utils::mix(product->w1_amount, product->w2_amount, product->w1_total_alkalinity, product->w2_total_alkalinity); |
174 ph = -log10(((pow(10, -product->w1_ph) * product->w1_amount) + (pow(10, -product->w2_ph) * product->w2_amount)) / liters); |
177 ph = -log10(((pow(10, -product->w1_ph) * product->w1_amount) + (pow(10, -product->w2_ph) * product->w2_amount)) / liters); |
|
178 ui->w2_hardnessEdit->setValue(Utils::Hardness(product->w2_calcium, product->w2_magnesium)); |
|
179 ui->w2_raEdit->setValue(Utils::RA_ppm(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium)); |
175 } else { |
180 } else { |
176 liters = product->w1_amount; |
181 liters = product->w1_amount; |
177 calcium = product->w1_calcium; |
182 calcium = product->w1_calcium; |
178 magnesium = product->w1_magnesium; |
183 magnesium = product->w1_magnesium; |
179 sodium = product->w1_sodium; |
184 sodium = product->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 /* |
483 Acid *= product->sparge_volume; //ml acid total |
492 Acid *= product->sparge_volume; //ml acid total |
484 Acid = round(Acid * 100.0) / 100.0; |
493 Acid = round(Acid * 100.0) / 100.0; |
485 product->sparge_acid_amount = Acid / 1000; |
494 product->sparge_acid_amount = Acid / 1000; |
486 ui->sp_acidvolEdit->setValue(Acid); |
495 ui->sp_acidvolEdit->setValue(Acid); |
487 |
496 |
488 product->est_preboil_ph = -log10(((pow(10, -product->mash_ph) * product->wg_amount) + (pow(10, -product->sparge_ph) * product->brew_sparge_est)) / (product->wg_amount + product->brew_sparge_est)); |
497 // Finally calculate the estimate preboil pH |
|
498 product->est_preboil_ph = -log10(((pow(10, -product->mash_ph) * product->wg_amount) + (pow(10, -product->sparge_ph) * product->brew_sparge_est)) / |
|
499 (product->wg_amount + product->brew_sparge_est)); |
489 ui->preboil_phEdit->setValue(product->est_preboil_ph); |
500 ui->preboil_phEdit->setValue(product->est_preboil_ph); |
490 ui->brew_preboilphShow->setValue(product->est_preboil_ph); |
501 ui->brew_preboilphShow->setValue(product->est_preboil_ph); |
491 } |
502 } |
492 |
503 |
493 |
504 |
715 ui->w1_caco3Edit->setValue(product->w1_total_alkalinity); |
726 ui->w1_caco3Edit->setValue(product->w1_total_alkalinity); |
716 ui->w1_naEdit->setValue(product->w1_sodium); |
727 ui->w1_naEdit->setValue(product->w1_sodium); |
717 ui->w1_clEdit->setValue(product->w1_chloride); |
728 ui->w1_clEdit->setValue(product->w1_chloride); |
718 ui->w1_so4Edit->setValue(product->w1_sulfate); |
729 ui->w1_so4Edit->setValue(product->w1_sulfate); |
719 ui->w1_phEdit->setValue(product->w1_ph); |
730 ui->w1_phEdit->setValue(product->w1_ph); |
|
731 ui->w1_hardnessEdit->setValue(Utils::Hardness(product->w1_calcium, product->w1_magnesium)); |
|
732 ui->w1_raEdit->setValue(Utils::RA_ppm(product->w1_total_alkalinity, product->w1_calcium, product->w1_magnesium)); |
720 |
733 |
721 check_waters(); |
734 check_waters(); |
722 is_changed(); |
735 is_changed(); |
723 calcWater(); |
736 calcWater(); |
724 } |
737 } |
725 |
738 |
726 |
739 |
727 void EditProduct::w2_name_changed(int val) |
740 void EditProduct::w2_name_changed(int val) |
728 { |
741 { |
729 QSqlQuery query; |
742 QSqlQuery query; |
|
743 double hardness, ra_ppm; |
730 |
744 |
731 qDebug() << "w2_name_changed" << val; |
745 qDebug() << "w2_name_changed" << val; |
732 |
746 |
733 if (val == 0) { // Clear water 2. |
747 if (val == 0) { // Clear water 2. |
734 product->w2_name = ""; |
748 product->w2_name = ""; |
739 product->w2_chloride = 0; |
753 product->w2_chloride = 0; |
740 product->w2_sulfate = 0; |
754 product->w2_sulfate = 0; |
741 product->w2_ph = 0; |
755 product->w2_ph = 0; |
742 product->w1_amount += product->w2_amount; |
756 product->w1_amount += product->w2_amount; |
743 product->w2_amount = 0; |
757 product->w2_amount = 0; |
|
758 hardness = ra_ppm = 0; |
744 } else { |
759 } else { |
745 query.prepare("SELECT * FROM inventory_waters ORDER BY record"); |
760 query.prepare("SELECT * FROM inventory_waters ORDER BY record"); |
746 query.exec(); |
761 query.exec(); |
747 query.first(); |
762 query.first(); |
748 for (int i = 0; i < (val - 1); i++) { |
763 for (int i = 0; i < (val - 1); i++) { |
756 product->w2_total_alkalinity = query.value(11).toDouble(); |
771 product->w2_total_alkalinity = query.value(11).toDouble(); |
757 product->w2_sodium = query.value(7).toDouble(); |
772 product->w2_sodium = query.value(7).toDouble(); |
758 product->w2_chloride = query.value(6).toDouble(); |
773 product->w2_chloride = query.value(6).toDouble(); |
759 product->w2_sulfate = query.value(5).toDouble(); |
774 product->w2_sulfate = query.value(5).toDouble(); |
760 product->w2_ph = query.value(9).toDouble(); |
775 product->w2_ph = query.value(9).toDouble(); |
|
776 hardness = Utils::Hardness(product->w2_calcium, product->w2_magnesium); |
|
777 ra_ppm = Utils::RA_ppm(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium); |
761 } |
778 } |
762 ui->w1_volEdit->setValue(product->w1_amount); |
779 ui->w1_volEdit->setValue(product->w1_amount); |
763 ui->w2_volEdit->setValue(product->w2_amount); |
780 ui->w2_volEdit->setValue(product->w2_amount); |
764 ui->w2_caEdit->setValue(product->w2_calcium); |
781 ui->w2_caEdit->setValue(product->w2_calcium); |
765 ui->w2_mgEdit->setValue(product->w2_magnesium); |
782 ui->w2_mgEdit->setValue(product->w2_magnesium); |
767 ui->w2_caco3Edit->setValue(product->w2_total_alkalinity); |
784 ui->w2_caco3Edit->setValue(product->w2_total_alkalinity); |
768 ui->w2_naEdit->setValue(product->w2_sodium); |
785 ui->w2_naEdit->setValue(product->w2_sodium); |
769 ui->w2_clEdit->setValue(product->w2_chloride); |
786 ui->w2_clEdit->setValue(product->w2_chloride); |
770 ui->w2_so4Edit->setValue(product->w2_sulfate); |
787 ui->w2_so4Edit->setValue(product->w2_sulfate); |
771 ui->w2_phEdit->setValue(product->w2_ph); |
788 ui->w2_phEdit->setValue(product->w2_ph); |
|
789 ui->w2_hardnessEdit->setValue(hardness); |
|
790 ui->w2_raEdit->setValue(ra_ppm); |
772 |
791 |
773 check_waters(); |
792 check_waters(); |
774 is_changed(); |
793 is_changed(); |
775 calcWater(); |
794 calcWater(); |
776 } |
795 } |
787 ui->wt_hco3Edit->setValue(0); |
806 ui->wt_hco3Edit->setValue(0); |
788 ui->wt_caco3Edit->setValue(0); |
807 ui->wt_caco3Edit->setValue(0); |
789 ui->wt_naEdit->setValue(0); |
808 ui->wt_naEdit->setValue(0); |
790 ui->wt_clEdit->setValue(0); |
809 ui->wt_clEdit->setValue(0); |
791 ui->wt_so4Edit->setValue(0); |
810 ui->wt_so4Edit->setValue(0); |
|
811 ui->wt_hardnessEdit->setValue(0); |
|
812 ui->wt_raEdit->setValue(0); |
792 } else { |
813 } else { |
793 query.prepare("SELECT * FROM profile_water ORDER BY name"); |
814 query.prepare("SELECT * FROM profile_water ORDER BY name"); |
794 query.exec(); |
815 query.exec(); |
795 query.first(); |
816 query.first(); |
796 for (int i = 0; i < (val - 1); i++) { |
817 for (int i = 0; i < (val - 1); i++) { |
797 query.next(); |
818 query.next(); |
798 } |
819 } |
799 ui->wt_caEdit->setValue(query.value(2).toDouble()); |
820 ui->wt_caEdit->setValue(query.value("calcium").toDouble()); |
800 ui->wt_mgEdit->setValue(query.value(7).toDouble()); |
821 ui->wt_mgEdit->setValue(query.value("magnesium").toDouble()); |
801 ui->wt_hco3Edit->setValue(query.value(3).toDouble()); |
822 ui->wt_hco3Edit->setValue(query.value("bicarbonate").toDouble()); |
802 ui->wt_caco3Edit->setValue(query.value(10).toDouble()); |
823 ui->wt_caco3Edit->setValue(query.value("total_alkalinity").toDouble()); |
803 ui->wt_naEdit->setValue(query.value(6).toDouble()); |
824 ui->wt_naEdit->setValue(query.value("sodium").toDouble()); |
804 ui->wt_clEdit->setValue(query.value(5).toDouble()); |
825 ui->wt_clEdit->setValue(query.value("chloride").toDouble()); |
805 ui->wt_so4Edit->setValue(query.value(4).toDouble()); |
826 ui->wt_so4Edit->setValue(query.value("sulfate").toDouble()); |
|
827 ui->wt_hardnessEdit->setValue(Utils::Hardness(query.value("calcium").toDouble(), query.value("magnesium").toDouble())); |
|
828 ui->wt_raEdit->setValue(Utils::RA_ppm(query.value("total_alkalinity").toDouble(), query.value("calcium").toDouble(), query.value("magnesium").toDouble())); |
806 } |
829 } |
807 calcWater(); |
830 calcWater(); |
808 } |
831 } |
809 |
832 |
810 |
833 |