abaqus常用技巧总结.docx
《abaqus常用技巧总结.docx》由会员分享,可在线阅读,更多相关《abaqus常用技巧总结.docx(90页珍藏版)》请在冰豆网上搜索。
abaqus常用技巧总结
Abaqus常用技巧总结
本手册是由simwe等论坛上精华帖以及本人下载的其他资料整理,由于很多资料搜集已经很久,而且时间有限,都没有注明原作者,也没有最资料进行分类整理,见谅。
如需要,请PM给我。
Shelly31
建议阅读方式:
1.对timeincrement的根本理解
abaqus的step里有maximumnumberofincrement、initialincrement、minimumincrement、maximumincrement四个量许多网友不知怎样设置合理,合理设置是建立在深刻理解基础上的。
要理解这个问题,首先需要了解abaqus的计算过程和有限元计算收敛性问题,abaqus首先用initial值输入进行叠代计算,如果计算结果收敛,则继续以这个值代入计算下一步,如果不收敛,则自动减小时间步长(timeincrement)重新计算直到收敛然后计算下一步。
但是如果时间步长减小到最小值minimum时计算结果还是不收敛,则abaqus将停止计算,由此可知maximum值和minimum值分别是abaqus在收敛计算时时间步长的上下限,同时totaltime=求和(timeincrement*number),当时间步长很小时,需要计算的步数number相应增大(电脑计算花的时间也随之增大),因此number一般要设置较大值。
minimum并不是越小越好,因为1)number即计算时间增大2)abaqus计算精度约在10^(-5),当时间步长小于这个值,计算结果已经没什么意义了。
有限元计算收敛性与(最小空间步长/时间步长)值有关,若minimum设为10^(-5),还是不收敛,可适当减小空间步长(即把网格画细点),当然还有一些其他办法,如果实在计算不了,也许是模型本身有点问题,或改为显示explicit计算M*\#s# 总而言之,maximunnumber要适当设置较大值,initial可适当改小(如-2,-3量级),minimum(-5量级)不要修改,maximum值影响不大,可不改
的加载
请教各位大牛
我最近在算一个题目,一个大筒体上有三个接管端面固定,大筒体两端加载扭距,但是不知道如何加载.请各位高手能赐教
谢谢
1.将大筒体两端要施加扭矩的节点分别定义为两个Nset:
left,right.
2.分别在大筒体两端的圆心处定义两个referencenode:
rp-left,rp-right.
3.用如下命令将两个节点集绕3轴旋转的自由度与参考点耦合起来,其他自由度度是否耦合根据具体问题而定:
*KINEMATICCOUPLING,REFNODE=rp-left
left,6,6
*KINEMATICCOUPLING,REFNODE=rp-right
right,6,6
4.在两个参考点上施加绕3轴旋转的弯矩.
友情提醒:
referencenode也有自由度,注意相应的边界条件.
计算时c盘的临时文件太大了,怎么改目录
临时目录是Windows自己定义的,可以在系统环境变量中修改...
中如何加预应力
具体没作过,看看*PRESTRESSHOLD和*INITIALCONDITIONS,TYPE=SOLUTION,REBAR
这两个命令以及ABAQUSAnalysisUser'sManual
“Definingreinforcement,”Section2.2.3
“Definingrebarasanelementproperty,”Section2.2.4
这两节吧。
里面看abaqus分析的结果
、你在abaqus中计算完成后,将结果文件输出到*.fil.
2、利用hyperworks提供的(在安装目录下的Altair\\translators中)
3、在控制台下运行hmabaqus*.fil*res,执行完成后就生成了相应的res文件
4、在hyperview中打开你的模型文件*.inp和结果文件*.res,就可以查看你的结果了
gookluck!
Plots
**
**STEP:
pre-load
**
*Step,name=pre-load,nlgeom
pre-loading
*Static
1.,1e-05,
........
**
**LOADS
**
**Name:
pt-loadType:
Concentratedforce
*Cload
_G5,2,
**
........
**
*Output,history,frequency=1
*nodeoutput,nset=_G5
CF2,U2
*elementoutput,elset=_G5
E22,S22
**
*monitor,node=_G5,dof=2
7.如何把上一次分析结果作为下一次分析的初始条件
Q如果想把上一次的分析结果作为下一次分析的初始条件该怎么做
A使用LDREAD命令
首先需要注意下面两个问题
1每一个ANSYS的实体模型的面或体都要定义对应的单元类型编号材料属性
编号实常数编号单元坐标系编号这些参数在整个分析过程中保持不变而这些
编号对应的属性在各个步骤中是不同的
2网格划分要满足所有步骤的要求单
元类型必须兼容
步骤
1创建实体模型
2创建多个物理环境
设定一个物理环境中的单元类型材料属性实常数坐标系等
将这些参数的编号赋给实体模型的面或体
施加基本物理载荷和边界条件
设定求解选项
选择一个标题使用PHYSICS,WRITE命令将物理环境存入文件中
3清楚当前的物理环境命令是PHYSICS,CLEAR4重复第二步准备下一个物理环境
8.材料方向与增量步
材料方向:
针对各向异性材料(如板金材料、复合材料等)变形体,材料方向定义材料的某一特定方向如纤维方向。
该方向随着变形体的移动而移动,旋转而旋转。
输出的场变量值都以材料方向为参考,有时便于数据处理,分析计算结果等。
abaqus中增量步
abaqus中把所有载荷按一定的要求分成若干载荷步step,每一步step根据abaqus自动载荷增量,分成若干增量increments,每一增量施加一定的载荷,然后每一增量通过若干迭代步iteration进行迭代,当系统达到平衡时,迭代结束,完成一个增量。
当所有的增量都完成后,计算结束;反之,计算可能出现发散。
这时,可以通过采用多钟方法(如调整放大质量系数,单元网格优化等)调整增量大小,使计算继续进行
9.多个inp文件如何实现批处理
我喜欢用fortran
写成这样:
!
!
!
FUNCTIONS:
!
nodedeform-Entrypointofconsoleapplication.
!
!
Exampleofdisplaying'HelloWorld'atexecutiontime.
!
!
****************************************************************************
!
!
PROGRAM:
nodedeform
!
!
PURPOSE:
Entrypointfor'HelloWorld'sampleconsoleapplication.
!
!
****************************************************************************
programnodedeform
USEDFLIB
!
implicitnone
result=SYSTEMQQ('abaqusjob=3d05ctJinteractive')
result=SYSTEMQQ('abaqusjob=3d05ctJmodel-2interactive')
!
result=SYSTEMQQ('abaqusjob=test-1interactive')
!
result=SYSTEMQQ('abaqusjob=test-2interactive')
!
result=SYSTEMQQ('abaqusjob=test-3interactive')
!
result=SYSTEMQQ('abaqusjob=test-4interactive')
!
result=SYSTEMQQ('abaqusjob=test-5interactive')
!
result=SYSTEMQQ('abaqusjob=test-6interactive')
!
result=SYSTEMQQ('abaqusjob=test-7interactive')
!
result=SYSTEMQQ('abaqusjob=test-8interactive')
endprogramnodedeform
10.关于ABAQUS的任务管理
关于ABAQUS的任务管理[精华]
chibiko
发帖:
26
积分:
1
于2004-07-0303:
56
--------------------------------------------------------------------------------
前些日子的计算量很大,自己的机器又不是很快,一个任务要算上几天。
一开始,在算题的时候由于CPU占用很大,基本上做不了别的。
捉摸了好几天,现在终于有点掌握ABAQUS的任务管理方法了,主要有两点,这里和大家共享。
我的系统是WindowsXP,使用的是。
1。
新增了任务管理的命令,可以暂停、恢复、和终止一个正在背景运行的任务,方法如下(在命令行输入并运行):
任务暂停:
abaqussuspendjob=job-name
任务恢复:
abaqusresumejob=job-name
任务终止:
abaqusterminatejob=job-name
其中任务暂停(suspend)的时候,windows任务管理栏中仍会保留standard/explicit的计算线程,只是不再使用CPU资源,当任务恢复(resume)的时候继续工作。
任务终止则就像CAE中提交的任务的KILL功能类似,直接cut掉正在运行的任务,不可恢复。
其实也就和在windows任务管理栏中强行终止差不多,但属于合法操作。
2。
就是利用windos的任务管理栏了,使用它的processes管理功能时,不仅仅可以强行关掉一个正在运行的任务,还可以通过改变它的优先级别来改变其对CPU的占用程度。
共有Realtime,High,AboveNormal,Normal,BelowNormal,Low五个可选等级,windows默认的等级是Normal,此时所有的任务都在随机抢占CPU资源,一般ABAQUS在运行时想要运行别的程序就比较困难了,特别是一些大程序。
在觉得机器使用时有明显的延迟时,就可以把ABAQUS任务的优先级别设的低一些,就可以腾出CPU资源给别的级别高的任务了,不用机器的时候再把ABAQUS任务的级别调上去,这样就可以娱乐、工作两不误了。
Youmaytrythismethodwhichwaspostedatsimweforum,butnotmyoriginalidea.
Anyway,Iwillfeelveryhappyevenifitprobablyjusthelpsyoujustalittlebit.
11.关于数据的输入输出
1.输出数据到dat文件:
*NODEPRINT,NSET=nset_name,FREQ=1
COORD
得到的是变形前的坐标还是变形变形后的坐标
偶在前面已发文问过,偶有时得到的是变形前的,有时得到是变形后的,一直没有弄明白这个问题。
偶想得到的是变形后的坐标
2.
其实abaqus自己就带有相关的功能:
abaqusjob=job-1suspend.可以将计算挂起.如果你需要重新进行运算
输入abaqusjob=job-1resume.
3.
如何输出大量节点的时间历程曲线
在环境文件中添加一句
max_history_requests=0即可。
12.后处理积分
CAE自带此功能,比如对速度时程积分得到位移时程,可以这样操作:
利用XYData---->ODBHistoryOutput将速度时程存为V,然后XYData---->OperateonXYData---->Operations
看到那个integrate(X)
这个可能还是只是实现对时间的积分,如果对dx,dy的积分
如何实现呢
比方说,Q=v*A
已经知道流速的矢量分布,怎么得到流量的分布了!
这也是可以的,关键在于你的x-ydata数据的两轴数据是什么其积分就是y数据值对x值的积分!
看看:
CAEusermanual:
ofX–Ydataoperations
13.接触分析激活杀死
Usage:
Usebothofthefollowingoptions:
*MODELCHANGE,TYPE=CONTACTPAIR,ADD
surface_1,surface_2
*CONTACTINTERFERENCE
surface_1,surface_2,
Usage:
*MODELCHANGE,TYPE=CONTACTPAIR,REMOVE
14.利用queue的功能由本地机器向远程unix机器提交abaqus作业的方法[精华]
利用queue的功能由本地机器向远程unix机器提交abaqus作业的方法
假设:
1.远程unix机器的安装目录为/abaqus,
2.远程计算机IP地址为,主机名为ibmlinux
3.本地计算机IP地址为,主机名为training
下面的讨论涉及的内容相应改变
Step1分别设置本地计算机和远程计算机之间的主机名和IP地址对应。
1.修改本地hosts文件,windows上一般位于c:
\windows\system32\drivers\etc下,unix上位于/etc下,加入远程计算机主机名和IP地址对应行,如:
ibmlinux
2.修改远程hosts文件,位于/etc下,加入本地计算机主机名和IP地址对应行,如:
training
Step2设置本地计算机对远程计算机运行rsh和rcp命令正确。
1.两台计算机登陆名和密码一致。
举例而言,若远程计算机登陆名和密码为root/root,则设置本地计算机也用同样的用户名和密码登陆。
2.修改远程计算机.rhosts文件,该文件位于对应用户名登陆后的主目录下,如/home/root,加入本地计算机的IP地址使得本地计算机可以访问到远程计算机。
3.在本地计算机的提示符下键入
rshibmlinuxls
测试rsh是否能够正常使用,如果可以列出远程计算机主目录下文件,代表rsh和rcp工作正常。
Step3设置远程计算机该用户的默认登陆程序为csh,修改passwd文件,位于/etc下,如:
root:
Ty91eFGzybEE2:
0:
3:
:
/:
/usr/bin/csh
Step4修改远程计算机的abaqus环境文件
在环境文件最后加入
queue_name=["nice_queue"]
after_prefix="-b"
queue_prefix="-q"
nice_queue="/bin/sh-c'nice./%S1>%L2>&1&'"
保存
在提示符下面键入
abaqusfetchjob=
abaqusjob=beamqueue=nice_queue
如果可以顺利获得,则表示远程计算机queue设置正确。
Step5修改本地计算机的abaqus环境文件
在环境文件最后加入
defonCaeStartup():
defmakeQueues(*args):
importos,driverUtils
driverName='./abaqus'
scratchDir='/abaqus/Commands'
(name='nice',
queueName='nice_queue',
hostName='ibmlinux',
driver=driverName,
localPlatform=NT,
fileCopy=ON,
directory=scratchDir)
addImportCallback('job',makeQueues)
保存
Step6在本地计算机上启动abaqus/cae,创建或打开一个模型,在Job模块创建一个新任务,选择RunMode为Queue,选择nice,OK,提交运算,观察是否任务被自动提交到了远程计算机的/abaqus/Commands下运行并自动返回odb文件到本地计算机。
如有错误,会在启动cae的提示符窗口中出现,检查错误并找到相应解决办法。
15.利用命令进行计算时如何设置调用内存量
abaqusjob=job-namememory=memory-size
16.清华大学bbs的abaqus精华
【在luxz(panda)的大作中提到:
】
:
哪位有什么好办法
:
感觉abaqus自己的前处理用得很不爽
:
patran可以么
我感觉abaqus/cae不错的呀,实体建模颇有pro/e的风格
感觉patran也好不到哪去,太麻烦,
也许patran功能更强一些(要不然也对不起它那硕大的身躯呀),
但对于不是很庞大的模型,根本体现不出来什么优势
:
air1大侠,本人给你作广告,为何不可
:
请问:
弹塑性矩阵【D]与ddsdde有何联系,
:
你用过板壳单元吗
stress=D*stran
d(stress)=ddsdde*d(stran)
--
那应该就是一样的,因为全量理论,
Sij=DijklEkl(满足张量求和约定)
即Stress=D*Strain;
而在增量理论中,
△S=D*△E(在有限变形中,△其实应该为应力的客观率)
--
似乎不对吧
大变形下此D非彼D
你看过黄克智的固体本构关系这本书么
如果你从全量理论和增量理论的角度上讲
那似乎第一个Digkl就不对
你有第一个式子么
如果有,求导不久完了
:
那应该就是一样的,因为全量理论,
:
Sij=DijklEkl(满足张量求和约定)
:
即Stress=D*Strain;
:
而在增量理论中,
:
△S=D*△E(在有限变形中,△其实应该为应力的客观率)
是啊,大变形下的[D]与普通意义下的[D]在构型上是不一样的,
毕竟[D]大是变形历史的函数,而[D]小则不是,
我推导一种新的本构关系,
△Sij=Dijkl△Ekl(其中△为Jaumann率)
假设材料一开始就屈服(即屈服面为0)
想用壳单元,
:
似乎不对吧
:
大变形下此D非彼D
:
你看过黄克智的固体本构关系这本书么
:
如果你从全量理论和增量理论的角度上讲
:
那似乎第一个Digkl就不对
:
你有第一个式子么
:
如果有,求导不久完了
:
是啊,大变形下的[D]与普通意义下的[D]在构型上是不一样的,
:
毕竟[D]大是变形历史的函数,而[D]小则不是,
:
我推导一种新的本构关系,
:
△Sij=Dijkl△Ekl(其中△为Jaumann率)
:
假设材料一开始就屈服(即屈服面为0)
:
想用壳单元,
唉,别提了,问题就出在,在abaqus中,明明写着可以考虑剪切效应,
可我打印出剪切力个数是,nshr=1,即只有S12,
那我的S13,S23就不知怎么计算,
(DDSDDE(5,5)无法计算,因为ntens=3,最多只能计算DDSDDE(3,3))
你编umat编进去不久行了
他让用NDI,NSHR,NTENS表示变量,你就用这些表示变量
这样他就可以任意的计算了呀,而不在意实际计算的变量数
:
唉,别提了,问题就出在,在abaqus中,明明写着可以考虑剪切效应,
:
可我打印出剪切力个数是,nshr=1,即只有S12,
:
那我的S13,S23就不知怎么计算,
:
(DDSDDE(5,5)无法计算,因为ntens=3,最多只能计算DDSDDE(3,3))
因为我的UMAT从abaqus传来的变量(当我选用壳单元时)ntens=3,
ndi=2,nshr=1,这样的话,STRESS为3个,STRESS(3),不可能计算
STRESS(4),STRESS(5),同理,STRAIN,DDSDDE也存在同样的情况
在中厚度板壳元中(MINDLIN)中,DDSDDE为5×5
你的FOR文件收到,可惜研究的对象相差太大,看不懂!
不过你在文件中定义的变量有的根本就没有用到,
还有有的地方似乎是毫无用处的代码,比如:
SMISES一段
我觉得你不应该太急,第一步应该保证代码的正确性。
另外看了你上面的讨论,我觉得你应该换一种单元试一试。
比如用梁单元。
很有可能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,特别是um