DapperCalc contains various calculations that power DapperBrew. This work is ongoing. Calculations may be incomplete, or incorrect.
- abv
- abw
- plato2sg
- sg2plato
- aau
- utilization
- ibu
- mcu
- srm
- sg2gp
- gp2sg
- real extract
- calories
- apparent attenuation
- real attenuation
- dilution calc
- specific gravity to gravity pnits
- water addition
- malt addition
- shrinkage
- evapPerHour
- totalBoilLoss
- postBoilVolume
- postBoilGravity
- weight to volume
- shrinkage
- refractometer reading adjustment
- hydromteter temp adjust
- yeast starter
- sg2plato ⇒
number
Convert specific gravity (sg) to plato
- plato2sg ⇒
number
Convert plato to specific gravity (sg)
- originalExtract ⇒
number
Calculate original extract from original gravity.
- apparentExtract ⇒
number
Calculate apparent extract from final gravity.
- attenuationCoefficient ⇒
number
Calculate attenuation coefficient from original extract.
- realExtract ⇒
number
Calculate real extract from starting gravity & final gravity.
- abw ⇒
number
Calculates the Alcohol by weight (ABW)
- abv ⇒
number
Calculates the alcohol by volume (abv)
- caloriesAlcohol ⇒
number
Calculate number of calories from Alcohol in 12oz serving.
- caloriesCarbs ⇒
number
Calculate number of calories from carbs in 12oz serving.
- caloriesTotal ⇒
number
Calculate number of calories in 12oz serving.
- aAttenuation ⇒
number
Calculate the apparent attenuation
- rAttenuation ⇒
number
Calculate the real attenuation
- aau ⇒
number
Calculate Alpha Acid Units
- utilization ⇒
number
Hop Utilization (Tinseth)
- ibu ⇒
number
Calculate IBU for hop addition (Tinseth / pellets)
- srm2lovibond ⇒
number
SRM to Lovibond
- lovibond2srm ⇒
number
Lovibond to SRM
- mcu ⇒
number
Calculate Malt Color Units
- srm. ⇒
number
Calculates color (SRM) of eer using standard reference method (Morey equation)
- sg2gp ⇒
number
Convert specific gravity (sg) to gravity points.
- gp2sg ⇒
number
Convert gravity points to specific gravity (sg)
- dilute ⇒
number
Calculate new SG when wort is diluted
- adjustWater ⇒
number
Calculate water needed to reach target gravity.
- adjustExtract ⇒
number
Calculate how much extract (in lb) is needed to reach target gravity.
- evapLossPerHour ⇒
number
Calculate how much volume (gallons) is lost per hour to evaperation
- totalBoilLoss ⇒
number
Calculate total volume (gallons) lost during boil to evaperation
- shrinkage ⇒
number
Volume lost after wort cools (in gallons)
- postBoilVolume ⇒
number
Calculate post boil volume (gallons)
- postBoilGravity ⇒
number
Calculate post boil gravity.
- estimateOriginalGravity ⇒
number
Estimate Original Gravity
- estimateFinalGravity ⇒
number
Estimate Final Gravity Points
- estimateFinalGravity ⇒
number
Estimate Final Gravity (adjusted for simple sugars & mash temp)
Convert specific gravity (sg) to plato
Returns: number
- (-616.868) + (1111.14 x sg) - (630.272 x sg^2) + (135.997 x sg^3)
Param | Type | Description |
---|---|---|
sg | number |
the specific gravity (sg) |
Example
// returns 21.1
sg2plato(1.088);
Convert plato to specific gravity (sg)
Returns: number
- plato / (258.6 -((plato / 258.2) x 227.1)) + 1
Param | Type | Description |
---|---|---|
plato | number |
plato number to be converted |
Example
// returns 1.074
plato2sg(18);
Calculate original extract from original gravity.
Returns: number
- OE = -668.962 + (1262.45 * OG ) - (776.43 * OG^2) + (182.94 * OG^3)
See: Dr. Michael Hall article, Zymurgy, Summer 1995
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
Example
// returns 21.1
originalExtract(1.088);
Calculate apparent extract from final gravity.
Returns: number
- AE = -668.962 + (1262.45 * FG ) - (776.43 * FG^2) + (182.94 * FG^3)
See: Dr. Michael Hall article, Zymurgy, Summer 1995
Param | Type | Description |
---|---|---|
fg | number |
final gravity (fg) |
Example
// returns 3.07
apparentExtract(1.012);
Calculate attenuation coefficient from original extract.
Returns: number
- q = .22 + (.001 * OE)
See: Dr. Michael Hall article, Zymurgy, Summer 1995
Param | Type | Description |
---|---|---|
oe | number |
original extract (oe) |
Example
// returns 3.07
attenuationCoefficient(21.1);
Calculate real extract from starting gravity & final gravity.
Returns: number
- RE = ((q * OE) + AE) / (1 + q)
See
- Dr. Michael Hall article, Zymurgy, Summer 1995
- (not currently used) hbd.org/ensmingr
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// returns 6.5697
realExtract(1.088, 1.012);
Calculates the Alcohol by weight (ABW)
Returns: number
- (abv x 0.79336) / fg
Param | Type | Description |
---|---|---|
og | number |
The original gravity (og) |
fg | number |
The final gravity (nfg) |
Example
// returns 7.23
abw(1.088, 1.019);
Calculates the alcohol by volume (abv)
Returns: number
- abw * (FG / .749);
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// returns 10.2
abv(1.089, 1.012);
Calculate number of calories from Alcohol in 12oz serving.
Returns: number
- 1881.22 * fg * ((og - fg) / (1.775 - og))
See: www.homebrewersassociation.org
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// returns 210.61
caloriesAlcohol(1.088, 1.012);
Calculate number of calories from carbs in 12oz serving.
Returns: number
- 3550.0 * fg * ((0.1808 * og) + ((0.8192 * fg) - 1.0004))
See: www.homebrewersassociation.org
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// returns 91.04
caloriesCarbs(1.088, 1.012);
Calculate number of calories in 12oz serving.
Returns: number
- calories from alcohol + calories from carbs
See: www.homebrewersassociation.org
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// returns 301.65
caloriesTotal(1.088, 1.012);
Calculate the apparent attenuation
Returns: number
- 100 x (1 - (°Pf / °Pi))
See: hbd.org/ensmingr
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// return 85.3
aAttenuation(1.088, 1.012);
Calculate the real attenuation
Returns: number
- 100 x (1 - (real extract / °Pi)
See: hbd.org/ensmingr
Param | Type | Description |
---|---|---|
og | number |
original gravity (og) |
fg | number |
final gravity (fg) |
Example
// return 68.9
rAttenuation(1.088, 1.012);
Calculate Alpha Acid Units
Returns: number
- weight x Alpha Acid Percentage
Todo
- Add imperial unit option (grams)
Param | Type | Description |
---|---|---|
weight | number |
weight of hops (in oz) |
aa | number |
Alpha Acidic percentage |
Example
// returns 18
aau(1.5, 12);
Hop Utilization (Tinseth)
Returns: number
- utilization = bigness factor x boil time factor
See: realbeer.com
Todo
- Add rager scale option
Param | Type | Description |
---|---|---|
time | number |
time left in boil (minutes) |
gravity | number |
Specific gravity (sg) of pre-boil wort |
Example
// returns 0.2348476097710606
utilization(60, 1.048);
Calculate IBU for hop addition (Tinseth / pellets)
Returns: number
- (aau x utilization x 74.89) / volume
See: howtobrew.com/
Todo
- allow for grams for hops
- allow for liter for volume
- allow for rager scale
- allow for whole hops
Param | Type | Description |
---|---|---|
weight | number |
Weight of hops (oz) |
aa | number |
Alpha acids percentage of hops |
time | number |
time left in boil (minutes) |
gravity | number |
Specific Gravity of wort (pre-boil) |
volume | number |
post boil volume (gallons) |
adjust | number |
percentage to adjust hop utilization |
Example
// returns 63.3
ibu(1.5, 12, 60, 1.048, 5.5);
SRM to Lovibond
Returns: number
- Lovibond = (SRM + 0.76) / 1.3546
See: https://en.wikipedia.org/wiki/Standard_Reference_Method
Param | Type | Description |
---|---|---|
srm | number |
SRM # to be converted |
Example
// return 6.5
srm2lovibond(8);
// return 22.7
srm2lovibond(30);
Lovibond to SRM
Returns: number
- SRM = (1.3546 × lovibond) - 0.76
See: https://en.wikipedia.org/wiki/Standard_Reference_Method
Param | Type | Description |
---|---|---|
srm | number |
Lovibond # to be converted |
Example
// return 8.7
lovibond2srm(7);
// return 30.4
lovibond2srm(23);
Calculate Malt Color Units
Returns: number
- (weight * lovibond) / volume
Todo
- support kg for weight
- support liter for volume
Param | Type | Description |
---|---|---|
weight | number |
weight of grain/fermentable (in lb) |
lovibond | number |
color of grains in lovibond |
volume | number |
batch size (in gallons) including deadspace/trub loss |
Example
// return 5.727
mcu(9, 3.5, 5.5);
Calculates color (SRM) of eer using standard reference method (Morey equation)
Returns: number
- 1.4922 x (MCU ^ 0.6859)
Param | Type | Description |
---|---|---|
...mcuNum | number |
MCU units to covert to SRM. Accepts infinite # of arguments. |
Example
// returns 4.9
srm(5.72);
// returns 6.4
srm(5.72, 2.54);
Convert specific gravity (sg) to gravity points.
Returns: number
- (sg - 1) x 1000
Param | Type | Description |
---|---|---|
sg | number |
The specific gravity (sg) |
Example
// return 88
sg2gp(1.088);
Convert gravity points to specific gravity (sg)
Returns: number
- (gravity points / 1000) + 1
Param | Type | Description |
---|---|---|
gp | number |
Gravitiy points |
Example
// return 1.088
gp2sg(88);
Calculate new SG when wort is diluted
Returns: number
- (returns SG) GP = (Initial Volume * initial GP) / New Total Volume
Param | Type | Description |
---|---|---|
sg | number |
Specific Gravity of pre-diluted wort |
volume | number |
initial volume |
volumeAdd | number |
Volume of water to add |
Example
// return 1.046
dilute(1.054, 6, 1);
Calculate water needed to reach target gravity.
Returns: number
- (volume x sg / target gravity points) - volume
Todo
- support liters for input volume
- support liters for return
Param | Type | Description |
---|---|---|
sg | number |
Current/Specific gravity (sg) |
tg | number |
Target gravity |
volume | number |
current volume (gallons) |
Example
// return .64
adjustWater(1.088, 1.078, 5);
Calculate how much extract (in lb) is needed to reach target gravity.
Returns: number
- lb = (target gravity - sg) x volume / extract gravity points
Todo
- support liters for input volume.
- support kilograms for output volume
Param | Type | Description |
---|---|---|
sg | number |
Current / specific gravity (sg) |
tg | number |
target gravity |
volume | number |
volume (gallons) |
extract | string | number |
'DME', 'LME', or custom gravity point value. |
Example
// return 1.39
adjustExtract(1.078, 1.088, 5, 'LME');
// return 1.14
adjustExtract(1.078, 1.088, 5, 'DME');
// return 1.14
adjustExtract(1.078, 1.088, 5, 46);
Calculate how much volume (gallons) is lost per hour to evaperation
Returns: number
- volume x (percentage lost per hour / 100)
Todo
- option for input volume to be liters
- option for output volume to be liters
Param | Type | Default | Description |
---|---|---|---|
volume | number |
pre-boil volume (gallons) | |
ratePerHour | number |
percentage or voluem lost per hour | |
[rateMeasurement] | string |
"percentage" |
set rate measurement to 'percentage' or 'volume' |
Example
// return 0.60
evapPerHour(6, 10);
// return 0.60
evapPerHour(6, 10, 'percentage');
// return 0.50
evapPerHour(6, .5, 'volume');
Calculate total volume (gallons) lost during boil to evaperation
Returns: number
- evapLossPerHour x (boilTime / 60)
Todo
- support volume input in liters
- support volume output in liters
Param | Type | Description |
---|---|---|
lossPerHour | number |
amount of volume (in lb) lost per hour to evaperation |
boilTime | number |
length of boil (in minutes) |
Example
// return 0.90
totalBoilLoss(.60, 90);
Volume lost after wort cools (in gallons)
Returns: number
- volume x (percentage/100)
Todo
- support input volume in liters
- support return volume in liters
- support boilLoss in liters
Param | Type | Default | Description |
---|---|---|---|
volume | number |
pre-boil volume (gallons) | |
boilLoss | number |
Amount of volume (gallons) lost to boil. | |
[percentage] | number |
4 |
percentage the wort shrinks due to cooling |
Example
// return 0.24
shrinkage(7, 0.90);
// return 0.15
shrinkage(7, 0.90, 3);
Calculate post boil volume (gallons)
Returns: number
- start_volume - (boil_loss + shrink_loss)
Todo
- support input startVal in liters
- support input boilLoss in liters
- support input shrinkLoss in liters
- support return value in liters
Param | Type | Description |
---|---|---|
startVol | number |
Starting volume pre-boil (gallons) |
boilLoss | number |
volume loss to boil (gallons) |
shrinkLoss | number |
volume loss to shrinking during cooling (gallons) |
Example
// return 6.86
postBoilVolume(7, 0.90, 0.24)
Calculate post boil gravity.
Returns: number
- (starting_volume x gravity_points) / final_volume
Todo
- support starting volume in liters
- support final volume in liters
Param | Type | Description |
---|---|---|
startVol | number |
Starting volume (gallons) |
sg | number |
starting gravity (sg) |
finalVol | number |
Final volume (gallons) |
Example
// return 1.072
postBoilGravity(7, 1.059, 5.71)
Estimate Original Gravity
Returns: number
- (gravityPoints * efficiency) / volume
Todo
- support liters
Param | Type | Description |
---|---|---|
gravityPoints | number |
Total gravity points of fermentables |
sugarPoints | number |
Total gravity points from sugars (dextrose, etc) |
efficiency | number |
(mash or brewhouse) |
vol | number |
into fermentor (if brewhouse eff) or pre-boil vol (if mash eff) |
Example
// return 1.061
estimateOriginalGravity(429, 46, 75, 6)
Estimate Final Gravity Points
Returns: number
- Final GP = (1 - (attenuation)) * gravityPoints
Todo
- allow to adjust center temp & slope %
Param | Type | Description |
---|---|---|
attenuation | number |
Attenuiation % from yeast |
gravityPoints | number |
Gravity points |
rounded | bool |
if return value should be rounded (optional) |
Example
// return 13.5
estimateFinalGravity(75, 54)
// return 14
estimateFinalGravity(75, 54, true)
Estimate Final Gravity (adjusted for simple sugars & mash temp)
Returns: number
- FG = (1 - (attenuation x .01)) * GP
Param | Type | Description |
---|---|---|
grainPoints | number |
Total gravity points from grains (exclude sugars like dextrose) |
sugarPoints | number |
Total gravity points from sugars (dextrose, etc) |
attenuation | number |
% from yeast |
mashTemp | number |
(optional) |
Example
// return 1.061
estimateFinalGravity(54, 17, 75, 154)