网格优化/平滑
optimesh的Python项目详细描述
三角形网格优化。
多个网格平滑/优化方法,一个简单的界面。optimesh
- 很快,
- 保留子画面,
- 仅适用于三角形网格(目前;upvotethis issue如果您对 四面体网格平滑),和
- 支持meshio可以使用的所有网格格式 把手。
使用安装
pip3 install optimesh --user
示例调用:
optimesh in.e out.vtk
输出:
左边的图表显示了角度的分布(网格线在 最佳60度)。右边的图显示了单纯形的分布 质量,其中质量是外圆和内圆半径之比的两倍。
所有命令行选项都记录在
optimesh -h
下面的例子展示了不同的算法,都是从同一个开始的 上面随机生成的磁盘网格。细胞的颜色表示质量;深绿色表示 坏,黄色是好的。
cvt(质心涡切变)
uniform-density relaxed Lloyd's algorithm (^{ | uniform-density quasi-Newton iteration (block-diagonal Hessian, ^{ | uniform-density quasi-Newton iteration (default method, full Hessian, ^{ |
形心voronoi镶嵌平滑(Du et al.)是一种 最古老和最可靠的方法。optimesh提供经典的lloyd平滑 以及产生更好网格的几个变体。
cpt(质心斑块镶嵌)
density-preserving linear solve (Laplacian smoothing, ^{ | uniform-density fixed-point iteration (^{ | uniform-density quasi-Newton (^{ |
由Chen and Holst提出的一种模拟cvt的平滑方法 但更容易实现。密度保持变量导致完全相同 方程组为拉普拉斯平滑,因此cpt平滑可以看作是 一般化。
均匀密度变量被经典地实现为一个不动点迭代和 作为一种拟牛顿法。后者通常收敛得更快。
odt(最佳delaunay镶嵌)
density-preserving fixed-point iteration (^{ | uniform-density fixed-point iteration (^{ | uniform-density BFGS (^{ |
最优delaunay三角剖分(odt)由Chen and Holst提出。通常优于CPT,但也更昂贵 计算。
一次经典实现为不动点迭代,一次非线性实现 优化方法。后者通常会带来更好的结果。
哪种方法最好?
从实际实验来看,cvt的平滑变量,如
optimesh in.vtk out.vtk -m cvt-uniform-qnf
结果非常令人满意。(这也是默认方法,因此不需要 显式指定。)下面是应用于 上面看到的随机圆网格:
(网格质量是内圆与圆周半径之比的两倍,最大值)。 是1。)
从python访问
所有optimesh函数也可以直接从python访问,例如:
importoptimeshX,cells=optimesh.odt.fixed_point_uniform(X,cells,1.0e-2,100,verbosity=False)
安装
optimesh是available from the Python Package Index,所以只要做
pip3 install --upgrade --user optimesh
安装或升级。
相关出版物
测试
要运行optimesh单元测试,请签出此存储库并键入
pytest
许可证
optimesh发布在MIT license下。