我想画出共面波导的电场线和磁场线。类似于图 (b)图像。我想用 TikZ 画这个。我可以通过某种方式破解一些看起来或多或少像它的丑陋代码。但是,我想创建一个完美的图像。
让我来解释一下对我来说最大的问题:波导由内导体和另外两个导体组成。电场线从内导体到外导体呈椭圆曲线。磁场线在内导体周围形成椭圆。主要方面,在许多图像中经常显示错误,是电场线和磁场线总是垂直相交。如您在上图中所见,它看起来不错,但线条并不垂直。
我可以以某种方式绘制一些弯曲曲线并调整参数直到看起来不错。但我想要一个干净的解决方案,以真正垂直的方式绘制这些线。我试图找出一些角度保持变换(莫比乌斯变换?),将网格映射到椭圆/双曲曲线上。但我在这方面的数学技能早已消失。
我希望有一个人可以帮助我。
编辑:电场线也应该垂直于导体的表面。
答案1
正如评论中所说,这些场线的问题可以在静态静电和磁场二维场的等势线中重现。下面是使用包绘制场线的代码pgfplots
(基于 PFG/TikZ),以及绘制“轮廓线”的功能,通过外部调用gnuplot
。
gnuplot
由于字段是使用可以处理但不能处理的复数获得的pgfplots
,因此我不得不求助于选项raw gnuplot
,如文档pgfplots
和这个问题。
有一份文档解释了这些字段的派生这里
\begin{tikzpicture}
% geometrical parameters
\def\ai{1}
\def\bi{1.5}
\def\bii{6.}
% raw gnuplot setup
\def\gnuplotcommon{
set contour base;
set cntrparam cubicspline;
unset surface;
set key off;
set view map;
set isosamples 50;
ii={0,1};
FF(x,y)=((x)+ii*y)*(log((x)+ii*y)-1);
FFF(x,y)=(FF(x-\ai,y)-FF(x+\ai,y))-(\ai/(\bii-\bi))*
((FF(x-\bii,y)-FF(x-\bi,y))+(FF(x+\bi,y)-FF(x+\bii,y)));
}
\begin{axis}[
no markers, axis on top, tick label style={font=\small},
minor y tick num=1, minor x tick num=1,
y label style={at={(axis description cs:-0.05,.5)},rotate=-90,anchor=south},
xlabel={$x$}, ylabel={$y$},
xmin=-10, xmax=10, ymin=-10, ymax=10,
width=10cm, height=10cm,
point meta=10,empty line = jump
]%
% magnetic field
\addplot[contour prepared,raw gnuplot, thick, contour/draw color=red,contour/labels=false]
gnuplot {%
\gnuplotcommon
set cntrparam levels discrete 3.8,3.4,3,2.6,2.2,1.9,1.7,1.4,1.2,1,
0.8,0.6,0.4,0.5,0.2,0,-0.2,-0.4,-0.6,-0.8;
splot[-10:10][-10:10] real(FFF(x,y));
};
% electric field 1/2 top
\addplot[contour prepared,raw gnuplot, thick, contour/draw color=blue,contour/labels=false]
gnuplot {%
\gnuplotcommon
set cntrparam levels discrete -2.5,-2.25,-2,-1.75,-1.5,-1.25,-1,-0.75,-0.5,-0.25,-0.1,0,
0,0.1,0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5;
splot[-10:10][0.01:10] imag(FFF(x,y));
};
% electric field 1/2 bottom
\addplot[contour prepared,raw gnuplot, thick, contour/draw color=blue,contour/labels=false]
gnuplot {%
\gnuplotcommon
set cntrparam levels discrete -2.5,-2.25,-2,-1.75,-1.5,-1.25,-1,-0.75,-0.5,-0.25,-0.1,0,0,
0.1,0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5;
splot[-10:10][-10:-0.01] imag(FFF(x,y));
};
% conductors
\addplot[mark=none, black, ultra thick] coordinates {(-\ai,0) (\ai,0)};
\addplot[mark=none, black, ultra thick] coordinates {(-\bii,0) (-\bi,0)};
\addplot[mark=none, black, ultra thick] coordinates {(\bi,0) (\bii,0)};
\end{axis}
\end{tikzpicture}
结果是:
注意:
- 正确渲染大面积区域需要非常高的采样率(
set isosamples 50;
),从而产生大量pdflatex
无法开箱即用的数据(尽管三者之一\addplot
可以毫无困难地编译)。因此,必须使用选项编译此文件lualatex
,-enable-write18
或者pdflatex
在扩展后使用,如上所述这一页。 - 我把(红色)电场图分成两部分,以避免在导体附近绘制非常高密度的等高线。
- 可以修改下面的几何参数
\begin{tikzpicture}
来调整条带的宽度。 - 编辑2:在某些点上,(蓝色)电场线相对于导体的正交性不被尊重。这是由于所采用的建模中厚度吨被忽略了,使得得到的公式在短距离上无效(由于结果的形式相当简单,可以用一种相当简单的方法解决这个问题)。从物理角度来说,设置吨=0 使得导线内部的线的曲率趋于无穷大。
编辑1:这是场计算和 TikZ 代码中的一个小不一致。现在已在支持文档、代码gnuplot
和图片中进行了更正。旧图片看起来很奇怪,因为场在很远的距离下看起来一定像四极体。
同时,为了获得更有趣的模式,我们指定了等势能级。这些能级略微取决于所选的几何参数,必须针对不同的几何形状进行修改,或者set cntrparam levels discrete ....;
可以用以下方式替换这些线:set cntrparam levels auto 20;
编辑3:我刚刚意识到我的回答并没有真正解决 OP 问题,因为它没有考虑到基板的(通常很大的)介电常数。可以使用图像方法(因为问题被转化为静电问题)来解决这个问题。这还需要释放假设 $t$ 可忽略不计,这在支持 PDF 中执行的问题分析中并不困难,同时保持完全相同的方法。我可能会在接下来的几周内更新它以及 tikz+gnuplot 代码。