本項では、Meepを利用して電磁界・透過/反射スペクトル・共振モードを計算する手順を簡単な例をもとに説明します。
掲載されている例は全て2次元での計算であり、これは単に3次元よりも計算が早く要点のほとんどを実証してくれるからですが、もちろん3次元においても同様の計算が可能です。
本チュートリアルではSchemeスクリプトインターフェース"libctl"を利用しており、実用においてもほとんどの場合はこれを利用することになると考えられます。
また拡張性のためにC++インターフェースも用意されていますが、これについては
C++のチュートリアルを参照してください。
Meepによって出力される電磁界などの情報を持ったHDF5ファイルを画像ファイルに変換するにあたり、本チュートリアルではフリーソフトの
h5utilsを利用しています。
(MatlabなどHDF5形式をサポートしたソフトであれば何でも構いません)
ctlファイル
Meepの運用では、.ctl拡張子で表現されるような(実際には自由なファイル名が許可されます)、コントロールファイル、略してctlファイルを中心的に扱います。
ctlファイルは研究したい幾何構造・光源・計算出力、その他計算条件を明確に記述しています。
ctlファイルは浅く柔軟性に乏しい形式ではなく、実際にはスクリプト言語で記述されています。
すなわち、幾何構造その他を記述した単純な命令の連続から、ユーザー入力やループおよび一切の必要とするものを備えた本格的なプログラムに至るまでを扱うことが可能です。
しかしながら心配する必要はありません。
単純なことは単純に記述できますし(本格的なプログラマである必要はありません)、スクリプト言語が提供する柔軟性に感謝するようになるでしょう。
(たとえば、任意の順序での入力、空白文字の自由な取扱い、コメントの挿入、デフォルト値の利用などがサポートされています)
実際には、ctlファイルはlibctlライブラリ上で実装されており、さらにそれはScheme言語上で実装されています。
従って、ctlファイル中において利用できる命令・構文は3種類の由来が存在します。
- Scheme言語…MITで開発され、特に単純な構文を持った、強力で美しいプログラミング言語です。
すべての宣言は"(function arguments...)"の形式で記述されます。
MeepにおいてSchemeはGNU Guileインタラプタ(スクリプト・拡張言語であるプログラムへのリンクのために制作されました)で実行されます。
標準的なctlファイルを扱う分にはSchemeの知識はさほど必要ではありませんが、利用したい場合であればいつでも使うことができます。
より詳しくはGuileおよびSchemeへのリンクを参照してください。
- libctlライブラリ…Schemeとコンピュータソフト間の対話を簡単にするために私たちが開発したライブラリで、Guile上で実装されています。
libctlはインターフェースの標準的な語調を設定し、(多変数最適化や数値積分といった)便利な関数を多く定義しています。
libctlマニュアルも合わせて参照してください。
- Meep本体…FDTD法に必要なあらゆるインターフェースを定義しています。
本マニュアルは主にこれについて特集しています。
ここで、Meepに取り掛かる前に、インターフェースの標準的な形式の感触をつかむために
libctlチュートリアルを少し覘いてみましょう。
(
MPBを使ったことがあるならもはやなじみの内容でしょうが、様々な計算に対応しているためにMeepはもう少し複雑となっています)
それではチュートリアルを続けましょう。
Meepプログラムはふつう後述のようなUnixコマンドラインで実行されます。
(unix%はプロンプト上のコマンドであることを表します)
unix% meep foo.ctl >& foo.out |
これは、foo.ctlファイルを読み込んで実行し、foo.outファイルに出力することを意味します。
引数なしでmeepコマンドを実行した場合は、コマンドを打ち込んで即座に結果が得られる対話モードに移行します。
これをすることで、本チュートリアルの内容をペーストしてその意味を知ることができます。
導波路中の電磁界
直線導波路
90°曲げ
出力のヒント・小技
曲げ導波路の透過スペクトル
リング共振器のモード
対称性の活用
その他の例
エディタおよびctl
最終更新:2013年11月15日 16:50