一种用于离子推进器数值模拟的电荷交换碰撞MCC方法技术

技术编号:18972552 阅读:30 留言:0更新日期:2018-09-19 03:42
本发明专利技术涉及离子推进器数值模拟领域,具体为一种用于离子推进器数值模拟的电荷交换碰撞MCC方法。本发明专利技术利用离子推进器电荷交换碰撞的物理特点结合计算机领域的图形处理器(GPU)单指令多线程的特性,实现了离子推进器电荷交换碰撞MCC算法的单指令多数据的并行执行,极大地提高了计算效率,节约了计算时间。

A charge exchange collision MCC method for numerical simulation of ion thrusters

The invention relates to the field of numerical simulation of ion thrusters, in particular to a charge exchange collision MCC method for numerical simulation of ion thrusters. The invention utilizes the physical characteristics of charge exchange collision of ion thruster and the characteristics of single instruction multithreading of graphics processor (GPU) in computer field, realizes the parallel execution of single instruction multidata of charge exchange collision MCC algorithm of ion thruster, greatly improves the calculation efficiency and saves the calculation time.

【技术实现步骤摘要】
一种用于离子推进器数值模拟的电荷交换碰撞MCC方法
本专利技术涉及离子推进器数值模拟领域,具体为一种用于离子推进器数值模拟的电荷交换碰撞MCC方法。
技术介绍
电推进是一种利用电能电离推进剂产生高的喷射速度实现推力的技术。电推进比传统化学推进技术的比冲高,是传统推进系统的10倍及以上,因此可以大幅度减少航天器推进剂的携带量,从而显著提高航天器的有效载荷。一般电推进装置分为三种类型:静电式、电热式和电磁式。离子推进器是静电式推进器的一种,离子推进器相比其他推进器而言,最大优点在于比冲、效率都高于其它推进器。离子推进器一直是世界各国在电推进系统中的研究重点,主要用于执行卫星变轨、姿态控制、南北轨道保持等任务。离子推进器工作中主要发生以下几个关键的物理过程:放电室放电过程、离子引出过程和羽流形成过程。在放电室放电的过程中,气体推进剂与高速的电子发生电离碰撞,产生电子和离子,未参与电离碰撞的推进剂中性原子与电离产生的离子会发生电荷交换碰撞;在离子引出的过程中,离子经过引出系统时会与推进剂中性原子发生电荷交换碰撞而产生慢速离子,慢速离子可能会返流进而撞击引出系统的各部件,最终影响到引出系统的使用寿命;在羽流形成的过程中,喷出的束流离子与未完全电离的推进剂中性原子也会发生电荷交换碰撞,形成慢速离子,该慢速离子易于返流,进而撞击航天器和太阳能电池帆板,最终影响航天器和太阳能电池帆板的正常工作。综上所述,在离子推进器的各关键物理过程中,电荷交换碰撞均为离子推进器研究中不可或缺的重要影响因素。考虑到地面模拟试验的局限性和飞行试验的高昂成本,离子推进器的数值模拟得到了广泛的应用,电荷交换碰撞作为离子推进器的一个重要的物理问题,对于其数值模拟的研究具有重要意义。目前对于电荷交换碰撞研究的主要方法为蒙特卡洛(MCC)方法。MCC是跟踪粒子运动和碰撞的一种数值模拟方法。在离子推进器电荷交换碰撞的应用中,该方法描述的是一个随时间演化的粒子运动和电荷交换碰撞过程,模拟时不可避免地会产生庞大的数值计算负担,产生的原因主要有以下三点:1.时间步长短。模拟时选取的时间步长尺度必须小于离子推进器中粒子运动和电荷交换碰撞最小的物理特征时间,而通常情况下该物理特征时间均很短,因此必须选取小于最小物理特征时间的时间步长才能给出正确的模拟结果。2.模拟粒子数目多。这不仅是由于离子推进器电荷交换碰撞物理过程中真实粒子数目本身很多,而且只有采用足够多的模拟粒子数目才能正确描述粒子运动和碰撞的统计规律。3.时间迭代步数多。由于MCC方法是描述粒子运动和碰撞随时间的演化过程,因此需要大量的时间步数才能实现从离子推进器电荷交换碰撞物理过程的初始状态持续模拟达到该物理过程的稳态。综合以上原因可以得出,MCC方法在离子推进器电荷交换碰撞应用中,运算时间长、运算效率低,因此常规的MCC方法在离子推进器的电荷交换碰撞研究中是低效的。
技术实现思路
针对上述存在问题或不足,为解决MCC方法在离子推进器电荷交换碰撞数值模拟应用中存在的效率低下、计算耗时的问题,本专利技术利用图形处理器GPU的硬件架构特点,提供了一种用于离子推进器数值模拟的电荷交换碰撞MCC方法。具体技术方案如下:步骤1、在GPU设备端的全局内存上开辟两段存储空间。一段存储空间定义结构体数组,大小为能存储下模拟区域中离子推进器的所有粒子信息,即初始粒子的速度、位置和粒子属性标记信息,并且初始粒子属性标记均初始化为1,我们用1代表未参与电荷交换碰撞的快速粒子,用2代表参加电荷交换碰撞之后的慢速粒子;另一段存储空间定义一个数组,大小为粒子的个数,用来存储粒子参加电荷交换碰撞判断时所需要的随机数,并将数组内的值均赋值为0。步骤2、根据全局内存中存储的离子推进器中粒子属性标记为1的粒子个数N,调用统一计算架构平台的设备端随机数生成函数,设置随机数种子,利用GPU来产生和粒子个数N相等的随机数。每一个粒子都有一个与其对应的随机数R,用来判断该粒子是否进行电荷交换碰撞,并将所有的随机数按照数组索引的方式存放在GPU开辟的全局内存中。步骤3、在GPU端的核函数内,根据全局内存中粒子属性标记为1的粒子个数N,并结合GPU的单指令多线程特点,分配其线程块和线程网格的大小与维度,通过线程块和线程网格的大小与维度计算得到线程的索引。用一个线程映射一个粒子,使每一个粒子都有唯一的一个线程索引与其对应。用与粒子相对应的线程从全局内存中读取该粒子速度信息,根据读取得到的粒子的速度信息,由对应线程索引的线程计算出每个粒子碰撞截面,进而求得该粒子发生电荷交换碰撞的几率P。碰撞几率计算的模型如图1所示,Vn代表粒子速度,IDn代表线程的索引,Pn代表碰撞几率,其中1≤n≤N。步骤4、在步骤2中,随机数是按照数组索引的方式存储在全局内存上的,并且随机数和属性标记为1的粒子的个数相同,我们利用粒子对应的线程索引的大小去索引对应的随机数数组,得到该粒子对应的随机数R。再通过该随机数R与步骤3计算的到的该粒子发生电荷交换碰撞的几率P进行大小比较,若该粒子发生电荷交换碰撞的几率P大于其对应的随机数R,则将该粒子判断为发生电荷交换碰撞,否则将其判断为不发生电荷交换碰撞。步骤5、对于步骤4判断为发生电荷交换碰撞的粒子,做碰撞处理,即利用该粒子对应的线程去更新粒子的速度,并将该粒子的粒子属性标记为2;对于判断为不发生电荷交换碰撞的粒子,做非碰撞处理。更新所有模拟粒子的位置信息,并根据位置信息判断该粒子是否达到边界,若到达边界则删除粒子信息,不参与到下次的电荷交换碰撞判断过程中。粒子电荷交换碰撞MCC流程图如图2所示。步骤6、存储未到达边界粒子的速度、位置和粒子属性信息至GPU全局内存中,并统计粒子属性标记为1的粒子个数,更新当前时刻属性标记为1粒子个数N。步骤7、重复步骤2至6,在每个时间步长都进行离子推进器中粒子的电荷交换碰撞判断,从step=0迭代直至达到step=TOTAL,TOTAL为设置的总模拟时间步数。步骤8、在CPU主机端定义结构体数组,大小为GPU全局内存上存储的粒子信息容量。将步骤7计算后的结果从GPU传回CPU主机端内存中,进行数据处理和分析。本专利技术利用离子推进器电荷交换碰撞的物理特点结合计算机领域的图形处理器(GPU)单指令多线程的特性,实现了离子推进器电荷交换碰撞MCC算法的单指令多数据的并行执行,极大地提高了计算效率,节约了计算时间。附图说明图1为碰撞几率计算的模型;图2为粒子电荷交换碰撞MCC流程图;图3为本专利技术总体流程图;图4为二维轴对称羽流模型计算实例示意图。具体实施方式下面结合附图和实例对本专利技术作进一步详细说明。实例中测试了二维轴对称羽流模型,以氙气作为推进剂的离子推进器为例。其横截面示意图如图4所示,采用2D3V的方式模拟离子推进器的电荷交换碰撞。模拟的氙离子个数为100万个,氙离子初始速度为υbi,氙离子初始位置均匀分布在栅极出口处,氙离子和氙原子发生电荷交换碰撞的碰撞截面表示为:σcex=(k1lnυbi+k2)2×10-20m2(1)对于氙离子,式中常系数k1=-0.8821,k2=15.1262。发生电荷交换碰撞的几率表示为:P=1-exp(-n0σcexυbiΔt)(2)其中氙原子密度n0=1.0*101本文档来自技高网
...

