首页/文章/ 详情
banner

双线性弹塑性模型(一)

3月前浏览4301

对于弹塑性材料,    ,其中

 

   为当前屈服应力。对于初始加载,    等于材料屈服应力,材料达到屈服后,    要基于假定的应变硬化模型来更新。一般的工程材料,弹性模量及初始屈服应力可以由单轴拉伸试验得到,而    不能由实验得到。实验中可以得到应变硬化参数H,这个参数定义为应力-应变曲线中除去弹性应变分量后应变硬化部分的斜率。

如图所示,塑性阶段应变增量分为弹性及塑性两部分:

 

卸载后,弹性应变回复,因而只用应变增量中的塑性应变部分来定义应变硬化参数。在塑性阶段,应力增量    可用3种模量中的任何一种写出:

 

因此

 
 
 
 
 

Newton–Raphson迭代可得到位移增量进而得到应变增量    ,累积塑性应变    ,累积应力    等等。下面基于各向同性硬化模型来计算当前应力。

一) 计算当前屈服应力

 

或者

 

这里    是初始屈服应力,H是塑性模量。无论是受拉还是受压,由于应变硬化,屈服应力不断增加。

二) 弹性预测

假定在此应变增量为弹性阶段,计算应力增量和试应力(trial stress)。

 
 

三) 检查屈服状态 

检查试应力是否满足屈服条件,即

 

如果    ,则材料处于屈服前的初始荷载路径或者卸载路径,如图所示,

此时累积应力

 

应变增量是完全弹性的,塑性应变没有改变。

 
 

如果,则材料处于屈服状态。

如图所示

 

这里     是符号函数。由于塑性应变增量仍未知,需要增加一个条件:在加载过程中,修正后的应力必须在屈服面上

 
 
 
 

由于 ,塑性应变增量总是正的。

接下来进入下一步迭代。

来源:数值分析与有限元编程
材料试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:3月前
太白金星
本科 慢慢来
获赞 3粉丝 5文章 309课程 0
点赞
收藏
作者推荐

弧长法的Python实现

弧长法点击这里:非线性 | 弧长法(Arc-Length Methods)改进弧长法点击这里:非线性|弧长法改进对于一个非线性有限元模型,只有一个自由度 ,外荷载 ,内力为 切线刚度矩阵 假设某一荷载步迭代收敛时荷载因子, 。接下来以 开始。以下是改进弧长法手算过程Python代码:import mathdef stiff(u): f_int = -4*(u-1)**2 + 4 Kt = -8*(u-1) return f_int, Ktf_ext = 1lamd_0 = 3.84u0 = 0.8delta_lamd = 0.26tol = 1e-7conv = 2e11max_iter = 200niter = 0sum_u = 0sum_lamd = 0print('niter desplacement lamda conv')while ( conv > tol and niter < max_iter ): niter += 1 if niter == 1: f_int, Kt = stiff( u0 ) lamd_1 = lamd_0 + delta_lamd f_resid = lamd_1 * f_ext - f_int delta_u = f_resid / Kt u1 = u0 + delta_u sum_u = sum_u + delta_u sum_lamd = sum_lamd + delta_lamd u0 = u1 lamd_0 = lamd_1 else: f_int, Kt = stiff( u0 ) f_resid = f_int - lamd_0 * f_ext delta_u_ext = f_ext / Kt delta_u_resid = f_resid / Kt delta_lamd1 = delta_u_resid * sum_u / (delta_u_ext * sum_u + sum_lamd ) lamd_1 = lamd_0 + delta_lamd1 delta_u = delta_lamd1 * delta_u_ext - delta_u_resid sum_u = sum_u + delta_u sum_lamd = sum_lamd + delta_lamd1 u1 = u0 + delta_u u0 = u1 lamd_0 = lamd_1 delta_lamd = delta_lamd1 conv = math.sqrt( f_resid**2 ) print(format(niter, '>3x'), format(u1, '>20.12f'), format(lamd_1, '>26.14f'), format(f_resid, '>28.16e') ) 输出结果:来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