021-39519288qing.xie@weseetech.com
达索系统授权代理商 申请试用

利用Python获取单元各外表面的节点编号

2021/05/27

一、概述

小编在开发一个脚本的过程中遇到了一个问题,假如我在前处理中定义了一个单元集,现在我想知道该单元集中指定单元某一个单元面的节点编号,有什么方法呢?首先,我们想到的是直接在前处理中显示各单元的节点号,然后查看想要知道的单元面的节点编号即可。这种方法可以解决我们所面临的问题,但是当我们查看的单元面有很多时,这显然不是一个好的方法。有没有其他方法呢?

二、ABAQUS中单元上的面编号与节点排序

我们以八节点六面体单元为例,介绍在ABAQUS中,单元的面编号与节点排序。如图1所示:

从图1中我们可以看到,单元的底面的face1,上面是face2,正对着我面是face3,然后逆时针旋转依次是face4、face5、face6。各面的单元编号的顺序与上图指示的各面的法向有关。例如face1,其法向向上,根据右手定则,大拇指向上,四指弯曲,节点排序依次是1、2、3、4。同理,可知其他各面的节点排序。

三、代码实现

根据上述ABAQUS中六面体单元上的面编号和节点排序的定义,我们来定义一个函数elementClass(elementType),它有一个参数elementType,表示当前单元的类型,函数的功能是:如果输入的单元类型是八节点六面体单元,就返回一个八节点六面体单元面编号对应的节点排序列表,具体代码如下所示:

随后我们在定义一个getFaceNodeID(odbName)函数,该函数的功能是返回一个字典,该字典键是odb文件中定义的单元集中单元的编号,值也是一个字典,其键是单元各面的faceID,值是该面对应的节点编号。其中我们要引用elementClass(elementType)函数。具体代码如下所示:

四、运行脚本

在Abaqus cae中,运行脚本,调用FaceNode =getFaceNodeID(odbName)函数,我们输出函数返回的内容,如下所示:

© 2021 - Copyright WESEE - All Rights Reserved Designed by GreatMo 沪ICP备14034845号-1