比如用梁单元。很有可能NDI和NSHR会不一样。 不知道你是不是一定要用到壳单元上?
如果必须用在壳单元上,可能S23,S31就必须自己在UAMT 中输出了。具体的做法我也不清楚。
还有对DDSDDE,我的理解也是: dS=DDSDDE*dE
我的意思是不管他是几乘几的矩阵 一般的D矩阵就是6*6
你编的umat需要适应于任何单元 所以当然6*6的矩阵应该给完全
当算体的时候
如果是壳单元,他只有ntens=3 那就等于三呗,他用哪个就是哪个 反正你的D6*6的矩阵放在哪了
如果是三维实体单元,ntens=6 所以你的D矩阵就全用上啦
记住你编的umat应该适应于所有的单元,所以不用考虑哪几个参数的值
而且这个stress(3)也许是人家只用到了你D6*6的第一行,第二行,和的四行哪
sigh
不知道我说明白了没有
: 因为我的UMAT从abaqus传来的变量(当我选用壳单元时)ntens=3, : ndi=2,nshr=1,这样的话,STRESS为3个,STRESS(3),不可能计算 : STRESS(4),STRESS(5),同理,STRAIN,DDSDDE也存在同样的情况 : 在中厚度板壳元中(MINDLIN)中,DDSDDE为5×5
对于DDSDDE,其实就是给了一个应力应变的斜率,我感觉
真正计算的是利用更新的应力,DDSDDE我觉得就是为了确保收敛 真开心有这么多人讨论ABAQUS,特别是umat 我国外的师兄说Umaterial在国外应用得也很广
: 对于DDSDDE,其实就是给了一个应力应变的斜率,我感觉
: 真正计算的是利用更新的应力,DDSDDE我觉得就是为了确保收敛 : 真开心有这么多人讨论ABAQUS,特别是umat : 我国外的师兄说Umaterial在国外应用得也很广
各位大侠,看到我提出的uamt,及statev有这么多人感兴趣,实在很 高兴,希望大家能把摸索到的东西介绍给大家,现在我的程序能通了, (因没有屈服面的概念),虽然结果是错误的,但总可以静下心来,不像以前 一运行自己的umat程序就standard.exe error.(并且程序.dat.msg.中无 任何错误信息,log说error see msg,but msg中无)。
现在我明白了,在用户程序中,WRITE(*,*)则写入log,write(6,*)则写入 dat,等,
在监控程序时,发现,statev(),是每次迭代和增量运行它,他就为0, 还是为上一步的值,因为我每次都为0,怀疑有误 还望大侠提醒!
: dat,等,
: 在监控程序时,发现,statev(),是每次迭代和增量运行它,他就为0,
应该不是0,如果在每个增量步的最后你重新更新过他 输入文件*.inp中,*depvar不要忘了写statev()的维数哦!
: 还是为上一步的值,因为我每次都为0,怀疑有误 : 还望大侠提醒! --
你只有一个单元么?
【 在 saturn (好好工作) 的大作中提到: 】
: ~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~这我以前还不知道 : 应该不是0,如果在每个增量步的最后你重新更新过他 : 输入文件*.inp中,*depvar不要忘了写statev()的维数哦! --
【 在 air1 (无影如风※勤奋羊羊※课题在即) 的大作中提到: 】 : 可是这个写的命令有用么 : 对于输出而言
: 你只有一个单元么?
已经写了,定义了statev的维数, *depvar 20,
看来我的错误不在statev,
因为我的输出显示在第三增量步中,statev不为0, 但我还是有些不清楚uamt程序的执行过程,
比如,
一板一次壳元s4r,面内采用缩减积分,即1×1,厚度方向为5点simpson 积分,按道理,
没一增量步的迭代步,对每一积分点都会运行一次umat, 即上问题,每一迭代该运行5次,
那上面的statev,是每次迭代都会改变(不是每次运行)? 请air1,beauty_life,saturn,......等各位相助
看过书上例子,
如果定义statev为(nblock,*)的数组,
应该对每个积分点都进行迭代计算,从而更新变量值 (写stateNew(nblock,*)
请问Mikejwg,变量statev怎么输出?
可以象应力应变那样进行绘图、动画等后处理吗?
不好意思,我只在log文件中输出,还没有在odb中输出, 想同element output等那样输出,只能在UVARM中定义,但 同statev是不同的,老兄你可以试试。
发信人: Mikejwg (mikejwg), 信区: FEA 标 题: 用abaqus中的UMAT的大侠看过来。。。 发信站: BBS 水木清华站 (Tue Dec 25 15:36:27 2001)
各位大侠,
在加入自己弹塑性本构模型时,如何加入区分弹性部分与塑性部分(或 非弹性部分)。也就是说,在输出时,EE,LE,IE([PE]),因为在umat中, 我们只发现dstran,stress,除此并没有发现其它有关应力应变得变量。
你所说的区分弹性部分和塑性部分是指应变的弹塑性部分:E=EE+PE吗? 还是指加载过程的弹塑性?
E=EE+PE
我觉得想从umat的输入参数里面区分是不可能的
可不可以你先算出弹性的,然后用stran减去弹性的,得到塑性的 我猜的哦
我自己是明白的,但不知怎么让程序明白
比如,在一定条件下可解出位移增量,abaqus得到应变增量dstran,stran, 而弹性部分,dEEij=dSij/(2G),dEPij=dstranij-dEEij 但怎么控制程序了?
默认得情况又是怎样计算的 谢谢
我不清楚你的本构,
我大概觉得你如果是用屈服面的话
你是不是可以用statev()记录每一步的EE,EP
然后通过应力偏量来计算DEE,DEP,然后自己更新EE,EP,就不与stran扯上关系 我以前见过用Umat算J2流动理论的时候,是这么做的
首先我的本构不能采用屈服面的概念(一种新型的弹塑性本构模型), 我也看了那个采用j2流动法则的例子,我可以在umat中的statev重定义 ee,pe,但statev不能像EE,PE,IE那样在odb中输出。 再说在umat中的ee,pe与inp中的ee,pe是不同的。 谢谢
看来你只能试试uvarm了 呵呵,
发信人: Mikejwg (mikejwg), 信区: FEA
标 题: Re: ABAQUS中的弹塑性应变的计算问题?? 发信站: BBS 水木清华站 (Thu Dec 27 14:19:27 2001)
用uvar()勉强成功
标 题: 在abaqus中,DSTRAN,STRAN为工程剪应变吗?
Sat Dec 29 09:44:03 2001)
同题,这涉及到ddsdde,peeq的计算
对,我也是最近才发现的
peeq怎么计算?
在umat中计算peeq,(因用umat后,系统缺省peeq=0)然后再uvarm输出
uvarm可以输出到哪里?.odb可以么?
另外那个strav??就是自己定义用于umat的那个数组里的数可以输出到.odb里么? 谢了,你这个成长中的大侠
在umat中,statev是不能用在output中的,statev只是作为一个解的 状态变量,说来惭愧,我是在umat中定义peeq,(peeq)的求解一般在 弹塑性力学书上有(等效塑性应变),用write()写入一个临时文件, ((切记:这个文件unit号不要与abaqus中的重合,因为他有一些系统默认 的文件号,))
然后在uvarm中读取,以uvarm输出,因为uvarm可以以odb的形式输出, 支持output,field,output,history 不知谁还有更好的方法。
听说清华有人abaqus用的很熟了。
大家过奖了,我是没办法,要出论文,总得学习,上午版主还在qq中指点了我一番
YOU CAN TRY AS FOLLOWS:
*STEP,EXTRAPOLATION=NO,INC=2000000 *STATIC
0.001,500.0,0.00001,0.1
可以
并且在step里好像有选项选择
你是手写的程序么 新建一个step 然后定义边条
在上一step定义边条的节点上重新定义边条 而且,好像,是不是有个选项是new 这样就可以取消上一step的边条设置了
在以后的载荷步里重新定义边界条件,加参数new
比如在第二个载荷步里: