第4章 有限元法简介
Ansoft Maxwell软件所用的算法是有限元法,该方法是当前应用最广泛的数值解法。有限元方法具有通用性强、使用范围广等优点。但有限元方法的计算精度取决于剖分单元的大小与单元的分布,单元数量越多一般计算精度越高。 4.1 有限元法基本原理
有限元法是以变分原理和近似插值离散为基础的一种数值计算方法。该方法首先利用变分原理把所要求解的边值问题转化为相应的变分问题,也就是泛函极值问题,然后利用对场域的网格剖分离散和在单元上对场函数的插值近似,将变分问题转化为普通多元函数的极值问题,最终归结为一个代数方程组,解之即得待求边值问题的数值解。
对于计算静电场问题的泊松方程:
???2???
在场域为?时,它的等价泛函为
I(?)???? (1)
??2??d???????d?
?2 (2)
即,使得该泛函取得极值的函数必满足方程(1)。因此,求解方程(1)的问题转化成了求解式(2)所示的泛函的极值问题。
若将场域?离散化,即划分为许多个小体积(单元),且在每个单元内将电位的分布近似看作是线性变化的,即单元内各点的电位由该单元各顶点电位线性表示,由此,式(2)中对场域?的积分可以变为在个单元上的积分之和,而在各单元上的积分由于给出了电位函数的近似表达式,则相关积分可以求出,从而式(2)可以变为一个不存在积可的一个多元函数,即
I(?)?????e?1m??2??d????????d??[?]T[S][?]?[?]T[G]
e?1?2m (3)
其中S、G为已知系数矩阵。为使函数I(?)取的极值,即求出式(2)所示的泛函的变分问题,仅需使得式(3)所示的多元函数对每个自变量的导数为零,即
?I/??i?0(i?1,2,?,n),从而可得到一个以单元节点上电位为未知量的方程组,其矩阵形式为:
[K][?]?[G]
(4)
求解该代数方程组,即可得到各节点的电位值,进而可以通过节点电位求得单元的电场强度。这就是有限元法的理论基础。
24
4.2 有限元网格自适应剖分方法
实现有限元方法包括以下几个主要步骤:找出与边值问题对应的泛函及其等价变分问题,将连续场域离散成网格单元(即网格剖分),在单元上将未知的连续函数近似表示为一个已知函数(如线性或二次函数),求泛函的极值,形成有限元方程组,求解方程组,结果显示和求解其它场量等后处理问题。
在以上各步骤中,网格剖分是最关键的步骤,它不仅决定了有限元法解决问题的能力,也决定了软件的计算精度。一个软件若没有高性能的前处理程序就不可能有通用性强的计算软件。而软件的前处理程序主要是网格自动剖分模块。网格自动剖分程序是通用软件的基础。
为了得到较精确的计算结果,单元的大小与单元的疏密分布要合理,合理的网格需要在网格自动剖分程序所生成的初步网格基础上,由网格细分环节来得到。自适应网格细分是不依赖于用户的经验,单靠软件自身来完成网格合理细分的一种软件技术。
目前,有限元网格剖分算法已趋于成熟和完善,已有的软件可以处理较复杂的场域。 自适应软件体现在程序本身能够自行判断何处的单元需要细分,细分到何种程度,最后能产生一个合理的网格,在此网格基础上主体计算程序能够给出较精确的计算结果。网格细分的目标是使网格分布自动适应于场域结构或场量分布,使场域中的每个单元都能给出几乎相同的计算精度。自适应软件可以得到过去那种靠人的经验来指定单元疏密分布方法所不能得到的计算精度,并且能够以较少单元个数得到较高的计算精度。自适应软件是一个网格加密与场量计算循环进行的过程。其循环步骤如图1所示。
实现自适应软件的关键问题是误差分析。但对于一种数值计算方法,要给出在一定网格分布情况下所得到的数值近似解的确切误差,一般是很困难的。然而,在实现自适应软件时,可以不需要确切的误差分析表达式,而是寻找一种误差判据,该判据容易求解,并能定性描述近似解的计算精度即可。
有限元求解方法是用分块连续的函数来近似表达整体区域连续的函数。这种近似将会产生计算误差。也就是说,用有限元方法求解一个场域中的连续变量,所得到的结果可能是不连续的。基于这一性质,可采用近似解在相临单元界面上的不连续程度作为单元的误差判据。很明显,单元之间这种不连续程度越大,则表明近似解的真正误差也越大。利用这种不连续程度所定义的误差判据容易实现,并且能够有效的控制网格细分的实施。
在静电场求解中,如果以电位函数为求解变量,则解的近似表达式可以保证电位在单元界面上的连续性,也可以满足场强在单元界面上的切向分量的连续,但却不能满足电位移在单元界面上法向分量的连续。因此,单元上的误差判据可用电位移在单元界面上的法向分量的不连续程度来定义。
在恒定磁场求解中,如果以矢量磁位为求解变量,则近似解可以保证磁感应强度在单元界面上的法向分量的连续性,但却不能满足磁场强度在单元界面上切向分量的
25
连续。因此,单元上的误差判据可用磁场强度在单元界面上的切向分量的不连续程度来定义。
根据一定的误差判据定义得到每个单元上的误差值以后,便可以将这个误差值与一个指定的基准值进行比较,如果误差值大于基准值则对这个单元进行细分,否则,在此次自适应循环中该单元保持不变。为了提高自适应循环过程的收敛速度,必须由程序自动选定一个合适的基准值。图2为一个自适应剖分实例,从图中可以看出,网格单元分布与场分布的匹配性。
场域信息输入开端网格生成场量计算误差分析是精度满足要求?否网格自动细分后处理
图1:自适应软件结构。
(a) (b)
图2(a):自适应细分网格结果 图2(b):等位线分布
26
一、模型建立
Draw模块中各个选项介绍。 File就不用多说了。 Edit
Attribute 用来改变已经建立模型的属性。主要有名称、颜色。 Visibility 用来改变模型是否显示出来。 View
setup grid 用来设置坐标系,工作平面的大小,以及工作平面中鼠标可选择的最小距离。这对有时候直接用鼠标建图形比较有用。
Coordinates 设置坐标系,可以将坐标系原点移到到当前选取的点的位置。还可以旋转坐标系。在取截面或者局部由面旋转成体的时候比较有用
Lines 生成线。如果生成的线闭合,则Covered选项可选,选择后生成以闭合线为边界的面。 Surface 用来生成面。
Cover Lines 由闭合的线生成面 Uncover Face 由面得到外边界的线。
Detach Face 将一部分面由整个面中分离出来。 Move Face 将面沿法线方向或者沿一个矢量方向移动。
Section 对一个体或者面取截面,用xy、yz或者xy截面去切体或者面,得到一个闭合的曲线
Connect 得到以所选两条曲线为两端的一个柱面(长方体的侧面或者其他不规则的面)。 Sitch 将两个面粘合成一个面
如果操作过程中提示你操作会失去原来的面或者线的时候,不妨把面或者线先copy,操作了之后再paste就好。 Solid 用来生成体。
第一栏用来直接生成一些规则的体。Sweep是通过旋转、拉伸面模型得到体。
第二栏是对体进行一些布尔操作,如加减等。Split是将一个体沿一个面(xy、yz、xz)劈开成两部分,可以选择要保留的部分。在减操作时,如有必要,还是先copy一下被减模型。 第三栏cover surface是通过闭合的曲面生成体。
Arrange 选取模型组件后,对模型组件进行移动、旋转、镜像(不保存原模型)、缩放等操作。
Options 用来进行一些基本的设置。单位的转换,检查两个体是否有重叠(保存的时候会自动检查)、设置background大小、定义公式以及设置颜色。
Maxwell的前处理相对比较弱,不知道它有没有相关的专门做前处理的软件。不过虽然麻烦,但只要有耐性,一般的模型都能够建立出来的。
27
导入模型我成功的导入过.stp文件。从ansys中可以导出.iges格式的文件,然后通过workbench转换为.stp文件。建模的时候要注意模型的拓补结构,比如说在Ansys中建一个平面模型的,由线生成面的时候,选线的方向要一致,否则导入的时候模型会出错。拓补结构的错误可以通过workbench检查出来。具体的方法我也不是很清楚,当时是别人帮我做的。至于用AutoCAD建模然后用Maxwell自带的工具转换,可能我没有找对方法,没有成功过。
还有一点就是导入的时候没有容错度的设置,导致本来坐标为整数的模型导入后坐标有误差。 二、 材料设置
相对比较简单,Maxwell材料库自带了一些常用的材料,如果没有可以自己新建一个材料。Material—〉Add,输入文件名,及相关的参数即可。如果BH曲线是非线性的,就,在B-H Nonlinear Material 前面打勾,就会有自己输入BH曲线的选项,自己输入就好。但是要注意BH曲线是单调递增的。
新建的材料还可以设置为理想导体和各向异性的材料。 三、 边界条件/激励的设置
边界条件在3D模型中用的相对比较少,因为模型外层可以设置为真空区域,边界条件可以自动给出,如果是对称模型就可以设置相关的边界条件了。我曾经做一个轴对称模型,相用模型的1/4计算,不过边界条件设置没有设对,可以自己摸索一下。
关于激励的设置,在加载电流的时候,最重要的一点是要将模型建立成一个回路。否则的话无法得到正确的结果。在回路中加电源的位置建一个截面,在截面上加载就好,注意截面要是平面,不能为曲面。
在进行瞬态分析的时候,Model—〉set eddy effect处设置有涡流效应的导体,处于有源回路上的导体不能设置涡流效应。瞬态分析激励设置时,先将加载的面设置为Source :coil Terminal。然后在Model—〉Winding Setup中设置。一般是Function 里面,先定义一个Dataset,第一项为时间,第二项为对应的激励值。然后用一个常量外推函数得到所要的值,格式为source_name=pwlx(T,constant,dataset_name).在设置激励的地方填上source_name就好。 四、 求解量设置
可以设置求解力、力矩、电感、Core loss的部件。比如在设置求解力的时候可以先取一个组件名,然后选中该组件包含的导体。力的求解选项中可以设置求解洛仑兹力和虚功力两种。在一般条件下,两者的误差很小,但是在饱含铁区的模型中,用洛仑兹力求解会有很大的误差。 五、 求解设置
Option 里面设置一般的求解选项。一般选用默认值就好了。只是在进行瞬态分析的时候,建议先用同一个模型进行静态分析,然后将网格数据,所有以fileset1和fileset2命名的文件拷贝到瞬态分析的工程目录下面,将Starting Mesh设置成Current。这时候进行瞬态分析的时候采用的就是静态分析时候的网格,求解精度比较高。因为瞬态分析中,默认的网格仅进行一次简单的划分,而且没有能量误差的判断,所以求解的精度不能保证,但是这种设置有时候可能一次成功不了,可以多试几次,计算了一步,然后停下来,看看网格划分,如果是采用静态的网格划分,则继续,
28