18 */ |
18 */ |
19 |
19 |
20 |
20 |
21 void EditRecipe::refreshWaters() |
21 void EditRecipe::refreshWaters() |
22 { |
22 { |
23 // recipe->w1_name |
|
24 ui->w1_volEdit->setValue(recipe->w1_amount); |
|
25 ui->w1_caEdit->setValue(recipe->w1_calcium); |
|
26 ui->w1_mgEdit->setValue(recipe->w1_magnesium); |
|
27 ui->w1_hco3Edit->setValue(recipe->w1_total_alkalinity * 1.22); |
|
28 ui->w1_caco3Edit->setValue(recipe->w1_total_alkalinity); |
|
29 ui->w1_naEdit->setValue(recipe->w1_sodium); |
|
30 ui->w1_clEdit->setValue(recipe->w1_chloride); |
|
31 ui->w1_so4Edit->setValue(recipe->w1_sulfate); |
|
32 ui->w1_phEdit->setValue(recipe->w1_ph); |
|
33 |
|
34 // recipe->w2_name |
|
35 ui->w2_volEdit->setValue(recipe->w2_amount); |
|
36 ui->w2_caEdit->setValue(recipe->w2_calcium); |
|
37 ui->w2_mgEdit->setValue(recipe->w2_magnesium); |
|
38 ui->w2_hco3Edit->setValue(recipe->w2_total_alkalinity * 1.22); |
|
39 ui->w2_caco3Edit->setValue(recipe->w2_total_alkalinity); |
|
40 ui->w2_naEdit->setValue(recipe->w2_sodium); |
|
41 ui->w2_clEdit->setValue(recipe->w2_chloride); |
|
42 ui->w2_so4Edit->setValue(recipe->w2_sulfate); |
|
43 ui->w2_phEdit->setValue(recipe->w2_ph); |
|
44 |
|
45 ui->wg_volEdit->setValue(recipe->wg_amount); |
|
46 ui->wg_caEdit->setValue(recipe->wg_calcium); |
|
47 ui->wg_mgEdit->setValue(recipe->wg_magnesium); |
|
48 ui->wg_hco3Edit->setValue(recipe->wg_total_alkalinity * 1.22); |
|
49 ui->wg_caco3Edit->setValue(recipe->wg_total_alkalinity); |
|
50 ui->wg_naEdit->setValue(recipe->wg_sodium); |
|
51 ui->wg_clEdit->setValue(recipe->wg_chloride); |
|
52 ui->wg_so4Edit->setValue(recipe->wg_sulfate); |
|
53 ui->wg_phEdit->setValue(recipe->wg_ph); |
|
54 |
|
55 ui->wb_caEdit->setValue(recipe->wb_calcium); |
|
56 ui->wb_mgEdit->setValue(recipe->wb_magnesium); |
|
57 ui->wb_hco3Edit->setValue(recipe->wb_total_alkalinity * 1.22); |
|
58 ui->wb_caco3Edit->setValue(recipe->wb_total_alkalinity); |
|
59 ui->wb_naEdit->setValue(recipe->wb_sodium); |
|
60 ui->wb_clEdit->setValue(recipe->wb_chloride); |
|
61 ui->wb_so4Edit->setValue(recipe->wb_sulfate); |
|
62 ui->wb_phEdit->setValue(recipe->wb_ph); |
|
63 |
|
64 ui->sp_volEdit->setValue(recipe->sparge_volume); |
|
65 ui->sp_tempEdit->setValue(recipe->sparge_temp); |
|
66 ui->sp_phEdit->setValue(recipe->sparge_ph); |
|
67 // sparge_source |
|
68 // sparge_acid_type |
|
69 ui->sp_acidpercEdit->setValue(recipe->sparge_acid_perc); |
|
70 ui->sp_acidvolEdit->setValue(recipe->sparge_acid_amount); |
|
71 |
23 |
72 // calc_acid |
24 // calc_acid |
73 ui->mw_phEdit->setValue(recipe->mash_ph); |
25 ui->mw_phEdit->setValue(recipe->mash_ph); |
74 // mash_name |
26 // mash_name |
75 //ui->mw_acidpercEdit->setValue(recipe-> |
27 //ui->mw_acidpercEdit->setValue(recipe-> |
76 |
28 |
77 } |
29 } |
78 |
30 |
|
31 |
|
32 double EditRecipe::mix(double v1, double v2, double c1, double c2) |
|
33 { |
|
34 if ((v1 + v2) > 0) { |
|
35 return ((v1 * c1) + (v2 * c2)) / (v1 + v2); |
|
36 } |
|
37 return 0; |
|
38 } |
|
39 |
|
40 |
|
41 void EditRecipe::calcWater() |
|
42 { |
|
43 double liters = 0; |
|
44 double calcium = 0; |
|
45 double magnesium = 0; |
|
46 double sodium = 0; |
|
47 double total_alkalinity = 0; |
|
48 double bicarbonate = 0; |
|
49 double chloride = 0; |
|
50 double sulfate = 0; |
|
51 double ph = 0; |
|
52 |
|
53 qDebug() << "calcWater"; |
|
54 |
|
55 /* |
|
56 * If there is a dilute water source, mix the waters. |
|
57 */ |
|
58 if (recipe->w2_name != "") { |
|
59 liters = recipe->w1_amount + recipe->w2_amount; |
|
60 calcium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_calcium, recipe->w2_calcium); |
|
61 magnesium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_magnesium, recipe->w2_magnesium); |
|
62 sodium = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sodium, recipe->w2_sodium); |
|
63 chloride = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_chloride, recipe->w2_chloride); |
|
64 sulfate = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_sulfate, recipe->w2_sulfate); |
|
65 total_alkalinity = mix(recipe->w1_amount, recipe->w2_amount, recipe->w1_total_alkalinity, recipe->w2_total_alkalinity); |
|
66 ph = -log10(((pow(10, -recipe->w1_ph) * recipe->w1_amount) + (pow(10, -recipe->w2_ph) * recipe->w2_amount)) / liters); |
|
67 } else { |
|
68 liters = recipe->w1_amount; |
|
69 calcium = recipe->w1_calcium; |
|
70 magnesium = recipe->w1_magnesium; |
|
71 sodium = recipe->w1_sodium; |
|
72 chloride = recipe->w1_chloride; |
|
73 sulfate = recipe->w1_sulfate; |
|
74 total_alkalinity = recipe->w1_total_alkalinity; |
|
75 ph = recipe->w1_ph; |
|
76 } |
|
77 |
|
78 recipe->wg_amount = liters; |
|
79 recipe->wg_calcium = round(calcium * 10.0) / 10.0; |
|
80 recipe->wg_magnesium = round(magnesium * 10.0) / 10.0; |
|
81 recipe->wg_sodium = round(sodium * 10.0) / 10.0; |
|
82 recipe->wg_chloride = round(chloride * 10.0) / 10.0; |
|
83 recipe->wg_sulfate = round(sulfate * 10.0) / 10.0; |
|
84 recipe->wg_total_alkalinity = round(total_alkalinity * 10.0) / 10.0; |
|
85 |
|
86 ui->wg_volEdit->setValue(liters); |
|
87 ui->wg_caEdit->setValue(calcium); |
|
88 ui->wg_mgEdit->setValue(magnesium); |
|
89 ui->wg_hco3Edit->setValue(total_alkalinity * 1.22); |
|
90 ui->wg_caco3Edit->setValue(total_alkalinity); |
|
91 ui->wg_naEdit->setValue(sodium); |
|
92 ui->wg_clEdit->setValue(chloride); |
|
93 ui->wg_so4Edit->setValue(sulfate); |
|
94 ui->wg_phEdit->setValue(ph); |
|
95 bicarbonate = total_alkalinity * 1.22; |
|
96 |
|
97 /* Save mixed water ions for later */ |
|
98 double wg_calcium = calcium; |
|
99 double wg_sodium = sodium; |
|
100 double wg_total_alkalinity = total_alkalinity; |
|
101 double wg_chloride = chloride; |
|
102 double wg_sulfate = sulfate; |
|
103 double wg_bicarbonate = bicarbonate; |
|
104 |
|
105 } |
|
106 |
|
107 |
|
108 void EditRecipe::on_w2_vol_changed(double val) |
|
109 { |
|
110 } |
|
111 |
|
112 |
|
113 void EditRecipe::on_cacl2_changed(double val) |
|
114 { |
|
115 set_brewing_salt("CaCl2", val); |
|
116 } |
|
117 |
|
118 |
|
119 void EditRecipe::on_caso4_changed(double val) |
|
120 { |
|
121 set_brewing_salt("CaSO4", val); |
|
122 } |
|
123 |
|
124 |
|
125 void EditRecipe::on_mgso4_changed(double val) |
|
126 { |
|
127 set_brewing_salt("MgSO4", val); |
|
128 } |
|
129 |
|
130 |
|
131 void EditRecipe::on_nacl_changed(double val) |
|
132 { |
|
133 set_brewing_salt("NaCl", val); |
|
134 } |
|
135 |
|
136 |
|
137 void EditRecipe::on_mgcl2_changed(double val) |
|
138 { |
|
139 set_brewing_salt("MgCl2", val); |
|
140 } |
|
141 |
|
142 |
|
143 void EditRecipe::on_nahco3_changed(double val) |
|
144 { |
|
145 set_brewing_salt("NaHCO3", val); |
|
146 } |
|
147 |
|
148 |
|
149 void EditRecipe::on_caco3_changed(double val) |
|
150 { |
|
151 set_brewing_salt("CaCO3", val); |
|
152 } |
|
153 |
|
154 |
|
155 |