conspire/constitutive/electrical/conduction/ohmic/
mod.rs1#[cfg(test)]
2mod test;
3
4use crate::{
5 constitutive::{ConstitutiveError, diffusion::Diffusion, electrical::Electrical},
6 math::{IDENTITY_00, Quantity, Tensor},
7 mechanics::{CurrentDensity, CurrentDensityTangent, ElectricField},
8 units::{Current, ElectricalConductivity, PowerDensity},
9};
10
11#[doc = include_str!("doc.md")]
12#[derive(Clone, Debug)]
13pub struct Ohmic {
14 pub electrical_conductivity: Quantity<ElectricalConductivity>,
16}
17
18impl Electrical for Ohmic {}
19
20impl Diffusion for Ohmic {
21 type Balance = Current;
22 #[doc = include_str!("potential.md")]
23 fn potential(
24 &self,
25 potential_gradient: &ElectricField,
26 ) -> Result<Quantity<PowerDensity>, ConstitutiveError> {
27 Ok(potential_gradient.norm_squared() * self.electrical_conductivity * 0.5)
28 }
29 #[doc = include_str!("current_density.md")]
30 fn flux(
31 &self,
32 potential_gradient: &ElectricField,
33 ) -> Result<CurrentDensity, ConstitutiveError> {
34 Ok(potential_gradient * -self.electrical_conductivity)
35 }
36 #[doc = include_str!("current_density_tangent.md")]
37 fn tangent(
38 &self,
39 _potential_gradient: &ElectricField,
40 ) -> Result<CurrentDensityTangent, ConstitutiveError> {
41 Ok(IDENTITY_00 * -self.electrical_conductivity)
42 }
43}