【RCWAプログラム編-1】PythonでRCWAができる!無料ライブラリー「S4」のWindowsへのインストール

科学

RCWA(Rigorous Coupled-Wave Analysis)は前回記事で内容をざっくり解説しました。今回は、実際に計算できるように環境を作っていきます。

RCWAでググるといろいろライブラリが落ちていますが、オープンソースで有名なのがS4 (Stanford Stratified Structure Solver)というライブラリです。なかなか日本語の情報が少なく、苦戦しましたが、実行環境を用意することができました。特に、公式ページの情報だけだとPython3で環境構築ができず、ドツボにはまりました。。。

S4とは

S4はStanford Straitified Structure Solverの略で、RCWAを用いて層になった周期的構造の電磁場解析を行えるライブラリです。

Introduction to S4 — S4 1.1 documentation
RCWA, Rigorous Coupled Wave Analysis

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で起動します。

ububtsuを起動。

次の手順で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)となる。

Problem with Python shared object · Issue #61 · victorliu/S4
Hi! I am running Arch linux, and am following the instructions to compile and install the python extension of S4. I clon...

うまく行けば、エラーメッセージなく終わるはず。

テスト

次を実行してもエラーが起きなければ、問題無し。

python 
>>> import S4
>>> S=S4.New(Lattice=((1,0),(0,1)),NumBasis=100)

公式のPython-APIのページの例には「S4.New」ではなく「S4.NewSimulation(,,,)」となっているが、referenceにある通り「S4.New」が正しい。こういう誤植に気づかずに迷宮に入ることがある。

これで、RCWA計算ができる環境が整いました。
次回は、簡単な1次元グレーティングの実装をしてみようと思います。

回折光学のおすすめ本

回折光学素子を学ぶ際にオススメの入門書はこちらの「回折光学素子入門(オプトロニクス社)」です。




コメント