コンテンツへスキップ

無料磁場解析ソフトFEMMチュートリアルで使い方を確認しつつその時の記録を残しておきます。

チュートリアルで使い方を確認しつつその時の記録を残しておきます。

目次

  • FEMMとは
  • 動的磁場有限要素法とは
  • インストール
  • 磁場解析をしてみる:空心コイルソレノイドの磁場解析
  • 解析結果
  • まとめ
  • 雑記
  • 参考

FEMMとは

低周波数の磁気学と静電気学について,2次元平面と軸対象問題を解くためのソフトウェアです。Windows上で動作します。

ソルバという、複数の変数を含む数式において目標とする値を得るための最適な変数の値を求めることができる機能がついています。FEMMのソルバは 動磁場有限要素法を使用しているものみたいです。

Kelvin変換,Robin境界,SDI境界,IABC境界など多数のOpen boundary 境界が実装されている、みたいですが、解析方法とかよくわかりません。

チュートリアルにはLuaという言語と統合できるみたいなことが書いてありますが、PythonでもpyFEMMpyfemmを使って動かせるみたいです。 FEMM自体はC言語で動いているみたいです。

なお、この記事では磁場に関しては深く言及しません。

 ソルバー -weblio辞書

動的磁場有限要素法 とは

Finite Element Method (有限要素法)は、微分方程式を近似的に解くための数値解析方法です。複雑な形状。性質を持つ物体を小部分に分割することで近似し、全体の挙動を近似して計算機に計算させようとする方法です。要素の選択とメッシュの作り方を近似していきます。 構造力学や流体力学などの様々な分野で使用されているみたいです。

mesh

要素の円卓とメッシュの作り方を指定してあげます。 FEMMは固体要素を扱うことが多く、メッシュを正三角形で行っています。一般的に、メッシュを細かくすればするほど計算精度が良くなりますが、その分計算時間が掛かります。また、三角形よりも四角形、の方がj計算精度がいいです。

端的に言えば、各要素で編微分方程式を解いてるみたいです。(詳細についてしゃべるのを避けた)

インストール

Finite Element Method Magnetics :Download

からダウンロードします。

download画面

磁場解析をしてみる:空心コイルソレノイドの磁場解析

以下がバージョンが違いますが、チュートリアルです。

FEMM 3.4 Magnetostatic Tutorial1

研究 FEMM チュートリアル.pdf -Evernote

日本語に翻訳してあるものを読みながら、重要な部分だけやります。

今回の解析対象はこれです。

解析対象

2Dの解析ソフトなので、FEMMで一回に解析するのはこれの断面になります。これは軸対称のモデルなので描くのは左側の四角になります。

新規モデルの作成

File/NEWでMagnetic problemを選択します。静磁気問題になります。次に問題の種類を指定していきます。axisymmetric(軸対称)を選択し、Length Unitをmm、Frequencyを0Hzにします。

平面で解析したい場合はPlanarを選択します。

境界線、コイルの描画

有限要素ソルバは対象のオブジェクトを含む空間の有限領域を指定して解析するみたいです(?)。なので、空間を指定していきます。 視界の設定をします。View/Keyboadから、Bottom:-4,Left:0,Top:4,Right:4に指定します。スクリーンは指定された領域を含む 最も小さい長方形に設計しなおされます。

次にOperate on nodesを選択します。小さいブロックボックスで左端にあるこれです。ノードを(0,4),(0,-4),(0,0)にマウスから設置します。Tabを使用すると、キーボードから入力できます。

次に、Operate on segmentsを選択します。左から2番目です。(0,4),(0,-4)をクリックすると線が引かれます。画像は見にくかったので変更しました(上記参照)。 次に、Operate on arc segmentsを選択します。

左から3番目です。(0,4),(0,-4)をクリックすると軸対称な円弧が描かれます。propertiesが現れますが、そのときArc Angleを180、Max segment Degreeを25にします。FEMMでは曲線は直線を繋げたものとして表されるので、解像度のように考えればよいでしょう。こおでは2.5で充分であるとします。

もし失敗した場合はEdit/Undoか、上の切り返す矢印マーククリックして選択した後にメニューのX印を押しましょう。

同じ手順で内側の四角を描きましょう。Operate on nodesを押して、(0.5,-1)(1.5,-1)(1.5,1)(0.5,1)にノードを置く。 その後Operate on segmentsで線で結びます。

材料や特性の関連付け

Operate on Block Labelsを選択します。コイル領域とコイル領域の外側の空気部にブロックラベルを置きます。

このプログラムは、問題を形状、材料、特性によって解くので、それらを関連付けていきます。

メニューからProperties/Materials Library を選択しますこの中から、Air とCopper AVW Magnet wire/18 AGWを右のModel Materialsにドラック&ドロップで加えます。OKを押します。

コイルに回転属性を追加します。

properties/CircuitsからAdd Propertyを円卓し、new circuitに適当な名前をつけます。Seriesを選択して巻き線領域になるように指定します。これは時間調和問題に使用される設定です。 Circuit Currentに1を入力します。

