castep_param_io/param/units/
energy_unit.rs1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4
5use crate::param::KeywordDisplay;
6#[derive(
7 Debug, Clone, Copy, Hash, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Default,
8)]
9pub enum EnergyUnit {
13 Hartree,
14 Millihartree,
15 #[default]
16 ElectronVolt,
17 MillielectronVolt,
18 Rydberg,
19 Millirydberg,
20 KilojoulesPerMole,
21 KilocaloriesPerMole,
22 Joules,
23 Erg,
24 Hertz,
25 Megahertz,
26 Gigahertz,
27 Terahertz,
28 Wavenumber,
29 Kelvin,
30}
31impl Display for EnergyUnit {
32 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
33 match self {
34 EnergyUnit::Hartree => f.write_str("ha"),
35 EnergyUnit::Millihartree => f.write_str("mha"),
36 EnergyUnit::ElectronVolt => f.write_str("eV"),
37 EnergyUnit::MillielectronVolt => f.write_str("meV"),
38 EnergyUnit::Rydberg => f.write_str("ry"),
39 EnergyUnit::Millirydberg => f.write_str("mry"),
40 EnergyUnit::KilojoulesPerMole => f.write_str("kj/mol"),
41 EnergyUnit::KilocaloriesPerMole => f.write_str("kcal/mol"),
42 EnergyUnit::Joules => f.write_str("j"),
43 EnergyUnit::Erg => f.write_str("erg"),
44 EnergyUnit::Hertz => f.write_str("hz"),
45 EnergyUnit::Megahertz => f.write_str("mhz"),
46 EnergyUnit::Gigahertz => f.write_str("ghz"),
47 EnergyUnit::Terahertz => f.write_str("thz"),
48 EnergyUnit::Wavenumber => f.write_str("cm-1"),
49 EnergyUnit::Kelvin => f.write_str("k"),
50 }
51 }
52}
53
54impl KeywordDisplay for EnergyUnit {
55 fn field(&self) -> String {
56 "ENERGY_UNIT".to_string()
57 }
58}