コピペコード
Windowsで使うMEEP入門

シミュレーションの実行

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経過すると終了する。