python接入excel_在abaqus中使用python连接excel

局部坐标系建立及局部坐标系下读取坐标

1.局部坐标系建立:

Abaqus中提供了两种方法:1.transform 2.orientation

1.

transform

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.

orientation

定于材料中,参见于帮助

First

line:

1.

X-coordinate of point a.

2.

Y-coordinate of point a.

3.

Z-coordinate of point a.

4.

X-coordinate of point b.

5.

Y-coordinate of point b.

6.

Z-coordinate of point b.

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.

X-coordinate of point c.

8.

Y-coordinate of point c.

9.

Z-coordinate of point c.

blog_70349b3f0101bp3b.html

对直角坐标系可以定义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

MO# u- e. N5 W6

J4 P- o' n首先创建system的collector: system collectors

2 N* S# ^5 \7 k" I#

J& \! R$ b然后Analysis--->System:" _. o,

?& v& S1,选择节点以确定坐标系原点所在的位置,可以选择多个节点(n1,n2,n3,n4......)以同时创建多个相同的坐标系.

$ f: v" u% g2 D3 w3 k8

k2,点orginal,随便选一个节点N1,作为坐标系的原点。$ K: H& y1

x2 a+ w: S3,HM自动跳焦到X-AXIS 按钮。再选择一个节点N2,N1-N2便是新建坐标系的X方向。3 o/ }0 N" e4 k9 a' A" J+

Y. c0 `4,HM自动跳焦到X-Y plane按钮。继续选择一个节点

N3, 则 N1 N2

N3三点确定的平面为XY平面。- S+ @9 ~; Y;

p" M( c5,点击creat。* W5 l1 c: a'

F# T! ~% OHM就会分别在n1,n2,n3,n4......节点上创建若干个坐标系,原点分别为n1,n2,n3,n4......,X方向为N1-N2,Z方向为N1 N2 N3平面(xy平面)的法向,并以右手螺旋法则确定Y轴。

blog_70349b3f0101bp3b.html

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(在安装目录下的Altair\hw7.0\translators中)

3、在控制台下运行hmabaqus *.fil

*res,执行完成后就生成了相应的res文件

上面的操作也可以在hypermesh底下运行,analysis,solver,选取hmabaqus,然后选择file文件填入要输出的文件名即可

4、在hyperview中打开你的模型文件*.inp和结果文件*.res,就可以查看你的结果了

5.通过python后处理来实现变形后节点坐标的读取

from odbAccess import

*

from math import

* (读入数学公式,如sin,cos,asin)

DIR='F:/4102/test/test/'

(定义文件目录)

odb =

openOdb(DIR+'tmp_notransform.odb')

node_inside=odb.rootAssembly.instances['PART-1-1'].nodeSets['LN_PISTON_1_1'] (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):

n=U[i].nodeLabel

x=float(node_original[i].coordinates[0]+U[i].data[0])

(node_original[i].coordinates[0]为原始坐标,U[i].data[0]为x方向变形量)

y=float(node_original[i].coordinates[1]+U[i].data[1])

z=float(node_original[i].coordinates[2]+U[i].data[2])

(下面为进行局部坐标系转化,将x,y,z,转化到局部坐标系,下面的是绕着z轴将xy转30°)

qq=x**2+y**2

r=pow(qq,0.5)

oo=-acos(x/r)-pi/6

x1=r*cos(oo)

y1=r*sin(oo)

line=str(n)+','+str(x1)+','+str(y1)+','+str(z)+'\n'

fp.write(line)

fp.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值