[python] 行波加速模拟器【开源】
gugugu2024/06/25原创 磁阻研究 IP:上海
中文摘要
半桥拓扑磁阻炮 仿真程序
关键词
仿真python


概述

    该程序适用于使用半桥拓扑的多级磁阻炮(也可用于单级)。仿真计算 了弹丸受力,线圈电流,以及电容器电压变化等。核心算法基于行波加速器的仿真计算流程 - 科创网 (XXXXXXXXXXXX) 中开源的算法,在这里非常感谢coulson21 大佬。


此仿真考虑或计算了以下效果:

   1.线圈参数计算

   2.线圈中轴线上的磁感应强度

   3.弹丸受力 和 弹丸的感应电动势

   4.关于电压,电流,弹丸位置与速度相关的空间域方程(为了模拟的方便放弃使用时域方程的方式)


本仿真最重要的几条近似如下

    1、 磁饱和近似,即动子处于磁饱和状态,磁化强度在整个加速过程中保持不变。 (如,1010钢 饱和磁导设为2T, 磁化强度M=2T/u0  ) (饱和磁导参数可以在mode.csv中修改即 饱和磁导 那列 )



本仿真使用的线圈开启/关闭 策略  --使用位移控制模式

    

    1.每级线圈的导通持续距离pw 。(对于单阵列来说pw=就是线圈长度+隔板长度)

(   pw 可以在mode.csv中修改即 脉宽  那列)


    2.线圈关闭时机: 在弹丸前端到达线圈中心时关断(这么做有利于防止反拉,目标是让弹丸中心和线圈中心重合时电流降到0)。通过pw和线圈关闭时机 可以算出 线圈导通时刻 td 。

(   线圈关闭时机 可以在mode.csv中修改即 关断策略偏移  那列)


程序的结构与使用方法

    大致可以分为四部分组成,即 1.从mode.csv文件中进行数据输入 ,XXXXlculator_XXXXXX的模块计算线圈参数 3.仿真计算 4.数据使用plt 显示出来。

    一.从mode.csv文件中进行数据输入

    整个项目的数据是从mode.csv这个表格文件里输入的。

