我不确定这是否可行,但我想使用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 PROPERTY)。我想知道是否有办法通过Python脚本界面实现这一点,而无需以某种方式编辑输入文件 - 即在Abaqus / CAE模型数据库中。另外,我已经为实际的用户元素定义和行为编写了子程序,这不是我要问的。
答案 0 :(得分:4)
其他评论正确指出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
**""")
答案 1 :(得分:1)
让我们从头开始回答: 网格和元素是ABAQUS和一般有限元建模中的两个独立概念。网格是域的几何离散化为更小的片段。元素是插值空间问题的主要变量。
是的,您可以拥有一个网格,然后只要您定义的元素与网格兼容,就可以为它定义任何您喜欢的元素。 例如,如果您已将您的域离散为具有8个节点(HEX8)的六面体,则您只能使用兼容元素进行C3D8R,C3D8H,C3D8等离散化....
但是有一个小问题,ABAQUS / CAE是ABAQUS的图形用户界面,可以用Python控制,不提供UEL(用户元素)作为元素选择对话框中的选项。
如果您熟悉Python和ABAQUS / Standard,则此限制不是问题。您可以选择任何兼容的元素,然后更改输入卡片组,这是您的.inp文件,将由ABAQUS / Standard读取。你可以通过Python提供的许多字符串操作工具来完成它。您只需将输入卡中的元素定义从您选择的元素定义更改为您自己定义的UEL。