def __call__(self, temp, strain_rate, material, **overrides):
"""Solves for the yield stress and flow stress at the given condition
Args:
temp(float): Temperature, in degrees Kelvin
strain_rate(float): Strain rate, in sec**-1
material(str): Key for material type
Keyword Args:
**overrides(dict): Passed as a chain of keyword arguments. These
arguments override any material property
Return:
flow_stress(float): Flow stress in ??Pa??
yield_stress(float): Yield stress in ??Pa??
"""
g_modu, t_norm, psi_norm = self.__pre__(temp, strain_rate, material,
**overrides)
s_o = self.get_option('s_o')
s_inf = self.get_option('s_inf')
kappa = self.get_option('kappa')
beta = self.get_option('beta')
y_o = self.get_option('y_o')
y_inf = self.get_option('y_inf')
y_1 = self.get_option('y_1')
y_2 = self.get_option('y_2')
if psi_norm == 0.0:
erf_psi_norm = 0.0
else:
erf_psi_norm = erf(kappa * t_norm * log(psi_norm**(-1)))
# end
glide_flow_stress = s_o - (s_o - s_inf) * erf_psi_norm
shock_flow_stress = s_o * psi_norm**beta
glide_yield_stress = y_o - (y_o - y_inf) * erf_psi_norm
shock_yield_stress = y_1 * psi_norm**y_2
flow_stress = max((glide_flow_stress, shock_flow_stress))
yield_stress = max((glide_yield_stress,
min((shock_yield_stress, shock_flow_stress))))
flow_stress *= g_modu
yield_stress *= g_modu
return flow_stress, yield_stress
评论列表
文章目录