image.png


  1. 从漆包线材料到关断策略偏移的参数是线圈参数,可以填多行,数据空缺时会自动从上一行中补全。

  2. 漆包线材料(CuorAl) 可以填0或1,填0为铜线,1为铝线

  3. 匝数或外径模式选择(0or1) ,填0 表示匝径start里填充的是匝数, 1为外径 

  4. 匝径start 填0时 启用匝数延续功能,填0处的匝数会从上一级延续过来

  5. 子弹质量填0时 启用自动计算质量功能

  6. 匝数幂衰减系数 默认0.8,这里 幂衰减的含义是:级数每翻一倍,匝数变为0.8倍。

  7. 使用 [var_start,var_end,num] 切分参数 或使用 (var_0,var_1,var_2,var_3 ...) 枚举参数 来启用参数扫描功能。

  8. 参数扫描结果图中会标红离鼠标最近的点 ,右键点击后对其仿真,参数扫描后的保存文件放在子文件夹(\scanResultFile)下,根据保存的结果,下次扫描时会进行接续,多次扫描的结果会合并在一起。




    二.calculator_XXXXXX的模块计算线圈参数 

        1.计算线圈的自感,电阻等数据,详见参考文献中 线圈参数计算器 

                JF@%$]FYN`T@MQG(T_2H0RH.png


        2.计算线圈的互感部分见参考文献中《空心圆柱线圈的电感计算》 的使用等效圆环法计算

6E`C]LP5}J5`]HNC00TB9_E.jpg


    三.仿真计算过程

        1.计算线圈中轴线上的磁感应强度,详见参考文献中 根据线圈参数计算 磁感应强度分布曲线 

            R2K_IA2H0$WF$[1Y6_S}72S.png


        2.计算单位电流下的弹丸受力  ,详见参考文献中 根据磁感应强度曲线来计算磁阻炮的弹丸受力 

                           F=M*ΔΦ=M*ΔB*S


        3.关于电压,电流,弹丸位置与速度相关的空间域方程 ,详见参考文献中的行波加速器的仿真计算流程

                       本程序的核心算法在这里,再次感谢coulson21大佬的贡献。 原文中是时域方程 ,即各变量是关于时间t的

              微分方程。这样的缺点是整个加速时间在仿真前是不知道的,所以会预先设一个较大的Stop time 。所以改成了空间

              域方程,因为整个加速距离是确定的。


    四.数据使用plt 显示出来。

         XXXXt图表

               这里显示行波动画,以及线圈电流,弹丸受力,电容电压和速度的数据

image.png


    五.数据保存

       在完成仿真后,程序会将 弹丸速度和效率结果 保存至mode.csv的最后result那列。 

          GB{NUV(M)L}`@[}4N~O%]78.png

     笔者在完成这次仿真后在maxwell中进行了验证,发现误差较小。

     贴出maxwell与本程序的电流结果:可以看到一致性很高

                     EFJMVXP07HMTAQ[P}X[_GBI.png


     maxwell文件如下:

attachment icon 8_49.aedt 1.46MB AEDT 49次下载

最后:

           本程序使用pyinstaller进行了打包,读者可以方便的移到自己的电脑运行。位置 在dist文件夹下。压缩文件放在回复区。


           最后在这里我非常感谢各位大佬的帮助! 


参考文献:

    1. 行波加速器的仿真计算流程 - 科创网 (XXXXXXXXXXXX)

    2.

attachment icon 空心圆柱线圈的电感计算_吴素文.pdf 2.97MB PDF 170次下载 预览    

   3.    震撼!模拟器的最后一块拼图! 根据线圈参数计算 磁感应强度分布曲线! - 科创网 (XXXXXXXXXXXX)

   4:根据磁感应强度曲线来计算磁阻炮的弹丸受力 - 科创网 (XXXXXXXXXXXX)

   5:   线圈参数计算器(基于Wheeler公式计算电感量) - 科创网 (XXXXXXXXXXXX)

   6:  你好,电磁炮(盒装)套件+书内购入口 - 科创网 (XXXXXXXXXXXX)


[修改于 2个月21天前 - 2024/09/01 17:00:33]

+1  学术分    虎哥    2024/08/12 提供重要且对专业具有显著推动作用的学术性公共服务。
来自:物理高能技术 / 电磁炮
18
 
22
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
gugugu 作者
4个月28天前 修改于 2个月26天前 IP:上海
933537

开源地址:

gitee: coilgun: 半桥磁阻模拟器 (XXXXXXXXX)


1.2.0版本: 匝数幂衰减功能,衰减系数默认0.8,匝径end列 替换为衰减系数。

1.4.0版本: 大幅优化行波动画的运行速度,并增加动子跟随鼠标的功能。

1.5.0版本: 重要更新,优化了软件计算速度。

1.7.0版本: 互感计算改进,现在可以选择精细计算或粗略计算。精细计算会计算某线圈与其前后四个线圈间的互感,但较慢。

1.8.1版本: 增加匝数延续功能(匝数位置填0开启) ,增加一列T_C列,以便时序数据可以方便地放进单片机,Tjson列增加三种时序差分,再加上原来的td,pw一共5种数据

2.0.1版本:重要更新,参数扫描功能!

3NAE2L@J8AW54G_K_@0TJC1.png

2.0.3 版本:新增次要参数列,新增脉宽幂递增系数 列,默认1.1 。修复若干bug(修复电容重量计算问题)。

2.1.0 版本:参数扫描结果会保存 并在下次扫描时会接续。

2.2.6 版本:增加各线圈的升温显示。增加右键点击 参数扫描结果的点后对其仿真功能,参数扫描后的保存文件现在放在子文件夹(\scanResultFile)下。为了仿真的精度和速度考虑,现在默认步长为1,并且前100个step的步长是0.1 。修复若干bug,修复因动态计算时出现的电流bug,修复互感计算bug。

2.3.1版本 :重要更新,优化动态计算算法,大幅加快计算速度。 参数扫描时使用多进程技术,大幅加快计算速度。优化微元切分,使得现在初始速度可以填0 而不是之前的1。

2.4.0版本 :增加同时显示位移图和时间图的选项,修复上版本多进程bug.

attachment icon coilgun_2.4.0.zip 94.30MB ZIP 60次下载


引用
评论
5
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
4个月12天前 修改于 4个月1天前 IP:上海
934120

1.1.0版本: 增加动子运动的动画

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
4个月7天前 修改于 4个月6天前 IP:上海
934249

1.2.0版本更新:由线性衰减改为幂衰减,衰减系数默认0.8,匝径end列 替换为衰减系数。这里 幂衰减的含义是:级数每翻一倍,匝数变为0.8倍。(此规律由440Nx大佬发现)。   令匝数衰减目的是为了 让电流在后续的级数中基本不衰减。

现在由线性衰减改为幂衰减 的好处是可以少填一个匝径end的数据,后续的级数可以直接被计算出来,方便了许多。


引用
评论
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
4个月3天前 修改于 4个月3天前 IP:上海
934359

1.4.0 行波动画展示,动子跟随鼠标效果演示:



1.4.0.mp4 点击下载


引用
评论(1)
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
3个月16天前 修改于 3个月0天前 IP:上海
935148

2.0.1版本:重要更新,参数扫描功能! 

3NAE2L@J8AW54G_K_@0TJC1.png

对需要参数扫描的位置设置成如下格式即可 [起始,结束,分割个数] 。 可以对多个参数进行参数扫描。 越靠右下角的点在我看来性能越好

UPC(6X8NVLH%7[7~P)%AEGF.png

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
3个月14天前 修改于 2个月26天前 IP:上海
935325

2.4.0版本 :增加同时显示位移图和时间图的选项,修复上版本多进程bug.

引用
评论
4
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

gugugu
进士 学者 机友
文章
6
回复
118
学术分
1
2021/12/14注册,1天14时前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:上海
新版本公告
3个月0天前
2.3.0版本 :重要更新,优化动态计算算法,大幅加快计算速度。
4个月28天前
2.0.1版本:重要更新,参数扫描功能!
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}