beer 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/beer.rb +137 -0
  2. metadata +46 -0
data/lib/beer.rb ADDED
@@ -0,0 +1,137 @@
1
+ #
2
+ # = beer.rb
3
+ #
4
+ # A collection of formulas that are
5
+ # useful during beer (and wine) making.
6
+ #
7
+ # Author:: Caleb Phillips <cphillips@smallwhitecube.com>
8
+ # Version:: 2007.05.20
9
+ #
10
+ # == License
11
+ #
12
+ # "THE BEER-WARE LICENSE" (Revision 42):
13
+ # Caleb Phillips <cphillips@smallwhitecube.com> wrote this file.
14
+ # As long as you retain this notice you can do whatever you want
15
+ # with this stuff. If we meet some day, and you think this stuff
16
+ # is worth it, you can buy me a beer in return.
17
+
18
+ module Beer
19
+
20
+ E=2.71828183
21
+
22
+ # Determine original gravity of the wort
23
+ # in the brew kettle from the volume of
24
+ # the fermenter (v_cb), the gravity in
25
+ # the fermenter (og_cb) in gravity points (the 52 in 1.052 SG),
26
+ # and the volume of the pot (v_pt)
27
+ def og_pt(og_cb,v_cb,v_pt)
28
+ (og_cb*v_cb)/v_pt
29
+ end
30
+
31
+ # Calculate utilization percentage for a hop
32
+ # addition given the time of the boil and the
33
+ # gravity in the brew kettle at the time of addition
34
+ def u(og,t)
35
+ og = (og.to_f)/1000 + 1 if og > 2
36
+ 1.65*(0.000125**(og-1))*((1-(E**(-0.04*t)))/4.15)
37
+ end
38
+
39
+ # Calculate the AAU (Alpha Acid Units) contributed by
40
+ # a given hops addition, using the alpha percentage (like 6.5)
41
+ # and the weight in ounces.
42
+ def aau(w,a)
43
+ w*a
44
+ end
45
+
46
+ # Find the IBU (international bitterness units) in
47
+ # a beer given:
48
+ #
49
+ # w - an Array of weights (in ounces)
50
+ # a - an Array of alpha percentages (like 6.5)
51
+ # t - an Array of times (in minutes)
52
+ #
53
+ # For the various hop additions. Also,
54
+ #
55
+ # og_pt - the original gravity of the wort in the brew
56
+ # kettle (in gravity points, the 52 in 1.052 SG)
57
+ def ibu(w,a,t,og_pt)
58
+ ret = 0
59
+ W.each_index{ |i|
60
+ ret += u(OG_pt,T[i])*aau(W[i],A[i])
61
+ }
62
+ ret = ret*75
63
+ ret = ret/V_cb
64
+ ret
65
+ end
66
+
67
+ # Temperature correction for specific gravity
68
+ # for hydrometers calibrated at 59F. Input is
69
+ # in degrees celsius.
70
+ # from: http://www.primetab.com/beer.c
71
+ def sg_correction_c(t)
72
+ t = t.to_f
73
+ if t < 3.98
74
+ -0.000032692*t - 0.000740644
75
+ elsif t < 50
76
+ -0.0008031922 - 0.0000473773*t + 0.000007231263*t*t - 0.00000003078278*t*t*t
77
+ else
78
+ -0.005431719 + 0.0001963596*t + 0.000002661056*t*t
79
+ end
80
+ end
81
+
82
+ # convert degrees fahrenheit to degrees celsius
83
+ def f_to_c(t)
84
+ (t.to_f - 32)*(5.0/9.0)
85
+ end
86
+
87
+ # convert gravity to specific gravity
88
+ def g_to_sg(g)
89
+ 1 + g*0.001
90
+ end
91
+
92
+ # convert specific gravity to gravity
93
+ def sg_to_g(sg)
94
+ 1000*(sg-1)
95
+ end
96
+
97
+ # convert specific gravity to plato
98
+ # from: http://www.primetab.com/beer.c
99
+ # plato is the percentage of sucrose in a water
100
+ # sucrose solution. It was developed by Kurt Balling
101
+ # and Fritz Plato. More information here:
102
+ # http://en.wikipedia.org/wiki/Plato_scale
103
+ def sg_to_p(sg)
104
+ -676.67 + 1286.4*sg - 800.47*sg*sg + 190.74*sg*sg*sg
105
+ end
106
+
107
+ # convert specific gravity to degrees brix. degrees brix
108
+ # is the percentage of sugar. For instance 25 brix means
109
+ # 25 mg of 100 mg are sugar. See here for more info:
110
+ # http://en.wikipedia.org/wiki/Brix
111
+ # Formula from: http://www.brsquared.org/wine/CalcInfo/HydSugAl.htm
112
+ def sg_to_b(sg)
113
+ 220*(sg - 1) + 1.6
114
+ end
115
+
116
+ # determine potential alchohol using brix and specifig gravity
117
+ # of the original wort. This is the UC Davis "way" which accounts
118
+ # for some non-sugar fermentables.
119
+ # from: http://www.brsquared.org/wine/CalcInfo/HydSugAl.htm
120
+ def pa_ucd(b,sg)
121
+ ((b-3)*sg)*0.59
122
+ end
123
+
124
+ # determine alchohol by volume using the difference between
125
+ # original and final gravity
126
+ # from: http://www.brew-monkey.com/brewschool/introtoextract.php
127
+ def abv(og,fg)
128
+ # convert to specific gravity if it looks
129
+ # like we need it
130
+ if (og > 2) or (fg > 2)
131
+ og = g_to_sg(og)
132
+ fg = g_to_sg(fg)
133
+ end
134
+ (og - fg)*131.25
135
+ end
136
+
137
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.3
3
+ specification_version: 1
4
+ name: beer
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-05-20 00:00:00 -07:00
8
+ summary: Formulas and Tools for Homebrewing
9
+ require_paths:
10
+ - lib
11
+ email: cphillips@smallwhitecube.com
12
+ homepage: http://svn.smallwhitecube.com/beer/trunk
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: beer
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Caleb Phillips
31
+ files:
32
+ - lib/beer.rb
33
+ test_files: []
34
+
35
+ rdoc_options: []
36
+
37
+ extra_rdoc_files: []
38
+
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ requirements: []
44
+
45
+ dependencies: []
46
+