网格优化/平滑

optimesh的Python项目详细描述


optimesh

三角形网格优化。

CircleCIcodecovCode style: blacksmoothPyPi VersionGitHub starsPyPi downloads

多个网格平滑/优化方法,一个简单的界面。optimesh

  • 很快,
  • 保留子画面,
  • 仅适用于三角形网格(目前;upvotethis issue如果您对 四面体网格平滑),和
  • 支持meshio可以使用的所有网格格式 把手。

使用安装

pip3 install optimesh --user

示例调用:

optimesh in.e out.vtk

输出: terminal-screenshot

左边的图表显示了角度的分布(网格线在 最佳60度)。右边的图显示了单纯形的分布 质量,其中质量是外圆和内圆半径之比的两倍。

所有命令行选项都记录在

optimesh -h

disk-step0

下面的例子展示了不同的算法,都是从同一个开始的 上面随机生成的磁盘网格。细胞的颜色表示质量;深绿色表示 坏,黄色是好的。

cvt(质心涡切变)

cvt-uniform-lloyd2cvt-uniform-qnbcvt-uniform-qnf
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(质心斑块镶嵌)

cpt-cpcpt-uniform-fpcpt-uniform-qn
density-preserving linear solve (Laplacian smoothing, ^{})uniform-density fixed-point iteration (^{})uniform-density quasi-Newton (^{})

Chen and Holst提出的一种模拟cvt的平滑方法 但更容易实现。密度保持变量导致完全相同 方程组为拉普拉斯平滑,因此cpt平滑可以看作是 一般化。

均匀密度变量被经典地实现为一个不动点迭代和 作为一种拟牛顿法。后者通常收敛得更快。

odt(最佳delaunay镶嵌)

odt-dp-fpodt-uniform-fpodt-uniform-bfgs
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下。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过jamod读取控制器的输入状态?   java Back bean方法在使用两个h的单一表单时未调用:selectonemenus和command button   mockitojava中的单元测试Mock继承方法   java在不传递到构造函数的情况下,将一个类的实例使用到另一个类中的最佳方法是什么   java Spring MVC:如何通过API在Dozer的toplevel字段中允许空值?   java hibernate到MSSQL服务器的连接被拒绝:连接   java动态调用现有变量   在java中扩展多个类的泛型   java使用JNA Ptrace获取linux中外部进程的信息?   eclipse获取Java项目中所有构建错误的最快方法是什么?   java将动态数组拆分为多个数组   java安卓:将json保存到sqlite   java获取最近时间Android   java如何为多对多关联编写HQL查询?   java Docker compose for mysql和spring应用程序拒绝访问   java查找数组(如果它是另一个数组的子集)   java如何在另一个具有相同数据类型参数的泛型类(或接口)中使用泛型类(或接口),而无需强制转换   Apache POI java。lang.NoClassDefFoundError:org/apache/commons/compress/utils/InputStreamStatistics   java使用Jackson将JSON反序列化为异构元素列表   使用MapReduce实现java规范化