等离子体数值模拟
等离子体的数值模拟方法也有很多种,粒子模拟,有限差分,流体等等,每一种都有它的优缺点,因为近似前提条件不一样,因此适用范围也大不相同。
说起一纬等离子体与电磁场的数值模拟(FDTD),大家可能觉得太简单,而且已经被研究透了,还有讨论的必要么,其实不然.对于初学等离子体与电磁场数值模拟的学者来说,一纬是个很好的工具和过程.我认为它的好处有:
1)一纬的数值模拟能够使你把握做数值模拟大部分的因素.如电磁场递推公式,吸收边界的设置,激励源的加入,连接边界的公式推导等等,这些都能够使你对数值模拟整个程序流程有个完整的把握.
2)一纬的理论公式相对容易推导,因此你的数值模拟的结果,基本上都可以从原始理论公式中得到,因此你可以设置不同的物理模型,让模拟结果与理论结果进行对比,发现哪些是相互验证的,哪些是不同的,是否是计算误差引起等等.
3)调试程序方便,对于一纬模型,要调试程序很容易,N个结点,最多遍历一次,速度很快,可以接受,可以想象对N*N,或者N*N*N的程序,调试非常麻烦.同时一纬对内存要求不高,基本上可以随意设置数组大小,不用担心内存不够,不需要考虑算法太慢,我们只需要观察到自己关心的现象就可以了.相反对三纬模型,设置吸收边界5个节点,外场20节点,进场75个节点,其中包括目标20个节点(默认关心近场数据),这样需要100个节点,每个节点放 Double型(16bit)数据,电场,磁场,电流,等离子体密度,位置等每个有三个方向分量,最基本需要(100*100*100)*16* (5*3)=240M数据,一个波长如果占20个节点话,目标物体里面也只能观察一个波长的现象,同时很容易导致发散.因为三纬模型对物理模型,算法,内存使用存在了一定的要求,而这些在一纬模型中全部可以忽略,使我们能够把精力放在我们所关心的物理问题,现象上。
大家觉得这已经做透了的东西,我最多将它当做练练手,没什么好追求的.其实这也不然,原因有:
1)一纬对编程要求低,你可以将精力放在物理模型上,取等离子体与电磁场数值模拟为例,现在以信号不影响等离子体密度的分布为前提的,你可以考虑密度分布不均匀时的情况,或者考虑信号如果对等离子体本身产生影响会怎么样?对等离子体本身的影响到底是影响等离子体密度呢,还是影响等离子体电子温度?前者可以研究非线性等现象,后者可以研究电离层加热,或者两者都有影响.等离子体密度不均匀时,要不要考虑密度剃度的影响,等等,再比如非磁化和磁化等离子体的比较等等,这些能研究的内容都很多.只要能找到合理的应用背景,发几篇好的文章都可以.
2)一纬中的算法相对也容易改进和验证,收敛性的验证就是一个很好的例子,事实上对等离子体这种色散介质收敛性的讨论很少,决大部分认为等离子体中的速度小于光速,所以收敛性要比真空中更弱一些,所以不用另外考虑,其实这是错误的,等离子体中电子温度所对应的电子速度限制,非线性中收敛性的情况,就会发现远远不能那样简单描述出来.通过推导它们收敛要求的公式,找到发散的原因,会有新的收获.
我做数值模拟的时候,一般重点都是放在一纬上,一纬首先能从原理上看模型是否合理,收敛性的要求如何,吸收边界条件,随意的改变模型,如等离子体与真空,等离子体与金属,等离子体与其他介质材料等,等模拟结果与预想的理论结果相差很小时,开始做二纬的
网友回复:
似乎三维的也有些成果了:)
网友回复:
对一纬等离子体与电磁场数值模拟熟悉后,就可以进一步研究二纬的数值模拟.二纬多了个自由度,因此我们可以充分的完善物理模型,基本上能够描述实验中的一些现象了.
二纬在本质上和一纬没有太大的区别,连接边界,吸收边界,激励源,收敛条件等等,这些都基本上不用考虑太多.需要注意的是,收敛条件和纬数,模型关联很大,需要时时更新。
二纬所能够描述一些一纬无法描述的模型,
1)比如某些磁化等离子体.
2)将柱坐标转换成二纬模型,这个价值很大,因为实际中很多模型都可以用柱坐标来描述,当与角向分量无关(对称)时,二纬模型基本上就能很好的模拟出实验结果来.
3)在数值模拟过程中,二纬起中承上启下的作用,一纬有时候太简单,算法的改进无法体现,失去了意义,同时三纬需要时间太长,不易调试.因为在二纬数值模型中,可以重点放在算法的改进上,提高速度,提高计算精度或内存优化等等.这些一般是最主流的方向.
二纬模拟在程序调试时,要比一纬难很多,实时显示图片也很慢.有一次笔误造成结果的偏差,让我也找了好半天才发现.写一个大点的程序,总会出现各种各样的问题,耐心和扎实的理论是你信心的保障。
网友回复:
等到了三纬时,基本上能够满足实验的需要了,只要建立合理的方程,对程序来说,步骤相对更加简单一下.因为不要太大指望能仅仅从三纬模型上得到一些原理的突破.
三纬的优点是更加真实的反映现实,缺点是速度慢,耗内存.因此在三纬模拟上的方向一般是算法,针对性能所提出的.如为了减少内存,就必须采用新的数据存储方式,改进算法,使用更少的内存.或针对运行时间长,提出多线程,分布式处理,并行计算等不同手段.
因此三纬数值模拟一般不是一个人所能做的,它需要一个团队之间的配合,大家分工明确,谁负责做主体,谁负责算法,谁负责做并行等等.其实想想道理很简单,如果你一个人做个三纬模拟出来,意义肯定不大,因为有太多的东西需要多,你只能每样做一点,每样都没有深度,这也是必然的.
三纬中算法的提高,这个算国内研究最多的了,FDTD色散介质的算法不下数十种,但每种算法都有它的限制和优点.同时很多算法的改进在二纬模型中也可以实现,因此如果要再对算法进行研究,除非特殊需要,否则没有必要在三纬模型上进行试验,运行时间长,不容易调试.
还是说一下容易出结果的一些东西吧.
1)多线程这方面做的很少,因为多线程的库一般是Linux下面pthread用的最多,现在的Java和VS中都有了多线程函数库,科研人员基本搞物理的多些,搞计算机的少一些,因此做多线程技术在等离子体与电磁场数值模拟中的应用很少.其实做起来也很简单,只要合理的划分区域,设置临界区,信号量,程序的主体框架基本上不用动.
2)并行计算或分布式处理,这个有人在做,但也不多,其实可以做的内容也很多.但从效果而言,要比多线程好很多,因为它不用解锁或锁,但它需要网络传输数据,用datasocket也可以了.
提醒一下,三纬数值模拟一般需要一个团队经过一段时间才能有所成就,或有所心得,如果一个人,除非有现成的代码,否则一般很难搞出有创新的东西。
最后强调一下,任何数值模拟,数值计算一般都要在对物理模型,理论有很深的了解下做,才能做到心中有谱,万无一失.因为在做模拟的过程中,你会发现很多你没想到的现象,这到底是对,还是错?是什么原因引起的,程序收敛性有错,代码有错,还是的确存在,而你没想到.如果是没想到,就应该反省自己为什么开始没预测到.很难想象,照般一些公式,建立个物理模型,是如何调试程序的.只能一片茫然,向别人请教,这也失去了做数值模拟的意义.
本文引用地址:http://www.sciencenet.cn/blog/user_content.aspx?id=14470
网友回复:
受教了!楼主大牛啊,欢迎您多多参与交流和讨论~~
网友回复:
做数值模拟是个很枯燥的过程,如果做之前有已经有一定的基础了,那是比较好的,空手起家做数值模拟是非常困难的。熬出来不容易啊。
。。
网友回复:
不错,说得很好
数值计算是长期磨炼出来的,有耐心做,做得出来
现在带一个学生在写一维等离子体模拟,看年底给大家一个简化版本等离子体仿真软件
网友回复:
改天我贴一个 一纬等离子体FDTD数值模拟源码 和一维等离子体数值计算的Matlab代码吧。
网友回复:
等候,到时欣赏你的代码
网友回复:
本想上传论文中等离子体FDTD的递推公式的推导过程的资料的,word文档,提示附件类型不匹配,是不是只能上传图片?
申明:网友回复良莠不齐,仅供参考。如需专业解答,请咨询本站专家,或者学习本站天线设计视频培训课程。
-
5门天线设计视频课程和一本图书,将天线设计理论和实践相结合,帮助您全面、系统、深入地学习天线设计,让天线设计不再难...【详细介绍】