Pull to refresh

Конечноэлементный анализ в FEMM под управлением MATLAB

Добрый день, уважаемые!
Недавно столкнулся с потребностью использовать метод конечных элементов, для расчета электромагнитного поля в машине постоянного тока. Для того, что бы реализовать задуманное подобрал интересное решение, которое позволяет кроме моделирования электромагнитного поля, получить качественное преобразование результатов расчета, а так же выполнить их визуализацию.


При выборе ПО, реализующим МКЭ (метод конечных элементов), остановил свой взгляд на бесплатной программе FEMM, которую можно скачать с официального сайта.
Для управления процессом рассчета была выбрана система инженерных расчетов MATLAB R2010b, которая успешно справляется с возложенными на нее обязательствами с помощью надстройки OctaveFEMM, которая идет в дистрибутиве FEMM.

Начало работы

Установка OctaveFEMM происходит автоматически с установкой программы FEMM версии 4.2 и выше, и располагается в субдиректории mfiles. Для интеграции OctaveFEMM с MATLAB необходимо в командной строке системы MATLAB прописать строчки:
addpath(’c:\\progra˜1\\femm42\\mfiles’);
savepath;

Для того, что бы начать сессию работы с OctaveFEMM необходимо использовать функцию openfemm, а для окончания сессии – closefemm.

Основные команды

Подробный мануал, для использования данной связки программ был переведен и дополнен мною, хочу поделиться результатами работы:

Перечень команд OctaveFEMM для решения электромагнитных задач.

Общие команды:

• clearconsole – очищает окно LUA скрипта.
• newdocument(doctype) — создает новый препроцессорный документ и открывает окно препроцессора. Значение doctype зависит от типа рассматриваемой задачи. 0 – для магнитной задачи, 1 – для электростатической задачи, 2 — для задачи теплового потока, 3 – для задачи переменного потока. Альтернативой данной функции является — create(doctype).
• hideconsole – скрывает LUA консоль.
• hidepointprops – скрывает плавающее окно FEMM Properties.
• messagebox(’message’) – показывает всплывающее окно с сообщением message.
• opendocument(’filename’) – открывает файл с именем filename.
• print(item1,item2,...) – стандартная команда вывода на печать.
• prompt(’message’) – команда выведет сообщение message и будет ожидать от пользователя ввода строки, затем продолжит работу скрипта.
• showconsole – показывает плавающее окно LUA скрипта.
• showpointprops- показыват плавающее окно FEMM Properties.
• main_minimize – минимизирует главное окно FEMM.
• main_maximize – максимизирует главное окно FEMM.
• main_restore – восстанавливает нормальные размеры окна FEMM.
• main_resize(width,height) – изменяет размеры главного окна FEMM в соответствии с шириной и высотой (width и height).
Команды препроцессора.

