资源描述
例如要取缸套的主推力侧上一列节点的径向位移(缸套轴线平行于Z轴),然后按照Z坐标画出径向位移曲线。总的方法是先选上要分析的节点,然后按空间位置顺序记录节点编号,根据编号生成一个Path,再以这个path为横坐标,以要分析的量(如径向位移)为纵坐标画X-Y图。
1. 选出要分析区域节点:这列节点共有几十个,一个一个选太慢,打开要分析的odb文件,选择Display Group中的【Replace Selected】按钮,在目标类型中选择【Nodes】,然后结合视图方向、框选方法(矩形、圆形、多边形框)和选择方式(individually或者by angle)选出需要的节点集合,例子中的一列节点只有Z坐标不同,因此把视图方向调整到Z轴垂直于屏幕,这时一列点在屏幕上变成了一个点,在这一个点的位置上框选就可以得到一列点了。在individually选择方式下,【shift+框选】是将选到的加入到已有选择中,【Ctrl+框选】是将选到的从已有选择中去除。例如要在一个曲面上选一列节点,可以先用【by angle】方式将整个曲面选上,然后调整到合适的视图方向上切换到【individually】方式,用【Ctrl+框选】去掉多余的节点。
2. 按顺序记录节点编号:Path对顺序很敏感,节点号顺序的调整会改变最后plot的数据点顺序。要按照Z坐标大小顺序画出径向位移曲线,就必须按顺序记录节点编号。上一步选好节点按中键确定后,屏幕上是空白,因为ABAQUS不会显示单独的节点,打开显示节点编号开关(在【Common Plot Options->Labels】中),这样屏幕上会显示出要选的那些节点的编号,按顺序记录下来。号码之间用逗号分隔,冒号表示连续和间隔,例如:1.2(1号和2号节点),1:10(表示1,2,…,10),1:9:2(表示1,3,5,…,9)。
3. 生成目标表格和曲线,两种方法:a)用上面排好的节点序列生成一个Path,然后基于这个path生成一个X-Y图(Create X-Y data -> Path),在【X-Y Data Manager】中双击生成的图线可以得到相应的二维表格;b)菜单【Report->Field Output】,这种方法将二维表格数据写入一个文件,本身不能出图,但是可以对计算结果求和,因此可以用来求接触力、压力的合力(但要注意这里的求和是数值相加,不是矢量求和,因此只适用于各个力方向基本一致的情况下的合力估计)。
有时候历史变量输出的太多会出现
“The number of history output requests (22466) in this analysis step has exceeded the maximum value of 10000 specified by the Abaqus environment variable 'max_history_requests.'”错误,解决办法是:
在abaqus_v6.env中加一句“max_history_requests=0”即可。
abaqus_v6.env文件在C:\ABAQUS\6.7-1\site\下。
比如两个接触面之间有0.1mm的缝隙,在压力作用下发生接触,只要将Contact Controls下的稳定因子设为1即可正常计算(Interaction模块,主菜单Interaction->Contact Controls->Create->Stabilization->Automatic Stabilization->factor设为1);
对于缝隙不均匀的情况,比如一端宽0.1mm,一端宽0.2mm,减小网格尺寸和稳定因子对计算结果几乎没有影响;
[04/08] 关于ABAQUS历史输出变量
[折叠]
在帮助文档Analysis User’s Manual中4.2.2节Nodal variables部分定义了节点输出(用*Node Output关键字表示)可以包括的变量,从中可以看到应力(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. 在*End Step前加上:
*Output, history, frequency=10
*Element Output, elset=Set-Elem-forMeshPart
MISES,
[03/29] ABAQUS子程序VDLOAD学习笔记
[折叠]
使用的INP文件(beam.inp):
*Heading
load was added in cae
** Job name: Job-CAE Model name: 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-1 Profile: Profile-1
*Beam Section, elset=_PickedSet2, material=Material-1, poisson = 0.3, temperature=GRADIENTS, section=RECT
10., 5.
0.,0.,-1.
*End Part
**
**
** ASSEMBLY
**
*Assembly, name=Assembly
**
*Instance, name=beam-1, part=beam
*End Instance
**
*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
*End Assembly
**
** MATERIALS
**
*Material, name=Material-1
*Damping, alpha=5.
*Density
7.8e-09,
*Elastic
210000., 0.3
**
** BOUNDARY CONDITIONS
**
** Name: BC-1 Type: Displacement/Rotation
*Boundary
_PickedSet12, 1, 1
_PickedSet12, 2, 2
** Name: BC-2 Type: Displacement/Rotation
*Boundary
_PickedSet13, 2, 2
** ----------------------------------------------------------------
**
** STEP: Step-1
**
*Step, name=Step-1
*Dynamic, Explicit
, 0.5
*Bulk Viscosity
0.06, 1.2
**
** LOADS
**
** Name: Load-1 Type: Concentrated force
*Dsload
forLoadSPos, PNU, 1.
**
** OUTPUT REQUESTS
**
*Restart, write, number interval=1, time marks=NO
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, time interval=0.005
*Node Output
U,
*Element Output, directions=YES
S,
**
** HISTORY OUTPUT: H-Output-1
**
*Output, history, variable=PRESELECT
*End Step
使用的for文件(Gas.for):
subroutine vdload (
1 nblock, ndim, stepTime, totalTime,
1 amplitude, curCoords, velocity, dirCos, jltyp, sname,value )
C
include 'vaba_param.inc'
C
dimension curCoords(nblock,ndim), velocity(nblock,ndim),
1 dirCos(nblock,ndim,ndim), value(nblock)
character*80 sname
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
命令行:abaqus job=beam user=gas interactive
分析:
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-based load(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在Intel Fortran之前装,因为这样装Intel Fortran与VC2005集成的组件才有效,可以按VC2005-Intel Fortran-ABAQUS或者ABAQUS- VC2005-Intel Fortran顺序装,VC2005只装VC++即可。
安装过程
分为三个步骤:先装软件,再修改环境变量,最后是验证安装是否成功。
1) 机器上已经安装了abaqus6.7。安装VC2005时选择custom方式,只装VC++,其他的诸如SQL Server之类的都不需要装,也不需要更改VC2005默认的安装路径;安装Intel Fortran时选择所有项目;
2) 更改环境变量PATH、INCLUDE和LIB,方法是在各自原有的内容后增加:
PATH:C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;
C:\Program Files\Microsoft Visual Studio 8\VC\bin;
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;
C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin
LIB:C:\Program Files\Microsoft Visual Studio 8\VC\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Lib;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib
INCULDE:C:\Program Files\Microsoft Visual Studio 8\VC\include;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include;
注:LINK_F90这个变量不需要增加;上面的都假设VC2005装在了C盘默认目录下。
3) 验证:
a) 用记事本生成下面两个文件:
bbb.for文件
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
1 JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2), COORDS (3)
CHARACTER*80 SNAME
WRITE(6,*)'INCREMENT NUMBER',KINC
WRITE(6,*)'STEP TIME',TIME(1)
WRITE(6,*)'ELEMENT NUMBER',NOEL
WRITE(6,*)'INTEGRATION POINT NUMBER',NPT
WRITE(6,*)'COORDS:X',COORDS(1)
F=1.0*COORDS (1)
WRITE(6,*)'FORCE',F
WRITE(6,*)' '
RETURN
END
beam.inp文件
*Heading
** Job name: Job-1 Model name: beam
*Preprint, echo=NO, model=NO, history=NO, contact=NO
**
** PARTS
**
*Part, name=PART-1
*End Part
**
** 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), (Beam Orientation:BEAM)
** Section: Section-1-BEAM Profile: Profile-1
*Beam Section, elset=BEAM, material=STEEL, temperature=GRADIENTS, section=RECT
0.2, 5.
0.,0.,-1.
*End Instance
*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,
*End Assembly
**
** MATERIALS
**
*Material, name=STEEL
*Elastic
210000., 0.3
*ELSET,ELSET=PY
BEAM
**
** BOUNDARY CONDITIONS
**
** Name: Disp-BC-1 Type: Symmetry/Antisymmetry/Encastre
*Boundary
_M4, ENCASTRE
** ----------------------------------------------------------------
**
** STEP: Step-1
**
*Step, name=Step-1
*Static
**
** LOADS
**
** Name: CFORCE-1 Type: Concentrated force
*DLOAD
PY,PYNU
**
** OUTPUT REQUESTS
**
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
**
** FIELD OUTPUT: F-Output-2
**
*Output, field
*Element Output
SF,
**
** HISTORY OUTPUT: H-Output-1
**
*Output, history
*Node Output, nset=ENDS
CF1, CF2, CF3, CM1, CM2, CM3, RF1, RF2
RF3, RM1, RM2, RM3, U1, U2, U3, UR1
UR2, UR3
*El Print, freq=999999
*Node Print, freq=999999
*End Step
b) 在Abaqus Command提示符后输入:
abaqus job=beam user=bbb interactive
运行完毕并没有提示出错后,当前目录下应该出现文件名为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的Region Type选“Tie(nodes)”;
9. 定义连接单元的基准坐标系:坐标原点无所谓,关键是坐标轴方向;
10. 定义连接单元:ABAQUS中建立运动副的方法是:有Part A和Part B,质心参考点分别为ac和bc,在运动副处二者的参考点分别为arp和brp,首先建立(ac和arp)、(bc和brp)的刚体约束,然后建立arp和brp的连接单元。对于未来柔体,不要建立arp和brp,而要使用体上已经存在的点(Vertex),这样第三阶段直接删除刚体约束即可进行柔体分析。
a) 定义连接属性:建立各个Connector Section;
b) 定义连接对(Wire):就是建立连接各对参考点的Wire:
c) 建立连接单元(Connector Assignment):在这里配对连接属性和wire,同时指定第一个参考点使用的坐标系;
11. 确定分析步类型和数量:如果不关心分析目标的动态响应(例如进行强度分析),则使用静态分析步,但几何非线性要设为On;
12. 设置历史变量输出:domain设为代表某个运动副的Set,输出变量设为Connector中的CRF和CU;
13. 定义边界条件(和载荷):按照第2步中的分析定义边界条件;
14. 提交作业求解;
15. 后处理:
a) 用【Query-Probe Values】,输出场变量设为U,可以看到各个参考点的位移量(参考点被作为装配体(Assembly)的节点(node),【Probe Values-Key-in label-Part instance:Assembly】可以依次输入各个参考点求其坐标,配合【Step/Frame】,可以看到各个迭代步中参考点的位移),如果仅进行刚体分析,没有施加载荷,也没有过约束,各个部件的node的位移值都不会显示;
b) 【Result-History Output】可以看到第12步中设置的输出变量结果,如CU是运动副上两个点的相对位移,CRF是两个点的反作用力等等;
第三阶段:柔体分析
16. 例如要分析Part A和Part B上的应力分布,则删除Part A和Part B上的刚体约束,给Part A和Part B建立各自的Set,在场变量输出中增加Set-Part-A和Set-Part-B的相关变量(例如应力、位移等),重新提交分析。
[2007/10/29] ABAQUS用户子程序学习小结
[折叠]
1.1 FORTRAN语言不区分大小写,文件扩展名为for,正文从第7列开始,第1~5列是标号区,第六列是续行标志区。
1.2 FORTRAN语言中的“I-N规则”:I、J、K、L、M、N开头的为整型变量,其他开头为实型变量;
2 DIMENSION COORDS(3)表示声明一个含3个元素的数组,下标分别为1、2、3,访问形式为COORDS(n),n为1~3;
3 子程序(*.for)文件中如何输出调试信息:WRITE(6,*)'COORDS(1)',COORDS(1),在*.dat文件中可看到输出,如果希望WRITE输出到msg文件中,则写为WRITE(7,*)'COORDS...;
4 用户子程序DLOAD中COORDS数组的含义:COORDS(1)也是一个数组,存贮单元集合中所有单元积分点的X坐标,COORDS(2)存贮Y坐标,相应INP文件中的写法为:
*DLOAD
PY,PYNU
其中PY为单元集合名称,定义方法为:
*Elset, elset=BEAM, generate
1, 5, 1
...
*ELSET,ELSET=PY
BEAM
5 DLOAD中F的定义方法:
F只有定义在单元积分点上才有效,例如:
F=1.0*COORDS (1)
附一个简单实例:
beam.inp文件:
*Heading
** Job name: Job-1 Model name: beam
*Preprint, echo=NO, model=NO, history=NO, contact=NO
**
** PARTS
**
*Part, name=PART-1
*End Part
**
** 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), (Beam Orientation:BEAM)
** Section: Section-1-BEAM Profile: Profile-1
*Beam Section, elset=BEAM, material=STEEL, temperature=GRADIENTS, section=RECT
0.2, 5.
0.,0.,-1.
*End Instance
*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,
*End Assembly
**
** MATERIALS
**
*Material, name=STEEL
*Elastic
210000., 0.3
*ELSET,ELSET=PY
BEAM
**
** BOUNDARY CONDITIONS
**
** Name: Disp-BC-1 Type: Symmetry/Antisymmetry/Encastre
*Boundary
_M4, ENCASTRE
** ----------------------------------------------------------------
**
** STEP: Step-1
**
*Step, name=Step-1
*Static
**
** LOADS
**
** Name: CFORCE-1 Type: Concentrated force
*DLOAD
PY,PYNU
**
** OUTPUT REQUESTS
**
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
**
** FIELD OUTPUT: F-Output-2
**
*Output, field
*Element Output
SF,
**
** HISTORY OUTPUT: H-Output-1
**
*Output, history
*Node Output, nset=ENDS
CF1, CF2, CF3, CM1, CM2, CM3, RF1, RF2
RF3, RM1, RM2, RM3, U1, U2, U3, UR1
UR2, UR3
*El Print, freq=999999
*Node Print, freq=999999
*End Step
bbb.for文件
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
1 JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2), COORDS (3)
CHARACTER*80 SNAME
WRITE(6,*)'COORDS(3)',COORDS(3)
F=1.0*COORDS (1)
RETURN
END
运行方法:
在Abaqus Command提示符后输入:
abaqus job=beam user=bbb interactive
阅读(199)
分享(0)
评论(2)
分类:CAE
发表于16:40
正在加载评论...
[2007/10/22] 推荐一本有限元方面的好书
[展开]
阅读(85)
分享(0)
评论(0)
分类:CAE
发表于14:33
正在加载评论...
上页
14/16
下页
[2007/10/16] Abaqus/cae生成inp文件的结构
[折叠]
*Part, name=Part1
*Node
*Element
*Nset
*Elset
*Solid Section(定义截面属性)
*End Part
(重复以上*Part节,定义下一个Part)
*Assembly name=Assm1
*Instance, name=A
(Assembly中的各个Instance在此定义)
*Nset, nset=Set1
*Elset, elset=Set1
(重复这2行,定义下一个Set,似乎只用Nset就可以定义)
*Elset, elset=_Surf-1_S1
1, 100, 1 (数据行,定义这个Elset)
*Surface, type=E
展开阅读全文