Water Chemistry Calculator pH Discrepancy

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
I wouldn't trust any currently available or future releases of any of them for "flying blind", i.e. not taking pH measurements.

We would like a pH meter to be a validation tool (confirming spreadsheet predictions) but it is often a troubleshooting tool (figuring out why estimation and reality don't jive).
That’s fair a pH meter can and should be used for both.
 
Last edited:
I brew for the same reasons I chase mash pH. I love the challenge. And the satisfaction I get from both. Every brewday is a learning experience. Whether fine tuning an old favorite or proving out a new recipe.
 
Last edited:
It is indeed the case.
No one really knows how this program works and the author isn't talking. From his frequent contributions to this forum we can sort of deduce that its algorithm is based mostly on empirical methods based on the experiences of people who use his program. Earlier this year people here reported that they were finding that increasing the DI water to grist ratio caused it to predict lower pH. This clearly cannot happen. The author reported that fixed. Another reader here found with it that equivalent amounts of two different basic salts caused it to estimate different pH shifts. Clearly this is wrong. Several people have, as you did, reported pH predictions, especially with dark malts, that are much lower than makes sense. Author's response to this is that he needs to get more reports on dark beer mash pH from his users in order to be able to fix this. All of these solidify the impression that the algorithm is empirical rather than based on the chemistry. The general problem with empirical solutions is that they tend to be valid only under certain conditions - those under which the data underlying them were gathered. When those conditions aren't met, the creator often tries to patch the algorithm to "fix" the problem by "tweaking" it to incorporate the outliers. Often this causes another problem to pop up. I think that's what happening here.

Indeed, the algorithm is empirical. The equations utilized in the algorithm are largely based on equations that can be found in Kai Troester's 2009 paper The effect of brewing water and grist composition on the pH of the mash. These equations are extensively discussed in the two papers A Homebrewing Perspective on Mash pH I and A Homebrewing Perspective on Mash pH II, both which can be found at homebrewingphysics.blogspot.com.
 
Kai's work gives us fits to measurements he took which allow us to estimate malt parameters from color. But when he uses those estimates in his spreadsheet he uses them consistent with the chemistry. Thus the malt data is empirical (as it has to be in any estimation process where the actual malts being used are not measured) but the use of that data is analytical as the laws of chemistry are invoked to calculate a pH. Kai's spreadsheet would not tell you that adding more water to a mash will cause a drop in mash pH (unless the water has been acidified).

Bru'n water states plainly that it uses Kai's work for the malts but apparently uses the malt parameters deduced from his models in some non analytical fashion as it will (or has in the past) estimated lower mash pH when more water is added. That violates the laws of chemistry.
 
Kai's work gives us fits to measurements he took which allow us to estimate malt parameters from color. But when he uses those estimates in his spreadsheet he uses them consistent with the chemistry. Thus the malt data is empirical (as it has to be in any estimation process where the actual malts being used are not measured) but the use of that data is analytical as the laws of chemistry are invoked to calculate a pH. Kai's spreadsheet would not tell you that adding more water to a mash will cause a drop in mash pH (unless the water has been acidified).

Bru'n water states plainly that it uses Kai's work for the malts but apparently uses the malt parameters deduced from his models in some non analytical fashion as it will (or has in the past) estimated lower mash pH when more water is added. That violates the laws of chemistry.

The following is my understanding of BrunWater's (BW's) calculations of distilled-water mash pH. BrunWater (in essence) calculates distilled-water pH using

pH = 5.75 - (0.17/R) Sum_i (f_i * A_i),

where R is the mash thickness (liters / kg), f_i is the fraction of malt i in the mash, and A_i (mEq/kg) is the acidity of malt i (with respect to a fiducial pH of 5.75). FWIW (not much), dimensional analysis readily tells us the units of the factor 0.17 are liter/mEq.

This dependence upon mash thickness R is readily apparent in this equation. It's presence gives the well-know feature of BW that smaller values of R predict values of mash pH that are further away from 5.75 (changed to 5.76 in the latest version of BW).

I do not believe that Kai Troester (KT) is entirely innocent in this. The last equation in Sec. 3.4 and first equation in Sec. 3.5 of KT's 2009 paper ("The effect of brewing water...") are (in essence) of the form of the above equation used by BW. The logical conclusion is that the author of BW was lead (or mislead) to adopt these equations of KT in BW.

