deep_causality_physics/em/
quantities.rs1use deep_causality_core::CausalityError;
7use deep_causality_multivector::{CausalMultiVector, Metric};
8
9#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Default)]
11pub struct ElectricPotential(f64);
12
13impl ElectricPotential {
14 pub fn new(val: f64) -> Result<Self, CausalityError> {
15 Ok(Self(val))
16 }
17 pub fn new_unchecked(val: f64) -> Self {
18 Self(val)
19 }
20 pub fn value(&self) -> f64 {
21 self.0
22 }
23}
24impl From<ElectricPotential> for f64 {
25 fn from(val: ElectricPotential) -> Self {
26 val.0
27 }
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Default)]
32pub struct MagneticFlux(f64);
33
34impl MagneticFlux {
35 pub fn new(val: f64) -> Result<Self, CausalityError> {
36 Ok(Self(val))
37 }
38 pub fn new_unchecked(val: f64) -> Self {
39 Self(val)
40 }
41 pub fn value(&self) -> f64 {
42 self.0
43 }
44}
45impl From<MagneticFlux> for f64 {
46 fn from(val: MagneticFlux) -> Self {
47 val.0
48 }
49}
50
51#[derive(Debug, Clone, PartialEq)]
54pub struct PhysicalField(pub CausalMultiVector<f64>);
55
56impl Default for PhysicalField {
57 fn default() -> Self {
58 Self(CausalMultiVector::new(vec![0.0; 8], Metric::Euclidean(3)).unwrap())
61 }
62}
63
64impl PhysicalField {
65 pub fn new(val: CausalMultiVector<f64>) -> Self {
66 Self(val)
67 }
68 pub fn inner(&self) -> &CausalMultiVector<f64> {
69 &self.0
70 }
71 pub fn into_inner(self) -> CausalMultiVector<f64> {
72 self.0
73 }
74}