【技术保护点】
1.一种用于离子推进器数值模拟的电荷交换碰撞MCC方法,具体如下:步骤1、在GPU设备端的全局内存上开辟两段存储空间;一段存储空间定义结构体数组,大小为能存储下模拟区域中离子推进器的所有粒子信息,即初始粒子的速度、位置和粒子属性标记信息,并且初始粒子属性标记均初始化为1,用1代表未参与电荷交换碰撞的快速粒子,用2代表参加电荷交换碰撞之后的慢速粒子;另一段存储空间定义一个数组,大小为粒子的个数,用来存储粒子参加电荷交换碰撞判断时所需要的随机数,并将数组内的值均赋值为0;步骤2、根据全局内存中存储的离子推进器中粒子属性标记为1的粒子个数N,调用统一计算架构平台的设备端随机数生成函数,设置随机数种子,利用GPU来产生和粒子个数N相等的随机数;每一个粒子都有一个与其对应的随机数R,用来判断该粒子是否进行电荷交换碰撞,并将所有的随机数按照数组索引的方式存放在GPU开辟的全局内存中;步骤3、在GPU端的核函数内,根据全局内存中粒子属性标记为1的粒子个数N,并结合GPU的单指令多线程特点,分配其线程块和线程网格的大小与维度,通过线程块和线程网格的大小与维度计算得到线程的索引;用一个线程映射一个粒子,使每一个粒子都有唯一的一个线程索引与其对应;用与粒子相对应的线程从全局内存中读取该粒子速度信息,根据读取得到的粒子的速度信息,由对应线程索引的线程计算出每个粒子碰撞截面,进而求得该粒子发生电荷交换碰撞的几率P;步骤4、用粒子对应的线程索引的大小去索引对应的随机数数组,得到该粒子对应的随机数R;再通过该随机数R与步骤3计算的到的该粒子发生电荷交换碰撞的几率P进行大小比较,若该粒子发生电荷交换碰撞的几率P大于其对应的随机数R,则将该粒子判断为发生电荷交换碰撞,否则将其判断为不发生电荷交换碰撞;步骤5、对于步骤4判断为发生电荷交换碰撞的粒子,做碰撞处理,即利用该粒子对应的线程去更新粒子的速度,并将该粒子的粒子属性标记为2;对于判断为不发生电荷交换碰撞的粒子,做非碰撞处理;更新所有模拟粒子的位置信息,并根据位置信息判断该粒子是否达到边界,若到达边界则删除粒子信息,不参与到下次的电荷交换碰撞判断过程中;步骤6、存储未到达边界粒子的速度、位置和粒子属性信息至GPU全局内存中,并统计粒子属性标记为1的粒子个数,更新当前时刻属性标记为1粒子个数N;步骤7、重复步骤2至6,在每个时间步长都进行离子推进器中粒子的电荷交换碰撞判断,从step=0迭代直至达到step=TOTAL,TOTAL为设置的总模拟时间步数;步骤8、在CPU主机端定义结构体数组,大小为GPU全局内存上存储的粒子信息容量,将步骤7计算后的结果从GPU传回CPU主机端内存中,进行数据处理和分析。...

