Skip to main content

conspire/constitutive/electrical/conduction/
mod.rs

1//! Electrical conduction constitutive models.
2//!
3//! ---
4//!
5#![doc = include_str!("doc.md")]
6
7#[cfg(feature = "doc")]
8pub mod doc;
9
10#[cfg(test)]
11pub mod test;
12
13mod ohmic;
14
15use crate::{
16    constitutive::{ConstitutiveError, diffusion::Diffusion, electrical::Electrical},
17    mechanics::{CurrentDensity, CurrentDensityTangent, ElectricField},
18    units::Current,
19};
20
21pub use ohmic::Ohmic;
22
23/// Required methods for electrical conduction constitutive models.
24pub trait ElectricalConduction
25where
26    Self: Electrical + Diffusion<Balance = Current>,
27{
28    /// Calculates and returns the current density.
29    fn current_density(
30        &self,
31        potential_gradient: &ElectricField,
32    ) -> Result<CurrentDensity, ConstitutiveError> {
33        self.flux(potential_gradient)
34    }
35    /// Calculates and returns the tangent to the current density.
36    fn current_density_tangent(
37        &self,
38        potential_gradient: &ElectricField,
39    ) -> Result<CurrentDensityTangent, ConstitutiveError> {
40        self.tangent(potential_gradient)
41    }
42}
43
44impl<C> ElectricalConduction for C where C: Electrical + Diffusion<Balance = Current> {}