加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
震撼!模拟器的最后一块拼图! 根据线圈参数计算 磁感应强度分布曲线!
gugugu2024/06/23原创 磁阻研究 IP:上海
关键词
磁感应强度曲线计算python

     在笔者之前写的文章《根据磁感应强度曲线来计算磁阻炮的弹丸受力》中成功计算了弹丸受力,可惜需要借用maxwell来计算磁感应强度分布曲线,这种方式由于需要maxwell的介入导致非常不方便,那么有没有一种办法可以根据线圈本身的参数直接计算磁感应强度分布曲线呢?

    答案是肯定的,在github上的CoilGun.jl项目上 笔者找到了这个问题的答案。计算公式如下:

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

     不过由于笔者的电磁学能力很薄弱,所以无法跟着原文的思路进行推导,但在下面的代码验证中发现,公式应该要乘以0.5才成立。(CoilGun.jl项目的链接放着文末,有能力的大佬可以推导看看)。非常感谢托卡大佬的帮助,这个公式其实就是论文《两种载流螺线管轴线上磁场分布函数的比较》里的公式2的变形,并且确实少乘了个1/2  。


公式转化为python代码:

     原文是的项目是CoilGun.jl,使用Julia代码写成的,可以用ai方便的转化成python代码。代码中的线圈参数与《根据磁感应强度曲线来计算磁阻炮的弹丸受力》中设置的一致即:线圈长度8,内径8.5,外径18,匝数100,激励电流200A。  代码如下:

Python
import math from scipy.interpolate import interp1d   import numpy as np import pandas as pd   from scipy.optimize import curve_fit   import matplotlib.pyplot as plt   class Coil:       def __init__(self, location, length, N, innerRadius, outerRadius):           self.length = length      #线圈长度         self.innerRadius = innerRadius  #线圈内半径         self.outerRadius = outerRadius  #线圈外半径         self.N = N                      #线圈匝数         self0 = 4 * math.pi * 1e-7  # 真空磁导率   亨利每米         def BFieldCoil3(self, current, z):   #输入位置 计算磁感应强度!         L=self.length         a=L/2         r2=self.outerRadius         r1=self.innerRadius         R=r2-r1         def logarithm(pos):               return pos * math.log((math.sqrt(pos ** 2 + r2 ** 2) + r2) /                                     (math.sqrt(pos ** 2 + r1 ** 2) + r1))                      return ( self0*self.N*current/(2*L*R) ) * (logarithm(z+a)-logarithm(z-a))  coil = Coil(08*1e-31000.5*8.5*1e-30.5*18*1e-3)  # 线圈位置0,线圈长度8 mm,线圈匝数100,线圈内半径8.5/2 mm,线圈外半径18/2 mm  current = 200  # 电流为200A   #计算-30至30 范围内的磁感应强度分布曲线 xx=[ pos for pos in np.arange(-30,30,0.1)] yy=[ coil.BFieldCoil3( current, x*1e-3)   for x in xx] #maxwell直接计算的磁感应强度分布曲线 Bx_csv = pd.read_csv('D:\pytohn_Sofe\dcp1\dcp1\mainSim\mainSim\Fb\\Bx_8_8.5_18_100_200.csv')  Bxxx = np.array(Bx_csv.iloc[:, 3].values )    Byyy = np.array(Bx_csv.iloc[:, 4].values )    #画出曲线A 和 曲线B的曲线 plt.plot(xx, yy, color='yellow', label=' curve A')   plt.scatter(Bxxx, Byyy, color='red', label=' maxwell B')   plt.xlabel('x (mm)')   plt.ylabel('B (T)')   plt.legend()   plt.show()


代码验证:

03Y3EZ}BE0TR2OHWU{DI])2.png

   其中曲线A是代码计算的曲线,曲线B是由maxwell计算的曲线,可以看到这两条曲线的重合度非常高! 之后笔者对其他参数的线圈也进行过多次验证,也表现出了极高的重合度!


   结语:

   现在笔者可以说是集齐了电磁炮模拟器的所有拼图了。HAcoilgun这个模拟器已经有十多年的历史了,只是非常可惜代码没有开源,我们没办法知道其是如何计算的。 但是现在终于终于看到了曙光,新的模拟器即将要在kc诞生了!!!!

   最后在这里我非常感谢各位大佬的帮助! 尤其是三水大佬,对我帮助非常多。 sticker


参考文献:

1:   GitHub - laurium-labs/CoilGun.jl: Coil gun simulation to aid in coil gun design

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

3:   线圈参数计算器(基于Wheeler公式计算电感量) - 科创网 (kechuang.org)

4:  你好,电磁炮(盒装)套件+书内购入口 - 科创网 (kechuang.org)

5:  行波加速器的仿真计算流程 - 科创网 (kechuang.org)

[修改于 1年1个月前 - 2024/06/24 18:19:39]

来自:物理高能技术 / 电磁炮
7
5
新版本公告
~~空空如也
gugugu 作者
1年1个月前 修改于 1年1个月前 IP:上海
933347

0I@C1SG_J$7Y6_9F6$`7]HD.png

在原项目里,或许是这里的公式2推导到公式3时候漏了个1/2 ??? 

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gugugu作者
1年1个月前 IP:上海
933353
引用托卡马克发表于2楼的内容
可以看看这篇论文

非常感谢!  

那么破案了,CoilGun.jl项目中的公式其实是论文里的公式2。令x=z+a,又有L=2a。那么换元后,这俩公式就是一样了。而且CoilGun.jl项目中的公式确实少乘了1/ 2。 


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

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

gugugu
进士 学者 机友
文章
6
回复
131
学术分
1
2021/12/14注册,9时42分前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:上海
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的