【技术特征摘要】
1.一种用于离子推进器数值模拟的电荷交换碰撞MCC方法,具体如下:步骤1、在GPU设备端的全局内存上开辟两段存储空间;一段存储空间定义结构体数组,大小为能存储下模拟区域中离子推进器的所有粒子信息,即初始粒子的速度、位置和粒子属性标记信息,并且初始粒子属性标记均初始化为1,用1代表未参与电荷交换碰撞的快速粒子,用2代表参加电荷交换碰撞之后的慢速粒子;另一段存储空间定义一个数组,大小为粒子的个数,用来存储粒子参加电荷交换碰撞判断时所需要的随机数,并将数组内的值均赋值为0;步骤2、根据全局内存中存储的离子推进器中粒子属性标记为1的粒子个数N,调用统一计算架构平台的设备端随机数生成函数,设置随机数种子,利用GPU来产生和粒子个数N相等的随机数;每一个粒子都有一个与其对应的随机数R,用来判断该粒子是否进行电荷交换碰撞,并将所有的随机数按照数组索引的方式存放在GPU开辟的全局内存中;步骤3、在GPU端的核函数内,根据全局内存中粒子属性标记为1的粒子个数N,并结合GPU的单指令多线程特点,分配其线程块和线程网格的大小与维度,通过线程块和线程网格的大小与维度计算得到线程的索引;用一个线程映射一个粒子,使每一个粒子都有唯一的一个线程索引与其对应;用与粒子相对应的线程从全局内存中读取该粒子速度信息,根据读取得到的粒子的速度信息,由对...

【专利技术属性】
技术研发人员:金晓林叶晓辉李斌杨中海
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1