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):
    """
    計(jì)算考慮溫度效應(yīng)的 Johnson - Cook 模型的流動(dòng)應(yīng)力
    :param epsilon: 有效塑性應(yīng)變
    :param epsilon_dot: 有效塑性應(yīng)變率
    :param T: 當(dāng)前溫度
    :param A: 初始屈服應(yīng)力
    :param B: 硬化常數(shù)
    :param n: 硬化指數(shù)
    :param C: 應(yīng)變率常數(shù)
    :param m: 熱軟化指數(shù)
    :param T_room: 室溫
    :param T_melt: 熔化溫度
    :return: 流動(dòng)應(yīng)力
    """
    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


# 材料參數(shù)
A = 200  # 初始屈服應(yīng)力 (MPa)
B = 500  # 硬化常數(shù) (MPa)
n = 0.2  # 硬化指數(shù)
C = 0.01  # 應(yīng)變率常數(shù)
m = 1.0  # 熱軟化指數(shù)
T_room = 298  # 室溫 (K)
T_melt = 1800  # 熔化溫度 (K)

# 應(yīng)變范圍
epsilon = np.linspace(0, 1, 100)

# 不同的應(yīng)變率
epsilon_dots = [1, 100]
# 不同的溫度
temperatures = [300, 600, 900]

# 設(shè)置圖片清晰度
plt.rcParams['figure.dpi'] = 300

# 繪制不同應(yīng)變率和溫度組合下的曲線
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$')

    # 設(shè)置圖形標(biāo)簽和標(biāo)題
    ax.set_xlabel('有效塑性應(yīng)變 $\epsilon$')
    ax.set_ylabel('流動(dòng)應(yīng)力 $\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

不考慮溫度效應(yīng)的jc曲線代碼:

import numpy as np
import matplotlib.pyplot as plt


def jc_model(epsilon, epsilon_dot, A, B, n, C):
    """
    計(jì)算不考慮溫度效應(yīng)的 Johnson - Cook 模型的流動(dòng)應(yīng)力
    :param epsilon: 有效塑性應(yīng)變
    :param epsilon_dot: 有效塑性應(yīng)變率
    :param A: 初始屈服應(yīng)力
    :param B: 硬化常數(shù)
    :param n: 硬化指數(shù)
    :param C: 應(yīng)變率常數(shù)
    :return: 流動(dòng)應(yīng)力
    """
    epsilon_dot_star = epsilon_dot / 1.0
    sigma = (A + B * (epsilon ** n)) * (1 + C * np.log(epsilon_dot_star))
    return sigma


# 材料參數(shù)
A = 200  # 初始屈服應(yīng)力 (MPa)
B = 500  # 硬化常數(shù) (MPa)
n = 0.2  # 硬化指數(shù)
C = 0.01  # 應(yīng)變率常數(shù)

# 應(yīng)變范圍
epsilon = np.linspace(0, 1, 100)

# 修改后的不同應(yīng)變率
epsilon_dots = [0.001, 0.1, 0, 1, 10, 100, 1000]

# 設(shè)置圖片清晰度
plt.rcParams['figure.dpi'] = 300

# 繪制不同應(yīng)變率下的曲線
fig, ax = plt.subplots()
for epsilon_dot in epsilon_dots:
    if epsilon_dot == 0:
        # 應(yīng)變率為 0 時(shí),對(duì)數(shù)無意義,此處可單獨(dú)處理
        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}}$')

# 設(shè)置圖形標(biāo)簽和標(biāo)題
ax.set_xlabel('有效塑性應(yīng)變 $\epsilon$')
ax.set_ylabel('流動(dòng)應(yīng)力 $\sigma$ (MPa)')
ax.set_title('不考慮溫度效應(yīng)的 Johnson - Cook 模型')
ax.legend()
ax.grid(True)

# 顯示圖形
plt.show()
JC模型python代碼繪制曲線的圖3
    
    
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

1