シミュレーションの実行
MEEPでは、sim = mp.Simulation()でシミュレーションを設定した後、 sim.run()でシミュレーションを実行できる。
シミュレーションの設定:mp.Simulation()
シミュレーションを設定する。 後のためsim = mp.Simulation(,,,)のようにオブジェクトを保持しておく。
cell_size=***
計算領域の大きさをmp.Vector3(x, y, z)で指定する。単位はμm。
resolution=***
空間分解能を指定する。単位はpixel/μm。
boundary_layers=***
境界条件を指定する。境界条件を参照。
dimensions=***
次元を指定する。初期値は3。3次元の直交座標系を表す。
geometry=[***]
物体のリストを指定する。物体を参照。
sources=[***]
光源のリストを指定する。光源を参照。
symmetries=[***]
対称性のリストを指定する。対称性を参照。
測定系を追加:sim.add_flux(fcen, df, nfreq, flux-regions)
simに指定されたシミュレーションへ測定系を追加する。
fcen
周波数中心を指定する。単位は1/μm。
df
周波数幅を指定する。単位は1/μm。
nfreq
周波数分解能を指定する。周波数幅を何分割するか。
flux-regions
測定系を指定する。
測定系:mp.FluxRegion(center=***, size=***, weight=***)
center - 測定系の中心座標をmp.Vector3(x, y, z)で指定する。
size - 測定系の大きさをmp.Vector3(x, y, z)で指定する。
weight - 測定の倍率を実数で指定する。初期値は1。
シミュレーションの実行:sim.run()
simに指定されたシミュレーションを実行する。
mp.at_beginning()
開始時に括弧内を実行する。
mp.during_sources()
光源が切れるまで括弧内を実行する。
mp.at_end()
終了時に括弧内を実行する。
mp.output_epsilon
比誘電率を出力する。
mp.output_mu
比透磁率を出力する。
mp.output_efield_y
電場efieldや磁場hfield、変位bfield、ポインティングベクトルsfieldのx、y、x 成分のいずれかを出力する。
(mp.harminv_freq)
周波数を返す。
(mp.harminv_Q)
Q値を返す。
until_after_sources=100
すべての光源がOFFになった後、MEEP単位の100時間後。
例えば
sim.run(
mp.in_volume(
mp.Volume(center=mp.Vector3(0, 0, 0),
size=mp.Vector3(5.00, 4.50, 0)),
mp.at_end(mp.output_epsilon, mp.output_efield_y)
),
mp.after_sources(mp.Harminv(mp.Ey, mp.Vector3(), 0.25, 0.2)),
until_after_sources=100
)
例えばこの場合、mp.in_volume()で出力の範囲を限定し、 限定範囲は中心(0,0,0)、大きさ(5.0, 4.5, 0)μmの平面で、 シミュレーションの終了時にその範囲における比誘電率と電場のY成分を出力している。 また、光源がOFFになったときに、mp.Harminv()で座標(0,0,0)における電場のY成分の 周波数中心0.25、幅0.2を解析している。 そして、光源がOFFになった後、時間が100経過すると終了する。