DDSDDE的本质?
本帖最后由 shawn2008 于 2011-11-12 19:31 编辑最近看到版上有很多朋友在谈论UMAT中的DDSDDE。比如,DDSDDE到底是什么? 为什么UMAT需要它,而vumat中不需要?如何计算DDSDDE等等。
其实,理解DDSDDE的本质,只需要三个重要的公式,我将这三个公式从abaqus的theory帮助中拷贝出来,如下,
Abaqus/Standard是用来求解静态问题的,即变形过程中变形体内的每个点都要满足静力平衡方程,上面的第一个公式就是应用虚功原理后的平衡方程。如果对Eq. 1 进行变分就会得到第二个公式。Eq. 2 第一项的第一部分包含了一个Kirchoff应力的增量,这个增量可以表示成第三个公式。H就是我们所说的DDSDDE。 前面有版友问,DDSDDE的本质是不是UMAT中增量最后时刻的Dep,从上面的三个公式看,这个说法是完全正确的。但如果仔细观察会发现很多论文中,DDSDDE和Dep的表达是不同的,产生这个差异的原因是由数值积分导致的,同时这也和DDSDDE的求解策略相关。
这个帖子很多细节都没展开,比如为什么要对第一个公式进行变分?;UMAT中传入的是Cauchy应力,这里为什么用Kirchoff应力? 抛砖引玉,提供一个思路罢了。关于以上公式的细节,可以参考Abaqus的Theory帮助文档,
2.1.1Procedures: overview and basic equations.
说的不错,版主有什么经验也拿出来跟大家分享一下吧,比如我有很多VUMAT转换成UMAT的时候,直接用线弹性刚度矩阵代替,运行也都没问题,换成真正的DDSDDE这个收敛速度到底有多大提高也没有仔细研究过 abaqus的帮助文件最大的不便之处在于它的公式符号表示和以前看过的力学教材上的公式符号表示有很大不同。不知道大家有没有同感?
比如Eq.2中, d ()代表变分,而一般教材都是用小写的delta代表变分。
另外,请斑竹帮助解答两个疑问。
1. DDSDDE和Jacobian matrix是不是等价的? 帮助文件中定义DDSDDE是constitutive Jacobian ,即Jacobian matrix of the constitutive model
如果是的话,为什么斑竹说DDSDDE就是H?
帮助文件上说the first term in the Jacobian matrix is
2. 涉及到剪应变的情况,是对工程剪应变Gama_xy求导,还是对应变张量的分量epsilon_xy求导? 众所周知Gama_xy=2*epsilon_xy。
帮助文件里面的有个umat例子是对工程剪应变Gama_xy求导,可我看有些文献上是对应变张量的分量epsilon_xy求导,一直很疑惑这个问题,请指点。
如果雅克比矩阵的系数差了2这个系数,对结果的收敛影响大不大?
本帖最后由 shawn2008 于 2011-11-21 08:13 编辑
1. 我的理解这两个是一样的。由于有些本构模型中可能包含高阶的应力或应变(梯度),这时我所给出的公式3中的g有可能不为零,H和DDSDDE就是不同的,H是Jacobian矩阵对应的第一项。不过,这样的本构和我们通常遇到的金属弹塑性本构是不一样的。如果没有特别说明,我将讨论的内容都是理解为弹塑性本构模型。
2. 这个是不应该差系数2的,如果出现这样的情况,对结果肯定有影响。 理论和程序的表达上有时不太一样,但他们本质上应该是一样的,因此,结果也应该一样。 有没有具体的公式? shawn2008 发表于 2011-11-21 08:13 static/image/common/back.gif
1. 我的理解这两个是一样的。由于有些本构模型中可能包含高阶的应力或应变(梯度),这时我所给出的公式3中 ...
非常感谢斑竹的解答。:)
关于第2个问题,您觉得涉及到剪应变的情况,是对工程剪应变求导,还是对应变张量的分量求导?
这个问题应该是普适问题,和本构公式没有关系。
本构公式如下:
一般本构模型公式建立的是应力张量的增量与应变张量的增量之间的关系,它与UMAT或vumat子程序接口中传入的剪应变的类型是没关系的,不管传入的是什么应变都需要先转换成应变张量的表示,然后再更新应力,最后将更新后的应力传回给abaqus的主程序。 shawn2008 发表于 2011-11-23 11:35 static/image/common/back.gif
一般本构模型公式建立的是应力张量的增量与应变张量的增量之间的关系,它与UMAT或vumat子程序接口中传入的 ...
嗯,谢谢斑竹。我明白你的意思。
我疑惑的地方是在编写jacobian矩阵的时候,ddsdde中的应力增量对应变增量的偏导的表达式,是用,还是?
ABAQUS里面是用第一个 msyexplore 发表于 2011-11-24 01:32 static/image/common/back.gif
ABAQUS里面是用第一个
谢谢。我今天用以上两个表达式分别编写了两个umat, 结果居然基本不变。
就是说jacobian矩阵中差个系数2 对结果没有影响?
本帖最后由 shawn2008 于 2011-11-24 13:38 编辑
关于Jacobian矩阵的作用,在谈这个问题之前,我们先要看看对于f(x) = 0这样的非线性方程, 采用Newton-Raphson法求解的过程。首先定义F=f(x), 然后将F在x0进行Taylor展开(保留线性项),F(x) = f(x0) +f'(x0)(x-x0),让这个式子等于零,我们可以得到下一个迭代值x,重复这个过程,直到满足收敛条件,最后我们就得到了f(x)=0对应的解。
回到最初帖子的三个公式,在第三个公式的下面,我曾经解释过“Abaqus/Standard是用来求解静态问题的,即变形过程中变形体内的每个点都要满足静力平衡方程,上面的第一个公式就是应用虚功原理后的平衡方程。如果对Eq. 1 进行变分就会得到第二个公式。“如果我们把第一个公式(平衡方程)类比于f(x) = 0,那么Eq. 2可以类比为采用Newton-Raphson法求解平衡方程时所要用的的f'(x0)dx。 由于Jacobian矩阵是被包含于Eq.2的,现在我们看如果Jacobian矩阵不正确时,这对求解的最后结果是否有影响? 由于Newton-Raphason法求解过程,最后解的精度只与收敛条件有关,而与迭代过程或次数无关。因此,我们可以说Jacobian矩阵会影响收敛速度,但不会影响最终结果。
不过,由于Newton-Raphson法具有局部收敛性,如果Jacobian矩阵偏差的太大了,会导致收敛很慢和收敛发散。所以,最好还是输入正确的Jacobian矩阵。
本帖最后由 magicalarm 于 2011-11-25 01:10 编辑
shawn2008 发表于 2011-11-24 13:30 static/image/common/back.gif
关于Jacobian矩阵的作用,在谈这个问题之前,我们先要看看对于f(x) = 0这样的非线性方程, 采用Newton-Raphs ...
谢谢斑竹的详细解答。
”Jacobian矩阵会影响收敛速度,但不会影响最终结果。“
呵呵,我现在发现一个很奇怪的现象,使用准确的jacobian矩阵并不比使用不准确的jacobian矩收敛快。请见图。
准确的jacobian矩阵,875步,5462.16h
不准确的jacobian矩阵,875步,5477.54h
这个不解释了,呵呵!想一想这里的total time有什么物理意义? abaqus中的USER TIME,SYSTEM TIME, TOTAL CPU TIME, WALLCLOCK TIME都有什么物理意义? re11
准确的ddsdde有的时候并不一定能够提高多么快的计算时间,准确的ddsdde很多时候是保证计算是否收敛的一个重要参数。比如一个损伤的子程序,如果ddsdde不准确,那么可能没有计算结果,所以准确的ddsdde成为很多高度材料非线性问题的一个核心。
还有因为abaqus的standard的平衡并不是完全的平衡,由收敛容差觉得,如果使用的ddsdde不是很准确,可能导致收敛步长变得很小,这样可能在每个步长上都会有一定的偏移,最后的结果误差可能会很大。
如果收敛步长一直很小,那么standard的结果就好比explicit了,很难再一个高精度上来保证解的准确。
举个例子来说就是implicit dynamic,为什么它的最小步长只有1e-16,而standard可以达到1e-32,就是因为implicit很多时候会将步长降低到1e-16一下,可是这个时候算出来的结果与真实解偏移会非常大,那么算出来的就是没有的,所以控制一下最小步长,不让它太小。 敦诚 发表于 2011-11-25 16:30 static/image/common/back.gif
re11
准确的ddsdde有的时候并不一定能够提高多么快的计算时间,准确的ddsdde很多时候是保证计算是否收敛的 ...
谢谢敦诚大侠清晰明了的解释。在下受益匪浅。 学习了,有点明白的感觉了;P 这贴开的好,就该置顶,但是看见还有人在开贴问这类问题,实在有点对不起shawn2008,郭大侠以及magicalarm啊 理论贴,学习了 这个理论帖,受教了,顶 非常感激,有没有人做粘弹性类? 版主,我想请教一个问题,这个DDSDDE的定义是应变增量对应力增量的偏导数,是必须这样吗?在复杂的本构模型中,可以用应变增量对应力的偏导数吗?
页:
[1]
2