MindScience 之 MindElec 电磁仿真后果可视化 1. MindElec(电磁仿真)简介仿真就是对理论物体进行模型模拟,冀望改善实力产品的性能,找到最优的设计方案。电磁仿真就是对物体的电磁性能进行仿真模仿,以代替低廉的原形,并改良设计。其在手机容差、天线优化和芯片设计等场景中利用宽泛。MindElec 是基于 MindSpore 开发的 AI 电磁仿真工具包,由数据构建及转换、仿真计算、以及后果可视化组成。能够反对端到端的 AI 电磁仿真。2. MindElec(电磁仿真)装置 a. 目前只反对 Ascendb. 须要装置 mindspore 包 c. 还有一些其余的依赖 numpy >= 1.17.0scipy >= 1.7.0matplotlib >= 3.1.3pyevtk >= 1.4.1opencv-python >= 4.1.2.30pythonocc-core >= 7.4.0easydict >= 1.9 # for st test and examplesd. 装置步骤 一、下载源码:git clone https://gitee.com/mindspore/m… -b master 二、编译与装置:因为 mindelec 跟 mindsponge 共用一个仓,所以须要进入电磁仿真的目录后进行编译 cd mindscience/MindElec bash build.sh 最初在 output 外面有个 mindscience_mindelec_ascend-0.1.0rc1-cp37-cp37m-linux_aarch64.whl 安装包
装置:pip install mindscience_mindelec_ascend-0.1.0rc1-cp37-cp37m-linux_aarch64.whl
- 电磁仿真后果可视化 电磁仿真的后果个别蕴含仿真区域内的电磁场、S 参数等物理量,因而仿真后果的可视化是十分重要的,它可能直观反映电磁仿真物理量的大小和散布状况,辅助设计人员调试调优。mindelec.vision 就是对训练 / 测试过程,以及仿真后果的可视化模块。一、训练 / 测试过程可视化可视化文件通过回调函数 Callback 函数生成,MonitorEval 中有个参数 draw_flag=True,指定是否保留 summary 记录。默认值:Truesolver = Solver(network=model_net, mode=”Data”, optimizer=optim, loss_fn=nn.MSELoss())monitor_train = MonitorTrain(per_print_times=1, summary_dir=’./summary_dir_train’)monitor_eval = MonitorEval(summary_dir=’./summary_dir_eval’, model=solver, eval_ds=data[“eval_loader”], eval_interval=opt.print_interval, draw_flag=True)callbacks_train = [monitor_train, monitor_eval] 进入 mindscience/MindElec/examples/data_driven/gprinversiontrain.py 的 draw_flag 设置为 True 执行训练:python train.py –epoch 10 –device_target “Ascend” –device_num 0 –checkpoint_dir ‘./ckpt/’ 执行实现后,看了一下保留文件的地址 summary_dir_eval 外面的确有文件
然而教程也没有说这个文件是什么类型,该用什么关上,我尝试把它当成 jpg 关上,然而,失败了二、S11 可视化 MindElec 提供了 plot_s11 函数可视化 S11 曲线代码用法 import numpy as npfrom mindelec.vision import plot_s11s11 = np.random.rand(1001, 2).astype(np.float32)s11[:, 0] = np.linspace(0, 4 10 * 9, 1001)s11 = s11.astype(np.float32)s11_tensor = s11path_image_save = ‘./result_s11’legend = ‘s11’dpi = 300plot_s11(s11_tensor, path_image_save, legend, dpi)s11_tensor 尽管名字是 Tensor,然而输出类型却是 numpy, 后果如下图所示,生成的是 jpg 文件
之后用看图软件关上:
三、二维电磁场可视化 plot_eh 函数可视化电磁波的二维剖面具体代码如上面所示 import numpy as npfrom mindelec.vision import plot_ehsimu_res_tensor = np.random.rand(20, 10, 10, 10, 6).astype(np.float32)path_image_save = ‘./result_eh’z_index = 5dpi = 300plot_eh(simu_res_tensor, path_image_save, z_index, dpi)path_image_save 是文件生成的地址上面是生成的文件,都在 result_ehresult_eh├── Ex_0.jpg├── Ex_10.jpg├── Ex_11.jpg├── Ex_12.jpg├── Ex_13.jpg├── Ex_14.jpg├── Ex_15.jpg├── Ex_16.jpg├── Ex_17.jpg├── Ex_18.jpg├── Ex_19.jpg├── Ex_1.jpg├── Ex_2.jpg├── Ex_3.jpg├── Ex_4.jpg├── Ex_5.jpg├── Ex_6.jpg├── Ex_7.jpg├── Ex_8.jpg├── Ex_9.jpg├── Ey_0.jpg├── Ey_10.jpg├── Ey_11.jpg├── Ey_12.jpgEx 结尾的文件是不同时刻的 Ex 二维可视化后果
Ey 结尾的文件是不同时刻的 Ey 二维可视化后果
三、三维后果可视化三维可视化用的是 vtk_structure 函数,能够为仿真后果生成每个时刻的三维可视化文件,以 vts 结尾。能够通过 ParaView 读取展现三维成果 ParaView 是对二维和三维数据进行剖析和可视化的程序,它既是一个应用程序框架,也能够间接应用(Turn-Key)代码如下图所示 import numpy as npfrom mindelec.vision import vtk_structuregrid_tensor = np.random.rand(20, 10, 10, 10, 4).astype(np.float32)eh_tensor = np.random.rand(20, 10, 10, 10, 6).astype(np.float32)path_res = ‘./result_vtk’vtk_structure(grid_tensor, eh_tensor, path_res)grid_tensor 为三维网格坐标文件,shape 是 (dim_t, dim_x, dim_y, dim_z, 4)eh_tensor 为生成的电磁场三维网格文件,shape 是 (dim_t, dim_x, dim_y, dim_z, 6)path_res 是保留文件的地址最初生成的文件是以 vts 结尾的:
关上 vts 文件的软件没有装置,就不展现了总结:以上就是 MindElec 电磁仿真后果可视化的各种后果,其中 S11 可视化和二维电磁场可视化生成的文件都是 jpg 结尾的最初一个三维后果可视化是以 vts 结尾的文件能够用 ParaView 读取,然而第一个通过 MonitorEval 保留的文件就不晓得是什么格局了而且有一个疑难,这个可视化就是指保留文件吗,我认为的可视化是边执行边显示图,然而这边的接口并没有写明有这个性能,也没有调用函数去解析这些生成文件的性能