Wikis
wiki
FIMMWAVE/FIMMPROP (ver. 6.x)
起動には USB キーが必要
[pukiwiki]
Pythonスクリプト連携の設定(pdPythonLibが対応しているPythonのバージョンに注意)
- PORT 5101につなげるように起動する必要がある。ショートカットをつくり、起動コマンドのところに-pt 5101を追加。(FIMMWAVEマニュアル、11章参照)
- 環境変数 PATH にPython.exeのパスを追加 (コントロールパネルのユーザーアカウント内に、環境変数の変更というメニューがある)
- ;c:\python27 など
- pdPythonLib.py にアクセスできるように環境変数PYTHONPATH を作って、PhotonDのScriptのパスを書く。
- 環境変数の変更を適用するために再ログインが必要?
スクリプトはPython IDLEから起動してもよい。(print文でコンソールに出したデータをコピペできるので便利)
pyzoからも起動できる
Scriptの作り方(基本)
手で行う操作を自動化すると考えるとよい。パラメータは画面に入力するものと対応していることが多い。
- ・Example.py (オリジナルはMMIExample.py)がパイソンのライブラリへのリンクコマンドを含んでいるので、それをコピーしておく
- ・何か作業すると、コマンド窓にコマンド・結果などが表示されるので、それを真似してスクリプトに追加していく。
パラメータは「変数」を使って入れるようにすると間違いが減る。
値を変える時は「変数」のノードだけを変えて行けば良く、実行中に値を表示させておくこともできる。
起動のおまじないは共通
from pdPythonLib import *
fimm = pdApp()
fimm.ConnectToApp()
ノード番号を指定するより、ノード名から見つける方が確実
例:
NodeName="FMF/FMF"
VariablesNodeName="FMF/Variables"
fimm.Exec("Ref& a=app.findnode("+NodeName+")")
fimm.Exec("Ref& v=app.findnode("+VariablesNodeName+")")
サンプル1:屈折率の2次元分布を取り出す = 屈折率分布描画ボタンと同じ
NodeName="LPFG/Fiber-MWG_L"
fimm.Exec("Ref& a=app.findnode("+NodeName+")")
rr=fimm.Exec("a.rixalpha(1,100,100).get()")
rixalpha()のパラメータは屈折率分布を描かせるときにいれるものと同じ
-
・1番目 Nxx,Nyyナドを1から6の数字で指定
・2番目 x方向の点数
・3番目 y方向の点数、
・4~7番目[省略可] 書き出す範囲(上のサンプルでは入れていない)
サンプル2:計算したモードの実効屈折率を取り出す
nef=[]
nModes = 6
for j in range(0,nModes):
x=fimm.Exec("app.subnodes[1].subnodes[1].evlist.list["+repr(j+1)+"].neff")
nef.append(x.real)
TIPS:
FEMソルバの計算結果のAMFファイルへの書き出しは600×600でも10分程度かかるのでbmfで書き出す方がよい。
bmf から amfの変換プログラムは C++のサンプルがある。
あるオブジェクトがもっているコマンドのリストをみるには .helpをつかう
例:app.subnodes[1].subnodes[1].evlist.list[1].modedata.help
メーカーが提供しているもの以外には、pyFIMMやpd_toolsなどがある。