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