いろいろシミュレーションシリーズ(TEMセル)
こんなん見てくれる人も少ないでしょうけど。。あくまで自分の忘備録です。
TEMセル(電磁界を印加したり、測ったりするアンテナみたいなやつです)のシミュレーションしたいな。。って思ってて。。ふと検索かけたら。。OpenEMSのフォーラムで、こういうの見つけました。
TEM セルが収束しない なるほど。。これやってみるか?(笑) 収束しないみたいだけど。。ホーンとかも計算できてるので、なんとかできないかな?なんて。。
で、Zipファイルをみると、STLを読み込むところがあって、そこのディレクトリだけ変更すれば、計算は始めるみたいです。
CSX = AddMetal( CSX, 'gnd' ); % create a perfect electric conductor (PEC) CSX = ImportSTL(CSX, 'gnd', 10, 'C:/Users/xxx/Downloads/temcell/TemHull2.stl' , 'Transform',{'Scale',mul}); CSX = AddMetal( CSX, 'PEC' ); CSX = ImportSTL(CSX, 'PEC', 10, 'C:/Users/xxx/Downloads/temcell/Septum.stl' , 'Transform',{'Scale',mul});
元のソースは、一応 ここにも保存
新しいPCにOpenEMSとOctave入れなおしたので。。
addpath("d:/openEMS/matlab/");
をコマンドウィンドウで入れるの忘れずに(笑)
コマンドウィンドウ開いておかないと、YesとかNoとか入れないといけないことも。。忘れずに
ちゃんとファイルが読み込まれていると、こういうメッシュが生成されて。。CSXCAD上で見えます。
そして。。待つこと1時間半 収束しないといわれて。。 ぎゃふんw
一応、計算はされているようで、tmpにデータはあり、Octaveからは見えるようです。
入力インピーダンス と S11 (Reflection Coefficient) と Farfieldの計算結果が出てきますが。。 入力インピーダンスは50Ω付近として。。虚部がちょっと大きいかな?
S11を描く部分は、こんな感じなんだけど。。
freq = linspace(f0-fc, f0+fc, 501 ); port = calcPort(port, 'tmp', freq); s11 = port.uf.ref./port.uf.inc;
plot( freq/1e6, 20*log10(abs(s11)), 'k-', 'Linewidth', 2 ); grid on title( 'reflection coefficient' ); xlabel( 'frequency f / MHz' ); ylabel( 'S_{11} (dB)' );
ちゃんと反映されてないのかな? ん??
さて。。何が悪いのかな?
Paraviewで見たら。。見えるだろうってtmpに吐き出されているファイルを見ようとしたけど。。
TEM Cellの形が見えただけだった(笑)
まずは。。ここまで。。 Timestepとかをいじってみるかな?
GHz帯を見たかったので、やってみた
ちょこっと、ソースをいじって。。Number of Time Stepをちょっと適当に短くして、f0とfcを2.5GHzまで見えるようにして、計算させてみました。
FDTD = InitFDTD( 'NrTs', 50000,'EndCriteria', 1e-9, 'TimeStepFactor',0.95); CSX = InitCSX(); f0 = 2000e6; % center frequency fc = 500e6;
インピーダンス見てると、なんとなく計算できていそうな感じ。。 このナミナミな部分を少なくするには物理的に小さくするしかないんでしょうね。。 TEMセル計算できそうですね。
S11もコマンドラインから打ち込むと、ちゃんと出てるっぽい。これだと、もし2.45GHzで使ったら、-20dBくらいで戻ってきそう。。 少しサイズを変えないとあかんけど使えんこともなさそう。。ってことわかりそうですね。
つづく。。 のか?(笑)
コメントを残していただけるとありがたいです