メインコンテンツまでスキップ

方形パッチアンテナの電磁界解析

本例では、波動シリーズの高周波電磁界解析モジュールを使用して、方形パッチアンテナの入力反射係数(S11)の周波数特性を求めます [1,2]。

解析に必要なメッシュは、別の Jupyter Notebook で Gmsh を使用して作成します。作成したメッシュを波動シリーズに読み込み、材料特性や境界条件を設定して電磁界解析を行います。

波動シリーズでは、Python からメッシュの読み込み、材料・境界条件の設定、有限要素法(FEM)による電磁界解析、結果の可視化までを一貫して実行できます。

本例では、以下の手順でアンテナの反射特性を評価します。

  1. Gmsh によるアンテナ形状の作成とメッシュ生成
  2. 波動シリーズへの解析メッシュの読み込み
  3. 材料特性と境界条件の設定
  4. 周波数掃引による電磁界解析
  5. Sパラメータの可視化

解析ファイルのダウンロード​

この例題で使用するメッシュ作成用と電磁界解析用の Jupyter Notebook を、以下の ZIP ファイルからダウンロードできます。

例題ファイル一式(ZIP)

ZIP ファイルを展開した後、まずメッシュ作成用の Notebook を実行してください。解析に必要な patchAntenna.msh が生成されます。その後、電磁界解析用の Notebook を実行して、アンテナの反射特性を求めます。

ライブラリのインポート​

はじめに、解析に必要なPythonライブラリをインポートします。

波動シリーズのhadoパッケージから、材料特性、境界条件、高周波電磁界解析およびメッシュを扱うモジュールを読み込みます。また、解析周波数の設定にはNumPyを使用します。

from hado import boundary, material, highfrequency, mesh
import numpy as np

解析パラメータの定義​

周波数、材料特性および給電ポートの寸法を設定します。

freq = np.linspace(2.2e9,2.7e9,21)

epsilon_r_air = 1.0
loss_tangent_air = 0.0
epsilon_r_fr4 = 4.3
loss_tangent_fr4 = 0.015

port_width = 2.5e-3
port_height = 1.53e-3

メッシュの読み込み​

はじめに、解析対象となる方形パッチアンテナのメッシュを読み込みます。

本例では、あらかじめ作成したGmsh形式(.msh)のメッシュファイルを使用します。メッシュには、誘電体基板や周囲の空気領域などの解析領域と、導体面や給電部などの境界面が定義されています。

波動シリーズでは、メッシュに設定された領域ID(Domain ID)と境界ID(Boundary ID)を使用して、材料特性および境界条件を割り当てます。

em = highfrequency.HighFrequency()
em.mesh = mesh.Mesh("patchAntenna.msh")
em.mesh
Mesh
filename : patchAntenna.msh
points : [[ 3.55000000e-03 0.00000000e+00 0.00000000e+00]
[ 6.05000000e-03 0.00000000e+00 0.00000000e+00]
[ 6.05000000e-03 1.69864123e-19 1.53000000e-03]
...
[ 2.96510797e-02 -6.94339630e-03 1.61560441e-02]
[-3.03561369e-02 2.43927938e-02 9.07869439e-03]
[-1.46442333e-03 -3.08660069e-02 2.42498132e-02]]
elements : [[ 534 28 27 918]
[ 51 52 742 671]
[ 41 726 42 352]
...
[1652 272 183 172]
[ 272 1652 2015 1902]
[1652 272 2015 183]]
boundary_elements : [[ 3 2 333]
[ 2 3 345]
[ 308 342 2]
...
[1208 1159 1207]
[1160 1164 1191]
[1197 1194 1169]]
domain : [1 2]
boundary : [1 2 3]

材料・境界条件の設定​

アンテナを構成する誘電体材料と、電磁界解析に必要な境界条件を設定します。

材料特性​

誘電体基板にはFR4、周囲の解析領域には空気を割り当てます。それぞれの材料について、比誘電率(epsilon_r)と誘電正接(loss_tangent)を指定します。

材料 比誘電率 誘電正接 領域ID
FR4 4.3 0.015 1
空気 1.0 0.0 2
air = material.Dielectric(
name="Air",
epsilon_r=epsilon_r_air,
loss_tangent=loss_tangent_air
)
fr4 = material.Dielectric(
name="FR4",
epsilon_r=epsilon_r_fr4,
loss_tangent=loss_tangent_fr4
)
em.assign_material(fr4,domain=1)
em.assign_material(air,domain=2)

境界条件​

本例では、以下の3種類の境界条件を使用します。

  • 完全電気導体(PEC):パッチおよび接地導体などの金属面を、導体損失のない完全電気導体としてモデル化します。
  • 吸収境界条件(ABC):解析領域の外側に設定し、アンテナから放射された電磁波の人工的な反射を低減します。
  • 集中給電ポート(Lumped Port):アンテナの給電部に設け、励振電圧と基準インピーダンスを指定します。

給電ポートには、電圧1 V、基準インピーダンス50 Ωを設定します。また、ポートの寸法、電圧方向および電力伝搬方向を指定します。

abc = boundary.Absorbing(2)
pec = boundary.PEC(1)
port = boundary.LumpedPort(3)
port.width = port_width
port.height = port_height
port.voltage_direction = [0.0, 0.0, 1.0]
port.power_flow_direction = "-y"
port.voltage = 1.0
port.impedance = complex(50.0, 0.0)
em.boundary = [abc, pec, port]

最後に、em.show()を使用して解析モデルを可視化します。

em.show()

有限要素法による電磁界解析​

em.solve()を実行すると、設定した材料特性、境界条件および励振条件に基づいて解析が行われ、結果がSolutionオブジェクトに格納されます。

em.frequency = freq
sol = em.solve()

Sパラメータの可視化​

解析結果からSパラメータを取得し、入力反射係数(S11)の周波数特性を表示します。

sol.s_parameters()でSパラメータを取得し、plot()で周波数特性を可視化します。

得られた結果から、アンテナの共振周波数付近における反射特性を確認できます。

freq = sol.frequency
sparam = sol.s_parameters()
sparam.plot()

参考文献​

[1] 電子情報通信学会 エレクトロニクスシミュレーション研究会, 「方形パッチアンテナ(プローブ給電)」, 電磁界シミュレーション規範問題.

[2] 平野 拓一, 岡部 寛, 大貫 進一郎, 「電磁界シミュレーション規範問題 ― コネクタを含む励振部のモデル化 ―」, 2014 Microwave Workshops & Exhibition (MWE 2014), ワークショップ07, 2014年12月11日.