constants 0.1.0

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.
@@ -0,0 +1,214 @@
1
+ require 'constants/constant'
2
+
3
+ module Constants
4
+ module Libraries
5
+
6
+ # Element is a library of elements in the periodic table, and includes
7
+ # mass, isotope, and abundance information.
8
+ #
9
+ # e = Element::He
10
+ # e.name # => "Helium"
11
+ # e.symbol # => "He"
12
+ # e.atomic_number # => 2
13
+ # e.mass # => 4.0026032497
14
+ # e.isotopes # => [3, 4]
15
+ # e.abundances # => [0.000137, 99.999863]
16
+ #
17
+ class Element
18
+
19
+ # The symbol of the element (C)
20
+ attr_reader :symbol
21
+
22
+ # The name of the element (Carbon)
23
+ attr_reader :name
24
+
25
+ # The atomic number of the element, ie the number
26
+ # of protons in the element (6)
27
+ attr_reader :atomic_number
28
+
29
+ # An array the mass numbers of element isotopes
30
+ # in mass order ([12, 13])
31
+ attr_reader :isotopes
32
+
33
+ # An array the masses of element isotopes
34
+ # in mass order ([12.0 Da, 13.0033548378 Da])
35
+ attr_reader :masses
36
+
37
+ # An array the isotopic abundances of element isotopes
38
+ # in mass order ([98.93, 1.07])
39
+ attr_reader :abundances
40
+
41
+ # The index of the most abundant isotope (0)
42
+ attr_reader :index_max_abundance
43
+
44
+ # The standard atomic weight of the element, ie
45
+ # the mean relative atomic mass of an element in
46
+ # the Earth's crust and atmosphere as determined
47
+ # by IUPAC (12.0107 Da)
48
+ attr_reader :std_atomic_weight
49
+
50
+ def initialize(symbol, name, atomic_number, attributes, std_atomic_weight)
51
+ @symbol = symbol
52
+ @name = name
53
+ @atomic_number = atomic_number
54
+ @isotopes = []
55
+ @masses = []
56
+ @abundances = []
57
+ @index_max_abundance = 0
58
+ @std_atomic_weight = Constant.parse(std_atomic_weight + 'Da')
59
+
60
+ attributes.split(/;/).each_with_index do |attr_str, i|
61
+ isotope, mass, abundance = attr_str.split(/:/)
62
+ @isotopes << isotope.to_i
63
+ @masses << Constant.parse(mass + 'Da')
64
+
65
+ abundance = Constant.parse(abundance)
66
+ @abundances << abundance
67
+
68
+ if abundance.value > abundances[@index_max_abundance].value
69
+ @index_max_abundance = i
70
+ end
71
+ end
72
+ end
73
+
74
+ # True if the element contains an isotope of the given mass number.
75
+ def has_isotope?(n)
76
+ !index_isotope(n).nil?
77
+ end
78
+
79
+ # Index of the isotope in isotopes, masses, and abundance of the
80
+ # given mass number.
81
+ def index_isotope(n)
82
+ isotopes.index(n)
83
+ end
84
+
85
+ # Returns the mass of the isotope with the given mass number.
86
+ # By default, returns the mass of the most abundant isotope.
87
+ def mass(n=nil)
88
+ return masses[index_max_abundance].value if n == nil
89
+
90
+ i = index_isotope(n)
91
+ i == nil ? nil : masses[i].value
92
+ end
93
+
94
+ # Returns the uncertainty of the mass of the isotope with the
95
+ # given mass number. By default, returns the mass uncertainty
96
+ # of the most abundant isotope.
97
+ def mass_uncertainty(n=nil)
98
+ return masses[index_max_abundance].uncertainty if n == nil
99
+
100
+ i = index_isotope(n)
101
+ i == nil ? nil : masses[i].uncertainty
102
+ end
103
+
104
+ # Gets the abundance of the isotope with the given mass number.
105
+ # By default, returns the abundance of the most abundant isotope.
106
+ def abundance(n=nil)
107
+ return abundances[index_max_abundance].value if n == nil
108
+
109
+ i = index_isotope(n)
110
+ i == nil ? nil : abundances[i].value
111
+ end
112
+
113
+ # Returns the uncertainty of the abundance of the isotope with the
114
+ # given mass number. By default, returns the abundance uncertainty
115
+ # of the most abundant isotope.
116
+ def abundance_uncertainty(n=nil)
117
+ return abundances[index_max_abundance].uncertainty if n == nil
118
+
119
+ i = index_isotope(n)
120
+ i == nil ? nil : abundances[i].uncertainty
121
+ end
122
+
123
+ Ag = Element.new("Ag", "Silver", 47, "107:106.905093(6):51.839(8);109:108.904756(3):48.161(8)", "107.8682(2)")
124
+ Al = Element.new("Al", "Aluminum", 13, "27:26.98153844(14):100", "26.981538(2)")
125
+ Ar = Element.new("Ar", "Argon", 18, "36:35.96754628(27):0.3365(30);38:37.9627322(5):0.0632(5);40:39.962383123(3):99.6003(30)", "39.948(1)")
126
+ As = Element.new("As", "Arsenic", 33, "75:74.9215964(18):100", "74.92160(2)")
127
+ Au = Element.new("Au", "Gold", 79, "197:196.966552(3):100", "196.96655(2)")
128
+ B = Element.new("B", "Boron", 5, "10:10.0129370(4):19.9(7);11:11.0093055(5):80.1(7)", "10.811(7)")
129
+ Ba = Element.new("Ba", "Barium", 56, "130:129.906310(7):0.106(1);132:131.905056(3):0.101(1);134:133.904503(3):2.417(18);135:134.905683(3):6.592(12);136:135.904570(3):7.854(24);137:136.905821(3):11.232(24);138:137.905241(3):71.698(42)", "137.327(7)")
130
+ Be = Element.new("Be", "Beryllium", 4, "9:9.0121821(4):100", "9.012182(3)")
131
+ Bi = Element.new("Bi", "Bismuth", 83, "209:208.980383(3):100", "208.98038(2)")
132
+ Br = Element.new("Br", "Bromine", 35, "79:78.9183376(20):50.69(7);81:80.916291(3):49.31(7)", "79.904(1)")
133
+ C = Element.new("C", "Carbon", 6, "12:12.0000000(0):98.93(8);13:13.0033548378(10):1.07(8)", "12.0107(8)")
134
+ Ca = Element.new("Ca", "Calcium", 20, "40:39.9625912(3):96.941(156);42:41.9586183(4):0.647(23);43:42.9587668(5):0.135(10);44:43.9554811(9):2.086(110);46:45.9536928(25):0.004(3);48:47.952534(4):0.187(21)", "40.078(4)")
135
+ Cd = Element.new("Cd", "Cadmium", 48, "106:105.906458(6):1.25(6);108:107.904183(6):0.89(3);110:109.903006(3):12.49(18);111:110.904182(3):12.80(12);112:111.9027572(30):24.13(21);113:112.9044009(30):12.22(12);114:113.9033581(30):28.73(42);116:115.904755(3):7.49(18)", "112.411(8)")
136
+ Ce = Element.new("Ce", "Cerium", 58, "136:135.907140(50):0.185(2);138:137.905986(11):0.251(2);140:139.905434(3):88.450(51);142:141.909240(4):11.114(51)", "140.116(1)")
137
+ Cl = Element.new("Cl", "Chlorine", 17, "35:34.96885271(4):75.78(4);37:36.96590260(5):24.22(4)", "35.453(2)")
138
+ Co = Element.new("Co", "Cobalt", 27, "59:58.9332002(15):100", "58.933200(9)")
139
+ Cr = Element.new("Cr", "Chromium", 24, "50:49.9460496(14):4.345(13);52:51.9405119(15):83.789(18);53:52.9406538(15):9.501(17);54:53.9388849(15):2.365(7)", "51.9961(6)")
140
+ Cs = Element.new("Cs", "Cesium", 55, "133:132.905447(3):100", "132.90545(2)")
141
+ Cu = Element.new("Cu", "Copper", 29, "63:62.9296011(15):69.17(3);65:64.9277937(19):30.83(3)", "63.546(3)")
142
+ Dy = Element.new("Dy", "Dysprosium", 66, "156:155.924278(7):0.06(1);158:157.924405(4):0.10(1);160:159.925194(3):2.34(8);161:160.926930(3):18.91(24);162:161.926795(3):25.51(26);163:162.928728(3):24.90(16);164:163.929171(3):28.18(37)", "162.500(1)")
143
+ Er = Element.new("Er", "Erbium", 68, "162:161.928775(4):0.14(1);164:163.929197(4):1.61(3);166:165.930290(3):33.61(35);167:166.932045(3):22.93(17);168:167.932368(3):26.78(26);170:169.935460(3):14.93(27)", "167.259(3)")
144
+ Eu = Element.new("Eu", "Europium", 63, "151:150.919846(3):47.81(3);153:152.921226(3):52.19(3)", "151.964(1)")
145
+ F = Element.new("F", "Fluorine", 9, "19:18.99840320(7):100", "18.9984032(5)")
146
+ Fe = Element.new("Fe", "Iron", 26, "54:53.9396148(14):5.845(35);56:55.9349421(15):91.754(36);57:56.9353987(15):2.119(10);58:57.9332805(15):0.282(4)", "55.845(2)")
147
+ Ga = Element.new("Ga", "Gallium", 31, "69:68.925581(3):60.108(9);71:70.9247050(19):39.892(9)", "69.723(1)")
148
+ Gd = Element.new("Gd", "Gadolinium", 64, "152:151.919788(3):0.20(1);154:153.920862(3):2.18(3);155:154.922619(3):14.80(12);156:155.922120(3):20.47(9);157:156.923957(3):15.65(2);158:157.924101(3):24.84(7);160:159.927051(3):21.86(19)", "157.25(3)")
149
+ Ge = Element.new("Ge", "Germanium", 32, "70:69.9242504(19):20.84(87);72:71.9220762(16):27.54(34);73:72.9234594(16):7.73(5);74:73.9211782(16):36.28(73);76:75.9214027(16):7.61(38)", "72.64(1)")
150
+ H = Element.new("H", "Hydrogen", 1, "1:1.0078250321(4):99.9885(70);2:2.0141017780(4):0.0115(70)", "1.00794(7)")
151
+ He = Element.new("He", "Helium", 2, "3:3.0160293097(9):0.000137(3);4:4.0026032497(10):99.999863(3)", "4.002602(2)")
152
+ Hf = Element.new("Hf", "Hafnium", 72, "174:173.940040(3):0.16(1);176:175.9414018(29):5.26(7);177:176.9432200(27):18.60(9);178:177.9436977(27):27.28(7);179:178.9458151(27):13.62(2);180:179.9465488(27):35.08(16)", "178.49(2)")
153
+ Hg = Element.new("Hg", "Mercury", 80, "196:195.965815(4):0.15(1);198:197.966752(3):9.97(20);199:198.968262(3):16.87(22);200:199.968309(3):23.10(19);201:200.970285(3):13.18(9);202:201.970626(3):29.86(26);204:203.973476(3):6.87(15)", "200.59(2)")
154
+ Ho = Element.new("Ho", "Holmium", 67, "165:164.930319(3):100", "164.93032(2)")
155
+ I = Element.new("I", "Iodine", 53, "127:126.904468(4):100", "126.90447(3)")
156
+ In = Element.new("In", "Indium", 49, "113:112.904061(4):4.29(5);115:114.903878(5):95.71(5)", "114.818(3)")
157
+ Ir = Element.new("Ir", "Iridium", 77, "191:190.960591(3):37.3(2);193:192.962924(3):62.7(2)", "192.217(3)")
158
+ K = Element.new("K", "Potassium", 19, "39:38.9637069(3):93.2581(44);40:39.96399867(29):0.0117(1);41:40.96182597(28):6.7302(44)", "39.0983(1)")
159
+ Kr = Element.new("Kr", "Krypton", 36, "78:77.920386(7):0.35(1);80:79.916378(4):2.28(6);82:81.9134846(28):11.58(14);83:82.914136(3):11.49(6);84:83.911507(3):57.00(4);86:85.9106103(12):17.30(22)", "83.798(2)")
160
+ La = Element.new("La", "Lanthanum", 57, "138:137.907107(4):0.090(1);139:138.906348(3):99.910(1)", "138.9055(2)")
161
+ Li = Element.new("Li", "Lithium", 3, "6:6.0151223(5):7.59(4);7:7.0160040(5):92.41(4)", "6.941(2)")
162
+ Lu = Element.new("Lu", "Lutetium", 71, "175:174.9407679(28):97.41(2);176:175.9426824(28):2.59(2)", "174.967(1)")
163
+ Mg = Element.new("Mg", "Magnesium", 12, "24:23.98504190(20):78.99(4);25:24.98583702(20):10.00(1);26:25.98259304(21):11.01(3)", "24.3050(6)")
164
+ Mn = Element.new("Mn", "Manganese", 25, "55:54.9380496(14):100", "54.938049(9)")
165
+ Mo = Element.new("Mo", "Molybdenum", 42, "100:99.907477(6):9.63(23);92:91.906810(4):14.84(35);94:93.9050876(20):9.25(12);95:94.9058415(20):15.92(13);96:95.9046789(20):16.68(2);97:96.9060210(20):9.55(8);98:97.9054078(20):24.13(31)", "95.94(2)")
166
+ N = Element.new("N", "Nitrogen", 7, "14:14.0030740052(9):99.632(7);15:15.0001088984(9):0.368(7)", "14.0067(2)")
167
+ Na = Element.new("Na", "Sodium", 11, "23:22.98976967(23):100", "22.989770(2)")
168
+ Nb = Element.new("Nb", "Niobium", 41, "93:92.9063775(24):100", "92.90638(2)")
169
+ Nd = Element.new("Nd", "Neodymium", 60, "142:141.907719(3):27.2(5);143:142.909810(3):12.2(2);144:143.910083(3):23.8(3);145:144.912569(3):8.3(1);146:145.913112(3):17.2(3);148:147.916889(3):5.7(1);150:149.920887(4):5.6(2)", "144.24(3)")
170
+ Ne = Element.new("Ne", "Neon", 10, "20:19.9924401759(20):90.48(3);21:20.99384674(4):0.27(1);22:21.99138551(23):9.25(3)", "20.1797(6)")
171
+ Ni = Element.new("Ni", "Nickel", 28, "58:57.9353479(15):68.0769(89);60:59.9307906(15):26.2231(77);61:60.9310604(15):1.1399(6);62:61.9283488(15):3.6345(17);64:63.9279696(16):0.9256(9)", "58.6934(2)")
172
+ O = Element.new("O", "Oxygen", 8, "16:15.9949146221(15):99.757(16);17:16.99913150(22):0.038(1);18:17.9991604(9):0.205(14)", "15.9994(3)")
173
+ Os = Element.new("Os", "Osmium", 76, "184:183.952491(3):0.02(1);186:185.953838(3):1.59(3);187:186.9557479(30):1.96(2);188:187.9558360(30):13.24(8);189:188.9581449(30):16.15(5);190:189.958445(3):26.26(2);192:191.961479(4):40.78(19)", "190.23(3)")
174
+ P = Element.new("P", "Phosphorus", 15, "31:30.97376151(20):100", "30.973761(2)")
175
+ Pa = Element.new("Pa", "Protactinium", 91, "231:231.0358789(28):100", "231.03588(2)")
176
+ Pb = Element.new("Pb", "Lead", 82, "204:203.973029(3):1.4(1);206:205.974449(3):24.1(1);207:206.975881(3):22.1(1);208:207.976636(3):52.4(1)", "207.2(1)")
177
+ Pd = Element.new("Pd", "Palladium", 46, "102:101.905608(3):1.02(1);104:103.904035(5):11.14(8);105:104.905084(5):22.33(8);106:105.903483(5):27.33(3);108:107.903894(4):26.46(9);110:109.905152(12):11.72(9)", "106.42(1)")
178
+ Pr = Element.new("Pr", "Praseodymium", 59, "141:140.907648(3):100", "140.90765(2)")
179
+ Pt = Element.new("Pt", "Platinum", 78, "190:189.959930(7):0.014(1);192:191.961035(4):0.782(7);194:193.962664(3):32.967(99);195:194.964774(3):33.832(10);196:195.964935(3):25.242(41);198:197.967876(4):7.163(55)", "195.078(2)")
180
+ Rb = Element.new("Rb", "Rubidium", 37, "85:84.9117893(25):72.17(2);87:86.9091835(27):27.83(2)", "85.4678(3)")
181
+ Re = Element.new("Re", "Rhenium", 75, "185:184.9529557(30):37.40(2);187:186.9557508(30):62.60(2)", "186.207(1)")
182
+ Rh = Element.new("Rh", "Rhodium", 45, "103:102.905504(3):100", "102.90550(2)")
183
+ Ru = Element.new("Ru", "Ruthenium", 44, "100:99.9042197(22):12.60(7);101:100.9055822(22):17.06(2);102:101.9043495(22):31.55(14);104:103.905430(4):18.62(27);96:95.907598(8):5.54(14);98:97.905287(7):1.87(3);99:98.9059393(21):12.76(14)", "101.07(2)")
184
+ S = Element.new("S", "Sulfur", 16, "32:31.97207069(12):94.93(31);33:32.97145850(12):0.76(2);34:33.96786683(11):4.29(28);36:35.96708088(25):0.02(1)", "32.065(5)")
185
+ Sb = Element.new("Sb", "Antimony", 51, "121:120.9038180(24):57.21(5);123:122.9042157(22):42.79(5)", "121.760(1)")
186
+ Sc = Element.new("Sc", "Scandium", 21, "45:44.9559102(12):100", "44.955910(8)")
187
+ Se = Element.new("Se", "Selenium", 34, "74:73.9224766(16):0.89(4);76:75.9192141(16):9.37(29);77:76.9199146(16):7.63(16);78:77.9173095(16):23.77(28);80:79.9165218(20):49.61(41);82:81.9167000(22):8.73(22)", "78.96(3)")
188
+ Si = Element.new("Si", "Silicon", 14, "28:27.9769265327(20):92.2297(7);29:28.97649472(3):4.6832(5);30:29.97377022(5):3.0872(5)", "28.0855(3)")
189
+ Sm = Element.new("Sm", "Samarium", 62, "144:143.911995(4):3.07(7);147:146.914893(3):14.99(18);148:147.914818(3):11.24(10);149:148.917180(3):13.82(7);150:149.917271(3):7.38(1);152:151.919728(3):26.75(16);154:153.922205(3):22.75(29)", "150.36(3)")
190
+ Sn = Element.new("Sn", "Tin", 50, "112:111.904821(5):0.97(1);114:113.902782(3):0.66(1);115:114.903346(3):0.34(1);116:115.901744(3):14.54(9);117:116.902954(3):7.68(7);118:117.901606(3):24.22(9);119:118.903309(3):8.59(4);120:119.9021966(27):32.58(9);122:121.9034401(29):4.63(3);124:123.9052746(15):5.79(5)", "118.710(7)")
191
+ Sr = Element.new("Sr", "Strontium", 38, "84:83.913425(4):0.56(1);86:85.9092624(24):9.86(1);87:86.9088793(24):7.00(1);88:87.9056143(24):82.58(1)", "87.62(1)")
192
+ Ta = Element.new("Ta", "Tantalum", 73, "180:179.947466(3):0.012(2);181:180.947996(3):99.988(2)", "180.9479(1)")
193
+ Tb = Element.new("Tb", "Terbium", 65, "159:158.925343(3):100", "158.92534(2)")
194
+ Te = Element.new("Te", "Tellurium", 52, "120:119.904020(11):0.09(1);122:121.9030471(20):2.55(12);123:122.9042730(19):0.89(3);124:123.9028195(16):4.74(14);125:124.9044247(20):7.07(15);126:125.9033055(20):18.84(25);128:127.9044614(19):31.74(8);130:129.9062228(21):34.08(62)", "127.60(3)")
195
+ Th = Element.new("Th", "Thorium", 90, "232:232.0380504(22):100", "232.0381(1)")
196
+ Ti = Element.new("Ti", "Titanium", 22, "46:45.9526295(12):8.25(3);47:46.9517638(10):7.44(2);48:47.9479471(10):73.72(3);49:48.9478708(10):5.41(2);50:49.9447921(11):5.18(2)", "47.867(1)")
197
+ Tl = Element.new("Tl", "Thallium", 81, "203:202.972329(3):29.524(14);205:204.974412(3):70.476(14)", "204.3833(2)")
198
+ Tm = Element.new("Tm", "Thulium", 69, "169:168.934211(3):100", "168.93421(2)")
199
+ U = Element.new("U", "Uranium", 92, "234:234.0409456(21):0.0055(2);235:235.0439231(21):0.7200(51);238:238.0507826(21):99.2745(106)", "238.02891(3)")
200
+ V = Element.new("V", "Vanadium", 23, "50:49.9471628(14):0.250(4);51:50.9439637(14):99.750(4)", "50.9415(1)")
201
+ W = Element.new("W", "Tungsten", 74, "180:179.946706(5):0.12(1);182:181.948206(3):26.50(16);183:182.9502245(29):14.31(4);184:183.9509326(29):30.64(2);186:185.954362(3):28.43(19)", "183.84(1)")
202
+ Xe = Element.new("Xe", "Xenon", 54, "124:123.9058958(21):0.09(1);126:125.904269(7):0.09(1);128:127.9035304(15):1.92(3);129:128.9047795(9):26.44(24);130:129.9035079(10):4.08(2);131:130.9050819(10):21.18(3);132:131.9041545(12):26.89(6);134:133.9053945(9):10.44(10);136:135.907220(8):8.87(16)", "131.293(6)")
203
+ Y = Element.new("Y", "Yttrium", 39, "89:88.9058479(25):100", "88.90585(2)")
204
+ Yb = Element.new("Yb", "Ytterbium", 70, "168:167.933894(5):0.13(1);170:169.934759(3):3.04(15);171:170.936322(3):14.28(57);172:171.9363777(30):21.83(67);173:172.9382068(30):16.13(27);174:173.9388581(30):31.83(92);176:175.942568(3):12.76(41)", "173.04(3)")
205
+ Zn = Element.new("Zn", "Zinc", 30, "64:63.9291466(18):48.63(60);66:65.9260368(16):27.90(27);67:66.9271309(17):4.10(13);68:67.9248476(17):18.75(51);70:69.925325(4):0.62(3)", "65.409(4)")
206
+ Zr = Element.new("Zr", "Zirconium", 40, "90:89.9047037(23):51.45(40);91:90.9056450(23):11.22(5);92:91.9050401(23):17.15(8);94:93.9063158(25):17.38(28);96:95.908276(3):2.80(9)", "91.224(2)")
207
+
208
+ include Constants::Library
209
+ library.index_by_attribute :symbol
210
+ library.index_by_attribute :name
211
+ library.index_by_attribute :atomic_number
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,83 @@
1
+ require 'constants/libraries/physical'
2
+
3
+ module Constants
4
+ module Libraries
5
+
6
+ # Particle is a library of fundamental particles, including
7
+ # mass, charge and spin information.
8
+ class Particle
9
+
10
+ attr_reader :name
11
+ attr_reader :family
12
+ attr_reader :group
13
+ attr_reader :generation
14
+ attr_reader :charge
15
+ attr_reader :spin
16
+
17
+ def initialize(name, family, group, generation, mass, charge, spin)
18
+ @name = name
19
+ @family = family
20
+ @group = group
21
+ @generation = generation
22
+ @mass = mass.kind_of?(Constant) ? mass : Constant.parse(mass)
23
+ @charge = charge
24
+ @spin = spin
25
+ end
26
+
27
+ # Returns the mass of the particle.
28
+ def mass
29
+ @mass.value
30
+ end
31
+
32
+ # Returns the mass uncertainty of the particle.
33
+ def mass_uncertainty
34
+ @mass.uncertainty
35
+ end
36
+
37
+ private
38
+
39
+ # Convenience method to define related particles (ex: antiparticles)
40
+ def as(name, negate=false) # :nodoc:
41
+ d = self.dup
42
+ d.instance_variable_set("@name", name)
43
+ d.instance_variable_set("@charge", charge * -1) if negate
44
+ d
45
+ end
46
+
47
+ public
48
+
49
+ UP = Particle.new('Up', "Fermion", "Quark", "First", "4 MeV/c^2", 2.0/3, 1.0/2) # "1.5 - 4 MeV/c^2"
50
+ DOWN = Particle.new('Down', "Fermion", "Quark", "First", "8 MeV/c^2", -1.0/3, 1.0/2) # " 4 - 8 MeV/c^2"
51
+ STRANGE = Particle.new('Strange', "Fermion", "Quark", "Second", "130 MeV/c^2", -1.0/3, 1.0/2) #" 80 - 130 MeV/c^2"
52
+ CHARM = Particle.new('Charm', "Fermion", "Quark", "Second", "1.5 GeV/c^2", 2.0/3, 1.0/2)
53
+ BOTTOM = Particle.new('Bottom', "Fermion", "Quark", "Third", "5 GeV/c^2", -1.0/3, 1.0/2)
54
+ TOP = Particle.new('Top', "Fermion", "Quark", "Third", "170.9 GeV/c^2", 2.0/3, 1.0/2) #"170.9�18 GeV/c^2"
55
+
56
+ ELECTRON = Particle.new('Electron', "Fermion", "Lepton", "First", "5.485 799 094(23)e-4 Da", 1, 1.0/2)
57
+ POSITRON = ELECTRON.send(:as, "Positron", true)
58
+ MUON = Particle.new('Muon', "Fermion", "Lepton", "Second", "105.658369(9) MeV/c^2", 1 , 1.0/2)
59
+ ANTIMUON = MUON.send(:as, "Anti-Muon", true)
60
+ TAU = Particle.new('Tau', "Fermion", "Lepton", "Third", "1776.99 MeV/c^2", 1, 1.0/2) #1776.99�29 MeV/c^2"
61
+ ANTITAU = TAU.send(:as, "Anti-Tau", true)
62
+
63
+ NEUTRINO = Particle.new('Neutrino', "Fermion", "Lepton", "", "5.485 799 0943(23)e-4 Da", 0, 1.0/2)
64
+ ANTINEUTRINO = NEUTRINO.send(:as, "Anti-Neutrino")
65
+ MUON_NEUTRINO = NEUTRINO.send(:as, "Muon Neutrio" )
66
+ ANTIMUON_NEUTRINO = NEUTRINO.send(:as, "Muon Anti-Neutrino" )
67
+ TAU_NEUTRINO = NEUTRINO.send(:as, "Tau Neutrino" )
68
+ ANTITAU_NEUTRINO = NEUTRINO.send(:as, "Tau Anti-Neutrino" )
69
+
70
+ PHOTON = Particle.new('Photon', "Boson", "Gauge boson", "", 0, 0, 1)
71
+ W_BOSON_PLUS = Particle.new('W Boson +', "Boson", "Gauge boson", "", "80.398 GeV/c^2", 1, 1) #"80.398�0.025 GeV/c2"
72
+ W_BOSON_MINUS = W_BOSON_PLUS.send(:as, "W Boson -", true)
73
+ Z_BOSON = Particle.new('Z Boson', "Boson", "Gauge boson", "", "91.1876 GeV/c^2", 0, 1) #"91.1876�0.0021 GeV/c2",
74
+ GLUON = Particle.new('Gluon', "Boson", "Gauge boson", "", 0, 0, 1)
75
+ GRAVITON = Particle.new('Graviton', "", "", "", 0, 0, 2)
76
+ HIGGS_BOSON = Particle.new('Higgs Boson', "", "", "", "112 GeV/c^2", 0, 0) #">112 GeV/c^2"
77
+
78
+ include Constants::Library
79
+ library.index_by_attribute :name
80
+ end
81
+
82
+ end
83
+ end
@@ -0,0 +1,297 @@
1
+ require 'constants/constant'
2
+
3
+ module Constants
4
+ module Libraries
5
+
6
+ # Physical is a library of physical constants.
7
+ class Physical < Constant
8
+
9
+ attr_reader :name
10
+
11
+ def initialize(name, value, uncertainty, unit)
12
+ @name = name
13
+ super(value.to_f, unit, uncertainty.to_f)
14
+ end
15
+
16
+ #--
17
+ # Constants from: http://www.physics.nist.gov/cuu/Constants/Table/allascii.txt
18
+ # Date: Mon Apr 28 21:09:29 -0600 2008
19
+ #++
20
+ LATTICE_SPACING_OF_SILICON = Physical.new("{220} lattice spacing of silicon", "192.0155762e-12", "0.0000050e-12", "m")
21
+ ALPHA_PARTICLE_ELECTRON_MASS_RATIO = Physical.new("alpha particle-electron mass ratio", "7294.2995365", "0.0000031", "")
22
+ ALPHA_PARTICLE_MASS = Physical.new("alpha particle mass", "6.64465620e-27", "0.00000033e-27", "kg")
23
+ ALPHA_PARTICLE_MASS_ENERGY_EQUIVALENT = Physical.new("alpha particle mass energy equivalent", "5.97191917e-10", "0.00000030e-10", "J")
24
+ ALPHA_PARTICLE_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("alpha particle mass energy equivalent in MeV", "3727.379109", "0.000093", "MeV")
25
+ ALPHA_PARTICLE_MASS_IN_U = Physical.new("alpha particle mass in u", "4.001506179127", "0.000000000062", "u")
26
+ ALPHA_PARTICLE_MOLAR_MASS = Physical.new("alpha particle molar mass", "4.001506179127e-3", "0.000000000062e-3", "kg mol^-1")
27
+ ALPHA_PARTICLE_PROTON_MASS_RATIO = Physical.new("alpha particle-proton mass ratio", "3.97259968951", "0.00000000041", "")
28
+ ANGSTROM_STAR = Physical.new("Angstrom star", "1.00001498e-10", "0.00000090e-10", "m")
29
+ ATOMIC_MASS_CONSTANT = Physical.new("atomic mass constant", "1.660538782e-27", "0.000000083e-27", "kg")
30
+ ATOMIC_MASS_CONSTANT_ENERGY_EQUIVALENT = Physical.new("atomic mass constant energy equivalent", "1.492417830e-10", "0.000000074e-10", "J")
31
+ ATOMIC_MASS_CONSTANT_ENERGY_EQUIVALENT_IN_MEV = Physical.new("atomic mass constant energy equivalent in MeV", "931.494028", "0.000023", "MeV")
32
+ ATOMIC_UNIT_OF_1ST_HYPERPOLARIZABLITY = Physical.new("atomic unit of 1st hyperpolarizablity", "3.206361533e-53", "0.000000081e-53", "C^3 m^3 J^-2")
33
+ ATOMIC_UNIT_OF_2ND_HYPERPOLARIZABLITY = Physical.new("atomic unit of 2nd hyperpolarizablity", "6.23538095e-65", "0.00000031e-65", "C^4 m^4 J^-3")
34
+ ATOMIC_UNIT_OF_ACTION = Physical.new("atomic unit of action", "1.054571628e-34", "0.000000053e-34", "J s")
35
+ ATOMIC_UNIT_OF_CHARGE = Physical.new("atomic unit of charge", "1.602176487e-19", "0.000000040e-19", "C")
36
+ ATOMIC_UNIT_OF_CHARGE_DENSITY = Physical.new("atomic unit of charge density", "1.081202300e12", "0.000000027e12", "C m^-3")
37
+ ATOMIC_UNIT_OF_CURRENT = Physical.new("atomic unit of current", "6.62361763e-3", "0.00000017e-3", "A")
38
+ ATOMIC_UNIT_OF_ELECTRIC_DIPOLE_MOM = Physical.new("atomic unit of electric dipole mom.", "8.47835281e-30", "0.00000021e-30", "C m")
39
+ ATOMIC_UNIT_OF_ELECTRIC_FIELD = Physical.new("atomic unit of electric field", "5.14220632e11", "0.00000013e11", "V m^-1")
40
+ ATOMIC_UNIT_OF_ELECTRIC_FIELD_GRADIENT = Physical.new("atomic unit of electric field gradient", "9.71736166e21", "0.00000024e21", "V m^-2")
41
+ ATOMIC_UNIT_OF_ELECTRIC_POLARIZABLITY = Physical.new("atomic unit of electric polarizablity", "1.6487772536e-41", "0.0000000034e-41", "C^2 m^2 J^-1")
42
+ ATOMIC_UNIT_OF_ELECTRIC_POTENTIAL = Physical.new("atomic unit of electric potential", "27.21138386", "0.00000068", "V")
43
+ ATOMIC_UNIT_OF_ELECTRIC_QUADRUPOLE_MOM = Physical.new("atomic unit of electric quadrupole mom.", "4.48655107e-40", "0.00000011e-40", "C m^2")
44
+ ATOMIC_UNIT_OF_ENERGY = Physical.new("atomic unit of energy", "4.35974394e-18", "0.00000022e-18", "J")
45
+ ATOMIC_UNIT_OF_FORCE = Physical.new("atomic unit of force", "8.23872206e-8", "0.00000041e-8", "N")
46
+ ATOMIC_UNIT_OF_LENGTH = Physical.new("atomic unit of length", "0.52917720859e-10", "0.00000000036e-10", "m")
47
+ ATOMIC_UNIT_OF_MAG_DIPOLE_MOM = Physical.new("atomic unit of mag. dipole mom.", "1.854801830e-23", "0.000000046e-23", "J T^-1")
48
+ ATOMIC_UNIT_OF_MAG_FLUX_DENSITY = Physical.new("atomic unit of mag. flux density", "2.350517382e5", "0.000000059e5", "T")
49
+ ATOMIC_UNIT_OF_MAGNETIZABILITY = Physical.new("atomic unit of magnetizability", "7.891036433e-29", "0.000000027e-29", "J T^-2")
50
+ ATOMIC_UNIT_OF_MASS = Physical.new("atomic unit of mass", "9.10938215e-31", "0.00000045e-31", "kg")
51
+ ATOMIC_UNIT_OF_MOMENTUM = Physical.new("atomic unit of momentum", "1.992851565e-24", "0.000000099e-24", "kg m s^-1")
52
+ ATOMIC_UNIT_OF_PERMITTIVITY = Physical.new("atomic unit of permittivity", "1.112650056...e-10", "0", "F m^-1")
53
+ ATOMIC_UNIT_OF_TIME = Physical.new("atomic unit of time", "2.418884326505e-17", "0.000000000016e-1", "7 s")
54
+ ATOMIC_UNIT_OF_VELOCITY = Physical.new("atomic unit of velocity", "2.1876912541e6", "0.0000000015e6", "m s^-1")
55
+ AVOGADRO_CONSTANT = Physical.new("Avogadro constant", "6.02214179e23", "0.00000030e23", "mol^-1")
56
+ BOHR_MAGNETON = Physical.new("Bohr magneton", "927.400915e-26", "0.000023e-26", "J T^-1")
57
+ BOHR_MAGNETON_IN_EV_T = Physical.new("Bohr magneton in eV/T", "5.7883817555e-5", "0.0000000079e-5", "eV T^-1")
58
+ BOHR_MAGNETON_IN_HZ_T = Physical.new("Bohr magneton in Hz/T", "13.99624604e9", "0.00000035e9", "Hz T^-1")
59
+ BOHR_MAGNETON_IN_INVERSE_METERS_PER_TESLA = Physical.new("Bohr magneton in inverse meters per tesla", "46.6864515", "0.0000012", "m^-1 T^-1")
60
+ BOHR_MAGNETON_IN_K_T = Physical.new("Bohr magneton in K/T", "0.6717131", "0.0000012", "K T^-1")
61
+ BOHR_RADIUS = Physical.new("Bohr radius", "0.52917720859e-10", "0.00000000036e-10", "m")
62
+ BOLTZMANN_CONSTANT = Physical.new("Boltzmann constant", "1.3806504e-23", "0.0000024e-23", "J K^-1")
63
+ BOLTZMANN_CONSTANT_IN_EV_K = Physical.new("Boltzmann constant in eV/K", "8.617343e-5", "0.000015e-5", "eV K^-1")
64
+ BOLTZMANN_CONSTANT_IN_HZ_K = Physical.new("Boltzmann constant in Hz/K", "2.0836644e10", "0.0000036e10", "Hz K^-1")
65
+ BOLTZMANN_CONSTANT_IN_INVERSE_METERS_PER_KELVIN = Physical.new("Boltzmann constant in inverse meters per kelvin", "69.50356", "0.00012", "m^-1 K^-1")
66
+ CHARACTERISTIC_IMPEDANCE_OF_VACUUM = Physical.new("characteristic impedance of vacuum", "376.730313461...", "0", "ohm")
67
+ CLASSICAL_ELECTRON_RADIUS = Physical.new("classical electron radius", "2.8179402894e-15", "0.0000000058e-15", "m")
68
+ COMPTON_WAVELENGTH = Physical.new("Compton wavelength", "2.4263102175e-12", "0.0000000033e-12", "m")
69
+ COMPTON_WAVELENGTH_OVER_2_PI = Physical.new("Compton wavelength over 2 pi", "386.15926459e-15", "0.00000053e-15", "m")
70
+ CONDUCTANCE_QUANTUM = Physical.new("conductance quantum", "7.7480917004e-5", "0.0000000053e-5", "S")
71
+ CONVENTIONAL_VALUE_OF_JOSEPHSON_CONSTANT = Physical.new("conventional value of Josephson constant", "483597.9e9", "0", "Hz V^-1")
72
+ CONVENTIONAL_VALUE_OF_VON_KLITZING_CONSTANT = Physical.new("conventional value of von Klitzing constant", "25812.807", "0", "ohm")
73
+ CU_X_UNIT = Physical.new("Cu x unit", "1.00207699e-13", "0.00000028e-13", "m")
74
+ DEUTERON_ELECTRON_MAG_MOM_RATIO = Physical.new("deuteron-electron mag. mom. ratio", "-4.664345537e-4", "0.000000039e-4", "")
75
+ DEUTERON_ELECTRON_MASS_RATIO = Physical.new("deuteron-electron mass ratio", "3670.4829654", "0.0000016", "")
76
+ DEUTERON_G_FACTOR = Physical.new("deuteron g factor", "0.8574382308", "0.0000000072", "")
77
+ DEUTERON_MAG_MOM = Physical.new("deuteron mag. mom.", "0.433073465e-26", "0.000000011e-26", "J T^-1")
78
+ DEUTERON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("deuteron mag. mom. to Bohr magneton ratio", "0.4669754556e-3", "0.0000000039e-3", "")
79
+ DEUTERON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("deuteron mag. mom. to nuclear magneton ratio", "0.8574382308", "0.0000000072", "")
80
+ DEUTERON_MASS = Physical.new("deuteron mass", "3.34358320e-27", "0.00000017e-27", "kg")
81
+ DEUTERON_MASS_ENERGY_EQUIVALENT = Physical.new("deuteron mass energy equivalent", "3.00506272e-10", "0.00000015e-10", "J")
82
+ DEUTERON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("deuteron mass energy equivalent in MeV", "1875.612793", "0.000047", "MeV")
83
+ DEUTERON_MASS_IN_U = Physical.new("deuteron mass in u", "2.013553212724", "0.000000000078", "u")
84
+ DEUTERON_MOLAR_MASS = Physical.new("deuteron molar mass", "2.013553212724e-3", "0.000000000078e-3", "kg mol^-1")
85
+ DEUTERON_NEUTRON_MAG_MOM_RATIO = Physical.new("deuteron-neutron mag. mom. ratio", "-0.44820652", "0.00000011", "")
86
+ DEUTERON_PROTON_MAG_MOM_RATIO = Physical.new("deuteron-proton mag. mom. ratio", "0.3070122070", "0.0000000024", "")
87
+ DEUTERON_PROTON_MASS_RATIO = Physical.new("deuteron-proton mass ratio", "1.99900750108", "0.00000000022", "")
88
+ DEUTERON_RMS_CHARGE_RADIUS = Physical.new("deuteron rms charge radius", "2.1402e-15", "0.0028e-15", "m")
89
+ ELECTRIC_CONSTANT = Physical.new("electric constant", "8.854187817...e-12", "0", "F m^-1")
90
+ ELECTRON_CHARGE_TO_MASS_QUOTIENT = Physical.new("electron charge to mass quotient", "-1.758820150e11", "0.000000044e11", "C kg^-1")
91
+ ELECTRON_DEUTERON_MAG_MOM_RATIO = Physical.new("electron-deuteron mag. mom. ratio", "-2143.923498", "0.000018", "")
92
+ ELECTRON_DEUTERON_MASS_RATIO = Physical.new("electron-deuteron mass ratio", "2.7244371093e-4", "0.0000000012e-4", "")
93
+ ELECTRON_G_FACTOR = Physical.new("electron g factor", "-2.0023193043622", "0.0000000000015", "")
94
+ ELECTRON_GYROMAG_RATIO = Physical.new("electron gyromag. ratio", "1.760859770e11", "0.000000044e11", "s^-1 T^-1")
95
+ ELECTRON_GYROMAG_RATIO_OVER_2_PI = Physical.new("electron gyromag. ratio over 2 pi", "28024.95364", "0.00070", "MHz T^-1")
96
+ ELECTRON_MAG_MOM = Physical.new("electron mag. mom.", "-928.476377e-26", "0.000023e-26", "J T^-1")
97
+ ELECTRON_MAG_MOM_ANOMALY = Physical.new("electron mag. mom. anomaly", "1.15965218111e-3", "0.00000000074e-3", "")
98
+ ELECTRON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("electron mag. mom. to Bohr magneton ratio", "-1.00115965218111", "0.00000000000074", "")
99
+ ELECTRON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("electron mag. mom. to nuclear magneton ratio", "-1838.28197092", "0.00000080", "")
100
+ ELECTRON_MASS = Physical.new("electron mass", "9.10938215e-31", "0.00000045e-31", "kg")
101
+ ELECTRON_MASS_ENERGY_EQUIVALENT = Physical.new("electron mass energy equivalent", "8.18710438e-14", "0.00000041e-14", "J")
102
+ ELECTRON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("electron mass energy equivalent in MeV", "0.510998910", "0.000000013", "MeV")
103
+ ELECTRON_MASS_IN_U = Physical.new("electron mass in u", "5.4857990943e-4", "0.0000000023e-4", "u")
104
+ ELECTRON_MOLAR_MASS = Physical.new("electron molar mass", "5.4857990943e-7", "0.0000000023e-7", "kg mol^-1")
105
+ ELECTRON_MUON_MAG_MOM_RATIO = Physical.new("electron-muon mag. mom. ratio", "206.7669877", "0.0000052", "")
106
+ ELECTRON_MUON_MASS_RATIO = Physical.new("electron-muon mass ratio", "4.83633171e-3", "0.00000012e-3", "")
107
+ ELECTRON_NEUTRON_MAG_MOM_RATIO = Physical.new("electron-neutron mag. mom. ratio", "960.92050", "0.00023", "")
108
+ ELECTRON_NEUTRON_MASS_RATIO = Physical.new("electron-neutron mass ratio", "5.4386734459e-4", "0.0000000033e-4", "")
109
+ ELECTRON_PROTON_MAG_MOM_RATIO = Physical.new("electron-proton mag. mom. ratio", "-658.2106848", "0.0000054", "")
110
+ ELECTRON_PROTON_MASS_RATIO = Physical.new("electron-proton mass ratio", "5.4461702177e-4", "0.0000000024e-4", "")
111
+ ELECTRON_TAU_MASS_RATIO = Physical.new("electron-tau mass ratio", "2.87564e-4", "0.00047e-4", "")
112
+ ELECTRON_TO_ALPHA_PARTICLE_MASS_RATIO = Physical.new("electron to alpha particle mass ratio", "1.37093355570e-4", "0.00000000058e-4", "")
113
+ ELECTRON_TO_SHIELDED_HELION_MAG_MOM_RATIO = Physical.new("electron to shielded helion mag. mom. ratio", "864.058257", "0.000010", "")
114
+ ELECTRON_TO_SHIELDED_PROTON_MAG_MOM_RATIO = Physical.new("electron to shielded proton mag. mom. ratio", "-658.2275971", "0.0000072", "")
115
+ ELECTRON_VOLT = Physical.new("electron volt", "1.602176487e-19", "0.000000040e-19", "J")
116
+ ELEMENTARY_CHARGE = Physical.new("elementary charge", "1.602176487e-19", "0.000000040e-19", "C")
117
+ ELEMENTARY_CHARGE_OVER_H = Physical.new("elementary charge over h", "2.417989454e14", "0.000000060e14", "A J^-1")
118
+ FARADAY_CONSTANT = Physical.new("Faraday constant", "96485.3399", "0.0024", "C mol^-1")
119
+ #-- FARADAY_CONSTANT_FOR_CONVENTIONAL_ELECTRIC_CURRENT = Physical.new("Faraday constant for conventional electric current", "96485.3401", "0.0048", "C_90 mol^-1")
120
+ FERMI_COUPLING_CONSTANT = Physical.new("Fermi coupling constant", "1.16637e-5", "0.00001e-5", "GeV^-2")
121
+ FINE_STRUCTURE_CONSTANT = Physical.new("fine-structure constant", "7.2973525376e-3", "0.0000000050e-3", "")
122
+ FIRST_RADIATION_CONSTANT = Physical.new("first radiation constant", "3.74177118e-16", "0.00000019e-16", "W m^2")
123
+ FIRST_RADIATION_CONSTANT_FOR_SPECTRAL_RADIANCE = Physical.new("first radiation constant for spectral radiance", "1.191042759e-16", "0.000000059e-16", "W m^2 sr^-1")
124
+ HARTREE_ENERGY = Physical.new("Hartree energy", "4.35974394e-18", "0.00000022e-18", "J")
125
+ HARTREE_ENERGY_IN_EV = Physical.new("Hartree energy in eV", "27.21138386", "0.00000068", "eV")
126
+ HELION_ELECTRON_MASS_RATIO = Physical.new("helion-electron mass ratio", "5495.8852765", "0.0000052", "")
127
+ HELION_MASS = Physical.new("helion mass", "5.00641192e-27", "0.00000025e-27", "kg")
128
+ HELION_MASS_ENERGY_EQUIVALENT = Physical.new("helion mass energy equivalent", "4.49953864e-10", "0.00000022e-10", "J")
129
+ HELION_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("helion mass energy equivalent in MeV", "2808.391383", "0.000070", "MeV")
130
+ HELION_MASS_IN_U = Physical.new("helion mass in u", "3.0149322473", "0.0000000026", "u")
131
+ HELION_MOLAR_MASS = Physical.new("helion molar mass", "3.0149322473e-3", "0.0000000026e-3", "kg mol^-1")
132
+ HELION_PROTON_MASS_RATIO = Physical.new("helion-proton mass ratio", "2.9931526713", "0.0000000026", "")
133
+ INVERSE_FINE_STRUCTURE_CONSTANT = Physical.new("inverse fine-structure constant", "137.035999679", "0.000000094", "")
134
+ INVERSE_OF_CONDUCTANCE_QUANTUM = Physical.new("inverse of conductance quantum", "12906.4037787", "0.0000088", "ohm")
135
+ JOSEPHSON_CONSTANT = Physical.new("Josephson constant", "483597.891e9", "0.012e9", "Hz V^-1")
136
+ LATTICE_PARAMETER_OF_SILICON = Physical.new("lattice parameter of silicon", "543.102064e-12", "0.000014e-12", "m")
137
+ LOSCHMIDT_CONSTANT_101325 = Physical.new("Loschmidt constant (273.15 K, 101.325 kPa)", "2.6867774e25", "0.0000047e25", "m^-3")
138
+ MAG_CONSTANT = Physical.new("mag. constant", "12.566370614...e-7", "0", "N A^-2")
139
+ MAG_FLUX_QUANTUM = Physical.new("mag. flux quantum", "2.067833667e-15", "0.000000052e-15", "Wb")
140
+ MOLAR_GAS_CONSTANT = Physical.new("molar gas constant", "8.314472", "0.000015", "J mol^-1 K^-1")
141
+ MOLAR_MASS_CONSTANT = Physical.new("molar mass constant", "1e-3", "0", "kg mol^-1")
142
+ MOLAR_MASS_OF_CARBON_12 = Physical.new("molar mass of carbon-12", "12e-3", "0", "kg mol^-1")
143
+ MOLAR_PLANCK_CONSTANT = Physical.new("molar Planck constant", "3.9903126821e-10", "0.0000000057e-10", "J s mol^-1")
144
+ MOLAR_PLANCK_CONSTANT_TIMES_C = Physical.new("molar Planck constant times c", "0.11962656472", "0.00000000017", "J m mol^-1")
145
+ MOLAR_VOLUME_OF_IDEAL_GAS_100 = Physical.new("molar volume of ideal gas (273.15 K, 100 kPa)", "22.710981e-3", "0.000040e-3", "m^3 mol^-1")
146
+ MOLAR_VOLUME_OF_IDEAL_GAS_101325 = Physical.new("molar volume of ideal gas (273.15 K, 101.325 kPa)", "22.413996e-3", "0.000039e-3", "m^3 mol^-1")
147
+ MOLAR_VOLUME_OF_SILICON = Physical.new("molar volume of silicon", "12.0588349e-6", "0.0000011e-6", "m^3 mol^-1")
148
+ MO_X_UNIT = Physical.new("Mo x unit", "1.00209955e-13", "0.00000053e-13", "m")
149
+ MUON_COMPTON_WAVELENGTH = Physical.new("muon Compton wavelength", "11.73444104e-15", "0.00000030e-15", "m")
150
+ MUON_COMPTON_WAVELENGTH_OVER_2_PI = Physical.new("muon Compton wavelength over 2 pi", "1.867594295e-15", "0.000000047e-15", "m")
151
+ MUON_ELECTRON_MASS_RATIO = Physical.new("muon-electron mass ratio", "206.7682823", "0.0000052", "")
152
+ MUON_G_FACTOR = Physical.new("muon g factor", "-2.0023318414", "0.0000000012", "")
153
+ MUON_MAG_MOM = Physical.new("muon mag. mom.", "-4.49044786e-26", "0.00000016e-26", "J T^-1")
154
+ MUON_MAG_MOM_ANOMALY = Physical.new("muon mag. mom. anomaly", "1.16592069e-3", "0.00000060e-3", "")
155
+ MUON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("muon mag. mom. to Bohr magneton ratio", "-4.84197049e-3", "0.00000012e-3", "")
156
+ MUON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("muon mag. mom. to nuclear magneton ratio", "-8.89059705", "0.00000023", "")
157
+ MUON_MASS = Physical.new("muon mass", "1.88353130e-28", "0.00000011e-28", "kg")
158
+ MUON_MASS_ENERGY_EQUIVALENT = Physical.new("muon mass energy equivalent", "1.692833510e-11", "0.000000095e-11", "J")
159
+ MUON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("muon mass energy equivalent in MeV", "105.6583668", "0.0000038", "MeV")
160
+ MUON_MASS_IN_U = Physical.new("muon mass in u", "0.1134289256", "0.0000000029", "u")
161
+ MUON_MOLAR_MASS = Physical.new("muon molar mass", "0.1134289256e-3", "0.0000000029e-3", "kg mol^-1")
162
+ MUON_NEUTRON_MASS_RATIO = Physical.new("muon-neutron mass ratio", "0.1124545167", "0.0000000029", "")
163
+ MUON_PROTON_MAG_MOM_RATIO = Physical.new("muon-proton mag. mom. ratio", "-3.183345137", "0.000000085", "")
164
+ MUON_PROTON_MASS_RATIO = Physical.new("muon-proton mass ratio", "0.1126095261", "0.0000000029", "")
165
+ MUON_TAU_MASS_RATIO = Physical.new("muon-tau mass ratio", "5.94592e-2", "0.00097e-2", "")
166
+ NATURAL_UNIT_OF_ACTION = Physical.new("natural unit of action", "1.054571628e-34", "0.000000053e-34", "J s")
167
+ NATURAL_UNIT_OF_ACTION_IN_EV_S = Physical.new("natural unit of action in eV s", "6.58211899e-16", "0.00000016e-16", "eV s")
168
+ NATURAL_UNIT_OF_ENERGY = Physical.new("natural unit of energy", "8.18710438e-14", "0.00000041e-14", "J")
169
+ NATURAL_UNIT_OF_ENERGY_IN_MEV = Physical.new("natural unit of energy in MeV", "0.510998910", "0.000000013", "MeV")
170
+ NATURAL_UNIT_OF_LENGTH = Physical.new("natural unit of length", "386.15926459e-15", "0.00000053e-15", "m")
171
+ NATURAL_UNIT_OF_MASS = Physical.new("natural unit of mass", "9.10938215e-31", "0.00000045e-31", "kg")
172
+ NATURAL_UNIT_OF_MOMENTUM = Physical.new("natural unit of momentum", "2.73092406e-22", "0.00000014e-22", "kg m s^-1")
173
+ NATURAL_UNIT_OF_MOMENTUM_IN_MEV_C = Physical.new("natural unit of momentum in MeV/c", "0.510998910", "0.000000013", "MeV/c")
174
+ NATURAL_UNIT_OF_TIME = Physical.new("natural unit of time", "1.2880886570e-21", "0.0000000018e-21", "s")
175
+ NATURAL_UNIT_OF_VELOCITY = Physical.new("natural unit of velocity", "299792458", "0", "m s^-1")
176
+ NEUTRON_COMPTON_WAVELENGTH = Physical.new("neutron Compton wavelength", "1.3195908951e-15", "0.0000000020e-15", "m")
177
+ NEUTRON_COMPTON_WAVELENGTH_OVER_2_PI = Physical.new("neutron Compton wavelength over 2 pi", "0.21001941382e-15", "0.00000000031e-15", "m")
178
+ NEUTRON_ELECTRON_MAG_MOM_RATIO = Physical.new("neutron-electron mag. mom. ratio", "1.04066882e-3", "0.00000025e-3", "")
179
+ NEUTRON_ELECTRON_MASS_RATIO = Physical.new("neutron-electron mass ratio", "1838.6836605", "0.0000011", "")
180
+ NEUTRON_G_FACTOR = Physical.new("neutron g factor", "-3.82608545", "0.00000090", "")
181
+ NEUTRON_GYROMAG_RATIO = Physical.new("neutron gyromag. ratio", "1.83247185e8", "0.00000043e8", "s^-1 T^-1")
182
+ NEUTRON_GYROMAG_RATIO_OVER_2_PI = Physical.new("neutron gyromag. ratio over 2 pi", "29.1646954", "0.0000069", "MHz T^-1")
183
+ NEUTRON_MAG_MOM = Physical.new("neutron mag. mom.", "-0.96623641e-26", "0.00000023e-26", "J T^-1")
184
+ NEUTRON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("neutron mag. mom. to Bohr magneton ratio", "-1.04187563e-3", "0.00000025e-3", "")
185
+ NEUTRON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("neutron mag. mom. to nuclear magneton ratio", "-1.91304273", "0.00000045", "")
186
+ NEUTRON_MASS = Physical.new("neutron mass", "1.674927211e-27", "0.000000084e-27", "kg")
187
+ NEUTRON_MASS_ENERGY_EQUIVALENT = Physical.new("neutron mass energy equivalent", "1.505349505e-10", "0.000000075e-10", "J")
188
+ NEUTRON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("neutron mass energy equivalent in MeV", "939.565346", "0.000023", "MeV")
189
+ NEUTRON_MASS_IN_U = Physical.new("neutron mass in u", "1.00866491597", "0.00000000043", "u")
190
+ NEUTRON_MOLAR_MASS = Physical.new("neutron molar mass", "1.00866491597e-3", "0.00000000043e-3", "kg mol^-1")
191
+ NEUTRON_MUON_MASS_RATIO = Physical.new("neutron-muon mass ratio", "8.89248409", "0.00000023", "")
192
+ NEUTRON_PROTON_MAG_MOM_RATIO = Physical.new("neutron-proton mag. mom. ratio", "-0.68497934", "0.00000016", "")
193
+ NEUTRON_PROTON_MASS_RATIO = Physical.new("neutron-proton mass ratio", "1.00137841918", "0.00000000046", "")
194
+ NEUTRON_TAU_MASS_RATIO = Physical.new("neutron-tau mass ratio", "0.528740", "0.000086", "")
195
+ NEUTRON_TO_SHIELDED_PROTON_MAG_MOM_RATIO = Physical.new("neutron to shielded proton mag. mom. ratio", "-0.68499694", "0.00000016", "")
196
+ NEWTONIAN_CONSTANT_OF_GRAVITATION = Physical.new("Newtonian constant of gravitation", "6.67428e-11", "0.00067e-11", "m^3 kg^-1 s^-2")
197
+ #-- Expanded units for parsing from: "(GeV/c^2)^-2"
198
+ NEWTONIAN_CONSTANT_OF_GRAVITATION_OVER_H_BAR_C = Physical.new("Newtonian constant of gravitation over h-bar c", "6.70881e-39", "0.00067e-39", "GeV^-2 c^-4")
199
+ NUCLEAR_MAGNETON = Physical.new("nuclear magneton", "5.05078324e-27", "0.00000013e-27", "J T^-1")
200
+ NUCLEAR_MAGNETON_IN_EV_T = Physical.new("nuclear magneton in eV/T", "3.1524512326e-8", "0.0000000045e-8", "eV T^-1")
201
+ NUCLEAR_MAGNETON_IN_INVERSE_METERS_PER_TESLA = Physical.new("nuclear magneton in inverse meters per tesla", "2.542623616e-2", "0.000000064e-2", "m^-1 T^-1")
202
+ NUCLEAR_MAGNETON_IN_K_T = Physical.new("nuclear magneton in K/T", "3.6582637e-4", "0.0000064e-4", "K T^-1")
203
+ NUCLEAR_MAGNETON_IN_MHZ_T = Physical.new("nuclear magneton in MHz/T", "7.62259384", "0.00000019", "MHz T^-1")
204
+ PLANCK_CONSTANT = Physical.new("Planck constant", "6.62606896e-34", "0.00000033e-34", "J s")
205
+ PLANCK_CONSTANT_IN_EV_S = Physical.new("Planck constant in eV s", "4.13566733e-15", "0.00000010e-15", "eV s")
206
+ PLANCK_CONSTANT_OVER_2_PI = Physical.new("Planck constant over 2 pi", "1.054571628e-34", "0.000000053e-34", "J s")
207
+ PLANCK_CONSTANT_OVER_2_PI_IN_EV_S = Physical.new("Planck constant over 2 pi in eV s", "6.58211899e-16", "0.00000016e-16", "eV s")
208
+ PLANCK_CONSTANT_OVER_2_PI_TIMES_C_IN_MEV_FM = Physical.new("Planck constant over 2 pi times c in MeV fm", "197.3269631", "0.0000049", "MeV fm")
209
+ PLANCK_LENGTH = Physical.new("Planck length", "1.616252e-35", "0.000081e-35", "m")
210
+ PLANCK_MASS = Physical.new("Planck mass", "2.17644e-8", "0.00011e-8", "kg")
211
+ PLANCK_MASS_ENERGY_EQUIVALENT_IN_GEV = Physical.new("Planck mass energy equivalent in GeV", "1.220892e19", "0.000061e19", "GeV")
212
+ PLANCK_TEMPERATURE = Physical.new("Planck temperature", "1.416785e32", "0.000071e32", "K")
213
+ PLANCK_TIME = Physical.new("Planck time", "5.39124e-44", "0.00027e-44", "s")
214
+ PROTON_CHARGE_TO_MASS_QUOTIENT = Physical.new("proton charge to mass quotient", "9.57883392e7", "0.00000024e7", "C kg^-1")
215
+ PROTON_COMPTON_WAVELENGTH = Physical.new("proton Compton wavelength", "1.3214098446e-15", "0.0000000019e-15", "m")
216
+ PROTON_COMPTON_WAVELENGTH_OVER_2_PI = Physical.new("proton Compton wavelength over 2 pi", "0.21030890861e-15", "0.00000000030e-15", "m")
217
+ PROTON_ELECTRON_MASS_RATIO = Physical.new("proton-electron mass ratio", "1836.15267247", "0.00000080", "")
218
+ PROTON_G_FACTOR = Physical.new("proton g factor", "5.585694713", "0.000000046", "")
219
+ PROTON_GYROMAG_RATIO = Physical.new("proton gyromag. ratio", "2.675222099e8", "0.000000070e8", "s^-1 T^-1")
220
+ PROTON_GYROMAG_RATIO_OVER_2_PI = Physical.new("proton gyromag. ratio over 2 pi", "42.5774821", "0.0000011", "MHz T^-1")
221
+ PROTON_MAG_MOM = Physical.new("proton mag. mom.", "1.410606662e-26", "0.000000037e-26", "J T^-1")
222
+ PROTON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("proton mag. mom. to Bohr magneton ratio", "1.521032209e-3", "0.000000012e-3", "")
223
+ PROTON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("proton mag. mom. to nuclear magneton ratio", "2.792847356", "0.000000023", "")
224
+ PROTON_MAG_SHIELDING_CORRECTION = Physical.new("proton mag. shielding correction", "25.694e-6", "0.014e-6", "")
225
+ PROTON_MASS = Physical.new("proton mass", "1.672621637e-27", "0.000000083e-27", "kg")
226
+ PROTON_MASS_ENERGY_EQUIVALENT = Physical.new("proton mass energy equivalent", "1.503277359e-10", "0.000000075e-10", "J")
227
+ PROTON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("proton mass energy equivalent in MeV", "938.272013", "0.000023", "MeV")
228
+ PROTON_MASS_IN_U = Physical.new("proton mass in u", "1.00727646677", "0.00000000010", "u")
229
+ PROTON_MOLAR_MASS = Physical.new("proton molar mass", "1.00727646677e-3", "0.00000000010e-3", "kg mol^-1")
230
+ PROTON_MUON_MASS_RATIO = Physical.new("proton-muon mass ratio", "8.88024339", "0.00000023", "")
231
+ PROTON_NEUTRON_MAG_MOM_RATIO = Physical.new("proton-neutron mag. mom. ratio", "-1.45989806", "0.00000034", "")
232
+ PROTON_NEUTRON_MASS_RATIO = Physical.new("proton-neutron mass ratio", "0.99862347824", "0.00000000046", "")
233
+ PROTON_RMS_CHARGE_RADIUS = Physical.new("proton rms charge radius", "0.8768e-15", "0.0069e-15", "m")
234
+ PROTON_TAU_MASS_RATIO = Physical.new("proton-tau mass ratio", "0.528012", "0.000086", "")
235
+ QUANTUM_OF_CIRCULATION = Physical.new("quantum of circulation", "3.6369475199e-4", "0.0000000050e-4", "m^2 s^-1")
236
+ QUANTUM_OF_CIRCULATION_TIMES_2 = Physical.new("quantum of circulation times 2", "7.273895040e-4", "0.000000010e-4", "m^2 s^-1")
237
+ RYDBERG_CONSTANT = Physical.new("Rydberg constant", "10973731.568527", "0.000073", "m^-1")
238
+ RYDBERG_CONSTANT_TIMES_C_IN_HZ = Physical.new("Rydberg constant times c in Hz", "3.289841960361e15", "0.000000000022e15", "Hz")
239
+ RYDBERG_CONSTANT_TIMES_HC_IN_EV = Physical.new("Rydberg constant times hc in eV", "13.60569193", "0.00000034", "eV")
240
+ RYDBERG_CONSTANT_TIMES_HC_IN_J = Physical.new("Rydberg constant times hc in J", "2.17987197e-18", "0.00000011e-18", "J")
241
+ SACKUR_TETRODE_CONSTANT_100 = Physical.new("Sackur-Tetrode constant (1 K, 100 kPa)", "-1.1517047", "0.0000044", "")
242
+ SACKUR_TETRODE_CONSTANT_101325 = Physical.new("Sackur-Tetrode constant (1 K, 101.325 kPa)", "-1.1648677", "0.0000044", "")
243
+ SECOND_RADIATION_CONSTANT = Physical.new("second radiation constant", "1.4387752e-2", "0.0000025e-2", "m K")
244
+ SHIELDED_HELION_GYROMAG_RATIO = Physical.new("shielded helion gyromag. ratio", "2.037894730e8", "0.000000056e8", "s^-1 T^-1")
245
+ SHIELDED_HELION_GYROMAG_RATIO_OVER_2_PI = Physical.new("shielded helion gyromag. ratio over 2 pi", "32.43410198", "0.00000090", "MHz T^-1")
246
+ SHIELDED_HELION_MAG_MOM = Physical.new("shielded helion mag. mom.", "-1.074552982e-26", "0.000000030e-26", "J T^-1")
247
+ SHIELDED_HELION_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("shielded helion mag. mom. to Bohr magneton ratio", "-1.158671471e-3", "0.000000014e-3", "")
248
+ SHIELDED_HELION_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("shielded helion mag. mom. to nuclear magneton ratio", "-2.127497718", "0.000000025", "")
249
+ SHIELDED_HELION_TO_PROTON_MAG_MOM_RATIO = Physical.new("shielded helion to proton mag. mom. ratio", "-0.761766558", "0.000000011", "")
250
+ SHIELDED_HELION_TO_SHIELDED_PROTON_MAG_MOM_RATIO = Physical.new("shielded helion to shielded proton mag. mom. ratio", "-0.7617861313", "0.0000000033", "")
251
+ SHIELDED_PROTON_GYROMAG_RATIO = Physical.new("shielded proton gyromag. ratio", "2.675153362e8", "0.000000073e8", "s^-1 T^-1")
252
+ SHIELDED_PROTON_GYROMAG_RATIO_OVER_2_PI = Physical.new("shielded proton gyromag. ratio over 2 pi", "42.5763881", "0.0000012", "MHz T^-1")
253
+ SHIELDED_PROTON_MAG_MOM = Physical.new("shielded proton mag. mom.", "1.410570419e-26", "0.000000038e-26", "J T^-1")
254
+ SHIELDED_PROTON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("shielded proton mag. mom. to Bohr magneton ratio", "1.520993128e-3", "0.000000017e-3", "")
255
+ SHIELDED_PROTON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("shielded proton mag. mom. to nuclear magneton ratio", "2.792775598", "0.000000030", "")
256
+ SPEED_OF_LIGHT_IN_VACUUM = Physical.new("speed of light in vacuum", "299792458", "0", "m s^-1")
257
+ STANDARD_ACCELERATION_OF_GRAVITY = Physical.new("standard acceleration of gravity", "9.80665", "0", "m s^-2")
258
+ STANDARD_ATMOSPHERE = Physical.new("standard atmosphere", "101325", "0", "Pa")
259
+ STEFAN_BOLTZMANN_CONSTANT = Physical.new("Stefan-Boltzmann constant", "5.670400e-8", "0.000040e-8", "W m^-2 K^-4")
260
+ TAU_COMPTON_WAVELENGTH = Physical.new("tau Compton wavelength", "0.69772e-15", "0.00011e-15", "m")
261
+ TAU_COMPTON_WAVELENGTH_OVER_2_PI = Physical.new("tau Compton wavelength over 2 pi", "0.111046e-15", "0.000018e-15", "m")
262
+ TAU_ELECTRON_MASS_RATIO = Physical.new("tau-electron mass ratio", "3477.48", "0.57", "")
263
+ TAU_MASS = Physical.new("tau mass", "3.16777e-27", "0.00052e-27", "kg")
264
+ TAU_MASS_ENERGY_EQUIVALENT = Physical.new("tau mass energy equivalent", "2.84705e-10", "0.00046e-10", "J")
265
+ TAU_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("tau mass energy equivalent in MeV", "1776.99", "0.29", "MeV")
266
+ TAU_MASS_IN_U = Physical.new("tau mass in u", "1.90768", "0.00031", "u")
267
+ TAU_MOLAR_MASS = Physical.new("tau molar mass", "1.90768e-3", "0.00031e-3", "kg mol^-1")
268
+ TAU_MUON_MASS_RATIO = Physical.new("tau-muon mass ratio", "16.8183", "0.0027", "")
269
+ TAU_NEUTRON_MASS_RATIO = Physical.new("tau-neutron mass ratio", "1.89129", "0.00031", "")
270
+ TAU_PROTON_MASS_RATIO = Physical.new("tau-proton mass ratio", "1.89390", "0.00031", "")
271
+ THOMSON_CROSS_SECTION = Physical.new("Thomson cross section", "0.6652458558e-28", "0.0000000027e-28", "m^2")
272
+ TRITON_ELECTRON_MAG_MOM_RATIO = Physical.new("triton-electron mag. mom. ratio", "-1.620514423e-3", "0.000000021e-3", "")
273
+ TRITON_ELECTRON_MASS_RATIO = Physical.new("triton-electron mass ratio", "5496.9215269", "0.0000051", "")
274
+ TRITON_G_FACTOR = Physical.new("triton g factor", "5.957924896", "0.000000076", "")
275
+ TRITON_MAG_MOM = Physical.new("triton mag. mom.", "1.504609361e-26", "0.000000042e-26", "J T^-1")
276
+ TRITON_MAG_MOM_TO_BOHR_MAGNETON_RATIO = Physical.new("triton mag. mom. to Bohr magneton ratio", "1.622393657e-3", "0.000000021e-3", "")
277
+ TRITON_MAG_MOM_TO_NUCLEAR_MAGNETON_RATIO = Physical.new("triton mag. mom. to nuclear magneton ratio", "2.978962448", "0.000000038", "")
278
+ TRITON_MASS = Physical.new("triton mass", "5.00735588e-27", "0.00000025e-27", "kg")
279
+ TRITON_MASS_ENERGY_EQUIVALENT = Physical.new("triton mass energy equivalent", "4.50038703e-10", "0.00000022e-10", "J")
280
+ TRITON_MASS_ENERGY_EQUIVALENT_IN_MEV = Physical.new("triton mass energy equivalent in MeV", "2808.920906", "0.000070", "MeV")
281
+ TRITON_MASS_IN_U = Physical.new("triton mass in u", "3.0155007134", "0.0000000025", "u")
282
+ TRITON_MOLAR_MASS = Physical.new("triton molar mass", "3.0155007134e-3", "0.0000000025e-3", "kg mol^-1")
283
+ TRITON_NEUTRON_MAG_MOM_RATIO = Physical.new("triton-neutron mag. mom. ratio", "-1.55718553", "0.00000037", "")
284
+ TRITON_PROTON_MAG_MOM_RATIO = Physical.new("triton-proton mag. mom. ratio", "1.066639908", "0.000000010", "")
285
+ TRITON_PROTON_MASS_RATIO = Physical.new("triton-proton mass ratio", "2.9937170309", "0.0000000025", "")
286
+ UNIFIED_ATOMIC_MASS_UNIT = Physical.new("unified atomic mass unit", "1.660538782e-27", "0.000000083e-27", "kg")
287
+ VON_KLITZING_CONSTANT = Physical.new("von Klitzing constant", "25812.807557", "0.000018", "ohm")
288
+ WEAK_MIXING_ANGLE = Physical.new("weak mixing angle", "0.22255", "0.00056", "")
289
+ WIEN_FREQUENCY_DISPLACEMENT_LAW_CONSTANT = Physical.new("Wien frequency displacement law constant", "5.878933e10", "0.000010e10", "Hz K^-1")
290
+ WIEN_WAVELENGTH_DISPLACEMENT_LAW_CONSTANT = Physical.new("Wien wavelength displacement law constant", "2.8977685e-3", "0.0000051e-3", "m K")
291
+
292
+ include Constants::Library
293
+ library.index_by_attribute :name
294
+
295
+ end
296
+ end
297
+ end