卫 延
(北京交通大学 全光网与现代通信网教育部重点实验室, 北京100044)
“电磁场与电磁波”课程内容抽象,因为电磁场看不见,摸不到,导致学生难以理解电磁场的基本概念与理论。为提高教学质量,有必要引入直观性手段。随着计算机与软件技术的蓬勃发展,基于Matlab、Mathematica等软件的可视化技术在教学中广泛应用,产生了众多清晰的场分布图形和生动的动画,带来了直观性,从而激发了学生学习兴趣,提升了教学效果[1~9]。
电磁场模型繁多,场分布千变万化,目前国内尚无文献对电磁场可视化问题进行系统的分类,并指出各类问题具体的可视化方法手段。根据教学经验,电磁场可视化的问题从内容和方法上可以分为三类。第一类是如何制作示意性的图形和动画,实现方式有多种;第二类是如何表示有解析解或近似解析解的真实电磁场,即制作图形和动画来描述这类电磁场的空间分布和随时间的动态演化,有解析解的电磁场和电磁波通常是课程中最基本的内容,在课程教学中占据重要地位;第三类问题是无解析解的电磁场和波的可视化,在工程中绝大多数电磁场问题没有解析解,所以在实际应用中无解析解的电磁场问题的可视化最常见。
本文针对这三类电磁场可视化问题,详细介绍了相关的可视化技术手段、细节、注意事项和相关软件的应用,并展示可视化实例。
“电磁场与电磁波”课程中的某些内容,比如媒质磁化、介质极化、边界条件、位移电流、稳恒电流、电磁感应等等,在授课时宜用图形和动画表示,可省去大段的语言描述。绘制图形可以用Microsoft Word中的绘图工具,而更好的方式是采用专业的二维绘图工具,比如AutoCAD等软件。绘制同样的图形,AutoCAD比Word定位精准,操作方便快速,并且出图效果更清晰美观。动态物理过程,需要动画来描述。制作示意性的动画常常用到Photoshop软件,动画制作的基本步骤是:先用AutoCAD绘制一系列某参数渐变的图形,然后把这些图形以堆栈方式载入到Photoshop中,再用 “时间轴”工具将这些图形串联起来,存为web所用格式,即可得到相关的gif格式帧动画。图1为用AutoCAD和Photoshop制作的示意性动画,图1(a)表示恒定电流的产生,图1(b)反应媒质的磁化过程。
(a)恒定电流动画 (b)媒质磁化动画 图1 用AutoCAD和Photoshop制作的示意性动画
为防止帧动画在播放时出现抖动,帧数要充足,另外每帧静态图形所表示的区域应该完全相同,即在截取每张图形时,图形的外边框应严格一致。在用AutoCAD绘制这些静态图形时,要给每个图形四周绘制一个统一的定位图框,按照定位图框截取图形,从而保证定位精准。
电磁学中的很多问题解决的前提是对场分布有一定的了解。真实的、准确的场分布图形和场变化动画能带给学生积极、正确的信息,显著提升学生对基本理论、公式和结论的理解,所以准确的场分布图形和场变化动画是可视化的目标,而静态场分布图形是最基本的元素。帧动画正是由一张张静态图合成的,场可视化的第一步就是得到最基础的静态场分布图形。课程中的基本电磁场模型通常有解析结果,可以用Matlab等软件来绘制静态场分布图形。对于电磁场中的标量,如电位,常用Matlab中的contour命令绘制等高线,也可用surf、mesh等命令来描绘电位在某个区域中的分布。
对于电场强度、磁感应强度等矢量,既要表示其数值大小,又要标明其方向。可以用两类图形来描绘矢量场分布,其一是用quiver命令绘制矢量点图,即在要绘制图形的区域中均匀选择一系列点,每个点上绘制一个带箭头的有向线段,线段的长度表示矢量场数值的大小,箭头指向为矢量场在该点的方向;其二是用streamline命令绘制矢量线图(流线图),即通常的电力线图(或磁力线图),电力线上任意一点处的切线方向是该点电场强度的方向,任意点处电力线的疏密程度反映该点电场强度的数值的大小。相比于矢量点图,矢量线图具有整体性,能清楚反映出场分布的全局概况,揭示出场与源的关系,具有深刻的物理意义。在电磁场的可视化过程中,最好采用矢量线图来描述电磁场分布。
用contour、surf、mesh、quiver等4个命令绘制图形,简单直接,基本步骤是先用meshgrid命令定义一个矩阵区域以及其中的众多矩形阵列点,然后用矩阵给这些点赋值,值是这些阵列点上的标量场的值,也可以是矢量场的分量值,再使用这4个命令直接绘图即可。而用streamline命令绘制矢量线图,除了上面的基本步骤外,还需要绘图者有一定的经验和技巧。streamline命令需要根据经验精心选择矢量线的起点,有时还需要分割绘图区域,拼接图形,还要仔细判别绘图结果的正确性,改正某处的错误绘图,保证理论上的正确性。
如图2所示,设在自由空间无限大匀强电场(电场方向为水平方向,从左到右,称之为原场)中放置一个无限长均匀介质圆柱体,圆柱体轴线垂直与电场方向。可以用分离变量法求出电场强度和电位的解析解,从解析解可知圆柱体内的电场是同方向的匀强电场。图2(a)是用contour和quiver命令绘制的圆柱体附近的等位面和电场矢量点图,该图反应出圆柱体外面的匀强电场受到了扰动,并且圆柱体内是一个水平向右的匀强电场,场强小于原场。图2(b)中竖直方向的线仍然是等位面,与图2(a)一致,水平方向的线是用streamline命令直接绘制出来的电力线。该电力线反映出圆柱体内部的电场强度数值大于原场,是错误的,应该去掉几条电力线,变成图2(c),才能正确反应出圆柱体内部的电场强度分布。根据圆柱体内电场强度与原场的比值,可以确定出需要去掉的电力线的条数。图2(c)是修正后的等位面和电力线分布图,电力线箭头通过Matlab图形面板中的箭头工具添加。比较图2(c)与图2(a),显然矢量线图比矢量点图更清晰美观,更有整体性,能更清晰地反应出场和源的关系,电力线在介质圆柱体表面上不连续,是因为介质圆柱体的外表面出现了极化面电荷。用quiver命令绘制的矢量点图虽然粗糙,但结果是正确的,所以将contour命令与streamline命令结合使用是更好的途径。如果矢量线图与矢量点图不一致,就修正矢量线图,矢量点图可作为一个判断矢量线图正误的标准。
(a) 等位面与电场矢量点图 (b)等位面与电力线图(有误)
矢量线的起点需要根据经验精心选择,由于图2中的原场是匀强电场,矢量线的起点选择为区域左边缘上均匀分布的一组点。对于复杂的情况,矢量线起点不容易选择,并且streamline命令绘制的电力线,只能从电位高的点出发,增加了起点选择上的困难。图3是无限长带电平行双线的等位面和电力线图,带箭头的线表示电力线,不带箭头的圆弧形线表示等位面。图3(a)为平行双线横断面上的电力线与等位面分布图,图3(b)为图(a)的旋转后得到的3D图,更生动形象。
(a)横截面分布图 (b)3D分布图 图3 无限长带电平行双线的电力线与等位面分布图
用streamline命令绘制平行双线的电力线时,起点如何选择?如果不存在能画出全部电力线的一组起点,又该如何处理呢?电力线从正电荷出发,终止于负电荷,起点自然选择在左边带正电的线电荷上,但是线电荷的电场强度无限大,具有奇异性,合适的选择是将线电荷变成一个半径很小的圆柱体,其横截面外边缘是个小圆圈,电力线起点选择为小圆圈上一组均匀的点。为什么是均匀的一组点?因为当圆圈半径很小时,距离线电荷很近,远处电荷产生的电场可以忽略,电场主要是线电荷自身产生的辐射状的圆柱对称场,因而在小圆圈上选择均匀的点作为电力线的起点是合理的。如此选择起点后,并不能画出全部的电力线,因为有些电力线从正电荷发出后,穿出了绘图区域,经过了很远的路径,再返回来进入绘图区域终止到负电荷,streamline命令无法绘制这些返程的电力线。所以无法仅设置一组起点来绘制全部的电力线。
通过设置两组点和多组点,可以绘制出全部的电力线,但是会发生电力线交叠、重复等情况,需要大量的图形编辑工作。解决的方法是分成左右两个区域,分别绘制电力线,然后将图形拼接起来。有两种手段处理这个问题,其一是镜像对称法,先绘制左半区域的电力线,再沿着中分面做个镜像,得到右半区域的电力线,拼接后得到全部的电力线,该方法适合于电力线分布镜像对称的情况,并且需要Photoshop软件。其二是先绘制左半区域的电力线,然后将平行双线的电荷设置为左负右正,再绘制右边的电力线,拼接后得到全区域的电力线,该方法在Matlab中即可实现,不需要另外的图形编辑软件。用streamline命令绘制矢量线,对于无法选择一组起点绘制全部矢量线的情形,分割区域、拼接图形是有效的途径。用Matlab绘制带电平行双线的等位面和电力线分布图的主要代码如下:
rho_1=1e-8;%C/m, 电荷线密度
b=2.5;%m, 绘图区域宽度
a=1;%m, 线电荷中心距
h=2.5;%m, 绘图区域高度
delta=0.001;%防止出现奇异值,设置小偏移
M=101;N=101;%绘图区域x、y方向点数
K=9e9;%静电力常数
[x,y]=meshgrid(-b:2*b/(M-1):b,-h:2*h/(N-1):h);
r1=sqrt((x+a/2).^2+y.^2+delta);
r2=sqrt((x-a/2).^2+y.^2+delta);
Phi=2*K*rho_1*log(r2./r1);%电位
figure;contour(x,y,Phi,15);%绘制等位面
hold on;
plot(-a/2,0,'r+','MarkerSize',10);%绘制正电荷标志“+”
axis equal;%令图上x、y方向的单位长度相等
%----下面绘制左半区域电力线------
[x1,y1]=meshgrid(-b:2*b/(M-1):0,-h:2*h/(N-1):h);
r11=sqrt((x1+a/2).^2+y1.^2+delta);
r21=sqrt((x1-a/2).^2+y1.^2+delta);
Phi_1=2*K*rho_1*log(r21./r11);
[Ex1,Ey1]=gradient(-Phi_1);%根据电位求电场强度
aa=0.1;%电力线起点所在圆的半径
KK=1:18;
Max=max(KK);
xx1=[-a/2+aa*cos(2*pi/Max.*KK)];%电力线起点x坐标
yy1=[aa*sin(2*pi/Max.*KK)];%电力线起点y坐标
streamline(x1,y1,Ex1,Ey1,xx1,yy1);%绘制左半区域电力线
%----下面绘制右半区域电力线------
[x2,y2]=meshgrid(0:2*b/(M-1):b,-h:2*h/(N-1):h);
r12=sqrt((x2+a/2).^2+y2.^2+delta);
r22=sqrt((x2-a/2).^2+y2.^2+delta);
Phi_2=2*K*rho_1*log(r22./r12);
[Ex2,Ey2]=gradient(Phi_2);%电场取相反数,绘图方便
xx2=[a/2+aa*cos(pi-(2*pi/Max.*KK))];
yy2=[aa*sin(pi-(2*pi/Max.*KK))];
streamline(x2,y2,Ex2,Ey2,xx2,yy2);
无解析解的电磁场模型的可视化,需要借助电磁场分析软件求出数值解,如HFSS,Comsol,Ansoft等等,然后根据计算出的数值解来绘制电磁场分布图形。其中Comsol软件计算可靠,出图清晰,既能输出静态图,又能输出avi和gif格式的动画,是电磁场可视化的一种理想工具。
使用Comsol计算电磁场模型,遵循有限元方法的基本步骤。首先定义求解区域,选择正确的电磁模组(电磁场方程),选取准确的材料参数,设置正确的边界条件,划分合适的网格,然后计算出结果,再经过后处理步骤得到各物理量(标量场或矢量场的分量)在网格节点的数值。
根据可靠的数值计算结果绘制电磁场分布图形,制作可视化所需的图形和动画,要注意两点。首先要搞清楚计算模型中最基本、最重要、最有意义的物理量有哪些,这些基本物理量的有关图形即可作为可视化的结果。其次,直接绘制的三维电磁场分布图形比较复杂和混乱,而二维图形比三维图形更能清晰、直观地反映出电磁场的变化规律。所以绘制图形时,要注意选取某个合适截面上的某个合适的物理量。
图4(a)是用Comsol软件绘制的某电偶极子天线远场方向图,是轴对称的,跟解析结果是一致的。
图4(b)是以偶极子天线为轴线的子午面(偶极子天线所在的一个剖面)上电场强度矢量点图,由于偶极子天线的电磁场空间分布具有轴对称性(以偶极子天线为轴),该图能清晰反应出电场强度的空间分布特性。
图4(c)是电偶极子天线中垂面上电场强度的幅度分布图,说明空间电场分布是轴对称且向远处震荡减弱的。
用Comsol软件制作动画,要选择某个合适的参数,它的变化能反映计算模型中电磁场的变化规律。(卫 延文)
(a)方向图 (b)子午面电场强度分布图
比如频率或相位,在Comsol建模后,将频率或相位定义成一个渐变的参数,从某个初值变化到终值,进行扫描计算,根据这个扫描计算的结果,使用Comsol软件可以直接生成动画。以图4(b)(c)为例,选择相位为渐变参数,从0变化到2π,进行扫面计算后,可以输出电磁场分布随时间变化的动画。
本文对电磁场与电磁波的可视化工作进行了分类,并指出了各类可视化图形和动画的制作方法、应用软件和注意事项,还详细说明了用streamline命令绘制矢量线图的方法和技巧,对电磁场相关课程的可视化工作具有指导作用,对电磁场可视化技术的发展也具有重要参考意义。