numpy 标准线性体的蠕变函数

k5hmc34c  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(72)

我正试图绘制标准线性固体模型的蠕变函数。下面是图片:

https://www.sciencedirect.com/topics/materials-science/viscoelasticity获得
但我的图却大不相同,尽管遵循了图中的方程。有谁能帮我找出我的代码哪里出错了吗?
下面是我的代码:

import numpy as np
import matplotlib.pyplot as plt

t0 = 15
t = np.linspace(t0, 100, 100)
t1 = 85
E1 = 10
E2 = 8
eta = 4
sigma = 20
eps0 = 10
tau = eta / E1 + eta/E2

# creep function
creep = np.zeros(len(t))
for i in range(len(t)):
    if t[i] < t0:
        creep[i] = sigma / (E1 + E2)
    elif t0 < t[i] < t1:
        creep[i] = (eps0 - sigma / (E1 + E2)) * (1 - np.exp(-(t[i] - t0) / tau))
    elif t[i] == t1:
        creep[i] = sigma/(E1+E2)
    elif t[i] > t1:
        creep[i] = (eps0 - sigma / (E1 + E2)) * np.exp(-(t1 - t[i]) / tau)

# plot graph
plt.plot(t, creep)
plt.xlabel('Time')
plt.ylabel('Creep')
plt.title('Creep Function of Standard Linear Solid Model')
plt.show()

字符串
我已经尝试了大量的改变图形,甚至尝试使用不同的公式,但我就是不能让形状匹配。

zpgglvta

zpgglvta1#

如评论中所述:你的数学不符合方程,方程也不符合情节。有根据地猜测哪些部分是正确的,哪些部分是错误的

import numpy as np
import matplotlib.pyplot as plt

t0 = 15
t1 = 85
E1 = 10
E2 = 8
eta = 4
sigma0 = 20
eps0 = sigma0/E1
tau = eta*(1/E1 + 1/E2)

ta = np.linspace(0, t0, 3)
tb = np.linspace(t0, t1, 200)
tc = np.linspace(t1, 100, 200)

epsa = np.zeros_like(ta)
epsb = sigma0*(1/(E1 + E2) + (1/E1 - 1/(E1 + E2)) * (1 - np.exp(-(tb - t0)/tau)))
epsc = (eps0 - sigma0/(E1 + E2)) * np.exp(-(tc - t1)/tau)

plt.plot(
    np.concatenate((ta, tb, tc)),
    np.concatenate((epsa, epsb, epsc)),
)
plt.xlabel('Time')
plt.ylabel('Creep')
plt.title('Creep Function of Standard Linear Solid Model')
plt.show()

字符串


的数据
但你真的需要找一个更权威的来源。

相关问题