icem二维非结构网格划分_基于OpenFOAM实现非结构网格粒子模拟(Particle In Cell)-0...

等离子体模拟主要有两种方法,流体模拟和粒子模拟。

等离子体的流体模拟其实和CFD通用的数值方法一样,主要是有限差分方法、有限元方法和有限体积方法。有限元商用软件comsol,有专门的等离子体模块,采用流体模拟,易用性非常不错。开源的低温等离子体流体模拟程序好像非常少,磁约束核聚变领域(即高温等离子体)的流体模拟程序源代码基本都公开,比如SOLPS、BOUT++等。因为磁约束聚变装置,比如托卡马克和仿星器,磁场结构特殊,模拟程序通常采用特殊的与磁场有关的坐标系,因此专业性强,通用性差,基本只流行与聚变领域。

粒子模拟,英文 应该是Particle Simulation,包括PIC、MCC、DSMC等。PIC(Particle In Cell)模拟粒子在电磁场中的运动和电磁场的随时间变化,即带电粒子和电磁场存在相互作用;MCC,蒙特卡洛碰撞,模拟带电粒子之间,以及与中性粒子的碰撞,我觉得库伦碰撞的二体碰撞方法也可以归为MCC;DSMC,直接蒙特卡洛模拟,模拟中性原子分子之间的碰撞,这个貌似通常是一个单独的方向,但是可以和等离子体结合模拟。我接触的粒子模拟程序基本都是均匀的结构化网格,商业粒子程序做的比较好的是VSIM,PEGASUS差一些。VSIM也是均匀网格,采用cut-cell技术模拟不规则边界。我基于法国一个团队开发的Smilei程序(Home - Smilei v4.2 documentation)开发了模拟静电问题的粒子程序,采用类似cut-cell的技术处理不规则边界,求解泊松方程涉及求解线性方程组,我采用SuperLU、PETSc等库。采用均匀网格的好处是,程序简单,计算速度快(粒子位置和网格及场的索引有很好的对应关系),缺点是,处理不规则复杂位形比较吃力。非结构网格的粒子程序较少,Finite Element Particle in Cell (FEM-PIC) 这个网站介绍了有限元法粒子模拟,采用的是有限元的非结构网格。对于静电问题,非结构网格下的泊松方程求解需要采用有限元方法或者有限体积方法。我之前采用comsol和openfoam做过简单尝试,文章后面贴了我当时的总结。

现在我继续尝试基于OpenFOAM开发PIC求解器,用于模拟复杂结构下的等离子体行为,比如朗缪尔探针、三维偏滤器瓦片缝隙问题等。尽量把OpenFOAM的学习心得记录下来。

其实等离子体流体模拟用OpoenFOAM更合适,但我现在工作还没涉及这块,等以后有机会了可以考虑开发等离子体流体求解器。


Particle In Cell方法用comsol和openfoam实现的尝试

Particle In Cell(PIC)方法主要用于边界等离子体的研究,模拟尺度小,但是比流体方法精确。PIC主要分三个部分:粒子推动,电荷分配,电场计算。1维和2维程序相对较多,编写起来也相对容易。3维由于计算量太大,我在托卡马克偏滤器瓦片缝隙模拟和离子推进器引出栅网模拟的相关论文中见过。大部分PIC程序采用有限差分方法,优点是编程简单,计算速度应该较快(没有比较过),由于是自己写程序,对粒子打到边界上的角度和能量分布计算起来比较灵活。缺点是不能很好的模拟复杂形状的区域,只能通过阶梯状网格进行近似。

  对于复杂位型,可能的处理方法有:有限元(comsol)和有限体积法(openfoam)。这两种方法可以划分不规则网格,对复杂形状边界能够较好的处理。粒子推动对于有限差分、有限元和有限体积方法都一样,理论上没有难度,且comsol和openfoam都有相关模块。电场计算,就是求解泊松方程,其实就是稳态的偏微分方程(不随时间变化),comsol和openfoam也都能很好的解决。难点是在电荷分配,即怎样把点电荷(不考虑电子和离子的体积)比较精确的分配到附近的格点上,需要保证电荷守恒。相关论文基本都是有限差分方法,因为这种方法网格多为规则网格,分配电荷简单,可以简单一阶或二阶的精度,通常是将电荷依据面积权重分配到周围的4个格点上。本人对于comsol和openfoam都不是很精通,属于初级了解。但尝试应用comsol和openfoam实现PIC方法。

  comsol是商业软件,具体是怎么求解空间电荷密度的以及精度如何不是太了解。设想是通过带电粒子追踪模块和静电场模块耦合来实现。实现过程中遇到一些问题,现在不确定是自己对这个软件不够了解,还是这个软件自身就不能处理相关问题。初始化粒子的时候,粒子的空间分布不是完全随机,可能是均匀分布,但是子一些有规律的位置上没有粒子,但是还可以接受。粒子初始速度分布的问题就比较大,自带的Maxwellian分布在电子温度20eV,速度空间粒子数填1的时候,所以电子的速度都很小(10e-5),且在y方向不同电子速度一样,在x方向随机性太差。速度空间粒子数填大于1的会好一些,但感觉还是问题。自己写的分布x的正负方向不对称。 另一个问题是空间电荷的统计,当选择消失边界的时候,边界处的电荷密度反而会高一些,可能是统计电荷密度的时候把消失的粒子也算上了? 不确定! 这样的电荷密度也导致了电势计算出现问题。由于时间问题,暂时认为此路不通。

  openfoam是开源有限体积软件,感觉这是个好东西,希望大家多多利用,但确实复杂一些。求解器的开发比较难,开发相关的资料比较少(尤其中文的)。google上找到Juris Venčels做的关于磁控溅射模拟的solver:multiRegionPlasma。这个求解器包括磁场,粒子追踪,多区域模拟。他的硕士论文是拉脱维亚语写的。。。 他实现了PIC方法,与自己才c++写的code做过对比,发现貌似动量不守恒。可能是因为粒子分配比较简单。电荷密度是通过将一个单元(比如六面体)内的总的电荷数除以此单元的体积计算得到,因为粒子所在单元信息和单元体积都是有现成的函数,很容易计算。但是这种计算方法精度低,相当于有限差分的NGP电荷分配方法,属于0阶精度,误差较大。这个求解器是根据DSMC求解器修改而来。

  以后学习和研究:用到PIC方法的尽量自己写程序,掌握comsol的等离子体模块和PDE模块,闲暇时间研究openfoam。comsol毕竟是商业软件,前处理后处理等做的相当完善,在工程工业方面应该能够做很多事情。而openfoam比较复杂,需要长期学习,毕竟可以修改底层代码,在以后的研究可能会将相关工作提高一个层次。openfoam通过修改电荷分配部分,可能会实现PIC方法,尤其在复杂位型,三维模拟方面很有潜力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值