ABAQUS经验总结.docx
《ABAQUS经验总结.docx》由会员分享,可在线阅读,更多相关《ABAQUS经验总结.docx(23页珍藏版)》请在冰豆网上搜索。
ABAQUS经验总结
例如要取缸套的主推力侧上一列节点的径向位移(缸套轴线平行于Z轴),然后按照Z坐标画出径向位移曲线。
总的方法是先选上要分析的节点,然后按空间位置顺序记录节点编号,根据编号生成一个Path,再以这个path为横坐标,以要分析的量(如径向位移)为纵坐标画X-Y图。
1. 选出要分析区域节点:
这列节点共有几十个,一个一个选太慢,打开要分析的odb文件,选择DisplayGroup中的【ReplaceSelected】按钮,在目标类型中选择【Nodes】,然后结合视图方向、框选方法(矩形、圆形、多边形框)和选择方式(individually或者byangle)选出需要的节点集合,例子中的一列节点只有Z坐标不同,因此把视图方向调整到Z轴垂直于屏幕,这时一列点在屏幕上变成了一个点,在这一个点的位置上框选就可以得到一列点了。
在individually选择方式下,【shift+框选】是将选到的加入到已有选择中,【Ctrl+框选】是将选到的从已有选择中去除。
例如要在一个曲面上选一列节点,可以先用【byangle】方式将整个曲面选上,然后调整到合适的视图方向上切换到【individually】方式,用【Ctrl+框选】去掉多余的节点。
2. 按顺序记录节点编号:
Path对顺序很敏感,节点号顺序的调整会改变最后plot的数据点顺序。
要按照Z坐标大小顺序画出径向位移曲线,就必须按顺序记录节点编号。
上一步选好节点按中键确定后,屏幕上是空白,因为ABAQUS不会显示单独的节点,打开显示节点编号开关(在【CommonPlotOptions->Labels】中),这样屏幕上会显示出要选的那些节点的编号,按顺序记录下来。
号码之间用逗号分隔,冒号表示连续和间隔,例如:
1.2(1号和2号节点),1:
10(表示1,2,…,10),1:
9:
2(表示1,3,5,…,9)。
3. 生成目标表格和曲线,两种方法:
a)用上面排好的节点序列生成一个Path,然后基于这个path生成一个X-Y图(CreateX-Ydata->Path),在【X-YDataManager】中双击生成的图线可以得到相应的二维表格;b)菜单【Report->FieldOutput】,这种方法将二维表格数据写入一个文件,本身不能出图,但是可以对计算结果求和,因此可以用来求接触力、压力的合力(但要注意这里的求和是数值相加,不是矢量求和,因此只适用于各个力方向基本一致的情况下的合力估计)。
有时候历史变量输出的太多会出现
“Thenumberofhistoryoutputrequests(22466)inthisanalysisstephasexceededthemaximumvalueof10000specifiedbytheAbaqusenvironmentvariable'max_history_requests.'”错误,解决办法是:
在abaqus_v6.env中加一句“max_history_requests=0”即可。
abaqus_v6.env文件在C:
\ABAQUS\6.7-1\site\下。
比如两个接触面之间有0.1mm的缝隙,在压力作用下发生接触,只要将ContactControls下的稳定因子设为1即可正常计算(Interaction模块,主菜单Interaction->ContactControls->Create->Stabilization->AutomaticStabilization->factor设为1);
对于缝隙不均匀的情况,比如一端宽0.1mm,一端宽0.2mm,减小网格尺寸和稳定因子对计算结果几乎没有影响;
[04/08]关于ABAQUS历史输出变量
[折叠]
在帮助文档AnalysisUser’sManual中4.2.2节Nodalvariables部分定义了节点输出(用*NodeOutput关键字表示)可以包括的变量,从中可以看到应力(S)是不能作为节点计算结果输出的,只能作为单元积分点计算结果输出。
原因是节点应力是根据单元积分点应力计算结果外插得到的,因此节点应力只能在场变量(而且是节点所在单元有输出)的情况下才能输出。
如果在abaqus/cae中强行定义节点应力输出,INP文件中不会有相应的关键字,如果在INP文件中强行定义,求解时处理INP文件阶段会出错退出。
由于应力历史变量只能在单元积分点上输出,而在abaqus/cae中不能生成基于element型的set,除非直接使用网格模型做Part,但这样的模型往往不好操作,变通的方法是写由abaqus/cae生成INP文件,再手工修改这个INP文件,在其中添加一个element型的set,然后让其输出应力历史变量。
具体步骤:
1. 记住要输出的单元编号,例如为27,在INP文件的*Assembly部分定义一个element型的set:
*Elset,elset=Set-Name,instance=Part-Name
27,
2. 在*EndStep前加上:
*Output,history,frequency=10
*ElementOutput,elset=Set-Elem-forMeshPart
MISES,
[03/29]ABAQUS子程序VDLOAD学习笔记
[折叠]
使用的INP文件(beam.inp):
*Heading
loadwasaddedincae
**Jobname:
Job-CAEModelname:
Explicit-NoMove
*Preprint,echo=NO,model=NO,history=NO,contact=NO
**
**PARTS
**
*Part,name=beam
*Node
1,0.,0.
2,50.,0.
3,100.,0.
4,150.,0.
5,200.,0.
6,250.,0.
7,300.,0.
8,350.,0.
9,400.,0.
10,450.,0.
11,500.,0.
*Element,type=B21
1,1,2
2,2,3
3,3,4
4,4,5
5,5,6
6,6,7
7,7,8
8,8,9
9,9,10
10,10,11
*Elset,elset=_PickedSet2,internal,generate
1,10,1
*Elset,elset=_PickedSet3,internal,generate
1,10,1
**Section:
Section-1Profile:
Profile-1
*BeamSection,elset=_PickedSet2,material=Material-1,poisson=0.3,temperature=GRADIENTS,section=RECT
10.,5.
0.,0.,-1.
*EndPart
**
**
**ASSEMBLY
**
*Assembly,name=Assembly
**
*Instance,name=beam-1,part=beam
*EndInstance
**
*Elset,elset=forLoad,instance=beam-1
6,7
*Nset,nset=_PickedSet12,internal,instance=beam-1
1,
*Nset,nset=_PickedSet13,internal,instance=beam-1
11,
*Surface,type=ELEMENT,name=forLoadSPos,internal
forLoad,SPOS
*EndAssembly
**
**MATERIALS
**
*Material,name=Material-1
*Damping,alpha=5.
*Density
7.8e-09,
*Elastic
210000.,0.3
**
**BOUNDARYCONDITIONS
**
**Name:
BC-1Type:
Displacement/Rotation
*Boundary
_PickedSet12,1,1
_PickedSet12,2,2
**Name:
BC-2Type:
Displacement/Rotation
*Boundary
_PickedSet13,2,2
**----------------------------------------------------------------
**
**STEP:
Step-1
**
*Step,name=Step-1
*Dynamic,Explicit
0.5
*BulkViscosity
0.06,1.2
**
**LOADS
**
**Name:
Load-1Type:
Concentratedforce
*Dsload
forLoadSPos,PNU,1.
**
**OUTPUTREQUESTS
**
*Restart,write,numberinterval=1,timemarks=NO
**
**FIELDOUTPUT:
F-Output-1
**
*Output,field,timeinterval=0.005
*NodeOutput
U,
*ElementOutput,directions=YES
S,
**
**HISTORYOUTPUT:
H-Output-1
**
*Output,history,variable=PRESELECT
*EndStep
使用的for文件(Gas.for):
subroutinevdload(
1nblock,ndim,stepTime,totalTime,
1amplitude,curCoords,velocity,dirCos,jltyp,sname,value)
C
include'vaba_param.inc'
C
dimensioncurCoords(nblock,ndim),velocity(nblock,ndim),
1dirCos(nblock,ndim,ndim),value(nblock)
character*80sname
C
open(unit=17,file='e:
\aa.txt',status='old',position='append')
write(17,*)'stepTime=',stepTime
write(17,*)'ndim=',ndim
write(17,*)'curCoords=',curCoords
write(17,*)'jltyp=',jltyp
value=1
write(17,*)'sname=',sname
write(17,*)'value=',value
write(17,*)''
close(17)
return
end
命令行:
abaqusjob=beamuser=gasinteractive
分析:
ABAQUS/Explicit每个增量步(Increment)都会调用用户子程序,这里就是gas.for,因此上面打开/关闭文件的动作会进行很多次,为避免后面打开文件将原有的内容删掉,就必须显式地指明打开的是一个已存在的文件(status='old'),写文件的位置在原文件末尾(position='append')。
nblock表示载荷作用区域内对象的个数,当载荷类型为Pressure,作用在一些单元的面上时,nblock就是单元的数量。
stepTime表示当前时间,就是每个增量步发生时候的时间,时间起点为当前载荷步,如果要总时间,用totalTime。
当模型为二维时,ndim值为2,三维时ndim值为3。
curCoords(nblock,ndim)是一个二维数组。
curCoords(ki,kj)表示当前增量步时间下,序号为ki的点的位置坐标的序号为kj的坐标分量。
在二维梁模型中,“点”表示有载荷作用的单元的中点,ki取值范围为1~nblock,kj取值范围为1~ndim。
jltyp表示载荷的类型,与INP文件中的定义相一致,具体参见ABAQUS文档。
sname表示当载荷类型为surface-basedload(jltyp=0)时,载荷作用面的名称,与INP文件中的定义相一致,具体参见ABAQUS文档。
[03/24]ABAQUS用户子程序安装过程
[折叠]
软件版本
Microsoft.Visual.Studio.2005.Professional.Edition.DVD
Intel.Visual.Fortran.Compiler.Pro.v9.1.032
ABAQUS6.7
安装顺序
原则是保证VC2005在IntelFortran之前装,因为这样装IntelFortran与VC2005集成的组件才有效,可以按VC2005-IntelFortran-ABAQUS或者ABAQUS-VC2005-IntelFortran顺序装,VC2005只装VC++即可。
安装过程
分为三个步骤:
先装软件,再修改环境变量,最后是验证安装是否成功。
1) 机器上已经安装了abaqus6.7。
安装VC2005时选择custom方式,只装VC++,其他的诸如SQLServer之类的都不需要装,也不需要更改VC2005默认的安装路径;安装IntelFortran时选择所有项目;
2) 更改环境变量PATH、INCLUDE和LIB,方法是在各自原有的内容后增加:
PATH:
C:
\ProgramFiles\MicrosoftVisualStudio8\Common7\IDE;
C:
\ProgramFiles\MicrosoftVisualStudio8\VC\bin;
C:
\ProgramFiles\MicrosoftVisualStudio8\Common7\Tools;
C:
\ProgramFiles\MicrosoftVisualStudio8\SDK\v2.0\bin;
C:
\ProgramFiles\MicrosoftVisualStudio8\VC\VCPackages;
C:
\ProgramFiles\MicrosoftVisualStudio8\VC\PlatformSDK\bin
LIB:
C:
\ProgramFiles\MicrosoftVisualStudio8\VC\lib;C:
\ProgramFiles\MicrosoftVisualStudio8\SDK\v2.0\Lib;C:
\ProgramFiles\MicrosoftVisualStudio8\VC\PlatformSDK\Lib
INCULDE:
C:
\ProgramFiles\MicrosoftVisualStudio8\VC\include;C:
\ProgramFiles\MicrosoftVisualStudio8\VC\PlatformSDK\Include;
注:
LINK_F90这个变量不需要增加;上面的都假设VC2005装在了C盘默认目录下。
3) 验证:
a) 用记事本生成下面两个文件:
bbb.for文件
SUBROUTINEDLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
1JLTYP,SNAME)
C
INCLUDE'ABA_PARAM.INC'
C
DIMENSIONTIME
(2),COORDS(3)
CHARACTER*80SNAME
WRITE(6,*)'INCREMENTNUMBER',KINC
WRITE(6,*)'STEPTIME',TIME
(1)
WRITE(6,*)'ELEMENTNUMBER',NOEL
WRITE(6,*)'INTEGRATIONPOINTNUMBER',NPT
WRITE(6,*)'COORDS:
X',COORDS
(1)
F=1.0*COORDS
(1)
WRITE(6,*)'FORCE',F
WRITE(6,*)''
RETURN
END
beam.inp文件
*Heading
**Jobname:
Job-1Modelname:
beam
*Preprint,echo=NO,model=NO,history=NO,contact=NO
**
**PARTS
**
*Part,name=PART-1
*EndPart
**
**ASSEMBLY
**
*Assembly,name=Assembly
**
*Instance,name=PART-1-1,part=PART-1
*Node
1,0.,0.
2,20.,0.
3,40.,0.
4,60.,0.
5,80.,0.
6,100.,0.
*Element,type=B31
1,1,2
2,2,3
3,3,4
4,4,5
5,5,6
*Elset,elset=BEAM,generate
1,5,1
**Region:
(Section-1-BEAM:
BEAM),(BeamOrientation:
BEAM)
**Section:
Section-1-BEAMProfile:
Profile-1
*BeamSection,elset=BEAM,material=STEEL,temperature=GRADIENTS,section=RECT
0.2,5.
0.,0.,-1.
*EndInstance
*Nset,nset=ENDS,instance=PART-1-1
1,6
*Nset,nset=_M4,internal,instance=PART-1-1
6,
*Nset,nset=_M5,internal,instance=PART-1-1
1,
*EndAssembly
**
**MATERIALS
**
*Material,name=STEEL
*Elastic
210000.,0.3
*ELSET,ELSET=PY
BEAM
**
**BOUNDARYCONDITIONS
**
**Name:
Disp-BC-1Type:
Symmetry/Antisymmetry/Encastre
*Boundary
_M4,ENCASTRE
**----------------------------------------------------------------
**
**STEP:
Step-1
**
*Step,name=Step-1
*Static
**
**LOADS
**
**Name:
CFORCE-1Type:
Concentratedforce
*DLOAD
PY,PYNU
**
**OUTPUTREQUESTS
**
**
**FIELDOUTPUT:
F-Output-1
**
*Output,field,variable=PRESELECT
**
**FIELDOUTPUT:
F-Output-2
**
*Output,field
*ElementOutput
SF,
**
**HISTORYOUTPUT:
H-Output-1
**
*Output,history
*NodeOutput,nset=ENDS
CF1,CF2,CF3,CM1,CM2,CM3,RF1,RF2
RF3,RM1,RM2,RM3,U1,U2,U3,UR1
UR2,UR3
*ElPrint,freq=999999
*NodePrint,freq=999999
*EndStep
b) 在AbaqusCommand提示符后输入:
abaqusjob=beamuser=bbbinteractive
运行完毕并没有提示出错后,当前目录下应该出现文件名为beam,扩展名不同的几个文件,打开beam.dat文件,可以找到bbb.for文件中WRITE语句指定的输出内容,详见笔记“ABAQUS用户子程序学习小结”
[01/19]用ABAQUS进行多体分析的步骤
[折叠]
第一阶段:
总体分析
1. 画草图:
上面需要表明的信息包括(参考[石亦平2006]图8-19):
a) 各个部件(Part)的名称;
b) 各个部件上每一个参考点的名称和位置坐标,一般就是与其他部件连接的点,部件包括柔体、刚体和显示刚性体(本身为柔体,通过定义一个参考点,并施加显示体约束生成);
c) 各个连接单元的名称;
d) 每个连接单元要用到的两个参考点的名称;
e) 每个连接单元要用到的局部坐标系的名称、位置坐标和方向(便于后面输入坐标直接建立局部坐标系);
2. 自由度分析:
保证系统中不会出现过约束或者欠约束,步骤参考[石亦平2006]p261“连接单元类型和边界条件”;
3. 建立每个部件:
位置由第1.b)步给出;
4. 定义材料属性:
显示刚性体改为柔体,可以不定义材料属性;
5. 装配:
一般情况下各个part的位置都是装配后的位置,如果需要移动,可以用【Instance-Translate】来移动;
6. 划网格;
第二阶段:
刚体分析
目的:
检验系统中是否存在过约束和欠约束;
原则:
刚体加显示约束,未来柔体(在第三阶段要转化为柔体的Part)加刚体约束。
7. 定义各个参考点:
按照第1.b)步生成各个参考点,如果模型比较复杂,最好为每个参考点建立一个Set,这样后面建立约束和连接单元都会很方便;
8. 建立约束:
a) 建立柔体与参考点(如A)之间的显示体约束,以生成各个显示刚性体;
b) 如果体上除A外还有其他参考点(如B),各点之间要建立刚体约束,B的RegionType选“Tie(nodes)”;
9. 定义连接单元的基准坐标系:
坐标原点无所谓,关键是坐标轴方向;
10. 定义连接单元:
ABAQUS中建立运动副的方法是:
有PartA和PartB,质心参考