RPIScotty, would it be fair to say that (despite their differences in output) perhaps as many as 4 (or possibly more) of these software packages are essentially built upon quite similar (if not the same) engine(s)?
My initial guess would be that an application of statistical analysis upon all of them would be likely to group the ~4 similar to same engine packages more closely together than the others which are not built upon the same underlying math model.
Well, we should separate out Scenario 1 because it represents the "off-the-shelf" condition of each sheet. In that scenario, you see relative parity between everyone except me for Grain Bill 1, and that is really down to my European Pilsner DI pH setting being higher in stock form. For Grain Bill 2, we see relative parity between everyone except MME, and I believe that is down to how your Log Base 10 method allocates the DI pH distribution. For Grain Bill 3, you see EZ water go a bit high and MME go a bit low. For EZ Water, I think this is explained by it only using color based calcs for Crystal malts, which means it doesn't seem to account fully for Roasted malt acidity. For MME, it seems the same comment about the DI pH distribution is in effect here as well.
For Scenario 2, we again see relative parity in Grain Bill 1. For Grain Bill 2, it becomes pretty obvious which programs are bypassing malt acidity in the calculations, namely EZ Water, BF, and ezRecipe. BW and MME are grouped together here, and MpH and my 2 variations as well, but it's clear that BW, MME, MpH, and my sheets are accounting for both DI pH and malt acidity. The same holds true for Grain Bill 3.
So for Scenario 1 and Scenario 2, we see that all the sheets perform similarly with a pale grist. It's obvious that BW and MME are handling Roasted malts in a way that makes them perform similarly. EZW, BF, and ezR are performing similarly because when they use inputs for DI pH, they bypass acidity calcs altogether. MpH and my sheets perform similarly because they account for DI pH and acidity.
Things get pretty squirrely after that. My Brewing Engine, BF, and ezRecipe are the only programs where pH didn't vary with volume change, although MME and MpH didn't change drastically.
Every sheet seems to be handling mineralization quite differently. Sauermalz performance was pretty even across the board and if I spent a little more time making 100% sure that the inputs were equal in Scenario 8, i'm pretty sure it would be better.