2个版本

0.1.1 2020年11月25日
0.1.0 2020年11月24日

#1241 in 数学

自定义许可

365KB
5.5K SLoC

C++ 5K SLoC // 0.3% comments Rust 460 SLoC // 0.1% comments Perl 205 SLoC // 0.2% comments

Voro++,一个基于3D单元的Voronoi库 (http://math.lbl.gov/voro++/) 由Chris H. Rycroft(加州大学伯克利分校 / 伯克利劳伦斯国家实验室)编写

Voro++是一个执行Voronoi剖分的三维计算软件库。Voro++库的一个特点是它执行基于单元的计算,对每个粒子单独计算Voronoi单元,而不是像全局顶点和边网络那样计算Voronoi剖分。它特别适用于依赖于单元统计的应用,其中Voronoi单元的特性(例如,体积、质心、面数)可以用来分析粒子系统

Voro++由几个C++类组成,可以作为静态库构建和链接。还提供了一个命令行工具,可以分析粒子配置的文本文件并使用代码的大多数功能。提供了大量示例来演示库的功能,所有这些都在库网站上进行了详细讨论。

编译 - Linux / Mac OS / Windows with Cygwin

代码是用ANSI C++编写的,可以在许多系统架构上编译。该包包含C++源代码、示例文件、杂项工具和文档。在Linux、Mac OS和Windows(使用Cygwin)上,可以使用GNU Make进行编译和安装。

开始之前,用户应查看顶级目录中的"config.mk"文件,以确保编译和安装设置适用于其系统。输入"make"将编译静态库、命令行工具和示例。命令行工具和库将出现在"src"目录中。

编译成功后,可以通过输入"sudo make install"安装库、命令行工具和文档。默认情况下,程序文件安装到/usr/local,可能需要修改环境变量才能访问安装的文件

  • 要使用命令行工具,变量PATH应包含/usr/local/bin。
  • 要访问Voro++手册页,变量MANPATH应包含/usr/local/man。
  • 要访问Voro++头文件,代码编译应包括标志'-I/usr/local/include/voro++'。
  • 要链接到静态库,代码编译应包括标志'-L/usr/local/lib'来告诉链接器查找位置,然后是'-lvoro++'来链接到库。

图书馆网站包含设置环境变量的额外说明,并在互联网上有许多相关指南。

代码可以通过“sudo make uninstall”来卸载。一旦编译完成,也可以不安装直接调用文件来使用库和命令行工具。在用户没有root权限安装到/usr/local的系统上,可以通过将PREFIX设置为$(HOME)修改“config.mk”文件,将安装到用户的主目录。Voro++支持通过使用“make -j”命令进行并行编译,其中n是线程数。

编译 - 无Cygwin的Windows

在没有终端环境如Cygwin的Windows机器上,可以在许多标准的C++开发环境中导入和编译库。用户报告说,使用Microsoft Visual C++ Express和Code::Blocks成功构建了库。

相关程序

编译和运行代码不需要外部依赖,但有一些程序可能对分析输出很有用。

  • 免费绘图程序Gnuplot(可在www.gnuplot.info获取)可用于快速进行2D和3D可视化程序输出。

  • 免费光迹追踪器POV-Ray(可在www.povray.org获取)可用于高质量渲染程序输出。

  • 参考手册是通过使用Doxygen(可在www.doxygen.org获取)从源代码中的注释生成的。只有在库文件正在开发并且需要重新生成参考手册时才需要此软件包。当前代码的完整参考手册可在网上http://math.lbl.gov/voro++/doc/refman/找到。

内容

examples - 使用库的许多文档示例 html - 基于HTML的参考手册(由Doxygen生成) man - 包含与程序一起安装的man页面 scripts - 不同的辅助脚本 src - 源代码文件

用法

Voro++是通过劳伦斯伯克利国家实验室发布为免费软件的,下面提供了详细的版权声明,完整的许可证条款可以在LICENSE文件中找到。

我对软件的用户非常感兴趣,所以如果您觉得这个软件有用,请通过[email protected]给我发电子邮件。另外,如果您计划发表一篇使用此软件的学术论文,请考虑引用以下出版物之一

  • Chris H. Rycroft, "Voro++:C++中的三维Voronoi单元库",Chaos 19,041111(2009)。

  • Chris H. Rycroft,Gary S. Grest,James W. Landry和Martin Z. Bazant,"核反应堆砾石床颗粒流的分析",Phys. Rev. E 74,021306(2006)。

  • Chris H. Rycroft,"颗粒流的多尺度建模",2007年9月提交给麻省理工学院的博士论文。(http://math.berkeley.edu/~chr/publish/phd.html

第一篇参考文献包含了一个关于库的一页概述。第二篇参考文献包含了一些使用此代码的早期版本制作的一些初始图像,以追踪大颗粒模拟中填充分数的小变化。第三篇参考文献讨论了三维Voronoi单元的使用,并描述了早期版本代码中使用的算法。自上述参考文献发表以来,Voro++中的算法已经得到了显著改进,预计在2012年将发表一篇专门关于当前代码架构的论文。

版权声明

Voro++版权所有(c)2008,加州大学董事局,通过劳伦斯伯克利国家实验室(前提是收到美国能源部所需的任何批准)。保留所有权利。

如果您对使用或分发此软件的权利有任何疑问,请联系伯克利实验室的技术转移部门,邮箱地址为:[email protected]

注意。本软件部分由美国能源部资助开发。因此,美国政府及其代表已获得对该软件的已付费、非独占、不可撤销、全球范围内的许可,以复制、制作衍生作品、公开表演和展示。自获得美国能源部授予的版权主张许可之日起五(5)年后,以及任何随后的五年(5)年续期,美国政府及其代表获得对该软件的已付费、非独占、不可撤销、全球范围内的许可,以复制、制作衍生作品、向公众分发副本、公开表演和展示,以及允许他人这么做。

致谢

本工作得到美国能源部科学办公室计算与技术研究办公室主任的支持,合同号为DE-AC02-05CH11231。

依赖关系

~0.9–2MB
~38K SLoC