pub struct BrinsonModel {
pub temps: TransformationTemperatures,
pub cm: f64,
pub ca: f64,
pub h_max: f64,
pub e_a: f64,
pub e_m: f64,
pub theta: f64,
pub sigma_crit_s: f64,
pub sigma_crit_f: f64,
}Expand description
Brinson model for SMA — separates stress-induced (ξ_S) and temperature-induced (ξ_T) martensite fractions.
The total martensite fraction is ξ = ξ_S + ξ_T, where each component follows cosine kinetics with separate evolution rules. This allows capturing both superelasticity and shape memory effect within a single unified framework.
Fields§
§temps: TransformationTemperaturesTransformation temperatures.
cm: f64Clausius-Clapeyron slope for martensite (Pa / K).
ca: f64Clausius-Clapeyron slope for austenite (Pa / K).
h_max: f64Maximum transformation strain ε_L.
e_a: f64Austenite elastic modulus (Pa).
e_m: f64Martensite elastic modulus (Pa).
theta: f64Thermoelastic tensor Θ (Pa / K).
sigma_crit_s: f64Critical start stress for detwinning at T < Ms (Pa).
sigma_crit_f: f64Critical finish stress for detwinning at T < Ms (Pa).
Implementations§
Source§impl BrinsonModel
impl BrinsonModel
Sourcepub fn new(
temps: TransformationTemperatures,
cm: f64,
ca: f64,
h_max: f64,
e_a: f64,
e_m: f64,
theta: f64,
sigma_crit_s: f64,
sigma_crit_f: f64,
) -> Self
pub fn new( temps: TransformationTemperatures, cm: f64, ca: f64, h_max: f64, e_a: f64, e_m: f64, theta: f64, sigma_crit_s: f64, sigma_crit_f: f64, ) -> Self
Create a new Brinson model.
Sourcepub fn effective_modulus(&self, xi: f64) -> f64
pub fn effective_modulus(&self, xi: f64) -> f64
Effective elastic modulus via the rule of mixtures.
Sourcepub fn critical_stresses_at_temp(&self, temp: f64) -> (f64, f64)
pub fn critical_stresses_at_temp(&self, temp: f64) -> (f64, f64)
Phase diagram critical stress at temperature T (stress-induced).
Returns (sigma_ms, sigma_mf) — the start and finish stresses for
stress-induced martensitic transformation at temperature T.
Sourcepub fn xi_s_loading(
&self,
temp: f64,
stress: f64,
xi_s_prev: f64,
_xi_t_prev: f64,
) -> f64
pub fn xi_s_loading( &self, temp: f64, stress: f64, xi_s_prev: f64, _xi_t_prev: f64, ) -> f64
Compute stress-induced martensite fraction ξ_S for the loading branch.
Uses cosine kinetics between sigma_crit_s and sigma_crit_f
shifted by temperature.
Sourcepub fn xi_t_cooling(&self, temp: f64, stress: f64, xi_t_prev: f64) -> f64
pub fn xi_t_cooling(&self, temp: f64, stress: f64, xi_t_prev: f64) -> f64
Compute temperature-induced martensite fraction ξ_T for cooling.
Sourcepub fn reverse_fractions(
&self,
temp: f64,
stress: f64,
xi_s_prev: f64,
xi_t_prev: f64,
) -> (f64, f64)
pub fn reverse_fractions( &self, temp: f64, stress: f64, xi_s_prev: f64, xi_t_prev: f64, ) -> (f64, f64)
Reverse transformation (M → A): both ξ_S and ξ_T decrease.
Sourcepub fn stress_response(
&self,
strain: f64,
xi_s: f64,
xi_t: f64,
temp: f64,
temp_ref: f64,
) -> f64
pub fn stress_response( &self, strain: f64, xi_s: f64, xi_t: f64, temp: f64, temp_ref: f64, ) -> f64
Integrated constitutive relation: σ = E(ξ)(ε − ε_L ξ_S) + Θ(T − T₀).
Sourcepub fn update_state(
&self,
state: &mut SmaPhaseState,
strain_new: f64,
temp_new: f64,
)
pub fn update_state( &self, state: &mut SmaPhaseState, strain_new: f64, temp_new: f64, )
Incremental update for a full Brinson loading step.
Trait Implementations§
Source§impl Clone for BrinsonModel
impl Clone for BrinsonModel
Source§fn clone(&self) -> BrinsonModel
fn clone(&self) -> BrinsonModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more