双线性弹塑性模型(四)

本节内容为在牛顿-拉夫逊方法中集成基于随动硬化模型的当前应力计算。

对于非线性的问题,一般将其线性化为

一次迭代得到的是位移增量,如图所示

双线性弹塑性模型(四)的图1

接下来要将位移增量转化为应变增量,以一维杆结构为例,其应变增量

其中 为杆初始长度。

[算例]

一根各向同性杆,一端固定,另一端施加轴向力做拉伸试验.荷载逐渐增加到 ,然后逐渐卸载至0。

import math

def Sgn(x):
    if x > 0 :
        return 1
    elif x < 0 :
        return -1
    else :
        return 0

def KinematicHard1D(MP,deps, stressN,alphaN, epsN):

    E  = MP[0]
    H  = MP[1]
    Y0 = MP[2]
    
    stress_tr = stressN + E*deps
    eta_tr = stress_tr - alphaN
    f_tr = math.fabs(eta_tr ) - Y0
    if f_tr < 0:
        stress = stress_tr
        alpha = alphaN
        ep = epsN
        flag = 0     # 处于弹性状态
    else:
        dep = f_tr / ( E + H )
        stress = stress_tr - Sgn(eta_tr) * E * dep
        alpha = alphaN + Sgn(eta_tr) * H * dep
        ep = epsN + dep
        flag = 1    # 处于塑性状态

    return stress, alpha, ep, flag

#########  以上为harden模块


import matplotlib.pyplot as plt
import numpy as np

import numpy as np
import harden

E = 70000; H = 10000; sYield = 250
Et = E*H / (E+H)
mp = [E, H, sYield]

nS = 0
nep = 0
nA = 0

A = 100
L = 1000

tol = 1.0E-1
u = 0
Res = 0
nincr = 0
max_iter = 20
epnew = 0

Load = [0,50001000015000,20000,25000,30000,25000,20000,
        15000,10000,5000,0 ]

N = len(Load)
flag = 0

X = np.zeros( (N) )
Y = np.zeros( (N) )

for i in range(N):
    nincr += 1
    print('第{}增量步:' .format(nincr) )

    P = Load[i]

    Res = P - nS * A
    du = 0
    
    niter = 0
    conv = 2e12
    print('迭代步            位移                   不平衡力                    收敛参数')
    
    while ( conv > tol and niter < max_iter ):
        niter += 1

        Eep = E
        if flag == 1:
            Eep = Et

        K = Eep*A/L
        delta_u = Res / K
        du = du + delta_u
        delta_eps = delta_u / L

        Snew, Anew, epnew, flag = harden.KinematicHard1D(mp,delta_eps,nS,nA,nep)

        Res = P - Snew*A
        conv = Res**2 / (1 + P**2)
        nS = Snew
        nep = epnew
        nA  = Anew
        print(format(niter, '>3d'), format(u, '>20.12f'), format(nS, '>26.14f'), format(conv, '>28.16e'))

    u = u + du
    
    X[i] = u
    Y[i] = nS

print(X)
print(Y)

fig, axs = plt.subplots(11,  figsize=(8,6) )
axs.plot(X, Y, label="M1", linewidth = 3, color = "deeppink",marker='o', markersize=12
axs.set_xlabel('$Displacement(mm)$', fontsize = 18)
axs.set_ylabel('$Stress(MPa)$', fontsize = 18)

fig.savefig('./f358.png', dpi = 300#保存图片 
plt.show()


得到的迭代路径

双线性弹塑性模型(四)的图2


★★★★  往期相关 ★★★★

双线性弹塑性模型(三)

双线性弹塑性模型(二)

双线性弹塑性模型(一)

扫码_搜索联合传播样式-白色版.png


有限元非线性弹塑性PYTHON
1 4

双线性弹塑性模型(四)的评论0条

    暂无评论
    双线性弹塑性模型(四)的相关内容
    本节内容为多杆结构的弹塑性有限元计算。 对于弹塑性材料, ,其中 含多个杆单元的结构,需要分别判断每个单元的弹塑性状态,确定是 或者 参与计算。 [算例] 如图所示,两个并联的杆,一段固定,另一端另一端施加轴向力P。荷载逐渐增加到 ,然后逐渐卸载至0。杆一。 杆二。 import matplotlib.pyplot as plt import numpy as np import numpy as
    本节用Python来实现基于随动硬化模型的当前应力计算。 [算例] 一根各向同性杆,一端固定,另一端施加轴向力做拉伸试验,荷载分级来加。某一时刻应力 ,塑性应变 , .当应变增量 ,计算应力和塑性应变。。 import math #定义符号函数 def Sgn(x):     if x > 0 :         return 1     elif x < 0 :         return -
    前面讲到了基于Python进行Nastran .pch结果文件的自动后处理过程。可用于如IPI、VTF、NTF等自动后处理。原计划继续介绍Nastran结果文件.op2自动后处理的内容。但有朋友问到了ANSYS结果文件.rst的后处理内容。今天简单介绍下基于Python的ANSYS结果自动后处理内容。这里用Python做后处理主要有以下几个原因:1.可以进行数据深度处理,尤其是对于大量分析数据可以
    ANSYS结构分析概览:1.结构分析的目的:用于确定结构的变形、应变、应力及反作用力等. 2.结构分析的类型: ◎静力分析-用于静态载荷,可以考虑结构的线性及非线性行为,例如: 大变形、大应变、应力刚化、接触、塑性、超弹及蠕变等. ◎模态分析-计算线性结构的自振频率及振形 ◎谱分析-是模态分析的扩展,用于计算由于随机振动引起的结构应力和应变 (也叫作响应谱或PSD). ◎谐响应分析-确定线性结构对
    一、计算任务说明: 砌体材料是土木工程中最重要的建筑材料之一,研究砌体材料结构的力学性能和破坏机理,运用数学、力学方法与现代技术,建立趋于完善而精确的砌体结构理论,是全世界各国都一直关心的课题。 为探究砌体材料破损过程,本计算书以老旧建筑砌体墙作为研究对象,采用数值模拟的方法进行分析。全文以某老旧建筑砌体墙的现场试验结果,以及有限元软件对试验结果校正后得到的本构模型和参数为研究基础,基于混凝土损伤
    本科/工程师
    影响力
    粉丝
    内容
    获赞
    收藏