bahuvrihi-constants 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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