A Modified IBU Calculation (Especially for Late Hopping and Whirlpool Hops)

The predicted IBU contribution when adding hops at flameout is usually zero.  This is in conflict with widespread experience, which shows that adding hops at flameout does add significant bitterness.  This blog post proposes a modification to the Tinseth IBU formula to account for hops added late in the boil and/or at flameout.  This new metric is referred to as “maximum IBU” (or “mIBU”), for reasons explained below.

If one takes a standard formula for predicting IBUs, such as Tinseth’s, hops additions at flameout contribute nothing to the final IBU measurement.  Tinseth had “access to some handy tools and knowledgeable friends at the USDA hop labs and the Flavor Perception labs at Oregon State University,” and he has “had quite a few worts and beers analyzed.” His formula is very widely used, presumably because it does as good or better a job at predicting bitterness levels compared with other available formulas.  So it’s worth taking his work and formula very seriously.

However, a quick glance at various internet sources indicates that this is one area where formulas and observations do not always line up.  In an excellent BYO article from Mar/Apr 2013, it is reported that large systems (15 bbl = 465 G = 1760 liters) get 16% utilization from hops added at flameout, while smaller systems (11 G or 42 liters) get around 10% utilization.  In a discussion at probrewer, one user says “Matt Brynildson, a former hop chemist, claims to get 22% whirlpool utilization at Firestone Walker (50-bbl system) and to have gotten 15% whirlpool utilization on a 10-bbl brewpub system”.  In another discussion at probrewer, utilization rates between 13% and ~30% are reported for whirlpool additions.  The Beersmith software, based on a discussion from 2013, treats hops at flameout differently from hops added before flameout.  As a result, hops added at 1 minute before flameout will contribute less predicted bitterness than hops added at flameout, which is counter-intuitive.  Brad Smith of Beersmith says in this discussion that “at least this is a step in the right direction”, compared with having flameout hops contribute no bitterness at all.  In short, we have reported post-flameout utilization (and consequent bitterness) ranging from 10% to 30%, and a lot of numbers in between.  There is apparently some utilization happening after flameout; it’s just not quite clear how much. The question then becomes how to model post-flameout utilization in the prediction of IBUs.

Hop utilization decreases as a function of temperature, with more utilization at boiling and less utilization at lower temperatures.  (I’ve seen claims that utilization drops to zero at around 180°F (82°C), and claims that the decrease in utilization follows an Arrhenius equation.  In a separate blog post, I look at relative utilization as a function of temperature.)  It’s also very clear that when the gas (or electricity) of the boil is turned off, the temperature of the wort doesn’t instantaneously drop to room temperature.  Therefore, there is additional utilization happening after flameout, and the degree of this additional utilization depends on when the hops were added and how quickly the wort cools.  It seems possible to take Tinseth’s formula for IBUs, combine it with a measure of how utilization is affected by temperature, and calculate the additional IBUs that occur after flameout… and that’s exactly what this section does.

Tinseth’s IBU Formula
I’ll use Glenn Tinseth’s formula for predicting IBUs in this post, because this formula is “considered very accurate” (BeerSmith: Calculating Hop Bitterness: How much Hops to Use?), but also simply because I haven’t yet worked as much with the formulas from Rager or Garetz.  Tinseth’s formula is as follows:

IBU = U(BG,t1) × D(AA,W,V) [1]
U(BG,t1) = b(BG) × f(t1) [2]
D(AA,W,V) = AA × W × 1000 / V [3]
b(BG) = 1.65 × 0.000125(BG − 1) [4]
f(t1) = (1 − e(-0.04t1)) / 4.15 [5]

where U(BG,t1) is the hop utilization (which is a function of both boil gravity and time), D(AA,W,V) is the density of alpha acids in the wort (in mg/l, a function of the alpha-acid rating, weight of hops, and volume of wort), b(BG) is a “bigness factor” that is a function of the boil gravity (BG), f(t1) is a “time factor” that predicts the isomerization of alpha acids as a function of time (in minutes) (t1), AA is the alpha-acid rating (in percent) of the hops added, W is the weight of the hops (in grams), and V is the volume of the wort (in liters).  (Generally I’ll try to use both metric and Imperial units in this post… according to WordPress, about half of the people reading this are from the U.S. and half are not.  In this paragraph, I’ll use only metric for simplicity.)  I use t1 to denote time, instead of just t, because another time variable, t2, will be used later.  Tinseth suggests “fiddling with 4.15 if necessary to match your system; only play with the other three [constants (1.65, 0.000125, and -0.04)] if you like to muck around.”  One complication is that time is usually measured from the point at which hops are added until flameout.  Because of this, any hops that are in the wort after flameout are predicted to contribute nothing to the final IBU value, even though they are in near-boiling wort for some amount of time.