KT later recognized that the above equation is not correct: the first equation in KT's 2012 paper "Beer color to mash pH" replaces the factor (0.17/R) by 1/B, where KT correctly points out that B is the buffering capacity of the malt. This correction is reflected in KT's spreadsheet (and his website Brewer's Friend), which do not exhibit a shift of distilled-water pH with mash thickness.

Cheers!
 
I do not believe that Kai Troester (KT) is entirely innocent in this. The last equation in Sec. 3.4 and first equation in Sec. 3.5 of KT's 2009 paper ("The effect of brewing water...") are (in essence) of the form of the above equation used by BW. The logical conclusion is that the author of BW was lead (or mislead) to adopt these equations of KT in BW. I now understand why your

KT later recognized that the above equation is not correct: the first equation in KT's 2012 paper "Beer color to mash pH" replaces the factor (0.17/R) by 1/B, where KT correctly points out that B is the buffering capacity of the malt. This correction is reflected in KT's spreadsheet (and his website Brewer's Friend), which do not exhibit a shift of distilled-water pH with mash thickness.

Cheers!
@dmr thank you for clarifying the discrepancies in KT's 2009 and then later revised 2012 formulas regarding mash thickness and buffering. I have been using your MpH Water Calculators v2.0 and v3.0 for a few years now. I always wondered why the MpH mash pH predictions, with salts and acids added, differed by ~.07 pH when compared to BW.
 
@dmr thank you for clarifying the discrepancies in KT's 2009 and then later revised 2012 formulas regarding mash thickness and buffering. I have been using your MpH Water Calculators v2.0 and v3.0 for a few years now. I always wondered why the MpH mash pH predictions, with salts and acids added, differed by ~.07 pH when compared to BW.

Beware that before revealing this error correction an explicit statement to the effect that this is all based upon merely empirical grounds in the first place was professed. That said, and given this profound error correcting revelation, BW has been gifted with the evolutionary opportunity (if it so chooses) to effectively transition itself from a geocentric view of the universe to a heleocentric view replete with epicycles.

Unless of course, the corrective replacement of 0.17/R by 1/B removes from the formulative structure of mash pH prediction all levels of empiricism.
 
Last edited:
Beware that before revealing this error correction an explicit statement to the effect that this is all based upon merely empirical grounds in the first place was professed. That said, and given this profound error correcting revelation, BW has been gifted with the evolutionary opportunity (if it so chooses) to effectively transition itself from a geocentric view of the universe to a heleocentric view replete with epicycles.

Unless of course, the corrective replacement of 0.17/R by 1/B removes from the formulative structure of mash pH prediction all levels of empiricism.

In order to spare those allergic to word salad, here is a translation:

Before this post, A.J. said earlier that Brun Water is empirically based. Given this info, this would be a good opportunity for Martin to evaluate and apply this correction.
 
Beware that before revealing this error correction an explicit statement to the effect that this is all based upon merely empirical grounds in the first place was professed. That said, and given this profound error correcting revelation, BW has been gifted with the evolutionary opportunity (if it so chooses) to effectively transition itself from a geocentric view of the universe to a heleocentric view replete with epicycles.

Unless of course, the corrective replacement of 0.17/R by 1/B removes from the formulative structure of mash pH prediction all levels of empiricism.
Agreed. @dmr has provided us with a solid foundation for mash pH prediction based solely on the laws of chemistry. Over time the recording of actual mash pH measurements against mash pH predictions will be the real test. Can pH predictions based on empirical data ever be more accurate than predictions based on the laws of chemistry?
 
Agreed. Can pH predictions based on empirical data ever be more accurate than predictions based on the laws of chemistry?

Yes indeed they can when the full understanding and/or application of the chemistry is not incorporated.

In other words, if you've got a great and factual calculation for a part of the chemical reaction and haven't accounted for other aspects of that reaction, then you are no better off than an empirical estimate.
 
In other words, if you've got a great and factual calculation for a part of the chemical reaction and haven't accounted for other aspects of that reaction, then you are no better off than an empirical estimate.

This works in multiple ways though. Empirical results are extremely useful for a broad number of users if there is agreement between those results and all users. However, empirical results that differ between users can only be applied with confidence to that specific user's brewhouse, i.e. if my empirical results don't match yours, they may only be valid for my brewery.

Trying to establish the base calculations based solely on charge conservation and the known chemistry is a good step forward for "leveling" the field but introduces things like titration characteristics for malt that just may not be practically estimated, functions in Excel that make it hard for some users to even use the code, etc.

There are tradeoffs in both directions. I'm personally trying to come up with a user friendly application of the charge conservation method with decent estimates for titration characteristics. It's slow going.
 
There are tradeoffs in both directions. I'm personally trying to come up with a user friendly application of the charge conservation method with decent estimates for titration characteristics. It's slow going.
Unless I've completely misunderstood, either of the two approaches provides an end user with similar benefits, limitations, and tradeoffs. The analytical methodology relying solely on charge conservation and chemistry may be best suited for use under near-laboratory conditions. Let me explain. I say this because very few brewers have the resources needed to titration test every grain type used in their recipes prior to brewing them. I would venture a guess those that do often come within an acceptable range of mash pH prediction. And their brewing notes record the actual and predicted mash pH measurements to use as a reference when brewing that recipe again.

The empirical methodology differs by bending the mash pH prediction curve based on known outcomes of prior predictions and actual mash pH measurements. Again I would guess for most brewers the actual mash pH comes within an acceptable range of mash pH prediction. And users record the actual and predicted mash pH measurements in their notes to refer to when brewing that recipe the next time. I doubt anyone thinks either of the two approaches is foolproof. On one hand, we have a tool that relies on input based on accurate titration testing and buffering. On the other one relying on grain color, mash thickness, and empirical or anecdotal evidence.
 
Unless I've completely misunderstood, either of the two approaches provides an end user with similar benefits, limitations, and tradeoffs. The analytical methodology relying solely on charge conservation and chemistry may be best suited for use under near-laboratory conditions. Let me explain. I say this because very few brewers have the resources needed to titration test every grain type used in their recipes prior to brewing them. I would venture a guess those that do often come within an acceptable range of mash pH prediction. And their brewing notes record the actual and predicted mash pH measurements to use as a reference when brewing that recipe again.

The empirical methodology differs by bending the mash pH prediction curve based on known outcomes of prior predictions and actual mash pH measurements. Again I would guess for most brewers the actual mash pH comes within an acceptable range of mash pH prediction. And users record the actual and predicted mash pH measurements in their notes to refer to when brewing that recipe the next time. I doubt anyone thinks either of the two approaches is foolproof. On one hand, we have a tool that relies on input based on accurate titration testing and buffering. On the other one relying on grain color, mash thickness, and empirical or anecdotal evidence.

I agree with you, however, if even an educated guess at DI pH and at least the first titration constant is a better fit than a color proxy, the rest of the charge conservation method (acids, minerals, water, etc.) is bulletproof.

I am having more issues with getting everything in a user friendly form for folks (solver doesn’t work for everyone and macros and other things aren’t always supported in all versions of Excel) than coming up with decent input data for pH and titration constants.
 
I agree with you, however, if even an educated guess at DI pH and at least the first titration constant is a better fit than a color proxy, the rest of the charge conservation method (acids, minerals, water, etc.) is bulletproof.
I won't argue that point with you. In fact my first attempt at water calculations relied on grain DIph entries for input. At the time only myself and another member of our club took the time to do any test mashes. So for the next two years my focus shifted to color based predications. But I never really shut the door on adopting DIpH based predictions.

I am having more issues with getting everything in a user friendly form for folks (solver doesn’t work for everyone and macros and other things aren’t always supported in all versions of Excel) than coming up with decent input data for pH and titration constants.
Excel supports VBA/macro coding on all platforms but other non-Excel spreadsheets do not.
 
Again the community seems to miss the essential point that there are two parts to getting better pH predictions.
I. Having a model that correctly reflects the chemistry
II. Putting good data into it.

Both parts are necessary. Putting lousy data into a good model leads to the old GIGO (Garbage In - Garbage Out) expression that used to kick around the engineering community a few years back. It doesn't matter whether you have the best model in the world. Feeding it bad data will result in a poor result. But the benefits of a good model are clear. Putting the best malt data into a program that thinks dilution has an effect on mash pH isn't going to give very good predictions and the problem now becomes one of getting good malt data, Even if we don't have good malt data an accurate model allows us to derive correct answers to questions like "Suppose I have a malt with these characteristics. How is the pH effected if I use 30% more mash water?" (Answer: if the alkalinity is accounted for separately it isn't).

Can pH predictions based on empirical data ever be more accurate than predictions based on the laws of chemistry?

Yes indeed they can when the full understanding and/or application of the chemistry is not incorporated.
If parts of the applicable chemistry are omitted, ignored or misunderstood then we can't say that the prediction is based on laws the chemistry. This does not mean that we simplify where the effect is so small as to be unnoticeable or insignificant (e.g. Debye Hückle).

In other words, if you've got a great and factual calculation for a part of the chemical reaction and haven't accounted for other aspects of that reaction, then you are no better off than an empirical estimate.
In other words you are saying that an empirical approach can better than an incorrect analytical one. This is about as useful as saying that the bear defecates in the woods. But, of course, I am not suggesting that anyone develop his own laws of chemistry but rather that they should use the laws of chemistry that are known. I recognize that there are some here that are still struggling to understand this chemistry to the point that they can correctly implement it in their spreadsheets/calculators. But it is out there and if they keep at it they will get there eventually.

Now I am most curious as to the phrase "if you've got a great and factual calculation for a part of the chemical reaction and haven't accounted for other aspects of that reaction" and would appreciate some clarification on that with an example if possible.
 
Last edited:
I agree with you, however, if even an educated guess at DI pH and at least the first titration constant is a better fit than a color proxy, the rest of the charge conservation method (acids, minerals, water, etc.) is bulletproof.
I've been working on ezRecipe v2.01 a lot lately. A new feature adds a way to override the Gen I color based DIpH prediction with any of the known DIpH grain values. I believe what I've done is make ezRecipe v2.01 Gen II compliant. The upcoming version ezRecipe builds on the elegant formulas provided by @dmr in his current MpH v3.0 brewing water spreadsheet. Regression testing the new features against Brewers Friend is ongoing and so far the results are matching up nicely. Now all we need is a database of reliable DIpH values for our most popular maltsters by their grain types to feed in.
 
I've been working on ezRecipe v2.01 a lot lately. A new feature adds a way to override the Gen I color based DIpH prediction with any of the known DIpH grain values. I believe what I've done is make ezRecipe v2.01 Gen II compliant. The upcoming version ezRecipe builds on the elegant formulas provided by @dmr in his current MpH v3.0 brewing water spreadsheet. Regression testing the new features against Brewers Friend is ongoing and so far the results are matching up nicely. Now all we need is a database of reliable DIpH values for our most popular maltsters by their grain types to feed in.

I’d argue you haven’t. I don’t mean any offense by that either. I started using a DI pH override 3 years ago and it dramatically increased the accuracy of predictions.

I’d have to know the nuts and bolts of what you did but unless you’ve supplanted color based acidity proxies, you have merely increased the accuracy of those color based estimations by shoring up the DI pH portion of the calculations.

With that said, DI pH values will dramatically increase even color based estimations. The fact of the matter, however, is that DI pH is only a portion of the q calculation for malt.

Mr. Riffe’s calculator is still very much rooted in color based estimation. I’m looking forward to seeing what he plans on issuing in the coming months.
 
I’d argue you haven’t. I don’t mean any offense by that either. I started using a DI pH override 3 years ago and it dramatically increased the accuracy of predictions.

I’d have to know the nuts and bolts of what you did but unless you’ve supplanted color based acidity proxies, you have merely increased the accuracy of those color based estimations by shoring up the DI pH portion of the calculations.

With that said, DI pH values will dramatically increase even color based estimations. The fact of the matter, however, is that DI pH is only a portion of the q calculation for malt.

Mr. Riffe’s calculator is still very much rooted in color based estimation. I’m looking forward to seeing what he plans on issuing in the coming months.
@RPIScotty I guess I've lost track of the Gen II specification over the last several months. What are they again? I thought the Gen II specification was to move away from Gen I color based predictions and instead move to individual grain DIpH based predictions. If this is the case then ezRecipe is Gen II compliant or will be once I release this latest version currently under testing.

The ezRecipe v2.01 mash pH and water property results closely match those in Brewer's Friend when using the DIpH override feature. When the DIpH value of grain is entered ezRecipe overrides all color based mash pH predictions used in Mark's MpH v3.0 spreadsheet but still uses Mark's water property calculations. You'll be able to get a better understanding of my approach in the coming weeks.
 
@RPIScotty I guess I've lost track of the Gen II specification over the last several months. What are they again? I thought the Gen II specification was to move away from Gen I color based predictions and instead move to individual grain DIpH based predictions. If this is the case then ezRecipe is Gen II compliant or will be once I release this latest version currently under testing.

The ezRecipe v2.01 mash pH and water property results closely match those in Brewer's Friend when using the DIpH override feature. When the DIpH value of grain is entered ezRecipe overrides all color based mash pH predictions used in Mark's MpH v3.0 spreadsheet but still uses Mark's water property calculations. You'll be able to get a better understanding of my approach in the coming weeks.

If you don't use color, how do you get the acidity of the grain?

Riffe's spreadsheet calculates the Grist pH by using an assumed DI pH (or in the case of the savvy, a weighted user input that sums all the DI pH values for at the very least the base malts) and the grist acidity, which comes from color and the grist fraction of each malt.

If you eliminate the latter, the Grist pH will just be the combined DI pH of the grist, which doesn't say much about how the malt will affect the Grist pH.

I hate attaching names and labels to things (I despise the LODO moniker) because it makes things seems a bit pretentious, but Gen II, as far as I've ever known, is the replacement of the color based proxy for acidity for the actual q value (mEq) of the grain bill based around:

q = a1 * (pHz - DI pH) + a2 * (pHz - DI pH)^2 + a3 * (pHz - DI pH)^3

The problem really is the implementation of A.J.'s calculations into a sheet that the average brewer can use. I understand the logic and it's implementation (at least I think I do) and use it in my own personal sheet. However, a lot of the background stuff would make people's eyes glaze over and eliminating the solver (which mine still uses) in favor of A.J.'s iterative solution in the background is still a work in progress.

So short story long, I would just double check on your implementation. You have to take into account the acidity of the mash somewhere, either with a color proxy or with the q equation above. Without it, Grist pH will just equal the sum of weighted DI pH, and you won't be telling yourself or anybody else anything of substance.

In the end, I'm not out to you-know-what on anyone's progress on this topic. I just want to make sure people are clear on the implementation. We now have a whole slew of pH estimation calculators that are all doing some slightly different form of the same thing: color based pH estimation.

If one gets better they all get better but it's important to agree on at least this fact: all current options are color based. That's not a bad thing but it still implies color as a proxy for actual acidity.
 
Last edited:
The Gen II approach (don't think we can glorify it to the extent of calling it a "specification") is to use robust models for everything in the mash (water, alkalinity, additions, grains) and thereby eliminate the inaccuracies that arise when corners are cut for simplicity and when empirical approaches are used or, at least, to do this to the extent possible. If we have not taken measurements on a grain, for example, we will have to use an empirical approach to obtaining the grain's characteristics such as comparing it to a similar grain or using measurements made by someone else. Thus practically we can seldom entirely eliminate empiricism in the grain model but we can eliminate it from the remainder of the process. Our results are thus improved relative to programs that model the grains empirically and use empirical or approximate models for the chemistry.

The acids, bases, water and alkalinity are all pretty straight forward so the whole thing turns on the
q = a1 * (pHz - DI pH) + a2 * (pHz - DI pH)^2 + a3 * (pHz - DI pH)^3
model for charge change on malt. I tried to handle this in the same way I handled the other elements i.e. by providing functions which can be entered into an Excell spreadsheet in the same way as the functions that come with Excel out of the box. The hope was that some person or persons who knew how to put a user friendly spreadsheet together would be able to take these "engine" functions and assemble a sheet the average brewer could benefit from. That seems to be harder to do than I had hoped.
 
That seems to be harder to do than I had hoped.

Yes sir it has.

I’m hoping for a rough draft adaption if your functions into a formatted brewing sheet by the end of the month but it has been slow going.

Trying to eek out the time required has been a bit tough.
 
The Gen II approach (don't think we can glorify it to the extent of calling it a "specification") is to use robust models for everything in the mash (water, alkalinity, additions, grains) and thereby eliminate the inaccuracies that arise when corners are cut for simplicity and when empirical approaches are used or, at least, to do this to the extent possible. If we have not taken measurements on a grain, for example, we will have to use an empirical approach to obtaining the grain's characteristics such as comparing it to a similar grain or using measurements made by someone else. Thus practically we can seldom entirely eliminate empiricism in the grain model but we can eliminate it from the remainder of the process. Our results are thus improved relative to programs that model the grains empirically and use empirical or approximate models for the chemistry.

The acids, bases, water and alkalinity are all pretty straight forward so the whole thing turns on the
q = a1 * (pHz - DI pH) + a2 * (pHz - DI pH)^2 + a3 * (pHz - DI pH)^3
model for charge change on malt. I tried to handle this in the same way I handled the other elements i.e. by providing functions which can be entered into an Excell spreadsheet in the same way as the functions that come with Excel out of the box. The hope was that some person or persons who knew how to put a user friendly spreadsheet together would be able to take these "engine" functions and assemble a sheet the average brewer could benefit from. That seems to be harder to do than I had hoped.

I'll probably come off as an arse, and thanks for all of those functions BTW, but several things come to mind:

1.) Why can't/haven't you, AJDelange, made a user friendly spreadsheet using your own functions? (Write one yourself! Your functions aren't quite as usable/accessible as you might think!)
2.) Why are these functions tied to an Excel spreadsheet and not made generic enough to use from any programming environment? (Code the functions in an environment independent way... i.e. not tied to excel)
3.) The code itself is atrocious. Names with special meanings and one letter variables, unused functions, etc... (This just requires some practice with coding, preferably in an OOP language!)
4.) The basic algorithms and explanations for these function are not present and require knowledge of water chemistry. I know there's some explanation in the documentation and some comments but it's not enough. One has to go to your website and read and understand your alkalinity papers, etc... (Write a book such that a child could understand! Your 1990's era papers on Alkalinity are well written!)

There, I said it. Many and various apologies if I've offended you.
 
If you don't use color, how do you get the acidity of the grain?

Riffe's spreadsheet calculates the Grist pH by using an assumed DI pH (or in the case of the savvy, a weighted user input that sums all the DI pH values for at the very least the base malts) and the grist acidity, which comes from color and the grist fraction of each malt.

If you eliminate the latter, the Grist pH will just be the combined DI pH of the grist, which doesn't say much about how the malt will affect the Grist pH.
Derek the source of the confusion may stem from the fact that ezRecipe now has an option that relies on the input of valid DIpH values for each grain. It does not attempt to predict the DIpH of the grains based on AJ's voltmeter functions. Although you can enter those DIpH values as they become available. I agreed Riffe's spreadsheet uses an assumed DIpH value that is based solely on grain color. The override I mentioned lets you enter an alternate DIpH value when you feel the assumed DIpH value is too low or too high.

Keeping in mind that ezRecipe is meant to be a full-featured beer recipe design tool that is powerful and easy to use. I wanted it's brewing water and mash pH prediction feature to be as accurate as possible without overwhelming the end user. I guess it's fair to say that ezRecipe v2.01 is a consumer of Gen II DIpH values and of DIpH values confirmed by means of actual single or multi-point titration testing.
 
Last edited:
Derek the source of the confusion may stem from the fact that ezRecipe relies on valid DIpH values for each grain for input. It does not attempt to predict the DIpH of the grains. I agreed Riffe's spreadsheet uses an assumed DIpH value based on solely on grain color. The override I mentioned lets you enter a different DIpH value when you feel the assumed DIpH value is too low or too high.

Keeping in mind that ezRecipe is meant to be a full-featured beer recipe design tool that is powerful and easy to use. I wanted it's brewing water and mash pH prediction features to be as accurate as possible without overwhelming the end user.

I don't think there is really any confusion on my part. I don't mean to imply you are confused either but let's reference Riffe:

Grist pH = DI pH - (0.0337 * (∑ f * A))

So say for instance we have an all pilsner grain bill. Color is 2.0L. MpH assumes 5.72 for DI pH. For Riffe:

Grist pH = 5.72 - (0.0337 * (-1.9 + (1 *2))) = 5.717

Now let's assume we can input our own DI pH of 5.80 (which we can):

Grist pH = 5.80 - (0.0337 * (-1.9 + (1 *2))) = 5.797

Now let's remove the color based acidity proxy (which it sounds like you have implemented):

Grist pH = 5.80 - (0.0337 * 1) = 5.766

Is this going to be a huge discrepancy? not in this scenario, but what about when we add different malts?

Let's try the same grain bill but with 5% cara malt (11L at 5.19 D|I pH) and 5% roast malt (350L at 4.69 DI pH. First we use Riffe:

Grist pH = DI pH - (0.0337 * (∑ f * A))

f * A (Pilsner) = 0.9 * (-1.9 + (1 * 2)) = 0.09
f * A (Cara) = 0.05 * (5 + (0.453*11)) = 0.5
f * A (Roast) = 0.05 * 42 = 2.1

Grist pH = 5.72 - (0.0337 * 2.69) = 5.629

Now let's assume we can input our own DI pH of 5.71 (which we can):

Grist pH = 5.71 - (0.0337 * 2.69) = 5.623

Now let's remove the color based acidity proxy (which it sounds like you have implemented):

Grist pH = 5.71- (0.0337 * 1) = 5.680


I certainly don't want to misrepresent what you are doing. I'm just trying to help and make sure you aren't missing a key element.
 
Last edited:
Derek, I appreciate your taking the time to help me check out the calculations. I think I've entered your test scenario correctly in both ezRecipe and Brewers Friend which I am using to regression test my new changes. For my results, I used 12 gallons of strike water and 100% RO water with an alkalinity of 13 ppm as CaCO3 without any salt or acid additions.

I'm sure I've read here in several threads that Brewers Friend has implemented the brewing water chemistry correctly. That's why I chose to use it to compare my calculations with.

ez pH Test Batch1.jpg

ez pH Test Batch2.jpg



ez pH Test Batch4.jpg

ez pH Test Batch3.jpg
 
Last edited:
Derek, I appreciate your taking the time to help me check out the calculations. I think I've entered your test scenario correctly in both ezRecipe and Brewers Friend which I am using to regression test my new changes. For my results, I used 12 gallons of strike water and 100% RO water with an alkalinity of 13 ppm as CaCO3 without any salt or acid additions.

I'm sure I've read here in several threads that Brewers Friend has implemented the brewing water chemistry correctly. That's why I chose to use it to compare my calculations with.

View attachment 607265
View attachment 607268


View attachment 607270
View attachment 607269

Here is what I got with similar parameters:

1.JPG
2.JPG
3.JPG
 
Here is what I got with similar parameters:
Ah ok rounded up I see you have 5.71 pH where ezRecipe and Brewers Friend have 5.76 pH. There's that pesky 0.05 pH discrepancy again. I'd like to know your thoughts on what is causing the difference between your mash pH prediction and Brewers Friend's prediction? I enter my RO water at pH 7 as having 8 ppm sodium, 4 ppm calcium chloride and 1 ppm sulfate with 13 ppm as CaCO3 total alkalinity.
 
Last edited:
Ah ok rounded up I see you have 5.71 pH where ezRecipe and Brewers Friend have 5.76 pH. There's that pesky 0.05 pH discrepancy again. I'd like to know your thoughts on what is causing the difference between your mash pH prediction and Brewers Friend's prediction? I enter my RO water at pH 7 as having 8 ppm sodium, 4 ppm calcium chloride and 1 ppm sulfate with 13 ppm as CaCO3 total alkalinity.

I think you are missing an acidity term in the malt parameters. Any equation that tries to predict mash pH is going to directly calculate or approximate malt acidity as well as use it’s DI pH.

I look a little deeper into the brewers friend calcs later.
 
I think you are missing an acidity term in the malt parameters. Any equation that tries to predict mash pH is going to directly calculate or approximate malt acidity as well as use it’s DI pH.

I look a little deeper into the brewers friend calcs later.
Ok sounds good Derek thank you.
 
Yes indeed they can when the full understanding and/or application of the chemistry is not incorporated.

In other words, if you've got a great and factual calculation for a part of the chemical reaction and haven't accounted for other aspects of that reaction, then you are no better off than an empirical estimate.

Sorry guys, I'm just in this thread to clean up some nastiness, but I'd like to comment on the statements above. In the past, I've been in the embarrassing position of defending a mathematical solution to some real-world measurements, when ultimately the empirically-derived table lookup was just better. I now know that in the real world there are confounding variables that the math doesn't appreciate, but the measured data certainly does :)

