基于python脚本进行Maxwell自动化仿真

本文为博主进行Maxwell自动化研究过程的学习记录,同时对Maxwell自动化脚本(pythonIron)实现方法进行分享。

文章目录

脚本使用方法

  1. 创建一个pyhon文件,如"script.py"
  2. 点击Maxwell➡Tools➡run script
  3. 选择刚刚创建的脚本打开,即可运行*(注意去除脚本中中文内容)*

脚本录制与查看

如图点击录制脚本

点击选择ironPython

录制后可以在同样位置选择结束录制

但是博主的版本有bug,这一块是灰色的。那也没有关系,脚本是实时更新并保存在临时目录的。

即便版本正常,博主还是建议直接取临时文件夹实时查看脚本录制内容,这样每进行一步操作即可知道对应的脚本代码。临时目录的位置通常是:c盘用户文件夹/AppData/Local/Temp。具体可以在maxwell软件设置内查看:

点击后出现设置窗口,找到Temp对应位置:

之后在文件管理器打开这个位置,可以看到最近录制的脚本,使用编辑器或记事本打开,即可看到对应操作的代码

常用脚本代码

如果你懒得进行录制,或对录制脚本做出一些简单更改与补充,可以参考下面的一些常见代码

通用开头

python 复制代码
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()

定义项目

python 复制代码
oProject = oDesktop.SetActiveProject("MaxwellProject")
oDesign = oProject.SetActiveDesign("Maxwell2DDesign1")

此段分别定义了maxwell的项目、设计,此处名称应对应maxwell项目目中的对应名称:

调整设计变量

软件内对应位置

通常批量化、自动化操作需要对项目的设计变量进行设置,Maxwell中对应位置为

点击后即可看到变量设置窗口

脚本

使用python脚本对变量进行设置:

python 复制代码
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:currents1",  #变量名
					"Value:="		, str(s)+"A"  #变量值(若有单位则加上单位)
				]
			]
		]
	])

设置求解器

软件内对应位置

点击后出现求解器设置窗口,此处为稳态求解类型,若为频域或瞬态可能有差异

脚本

设置方法如下,根据需要设置的字段按照如下方式设置

python 复制代码
oModule.EditSetup("Setup1", 
	[
		"NAME:Setup1",
		"Enabled:="		, True,
		[
			"NAME:MeshLink",
			"ImportMesh:="		, False
		],
		"MaximumPasses:="	, 10,
		"MinimumPasses:="	, 2,
		"MinimumConvergedPasses:=", 1,
		"PercentRefinement:="	, 30,
		"SolveFieldOnly:="	, True,
		"PercentError:="	, 1,
		"SolveMatrixAtLast:="	, True,
		"UseNonLinearIterNum:="	, False,
		"NonLinearResidual:="	, 0.001,
		"SmoothBHCurve:="	, False,
		[
			"NAME:MuOption",
			"MuNonLinearBH:="	, True
		]
	])

定义数据模块

通常自动化脚本用于数据的导出。故使用模块"FieldsReporter"

python 复制代码
oModule = oDesign.GetModule("FieldsReporter")

使用"计算器"计算并导出数据

软件对应计算器位置

点击后打开计算器窗口

关于计算器的使用方法本文不过多介绍,具体使用可参考其他网络教程。

脚本实现

由于计算器的操作类型很多,下面列举几个操作的脚本例子,可根据代码形式类推:

  1. 输入求解值,此处向计算器输入了磁场B的求解结果
python 复制代码
oModule.EnterQty("B")  
  1. 对当前计算器内容施加操作,此处操作取出向量第一个分量
python 复制代码
oModule.CalcOp("ScalarX")
  1. 施加求解区域,此处选择几何 0_1
python 复制代码
oModule.EnterVol("0_1")
  1. 输入常数,此处输入2
python 复制代码
oModule.EnterScalar(2)
  1. 施加运算,此处施加除法运算
python 复制代码
oModule.CalcOp("/")
  1. 导出结果至文件 ,此处定义setup求解结果项"LastAdaptive",和设计变量currents1 为100A
python 复制代码
oModule.CalculatorWrite("E:\\maxwellData\\1.fld", 
			[
				"Solution:="		, "Setup1 : LastAdaptive"
			], ["currents1:="		, "100A"])
  1. 清除计算器中内容
python 复制代码
oModule.CalcStack("clear")

项目保存

python 复制代码
oProject.Save()

关闭脚本

python 复制代码
ScriptEnv.Shutdown()
相关推荐
小宁爱Python16 小时前
基于 Django+Vue3 的 AI 海报生成平台开发(海报模块专项)
人工智能·python·django
红豆怪怪16 小时前
[LeetCode 热题 100] 32. 最长有效括号
数据结构·python·算法·leetcode·动态规划·代理模式
宇钶宇夕16 小时前
西门子 S7-200 SMART PLC 实现星三角降压启动控制:原理、案例与完整程序
运维·自动化
南部余额17 小时前
Spring 基于注解的自动化事务
java·spring·自动化
大嘴带你水论文17 小时前
震惊!仅用10张照片就能随意编辑3D人脸?韩国KAIST最新黑科技FFaceNeRF解析!
论文阅读·人工智能·python·科技·计算机视觉·3d·transformer
CodeCraft Studio17 小时前
国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
java·python·pdf·spire.pdf·java创建pdf·从html创建pdf
荣光波比17 小时前
Shell 秘典(卷十)—— 服务器资源自动化监控脚本的设计与实现
运维·服务器·自动化·云计算
摆烂z18 小时前
Jupyter Notebook的交互式开发环境方便py开发
ide·python·jupyter
一乐小哥19 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
华研前沿标杆游学19 小时前
华为在国内搞的研发基地有多野?标杆游学带你解锁“研发界顶流”
python