I’ll refer to U(BG,t1) simply as “utilization”; this is the utilization that we believe also decreases as a function of temperature, which isn’t indicated in the current formula.  The utilization is a unitless number less than or equal to 1; usually it’s below 0.3.  Utilization normally represents the relative amount of alpha acids added to the wort that (a) get converted into isomerized alpha acids and (b) end up in the finished beer.  The Tinseth formula (and other formulas) have a direct relationship between utilization, isomerized alpha acids, and IBUs.  This is an oversimplification, since other hop components (oxidized alpha and beta acids, and polyphenols) are not part of the utilization equation, but they still contribute to bitterness and the measured IBU value.  The utilization in these IBU formulas therefore implicitly includes the effects of these other components on the IBU value.  This oversimplification usually works out fairly well, though, for typical hop rates and boiling times.

Plot of Utilization
We can plot the utilization in Equation [2] as a function of time, starting at time 0 and increasing with the length of time that the hops are in the kettle:

Figure 2. Utilization as a function of time, with time increasing from left to right. The utilization increases as the boil gravity (BG) decreases.

Figure 1. Utilization as a function of time, with time increasing from left to right. The utilization increases as the boil gravity (BG) decreases.

This function shows the cumulative effect of utilization after the hops have spent a certain amount of time in the kettle, from t1=0 (hops addition) until some final time.  If we add hops at 40 minutes before flameout to a wort with gravity 1.060, the hops spend 40 minutes in the boiling wort, and cumulative utilization during those 40 minutes is 0.185.  (Here we’re assuming that the utilization drops immediately to zero at flameout.)  We can find the value of 0.185 by simply looking at the utilization value at the 40-minute mark for a boil gravity of 1.060.  Time 0 is when hops are added to the pot, and the selected time (e.g. 40 minutes) is when we remove the hops from the kettle (perhaps at flameout) and/or bring utilization down to zero.

Instantaneous Utilization
Next, we can look at the instantaneous effect of hop utilization at any point in time, by taking the derivative of the utilization function:

U(BG,t1) = 1.65 x 0.000125(BG−1) × (1 − e(-0.04t1)) / 4.15 [6]
dU(BG,t1)/dt1 = -1.65 x 0.000125(BG−1) × -0.04e(-0.04t1)/4.15 [7]

where the formula for U(BG,t1) in Equation [6] is the same (but simplified) utilization function in Equation [2], and dU(BG,t1)/dt1 in Equation [7] is the derivative of this utilization with respect to time.  The instantaneous utilization function in Equation [7] can be plotted like this:

Figure 2: Instantaneous utilization as a function of time.

Figure 2: Instantaneous utilization as a function of time.

This graph tells us how much hop utilization is happening, for example, at exactly the 40-minute mark (in this case, 0.001873 utilization/minute for BG 1.060).  (Note that the rate of utilization is highest when the hops are first added, and this rate decreases as the hops stay in the boil longer.  Tinseth explains that the shape of the utilization curve is because “alpha acid isomerization is a first order, or more likely, a pseudo first order chemical reaction.“)  If we integrate all of these instantaneous utilization values, from time 0 (when we add the hops) up to the time when we remove the hops, we end up with the original utilization value.  For example, if we have a hops addition at 40 minutes for a boil gravity of 1.060, we can compute the area under the instantaneous-utilization curve from 0 to 40 (shown below in green), and that area will equal the total utilization at 40 minutes from the original utilization formula (0.185).

Figure 4: Area under instant utilization curve, up to 40 min

Figure 3: Area under instantaneous utilization curve, up to 40 min

We can also integrate only over a specific time range, to determine how much utilization is happening during a particular period of time; for example, we can look at the utilization between 40 minutes and 50 minutes for a boil gravity of 1.060, which is the area below shown in blue:

Figure 5: Area under instant utilization curve, between 40 and 50 min.

Figure 4: Area under instantaneous utilization curve, between 40 and 50 min.

Additional Utilization
Let’s pretend for a minute that when flameout happens, we forget to turn off the heat for exactly 10 minutes and the boil keeps going.  When we realize our mistake, we immediately and quickly cool the wort (which has an average boil gravity of 1.060).  In this case, utilization keeps happening after our intended flameout; what was a hops addition at 40 minutes becomes really a hops addition at 50 minutes, because the hops are in the boiling wort for an additional 10 minutes:

Figure 6: Area under instant utilization curve, from 0 to 50 min.

Figure 5: Area under instantaneous utilization curve, from 0 to 50 min.

We can look at the utilization of our intended time (40 minutes) and our extra time (10 minutes, between 40 minutes and 50 minutes) separately, by finding the areas under the two separate curves.  In this case, the utilization up to 40 minutes is 0.185 (just as we’d expect), and (by integration of the instantaneous utilization over the range from 40 to 50 minutes) the additional utilization during the final 10 minutes is 0.015.  The total utilization is therefore 0.200.  What really happens (in most cases, when we’re paying attention) is that we do remember to turn off the heat at flameout, but the wort remains hot for some period of time.  We’re not getting maximum utilization after flameout, but we are getting some while the wort is still hot.

Decrease in Utilization as a Function of Temperature and Time.
After flameout, utilization is happening (unless we immediately and very quickly cool the wort), but not at the full rate.  It would be nice to have some function of utilization that shows how it decreases after flameout, as the temperature slowly decreases. We can create such a function from two functions: (a) the temperature of the wort as a function of time after flameout, and (b) the degree of hop utilization as a function of temperature.

If we measure the temperature of the wort after flameout at one-minute intervals, we can map these data points to a function.  Figure 6 shows such a series of measurements and the resulting function, where a straight line provides a good fit to the observed data.

Figure 7: Temperature as a function of time.

Figure 6: Temperature as a function of time after flameout, without forced cooling. This graph shows the temperature of 6 G of wort as it cools in an open kettle.  A line is also fitted to the data points, and this line provides a pretty good fit to the data.

In this case, the line is described by T(t2) = -1.344t2 + 210.64, where T is the estimated temperature in Fahrenheit, -1.344 is the rate of change (degrees per minute), t2 is time after flameout (in minutes), and 210.64 is the approximate temperature at flameout (when t2=0, in °F). (I live at 255 feet (78 meters) above sea level, so I should see water boil at pretty close to 212°F (100°C).  I have always observed, however, a quick drop in temperature as soon as the heat is turned off, so I think a predicted value of 210.64°F (99.24°C) isn’t terribly far off.)  If you’re working in Celsius, the equivalent function is T(t2) = -0.74667t2 + 99.244.

Next, we need a function that describes the relative amount of utilization as a function of temperature, with utilization at boiling defined to have a value of 1.0.  Based on the analysis from this blog post, we can use this function: Urel(T) = 2.39×1011 e-9773/T (where T is temperature in degrees Kelvin).

We can then plot the relative utilization as the temperature decreases after flameout, with 6 G of wort cooling in an open kettle:

Figure 8: Degree of utilization as a function of time.

Figure 7: Degree of utilization as a function of time.

The relative utilization is relative to the amount that would happen at boiling: if the instantaneous utilization at boiling is 0.001873 and the relative utilization at 206°F (96.7°C) is 0.80, then the utilization at this temperature is 0.001873 × 0.80 = 0.001498.

The next formulas summarize the mappings between temperature, time, and degree of utilization, working in Fahrenheit:

Urel(T) = 2.39×1011 e-9773/T degree of utilization as a function of temperature (T is in degrees Kelvin) [8]
T(t2) = -1.344 t2 + 210.64 temperature (in °F) as a function of time, if t2 ≥ 0, for 6G wort in an open kettle. [9]
Urel(t2) = 2.39×1011 e-9773/((5/9)(-1.344 t2 + 210.64)+459.67) degree of utilization as a function of time, if t2 ≥ 0.  Note conversion from °K to °F in the exponent. [10]
Urel(t2) = 1 degree of utilization as a function of time, if t2 < 0 [11]