It's possible I'm misinterpreting the convo here, and if so sorry.
 
Sorry guys, I'm just in this thread to clean up some nastiness, but I'd like to comment on the statements above. In the past, I've been in the embarrassing position of defending a mathematical solution to some real-world measurements, when ultimately the empirically-derived table lookup was just better. I now know that in the real world there are confounding variables that the math doesn't appreciate, but the measured data certainly does :)

It's possible I'm misinterpreting the convo here, and if so sorry.

The only aspect of pH estimation that is going to be influenced negatively by the user is grain input and water source input.

The math is bulletproof and if fed good information, will be spot on all the time, much more so than empirically derived formulas.

What I mean by that is that we can estimate, with neglible error, the acid/base characteristics of the malt, source water, dilution water, sparge water, Ca and Mg salts, Baking Soda, and liquid acids.

This issue is getting good info for malts and source water and then getting someone to enter it correctly.
 
Last edited:
Any equation that tries to predict mash pH is going to directly calculate or approximate malt acidity as well as use it’s DI pH.

Unless it exclusively uses base 10 logs for malt to malt and grain to grain pH interactions, in which case it has no need for either calculating or approximating malt acidity. The proof that this works is that my spreadsheet, which involves zero malt acidities and has no need for them, comes up with mash pH solutions that are quite highly in line with the solutions of those that require the difficult and often questionable calculation and interaction of malt acidities.
 