円の中、四角の外のブロックラベルを右クリックで選択し、スペースか上のバーの指を指しているようなマークでpropertyを開きます。

Block typeを先ほどのAirにし、Let Triangle Choose Mesh Sizeのチェックを外して0.1にします。このとき、1辺最大0.1の正三角形で内部を満たそうとします。

四角の中はBlock type 18 AVW、Mesh size 0.1、In circuit Coil、Number of turn 1000を入れます。これで、時計回りに1000巻きの18材のコイルが指定されます。右ねじの方向が正。-1なら逆時計回りに1。

境界条件

境界はboundaryです。Prorerties/Boundaryを選択し、Add Propertyを選択し、nameをABCに、BC typeをMixesにします。ABCは(チュートリアルによると)境界の無いオープンスペースのイ ンピーダンスに近似した,-漸近的な境界条件. を作成している事を意味するらしいです。

c0 coefficient(係数) と c1 coefficientは以下で表されます。

$$ \frac{1}{\mu_r\mu_o}\frac{\partial A}{\partial n} + c_0 A + c_1 = 0$$

$$A:磁気ベクトルポテンシャル、\mu_r:境界に近い領域の比透磁率$$

$$\mu_o:真空の透磁率、n:境界に対するの標準の方向$$

ここでは、以下のようにします。

$$c_0=\frac{1}{\mu_r\mu_o R}$$ $$c_1=0$$

Rは球の外径です。今回の入力は、c0 coefficient に 1/(uo4mm)、c1 coefficientに0を入力します。uoに対する真空の透磁率の数値やmに当たる0.001を代入し、OK、OKをクリックします。 ちなみに1inch=0.0254mです。 空間の有限領域に着いて、無限境界空間にあるコイルによって作成されたフィールドをモデル化出来ました。

解析の開始

境界条件を指定するためにOperate on arc segmentsモードにします。外側の境界を意味する円弧を右クリックで選択し、スペースでpropertiesを開きます。Boundary condにABCを選択します。 バーの黄色のMesh generaterをクリックします。すると、このように塗りつぶされます。

FEA(有限要素法)による解析を実施します。turn the crankを押して解析を行ってください。 今回の解析は一瞬でしたが、プログレスバーが動いていない様子であった場合は境界条件の指定がうまくいっていないかも知れないので、条件をもう一度見直す必要があるかも知れません。

解析結果

眼鏡のアイコンをクリックすると解析結果がみれるタブが現れます。上のバーにポイント、等高線(コンター)、エリアを選択できます。

一点の値

左クリックで任意の点をクリックすることで、そのポイントの様々なフィールドプロパティがFEMM outputウィンドウに現れます。TABでより精密にポイントを選択できます。 消してしまった場合はView/outputで再度表示出来ます。上の方(0,4)真ん中右の方(3,0)を指定したときはこんな感じでした。

(0,4)
(3.0)

コイルの末端特性

コイルアイコンをクリックします。Coilプロパティはこのようになります。問題が線形で、一つの電流しかないので。Flux/Currentの結果はコイルのインピーダンスと解釈できます。Flux/Current = 0.897763 mH、Voltage/Current =R = 0.13155 Ωですね。

等高線(コンター)に沿ったフィールド値のプロット

コンターアイコンを押し、(0,4)(0,0)(0,-4)付近をクリックしてグラフアイコンをクリックします。デフォルトでは磁束密度の振幅がプロットされますが、ほかにも選択できます。 ポイントが選ばれた順番に、進行方向からみて↑右側を選択するようなプログラムになっています。

磁束密度のプロット

デフォルトでは白黒ですが、ツールバーでカラーにできます。

雑記

jMAGという有料のが研究室にあるので、使っていきたいですね。これはノートに入れられますが、jMAGは3D解析が出来るので。今後は下をやりたいですね。

  • pythonで様々なパターンを自動的に解析できないか探す
  • 他の解析ソフトを使用して今回の結果を検証

参考

MATLABの使い方を個人的にメモします。 ボード線図と時間応答。ごく簡単な部分だけです。

本家様

MATLAB 入門 -MathWorks

目次

  • MATLABとは
  • simlinkとは
  • 構成
  • 使い方

MATLABとは

技術計算のための有料ソフトで、基本的な機能の他はさらに課金する必要があります。その拡張機能によって様々な場面で使用されており、企業で使用されるケースも多々あります。学生は研究室で使えたりします。個人で購入する場合でも学割があり、生協でかなり安く買えるそうです。

行列と配列の数学を直接表現するプログラム言語と反復的に実施する分析、設計プロセスに適したデスクトップ環境がセットになっています。

基本的には3つのウインドウをつかう。Simlinkは拡張機能のようなもの。

  • コマンドウィンドウ
  • m-fileウィンドウ
  • Simlinkウィンドウ

MATLAB -MathWorks

(追記)無料の似たようなソフトScilabというものを見つけました。=>Scilab/Xcosのインストールと使い方 MATLABとの比較

simlinkとは