Equation [8] is the degree of utilization as a function of temperature; Equation [9] is the temperature of the wort as a function of time after flameout.  Equation [10] combines Equations [8] and [9] for time after flameout greater than or equal to 0.  Equation [11] specifies that before flameout (during the boil), the relative degree of utilization is maximum (i.e. the value predicted by the Tinseth formula).

Combining Functions
Now we have a complete picture of instantaneous utilization as a function of time.  Before flameout, we use the instantaneous utilization of Equation [7], where t1 is the amount of time that the hops are in the kettle.  After flameout, we can combine our measure of instantaneous utilization with how much utilization is happening at each instant, by taking the pointwise product of the two formulas.  Since we measure time with two different starting points in the different equations  (when hops are added, t1, and when flameout happens, at which point t2 = 0), we need to convert from one to the other.  If we define tf to be the time, relative to t1, at which flameout happens, then t2t1 − tf.  We can then use t1 and tf in the same formula to measure these two time points on the same scale.  We can write this complete picture with the following formulas:

deg(t1) ⋅ dU(BG,t1)/dt1 = -1.65 x 0.000125(BG−1) × -0.04e(-0.04t1)/4.15 if t1 < tf [12]
deg(t1) ⋅ dU(BG,t1)/dt1Urel(t1 − tf) × (-1.65 x 0.000125(BG−1) × -0.04e(-0.04t1)/4.15) if t1 ≥ tf but
before forced cooling
deg(t1) ⋅ dU(BG,t1)/dt1 = 0 after forced cooling [14]

Going back to our example, let’s say we turn off the heat at 40 minutes (as intended) and let the kettle cool naturally for 10 minutes.  The graph below shows the instantaneous utilization happening at boiling between 0 and 40 minutes (in green), and the instantaneous utilization that happens between 40 and 50 minutes (in blue) that takes into account the temperature decrease after flameout.  The green area is the same as before, but the blue area is reduced relative to Figure 5.

Figure 9: Area under instant utilization, with cooling between 40 and 50 minutes.

Figure 8: Area under instant utilization, with cooling between 40 and 50 minutes.

If we integrate this plot (or function) from flameout until the utilization becomes zero (usually due to forced cooling), we can determine the total utilization that occurs after flameout.  This value can then be added to the utilization that occurs before flameout (our standard formula), and then we can compute the total IBUs that result from the combined utilization, pre- and post-flameout.

Adjustment for Non-IAA Components
Now we get to a tricky part.  The Tinseth equation has only the hops AA rating, hops weight, boil time, wort volume, and specific gravity as inputs.  From these values, it’s estimating the IBU value.  While the concentration of isomerized alpha acids (IAA) is the primary contributor to the IBU value, other factors also influence the IBU (especially at short boil times): oxidized alpha and beta acids, and polyphenols.  These factors can be referred to collectively as non-IAA components, and they’re not explicitly addressed in the Tinseth model.  These non-IAA components do not require isomerization, and so they affect the IBU value quickly and, it seems, their concentrations remain somewhat constant during the boil.  In another blog post, I estimate that the non-IAA components account for a constant 0.044 of the Tinseth utilization function, which is reached at around the 5-minute mark.  In other words, I think that the Tinseth equation underestimates IBU values below 5 minutes, because it doesn’t account for non-IAA components; at 5 minutes and above, the Tinseth utilization function is modeling the combination of both IAA and non-IAA components.  (The Rager equation has a roughly constant utilization of 0.05 between 0 and 5 minutes, which matches pretty well my estimate of 0.044 during this time period.)

Having the Tinseth equation model a combination of IAA and non-IAA components usually doesn’t matter.  In this case, however, we are modeling the degree of alpha-acid utilization as a function of temperature, not the degree of utilization of alpha acids plus non-IAA components.  The primary problem is that the non-IAA components are much less dependent on temperature than the rate of isomerization.  As a further complication, the non-IAA components have a very different time-dependent contribution to IBUs: shortly after time 0 they contribute about 100%, and after that they contribute very little.  It’s difficult to combine this function with a time-independent but temperature-dependent function of relative alpha-acid utilization.

