是否可以使用用户元素定义网格并使用 Python 在 Abaqus/CAE 中指定其属性,而无需编辑输入文件?



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

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

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/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
**""")

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

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

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

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

最新更新