1use super::Element;
2use crate::Kelvin;
3
4#[cfg(feature = "ranges")]
5pub const MELTING_POINT_RANGE: core::ops::RangeInclusive<Kelvin> = Kelvin(13.99)..=Kelvin(3687.15);
17
18macro_rules! kel {
19 ($value:literal) => {
20 Some(Kelvin($value))
21 };
22}
23
24impl Element {
25 pub const fn melting_point(&self) -> Option<Kelvin> {
43 use Element as E;
44 match self {
45 E::H => kel!(13.99),
46 E::He => None,
47 E::Li => kel!(453.65),
48 E::Be => kel!(1560.15),
49 E::B => kel!(2350.15),
50 E::C => None, E::N => kel!(63.15),
52 E::O => kel!(54.36),
53 E::F => kel!(53.48),
54 E::Ne => kel!(24.56),
55 E::Na => kel!(370.944),
56 E::Mg => kel!(923.15),
57 E::Al => kel!(933.473),
58 E::Si => kel!(1687.15),
59 E::P => kel!(317.3), E::S => kel!(368.35), E::Cl => kel!(171.65),
62 E::Ar => kel!(83.81),
63 E::K => kel!(336.65),
64 E::Ca => kel!(1115.15),
65 E::Sc => kel!(1814.15),
66 E::Ti => kel!(1943.15),
67 E::V => kel!(2183.15),
68 E::Cr => kel!(2180.15),
69 E::Mn => kel!(1519.15),
70 E::Fe => kel!(1811.15),
71 E::Co => kel!(1768.15),
72 E::Ni => kel!(1728.15),
73 E::Cu => kel!(1357.77),
74 E::Zn => kel!(692.677),
75 E::Ga => kel!(302.9146),
76 E::Ge => kel!(1211.4),
77 E::As => kel!(1090.15), E::Se => kel!(453.15), E::Br => kel!(265.95),
80 E::Kr => kel!(115.78),
81 E::Rb => kel!(312.45),
82 E::Sr => kel!(1050.15),
83 E::Y => kel!(1795.15),
84 E::Zr => kel!(2127.15),
85 E::Nb => kel!(2750.15),
86 E::Mo => kel!(2895.15),
87 E::Tc => kel!(2430.15),
88 E::Ru => kel!(2606.15),
89 E::Rh => kel!(2236.15),
90 E::Pd => kel!(1827.95),
91 E::Ag => kel!(1234.93),
92 E::Cd => kel!(594.219),
93 E::In => kel!(429.7485),
94 E::Sn => kel!(286.35), E::Sb => kel!(903.778), E::Te => kel!(722.66),
97 E::I => kel!(386.85),
98 E::Xe => kel!(161.4),
99 E::Cs => kel!(301.65),
100 E::Ba => kel!(1000.15),
101 E::La => kel!(1193.15),
102 E::Ce => kel!(1072.15),
103 E::Pr => kel!(1204.15),
104 E::Nd => kel!(1289.15),
105 E::Pm => kel!(1315.15),
106 E::Sm => kel!(1345.15),
107 E::Eu => kel!(1095.15),
108 E::Gd => kel!(1586.15),
109 E::Tb => kel!(1632.15),
110 E::Dy => kel!(1685.15),
111 E::Ho => kel!(1745.15),
112 E::Er => kel!(1802.15),
113 E::Tm => kel!(1818.15),
114 E::Yb => kel!(1097.15),
115 E::Lu => kel!(1936.15),
116 E::Hf => kel!(2506.15),
117 E::Ta => kel!(3290.15),
118 E::W => kel!(3687.15),
119 E::Re => kel!(3458.15),
120 E::Os => kel!(3306.15),
121 E::Ir => kel!(2719.15),
122 E::Pt => kel!(2041.35),
123 E::Au => kel!(1337.33),
124 E::Hg => kel!(234.321),
125 E::Tl => kel!(577.15),
126 E::Pb => kel!(600.612),
127 E::Bi => kel!(544.552),
128 E::Po => kel!(527.15),
129 E::At => kel!(575.15),
130 E::Rn => kel!(202.15),
131 E::Fr => kel!(294.15),
132 E::Ra => kel!(969.15),
133 E::Ac => kel!(1323.15),
134 E::Th => kel!(2023.15),
135 E::Pa => kel!(1845.15),
136 E::U => kel!(1408.15),
137 E::Np => kel!(917.15),
138 E::Pu => kel!(913.15),
139 E::Am => kel!(1449.15),
140 E::Cm => kel!(1618.15),
141 E::Bk => kel!(1259.15), E::Cf => kel!(1173.15),
143 E::Es => kel!(1133.15),
144 E::Fm => kel!(1800.15),
145 E::Md => kel!(1100.15),
146 E::No => kel!(1100.15),
147 E::Lr => kel!(1900.15),
148 E::Rf => None,
149 E::Db => None,
150 E::Sg => None,
151 E::Bh => None,
152 E::Hs => None,
153 E::Mt => None,
154 E::Ds => None,
155 E::Rg => None,
156 E::Cn => None,
157 E::Nh => None,
158 E::Fl => None,
159 E::Mc => None,
160 E::Lv => None,
161 E::Ts => None,
162 E::Og => None,
163 }
164 }
165}