[转载]局部坐标系建立及局部坐标系下读取坐标
标签:
转载 |
1.局部坐标系建立:
Abaqus中提供了两种方法:1.transform
1.
REQUIRED PARAMETER
NSET
OPTIONAL PARAMETER
TYPE (R (DEFAULT) 直角坐标系)(C 柱坐标系) (S 球坐标系)
First line
1.Clobal X-coordinate of point a specifying transformation.
2.Clobal Y-coordinate of point a specifying transformation.
3.Clobal Z-coordinate of point a specifying transformation.
4.Clobal X-coordinate of point b specifying transformation.
5.Clobal Y-coordinate of point b specifying transformation.
6.Clobal Z-coordinate of point b specifying transformation.
其中a,b的定义是这样的:
对于R
a 是X轴上一点,b是y轴上一点,原点和原先的重合
对于C
a,b定义了Z轴方向。
对于S
a,b定义了Z轴方向。(平行)
说明:
* transform 下面只能有一行六个参数, 分别三个一组,为两个点在原坐标系中的坐标。比如在平面直角坐标系中的变化,第一个点定义新的x轴,第二点定义新的y轴,原点不变
例如:
*Transform, nset=ln_piston_1_1
1.732050807568877/2,0.5,0,-0.5,1.732050807568877/2,0
默认的转换坐标系为直角坐标系
2.
定于材料中,参见于帮助
First line:
1.
2.
3.
4.
5.
6.
The following items, the coordinates of point c (the origin), are optional and relevant only for SYSTEM=RECTANGULAR and SYSTEM=Z RECTANGULAR. The default location of the origin, c, is the global origin.
7.
8.
9.
http://s6/mw690/002CCiy9gy6LjoDVrOB95&690
对直角坐标系可以定义c点,为坐标原点,a为x轴上点,b为xy平面上的点
例如:
*ORIENTATION, NAME=GK1,DEFINITION=COORDINATES
228.907,-815.144,1222.000,389.290,-1277.958,1197.099,469.409,-1231.701,1221.980
*Solid Section, ELSET=SOLID_liner, material=MAT_HT250,ORIENT=GK1
2.hypermesh下创建局部坐标系
以HM
8.0,创建笛卡尔坐标系为例:5
M
首先创建system的collector:
system collectors
然后Analysis--->System:"
_. o, ?& v& S
1,选择节点以确定坐标系原点所在的位置,可以选择多个节点(n1,n2,n3,n4......)以同时创建多个相同的坐标系.
2,
3,HM自动跳焦到X-AXIS
按钮。再选择一个节点N2,N1-N2便是新建坐标系的X方向。
4,HM自动跳焦到X-Y
plane按钮。继续选择一个节点
N3, 则
N1 N2 N3三点确定的平面为XY平面。-
S+ @9 ~; Y; p" M( c
5,点击creat。*
W5 l1 c: a' F# T! ~% O
HM就会分别在n1,n2,n3,n4......节点上创建若干个坐标系,原点分别为n1,n2,n3,n4......,X方向为N1-N2,Z方向为N1
N2 N3平面(xy平面)的法向,并以右手螺旋法则确定Y轴。
http://s8/mw690/002CCiy9gy6LjoIek87d7&690
6, 点击assign,将要进行局部坐标转换的点集选入其中,进行转化
目前的问题:由于各个软件定义局部坐标系的方法不同,通过hypermesh创建的局部坐标系导入abaqus会出现与在hypermesh中建立的局部坐标系不同的结果,所以在采用hypermesh建立的时候,要将建好的局部坐标系在计算前先导入abaqus看看是否正确。
3.
在后处理时建立局部坐标系
如果建模时没用过局部坐标系,可以在后处理时点菜单tools / coordinates system / create, 创建柱坐标系(例如使用默认的名称csys-1). 然后菜单result / options, 点tranformation, 点user-specified, 选中csys-1, 点OK. 窗口左上角显示的变量如果原来是U, U1,现在就变为U,U1(CSYS-1).
如果建模时的边界条件或载荷中用过局部坐标系,可以在后处理时点菜单result / options, 点tranformation, 点nodal.
注意有时局部坐标系上的 histroy output 会不正常,应检查其正确性。
1。在打开ODB文件的时候,前面的read_only前面的勾去掉。
2。create coordinate
system选择一种方法建立局部坐标。
3。coordinate system
manager选择建立的csys-->move to odb
4。重新打开odb,main menu
bar-->result-->options...-->transformation-->user-spcified-->choose
your csys-->apply
4.通过hyperview读取变形后的坐标
1、你在abaqus中计算,将结果文件输出到*.fil.
2、利用hyperworks提供的hmabaqus.exe(在安装目录下的Altairhw7.0translators中)
3、在控制台下运行hmabaqus
*.fil *res,执行完成后就生成了相应的res文件
上面的操作也可以在hypermesh底下运行,analysis,solver,选取hmabaqus,然后选择file文件填入要输出的文件名即可
4、在hyperview中打开你的模型文件*.inp和结果文件*.res,就可以查看你的结果了
5.通过python后处理来实现变形后节点坐标的读取
from odbAccess import *
from math import
*
DIR='F:/4102/test/test/'
odb = openOdb(DIR+'tmp_notransform.odb')
node_inside=odb.rootAssembly.instances['PART-1-1'].nodeSets['LN_PISTON_1_1']
node_original=odb.rootAssembly.instances['PART-1-1'].nodeSets['LN_PISTON_1_1'].nodes
U=odb.steps.values()[-1].frames[-1].fieldOutputs['U'].getSubset(region=node_inside).values
fp =
open(DIR+'coord.inp','w')
k=len(node_original)
for i in range(k):
fp.close()

加载中…