【问题标题】:Generating a orphan mesh from scratch in abaqus with python使用 python 在 abaqus 中从头开始生成孤立网格
【发布时间】:2019-01-09 22:55:30
【问题描述】:

我正在尝试在 Abaqus 6.13 中使用 python 生成孤立网格。意思是我想指定每个节点的坐标位置,然后另一个函数使用之前创建的节点创建元素。

我已经创建了一个节点和元素列表,但是我不知道应该使用什么方法将它们添加到 abaqus 中。

这会创建节点

p = mdb.models[nameModel].parts[namePart]
for z in range (0, z_max+1):
    for y in range (0, y_max+1):
        for x in range (0, x_max+1):
            listNode.append(p.Node(coordinates=(x*x_div, y*y_div, z*z_div)))

这会创建元素

p = mdb.models[nameModel].parts[namePart]
    #p.setElementType(ElemType(elemCode=C3D8R,elemLibrary=STANDARD))
    for z in range (0, z_max):
        for y in range (0, y_max):
            for x in range (0, x_max):
                listNodeNum=[]
                listNodeObj=[]
                listNodeNum.append(x+y*(x_max+1)+z*(x_max+1)*(y_max+1))
                listNodeNum.append(x+y*(x_max+1)+z*(x_max+1)*(y_max+1)+1)
                listNodeNum.append(x+(y+1)*(x_max+1)+z*(x_max+1)*(y_max+1)+1)
                listNodeNum.append(x+(y+1)*(x_max+1)+z*(x_max+1)*(y_max+1))
                listNodeNum.append(x+y*(x_max+1)+(z+1)*(x_max+1)*(y_max+1))
                listNodeNum.append(x+y*(x_max+1)+(z+1)*(x_max+1)*(y_max+1)+1)
                listNodeNum.append(x+(y+1)*(x_max+1)+(z+1)*(x_max+1)*(y_max+1)+1)
                listNodeNum.append(x+(y+1)*(x_max+1)+(z+1)*(x_max+1)*(y_max+1))
                for num in listNodeNum:
                    listNodeObj.append(listNode[num])
                listElem.append(p.Element(nodes=listNodeObj,elemShape=HEX8))
    return listElem

没有错误,列表长度是正确的,但我只是看不到 abaqus 中发生的任何事情。

有什么想法吗?我可能错过了一些真正简单的东西。

谢谢,蒂姆

-----编辑-----

之前的问题通过使用 PartFromMesh 创建一个新部件来解决。

现在的问题是,当我尝试进入加载模块时,网格又消失了。当我尝试单击加载时,错误消息重新出现“装配不包含任何零件实例...,必须实例化零件...”

想法?

【问题讨论】:

  • 我手头没有 Abaqus 可以检查,但是您是否保存模型并重新打开它以检查更改?有时通过脚本进行的更改在同一会话中不可见。
  • 不...但我必须使用 PartFromMesh 并创建一个新零件。真的不确定正确的程序是什么。另外,现在如果我想应用载荷和边界条件,零件又会消失。
  • 创建零件后,您应该使用rootAssembly.Instance创建该零件的新实例(有关该命令的详细信息,请查看 Abaqus 脚本参考)。载荷应用于区域(集合或曲面),而不是零件,因此您也需要解决这个问题。最后,您可能还需要一些部分来定义材料属性。也许最好将您的问题分成几个问题,每个问题处理问题的一部分。
  • 嘿,谢谢。帮助很大。现在一切正常。我需要了解 abaqus 中的工作流程。下次会分解问题。

标签: python abaqus


【解决方案1】:

孤立网格设施有一个非常具体的用途。
如果您只想像在 CAE 中那样创建网格,Python 命令是 .generateMesh():

mdb.models['YourModel'].parts['PartToBeMeshed'].generateMesh()

如果您确实想要生成和使用孤立网格:设置每个节点的位置,导入某些部分...

答案已在cmets中给出:

  1. 从您使用 .PartFromMesh() 命令创建的网格创建一个零件。如果您需要继承集合/表面/属性,它将新零件(字符串)的名称作为必需参数和 copySets:

    mdb.models['YourModel'].parts['PartToBeCopied'].PartFromMesh(name='NewPartName', copySets=True)  
    
  2. 您刚刚创建了一个仅包含 1 个特征和一个网格的新零件。您现在需要使用以下命令在程序集中实例化它:

    mdb.models['YourModel'].rootAssembly.Instance(name='YourInstanceName', part=mdb.models['YourModel'].parts['NewPartName'], dependent=True)
    

    Dependent 必须设置为 True,因为您希望在零件级别定义网格。

零件模块用于处理几何图形。装配模块可帮助您创建一个或多个相互交互的零件的装配。为了定义负载,需要一个包含至少一个零件、一组顶点/边/曲面/和/或/单元格的组件,负载将应用到其中,以及将施加负载的步骤。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多