sciforge-lib 0.0.4

Scientific computing library — mathematics, physics, chemistry, biology, astronomy, geology, meteorology.
Documentation
pub fn schmid_factor(angle_phi_rad: f64, angle_lambda_rad: f64) -> f64 {
    angle_phi_rad.cos() * angle_lambda_rad.cos()
}

pub fn resolved_shear_stress(applied_stress_pa: f64, schmid: f64) -> f64 {
    applied_stress_pa * schmid
}

pub fn taylor_factor_fcc() -> f64 {
    3.06
}

pub fn taylor_factor_bcc() -> f64 {
    2.75
}

pub fn polycrystal_yield_stress(critical_resolved_shear_pa: f64, taylor_factor: f64) -> f64 {
    taylor_factor * critical_resolved_shear_pa
}

pub fn power_law_slip_rate(
    tau_pa: f64,
    tau_critical_pa: f64,
    gamma_dot_0: f64,
    rate_sensitivity: f64,
) -> f64 {
    gamma_dot_0
        * (tau_pa.abs() / tau_critical_pa).powf(1.0 / rate_sensitivity)
        * tau_pa.signum()
}

pub fn voce_hardening(tau_0: f64, tau_sat: f64, h0: f64, gamma_acc: f64) -> f64 {
    tau_0 + (tau_sat - tau_0) * (1.0 - (-h0 * gamma_acc / (tau_sat - tau_0)).exp())
}

pub fn slip_systems_count(crystal: &str) -> u32 {
    match crystal {
        "fcc" => 12,
        "bcc" => 48,
        "hcp_basal" => 3,
        "hcp_prismatic" => 3,
        "hcp_pyramidal_a" => 6,
        "hcp_pyramidal_ca" => 12,
        _ => 0,
    }
}