首页/文章/ 详情

Abaqus Python 脚本技巧:如何索引单元面上的节点序列

2月前浏览2460


问题描述

想要索引Abaqus模型中定义的surface每个单元面上的节点序列,按照内部定义的单元面局部节点序列排列。

为什么会产生上面的问题呢?

本期就借助Python对Abaqus的cae模型进行节点索引,导出surface对应的单元内部节点序列。

概念解释

首先给大家介绍一下什么是单元面内部节点序列?

在Abaqus中,单元的面节点序列与单元的几何类型密切相关。对于三维单元,Abaqus使用特定的节点排序规则来定义单元的表面(face)及其对应的节点编号。这些节点序列通常用于施加边界条件或载荷,例如表面压强。

具体的排列方式可在手册[1]中查找:

数值实现

现在尝试使用 Python 读取模型 surface 的节点,并按照 Abaqus 内部定义的 surface 局部节点顺序排列。

当前模型名字为'Model-1',实例Instance 名字为'Part-1-1',定义模型上表面 surface 名字为'Surf-1',编写脚本如下:

#!/user/bin/python
# -*- coding:UTF-8 -*-
from abaqus import *
from abaqusConstants import *

# 获取当前模型中的实例
inst = mdb.models['Model-1'].rootAssembly.instances['Part-1-1']

# 获取表面(Surface)对象
surf = inst.surfaces['Surf-1']

# 获取表面上所有元素
elements = surf.elements

# 获取表面上所有节点,并按顺序存储
node_labels = []
surf_node_labels = [node.label for node in surf.nodes]

for elem in elements:
    for face in elem.getElemFaces():
        face_node_labels = [node.label for node in face.getNodes()]
        # 检查当前面的所有节点是否在表面节点集 合中
        if all(label in surf_node_labels for label in face_node_labels):
            # 添加新节点标签到列表中,并确保不重复
            for label in face_node_labels:
                if label not in node_labels:
                    node_labels.append(label)
            print("Element {} face nodes: {}".format(elem.label, face_node_labels))

最终得到结果:

Element 1 face nodes: [1, 4, 13, 10, 35, 39, 28, 37]
Element 3 face nodes: [4, 7, 16, 13, 53, 55, 48, 39]
Element 5 face nodes: [10, 13, 22, 19, 28, 68, 61, 66]
Element 7 face nodes: [13, 16, 25, 22, 48, 78, 74, 68]

上面脚本在索引 surface 的节点时用到了 getElemFaces 方法,目的是想得到每个单元面上 surface 对应的节点,方便后续在程序中对单元进行循环遍历。

如果想直接获取 surface 上的所有节点,可直接使用 mdb.models[name].parts[name].surfaces[name].nodes 方法。Abaqus手册[2]中对于 getElemFaces 方法的定义:

 

This method returns a tuple of element face objects that share the node.
Arguments:None.
Return value:A tuple of MeshFace objects.

以上就是获取surface单元面上节点序列的方法,之后的操作就是将之代入到节点等效函数中,进行施加表面压强,将在下一期推文中分享,感谢您的阅读。

参考资料
[1]

Abaqus手册: Abaqus-Analysis-User's-Guide-Part6:Elements

[2]

Abaqus手册: SCRIPTING-REFERENCE-GUIDE


觉得本篇推文对你有帮助的话,可以动动的小手一键三连(点赞➕在看➕分享)哦~



来源:易木木响叮当
AbaquspythonUM理论
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-10
最近编辑:2月前
易木木响叮当
硕士 有限元爱好者
获赞 219粉丝 258文章 349课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