即将直播:国产通用低频电磁场路耦合仿真软件Simag3.0发布
导读:在介绍各个文件的意义之前,我们直接以一台内嵌式永磁同步电机(IPMSM)模型为例讲解软件的使用过程,后面再详细介绍各个文件的作用。强烈推荐大家参加8月18日20时,我在仿真秀官网组织的线上公开课《国产通用低频电磁场路耦合仿真软件Simag3.0发布》,详情见后文。
如图3-1所示为一个IPMSM样机,在进行有限元建模时,第一步必然是几何建模。我们直接采用gmsh进行绘图,gmsh可以实现完全参数化建模和网格质量的灵活控制。这个电机是斜槽的,我们为了简化问题,先忽略斜槽,再在下一章专门将斜槽处理。
(b) 样机详细参数
这部分操作可以完全脱离SiMAG进行,直接通过gmsh进行。关于gmsh的下载和操作可以参考[3],在此不再赘述。我们将事先准备好的test.geo、para.geo和xinzhunazi.geo放在了tutorial_3.0\IPMSM_SCS下,按照图3-2所示的方式可直接用gmsh打开geo文件。xinzhunazi.geo只包含了转子几何模型,而test.geo是最主要的geo文件(可以理解为主程序,以下简称主geo文件),其中include了xinzhuanzi.geo,通过gmsh打开test.geo可以得到完整的电机模型。这样若想只改变转子结构,则修改xinzhuanzi.geo就可以了。另外,还准备了para.geo,这个geo文件用来专门保存可变参数,方便后面进行参数化扫描和优化,在此处无需使用。对于gmsh不熟悉的用户可以先不着急学习Gmsh建模,先用我们准备好的文件进行操作。
新建一个空文件夹作为工作路径(workpath),如本教程中设定workpath为C:\EQFE1.0\PMSM\code_orgnized3\tutorial_3.0\IPM_SCS_noskew,将三个geo文件**到workpath中,如图3-3所示。
然后从Simag3.0文件夹中,双击运行Simag3.0.exe得到如图3-4所示的软件操作界面。然后单击“设置工作目录”按钮,将当前工作路径设置为C:\Project\yiduo\IPMSM_SCS,单击“锁定”复选框,防止误操作修改了路径名称。并且可以通过单击“New\Open”可以打开workpath,方便查看工作目录下的文件,此外将主geo文件名修改为和文件夹中一致的test.geo,如图3-5所示。para.geo暂时不需要使用,使用默认即可。图3-5 SiMAG3.0设置工作路径与主geo文件名在第一个文本输入框中输入主geo文件名,这个名称任意但是需要与当前路径中所存放的主geo文件名一致。点击“锁定”防止名称被误修改,点击“打开Geo文件”按钮可以查看当前test.geo文件名,如图3-6所示。这个时候可以任意修改test.geo中的内容,以修改几何模型。但是需要注意的是,必须先关闭test.geo之后,再进行本软件的其他操作,否则很容易死机。在打开后面的gmsh界面或excel文件时也是类似的。我们建议直接通过gmsh完成几何建模,准备好已经需要的geo文件再拷贝到workpath中直接进行剖分和计算。对于para.geo文件的操作和test.geo的操作类似。这个教程里还不涉及到优化,所以para的内容。当需要进行几何模型参数扫描和优化时将可变参数放到这个文件中,然后在主geo文件中include para.geo就可以实现只修改para.geo文件来修改整个几何模型。
点击“查看几何模型”按钮,这时候就相当于在底层调用gmsh读取了test.geo文件,并打开,如图3-7(a)所示。在键盘上按下数字2(这是gmsh中进行2维网格剖分的快捷键),可以得到模型网格如图3-7(b)所示。
(b) 网格剖分
显然不是任意的几何模型都是可以采用本软件进行计算,为了能使用SiMag3.0进行旋转电机计算需要在geo文件中满足如下要求。所谓Physical region就是将具有相同属性的几何区域组合在一起,这样在有限元模型中对于不同的物理域就可以设置不同的参数。在gmsh的界面中点击tools->visibility可以看到图3-8(b)中的内容,这对应于在test.geo中设置的情况,如图3-8(a)所示。在gmsh的界面里,可以选择不同的physical region,然后点击“Apply”就可以单独查看这个physical region。选择不同physical region时,同时按住键盘上的Ctrl键可以同时选择多个region,如图3-9所示。SiMag中用到的physical region主要分为Physical Surface 和 Physical Curve两种。本模型中共有19个Physical Surface和2个Physical Curve,他们的作用如表 1和表 2所示。为了避免不必要的bug,所以物理面必须从1开始编号,且编号为1的材料必须是空气,中间层气隙(四边形)的编号在最后,所有编号必须连续,因为后面需要对每个域设置参数。物理线的编号不需要从1开始,软件里是通过Physical Curve的名称来识别线。第一类边界线被命名为out,用于实现转子自动旋转的边界线(mid_air和inner_air的交接线)并命名为band。(a) test.geo文件中设置的physical region(b) gmsh中的不同physical region表 1 19个Physical surface 的定义及编号
表 2 2个Physical curve的定义及编号
在本软件中采用和JMAG中类似的技术,即将中间气隙层采用四边形网格,使用Moving band的技术来是新转子任意角度的旋转[4],气隙网格的剖分如图3-10(a)所示。在剖分时,mid_air必须采用等距四边形剖分,也就是每个四边形的大小必须相等。实现这种剖分方式的命令在图3-10(b)中,具体的需要先掌握一定的gmsh使用技巧。所谓的side-link边界类似于Maxwell中的Master-slave (主从)边界和JMAG中的rotation symmetry(旋转对称)边界。由于只取电机的1/6 模型,在旋转对称边界上约束对应点的自由度相等或相反即可实现旋转周期对称边界条件或者时旋转反周期对称边界条件的设置。为此,需要在side边界线上和link边界线上的剖分完全一致,如图3-11所示。为了实现剖分的完全一致,需要在边界线的网格控制上使用gmsh中的Transfinite Line的命令去将对应边界上线网格剖分的完全一致。有的时候即使不加这样额外的控制,而几何模型采用旋转对称的方式建立,gmsh自动剖分的网格有时候会自动满足side边和link边上的剖分完全一致,具体在后面初始化模型时,会在控制台中提示side-link边上的剖分是否正确。
单击“生成网格”按钮,如果gmsh中的建模完全正确,会在右面显示出各个面域和线域的名称和编号。另外,单击“New/Open”按钮,会打开当前工作目录,这时候会发现工作目录中出现了多出了test.msh文件。这个就是gmsh进行网格剖分后得到的网格数据文件。这个网格数据文件的名称和主geo文件一致,扩展名为.msh。文件的格式为gmsh中2.2的格式,该文件可以打开,具体的里面格式参照[3]中的说明手册。对应底层Python命令为:os.system(self.path_exe '\\' "gmsh " self.geo_file " -2 -format msh22")其实就直接调用gmsh将.geo文件转化为.msh文件。
在1.0版本的软件中需要通过十多个txt文件来输入有限元仿真所需的各个参数,在采用txt输入时,没有相应的提示,初学者很难使用。在2.0版本的软件中我们通过excel进行输入,并且再输入界面上给与用户一定的提示,更加方便操作。在3.0版本中为了满足斜槽的要求和粗导体仿真,Excel输入文件的格式与之前发生了一定的变化,这就导致两者格式上不兼容。我们后面都以3.0的格式为准。单击“(1) 初始化TS2D.xlsx”按钮,打开workpath会发现其中多出了一个名为test_TS2d.xlsx的excel文件。这个文件的命名规则为主geo文件名 “_TS2d.xlsx”。再点击“(2) 打开TS2D.xlsx”按钮就会打开这个excel文件,如图3-13所示。用户只需要按照约定的规则在这个文件中输入有限元计算所需的所有参数即可。当所有的数据输入好了之后,保存并关闭这个Excel文件之后。如果用户想先快速熟悉软件的操作流程,可以直接将tutorial/test_TS2d.xlsx**到当前工作目录下即可。点击“(3) 读取TS2D.xlsx转化为txt文件”按钮即可将Excel中的数据转化为程序计算所需的所有txt文件。如图3-14所示,将进行excel文件初始化与输出txt的脚本放在了Ini_param.py文件和Out_param.py两个文件中。
Excelpara.initialize() #初始化Excel类中的initialize()函数,对应“(1) 初始化TS2D.xlsx”按钮Excelpara.openexc() #初始化Excel类中的initialize()函数,对应“(2) 打开TS2D.xlsx”按钮 Exceltotxt.output_all() #输出Excel参数类中的output_all()函数,对应“(3) 读取TS2D.xlsx转化为txt文件”
图3-14 Excel文件初始化与输出txt对应的类下面就参照tutorial/test_TS2d.xlsx中已经准备好的例子进行讲解。首先Excel文件被分为了3个sheet:Basical parameters,material和circuit,他们的意义如其名,分别如图3-15,图3-16和图3-24所示。其中#打头的每一小段内容都对应于一个txt文件。对于不定长的数据,都有一个end符来标识。生成的txt文件的详细说明会在下文中给出。
(b)下半部分
图3-15 Basical parameters表单中的内容说明在介绍circuit表单之前,有必要先给出三相正弦供电下的电路,如图3-17所示,这个电路图在文献[1]中也已经给出。在图中有限元区域和电路区域通过细导线区域和粗导体区域联系起来,具体的原理详见[1]。在场-路耦合计算中,电路中的电流、电压和流过入有限元区域中的磁位都是共同作为未知量,联立求解的。为了和circuit表单中的内容对应,我们还是重新把各个元件与电路中自由度关联情况梳理一下。首先看图3-17中,V1,V2,……V12, V25, V26表示电路中不同节点的电压。I13,I14……I24表示电路中不同区域待求解的电流。尽管很显然,I13,I14,I15,I16是相等的,但是为了便于输入任意结构的电路,还是分别采用不同的自由度进行表示与不同的有限元区域相关联,尽管最后求得的这几个电流必然是相等的。从这个电路图中可以看出,电路中共有26个自由度,这就意味着待求解的总自由度增加了26个。下面对电路中的不同元件与电路中不同自由度的关联关系进行简单介绍。图3-17三相正弦电流源供电情况下的电路图[1]
细导线单元是指不考虑涡流反应的绕组区域,用于关联电路和有限元区域,一个绕组单元关联电路中的三个自由度,分别为两端电压V1、V2和绕组电流I12,如图3-18所示。I12表示电流是从1流向2的,在有限元区域中电流可能是垂直于纸面流入或流出,方向用 1或者-1标识。
图3-18 细导线(stranded)单元示意图
粗导体是指考虑其中内部涡流反应的导体单元,它只与两端电压关联,分别为V1和V2如图3-19所示。在有限元区域中电流可能是垂直于纸面流入或流出,方向用 1或者-1标识。
图3-19 粗导体(solid)单元示意图
电流源的电流表示从节点1流向节点2的电流,如图3-20所示。对于电流源来说电流是作为已知量进行输入,与电路关联的电压V1和V2待求解。
电压源的电压表示从节点1相对于节点2的电压,如图3-21所示。对于电压源来说电压是作为已知量进行输入,与电路关联的电压V1和V2以及电流I12待求解。图3-21 电压源示意图
保存电阻单元信息,电阻电路图如图3-22所示,它只与电路中的两个节点电压相关联。绕组的电阻可以直接通过strand中的属性进行设置,无需另外再用电阻单元。这样的电阻单元主要用于模拟电路中串联了。
图3-22 电阻示意图
电感单元如图3-23所示。它与电路中关联的物理量包括电压V1,V2和从1流向2的电流。另外,电感值和电感中的初始电流将作为电感单元的属性。这样的单元多用于模拟电机的端部漏感。图3-23 电感示意图
当前版本的软件仅支持这六种电路元件所构成的电路,通过这六种单元的组合基本上可以满足电机所需的仿真需求,即使是模拟PWM电压供电的计算工况,只需要将PWM电压输入进行电压源进行仿真即可。这就需要在#CS_input和#VS_input中输入随计算步数或者是转子位置变化的电压源信息和电流源信息即可。此外,为了方便计算磁链还增加了#winding_stranded和#winding_solid来表示电机一整个绕组和各个细导线单元区域的关联关系。基于上面的说明,对circuit表单中的内容进行详细解释,如图3-24所示。(a) #Lpnode
(b) #strand, #winding_stranded, #solid, #winding_solid内容
(c) #Res到# VS_input之中的内容
点击“(3)读取TS2D.xlsx转化为txt文件”按钮,如果excel数据准备的完全正确,则等2秒这个按钮会重新弹起,标识转换完成,这时候再点击“New/open”打开当前工作目录,会看到如图3-25所示的情况,相比于图3-12(b)中的内容,多出了近20个txt文件,这些文件就是exe文件需要读取的模型信息。在V1.0版本的软件中用户需要直接修改这些文件来输入模型信息,而在3.0这版软件中,这写txt文件用户就不需输入这些冗长的txt文件了。这些TXT文件的详细说明,被详细放在了第5章。
图3-25执行Excel转txt命令之后在workpath中新生成的文件但是我们仍然将第一版中,查看这些txt的按钮保留,如图3-26所示。按钮的排布格式有了一些改变,另外新增了几个txt文件。txt文件的详细说明,被放在了教程最后。需要说明的是,真正与程序进行交互的是这些txt文件,excel只是相当于便于用户操作加了一层输入层,如果想要更加深入的使用这个软件,用户需要熟悉这些txt文件的内容,程序最后运行读取的是最终workpath里的txt文件。
对于初学者,图3-26中步骤3-7中的按钮无需操作,当txt文件生成之后,切换到“B 电磁计算”界面即可。点击“(1)初始化”按钮,在控制台上会看到节点数,三角单元数等,如图3-27所示。mside和mlink表示在side和link边上的节点数,相等节点数且都是66,一般情况下可说明旋转对称边界被正确施加在了模型上。为了保险起见,建议用gmsh中的Transfinite Line命令将对应边上的点控制的相同。点击“(1)初始化”按钮,对应的底层命令如图3-28所示。第一步将geo文件转换为.msh文件实际上和点击“生成网格”按钮是重复的。Mesh2txt和convertId0是将.msh文件转化为coor0_py, id0_py, elem0_py,disp0_py和band_py文件,如图3-29所示。最后运行con_py_f.exe将_py文件进一步转化成Fortran生成的exe计算文件所需读取的其他无后缀文件。这些文件作为中间文件与exe程序进行交互,他们的详细介绍被放在了第五章6瞬态场计算中间过程无后缀文件说明中。
图3-27 初始化时控制台输出
图3-28 点击“(1)初始化”时底层命令
图3-29 点击初始化后workpath中新增的无后缀文件当初始化没有任何错误时,可以继续点击“开始计算”进行核心计算。如果程序没有错误,对于本案例,计算将在54s后完成(Thinkpad P1),这个问题的计算节点数4837,计算步数120。计算完成后在workpath中会多出一些文件,主要的结果文件如图7-1所示,具体说明我们放在了第7章中。当计算完毕之后,拖动进度条选择需要查看磁力线和磁密的位置,点击“(3) 结果显示”可以看到磁力线和磁密分布如图3-31所示。要得到图3-31中的两个图还需要对gmsh进行一些操作,这个通过截图介绍比较繁琐,会放到视频教程中。
(a) 磁力线
查看完磁密、磁力线之后,需要将gmsh关闭,才能进行其它操作。因为整个程序是单线程的,否则容易死机。依次点击后处理的5个按钮,可以分别输出电压电流、永磁体涡流损耗、转矩、磁链、硅钢片涡流损耗、和硅钢片磁滞损耗。这些文件实际就是将前面的dat文件转化为csv文件,方便在excel中画图。(a) 电压电流
为了帮助工程师朋友和理工科学子理解,并掌握国产通用低频电磁场路耦合仿真软件Simag3.0应用能力,2022年8月18日20时,笔者将在仿真秀官网和APP同步直播《车用扁线电机PWM谐波效应精准快速算法与案例应用》以下是直播安排:
(完)
作者:朱洒博士 河海大学能源与电气学院 仿真秀专栏作者
声明:本文首发仿真秀App,部分图片和内容转自网络,如有不当请联系我们,欢迎分享,禁止私自转载,转载请联系我们。 获赞 9998粉丝 21448文章 3502课程 218