Отличительной особенностью команд препроцессора является приставка mi_ перед функциями, которые обеспечивают интеграцию FEMM и MATLAB.
Команды добавления/удаления объектов:
• mi_ addnode(x,y) – добавляет точку с координатами x,y.
• mi_addsegment(x1,y1,x2,y2) – добавляет отрезок с координатами начала x1,y1 и координатами конца x2,y2.
• mi_addblocklabel(x,y) – добавляет label для блока с точкой (x,y).
• mi_addarc(x1,y1,x2,y2,angle,maxseg) –добавляет новую дугу от точки (x1,y1) до точки (x2,y2) с углом ‘angle’ через ‘maxseg’ сегментов.
•mi_drawline(x1,y1,x2,y2) – добавляет линию между точками с указаннами координатами.
•mi_drawpolyline([x1,y1;x2,y2’...]) – добавляет точки с указанными координатами и связывает их сегментами.
•mi_drawpolygon([x1,y1;x2,y2’...]) – добавляет точки с указанными координатами и связывает их сегментами до получения закрытого контура.
•mi_drawarc(x1,y1,x2,y2,angle,maxseg) – добавляет точки с указанными координатами и соединяет их дугой, с количеством сегментов maxseg.
• mi_drawrectangle(x1,y1,x2,y2) – добавляет точки с указанными координатами в углы прямоугольника, а затем соединяет их.
• mi_deleteselected –удаляет все выделенные объекты.
• mi_deleteselectednodes – удаляет все выделенные точки.
• mi_deleteselectedlabels – удаляет выделенные labels у блоков.
• mi_deleteselectedsegments – удаляет выделенный сегмент.
• mi_deleteselectedarcsegments – удаляет выделенную дугу.
Команды выбора геометрических единиц:
• mi_clearselected – снимает выбор со всех точек, отрезков, сегментов и дуг.
•mi_selectsegment(x,y) – выбирает сегмент, ограниченный точкой с координатами (x,y).
• mi_selectnode(x,y) – выбирает точку, приближенную к координатам (x,y) и возвращает координаты точки.
• mi_selectlabel(x,y) – выбирает label, к которому относится точка.
• mi_selectarcsegment(x,y) – выбирает дугу, с точкой с координатами (x,y).
• mi_selectgroup(n) – выбирает группу с label n.
Команды маркировки объектов:
• mi_setnodeprop(’propname’,groupno)- устанавливает для выбранной точки значение ‘propname’ и присваивает номер группы groupno.
• mi_setblockprop(’blockname’, automesh, meshsize, ’incircuit’, magdir, group,
turns) — Устанавливает для выбранного блока следующие свойства:
– Имя блока ’blockname’.
– automesh: 0 = построение расчетной сетки в соответствии с заданными размерами, 1 = автоматический выбор размера сетки и ее построение.
– meshsize: ограничение размера сетки для указанного Label.
– Блок содержит ток ’incircuit’
– Намагничивание направлено вдоль угла, измеряемого в градусах magdir
– Блок принадлежит к группе с номером group.
– Количество витков, которые связаны с данным блоком.
• mi_setsegmentprop(’propname’, elementsize, automesh, hide, group) – устанавливает свойства для выделенного сегмента:
– Граничные условия ’propname’
–Местный размер элемента не больше, чем elementsize.
– automesh: 0 = размер сетки зависит от величины elementsize, 1 = подбирается автоматическое значение размера расчетной сетки.
– hide: 0 = не скрыт в постпроцессоре, 1 = скрыт в постпроцессоре.
– Относится к группе с номером group.
• mi_setarcsegmentprop(maxsegdeg, ’propname’, hide, group) – устанавливает свойства выделенной дуги:
– Расчетная сетка охватывает не более maxsegdeg градусов.
– Граничные условия ’propname’
– hide: 0 = не скрыт в постпроцессоре, 1 = скрыт в постпроцессоре.
– Относится к группе с номером group.
• mi_setgroup(n) – устанавливает группу связанных элементов n.
Команды, обозначающие проблему:

• mi_ probdef(freq,units,type,precision,depth,minangle,(acsolver)) – изменяет параметры проблемы. Freq устанавливает частоту в Гц. Units устанавливает единицы измерения длины в данной проблеме, возможны следующие варианты — ’inches’, ’millimeters’, ’centimeters’, ’mils’, ’meters’, and ’micrometers’. Параметр type принимает два значения ‘planar’ для рассмотрения 2-D модели и ‘axi’ для рассмотрения осесимметричной модели. Параметр precision определяет точность, с которой необходимо решать задачу, например для точности 10-8 необходимо ввести 1Е-8. Параметр depth, отвечает за глубину модели. Параметр minangle указывает минимальное значение угла между элементами сетка, обычно это значение равно -30. Acsolver параметр отвечает за исследование переменного тока: 0 — последовательная аппроксимация, 1 – ньютоновская аппроксимация.
• mi_analyze(flag) – запускает решатель FEMM, для видимого окна укажите 0, для свернутого – 1.
• mi_loadsolution – загружает и отображает решение соответствующее текущей геометрии.
• mi_setfocus(’documentname’) — переключает программу FEMM на файл ‘documentname’.
• mi_saveas(’filename’) – сохраняет файл под именем ’filename’.
Команды расчетной сетки:
• mi_createmesh – запускает создание расчетной сетки.
• mi_showmesh – отображает сетку.
• mi_purgemesh –освобождает память и экран от расчетной сетки.
Команды масштабирования:
• mi_zoomnatural – активирует масштаб по размеру.
• mi_zoomout – активирует 50% масштаб.
• mi_zoomin – активирует 200% масштаб.
• mi_zoom(x1,y1,x2,y2) – активирует такой масштаб, что точка с координатами (x1,y1) располагается в верхнем правом углу, а точка с координатами (x2,y2) в левом нижнем углу.
Команды просмотра:

• mi_showgrid – показывает точки сетки.
• mi_hidegrid – скрывает точки сетки.
• mi_grid_snap(’flag’) – установка flag в ’on’ привязывает к сетке, установка flag в ’off’ отключает привязку к сетке.
• mi_setgrid(density,’type’) — изменяет свойства сетки. Параметр density указывает на плотность сетки, параметр type может принимать два значения: ’cart’ и ’polar’ для ортоганальных и полярных координат соответственно.
• mi_refreshview – обновляет вид и содержимое главного окна.
• mi_minimize – минимизирует вид активного магнетизма.
• mi_maximize – максимизирует вид активного магнетизма.
• mi_restor – возвращает стандартный вид активного магнетизма.
• mi_resize(width,height) – производит изменение размеров основного окна в соответствии с шириной и высотой.
Свойства объектов:
• mi_addmaterial(’matname’, mu_x, mu_y, H c, J, Cduct, Lam d, Phi hmax, lam fill,
LamType, Phi hx, Phi hy, nstr, dwire) – добавляет новый материал с именем mathname и со свойствами:
– mu_x — магнитная проницаемость по оси x или по оси r.
– mu_y — магнитная проницаемость по оси y или по оси z.
– H_c – постоянная магнитная коэрцитивность в А/м.
– J – плотность тока в А/мм2.
– Cduct – электрическая проводимость материала в MS/m.
– Lam d – толщина пластинки из которой набран материал (применительно к шихтованному материалу).
– Phi hmax – угол задержки кривой гистерезиса, для нелинейных зависимостей BH.
– Lam fill – часть объема, занятая шихтованными листами, применительно к железу.
– Lamtype – может быть:
_ 0 – не шихтовано, либо шихтовано бесконечно плоскими листами;
_ 1 – шихтовано по оси x или r;
_ 2 – шихтовано по оси y или z;
_ 3 – магнитный проводник;
_ 4 – простой жильный провод;
_ 5 – гибкий многожильный провод;
_ 6 – прямоугольный провод;
– Phi hx – угол задержки петли гистерезиса в градусах по оси x для линейных задач.
– Phi hy – угол задержки петли гистерезиса в градусах по оси y для линейных задач.
– nstr — количество жил в многожилном проводе.
– dwire — диаметр каждой жилы многожильного провода в мм.
Обратите внимание, что все свойства должны быть заданы. Если вы не задали какое-либо свойство, то оно принимает значение по-умолчанию.
• mi_addbhpoint(’blockname’,b,h) — добавляет точку, к кривой намагничивания с координатами b и h, где индункция измеряется в Тл, а напряженность магнитного поля в А/м.
• mi_clearbhpoints(’blockname’) – удаляет все точки кривой намагничивания для материала с именем blockname.
• mi_addpointprop(’pointpropname’,a,j) – добавляет новую точку на кривой, с координатами a,j измеряемых в Вб/м и А соответственно.
• mi_addboundprop(’propname’, A0, A1, A2, Phi, Mu, Sig, c0, c1, BdryFormat) – добавляет новую обмотку с именем propname.
– для добавленной обмотки можно установить параметры A0, A1, A2 и Phi
если требуется. По умолчанию все они равны нулю.
• mi_addcircprop(’circuitname’, i, circuittype)- добавляет новый ток, с именем circuitname, значением i и параллельным, либо последовательным соединением проводников, circuittype 0 и 1 соответственно.
• mi_deletematerial(’materialname’) — удаляет материал с именем materialname.
• mi_deleteboundprop(’propname’)- удаляет обмотку ’propname’.
• mi_deletecircuit(’circuitname’) – удаляет ток circuitname.
• mi_deletepointprop(’pointpropname’) – удаляет точку свойств ’pointpropname’.
• mi_modifymaterial(’BlockName’,propnum,value) – данная функция позволяет изменять любое свойство материала в соответствии с таблицей:
propnum Symbol Description
0 BlockName Название материала
1 μx x (or r) магнитная проницаемость
2 μy y (or z) магнитная проницаемость
3 Hc коэрцитивность, А/м
4 J плотность тока, МА/м2
5 s электрическая проводимость, МС/м
6 dlam толщина пластинок, мм
7 fhmax угол задержки петли гистерезиса, градусы
8 LamFill заполняемость железом
9 LamType 0 = нет, 1 = параллельно x, 2= параллельно y
10 fhx угол задержки петли гистерезиса в градусах по оси x
11 fhy угол задержки петли гистерезиса в градусах по оси x
• mi_modifyboundprop(’BdryName’,propnum,value) – функция, с помощью которой можно модифицировать свойства обмотки.
propnum Symbol Description
0 BdryName Имя свойства
1 A0 установка параметра А
2 A1 установка параметра А
3 A2 установка параметра А
4 f установка фазы параметра А
5 μ маленькая удельная магнитная проницаемость
6 s маленькая электрическая проводимость
7 c0 смешанный параметр
8 c1 смешанный параметр
9 BdryFormat тип состояния обмотки
•mi_modifypointprop(’PointName’,propnum,value) — функция для модификации точки свойств.
•mi_modifycircprop(’CircName’,propnum,value) – функция для модификации свойств тока.

