PIC方法在等离子体模拟领域是比较常用的方法,属于动理学方法,主要用于低碰撞等离子体模拟。现存绝大部分PIC程序都是均匀网格,场求解采用有限差分方法。有限差分方法很难处理不规则边界。目前来看,为了模拟不规则边界,主要有两种路线:1. 均匀结构网格+Cut-Cell;2. 非结构网格(三角网格,多边形网格等)。两种路线各有优缺点。
均匀结构网格+Cut-Cell:
优点:
1. 大部分模拟区域为均匀网格,粒子推动、插值、投影简单,获取粒子所在网格的效率高。
2. 并行的实现相对简单。
3. 粒子和场的数据结构简单。
4. 实现高精度较容易。
5. 由于每个网格内的粒子连续存储,即小颗粒连续存储,应该更适合GPU并行。
缺点:
1. 网格生成软件要从头写,三维复杂位形情况难度可能非常大。
2. 网格系统较复杂,需要两套网格:整个区域均匀网格、不规则边界区域多边形网格。
3. 通用性差,网格或者数据很难与其他软件直接导入导出。
总结一下,均匀结构网格+Cut-Cell的有点主要有:程序编写相对简单,大部分情况计算速度快。缺点有:网格生成难,且较复杂(不是网格本身复杂,是表述网格的数据结构复杂),通用性差。
非结构网格,主要是采用有限元方法(FEM)或者有限体积方法(FVM)求解场。它的优缺点基本和上面介绍的反过来。有大量的现成软件用于生成网格,通用性好,但计算效率差。
有两个问题还需要以后详细研究对比:计算效率问题。假如模拟区域矩形,第一种方法的计算速度无疑会比第二种快。但是对于非常不规则的模拟区域,第一方法并行效率应该会下降很多,因为每个cpu核心负责计算的网格数相差较大,而第二种方法却能保证每个cpu核心计算网格数基本相等,且存在开源的网格划分软件metis。在这种情况下,第二种方法的计算速度会不会快于第一种方法,还需要进一步研究。
碰撞问题。库伦碰撞、电离碰撞、激发碰撞等过程通常采用蒙特卡洛方法处理,且一个网格内的粒子只与这个网格内的粒子碰撞,不与其他网格碰撞。不同形状的网格,对碰撞模拟的准确性影响如何,也是需要讨论的。另一种思路是,采用两套网格,粒子运动、插值、投影一套,碰撞另一套,但这又使程序更复杂。。。
没有完美。
目前我个人更倾向于第二种方法,对计算资源的提升盲目乐观。。。