Unless it exclusively uses base 10 logs for malt to malt and grain to grain pH interactions, in which case it has no need for either calculating or approximating malt acidity. The proof that this works is that my spreadsheet, which involves zero malt acidities and has no need for them, comes up with mash pH solutions that are quite highly in line with the solutions of those that require the difficult and often questionable calculation and interaction of malt acidities.

How do you estimate each malts DI pH? The answer is color. By you, I mean you personally, and MME, not the royal we.

If I don’t input a malt color to your sheet it has no valid output. That means it’s color based and estimates the malts acidity using color. That’s not a dig at you or your sheet. It’s a fact.

Your base 10 log thing is a fancy way of finding the weighted contribution to DI pH for each grain. I went over this in some previous post. No offense to you but your log base 10 thing is smoke and mirrors. It doesn’t do what you think it does.

I’m going to start a new thread tomorrow and post some sheet to sheet analysis and try to put to bed some misconceptions and try to make some comments on what works and why different sheets give the results they do.
 
I like your description of what a grain color driven calculation is. If color is involved in a calculation your talking a color based formula.

We should compare our results using 3 recipes. For a light, a dark and a medium colored beer. Then see what our mash pH predictions look like. We’d have to all use the same water profiles in our recipes.
 
Last edited:
Derek please include me I’m anxious to put ezRecipe v2.01 up against each other’s predictions.

