一个通用的光滑粒子流体动力学框架
项目描述
PySPH:一个基于Python的SPH框架
PySPH是一个开源的Smoothed Particle Hydrodynamics (SPH) 模拟框架。它使用Python编写,性能关键部分使用Cython和PyOpenCL实现。
PySPH允许用户使用纯Python编写高级代码。此Python代码自动转换为高性能的Cython或OpenCL,然后进行编译和执行。PySPH还可以配置为与OpenMP、OpenCL和MPI无缝协作。
PySPH的最新文档可在pysph.readthedocs.org找到。
这里有一些使用PySPH解决的示例问题的视频。
特性
SPH公式
PySPH附带各种标准SPH公式和基本示例。一些可用的公式包括
弱可压缩SPH (WCSPH),用于自由表面流动(Gesteira等,2010,《水力学研究杂志》,第48卷,第6-27页)
传输速度公式,用于不可压缩流体(Adami等,2013,《JCP》,第241卷,第292-307页)
SPH用于弹性动力学(Gray等,2001,《CMAME》,第190卷,第6641-6662页)
可压缩SPH(Puri等,2014,《JCP》,第256卷,第308-333页)
广义传输速度公式 (GTVF)(Zhang等,2017,《JCP》,第337卷,第216-232页)
熵阻尼人工可压缩性 (EDAC)(Ramachandran等,2019,《Computers and Fluids》,第179卷,第579-594页)
delta-SPH(Marrone等,《CMAME》,2011,第200卷,第1526-1542页)
双重时间SPH (DTSPH)(Ramachandran等,arXiv预印本)
不可压缩(ISPH)(Cummins等,《JCP》,1999,第152卷,第584-607页)
简单迭代SPH (SISPH)(Muta等,arXiv预印本)
隐式不可压缩SPH (IISPH)(Ihmsen等,2014,《IEEE Trans. Vis. Comput. Graph.》,第20卷,第426-435页)
Gudnov SPH (GSPH)(Inutsuka等,《JCP》,2002,第179卷,第238-267页)
守恒可重现核SPH (CRKSPH)(Frontiere等,《JCP》,2017,第332卷,第160-209页)
近似Gudnov SPH (AGSPH)(Puri等,《JCP》,2014,第432-458页)
自适应密度核估计 (ADKE)(Sigalotti等,《JCP》,2006,第124-149页)
Akinci(Akinci等,《ACM Trans. Graph.》,2012,第62:1–62:8)
以下论文中的边界条件已实现
广义壁面边界条件(Adami等,《JCP》,2012,第7057–7075页)
不执行类型的出口边界条件(Federico等,《欧洲力学-流体力学杂志》,2012,第35–46页)
出口镜像边界条件(Tafuni等,《CMAME》,2018,第604–624页)
特征线法边界条件(Lastiwaka等,《国际流体数值方法杂志》,2012,第35–46页)
混合边界条件(Negi等,arXiv预印本)
以下论文中提出的校正也是PySPH的一部分
校正SPH(Bonet等,《CMAME》,1999,第97–115页)
hg校正(Hughes等,《水力学研究杂志》,第105–117页)
张力不稳定性校正(Monaghan J. J.,《JCP》,2000,第2990–311页)
粒子平移算法(Xu等,《JCP》,2009,第6703–6725页),(Skillen等,《CMAME》,2013,第163–173页)
表面张力模型实现自以下文献:
Morris表面张力模型(Morris等人,国际数值流体力学杂志,2000年,第333-353页)
Adami表面张力公式(Adami等人,JCP,2010年,第5011-5021页)
安装
有关如何在Linux/OS X和Windows上安装PySPH的最新详细信息,请参阅此处。
如果您想查看一个工作构建/测试脚本,请参阅我们的shippable.yml。对于Windows平台,请参阅appveyor.yml。
运行示例
您可以通过探索一些示例来验证安装。一个运行速度相当快的示例(大约需要20秒)如下:
$ pysph run elliptical_drop
这要求安装Mayavi。保存的输出数据可以通过以下命令查看:
$ pysph view elliptical_drop_output/
一个更有趣的例子是一个二维溃坝示例(总共运行大约30分钟)
$ pysph run dam_break_2d
可以通过以下命令实时查看解决方案(在另一个shell中运行)
$ pysph view
生成的输出也可以查看,并且可以在查看器UI上刷新新生成的输出文件。
溃坝问题的三维版本也可用,可以按以下方式运行
$ pysph run dam_break_3d
这运行了三维溃坝问题,它也是一个SPHERIC基准测试2
PySPH不仅仅是用于波体相互作用的工具:
$ pysph run cavity
这使用Adami等人的传输速度公式运行驱动腔体问题。模拟完成后,输出目录cavity_output还将包含流线和其他后处理结果。例如,流线看起来像以下图像
如果您想使用PySPH进行弹性动力学,可以尝试从pysph.examples.solid_mech包中的一些示例
$ pysph run solid_mech.rings
这运行了两个弹性环碰撞的问题
示例的自动生成代码位于目录~/.pysph/source中。但是请注意,它不是为胆小者准备的。
还有更多示例,可以通过简单地运行来列出
$ pysph run
使用PySPH的研究论文
以下是一些使用PySPH的工作:
自适应SPH方法:https://gitlab.com/pypr/adaptive_sph
自适应SPH方法应用于运动体:https://gitlab.com/pypr/asph_motion
SPH方法的收敛性:https://gitlab.com/pypr/convergence_sph
校正的传输速度公式:https://gitlab.com/pypr/ctvf
双时间SPH方法:https://gitlab.com/pypr/dtsph
熵阻尼人工可压缩性SPH公式:https://gitlab.com/pypr/edac_sph
SPH的通用进出口边界条件:https://gitlab.com/pypr/inlet_outlet
SPH的制造解法:https://gitlab.com/pypr/mms_sph
PySPH提供的绑定支持演示:https://gitlab.com/pypr/pysph_demo
PySPH论文的手稿和代码:https://gitlab.com/pypr/pysph_paper
简单迭代不可压缩SPH方案:https://gitlab.com/pypr/sisph
SPH模拟的几何生成和预处理:https://gitlab.com/pypr/sph_geom
致谢
PySPH 主要由印度理工学院孟买航空航天工程系开发。[点击访问](http://www.aero.iitb.ac.in)。我们对印度理工学院的赞助表示感谢。我们的主要目标是构建一个强大的基于SPH的工具,用于应用和研究。我们希望这可以简化可重复的计算研究。
要查看贡献者名单,请访问GitHub贡献者页面
以下是一些未列出的早期开发者
Pankaj Pandey(应力求解器和改进的负载平衡,2011年)
Chandrashekhar Kaushik(2009年的原始并行和串行实现)
引用PySPH
您可以使用以下文章正式引用PySPH,下述论文的arXiv免费副本可在https://arxiv.org/abs/1909.04504找到:
Prabhu Ramachandran,Aditya Bhosale,Kunal Puri,Pawan Negi,Abhinav Muta,A. Dinesh,Dileep Menon,Rahul Govind,Suraj Sanka,Amal S Sebastian,Ananyo Sen,Rohan Kaushik,Anshuman Kumar,Vikas Kurapati,Mrinalgouda Patil,Deep Tavker,Pankaj Pandey,Chandrashekhar Kaushik,Arkopal Dutt,Arpit Agarwal。“PySPH:基于Python的平滑粒子流体动力学框架”。ACM数学软件交易47,第4期(2021年12月31日):1–38。DOI:https://doi.org/10.1145/3460773。
bibtex条目为:
@article{ramachandran2021a, title = {{{PySPH}}: {{A Python-based Framework}} for {{Smoothed Particle Hydrodynamics}}}, shorttitle = {{{PySPH}}}, author = {Ramachandran, Prabhu and Bhosale, Aditya and Puri, Kunal and Negi, Pawan and Muta, Abhinav and Dinesh, A. and Menon, Dileep and Govind, Rahul and Sanka, Suraj and Sebastian, Amal S. and Sen, Ananyo and Kaushik, Rohan and Kumar, Anshuman and Kurapati, Vikas and Patil, Mrinalgouda and Tavker, Deep and Pandey, Pankaj and Kaushik, Chandrashekhar and Dutt, Arkopal and Agarwal, Arpit}, year = {2021}, month = dec, journal = {ACM Transactions on Mathematical Software}, volume = {47}, number = {4}, pages = {1--38}, issn = {0098-3500, 1557-7295}, doi = {10.1145/3460773}, langid = {english} }
支持
如果您对PySPH有任何问题或遇到任何困难,您可以使用PySPH讨论。
如果您有错误或问题要报告,请查看PySPH问题跟踪器。
您还可以通过以下链接发送电子邮件或发布您的问题:[pysph-users邮件列表](https://groups.google.com/d/forum/pysph-users)