RCWA(Rigorous Coupled-Wave Analysis)は前回記事で内容をざっくり解説しました。今回は、実際に計算できるように環境を作っていきます。
RCWAでググるといろいろライブラリが落ちていますが、オープンソースで有名なのがS4 (Stanford Stratified Structure Solver)というライブラリです。なかなか日本語の情報が少なく、苦戦しましたが、実行環境を用意することができました。特に、公式ページの情報だけだとPython3で環境構築ができず、ドツボにはまりました。。。
S4とは
S4はStanford Straitified Structure Solverの略で、RCWAを用いて層になった周期的構造の電磁場解析を行えるライブラリです。
Lua言語とPythonで扱えます。Lua言語だと十分多くの機能が使えるのですが、Pythonだと(まだ実装されていないのか)機能が制限されるようです。といっても、Pythonのほうが使う人が多いと思うので、Pythonで触ってみて、機能が不十分であればLuaで環境構築してみようと思います。
環境
OS: Ubuntsu-20.04.4 LTS (WSL2 on Windows11)
python: Python 3.7.11 (minicondaで導入しました)
WSL2はWindows Subsystem for Linux 2の略で、Windows上で動作するLinuxの実行環境です。Linuxでしか動かないものをWindowsで使いたい場合に重宝します。インストール方法は、microsoftの公式ページが一番わかり易いです。
pythonはminicondaでインストールしました。anacondaは商用利用ができないらしい。
インストール手順
まず、UbuntsuをWindowsで起動します。
次の手順でS4をインストール。
sudo apt install make git sudo apt-get update sudo apt-get upgrade sudo apt install libopenblas-dev libfftw3-dev libsuitesparse-dev libboost-all-dev git clone https://github.com/phoebe-p/S4.git cd S4 make S4_pyext python setup.py install
git cloneのURLが若干S4公式ページと異なるが、python3系で動くように修正されているものが、こちら(https://github.com/phoebe-p/S4.git)となる。
うまく行けば、エラーメッセージなく終わるはず。
テスト
次を実行してもエラーが起きなければ、問題無し。
python
>>> import S4
>>> S=S4.New(Lattice=((1,0),(0,1)),NumBasis=100)
公式のPython-APIのページの例には「S4.New」ではなく「S4.NewSimulation(,,,)」となっているが、referenceにある通り「S4.New」が正しい。こういう誤植に気づかずに迷宮に入ることがある。
これで、RCWA計算ができる環境が整いました。
次回は、簡単な1次元グレーティングの実装をしてみようと思います。
回折光学のおすすめ本
回折光学素子を学ぶ際にオススメの入門書はこちらの「回折光学素子入門(オプトロニクス社)」です。
コメント