大家好,我是艾米雷斯。先祝大家圣诞节与元旦双节快乐。魔幻的2020年再过几天终于要结束了,希望2021年将是全球复苏的一年。
艾米这几天观察了一下前四篇教程大家的阅读情况,发现了一个有趣的现象。
不正经教程的(一)到(四),阅读量基本呈现逐渐递减的趋势,而且(四)的阅读量仅有(一)的20%。
经过艾米的认真思考,艾米觉得,这和人类的天性有关,艾米同样也逃不出这样的定律。这个天性就是:我先收藏了,下次再看。艾米在看系列文章时也是这个样子,往往第一和第二篇都卯足了劲看完,然后后面的先收藏,以后再看,然后忘了看,那些文章就一直停留在了收藏夹里。这估计也是为什么艾米发现,教程的收藏量几乎是点赞量和喜欢量的两倍之多,预计这个比值还会继续上升,哈哈。
不过(四)的阅读量偏低,也有可能和内容开始偏向数学和理论有关。艾米会在后面的教程,将理论的内容写得更通俗易懂一点,让大家能够更快地掌握UMAT的基本知识,在自己编写UMAT的时候,做到收放自如,评估计算结果时,能做到了然于胸。
那下面我们就言归正传,开始我们这个不正经教程的第五讲,理想弹塑性子程序的整体架构。其实,严格意义上说,这个架构不只适用于理想弹塑性,后面的任何弹塑性问题,都可以利用这个架构来进行编写。
这里插一则推荐环节,艾米几乎所有的理论都来自于下面这本陈惠发老先生的《弹性与塑性力学》。一般国内土木院校的研究生,只要上相关课程的,这本书基本手上都有一本。这也是为啥艾米选择了这一本教材(不是因为懒哦)。没有的小伙伴也可以直接通过下面的链接去购买。
在后面的教程中,艾米在叙述时,也会告知大家,用的是这本书哪一页的内容,方便大家去翻书查找,艾米也会适当加一些对此书的评论。
这么做有什么好处呢?
大家有没有一种感觉,即使对于同一个主题,譬如“弹性与塑性力学”,不同教材虽然说的是一个东西,但一些规定,方法叙述都不相同,这就很容易导致我们学习过程中的混乱。
因此,艾米以后只以这本书为总教程,如果用到其他教程的内容,艾米再推荐给大家,以避免叙述上的混乱。
本讲虽然讲“理想弹塑性子程序整体架构”,小伙伴们千万不要被“整体架构”这个名词给吓着哦。
“整体架构”可以直接理解为,我们对程序的布局设计,譬如是采用判断分支,还是循环结构,是用流程式编程还是用面向对象的编程。
大家应该或多或少都做过结构设计吧,我们设计一个房屋,先上来要布置它的结构柱吧,这其实就是一个“整体架构”的思想。如果你一上来柱子都没布置好,就算啥某柱子钢板的局部失稳,这就很喜感了。
那么,利用子程序UMAT计算一个理想弹塑性问题或者带有强化的弹塑性问题的本质是什么呢?
本质就是处理单元的应力应力状态转变嘛。
应力状态,一般可以分为弹性和弹塑性。这里要加一句,你说是“弹性与塑性”也可以,但“弹性与弹塑性”更为准确。大家想想,你加载到弹塑性阶段的时候,卸载,结构是不是以弹性刚度来卸载的?也就是说弹塑性状态一般都是既包含弹性,又包含塑性的状态。
那按照弹性和弹塑性的应力状态分类,我们是不是就是把所谓的“整体架构”分为两大类来处理,弹性和弹塑性分别处理?
想法不错,但有一个问题被忽略了,那就是:
我们用的是增量有限元,对于大多数求解步,在该求解步里,结构是弹性或者弹塑性这两者中的一个;但也存在某些求解步,结构会由弹性转变为弹塑性,前半段弹性,后半段弹塑性,或者反过来。
我们下面依然用这样的描述,在第 m 步时,结构的所有状态量(譬如应力,应变等)都已经求得,然后要求第 m+1 步结束时结构的所有状态量。
起点是第 m 步结束,终点是第 m+1 步结束,那结构中的单元会有以下四种情况之一:
******************************************************************************************
- 第 m 步结束时是弹性,第 m+1 步结束时仍然是弹性;
- 第 m 步结束时是弹性,第 m+1 步结束时是弹塑性;
- 第 m 步结束时是弹塑性, 第 m+1 步结束时是后继屈服面上的弹塑性;
- 第 m 步 结束时是弹塑性,第 m+1 步结束时是弹性或者非后继屈服面上的弹塑性。
******************************************************************************************
这里出现了新的名词:“后继屈服面”,其实没啥神秘的。譬如你恰饭,刚开始吃了十分饱(屈服了),但又看到了喜欢吃的,强行吃了十二分饱,那这个十二分饱就是十分饱的“后继屈服面”。
理想弹塑性,其实就是,你只能吃十分饱,不可能吃到十二分饱。所以对于大胃王,以普通人的饭量为初始屈服面的话,他们的饭量都是带有强化的屈服面,哈哈。
在上述分析下,我们的整体架构就很简单了,采用 if-else 伪代码描述时就是:
******************************************************************************************
if m 步是弹性
{
if m+1 步是弹性
代码块 A
else m+1 步是弹塑性
代码块 B
}
else m 步是弹塑性
{
if m+1 步是弹性或者非后继屈服面
代码块 C
else m+1 步是弹塑性且为后继屈服面
代码块 D
}
******************************************************************************************
我们要做的,就是把每个代码块 A, B, C, D给处理好就行了,是不是突然就觉得思路清晰起来了?
注意了,代码块 A, B, C, D 不是都得重新编写哦,我们以前编写的弹性本构的UMAT子程序可以直接用在代码块A 和 C, 大家想想是不是这样呢。
“第 m 步结束时是弹性,第 m+1 步结束时仍然是弹性”适用是好理解的。
“第 m 步 结束时是弹塑性,第 m+1 步结束时是弹性或者非后继屈服面上的弹塑性”,这其实就是一个卸载的过程。有小伙伴可能说,那应变增量是负的呀,对的,乘出来的应力也是负的,加上去之后,应力的数值不就变小了,就是卸载呀。所以放心大胆地用就行了。
因此,我们只需编写好代码块 B 和 D 就行了,当然,这也是 UMAT 里面最核心也是相对比较困难的一部分了。
我们这一讲先不讲代码块 B 和 D 怎么编写,而是讲一讲上述伪代码的分支判别条件都是怎么弄的。
这里就需要用到陈惠发老先生所著的《弹性与塑性力学》的相关内容了,所涉及的内容主要是一下两大块:
******************************************************************************************
- 屈服准则,《弹性与塑性力学》第198页的内容
- 加载准则,《弹性与塑性力学》第216页的内容
******************************************************************************************
屈服准则就是一个标量函数表达式
括号里面的就是应力分量。
小伙伴们不要觉得屈服准则有多神秘,这个其实是最简单的,为啥?因为你只要把相应的应力分量无脑填写进去,就可以用来判别应力状态了。
一般,我们构造的屈服函数,当满足以下条件时,表明应力状态在屈服面上,处于弹塑性状态:
而满足下面条件是弹性状态:
那大于0呢,很明显,是在后继屈服面上,对于理想弹塑性问题,则这个状态不存在,因为理想弹塑性的屈服面大小是固定的。
有小伙伴说,为啥弹性状态是小于0,不能大于0吗。实际上,你取 f1 = -f,弹性状态下,f1就是大于0的。但这个是给自己找不痛快。学术界构造的 f 一般都是小于0作为弹性状态,表明,该点应力状态尚未达到屈服面。
你硬要用 f1 也可以,不过发文章的时候一定会让审稿人看得头大,最终结果是强行把自己给秀了,所以,还是接受经典理论的规定吧,不要标新立异了,哈哈。
解决了屈服准则后,就一下子进入了 if-else 的内圈判定了,第 m+1 步的弹塑性状态。
有小伙伴说,好办,直接利用第 m+1 步的屈服面判断就行了。这对于理想弹塑性是可以的,但对于带有强化的塑性则不适用。
为什么呢?
那是因为后继屈服面的大小是和应变历史有关的,而从第 m 步到第 m+1 步的应变历史正是我们要求的,还没求出来,你怎么会知道呢,所以采用这个方法就很不方便。
应变历史是啥?没啥神秘的,对于第 m+1 步而言,第 m, m-1, m-2 ... 步的应变值就是所谓的应变历史。
教材嘛,小伙伴们都懂的,不可能用艾米这些不专业的词汇来描述理论的,不然教出来的都是像艾米这样不正经的学生了。
经典的弹塑性力学会用“加载准则”来解决上面的判别问题,下面要抛公式了哦,各位小伙伴准备好了吗?
陈惠发老先生的《弹性与塑性力学》给了两种前人的加载准则,一种是不能区别加载和中性变载的,另一种是更具普遍性的。这两种方法都在第217页。
艾米是比较懒的,后面都直接采用了普遍性的格式,也就是:
小伙伴们不要被“中性变载”给吓着哦。用滑雪来类比,屈服面是平面雪地的话,中性变载就是你一直在雪地上面滑雪;卸载就是你直接栽进了雪地里面,身体陷入了雪里面;加载就是你划到坡上的雪地上去了。
利用上面的所有理论,我们就把分支问题给解决了。后面艾米再给大家好好说一说,分支及其代码有哪些细节需要处理。
----------------------------我是分割线-------------------------------------------------------
好啦,今天就先讲到这里,小伙伴们要花点时间去回顾一下陈惠发老先生第198页和第216,217页的内容哦,因为我们后面就要开始教大家怎么编写我们上面设定的各个分支了。
有小伙伴说,我光看艾米你的教程不行吗?可以是可以,不过,根据艾米自己的判断,你只看艾米的教程的话,学习完之后顶多也就初步入门吧。你想进阶到中等高手和真正高手的水平,光看艾米的不正经教程肯定是不够的。毕竟:
真正的高手不是教出来的。
以此与希望成为 UMAT 高手的小伙伴们共勉。