An expedient solution is to set the relative utilization to 1.0 between 0 and 5 minutes.  By doing this, we are implicitly saying that during the first five minutes of the hop addition, all of the IBU contribution is coming from non-IAA components and that they contribute the same amount regardless of temperature.  After five minutes of steeping, the contribution of isomerized alpha acids dominates, and we switch to the temperature-dependent relative utilization of alpha acids.  This is an over-simplification of what’s really happening, but it requires no modifications to the original Tinseth equation, and it corresponds better with our understanding of the various contributions to the IBU value.  If hops are added more than 5 minutes before flameout, this modification has no impact on estimated IBU values, regardless of any post-boil steeping; only close-to-flameout hop additions are impacted.

Final Algorithm
The final formula for measuring IBUs after flameout might get complicated.  We could integrate Equation [13] over the range t2 values, but I expect that the degree-of-utilization formula will change with different setups (e.g. covered vs. uncovered kettle, boil size, etc.) and it will probably be a little bit different for every brewer.  I’m going to be lazy, since we don’t really need the infinite precision that a mathematical formula gives us. Instead, here is an algorithm that uses the same example of the decrease in temperature as a function of time and the degree-of-utilization formula.  It should be easy to replace these formulas with different ones as needed, and the general algorithm will be the same… no (explicit) integration required.  We’ll just use computer magic to compute the area under a curve with an arbitrary degree of precision.  (Note that this expectation of different degree-of-utilization functions in different brewing systems may explain why we get a number of different opinions on how much utilization there is after flameout.  Larger volumes that cool more slowly will get more utilization.)

Here is the algorithm for computing total IBUs, including the contribution of post-flameout utilization, in C-like pseudocode, with precision to at least two decimal places:

// the following code assumes we know the boil gravity (BG), boil volume
// (volume_gallons, in gallons), the weight of hops added (hopsWeight_oz,
// in ounces), the AA value of the hops (AA, in percent, with values from 
// 0 to 100), the time of the hops in the boil (boilTime_min, in minutes), 
// and when (relative to flameout) there is forced cooling (coolTime_min, in
// minutes.)  The forced cooling is assumed here to be instantaneous.
// There are hard-coded functions that express (a) decrease in temperature 
// as a function of time after flameout and (b) relative utilization as a 
// function of temperature.
// Note that temperature is measured in Fahrenheit, not Celsius.
volume_liters = volume_gallons * 3.78541;
hopsWeight_grams = hopsWeight_oz * 28.3495;
AA_maxOne = AA / 100.0;
boilUtilization = computeBoilUtilization(boilTime_min, BG);
postBoilUtilization = computePostBoilUtilization(boilTime_min, BG, coolTime_min);
totalUtilization = boilUtilization + postBoilUtilization;
IBU = (totalUtilization * AA_maxOne * hopsWeight_grams * 1000.0) /
print("total IBUs, including post-flameout, is %f\n", IBU);