Различные команды:

• mi_savebitmap(’filename’) — сохраняет файл в формате .bmp с именем filename.
• mi_savemetafile(’filename’) — сохраняет файл в формате .mtf с именем filename.
• mi_refreshview – перерисовывает текущий вид.
• mi_close – закрывает текущий препроцессорный документ.
• mi_shownames(flag) – функция для показа либо скрытия значения label. Если значение flag равно нулю, то происходит скрытие, при 1 – показ.
• mi_readdxf(’filename’) — эта функция импортирует эскиз из файла .dxf.
• mi_savedxf(’filename’) – функция, которая сохраняет геометрию в файле .dxf.

Команды постпроцессора.

Набор команд, с помощью которых можно работать с моделью после расчета в программе FEMM.
• mo_lineintegral(type) – вычисляет линейный интеграл по указанному контуру.
Type Name Values 1 Values 2 Values 3 Values 4
0 B.n Полное значение Среднее значение — -
1 H.t Полное значение Среднее значение — -
2 Длина контура Площадь поверхности — - — 3 Сила, через тензор натяжения Сила по оси r/x Сила по оси z/y 2x r/x force 2x y/z force
4 Момент, через тензор натяжения Постоянная составляющая момента Двойной момент — -
5 (B.n)2 Полное значение Среднее значение — -

• mo_makeplot(PlotType,NumPoints,Filename,FileFormat) — позволяет Octave использовать средства программы FEMM для построения графиков. Если заданы значениея PlotType, Numpoints – количество точек в графике, FileName и Fileformat – имя файла и его расширение соответственно, для сохранения информации на жестский диск. Правильным являются следующие значения PlotType:
PlotType Definition
0 Potential
1 |B|
2 B• n
3 B• t
4 |H|
5 H • n
6 H • t
7 Jeddy
8 Jsource+Jeddy
Так же доступны следующие варианты переменной FileFormat:
FileFormat Definition
0 Многоколонный текст с легендой
1 Многоколонный текст без легенды
2 Форматирование в стиле mathematica
•mo_getprobleminfo – возвращает следующие значения, 1 – тип задачи, 2 – частота в Гц, 3- глубина задачи в метрах, 4 – единицу длина задачи.
• mo_getcircuitproperties(’circuit’) – используется для получения информации о токе с именем circuit. Возвращает одно из следующих значений:
– current — значение тока
– volts – падение напряжение на обмотке.
– flux – возвращает потокосцепление обмотки.
Команды выбора:

