易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

匀强电磁场仿真 方便小孩教学   [复制链接]

    2024-02-23 09:05:55
    高级教程源码
    易语言资源网
    812 次浏览
    来源链接

之前写的玩意 想着给家里小孩做的 发从来顺便加了C++ CUDA 硬件加速

这是一个带正电荷的质点,你可以设置它的一些基本属性,包括:

  • 质量。它可以被设为未知量M
  • 电荷量。当然也可以被设为未知量q/e/nq/ne/-q/-nq
  • 速度标量。可以被设为未知量v。不过,当你不需要求解问题的时候,你可以设置为任意值。(见下方)
  • 位置与速度方向。动动鼠标,拖动矢量箭头,即可在画板上绘制质点的位置与速度方向(当然,它也可以是一个静止的质点)


在这里,我设置了两个求解方法:

  • 设置质点需要经过的位置,或者位置矢量,求解质点所需的m、q、v以及所处势场的强度E1、E2...  B1、B2...
  • 设置质点离开某个势场时的角度,同样,求解质点所需的参数以及势场的参数

a-求解途径点/途径点矢量

b-求解离场矢量

回归仿真器,在这里,你可以添加四种形状的势场:

  • 矩形

  • 多边形(你可能会疑惑—矩形属于多边形,为什么要区分开?因为多边形的算法,会大大提升浮点数运算的复杂度)

  • 椭圆(暂时不支持旋转的椭圆,因为我数学不好,不知道怎么画图)

  • 标准圆(好吧,标准圆也是椭圆)


那么效果图:

如图所示,质点带正电,从左方进入E0电场,角度为16.74°,要求从-27.76°时出电场,求解质点的属性以及势场的强度。那么我们运行一下看看效果

运算选项:

  • 实时预览粒子的轨迹(逐点逐点预览,你可以看到粒子运动)
  • 实时快照粒子的轨迹图(逐帧逐帧预览:那个词叫啥来着epoch,轮数,你只可以看到粒子每一轮的轨迹)
  • 不预览轨迹,CPU多线程拉满运算
  • 不预览轨迹,GPU并发运算,使用CUDA RUNTIME硬件加速

    不同场景下,可供选择,比如我只是想预览下粒子的轨迹,可选a/b

PS:

  • 常规下,CPU多线程运算可在一分钟内求解两个未知量
  • 如果需要求解3/4个未知量,CPU还是能够在有限时间内求解的
  • 多边形势场会极大影响求解性能。当然,预览轨迹除外(预览不谈性能
  • 在这里,势场多边形是怎么样的?不规则的凹包、凸包
  • 电场区域绘制完毕后,必须指定电场的矢量方向,即拖动鼠标选择方向角
  • 绘制多边形势场时,以鼠标右键结束绘制,此时将形成闭合多边形(如果存在交叉点,必然运算出错)
  • 如果你的电脑有显卡并且支持CUDA硬件加速,那么求解速度将大大提升,比如求解存在两个未知量的情况:

    • 易语言求解速度为1(优化后为1k)
    • C++ 多线程 CPU拉满情况下,速度为 5k
    • GPU 程序主要是单精度浮点数运算 根据单精度算力而异 配置稍微可以的  4个未知量一分钟内求解出结果
    • (以上速度仅针对求解,实时预览并不吃性能)
    • 所有参数都可以自己调整步长、上限
    • 磁场磁通量未知量运算得比较慢

另外,CUDA版本没有易语言调用,不过可以生成代码,自己贴在上面就可以跑结果,然后把生成的坐标点导入软件,自己摸索一下

源码包括:易语言版本,C++CPU多线程加速DLL,CUDA RUNTIME部分

附上一个四磁场未知量 CUDA加速结果  20秒出结果



点我下载 (已有 13 次下载)

引用模块


源码文件名 模块文件名
main.e
内存画板.ec
哈希表.ec
精准计时.ec


引用支持库


源码文件名 支持库文件名 支持库标识
main.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
扩展界面支持库一Ex 3.4 27bb20fdd3e145e4bee3db39ddd6e64c
EXUI++界面库20220526 2022.5 5014D8FA6DCA40b68FA626D8186666EB
高级表格支持库 2.11 0B4337DA651B4b619ACF61334A7E8B47
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
扩展界面支持库三 3.1 {B6F7542F-B8FE-46a8-9605-98856A687097}
多线程支持库 2.0 5F99C1642A2F4e03850721B4F5D7C3F8
应用接口支持库 3.1 F7FC1AE45C5C4758AF03EF19F18A395D
通用对象支持库 2.0 {A068799B-7551-46b9-8CA8-EEF8357AFEA4}
拖放支持库 2.0 {9DA96BF9CEBD45c5BFCF94CBE61671F5}


[错误报告]   上一篇:Ansi 到 Usc2 快速编解码...     下一篇:打印机驱动下载...