3345 $('.c_mashph').show(); |
3322 $('.c_mashph').show(); |
3346 TpH = parseFloat(dataRecord.mash_ph); |
3323 TpH = parseFloat(dataRecord.mash_ph); |
3347 protonDeficit = ProtonDeficit(TpH); |
3324 protonDeficit = ProtonDeficit(TpH); |
3348 //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); |
3325 //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); |
3349 if (protonDeficit > 0) { // Add acid |
3326 if (protonDeficit > 0) { // Add acid |
3350 $('#wa_base').val(0); |
|
3351 dataRecord.wa_base = 0; |
|
3352 setWaterAgent(last_base, 0); |
|
3353 frac = CalcFrac(TpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); |
3327 frac = CalcFrac(TpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); |
3354 Acid = protonDeficit / frac; |
3328 Acid = protonDeficit / frac; |
3355 Acid *= AcidTypeData[AT].MolWt; // mg |
3329 Acid *= AcidTypeData[AT].MolWt; // mg |
3356 Acidmg = Acid; |
3330 Acidmg = Acid; |
3357 Acid = Acid / AcidTypeData[AT].AcidSG; // ml |
3331 Acid = Acid / AcidTypeData[AT].AcidSG; // ml |
3360 $('#wa_acid').val(Acid); |
3334 $('#wa_acid').val(Acid); |
3361 setWaterAgent(AcidTypeData[AT].nl, Acid); |
3335 setWaterAgent(AcidTypeData[AT].nl, Acid); |
3362 |
3336 |
3363 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
3337 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
3364 total_alkalinity = bicarbonate * 50 / 61; |
3338 total_alkalinity = bicarbonate * 50 / 61; |
3365 } else if (protonDeficit < 0) { //Add base |
|
3366 $('#wa_acid').val(0); |
|
3367 dataRecord.wa_acid = 0; |
|
3368 setWaterAgent(last_acid, 0); |
|
3369 r1d = Math.pow(10, (TpH - 6.35)); |
|
3370 r2d = Math.pow(10, (TpH - 10.33)); |
|
3371 f1d = 1 / (1 + r1d + r1d * r2d); |
|
3372 f2d = f1d * r1d; |
|
3373 f3d = f2d * r2d; |
|
3374 switch (BT) { |
|
3375 // case 0: |
|
3376 // RA = -protonDeficit / (f1d - f3d); // Sodiumbicarbonate, mmol totaal |
|
3377 // RA = RA * MMNaHCO3 / 1000; //gram |
|
3378 // $('#wa_base').val(Round(RA, 2)); |
|
3379 // setWaterAgent('NaHCO3', Round(RA, 2)); |
|
3380 // if (liters > 0) { |
|
3381 // // Na |
|
3382 // RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + |
|
3383 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; |
|
3384 // sodium = wg_sodium + RA; |
|
3385 // // HCO3 |
|
3386 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters; |
|
3387 // bicarbonate = wg_bicarbonate + RA; |
|
3388 // total_alkalinity = bicarbonate * 50 / 61; |
|
3389 // } |
|
3390 // break; |
|
3391 case 0: |
|
3392 RA = -protonDeficit / (2 * f1d + f2d); // Sodiumcarbonate, mmol totaal |
|
3393 RA = RA * MMNa2CO3 / 1000; //gram |
|
3394 $('#wa_base').val(Round(RA, 2)); |
|
3395 setWaterAgent('Na2CO3', Round(RA, 2)); |
|
3396 if (liters > 0) { |
|
3397 RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000+ |
|
3398 parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters; |
|
3399 sodium = wg_sodium + RA; |
|
3400 // HCO3 |
|
3401 RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters; |
|
3402 bicarbonate = wg_bicarbonate + RA; |
|
3403 total_alkalinity = bicarbonate * 50 / 61; |
|
3404 } |
|
3405 break; |
|
3406 // case 2: |
|
3407 // RA = -protonDeficit * (f1d - f3d); // Calciumcarbonate, mmol totaal |
|
3408 // RA = RA * MMCaCO3 / 1000; //gram |
|
3409 // //but only 1/3 is effective, so add 3 times as much |
|
3410 // RA = 3 * RA; |
|
3411 // $('#wa_base').val(Round(RA, 2)); |
|
3412 // setWaterAgent('CaCO3', Round(RA, 2)); |
|
3413 // if (liters > 0) { |
|
3414 // //Bicarbonate |
|
3415 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3 * 1000) / liters; |
|
3416 // bicarbonate = wg_bicarbonate + RA; |
|
3417 // total_alkalinity = bicarbonate * 50 / 61; |
|
3418 // //Ca precipitates out as Ca10(PO4)6(OH)2 |
|
3419 // RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + |
|
3420 // parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 + |
|
3421 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaCO3 * 1000) / liters; |
|
3422 // calcium = wg_calcium + RA; |
|
3423 // } |
|
3424 // break; |
|
3425 case 1: |
|
3426 RA = -protonDeficit / 19.3; // Calciumhydroxide |
|
3427 $('#wa_base').val(Round(RA, 2)); |
|
3428 setWaterAgent('Ca(OH)2', Round(RA, 2)); |
|
3429 if (liters > 0) { |
|
3430 // Bicarbonate |
|
3431 RA = -protonDeficit / liters; |
|
3432 total_alkalinity = wg_total_alkalinity + RA; |
|
3433 bicarbonate = total_alkalinity * 61 / 50; |
|
3434 // Calcium |
|
3435 RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + |
|
3436 parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 + |
|
3437 parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaOH2 * 1000) / liters; |
|
3438 calcium = wg_calcium + RA; |
|
3439 } |
|
3440 break; |
|
3441 } |
|
3442 } |
3339 } |
3443 ph = TpH; |
3340 ph = TpH; |
3444 $('#wb_ph').val(Round(ph, 2)); |
3341 $('#wb_ph').val(Round(ph, 2)); |
3445 $('#est_mash_ph').val(Round(ph, 2)); |
3342 $('#est_mash_ph').val(Round(ph, 2)); |
3446 } else { |
3343 } else { |
3447 /* Manual calculate pH */ |
3344 /* Manual calculate pH */ |
3448 $('.c_mashph').hide(); |
3345 $('.c_mashph').hide(); |
3449 console.log('calc_acid no'); |
3346 console.log('calc_acid no'); |
3450 if (parseFloat($('#wa_base').jqxNumberInput('decimal')) > 0 && liters > 0) { |
|
3451 /* First add the base salts */ |
|
3452 switch (BT) { |
|
3453 // case 0: // Sodiumbicarbonate, Na |
|
3454 // RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + |
|
3455 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; |
|
3456 // sodium = wg_sodium + RA; |
|
3457 // // HCO3 |
|
3458 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters; |
|
3459 // bicarbonate = wg_bicarbonate + RA; |
|
3460 // total_alkalinity = bicarbonate * 50 / 61; |
|
3461 // break; |
|
3462 case 0: // Sodiumcarbonate |
|
3463 RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + |
|
3464 parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters; |
|
3465 sodium = wg_sodium + RA; |
|
3466 // HCO3 |
|
3467 RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters; |
|
3468 bicarbonate = wg_bicarbonate + RA; |
|
3469 total_alkalinity = bicarbonate * 50 / 61; |
|
3470 break; |
|
3471 // case 2: // Calciumcarbonate: Bicarbonate |
|
3472 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 * 1000 / MMCaCO3) / liters; |
|
3473 // bicarbonate = wg_bicarbonate + RA; |
|
3474 // total_alkalinity = bicarbonate * 50 / 61; |
|
3475 // // Ca |
|
3476 // RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaCl2 + |
|
3477 // parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaSO4 + |
|
3478 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa * 1000/ MMCaCO3) / liters; |
|
3479 // calcium = wg_calcium + RA; |
|
3480 // break; |
|
3481 } |
|
3482 } |
|
3483 |
|
3484 pHa = Round(ph, 3); // Adjusted water pH |
3347 pHa = Round(ph, 3); // Adjusted water pH |
3485 // Then calculate the new pH with added acids and malts |
3348 // Then calculate the new pH with added acids and malts |
3486 console.log('Mash pH: ' + pHa); |
3349 console.log('Mash pH: ' + pHa); |
3487 Acid = AcidTypeData[AT].AcidSG * (parseFloat(dataRecord.wa_acid_perc) / 100); // ml |
3350 Acid = AcidTypeData[AT].AcidSG * (parseFloat(dataRecord.wa_acid_perc) / 100); // ml |
3488 Acid *= parseFloat($('#wa_acid').jqxNumberInput('decimal')); |
3351 Acid *= parseFloat($('#wa_acid').jqxNumberInput('decimal')); |
4255 if (event.args) { |
4116 if (event.args) { |
4256 setWaterAgent('CaCO3', 0); |
4117 setWaterAgent('CaCO3', 0); |
4257 setWaterAgent('CaCO3', event.args.value); |
4118 setWaterAgent('CaCO3', event.args.value); |
4258 calcWater(); |
4119 calcWater(); |
4259 } |
4120 } |
4260 }); |
|
4261 $('#wa_base_name').on('select', function(event) { |
|
4262 if (event.args) { |
|
4263 var index = event.args.index; |
|
4264 console.log('wa_base_name ' + index); |
|
4265 setWaterAgent(last_base, 0); |
|
4266 last_base = BaseTypeData[index].nl; |
|
4267 setWaterAgent(last_base, parseFloat($('#wa_base').jqxNumberInput('decimal'))); |
|
4268 dataRecord.wa_base_name = index; |
|
4269 calcWater(); |
|
4270 } |
|
4271 }); |
|
4272 $('#wa_base').on('change', function(event) { |
|
4273 var name = BaseTypeData[$('#wa_base_name').val()].nl; |
|
4274 setWaterAgent(name, parseFloat(event.args.value)); |
|
4275 calcWater(); |
|
4276 }); |
4121 }); |
4277 $('#wa_acid_name').on('select', function(event) { |
4122 $('#wa_acid_name').on('select', function(event) { |
4278 if (event.args) { |
4123 if (event.args) { |
4279 var index = event.args.index; |
4124 var index = event.args.index; |
4280 console.log('wa_acid_name ' + index + ' last_acid: ' + last_acid); |
4125 console.log('wa_acid_name ' + index + ' last_acid: ' + last_acid); |
4881 wb_magnesium: parseFloat($('#wb_magnesium').jqxNumberInput('decimal')), |
4726 wb_magnesium: parseFloat($('#wb_magnesium').jqxNumberInput('decimal')), |
4882 wb_total_alkalinity: parseFloat($('#wb_total_alkalinity').jqxNumberInput('decimal')), |
4727 wb_total_alkalinity: parseFloat($('#wb_total_alkalinity').jqxNumberInput('decimal')), |
4883 wb_ph: parseFloat($('#wb_ph').jqxNumberInput('decimal')), |
4728 wb_ph: parseFloat($('#wb_ph').jqxNumberInput('decimal')), |
4884 wa_acid_name: parseInt($('#wa_acid_name').val()), |
4729 wa_acid_name: parseInt($('#wa_acid_name').val()), |
4885 wa_acid_perc: parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')), |
4730 wa_acid_perc: parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')), |
4886 wa_base_name: parseInt($('#wa_base_name').val()), |
4731 wa_base_name: 0, |
4887 starter_enable: dataRecord.starter_enable, |
4732 starter_enable: dataRecord.starter_enable, |
4888 starter_type: $('#starter_type').val(), |
4733 starter_type: $('#starter_type').val(), |
4889 starter_sg: parseFloat($('#starter_sg').jqxNumberInput('decimal')), |
4734 starter_sg: parseFloat($('#starter_sg').jqxNumberInput('decimal')), |
4890 starter_viability: parseFloat($('#starter_viability').jqxNumberInput('decimal')), |
4735 starter_viability: parseFloat($('#starter_viability').jqxNumberInput('decimal')), |
4891 yeast_prod_date: $('#yeast_prod_date').val(), |
4736 yeast_prod_date: $('#yeast_prod_date').val(), |
6165 $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); |
6010 $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); |
6166 $('#wa_cacl2,#wa_caso4,#wa_mgso4,#wa_nacl,#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec); |
6011 $('#wa_cacl2,#wa_caso4,#wa_mgso4,#wa_nacl,#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec); |
6167 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); |
6012 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); |
6168 $('#mash_ph').jqxNumberInput(SpinpH); |
6013 $('#mash_ph').jqxNumberInput(SpinpH); |
6169 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
6014 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
6170 $('#wa_base_name').jqxDropDownList({ |
6015 $('#wa_acid').jqxNumberInput(Spin2dec); |
6171 theme: theme, |
|
6172 source: BaseTypeAdapter, |
|
6173 valueMember: 'id', |
|
6174 displayMember: 'nl', |
|
6175 width: 170, |
|
6176 height: 23, |
|
6177 autoDropDownHeight: true |
|
6178 }); |
|
6179 $('#wa_base,#wa_acid').jqxNumberInput(Spin2dec); |
|
6180 $('#wa_base').jqxNumberInput({ symbol: ' gr', symbolPosition: 'right' }); |
|
6181 $('#wa_acid_name').jqxDropDownList({ |
6016 $('#wa_acid_name').jqxDropDownList({ |
6182 theme: theme, |
6017 theme: theme, |
6183 source: AcidTypeAdapter, |
6018 source: AcidTypeAdapter, |
6184 valueMember: 'id', |
6019 valueMember: 'id', |
6185 displayMember: 'nl', |
6020 displayMember: 'nl', |
6186 width: 170, |
6021 width: 130, |
6187 height: 23, |
6022 height: 23, |
6188 autoDropDownHeight: true |
6023 autoDropDownHeight: true |
6189 }); |
6024 }); |
6190 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); |
6025 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); |
6191 $('#wa_acid_perc,#sparge_acid_perc').jqxNumberInput(Perc0); |
6026 $('#wa_acid_perc,#sparge_acid_perc').jqxNumberInput(Perc0); |