• mo_seteditmode(mode) – указывает тип объекта, с которым предстоит работать постпроцессору. Значения mode могут быть: point, contour, area.
• mo_selectblock(x,y) – выделяет блок, содержащий точку с данными координатами.
• mo_groupselectblock(n) – выделяет блок, элементы которого принадлежат группе n. Если не указана группа, то выделяются все блоки.
• mo_addcontour(x,y) – добавляет точку контуру с координатами (x,y). Эта функция аналогична работе в постпроцессорном файле .ans, нажатию правой кнопки мыши.
• mo_selectpoint(x,y) – выделяет точку, с координатами (x,y).
• mo_clearcontour – снимает выделение с контура, который был выделен.
• mo_clearblock — снимает выделение с блока.

Команды изменения масштаба:


• mi_zoomnatural – активирует масштаб по размеру.
• mi_zoomout – активирует 50% масштаб.
• mi_zoomin – активирует 200% масштаб.
• mi_zoom(x1,y1,x2,y2) – активирует такой масштаб, что точка с координатами (x1,y1) располагается в верхнем правом углу, а точка с координатами (x2,y2) в левом нижнем углу.
Команды просмотра:
• mo_showmesh – показывает расчетную сетку
• mo_hidemesh – скрывает расчетную сетку.
• mo_showpoints – показывает записи к точкам, попавшим в геометрию.
• mo_hidepoints — скрывает узловые точки от входной геометрии.
• mo_smooth(’flag’) — эта функция определяет необходимо ли производить сглаживание кривых намагничивания материалов. Если flag в состоянии on, то сглаживание будет активировано, если off, то выключено.
• mo_showgrid – показывает сетку точек.
• mo_hidegrid – скрывает сетку точек…
• mo_grid_snap(’flag’) — если flag в состоянии on, следовательно включается привязка к сетке, в противном случае она выключена.
• mo_setgrid(density,’type’) – изменение сетки. Параметр density отвечает за расстояние между точками сетки, а параметр type отвечает за полярные координаты, либо за декартовы.
• mo_hidedensityplot – скрывает плотность магнитного потока.
• mo_showdensityplot(legend,gscale,upper_B,lower_B,type) – показывает плотность магнитного потока:
– legend принимает значение 0 – не показывать, 1- показывать легенду.
– gscale указывает на 0- цветное построение, 1 – в серых тонах.
– upper_B – устанавливает верхний предел для отображения плотности потока.
– lower_B – устанавливает нижний предел для отображения плотности потока.
– type – тип отображения плотности потока.
• mo_hidecontourplot – скрывает участок контура.
• mo_showcontourplot(numcontours,lower_A,upper_A,type)- показывает контур участка со свойствами:
– numcontours – количество эквипотенциальных линий А.
– upper_A – верхний предел А.
– lower_A — нижний предел А.
– type- указывает тип построения — ’real’, ’imag’, ’both’ для отображения реальной части, мнимой части и вещественной части числа.
• mo_ showvectorplot(type,scalefactor) – контролирует отображение векторов, изображающих поле и силу.
• mo_minimize – минимизирует окно результата.
• mo_maximize – максимизирует окно результата.
• mo_restore – восстанавливает окно результата.
• mo_resize(width,height) – производит изменение размера окна результата до ширины и высоты указанных в аргументе.
Разные команды:
• mo_close – закрывает текущую постпроцессорную задачу.
• mo_refreshview – переисовывает текущий вид.
• mo_reload – загружает результат из файла.
• mo_savebitmap(’filename’) — сохраняет результат в .bmp файле с именем filename.
• mo_savemetafile(’filename’) — сохраняет результат в .mtf файле с именем
filename.
• mo_shownames(flag) — при flag=1 отображает названия всех label.
• mo_numnodes – возвращает количество узлов в расчетной сетке.
• mo_numelements — возвращает количество элементов в расчетной сетке.
• mo_getnode(n) – возвращает координаты n-ной точки.
• mo getelement(n) – возвращает следующие свойства n-ного элемента:
1. Индекс первого элемента узла
2. Индекс второго элемента узла
3. Индекс третьего элемента узла
4. x (или r) координату центра тяжести элемента
5. y (или z) координату центра тяжести элемента
6. единицу длины, используемую в задаче
7. номер группы, ассоциированной с данным элементом.

Думаю, что данная справочная информация будет полезна некоторым пользователям российских интернетов.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.