是否可以在不编辑输入文件的情况下使用用户元素定义网格并使用 Abaqus/CAE 中的 Python 指定其属性?

Is it possible to define a mesh with User-Elements and specify their properties with Python in Abaqus/CAE without editing the input file?

我不确定这是否可行,但我想使用 Python 脚本界面在 Abaqus/CAE 中创建一个包含用户定义元素的网格。这将至少包括 CAE 方面的两部分:定义节点和连接性,以及定义 material 属性。

因此,例如,我熟悉使用标准元素以几种不同的方式创建零件和网格。一个相当可读的版本可能是这样的:

m = mdb.models[modelName]
newPart = m.Part(name='NewPart', dimensionality=THREE_D, type=DEFORMABLE_BODY)

for elemLabel,elemNodes in myElementDictionary.items():
    nodeObjectTuple = tuple(newPart.nodes.sequenceFromLabels(elemNodes))
    newPart.Element(nodes=nodeObjectTuple, elemShape=HEX8, label=elemLabel)

这是否适用于用户定义的元素,前提是它们与元素形状(例如 HEX8)相匹配?如果是这样,如何定义用户元素属性?我在文档中没有看到相关命令。

编辑: 通常,用户元素属性是通过输入文件指定的(例如*USER ELEMENT 和*UEL 属性)。我想知道是否有一种方法可以通过 Python 脚本界面实现这一点,而无需以某种方式编辑输入文件——即在 Abaqus/CAE 模型数据库中。另外,我已经为实际的用户元素定义和行为编写了子程序,这不是我要问的。

我们从头开始回答: 一般而言,网格和单元在 ABAQUS 和有限元建模中是两个独立的概念。网格是将域几何离散化为更小的部分。元素是插值space 问题的主要变量。

是的,您可以拥有一个网格,然后在您定义的元素与网格兼容后立即为其定义您喜欢的任何元素。 例如,如果您将域离散化为具有 8 个节点 (HEX8) 的六面体,则您只能使用兼容的元素进行离散化,即 C3D8R、C3D8H、C3D8,....

虽然有一个小问题,ABAQUS/CAE,它是 ABAQUS 的图形用户界面,可以用 Python 控制,但不提供 UEL(用户元素)作为选项元素选择对话框。

如果您熟悉 Python 和 ABAQUS/Standard,则此限制不是问题。您可以选择任何兼容的元素,然后更改您的输入面板,这是您的 .inp 文件,将由 ABAQUS/Standard 读取。您可以通过 Python 提供的许多字符串操作工具来完成。您只需要将输入面板中的元素定义从您选择的更改为您自己定义的 UEL。

其他评论正确地指出 Abaqus/CAE 中不存在所请求的功能,并建议生成一个输入文件,然后对其进行编辑以插入必要的定义。

但是,我发现可以在写入输入文件之前使用 Abaqus/CAE 中的 Python 接口插入一个 KeywordBlock 对象。指定用户元素的示例:

mdb.models['Model-1'].keywordBlock.replace(0, """
** 
** PARTS
*user element, type=u1113, nodes=6, coordinates=2, properties=8, i properties=3, 
 variables=6
 1,2
*element, type=u1113, elset=myUser, input=1113.dat
*uel property, elset=myUser
 1.0e6, 1.0e6, 0.25, 0.25, 0., 0., 650., 0.001,
 1, 1, 0
** ASSEMBLY
**""")