///|
pub fn element_period(symbol : String) -> Int raise ThermoError {
match symbol {
"H" => 1
"He" => 1
"Li" => 2
"Be" => 2
"B" => 2
"C" => 2
"N" => 2
"O" => 2
"F" => 2
"Ne" => 2
"Na" => 3
"Mg" => 3
"Al" => 3
"Si" => 3
"P" => 3
"S" => 3
"Cl" => 3
"Ar" => 3
"K" => 4
"Ca" => 4
"Sc" => 4
"Ti" => 4
"V" => 4
"Cr" => 4
"Mn" => 4
"Fe" => 4
"Co" => 4
"Ni" => 4
"Cu" => 4
"Zn" => 4
"Ga" => 4
"Ge" => 4
"As" => 4
"Se" => 4
"Br" => 4
"Kr" => 4
"Rb" => 5
"Sr" => 5
"Y" => 5
"Zr" => 5
"Nb" => 5
"Mo" => 5
"Tc" => 5
"Ru" => 5
"Rh" => 5
"Pd" => 5
"Ag" => 5
"Cd" => 5
"In" => 5
"Sn" => 5
"Sb" => 5
"Te" => 5
"I" => 5
"Xe" => 5
"Cs" => 6
"Ba" => 6
"La" => 6
"Ce" => 6
"Pr" => 6
"Nd" => 6
"Pm" => 6
"Sm" => 6
"Eu" => 6
"Gd" => 6
"Tb" => 6
"Dy" => 6
"Ho" => 6
"Er" => 6
"Tm" => 6
"Yb" => 6
"Lu" => 6
"Hf" => 6
"Ta" => 6
"W" => 6
"Re" => 6
"Os" => 6
"Ir" => 6
"Pt" => 6
"Au" => 6
"Hg" => 6
"Tl" => 6
"Pb" => 6
"Bi" => 6
"Po" => 6
"At" => 6
"Rn" => 6
"Fr" => 7
"Ra" => 7
"Ac" => 7
"Th" => 7
"Pa" => 7
"U" => 7
"Np" => 7
"Pu" => 7
"Am" => 7
"Cm" => 7
"Bk" => 7
"Cf" => 7
"Es" => 7
"Fm" => 7
"Md" => 7
"No" => 7
"Lr" => 7
"Rf" => 7
"Db" => 7
"Sg" => 7
"Bh" => 7
"Hs" => 7
"Mt" => 7
"Ds" => 7
"Rg" => 7
"Cn" => 7
"Nh" => 7
"Fl" => 7
"Mc" => 7
"Lv" => 7
"Ts" => 7
"Og" => 7
_ => raise ThermoError::UnknownElement(symbol~)
}
}
///|
pub fn element_group(symbol : String) -> Int raise ThermoError {
match symbol {
"H" => 1
"He" => 18
"Li" => 1
"Be" => 2
"B" => 13
"C" => 14
"N" => 15
"O" => 16
"F" => 17
"Ne" => 18
"Na" => 1
"Mg" => 2
"Al" => 13
"Si" => 14
"P" => 15
"S" => 16
"Cl" => 17
"Ar" => 18
"K" => 1
"Ca" => 2
"Sc" => 3
"Ti" => 4
"V" => 5
"Cr" => 6
"Mn" => 7
"Fe" => 8
"Co" => 9
"Ni" => 10
"Cu" => 11
"Zn" => 12
"Ga" => 13
"Ge" => 14
"As" => 15
"Se" => 16
"Br" => 17
"Kr" => 18
"Rb" => 1
"Sr" => 2
"Y" => 3
"Zr" => 4
"Nb" => 5
"Mo" => 6
"Tc" => 7
"Ru" => 8
"Rh" => 9
"Pd" => 10
"Ag" => 11
"Cd" => 12
"In" => 13
"Sn" => 14
"Sb" => 15
"Te" => 16
"I" => 17
"Xe" => 18
"Cs" => 1
"Ba" => 2
"La" => 3
"Ce" => 3
"Pr" => 3
"Nd" => 3
"Pm" => 3
"Sm" => 3
"Eu" => 3
"Gd" => 3
"Tb" => 3
"Dy" => 3
"Ho" => 3
"Er" => 3
"Tm" => 3
"Yb" => 3
"Lu" => 3
"Hf" => 4
"Ta" => 5
"W" => 6
"Re" => 7
"Os" => 8
"Ir" => 9
"Pt" => 10
"Au" => 11
"Hg" => 12
"Tl" => 13
"Pb" => 14
"Bi" => 15
"Po" => 16
"At" => 17
"Rn" => 18
"Fr" => 1
"Ra" => 2
"Ac" => 3
"Th" => 3
"Pa" => 3
"U" => 3
"Np" => 3
"Pu" => 3
"Am" => 3
"Cm" => 3
"Bk" => 3
"Cf" => 3
"Es" => 3
"Fm" => 3
"Md" => 3
"No" => 3
"Lr" => 3
"Rf" => 4
"Db" => 5
"Sg" => 6
"Bh" => 7
"Hs" => 8
"Mt" => 9
"Ds" => 10
"Rg" => 11
"Cn" => 12
"Nh" => 13
"Fl" => 14
"Mc" => 15
"Lv" => 16
"Ts" => 17
"Og" => 18
_ => raise ThermoError::UnknownElement(symbol~)
}
}
///|
pub fn element_block(symbol : String) -> String raise ThermoError {
let group = element_group(symbol)
match symbol {
"La"
| "Ce"
| "Pr"
| "Nd"
| "Pm"
| "Sm"
| "Eu"
| "Gd"
| "Tb"
| "Dy"
| "Ho"
| "Er"
| "Tm"
| "Yb"
| "Lu"
| "Ac"
| "Th"
| "Pa"
| "U"
| "Np"
| "Pu"
| "Am"
| "Cm"
| "Bk"
| "Cf"
| "Es"
| "Fm"
| "Md"
| "No"
| "Lr" => "f"
_ =>
if group == 1 || group == 2 || symbol == "He" {
"s"
} else if group >= 3 && group <= 12 {
"d"
} else {
"p"
}
}
}
///|
pub fn element_standard_phase(symbol : String) -> String raise ThermoError {
match symbol {
"H" => "gas"
"He" => "gas"
"N" => "gas"
"O" => "gas"
"F" => "gas"
"Ne" => "gas"
"Cl" => "gas"
"Ar" => "gas"
"Kr" => "gas"
"Xe" => "gas"
"Rn" => "gas"
"Og" => "gas"
"Br" => "liquid"
"Hg" => "liquid"
_ => {
let _ = element_info(symbol)
"solid"
}
}
}
///|
pub fn element_is_naturally_abundant(symbol : String) -> Bool raise ThermoError {
match symbol {
"Tc" => false
"Pm" => false
"Np" => false
"Pu" => false
"Am" => false
"Cm" => false
"Bk" => false
"Cf" => false
"Es" => false
"Fm" => false
"Md" => false
"No" => false
"Lr" => false
"Rf" => false
"Db" => false
"Sg" => false
"Bh" => false
"Hs" => false
"Mt" => false
"Ds" => false
"Rg" => false
"Cn" => false
"Nh" => false
"Fl" => false
"Mc" => false
"Lv" => false
"Ts" => false
"Og" => false
_ => {
let _ = element_info(symbol)
true
}
}
}