Simlinkウインドウを使用すると、グラフィカルにブロック図を書けばコードに変換してくれます。制御工学とかと相性が良いですね。

Simlink -MathWorks

構成

コマンドウィンドウ

会話的で、すぐに結果が出ます。

>> a = [1 2 3; 4 5 6; 7 8 9]
a =
        1 2 3
        4 5 6
        6 7 8
コマンドウィンドウ

こんな感じ。関数も使えます。範囲で指定する方法がわからなかったので直接配列を書きました。

>> x = [0 pi*1/6 pi*1/3 pi*2/3 pi*5/6 pi pi*4/3 pi*3/2 pi*5/3 2*pi]
>> plot(x,sin(x))
sin(x)

linespce(始点、終点、点数)を使えば楽ですが、研究室に合ったやつには入っていない関数らしい。

関数を定義する事も出来ますが、とくに使う予定がないので省略します。

m-fikeウィンドウ

shellみたいなものだと思います。上とほとんど同じです。

>> x = [0 pi*1/6 pi*1/3 pi*2/3 pi*5/6 pi pi*4/3 pi*3/2 pi*5/3 2*pi]
>> plot(x,cos(x))

保存するとき、名前がモデルと完全に同じだとエラーを吐くらしいので、微妙に変えておくと無難です(user/tutorial01_p.mにしました)。メニューバーのデバッグ/実行で実行します。この時たぶん、カレントディレクトリにありません、などエラーを吐いたら、コマンドウィンドウ上の方のカレントディレクトリを変更します。

デバック/実行か実行アイコンから実行するとこんな感じ。

cos(x)

Simlinkウィンドウ

ドラッグアンドドロップでブロック線図を作成します。割愛。

ちなみに、m-fileのエディタでmdlファイルを開くとめちゃくちゃいろいろ書いてます。

使い方

簡単な周波数解析

MATLABを起動し、メニューバーにあるSimlinkアイコン(ごちゃついたヤツ)からSimlinkを起動します。

Simlink

Simlinkを起動すると、自動的にlibrary Browserが開くと思います。

Simlinkのファイル/新規作成/モデルをクリックして、出てきたウィンドウを保存(user/tutorial01.mdlにしました)。

Simlink library Browser には関数やinputなどが入っていて、libraryからmodelへドラッグアンドドロップすることでブロック線図を完成させます。

ひとまずこのような図を作ります。

  • Continuousには1次遅れ系の伝達関数っぽいブロック(Transfer Fcn)などが入っています。
  • Sinksにはoutput(Out1)やオシロスコープ的なもの(Scope)などが入っています。
  • SoucesにはInput(In1)や時間測定器(Clock)
continuous
sink
souces

ブロックの端に「>」というのがありますので、それをドラッグして他のブロックに接続します。

開ループ

これでひとまず開ループの完成。矢印上で右クリック・ドラッグすると→を分岐できます。 Math Operatioのsumと合わせて使用して閉ループを作ることもできます。

関数をバブルクリックするとパラメータを変えるウィンドウが出てきますので、適宜変えていきます。

閉ループ

Numeratorを[1]、Denominator[2 3] にすると、

$ \frac{1}{2s+3}$

$$ \frac{1}{2s+3}$$

Numeratorを[1]、Denominator[2 -3 4] にすると、

$$ \frac{1}{2s^2-3s+4}$$

になります。ブロック図ができたらプロットのためのプログラムを組みます。

m-fileを作成します。

コマンドウィンドウから、新規作成/M-fineで、M-fileウィンドウを開きます。

T = 1
[num, den]= linemod('tutorial01') 
w=logspace(-3,3,100); 
figure 
bode(tf(num,den), w) 
grid on 

これで、実行すると、ボード線図が描画されます。このfigureで保存すると、画像を保存できます。

bode線図

簡単な時間解析

時間情報をグラフに書き込むときは、出力情報に紐づけられた時間の配列を変数に格納してplot(t,y)などを実行することになります。

同様にモデルを作成します。

  • Sourceからステップ信号(Step) 、時間(Clock)
  • Continuousから伝達関数(Transfer Fcn)
  • Sinkから「外部へ」(simout)

ブロック線図を作成したら、simoutをダブルクリックして、Clockとつながっている方は変数名をt、保存フォーマットをArray(配列)に、transfer Fcnとつながっている方は変数名をy、保存フォーマットをArray(配列)に変更します。

シミュレーションパラメータ

メニューバーのシミュレーション/シミュレーションパラメータから開始時間を0、終了時間を10*T、ソルバオプションのタイプを固定ステップ、ode1(Euler) ステップサイズをT/10に変更したら、メニューバーの下の△で実行。

コマンドウィンドウで、

>>figure
>>pot(t,y)
>>xlabel('Time[s]'),ylabel('Output')

とすると、こんな感じ。

時間解析

これを、m-fileのコマンドでやると以下のようになります。

T = 1;
figure
plot(t,y)
xlabel('Time[s]'),ylabel('Output')
grid on

以上です。あとはその都度組み合わせて使っていきましょう。

(追記 2019/6/24)Scilabに関して追記しました。