use phf::phf_map;

// ALL THE VALUES SHOULD BE CHANGED TO THE CURRENT CODATA VALUES!!!!
pub const BOHR_TO_ANGS: f64 = 0.529177210903; // <- this value is already from CODATA 2018
pub const FS_TO_AU: f64 = 41.34137333;
pub const K_BOLTZMANN: f64 = 3.166811382 * 1.0e-6; // in hartree/Kelvin

pub const ATOM_NAMES: [&str; 87] = [
    "dummy", "H", "he", "li", "be", "b", "C", "N", "O", "f", "ne", "na", "mg", "al", "si", "p",
    "s", "cl", "ar", "k", "ca", "sc", "ti", "v", "cr", "mn", "fe", "co", "ni", "cu", "zn", "ga",
    "ge", "as", "se", "br", "kr", "rb", "sr", "y", "zr", "nb", "mo", "tc", "ru", "rh", "pd", "ag",
    "cd", "in", "sn", "sb", "te", "i", "xe", "cs", "ba", "la", "ce", "pr", "nd", "pm", "sm", "eu",
    "gd", "tb", "dy", "ho", "er", "th", "yt", "lu", "hf", "ta", "w", "re", "os", "ir", "pt", "au",
    "hg", "tl", "pb", "bi", "po", "at", "rn",
];

pub static ATOMIC_MASSES: phf::Map<u8, f64> = phf_map! {
    1u8  => 1.83736212806506E+03, 2u8 => 7.29629673246174E+03,
    3u8 => 1.26526683442463E+04, 4u8 => 1.64282019743533E+04,
    5u8  => 1.97072464298583E+04, 6u8  => 2.18941656363981E+04,
    7u8  => 2.55326508712512E+04, 8u8  => 2.91651205744034E+04,
    9u8 => 3.46337857570484E+04, 10u8 => 3.67853409287404E+04,
    11u8 => 4.19077836061925E+04, 12u8 => 4.43053024213955E+04,
    13u8 => 4.91843335720040E+04, 14u8 => 5.11967319957253E+04,
    15u8  => 5.64617112749775E+04, 16u8  => 5.84509163605039E+04,
    17u8 => 6.46268622401044E+04, 18u8 => 7.28207455721008E+04,
    19u8  => 7.12718373035363E+04, 20u8 => 7.30577210633487E+04,
    21u8 => 8.19496102361508E+04, 22u8 => 8.72561987658894E+04,
    23u8  => 9.28606691339034E+04, 24u8 => 9.47830872344425E+04,
    25u8 => 1.00145924631361E+05, 26u8 => 1.01799202374936E+05,
    27u8 => 1.07428637199509E+05, 28u8 => 1.06991517677018E+05,
    29u8 => 1.15837265898786E+05, 30u8 => 1.19180443213776E+05,
    31u8 => 1.27097247509852E+05, 32u8 => 1.32414612955777E+05,
    33u8 => 1.36573715116018E+05, 34u8 => 1.43935267607216E+05,
    35u8 => 1.45656074251355E+05, 36u8 => 1.52754401658428E+05,
    37u8 => 1.55798260699088E+05, 38u8 => 1.59721481101118E+05,
    39u8 => 1.62065442142819E+05, 40u8 => 1.66291170873869E+05,
    41u8 => 1.69357961850528E+05, 42u8 => 1.74924370308871E+05,
    43u8 => 1.78643062633070E+05, 44u8 => 1.84239330003310E+05,
    45u8 => 1.87585241650891E+05, 46u8 => 1.93991782912360E+05,
    47u8 => 1.96631689884862E+05, 48u8 => 2.04912707282102E+05,
    49u8 => 2.09300399646977E+05, 50u8 => 2.16395081277262E+05,
    51u8 => 2.21954890879618E+05, 52u8 => 2.32600559101834E+05,
    53u8  => 2.31332685537005E+05, 54u8 => 2.39332485941670E+05,
    55u8 => 2.42271805796409E+05, 56u8 => 2.50331794512363E+05,
    57u8 => 2.53209169155979E+05, 58u8 => 2.55415830243829E+05,
    59u8 => 2.56858919841109E+05, 60u8 => 2.62937067758360E+05,
    61u8 => 2.64318817161175E+05, 62u8 => 2.74089498954167E+05,
    63u8 => 2.77013411938488E+05, 64u8 => 2.86649199990308E+05,
    65u8 => 2.89703176061556E+05, 66u8 => 2.96219546348777E+05,
    67u8 => 3.00649566182166E+05, 68u8 => 3.04894489928006E+05,
    69u8 => 3.07948210794879E+05, 70u8 => 3.15458128172482E+05,
    71u8 => 3.18944949092937E+05, 72u8 => 3.25367349483435E+05,
    73u8 => 3.29847790409808E+05, 74u8  => 3.35119802392485E+05,
    75u8 => 3.39434579221592E+05, 76u8 => 3.46768059231519E+05,
    77u8 => 3.50390138470824E+05, 78u8 => 3.50147694314394E+05,
    79u8 => 3.59048072678448E+05, 80u8 => 3.65653182995586E+05,
    81u8 => 3.72567945541362E+05, 82u8 => 3.77702475281348E+05,
    83u8 => 3.80947947601296E+05, 84u8 => 3.82806562785150E+05,
    85u8 => 3.82806562785150E+05, 86u8 => 4.01035446727300E+05
};
