ABAQUS应用06——计算模态以后提取位移数据计算归一化振型

16 篇文章 3 订阅
6 篇文章 0 订阅

0、 背景描述

ABAQUS计算塔架频率,但是对于涡激振动的计算,不仅仅需要频率,还需要振型。因此,需要把ABAQUS中的结果提取出来,整理出振型数据。

1、ABAQUS的后处理

因为对ABAQUS中ODB不太熟悉,我需要先做一个测试。把每一个塔筒节中的位移全部取出来,然后逐个求取平均值,再以平均值作为塔筒节段的位移代表值。
下面是从ODB中提取每个part的位移数据的Python代码:

odb = session.openOdb('job-freq-solve.odb')
fop = odb.steps['Solve_freq_with_prestress'].frames[2].fieldOutputs
assembly=odb.rootAssembly
for part_name in assembly.instances.keys()[1:]: # 先遍历获取装配体中所有part的名称
    disp = list()
    region_name = assembly.instances[part_name]
    for value in fop["U"].getSubset(region=region_name).values:    # 按照名称获取每个part,并逐个获取其节点
        disp.append(value.data)       # 保存节点坐标
    np.savetxt(part_name+"-disp_data.txt", disp)

对于上面的结果,有一点值得注意的是:ABAQUS中FieldOutput object存在多个getSubset()方法版本,这个方法有多种用法,比较常用的有:

为region参数传人OdbSet对象;为region参数传人OdbMeshNode对象或者OdbMeshElement 对象;为region参数传人OdbInstance对象;为Elementype参数传入字符串对象;为location 参数传人FieldLocation 对象

2、数据处理

将得到的数据分别放入excel中进行处理(手动处理有点繁琐,但是因为要验证方法的有效性,麻烦就麻烦点,反正也就做这一次)。
下图中,从左往右第一列是上面从ODB中提取的每个part的所有节点位移的平均值(已经做归一化处理),第二列是根据EuroCode1991-1-1-4附录F的公式得到的归一化振型,第三列是高度。
在这里插入图片描述
将上图中的数据绘制成图象,如下图所示。可以发现,对于一阶频率而言,采用part位移平均值作为振型数据的计算基础是合理的。所以这个思路是可以搞定更高阶数据的。
在这里插入图片描述

3、反思

俗话说得好,纸上得来终觉浅,绝知此事要躬行!以前也知道一阶振型关于高度是二次函数,但是对于一阶振型,示意图都是下面这样子的:
在这里插入图片描述
今天看到位移数据的时候才发现,其实振型并不想之前想的那样,外形差的还是有点多。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

George1415926

看着有用,请作者喝杯咖啡啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值