procedure computeBoilUtilization(boilTime_min, BG) {
  bignessFactor = 1.65 * pow(0.000125, (BG-1.0));
  boilTimeFactor = (1.0 - exp(-0.04 * boilTime_min)) / 4.15;
  decimalAArating = bignessFactor * boilTimeFactor;

// The formula for temp_degF can (and should) be updated to reflect 
// a brewer's observed temperature decrease after flameout.  
procedure computePostBoilUtilization(boilTime_min, BG, coolTime_min) {
  integrationTime = 0.001;
  decimalAArating = 0.0;
  for (t = boilTime_min; t < boilTime_min + coolTime_min; t = t + integrationTime) {
    dU = -1.65 * pow(0.000125, (BG-1.0)) * -0.04 * exp(-0.04*t) / 4.15;
    temp_degF = (-1.344 * (t - boilTime_min)) + 210.64;
    temp_degK = (temp_degF + 459.67) * (5.0/9.0);
    degreeOfUtilization = 2.39*pow(10.0,11.0)*exp(-9773.0/temp_degK);
    if (t < 5.0) degreeOfUtilization = 1.0;  // account for nonIAA components
    combinedValue = dU * degreeOfUtilization;
    decimalAArating += combinedValue * integrationTime;

For those of you who would like to implement this but aren’t programmers, let me know and I’ll run the numbers and send you the results.  Please let me know by sending an e-mail to the name associated with this blog (no spaces) at yahoo.  There will be some back-and-forth to the communication, but just start by saying that you’re interested in a somewhat different implementation of the formula, and we’ll work it out from there.

Because the instantaneous utilization is greatest when the hops are first added, the effect of bitterness contributions after flameout is more pronounced for late hop additions than for early additions.  If we have 2 oz (56.7 g) of 10% AA hops added at 6 minutes before flameout in 5.25 G (19.87 liters) of wort with specific gravity 1.060, the kettle then cools naturally for an additional 10 minutes as shown by the graph in Figure 6, and we then force-cool the wort quickly, we get 0.0495 utilization predicted for the 6-minute boil and an additional 0.0521 utilization predicted after flameout.  The combined predicted utilization of 0.1016 is about double that of the prediction that doesn’t take into account post-flameout utilization, resulting in a predicted IBU of 29 instead of 14.

For the same case, but with hops added at 60 minutes instead of 6 minutes before flameout, we get 60 IBU predicted by the standard Tinseth formula and 62 IBUs predicted by the combination of boil utilization and post-boil utilization.

As another example, we can add hops at flameout and perform forced cooling at 30 minutes after flameout.  In this case, we get 11% utilization for a wort with boil gravity 1.060, about equal to the 10% flameout utilization of smaller batches reported by others.  We can get 31 IBUs from 2 oz (56.7 g) of 10% AA hops added at flameout in a boil gravity of 1.060 and volume of 5.25 gallons (19.87 liters), with forced cooling after 30 minutes.  If we keep the kettle covered after flameout, the temperature will decrease more slowly, and we will get even more utilization and IBUs from the flameout addition.

What’s in a Name
One problem with this formula for predicting IBUs is that the predicted values will almost always be larger than what we’re used to… sometimes, quite a bit larger.  I like to aim for an IBU:OG ratio (e.g. 1.0) when planning a recipe, and I’ve developed some intuition for what this ratio means in practice using the Tinseth formula.  When the predicted IBU values become larger by some amount, I’ve lost my point of reference.

I’ve decided to name this combined measure of boil and post-boil IBUs “maximum IBU” or “mIBU”, because it represents a (roughly) maximum bound on IBU values in finished beer.  IBUs will drop during fermentation and over time, but mIBU values should be approximately the highest observed IBU values for a batch of beer.  From a discussion at Brewsmith, by user brewfun: “fermentation, filtration and packaging [can] reduce IBU persistence by 85%”… “it’s a lot easier to lose IBUs than to gain them.”  Daniels says that “fermentation factors can affect the amount of iso-alpha-acids that remain in finished beer in a number of ways”, mostly linked with yeast, aging, and clarification (Daniels, Designing Great Beers, pp. 78-79).

Using a different name allows a separation between the IBUs predicted by the Tinseth formula that I’ve grown accustomed to, and these new, larger values.  I will use both terms in my brewing, and hopefully over time I’ll get a sense of the perceived bitterness of mIBU values and an intuitive feeling for the relationship between Tinseth IBUs and mIBUs.  The separation of terms will hopefully avoid confusion.

Decrease in Wort Temperature as a Function of Time
This post has used only a single example of how wort temperature decreases with time.  This set of data was obtained from a 10 G (37.8 liter) kettle with 6 G (22.7 liters) of water in it, uncovered, in a room at around 68°F (20°C).  I’ve since found that measurements of wort under similar conditions yields a close fit to the same linear function.

I’ve also looked at how 6 G (22.7 liters) of wort cools when the lid is left on.  I measured temperatures of wort at one-minute intervals for 15 minutes, with a long temperature probe through a small hole in the kettle lid.  At one minute after flameout the temperature was 208°F (97.78°C); at 15 minutes after flameout, the temperature was 198°F (98.22°C).  This temperature decrease can be modeled pretty well by the formula T(t2) = -0.7268 t2 + 208.88.  I’ve found several times that the temperature decreases really, really quickly from boiling to around 209°F or 210°F (around 98.5°C) in the initial minute, but the decrease in temperature after that is fairly linear for volumes about 5 gallons (20 liters) or more.

I expect other situations to yield somewhat different functions.  In particular, smaller volumes cool much more quickly, and larger volumes cool much more slowly.  Over time it may become clear that there is typical behavior for different batch sizes and degrees of covering, but there is still a large number of possible combinations (batch size, size of kettle opening, ambient temperature).  At any rate, please be aware that the numbers shown in this post depend quite a bit on this function, and you may need a different function to get good predicted values.

Data/Supporting Evidence
I’ve conducted a series of three experiments to evaluate the ideas in this blog post.  The first experiment simply confirmed that I can get measured IBU values that correlate reasonably well with the Tinseth formula when cooling the wort immediately after flameout.  (I think this experiment would have turned out better if I’d used very fresh hops.)  The second experiment looked at the relative degree of utilization as a function of temperature, and provided the reasoning behind Equation 8.  The third experiment compared measured IBU values with values predicted by the Tinseth equation and the mIBU approach.  This experiment confirmed that the mIBU approach yields, for at least this one set of data, better IBU estimates at short (or zero) boil times.  Another result from this experiment was that I needed to account for the age of the beer and the alpha-acid concentration at the start of the boil, in order for the recommended Tinseth scaling factor of 4.15 to provide a good fit to the data.  (If you have multiple hop additions at different times, and the cumulative alpha-acid concentration becomes quite large with subsequent additions, I’m not aware of any IBU model that can account for the decrease in utilization as a function of AA concentration and time… but that’s a separate topic.)

To get measured IBU values, I sent samples to Analysis Laboratory. Scott Bruslind from Analysis Laboratory was very responsive and encouraging, providing a full set of measurements (including gravity, pH, and attenuation, in addition to IBUs) as well as alpha-acid measurements of hops.

This post has presented an algorithm for modifying Tinseth’s IBU formula to predict post-flameout IBU contributions.  In addition to the standard parameters needed to predict IBUs (boil gravity, volume, etc.), this algorithm needs as input (a) a function (or plot) of how the temperature of the wort in the kettle decreases after flameout, and (b) a time at which forced cooling begins.  Forced cooling is assumed to be instantaneous; if you have a lot of wort, additional information (e.g. a wort transfer rate through a counterflow chiller) and modifications may be needed.


2 thoughts on “A Modified IBU Calculation (Especially for Late Hopping and Whirlpool Hops)

  1. Michael Maze

    I converted this to R and played around with it a bit.

    I was getting more or less the same utilization numbers as you but super high ibu numbers, until I turned 1000 into 100 in the following line:

    IBU = (totalUtilization * AA_maxOne * hopsWeight_grams * 1000.0)

    (Is this right?)
    This way If I input 1 oz of 10%AA hops at 1.050 @ 10 minutes in 6 gallons with 10 minutes forced cooling, I get 9 IBUs and 12.6% utilization.
    Makes sense, right?

    At any rate, really helpful – much more so than the “assume 10% utilization if you’re a homebrewer” rule of thumb. I’m going to try to brew a saison with only high AA hops in the hopstand, I’ll see if it will hit the right balance. Thanks for this!

    1. Alchemy Overlord Post author

      This seems close, and the utilization is right, but something seems off… the factor of 1000 is correct in the formula, and I get a larger (m)IBU value than you do. I suspect there’s some issue in converting Imperial units (oz, gallons) to metric, maybe? If I apply the formula as given in the algorithm, with 1.0 oz of 10% AA hops in 1.050 wort @ 10 minutes in 6 gallons, with 10 minutes forced cooling and the cooling function used in the post, I get 15.77 mIBU (compared with the 9 mIBU that you’re getting), with 8.36% utilization in the 10 minutes before flameout and 4.27% utilization in the 10 minutes after flameout. (The combined utilization, 8.36% + 4.27% = 12.63%, is slightly less than in Table A (12.8%), because the algorithm used to generate the table includes an additional consideration that the wort does not cool instantly at forced cooling; the difference in utilization is negligible.) I’m not sure why we’d have the same utilization factor but end up with different IBU values, since that part should be straightforward application of Tinseth’s formula. It’s always possible that I have a bug, but I’ve gone over the code several times now from different angles, and it looks correct to me. Let me know if you get stumped; maybe we can trade code and resolve the difference that way. You can e-mail me at the name of this blog, no spaces, at yahoo. At any rate, I hope the saison turns out well!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s