Will do.

The plan will be to decide on 2 sets of theoretical input data. They will mimic what I ran through today: a base only and base, Cara, and roast grain bill.

I’ll get an unaltered output from each spreadsheet. Then I normalize all outputs for a specific set of DI pH values for each grain.

It will be a Grist pH only data set. We’ll see how everyone stacks up analytically and run some basic analysis on the outputs. See who is similar stock and see how altering DI pH user inputs brings everyone together.
 
I like your description of what a grain color driven calculation is. If color is involved in a calculation your talking color based.

That’s the long and short of it. If your sheet doesn’t work without a grain color input, it uses color as an acidity proxy in some way shape or form.
 
Will do.

The plan will be to decide on 2 sets of theoretical input data. They will mimic what I ran through today: a base only and base, Cara, and roast grain bill.

I’ll get an unaltered output from each spreadsheet. Then I normalize all outputs for a specific set of DI pH values for each grain.

It will be a Grist pH only data set. We’ll see how everyone stacks up analytically and run some basic analysis on the outputs. See who is similar stock and see how altering DI pH user inputs brings everyone together.
This is going to be fun.
 
That’s the long and short of it. If your sheet doesn’t work without a grain color input, it uses color as an acidity proxy in some way shape or form.

Let's try the same grain bill but with 5% cara malt (11L at 5.19 D|I pH) and 5% roast malt (350L at 4.69 DI pH. First, we use Riffe:

Grist pH = DI pH - (0.0337 * (∑ f * A))

f * A (Pilsner) = 0.9 * (-1.9 + (1 * 2)) = 0.09
f * A (Cara) = 0.05 * (5 + (0.453*11)) = 0.5
f * A (Roast) = 0.05 * 42 = 2.1

Grist pH = 5.72 - (0.0337 * 2.69) = 5.629

Now let's assume we can input our own DI pH of 5.71 (which we can):

Grist pH = 5.71 - (0.0337 * 2.69) = 5.623

Now let's remove the color based acidity proxy (which it sounds like you have implemented):

Grist pH = 5.71- (0.0337 * 1) = 5.680
So @RPIScotty as you have been saying eliminate color from the equation completely and it's no longer color based. Then Gen II mash pH predictions will be able to work without any influence from color. This shouldn't be too hard to get in with the next release.
 
Back
Top