本文首发于微信公众号「声学号角」

Femm是一个免费的有限元软件,可以进行2维平面或2维轴对称的电、磁、热的有限元仿真分析。

通常会用femm做磁路的仿真,优化磁路设计,或者计算Bl值。实际上femm的功能还有不少拓展的空间,可以求解Bl(X)、Le(x)等等磁路的非线性,短路环对Le(x)的影响等等。

其自带了Lua脚本语言的输入窗口和编译器,可以直接执行Lua命令。

或者也可以耦合Matlab、Mathematica、Octave(类似Matlab的免费软件)

Femm软件的帮助文件中有详细讲解如何进行接口参数调用。Femm官网也有对应的案例参考。

Femm官网网址,可能需要翻墙

http://www.femm.info/wiki/HomePage

附录一款产品求解磁路Bl(x)和Le(x)的Lua命令,注释已经写得很详细清晰:

-- Model Name
ModelName = 'Woofer.fem';

-- Maximum excursion + /- from the centered position:
Xlim = 10;

-- Movement increments used during the analysis
dX = 0.1;

--------------------------------------
-- Analyze BL and incremental inductance at 1 mm steps between   
- Xlim and + Xlim
open(ModelName);
mi_saveas('temp.fem');
mi_selectgroup(1);
mi_movetranslate(0, -Xlim);
mi_clearselected();

showconsole();
clearconsole();

print('Disp(mm)','BL(N/A)','Inductance(uH)');
for k=-Xlim,Xlim,dX do
    mi_modifycircprop('icoil',1,1);
    mi_analyze(1);
    mi_loadsolution();
    mo_groupselectblock(1);
    fz = mo_blockintegral(12);
    parm1,R,fl1 = mo_getcircuitproperties('icoil');
    mo_close();
    mi_modifycircprop('icoil', 1, 0);
    mi_analyze(1);
    mi_loadsolution();
    parm1,parm2,fl0 = mo_getcircuitproperties('icoil');
    L = (fl1 - fl0)*10^6;
    print(k, fz, L);
    mi_selectgroup(1);
    mi_movetranslate(0, 1);
end

mi_close();
remove('temp.fem');
remove('temp.ans');

print('');
print('DC coil resistance = ',R);