提取Abaqus中已知节点坐标的二次开发方法

问题描述

我有很多计算结果的ODB文件,需要把模型四周所有节点的RVF值求和。如果每个ODB文件都自己手动选择很费时费力,非常的朴实无华且枯燥。我想做的就是通过编写python程序进行后处理。


解决思路

大体思路参考Python脚本提取Abaqus ODB文件中指定节点数据这篇文章,比这篇文章难的地方在于我仅知道要提取的节点在四个边界上而不知道节点的具体标签(Label)。因此首先需要知道这些标签才能套用那篇文章的方法。于是就有了本篇文章的解决思路,如下:

       第一步,提取这个部件上所有节点的坐标信息及标签;

       第二步,遍历各节点的坐标信息,判断该节点是否位于边界上,将位于边界上的节点的标签单独存放到一个数组;

       第三步,创建目标节点的元组集合备用,至此,后续大体参考上篇文章;

       第四步,提取该部件的RVF场;

       第五步,使用getSubset函数提取目标节点的RVF值;

       第六步,对值求和并输出结果。

编程所需技能

python 基本操作;numpy数组操作;

程序及注释

下面这段程序主要针对提取一个odb文件,多个odb文件的提取只需要加个循环。

本数值模型概况如下,如果是不同的模型可以修改对应的信息:

模型地址:D:\w6s6.odb

目标节点所在部件:SOIL-1(该名称与Create Display Group中的Part instances对应,如下图所示)

底部边界Y值为0;上部边界Y值为120;左右两侧X值分别为-60,60。

要提取结果的分析步为“Step-1”



#!/user/bin/python
# -* - coding:UTF-8 -*-
# 读取变形前后所有节点坐标,读取变形位移

import numpy as np
from odbAccess import*

odb=openOdb(path=r"D:\w6s6.odb")
assembly=odb.rootAssembly
part=assembly.instances['SOIL-1']
nodes = part.nodes

# 提取该部件所有节点的坐标信息和标签放置在coor_lab二维numpy数组中,每个节点的信息单独放一行,共4列,分别是X值、Y值、Z值、Label
coor_lab = np.empty(shape=[0, 4])
for node in nodes:
	row = list(node.coordinates)
	row.append(node.label)
	coor_lab = np.append(coor_lab, [row], 0)

# 筛选目标节点并提取其Label信息形成元组序列nodes_label,其中Label必须为int数据类型
boundary_nodes = coor_lab[(np.where((coor_lab[:, 1] == 0)|(coor_lab[:, 1] == 120)|(coor_lab[:, 0] == 60)|(coor_lab[:, 0] == -60)))]
nodes_label = tuple(boundary_nodes[:, 3])
nodes_label = tuple(map(int, nodes_label))

# 提取rvf场信息,提取目标节点的RVF值并求和
node_set = my_odb.rootAssembly.instances['SOIL-1'].NodeSetFromNodeLabels(name='set_for_datass',nodeLabels=nodes_label)
step = my_odb.steps['Step-1']
frame = step.frames[-1]
rvf_field = frame.fieldOutputs['RVF']
local_por_values = rvf_field.getSubset(region=node_set).values
sum_rvf = sum([i.data for i in local_por_values])
print(sum_rvf)

结果

程序计算结果与手动计算结果分毫不差,任务圆满完成,完结撒花。


   程序结果
 


   手动操作结果  

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空