uom/si/
linear_density_of_states.rs1quantity! {
4 quantity: LinearDensityOfStates; "linear density of states";
6 dimension: ISQ<
9 N3, N1, P2, Z0, Z0, Z0, Z0>; kind: dyn (crate::si::marker::ConstituentConcentrationKind);
17 units {
18 @state_per_meter_joule: prefix!(none); "1/(m · J)", "state per meter joule",
19 "states per meter joule";
20 @state_per_centimeter_joule: prefix!(none) / prefix!(centi); "1/(cm · J)",
21 "state per centimeter joule", "states per centimeter joule";
22 @state_per_centimeter_electronvolt: prefix!(none) / prefix!(centi) / 1.602_176_634_E-19;
23 "1/(cm · eV)", "state per centimeter electronvolt",
24 "states per centimeter electronvolt";
25 }
26}
27
28#[cfg(test)]
29mod test {
30 storage_types! {
31 use crate::num::One;
32 use crate::si::linear_density_of_states as ldos;
33 use crate::si::energy as e;
34 use crate::si::quantities::*;
35 use crate::si::length as l;
36 use crate::tests::Test;
37
38 #[test]
39 fn check_dimension() {
40 let _: LinearDensityOfStates<V> = (V::one()
41 / Energy::new::<e::joule>(V::one())
42 / Length::new::<l::meter>(V::one())).into();
43 }
44
45 #[test]
46 fn check_units() {
47 test::<l::meter, e::joule, ldos::state_per_meter_joule>();
48 test::<l::centimeter, e::joule, ldos::state_per_centimeter_joule>();
49 test::<l::centimeter, e::electronvolt, ldos::state_per_centimeter_electronvolt>();
50
51 fn test<L: l::Conversion<V>, E: e::Conversion<V>, LDOS: ldos::Conversion<V>>() {
52 Test::assert_approx_eq(&LinearDensityOfStates::new::<LDOS>(V::one()),
53 &(V::one()
54 / Energy::new::<E>(V::one())
55 / Length::new::<L>(V::one())).into());
56 }
57 }
58 }
59}