在 Abaqus 中实现 Z^2 误差估计器以进行自适应网格细化

计算科学 有限元 误差估计 自适应网格细化
2021-12-25 11:09:34

目前,我正在使用 python 脚本为我的模拟 (Abaqus 6.14-1) 重新划分网格。模拟处理布氏压痕测试,并且我使用 Gmsh 4.5.2 作为重新划分网格的软件(尽管最新的可能也可以正常工作)。

主脚本由

main.py:
createIndentationTest.py
runJob.py                    #(only one small step)
odbExport.py
writeGeo.py                  #(.geo files are Gmsh readable geometry files)
remeshGeo.py                 #(here occurs the change from quadrangular elements to triangular ones)
importInAbaqus.py
runJob.py                    #(only one small step)
while totalTime-stepTime>0:
    odbExport.py
    writeGeo.py
    remeshGeo.py
    importInAbaqus.py
    runJob.py                #(only one small step)
    totalTime-=stepTime

例如,我的上一个例程创建了 6 个单独的作业,在每一步之后,网格都被导出到 Gmsh,重新划分网格并重新导入 Abaqus 以继续模拟。第一项工作从四边形元素(元素大小为 0.25)开始一步。然后剩下的 5 个作业使用带有自定义密度函数的三角形元素,如下图所示(在重新划分网格的过程中从四边形元素切换到三角形元素的原因是我在 Gmsh 中使用起来更容易) .

图1

现在,我的论文的一部分是确定整个模拟和重新划分网格过程中的错误,我被赋予了使用Z2误差估计器。与我的参考模拟相比,我从开始到结束使用单元大小为 0.5 的四边形单元运行整个模拟,我可以看到在分析应力时存在轻微差异,如图 2 所示。

图 2

目前,我假设左侧的结果更准确,因此我可以假设我在实施重新网格划分的右侧的模拟结果中存在错误(或偏差)。在过去的两周里,我研究了一些关于Z2错误估计器,但我看不到如何在我的脚本中实现它。因此,我想问一下,是否有人知道我如何在我的 python 代码中应用错误估计器。

我知道我必须从 COORD 导出一些数据fieldOutput并使用这些数据来求解这个方程

F(a_)=i=0n(σh(xi,yi)σp(xi,yi))2=i=0n(σh(xi,yi)P_(xi,yi)a_)2

在哪里a_是一组未知数,σh是近似解σ,P_是一组适当的多项式项和σp=P_a_.

我的另一个问题源于我在模拟过程中更改了元素类型。为了估计误差,Z2方法使用所谓的超收敛点。但是我不知道在使用这些时是否会出现问题,因为我在整个模拟过程中更改了一次元素类型。

我希望,有人可以帮助我解决这个问题。

0个回答
没有发现任何回复~