Wikis

wiki

FIMMWAVE/FIMMPROP (ver. 6.x)

Wikis > 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などがある。