粒子模拟.docx
《粒子模拟.docx》由会员分享,可在线阅读,更多相关《粒子模拟.docx(11页珍藏版)》请在冰豆网上搜索。
![粒子模拟.docx](https://file1.bdocx.com/fileroot1/2022-10/28/5a662a7f-8269-4009-8a81-537b40419971/5a662a7f-8269-4009-8a81-537b404199711.gif)
粒子模拟
粒子模拟课程设计
1.物理模型
本课程设计采用PIC模拟方法的静电模型,模拟电子枪阴极表面发射电子注,电子在静态场的作用下运动直至稳定的运动过程。
由于电子注的环形特征以及圆柱系统具有良好的轴对称性,采用圆柱坐标系来进行理论分析和数值模拟。
图1:
多环形电子注在圆柱坐标系统中的运动
2.理论分析
理论分析包括:
电子运动方程的求解、电荷源的求解以及泊松方程的求解三部分。
2.1电荷源的求解
课程设计采用的是有限大小粒子模型,且形状、尺寸与所处的网格单元一致,位置由其中心点描述。
假设代表宏电子位置为,距离其最近的最小网格点标识为,然后将电荷平均分配到相邻的8个网格点上。
假设每个宏电子发射电流为I,则宏粒子的电量为。
按照平均分配的原则,它对每个周围格点的贡献为。
粒子在有限空间内均匀分布,则利用宏电子所在的网格单元的体积为:
2.1.1
则每个格点分配的电荷密度大小为
2.1.2
2.2求解泊松方程
已知空间各个格点上的电荷密度,求解泊松方程,获得各个格点上的点位。
在国际单位制下泊松方程形式为:
2.3.1
在圆柱坐标系下,
2.3.2
(1)考虑非轴线上格点的电势求解
在处将2.3.2式差分,并设定
2.3.3
(j=1,2...)2.3.4
2.3.5
得到:
2.3.6
注意:
差分表达式仅对于非轴向格点适用,即要求。
(2)对于轴线上格点电位的求解
2.3.7
(3)左平面电位固定,为100V:
2.3.8
右平面电位为0:
2.3.9
圆柱边界面上,除了左右边界点外,利用电势径向连续来求解电势。
2.3.10
利用建立的电位离散方程组与边界条件,采用迭代法或者直接求解法,即可获得空间各个格点上的电位。
2.3.11
其中,。
2.3电子运动方程的求解
粒子在场的作用下,运动状态发生变化,具有新的速度和位置。
粒子的运动方程为
2.4.1
2.4.2
由运动方程可知,
(1)先差值求出电子所在位置的场,
(2)后求解运动方程获得新时刻的速度与位置。
(1)求粒子所在位置的电场:
假设考察的电子位置为,距离电子最近的最小网格标识为,如图3.3所示,则电子所在位置处电场的分量为
2.4.3
2.4.4
2.4.5
内部非轴线点:
2.4.6
轴线方向点:
2.4.7
(2)粒子运动状态更新
采用静电模型中的蛙跳格式进行差分处理后,粒子速度在整个时间步长取值,粒子位置与电场力在半个时间步长取值。
有:
2.4.6
2.4.7
2.4.8
3.程序编写
此次课程设计,我采用了c语言进行编写
3.1主函数代码
voidmain()
{
double*p=(double*)U,*q=(double*)RO;
gedianchushi(p,q,Nr,Nc,Nz);//格点初始化
for(intt=0;t<6000;t++)
{
intn;
n=t/10;
if(t%10==0)
{
zhurudianzi(lz,n);//第n次注入电子
monibuchang(lz,n);//第n次注入的电子模拟半个时间步长
}
dianhefenpei(lz,q,n,Nr,Nc,Nz);//1.求前n次注入电子所处的网格,分配电荷密度
dianshidiedai(p,q,Nc,Nz);//2.由电荷密度求电势
sudugengxin(lz,q,n,Nc,Nz);//3.由电势求出格点处的电场,由电场更新粒子的速度
weizhigengxin(lz,n);//4.由速度更新粒子位置
}
3.2程序流程图
3.3初始化设置
(1)物理参数
包含了各种物理结构形状、尺寸,以及各种物理条件。
系统长:
0.01m;
系统半径:
0.005m;
入射的每个宏电子电流:
-1e-3A
最内圈宏电子注入半径:
2e-3m,以后均匀递增2e-4m。
(2)计算参数
轴向网格数1:
Nz,Nz=201;
径向网格数1:
Nr,Nr=101;
径向空间步长:
3.3.1
轴向空间步长:
3.3.2
角向空间步长:
,3.3.3
时间步长:
3.3.4
每次注入宏电子5圈,共有36*5=180个宏电子。
注入电子的时间间隔为10个时间步长。
(3)粒子的初始化
假设5圈电子以同样的速度从左平面入射进系统,且横向分布满足轴对称性。
3.3.5
3.3.6
3.3.7
z=03.3.8
r和θ的布置如图所示满足轴对称性。
(4)电势初始化
左平面固定电位100V,
3.3.9
右平面接地,电势为0,
3.3.10
两平面之间电位均匀变化,且横向等电位,
3.3.11
(5)电荷源初始化
全部网格上的电荷源等于0。
(6)收敛流程
这里只是为了讨论环形电子注在圆柱系统中的运动轨迹,因此对收敛没有要求,作为实例,只计算6000个时间步长即可。
4.结果讨论
4.1注入五圈电子的截面图
图2:
matlab中绘制的粒子截面图
说明:
每一圈36个,一次注入5圈。
每圈粒子均匀分布于360°。
4.2粒子轨迹图
下图为第一次注入的5圈电子运行6000个时间步长过程中的粒子轨迹图。
图3:
粒子轨迹图
说明:
由于程序没有调试好,目前只得到这样一个结果。
5.心得体会
此次课程设计使我收获良多,首先清楚了PIC模拟方法的静电模型用于模拟多环电子注在圆柱系统中运动的基本流程,对于电子枪中电子的运动有了深刻清晰的认识。
其次也锻炼了自己的编程能力,对c语言的使用也更加熟练。
编程首先要画系统流程图,这样才能有全局观念,在此要感谢唐茂文同学的指导,是、使我更加清楚了系统流程。
编程要做到条理清晰,因此编程时我将其模块化,一个模块一个模块的进行编程,模块编好之后立即进行测试,看是否达到我想要的目的。
编程之中的问题,要实现程序模块化,就牵扯到函数调用的问题,函数调用之中最大的问题就是形参和实参,要通过函数调用来改变实参的值就要用到指针,不使用指针就没有涉及编程的精髓,但是使用指针出现的错误较为隐蔽,很难发现,稍有不慎就会使整个程序崩溃。
另外一个就是如何用指针来表示三维数组,表示二维数组没有什么难度,但三维数组我之前没有涉及过,是用指针数组还是用一维指针来表示,经过我的尝试,将三维数组强制转换成了一维指针,但是表示方法略微繁琐,(其他表示方法暂时没有尝试成功)致使程序的可读性略微下降。
还有就是由于一开始的准备工作没有做充分,细节部分考虑的不够周全,比如轴线电荷密度和电势的处理,致使程序调试不甚理想。
另外一点是,课本上的粒子下标是从1开始的,而我的程序是从0开始的,在公式代入的过程中也遇到了不小的麻烦。
今后编程钱一定要充分做好准备,画好流程图,细节部分考虑好,做到磨刀不误砍柴工。
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!