uom/si/
volumetric_density_of_states.rs1quantity! {
4 quantity: VolumetricDensityOfStates; "volumetric density of states";
6 dimension: ISQ<
9 N5, N1, P2, Z0, Z0, Z0, Z0>; kind: dyn crate::si::marker::ConstituentConcentrationKind;
17 units {
18 @state_per_cubic_meter_joule: prefix!(none); "1/(m³ · J)",
19 "state per cubic meter joule", "states per cubic meter joule";
20 @state_per_cubic_centimeter_joule:
21 prefix!(none) / prefix!(centi) / prefix!(centi) / prefix!(centi); "1/(cm³ · J)",
22 "state per cubic centimeter joule", "states per cubic centimeter joule";
23 @state_per_cubic_centimeter_electronvolt:
24 prefix!(none) / prefix!(centi) / prefix!(centi) / prefix!(centi) / 1.602_176_634_E-19;
25 "1/(cm³ · eV)", "state per cubic centimeter electronvolt",
26 "states per cubic centimeter electronvolt";
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 storage_types! {
33 use crate::num::One;
34 use crate::si::volumetric_density_of_states as vdos;
35 use crate::si::energy as e;
36 use crate::si::quantities::*;
37 use crate::si::volume as v;
38 use crate::tests::Test;
39
40 #[test]
41 fn check_dimension() {
42 let _: VolumetricDensityOfStates<V> = (V::one()
43 / Energy::new::<e::joule>(V::one())
44 / Volume::new::<v::cubic_meter>(V::one())).into();
45 }
46
47 #[test]
48 fn check_units() {
49 test::<v::cubic_meter, e::joule, vdos::state_per_cubic_meter_joule>();
50 test::<v::cubic_centimeter, e::joule, vdos::state_per_cubic_centimeter_joule>();
51 test::<v::cubic_centimeter, e::electronvolt,
52 vdos::state_per_cubic_centimeter_electronvolt>();
53
54 fn test<U: v::Conversion<V>, E: e::Conversion<V>, VDOS: vdos::Conversion<V>>() {
55 Test::assert_approx_eq(&VolumetricDensityOfStates::new::<VDOS>(V::one()),
56 &(V::one()
57 / Energy::new::<E>(V::one())
58 / Volume::new::<U>(V::one())).into());
59 }
60 }
61 }
62}