Skip to main content

conspire/constitutive/chemical/diffusion/
mod.rs

1//! Chemical diffusion 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 fick;
14
15use crate::{
16    constitutive::{ConstitutiveError, chemical::Chemical, diffusion::Diffusion},
17    mechanics::{ConcentrationGradient, MolarFlux, MolarFluxTangent},
18    units::MolarFlowRate,
19};
20
21pub use fick::Fick;
22
23/// Required methods for chemical diffusion constitutive models.
24pub trait ChemicalDiffusion
25where
26    Self: Chemical + Diffusion<Balance = MolarFlowRate>,
27{
28    /// Calculates and returns the molar flux.
29    fn molar_flux(
30        &self,
31        concentration_gradient: &ConcentrationGradient,
32    ) -> Result<MolarFlux, ConstitutiveError> {
33        self.flux(concentration_gradient)
34    }
35    /// Calculates and returns the tangent to the molar flux.
36    fn molar_flux_tangent(
37        &self,
38        concentration_gradient: &ConcentrationGradient,
39    ) -> Result<MolarFluxTangent, ConstitutiveError> {
40        self.tangent(concentration_gradient)
41    }
42}
43
44impl<C> ChemicalDiffusion for C where C: Chemical + Diffusion<Balance = MolarFlowRate> {}