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