JC模型python代码绘制曲线

import numpy as np
import matplotlib.pyplot as plt


def jc_model(epsilon, epsilon_dot, T, A, B, n, C, m, T_room, T_melt):
    """
    计算考虑温度效应的 Johnson - Cook 模型的流动应力
    :param epsilon: 有效塑性应变
    :param epsilon_dot: 有效塑性应变率
    :param T: 当前温度
    :param A: 初始屈服应力
    :param B: 硬化常数
    :param n: 硬化指数
    :param C: 应变率常数
    :param m: 热软化指数
    :param T_room: 室温
    :param T_melt: 熔化温度
    :return: 流动应力
    """
    epsilon_dot_star = epsilon_dot / 1.0
    T_star = (T - T_room) / (T_melt - T_room)
    sigma = (A + B * (epsilon ** n)) * (1 + C * np.log(epsilon_dot_star)) * (1 - T_star ** m)
    return sigma


# 材料参数
A = 200  # 初始屈服应力 (MPa)
B = 500  # 硬化常数 (MPa)
n = 0.2  # 硬化指数
C = 0.01  # 应变率常数
m = 1.0  # 热软化指数
T_room = 298  # 室温 (K)
T_melt = 1800  # 熔化温度 (K)

# 应变范围
epsilon = np.linspace(0, 1, 100)

# 不同的应变率
epsilon_dots = [1, 100]
# 不同的温度
temperatures = [300, 600, 900]

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 绘制不同应变率和温度组合下的曲线
for epsilon_dot in epsilon_dots:
    fig, ax = plt.subplots()
    for T in temperatures:
        stress = jc_model(epsilon, epsilon_dot, T, A, B, n, C, m, T_room, T_melt)
        ax.plot(epsilon, stress, label=f'$T = {T} K$')

    # 设置图形标签和标题
    ax.set_xlabel('有效塑性应变 $\epsilon$')
    ax.set_ylabel('流动应力 $\sigma$ (MPa)')
    ax.set_title(f'Johnson - Cook 模型,$\dot{{\epsilon}} = {epsilon_dot} s^{{-1}}$')
    ax.legend()
    ax.grid(True)

# 显示图形
plt.show()
JC模型python代码绘制曲线的图1
JC模型python代码绘制曲线的图2

不考虑温度效应的jc曲线代码:

import numpy as np
import matplotlib.pyplot as plt


def jc_model(epsilon, epsilon_dot, A, B, n, C):
    """
    计算不考虑温度效应的 Johnson - Cook 模型的流动应力
    :param epsilon: 有效塑性应变
    :param epsilon_dot: 有效塑性应变率
    :param A: 初始屈服应力
    :param B: 硬化常数
    :param n: 硬化指数
    :param C: 应变率常数
    :return: 流动应力
    """
    epsilon_dot_star = epsilon_dot / 1.0
    sigma = (A + B * (epsilon ** n)) * (1 + C * np.log(epsilon_dot_star))
    return sigma


# 材料参数
A = 200  # 初始屈服应力 (MPa)
B = 500  # 硬化常数 (MPa)
n = 0.2  # 硬化指数
C = 0.01  # 应变率常数

# 应变范围
epsilon = np.linspace(0, 1, 100)

# 修改后的不同应变率
epsilon_dots = [0.001, 0.1, 0, 1, 10, 100, 1000]

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 绘制不同应变率下的曲线
fig, ax = plt.subplots()
for epsilon_dot in epsilon_dots:
    if epsilon_dot == 0:
        # 应变率为 0 时,对数无意义,此处可单独处理
        stress = A + B * (epsilon ** n)
    else:
        stress = jc_model(epsilon, epsilon_dot, A, B, n, C)
    ax.plot(epsilon, stress, label=f'$\dot{{\epsilon}} = {epsilon_dot} s^{{-1}}$')

# 设置图形标签和标题
ax.set_xlabel('有效塑性应变 $\epsilon$')
ax.set_ylabel('流动应力 $\sigma$ (MPa)')
ax.set_title('不考虑温度效应的 Johnson - Cook 模型')
ax.legend()
ax.grid(True)

# 显示图形
plt.show()
JC模型python代码绘制曲线的图3
    
    
登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1