本文摘要:(由ai生成)
本文深入探讨了二阶及以上的广义Maxwell黏弹性模型理论及其实现方法。文章介绍了高阶微分形式的广义Maxwell本构,包括一维到三维模型的推广,并提出了简化模型控制方程的方法。文章还将理论应用于UMAT列式,提供了一种更通用、易扩展的黏弹性格式。该科研笔记旨在帮助有需要的读者,同时作者欢迎读者反馈并承诺提供UMAT本构代码。
2024年1月30日,小喵发了一篇文章:
里面介绍了基础的黏弹性模型,包括Kelvin和Maxwell形式的标准线性模型(Zener模型),如何从一维推导向三维,以及如何将微分形式的本构关系与Prony级数形式的公式联系起来。
这篇文章在此基础上更进一步,讨论一下二阶及以上的广义Maxwell模型的理论,以及如何实现。
备注:这篇文章是小喵出于自身科研需要而总结。我自己也是学习者,一边推导一边写成了这篇推送。限于能力和水平,无法100%保证全部推导都是正确的,只能说我已尽我所能保证推导和讲解过程的可读性和准确性。
这篇文章,本想把UMAT代码都写完后再一起发出来。但鉴于后续时间安排,恐怕就又要延后一星期甚至更久。写到这里Markdown源文件已经有超过18,000个字符,考虑到篇幅因素,还是决定把公式推导部分提前单独发出来。
正文目录:
0. 上回书说到
1. 高阶微分形式的广义Maxwell本构
2. 引入局部应变的简化形式
3. 广义Maxwell黏弹性UMAT列式
4. 结尾和预告
观前提醒,如果读到某个公式卡壳,千万不要死磕。第1节的公式形式复杂,到第2节会变简单。
让我们回顾一下,从一根Maxwell黏弹性元件开始。
弹簧和阻尼器串联,两个元件应力相等,总应变等于二者叠加。因此Maxwell元件的控制方程可以用应变率的形式写为:
那么,对于一根刚度为
对于弹簧元件,有:
对于Maxwell元件,和前面公式
这里我们使用一个比较通用的推导方式,方便向高阶推广:从应力的零阶导数项开始,试着让方程中不要出现
为了实现这个目的,我们首先写出:
将公式
很显然,公式
为了把它平衡掉,我们回头来看公式
这样就有了
引入弛豫时间
式
——————
那现在让我们考虑二阶广义Maxwell模型。模型里的参数分别为
对于弹簧元件,显然有(这次我们直接准备到二阶导数):
对于两个Maxwell元件,和公式
还是和刚才一样,首先写出
果然,这次的公式
那么为了伺候这两位爷,我们构建出下面的形式:
在
综上,我们把公式
诶,现在我们可以发现,在公式
所以最终,二阶Maxwell黏弹性模型的控制方程,我们这里就可以参考之前黏弹性的推导,引入弛豫时间
最终形成公式
到这一步,我们可以大致用文字总结一下。
对于包含1个弹簧和N个Maxwell元件的广义Maxwell黏弹性模型,为了推导出其总应力-总应变之间的关系,需要列出每个局部元件的控制方程,并将每一行方程对时间求导。然后从应力对时间的零阶导数开始,逐层将局部元件的应力加总。这一过程总会残留下应力对时间的更高阶导数项。重复此过程,一直到应力对时间的第N阶导数项才可以被完全配平。
(好像用文字怎么描述都说不太清楚。不过如果你认真跟着前面的推导读下来,相信你一定可以理解这段话。)
推广到N阶,对于包含共计1个弹簧和N个Maxwell元件的广义Maxwell黏弹性模型,其控制方程的一般形式为:
——————————
前方高能。这个形式来自维 基 百 科,可难写了……
——————————
稍微展开一点,另外一种通用形式:
我已经懒得再仔细解释上面那两坨公式了。总之,按照前面的推导逻辑,N阶广义Maxwell模型的控制方程里确实需要包含应力和应变对时间的最高N阶导数。
推导结束,可喜可贺……是吗?
如果有限元软件里的广义Maxwell黏弹性模型要拿上面的控制方程去写代码,那这代码的繁琐程度恐怕就不是一般人类能看懂的了。
还有没有更简洁一点的形式呢? 就,类似之前我们看到过的Prony级数,对于广义Maxwell模型的松弛模量,多一阶只需要加一项(而不是提升一阶导数):
——那肯定是可以的。
仔细想一想前面的推导,我们为什么要这么麻烦地去不断提高应力和应变对时间的求导阶次?
答案是为了得到总应力和总应变之间的关系,在方程里抹掉所有局部元件的信息。
那么,如果我们在方程里保留每一个局部的信息,会怎么样呢?
实际上,这就相当于在控制方程里引入更多额外的变量,提高方程组的维度,从而降低方程组的阶数。
来,一起来见证魔法。
仍然以最简单的一阶广义Maxwell模型为例。
这一次,我们在列出
将阻尼参数为
那么
这样,弹簧部分本构仍然是
Maxwell部分的本构:
这次在式
就可以写出一阶广义Maxwell模型的控制方程了:
很显然,模型中的
(投共一念起,刹那天地宽。)引入黏壶应变
直接就可以把N阶控制方程的通用形式都写出来了。
当然,增加了N个变量,还需要相应地补充N条方程,说清楚
式
绕了一大圈,原来这么简单就解决了啊。那你早说呀,我前面还吭哧吭哧推那些公式干嘛呢。
现在,有了前面的公式
从式
其中,上标显然不表示乘方,主要是下标被张量标记占了只能写成上标。
根据公式
这里的符号记法与前文略有出入:前面描述广义Maxwell模型的时候,我们将并联的单个弹簧单元的刚度写成
,下标为0以和其他Maxwell元件形成区分。但实际上我们知道那根弹簧的刚度 其实是整个模型的长期模量。 在后面的推导中,我们为了和Abaqus文档里的黏弹性公式保持一致,将初始的瞬时模量下标写为0,而将长期模量的下标写为
。例如,瞬时Lamé常数为 ,对应的长期模量数值为 (读者如果要参考本公 众 号文章来组织自己论文中的公式,请自行斟酌标记的前后逻辑一致性)
写成矩阵形式(哎呀这段LaTeX可难写了):
要注意,在Abaqus文档页
Abaqus > Introduction & Spatial Modeling > Conventions > Convention used for stress and strain components
里面,介绍了Abaqus以向量形式存储张量分量的顺序。上面使用的顺序是Abaqus/Standard的存储顺序。Abaqus/Explicit使用了不同的顺序:
这样。 另外,同一页文档还写明,Abaqus始终使用工程剪应变,
: 所以后面的
剪切分量,我这里也自动乘了2.
同样使用中心差分列式(此处下标表示该变量所处的时刻),
式
化简后得:
式
这里常数的n写成了下标,局部应变
的n则写成上标,实在是为了尽可能在符号表达上前后逻辑一致,没有正经张量分析里面上下指标平衡求和的说法。但好像……n在这里确实变成了哑指标,也确实有一个最大N阶的求和符号,但那个纯属意外。只有 的下标k是需要按照张量规则(爱因斯坦求和约定)来求和的。
在UMAT实现中,还是要根据上一步的应力
以一阶广义Maxwell模型为例。将当前时间增量步结束时的应力记为
把它们代入式
然后把前面的
从式
这样就能写出DDSDDE矩阵的分量了:
把式
式
考虑到长期模量和瞬时模量之间的关系:
式
参照式
雅可比矩阵分量为:
最后一个不成问题的小问题。Abaqus内置的广义Maxwell模型,是用体积模量
答:剪切模量
具体的转换相信不用多说了。可以期待一下 下一篇的UMAT对比验证。
之前小喵在公 众 号上发图提问说有没有人对广义Maxwell黏弹性理论的推导感兴趣。有好几位网友私信我表示需要。真的非常非常感谢您们的关注。小喵写公 众 号的初心其实一直有些自私,首先是作为我自己的学习笔记,为满足我自己的课题需要,或是为我的好奇心服务。
但,人总是社会性的动物。网友的关注和回复真的会给我很大的动力。
我知道有些朋友也是为了解决您自己科研和工作中遇到的问题才找到这里。小喵能力和水平有限,不能帮每一位网友答疑。但还是感谢每一位后台回复的朋友,感谢您让我知道,我为自己工作整理的这些公式,也能或多或少对您有一点点帮助。如果这篇推送和您或您朋友的工作有关联,欢迎转发朋友圈。如果您跟着我的推导读完了,并愿意在后台告诉我,我也会很开心的。
下一篇我会写出线弹性-广义Maxwell黏弹性的UMAT本构。我没写过特别多代码,尤其是UMAT Fortran编程,很多语法和trick我也掌握的不好,所以还需要进行一番测试和调试才能发出来。
上一篇黏弹性的推送后面附的UMAT代码有一处就好像是写错了(
这篇推送除了公式