FEMM 5

От постановки задачи к готовому решению

Машина с поверхностными постоянными магнитами

Четыре поверхностных магнита с радиальным направлением намагничивания.

Проверка учебной модели

Исходный учебный пример повторно рассчитан в FEMM 5 15 октября 2026 года. Его модель также построена и решена из учебной Python-программы. Результат проверки.

Это неподвижное токовое состояние. Скоростная ЭДС, коммутация и полный привод не возникают от одной карты поля; для них требуются описанные в курсе серии положений и внешние соотношения.

Проходите этапы по порядку. Файл каждого этапа содержит накопленное состояние модели: его можно открыть отдельно и продолжить с указанного шага. Названия материалов, цепей и файлов приведены по-русски; названия команд интерфейса FEMM сохранены для точного поиска в программе.

Числа в таблицах позволяют сверить результат на указанной сетке. Количество выведенных знаков не задаёт физическую точность модели; для силы и момента проверяйте сетку и устойчивость метода вычисления.

Файлы исходных 11 этапов

Если нужен промежуточный результат построения, скачайте файл соответствующего этапа ниже.

Проверка сетки · 15 октября 2026 года

Сходимость момента и рекомендуемая сетка

Выбрана сетка для расчёта момента

Момент на выбранной сетке: −1,152 Н·м. Число элементов: 2 810 173.

Размеры всех блоков уменьшены в 8 раз. В зазоре задано 0,04375 мм; дуги ограничены по соответствующей длине хорды, прямые сегменты также сгущены. Первая строка серии уже содержит более подробное разбиение дуг, чем исходные 11 этапов.

Этапы 1–11 ниже сохраняют исходную учебную сетку и относящиеся к ней снимки. Для проверки уточнённого момента используйте файлы этого раздела. Геометрия, материалы, токи и активная длина модели сохранены.

Сходимость момента при увеличении числа конечных элементов
Рисунок 13.36. Результаты настоящих расчётов FEMM 5. Заштрихованная область показывает разброс трёх контуров; это проверка постобработки одного поля. Нажмите на график, чтобы открыть его в полном размере.
Машина с поверхностными постоянными магнитами: выбранная сетка воздушного зазора.
Рисунок 13.37. Машина с поверхностными постоянными магнитами: выбранная сетка воздушного зазора. Открыть в полном размере
Машина с поверхностными постоянными магнитами: момент ротора на выбранной сетке.
Рисунок 13.38. Машина с поверхностными постоянными магнитами: момент ротора на выбранной сетке. Открыть в полном размере
Таблица 13.10. Сеточная серия: момент в Н·м, размер в зазоре в мм
СеткаРазмер блока в зазоре, ммЭлементовWST, Н·мПеремена WST
Сетка 10,3596 651-1,149043—
Сетка 20,175261 086-1,1531020,352%
Сетка 30,0875816 231-1,1515070,139%
Сетка 4 · выбрана0,043752 810 173-1,1515580,00442%

Критерии: две последние перемены взвешенного интеграла не более 1%; расхождения контурных оценок и производной коэнергии с ним не более 2%. Дополнительно проверяется устойчивость производной на соседних угловых шагах. Нижний абсолютный допуск — 0,00001 Н·м.

Таблица 13.11. Сравнение методов на выбранной сетке
МетодМомент, Н·мУсловия проверки
Взвешенный интеграл Максвелла (WST)-1,152Интеграл 22; все области ротора, группа 2
Контуры без сглаживания-1,147 … -1,14Точное интегрирование кусочно-постоянного поля на трёх окружностях
Контуры со сглаживанием-1,156 … -1,148Три радиуса; 46080 точек на каждой окружности
Производная коэнергии-1,153 … -1,145Шаги: 1, 2^\circ
Угловые шаги и производная коэнергии

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

Таблица 13.12. Центральная разность при фиксированных токах
Шаг, град.Производная, Н·мРасхождение с WSTПроверка
1-1,1530,101%Принят
2-1,1450,527%Принят

Проверено указанное положение ротора и заданные токи. Согласие методов относится к этой двумерной линейной модели; оно не оценивает влияние насыщения, концевых эффектов и отклонений реальной машины. Выведенные дополнительные цифры нужны для повторения расчёта.

Полный протокол, критерии и сопоставление восьми роторов

Этап 1 из 11

Постановка задачи

  1. Создайте магнитную задачу через «Файл → Новая» (File → New → Magnetics Problem).
  2. В окне «Постановка задачи» (Problem Definition) выберите миллиметры, тип «плоскопараллельная» и частоту 0 Гц.
  3. Введите точность, минимальный угол сетки и остальные значения таблицы. В таблицах используется десятичная запятая; при вводе чисел в FEMM заменяйте её точкой.
  4. Поле файла предыдущего решения оставьте пустым. В осесимметричной задаче поле глубины не задаёт физическую длину: координаты обозначают радиус r и высоту z. В плоскопараллельной задаче глубина задаёт длину модели перпендикулярно плоскости чертежа.
Неполный учебный этап; решение не запускать.
Таблица 13.13. Параметры постановки
ПараметрЗначение
Частота, Гц0
Точность10 × 10⁻⁹
Минимальный угол, {}^\circ25
Умная сетка: 1 — включена1
Глубина плоской задачи, мм80
Единицымиллиметры
Тип задачиплоскопараллельная
Координатыдекартовы
Гармонический решатель: 0 — последовательные приближения0
Предыдущее решение: 0 — отсутствует0
Файл предыдущего решенияНе задан

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 1: Постановка задачи
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 1. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 1: Постановка задачи.
Рисунок 13.39. Машина с поверхностными постоянными магнитами. Шаг 1: Постановка задачи. Открыть в полном размере

Перейти к следующему этапу →

Этап 2 из 11

Материалы и характеристика B–H

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. Откройте «Свойства → Материалы» (Properties → Materials) и последовательно создайте материалы из таблиц.
  3. Для каждого материала укажите обе относительные проницаемости, коэрцитивную силу, заданную объёмную плотность тока, проводимость и параметры шихтовки. Удельная электрическая проводимость вводится в МСм/м, а не в См/м.
  4. Если дана таблица B–H, включите нелинейную характеристику и внесите каждую пару: B в Тл, H в А/м. Числа не заменяются свойствами одноимённого материала из другой библиотеки.
  5. Список сохраняет все материалы исходника. Столбец использования показывает, какие из них действительно назначены областям данного варианта.
Неполный учебный этап; решение не запускать.
Таблица 13.14. Воздух
ПараметрЗначение
Назначен областямДа
Относительная магнитная проницаемость по x/r1
Относительная магнитная проницаемость по y/z1
Коэрцитивная сила, А/м0
Угол направления коэрцитивной силы, {}^\circ0
Действительная часть плотности тока, МА/м²0
Мнимая часть плотности тока, МА/м²0
Удельная электрическая проводимость, МСм/м0
Толщина листа, мм0
Угол гистерезиса, {}^\circ0
Угол гистерезисного запаздывания по x, {}^\circ0
Угол гистерезисного запаздывания по y, {}^\circ0
Тип: 0 — без шихтовки0
Коэффициент заполнения1
Число жил0
Диаметр провода, мм0
Таблица 13.15. Обмоточная область
ПараметрЗначение
Назначен областямДа
Относительная магнитная проницаемость по x/r1
Относительная магнитная проницаемость по y/z1
Коэрцитивная сила, А/м0
Угол направления коэрцитивной силы, {}^\circ0
Действительная часть плотности тока, МА/м²0
Мнимая часть плотности тока, МА/м²0
Удельная электрическая проводимость, МСм/м0
Толщина листа, мм0
Угол гистерезиса, {}^\circ0
Угол гистерезисного запаздывания по x, {}^\circ0
Угол гистерезисного запаздывания по y, {}^\circ0
Тип: 0 — без шихтовки0
Коэффициент заполнения1
Число жил0
Диаметр провода, мм0
Таблица 13.16. Линейная сталь
ПараметрЗначение
Назначен областямДа
Относительная магнитная проницаемость по x/r1000
Относительная магнитная проницаемость по y/z1000
Коэрцитивная сила, А/м0
Угол направления коэрцитивной силы, {}^\circ0
Действительная часть плотности тока, МА/м²0
Мнимая часть плотности тока, МА/м²0
Удельная электрическая проводимость, МСм/м0
Толщина листа, мм0
Угол гистерезиса, {}^\circ0
Угол гистерезисного запаздывания по x, {}^\circ0
Угол гистерезисного запаздывания по y, {}^\circ0
Тип: 0 — без шихтовки0
Коэффициент заполнения1
Число жил0
Диаметр провода, мм0
Таблица 13.17. Нелинейная сталь
ПараметрЗначение
Назначен областямНет, сохранён в списке исходника
Относительная магнитная проницаемость по x/r1
Относительная магнитная проницаемость по y/z1
Коэрцитивная сила, А/м0
Угол направления коэрцитивной силы, {}^\circ0
Действительная часть плотности тока, МА/м²0
Мнимая часть плотности тока, МА/м²0
Удельная электрическая проводимость, МСм/м0
Толщина листа, мм0
Угол гистерезиса, {}^\circ0
Угол гистерезисного запаздывания по x, {}^\circ0
Угол гистерезисного запаздывания по y, {}^\circ0
Тип: 0 — без шихтовки0
Коэффициент заполнения1
Число жил0
Диаметр провода, мм0
Таблица 13.18. Характеристика B–H: Нелинейная сталь
B, ТлH, А/м
00
0,25100
0,5200
0,9400
1,2800
1,452000
1,65000
1,710000
Таблица 13.19. Постоянный магнит
ПараметрЗначение
Назначен областямДа
Относительная магнитная проницаемость по x/r1,05
Относительная магнитная проницаемость по y/z1,05
Коэрцитивная сила, А/м909500
Угол направления коэрцитивной силы, {}^\circ0
Действительная часть плотности тока, МА/м²0
Мнимая часть плотности тока, МА/м²0
Удельная электрическая проводимость, МСм/м0
Толщина листа, мм0
Угол гистерезиса, {}^\circ0
Угол гистерезисного запаздывания по x, {}^\circ0
Угол гистерезисного запаздывания по y, {}^\circ0
Тип: 0 — без шихтовки0
Коэффициент заполнения1
Число жил0
Диаметр провода, мм0

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 2: Материалы и характеристика B–H
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 2. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 2: Материалы и характеристика B–H.
Рисунок 13.40. Машина с поверхностными постоянными магнитами. Шаг 2: Материалы и характеристика B–H. Открыть в полном размере

Перейти к следующему этапу →

Этап 3 из 11

Цепи и токи возбуждения

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. Откройте «Свойства → Цепи» (Properties → Circuits) и создайте каждую указанную цепь.
  3. Выберите последовательное соединение (Series), если в таблице стоит код 1; код 0 соответствует параллельному соединению. Число витков задаётся позже в метке каждой области.
  4. В этой магнитостатической задаче задайте действительную часть тока из таблицы; мнимая часть равна нулю. Цепи с нулевым током также создайте: они нужны для получения потокосцепления соответствующих обмоток.
  5. Это неподвижное токовое состояние. Скоростная ЭДС, коммутация и полный привод не возникают от одной карты поля; для них требуются описанные в курсе серии положений и внешние соотношения.
Неполный учебный этап; решение не запускать.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.20. Токи всех цепей
ЦепьДействительная часть тока, АМнимая часть тока, АТип
Фаза А10Последовательная (1)
Фаза В10Последовательная (1)
Фаза С-20Последовательная (1)

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 3: Цепи и токи возбуждения
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 3. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 3: Цепи и токи возбуждения.
Рисунок 13.41. Машина с поверхностными постоянными магнитами. Шаг 3: Цепи и токи возбуждения. Открыть в полном размере

Перейти к следующему этапу →

Этап 4 из 11

Граничные условия

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. В «Свойства → Граничные условия» (Properties → Boundary) создайте определения из таблиц.
  3. Тип 0 — заданный потенциал (Prescribed A); нулевые A_{0}, A_{1} и A_{2} дают A=0. Тип 5 — антипериодическое условие (Anti-periodic).
  4. На этом этапе условие только определено. Назначайте его конкретным отрезкам и дугам на этапе «Отрезки и дуги» по приведённым там таблицам.
  5. Имена созданных условий должны совпадать с именами в таблицах отрезков и дуг. Не назначайте внешнее граничное условие внутренним контурам, если это не указано в таблице.
Неполный учебный этап; решение не запускать.
Таблица 13.21. Нулевой потенциал
ПараметрЗначение
Тип границы0
A_{0}0
A_{1}0
A_{2}0
Фаза, {}^\circ0
Действительная часть коэффициента c_{0}0
Мнимая часть коэффициента c_{0}0
Действительная часть коэффициента c_{1}0
Мнимая часть коэффициента c_{1}0
Относительная магнитная проницаемость при малой глубине проникновения0
Удельная электрическая проводимость для условия малой глубины проникновения0
Внутренний угол, {}^\circ0
Внешний угол, {}^\circ0

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 4: Граничные условия
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 4. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 4: Граничные условия.
Рисунок 13.42. Машина с поверхностными постоянными магнитами. Шаг 4: Граничные условия. Открыть в полном размере

Перейти к следующему этапу →

Этап 5 из 11

Узлы и размеры геометрии

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. Переключитесь в режим узлов. Создавайте точки в порядке строк таблицы, вводя указанные координаты. Номер строки служит ссылкой для последующего соединения точек; это не имя, которое нужно присвоить узлу в FEMM.
  3. Размеры заданы в миллиметрах. Очень малые координаты порядка 10⁻¹⁴ мм означают вычислительный нуль. Таблицы округлены для чтения; полный набор исходных чисел сохранён в приложенной модели и программе этапа.
  4. Пока присутствуют только точки. Контуры, материалы областей и токовые назначения ещё не завершены.
Неполный учебный этап; решение не запускать.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.22. Координаты всех узлов
№ узлаx или r, ммy или z, ммГруппа
0-170-1700
1170-1700
21701700
3-1701700
46000
559,557,3120
655,2323,440
747,9236,110
845,9638,570
938,5745,960
1036,1147,920
1123,4455,230
127,31259,550
130600
14-7,31259,550
15-23,4455,230
16-36,1147,920
17-38,5745,960
18-45,9638,570
19-47,9236,110
20-55,2323,440
21-59,557,3120
22-6000
23-59,55-7,3120
24-55,23-23,440
25-47,92-36,110
26-45,96-38,570
27-38,57-45,960
28-36,11-47,920
29-23,44-55,230
30-7,312-59,550
310-600
327,312-59,550
3323,44-55,230
3436,11-47,920
3538,57-45,960
3645,96-38,570
3747,92-36,110
3855,23-23,440
3959,55-7,3120
4010000
4199,2512,190
4292,0539,070
4379,8660,180
4476,664,280
4564,2876,60
4660,1879,860
4739,0792,050
4812,1999,250
4901000
50-12,1999,250
51-39,0792,050
52-60,1879,860
53-64,2876,60
54-76,664,280
55-79,8660,180
56-92,0539,070
57-99,2512,190
58-10000
59-99,25-12,190
60-92,05-39,070
61-79,86-60,180
62-76,6-64,280
63-64,28-76,60
64-60,18-79,860
65-39,07-92,050
66-12,19-99,250
670-1000
6812,19-99,250
6939,07-92,050
7060,18-79,860
7164,28-76,60
7276,6-64,280
7379,86-60,180
7492,05-39,070
7599,25-12,190
7684,37-10,360
778500
7884,3710,360
7978,2433,210
8067,8851,150
8151,1567,880
8233,2178,240
8310,3684,370
840850
85-10,3684,370
86-33,2178,240
87-51,1567,880
88-67,8851,150
89-78,2433,210
90-84,3710,360
91-8500
92-84,37-10,360
93-78,24-33,210
94-67,88-51,150
95-51,15-67,880
96-33,21-78,240
97-10,36-84,370
980-850
9910,36-84,370
10033,21-78,240
10151,15-67,880
10267,88-51,150
10378,24-33,210
1041802
10517,872,1942
10616,577,0332
10714,3810,832
10813,7911,572
10911,5713,792
11010,8314,382
1117,03316,572
1122,19417,872
1130182
114-2,19417,872
115-7,03316,572
116-10,8314,382
117-11,5713,792
118-13,7911,572
119-14,3810,832
120-16,577,0332
121-17,872,1942
122-1802
123-17,87-2,1942
124-16,57-7,0332
125-14,38-10,832
126-13,79-11,572
127-11,57-13,792
128-10,83-14,382
129-7,033-16,572
130-2,194-17,872
1310-182
1322,194-17,872
1337,033-16,572
13410,83-14,382
13511,57-13,792
13613,79-11,572
13714,38-10,832
13816,57-7,0332
13917,87-2,1942
1404802
14147,645,852
14244,1818,762
14338,3328,892
14436,7730,852
14530,8536,772
14628,8938,332
14718,7644,182
1485,8547,642
1490482
150-5,8547,642
151-18,7644,182
152-28,8938,332
153-30,8536,772
154-36,7730,852
155-38,3328,892
156-44,1818,762
157-47,645,852
158-4802
159-47,64-5,852
160-44,18-18,762
161-38,33-28,892
162-36,77-30,852
163-30,85-36,772
164-28,89-38,332
165-18,76-44,182
166-5,85-47,642
1670-482
1685,85-47,642
16918,76-44,182
17028,89-38,332
17130,85-36,772
17236,77-30,852
17338,33-28,892
17444,18-18,762
17547,64-5,852
1765702
17756,586,9472
17852,4722,272
17945,5234,32
18043,6636,642
18136,6443,662
18234,345,522
18322,2752,472
1846,94756,582
1850572
186-6,94756,582
187-22,2752,472
188-34,345,522
189-36,6443,662
190-43,6636,642
191-45,5234,32
192-52,4722,272
193-56,586,9472
194-5702
195-56,58-6,9472
196-52,47-22,272
197-45,52-34,32
198-43,66-36,642
199-36,64-43,662
200-34,3-45,522
201-22,27-52,472
202-6,947-56,582
2030-572
2046,947-56,582
20522,27-52,472
20634,3-45,522
20736,64-43,662
20843,66-36,642
20945,52-34,32
21052,47-22,272
21156,58-6,9472

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 5: Узлы и размеры геометрии
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 5. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 5: Узлы и размеры геометрии.
Рисунок 13.43. Машина с поверхностными постоянными магнитами. Шаг 5: Узлы и размеры геометрии. Открыть в полном размере

Перейти к следующему этапу →

Этап 6 из 11

Отрезки и дуги

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. В режиме отрезков соедините пары узлов из первой таблицы. Координаты каждого конца найдите по номеру узла в таблице предыдущего этапа; каждая строка задаёт отдельный отрезок.
  3. В режиме дуг соедините пары узлов из второй таблицы. Угол отсчитывается от начального узла к конечному против часовой стрелки. Создавайте именно дуги, сохраняя заданный угол.
  4. Выделите каждый граничный отрезок или дугу и назначьте указанное условие через свойства объекта. Сохраните номера групп.
  5. Геометрия включает внешнюю воздушную область. На данном этапе ограничения сетки предварительные; точные ограничения будут восстановлены на шаге 9.
Неполный учебный этап; решение не запускать.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.23. Все отрезки и назначенные границы
№Начальный узелКонечный узелГраницаГруппа
001Нулевой потенциал0
112Нулевой потенциал0
223Нулевой потенциал0
330Нулевой потенциал0
43976Нет0
5578Нет0
6679Нет0
7780Нет0
81081Нет0
91182Нет0
101283Нет0
111485Нет0
121586Нет0
131687Нет0
141988Нет0
152089Нет0
162190Нет0
172392Нет0
182493Нет0
192594Нет0
202895Нет0
212996Нет0
223097Нет0
233299Нет0
2433100Нет0
2534101Нет0
2637102Нет0
2738103Нет0
28172208Нет2
29144180Нет2
30145181Нет2
31153189Нет2
32154190Нет2
33162198Нет2
34163199Нет2
35171207Нет2

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.24. Все дуги и назначенные границы
№Начальный узелКонечный узелУгол дуги, {}^\circГраницаГруппа
0457Нет0
15616Нет0
26714Нет0
3783Нет0
48910Нет0
59103Нет0
6101114Нет0
7111216Нет0
812137Нет0
913147Нет0
10141516Нет0
11151614Нет0
1216173Нет0
13171810Нет0
1418193Нет0
15192014Нет0
16202116Нет0
1721227Нет0
1822237Нет0
19232416Нет0
20242514Нет0
2125263Нет0
22262710Нет0
2327283Нет0
24282914Нет0
25293016Нет0
2630317Нет0
2731327Нет0
28323316Нет0
29333414Нет0
3034353Нет0
31353610Нет0
3236373Нет0
33373814Нет0
34383916Нет0
353947Нет0
3640417Нет0
37414216Нет0
38424314Нет0
3943443Нет0
40444510Нет0
4145463Нет0
42464714Нет0
43474816Нет0
4448497Нет0
4549507Нет0
46505116Нет0
47515214Нет0
4852533Нет0
49535410Нет0
5054553Нет0
51555614Нет0
52565716Нет0
5357587Нет0
5458597Нет0
55596016Нет0
56606114Нет0
5761623Нет0
58626310Нет0
5963643Нет0
60646514Нет0
61656616Нет0
6266677Нет0
6367687Нет0
64686916Нет0
65697014Нет0
6670713Нет0
67717210Нет0
6872733Нет0
69737414Нет0
70747516Нет0
7175407Нет0
7276777Нет0
7377787Нет0
74798014Нет0
75818214Нет0
7683847Нет0
7784857Нет0
78868714Нет0
79888914Нет0
8090917Нет0
8191927Нет0
82939414Нет0
83959614Нет0
8497987Нет0
8598997Нет0
8610010114Нет0
8710210314Нет0
881041057Нет2
8910510616Нет2
9010610714Нет2
911071083Нет2
9210810910Нет2
931091103Нет2
9411011114Нет2
9511111216Нет2
961121137Нет2
971131147Нет2
9811411516Нет2
9911511614Нет2
1001161173Нет2
10111711810Нет2
1021181193Нет2
10311912014Нет2
10412012116Нет2
1051211227Нет2
1061221237Нет2
10712312416Нет2
10812412514Нет2
1091251263Нет2
11012612710Нет2
1111271283Нет2
11212812914Нет2
11312913016Нет2
1141301317Нет2
1151311327Нет2
11613213316Нет2
11713313414Нет2
1181341353Нет2
11913513610Нет2
1201361373Нет2
12113713814Нет2
12213813916Нет2
1231391047Нет2
1241401417Нет2
12514114216Нет2
12614214314Нет2
1271431443Нет2
12814414510Нет2
1291451463Нет2
13014614714Нет2
13114714816Нет2
1321481497Нет2
1331491507Нет2
13415015116Нет2
13515115214Нет2
1361521533Нет2
13715315410Нет2
1381541553Нет2
13915515614Нет2
14015615716Нет2
1411571587Нет2
1421581597Нет2
14315916016Нет2
14416016114Нет2
1451611623Нет2
14616216310Нет2
1471631643Нет2
14816416514Нет2
14916516616Нет2
1501661677Нет2
1511671687Нет2
15216816916Нет2
15316917014Нет2
1541701713Нет2
15517117210Нет2
1561721733Нет2
15717317414Нет2
15817417516Нет2
1591751407Нет2
1601761777Нет2
16117717816Нет2
16217817914Нет2
1631791803Нет2
16418018110Нет2
1651811823Нет2
16618218314Нет2
16718318416Нет2
1681841857Нет2
1691851867Нет2
17018618716Нет2
17118718814Нет2
1721881893Нет2
17318919010Нет2
1741901913Нет2
17519119214Нет2
17619219316Нет2
1771931947Нет2
1781941957Нет2
17919519616Нет2
18019619714Нет2
1811971983Нет2
18219819910Нет2
1831992003Нет2
18420020114Нет2
18520120216Нет2
1862022037Нет2
1872032047Нет2
18820420516Нет2
18920520614Нет2
1902062073Нет2
19120720810Нет2
1922082093Нет2
19320921014Нет2
19421021116Нет2
1952111767Нет2

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 6: Отрезки и дуги
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
    (0, 1, -1, "Нулевой потенциал", 0, 0),
    (1, 2, -1, "Нулевой потенциал", 0, 0),
    (2, 3, -1, "Нулевой потенциал", 0, 0),
    (3, 0, -1, "Нулевой потенциал", 0, 0),
    (39, 76, -1, "", 0, 0),
    (5, 78, -1, "", 0, 0),
    (6, 79, -1, "", 0, 0),
    (7, 80, -1, "", 0, 0),
    (10, 81, -1, "", 0, 0),
    (11, 82, -1, "", 0, 0),
    (12, 83, -1, "", 0, 0),
    (14, 85, -1, "", 0, 0),
    (15, 86, -1, "", 0, 0),
    (16, 87, -1, "", 0, 0),
    (19, 88, -1, "", 0, 0),
    (20, 89, -1, "", 0, 0),
    (21, 90, -1, "", 0, 0),
    (23, 92, -1, "", 0, 0),
    (24, 93, -1, "", 0, 0),
    (25, 94, -1, "", 0, 0),
    (28, 95, -1, "", 0, 0),
    (29, 96, -1, "", 0, 0),
    (30, 97, -1, "", 0, 0),
    (32, 99, -1, "", 0, 0),
    (33, 100, -1, "", 0, 0),
    (34, 101, -1, "", 0, 0),
    (37, 102, -1, "", 0, 0),
    (38, 103, -1, "", 0, 0),
    (172, 208, -1, "", 0, 2),
    (144, 180, -1, "", 0, 2),
    (145, 181, -1, "", 0, 2),
    (153, 189, -1, "", 0, 2),
    (154, 190, -1, "", 0, 2),
    (162, 198, -1, "", 0, 2),
    (163, 199, -1, "", 0, 2),
    (171, 207, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addsegment(x0, y0, x1, y1)
    mi_selectsegment((x0+x1)/2, (y0+y1)/2)
    mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
    mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
    (4, 5, 7, 10, "", 0, 0),
    (5, 6, 16, 10, "", 0, 0),
    (6, 7, 14, 10, "", 0, 0),
    (7, 8, 3, 10, "", 0, 0),
    (8, 9, 10, 10, "", 0, 0),
    (9, 10, 3, 10, "", 0, 0),
    (10, 11, 14, 10, "", 0, 0),
    (11, 12, 16, 10, "", 0, 0),
    (12, 13, 7, 10, "", 0, 0),
    (13, 14, 7, 10, "", 0, 0),
    (14, 15, 16, 10, "", 0, 0),
    (15, 16, 14, 10, "", 0, 0),
    (16, 17, 3, 10, "", 0, 0),
    (17, 18, 10, 10, "", 0, 0),
    (18, 19, 3, 10, "", 0, 0),
    (19, 20, 14, 10, "", 0, 0),
    (20, 21, 16, 10, "", 0, 0),
    (21, 22, 7, 10, "", 0, 0),
    (22, 23, 7, 10, "", 0, 0),
    (23, 24, 16, 10, "", 0, 0),
    (24, 25, 14, 10, "", 0, 0),
    (25, 26, 3, 10, "", 0, 0),
    (26, 27, 10, 10, "", 0, 0),
    (27, 28, 3, 10, "", 0, 0),
    (28, 29, 14, 10, "", 0, 0),
    (29, 30, 16, 10, "", 0, 0),
    (30, 31, 7, 10, "", 0, 0),
    (31, 32, 7, 10, "", 0, 0),
    (32, 33, 16, 10, "", 0, 0),
    (33, 34, 14, 10, "", 0, 0),
    (34, 35, 3, 10, "", 0, 0),
    (35, 36, 10, 10, "", 0, 0),
    (36, 37, 3, 10, "", 0, 0),
    (37, 38, 14, 10, "", 0, 0),
    (38, 39, 16, 10, "", 0, 0),
    (39, 4, 7, 10, "", 0, 0),
    (40, 41, 7, 10, "", 0, 0),
    (41, 42, 16, 10, "", 0, 0),
    (42, 43, 14, 10, "", 0, 0),
    (43, 44, 3, 10, "", 0, 0),
    (44, 45, 10, 10, "", 0, 0),
    (45, 46, 3, 10, "", 0, 0),
    (46, 47, 14, 10, "", 0, 0),
    (47, 48, 16, 10, "", 0, 0),
    (48, 49, 7, 10, "", 0, 0),
    (49, 50, 7, 10, "", 0, 0),
    (50, 51, 16, 10, "", 0, 0),
    (51, 52, 14, 10, "", 0, 0),
    (52, 53, 3, 10, "", 0, 0),
    (53, 54, 10, 10, "", 0, 0),
    (54, 55, 3, 10, "", 0, 0),
    (55, 56, 14, 10, "", 0, 0),
    (56, 57, 16, 10, "", 0, 0),
    (57, 58, 7, 10, "", 0, 0),
    (58, 59, 7, 10, "", 0, 0),
    (59, 60, 16, 10, "", 0, 0),
    (60, 61, 14, 10, "", 0, 0),
    (61, 62, 3, 10, "", 0, 0),
    (62, 63, 10, 10, "", 0, 0),
    (63, 64, 3, 10, "", 0, 0),
    (64, 65, 14, 10, "", 0, 0),
    (65, 66, 16, 10, "", 0, 0),
    (66, 67, 7, 10, "", 0, 0),
    (67, 68, 7, 10, "", 0, 0),
    (68, 69, 16, 10, "", 0, 0),
    (69, 70, 14, 10, "", 0, 0),
    (70, 71, 3, 10, "", 0, 0),
    (71, 72, 10, 10, "", 0, 0),
    (72, 73, 3, 10, "", 0, 0),
    (73, 74, 14, 10, "", 0, 0),
    (74, 75, 16, 10, "", 0, 0),
    (75, 40, 7, 10, "", 0, 0),
    (76, 77, 7, 10, "", 0, 0),
    (77, 78, 7, 10, "", 0, 0),
    (79, 80, 14, 10, "", 0, 0),
    (81, 82, 14, 10, "", 0, 0),
    (83, 84, 7, 10, "", 0, 0),
    (84, 85, 7, 10, "", 0, 0),
    (86, 87, 14, 10, "", 0, 0),
    (88, 89, 14, 10, "", 0, 0),
    (90, 91, 7, 10, "", 0, 0),
    (91, 92, 7, 10, "", 0, 0),
    (93, 94, 14, 10, "", 0, 0),
    (95, 96, 14, 10, "", 0, 0),
    (97, 98, 7, 10, "", 0, 0),
    (98, 99, 7, 10, "", 0, 0),
    (100, 101, 14, 10, "", 0, 0),
    (102, 103, 14, 10, "", 0, 0),
    (104, 105, 7, 10, "", 0, 2),
    (105, 106, 16, 10, "", 0, 2),
    (106, 107, 14, 10, "", 0, 2),
    (107, 108, 3, 10, "", 0, 2),
    (108, 109, 10, 10, "", 0, 2),
    (109, 110, 3, 10, "", 0, 2),
    (110, 111, 14, 10, "", 0, 2),
    (111, 112, 16, 10, "", 0, 2),
    (112, 113, 7, 10, "", 0, 2),
    (113, 114, 7, 10, "", 0, 2),
    (114, 115, 16, 10, "", 0, 2),
    (115, 116, 14, 10, "", 0, 2),
    (116, 117, 3, 10, "", 0, 2),
    (117, 118, 10, 10, "", 0, 2),
    (118, 119, 3, 10, "", 0, 2),
    (119, 120, 14, 10, "", 0, 2),
    (120, 121, 16, 10, "", 0, 2),
    (121, 122, 7, 10, "", 0, 2),
    (122, 123, 7, 10, "", 0, 2),
    (123, 124, 16, 10, "", 0, 2),
    (124, 125, 14, 10, "", 0, 2),
    (125, 126, 3, 10, "", 0, 2),
    (126, 127, 10, 10, "", 0, 2),
    (127, 128, 3, 10, "", 0, 2),
    (128, 129, 14, 10, "", 0, 2),
    (129, 130, 16, 10, "", 0, 2),
    (130, 131, 7, 10, "", 0, 2),
    (131, 132, 7, 10, "", 0, 2),
    (132, 133, 16, 10, "", 0, 2),
    (133, 134, 14, 10, "", 0, 2),
    (134, 135, 3, 10, "", 0, 2),
    (135, 136, 10, 10, "", 0, 2),
    (136, 137, 3, 10, "", 0, 2),
    (137, 138, 14, 10, "", 0, 2),
    (138, 139, 16, 10, "", 0, 2),
    (139, 104, 7, 10, "", 0, 2),
    (140, 141, 7, 10, "", 0, 2),
    (141, 142, 16, 10, "", 0, 2),
    (142, 143, 14, 10, "", 0, 2),
    (143, 144, 3, 10, "", 0, 2),
    (144, 145, 10, 10, "", 0, 2),
    (145, 146, 3, 10, "", 0, 2),
    (146, 147, 14, 10, "", 0, 2),
    (147, 148, 16, 10, "", 0, 2),
    (148, 149, 7, 10, "", 0, 2),
    (149, 150, 7, 10, "", 0, 2),
    (150, 151, 16, 10, "", 0, 2),
    (151, 152, 14, 10, "", 0, 2),
    (152, 153, 3, 10, "", 0, 2),
    (153, 154, 10, 10, "", 0, 2),
    (154, 155, 3, 10, "", 0, 2),
    (155, 156, 14, 10, "", 0, 2),
    (156, 157, 16, 10, "", 0, 2),
    (157, 158, 7, 10, "", 0, 2),
    (158, 159, 7, 10, "", 0, 2),
    (159, 160, 16, 10, "", 0, 2),
    (160, 161, 14, 10, "", 0, 2),
    (161, 162, 3, 10, "", 0, 2),
    (162, 163, 10, 10, "", 0, 2),
    (163, 164, 3, 10, "", 0, 2),
    (164, 165, 14, 10, "", 0, 2),
    (165, 166, 16, 10, "", 0, 2),
    (166, 167, 7, 10, "", 0, 2),
    (167, 168, 7, 10, "", 0, 2),
    (168, 169, 16, 10, "", 0, 2),
    (169, 170, 14, 10, "", 0, 2),
    (170, 171, 3, 10, "", 0, 2),
    (171, 172, 10, 10, "", 0, 2),
    (172, 173, 3, 10, "", 0, 2),
    (173, 174, 14, 10, "", 0, 2),
    (174, 175, 16, 10, "", 0, 2),
    (175, 140, 7, 10, "", 0, 2),
    (176, 177, 7, 10, "", 0, 2),
    (177, 178, 16, 10, "", 0, 2),
    (178, 179, 14, 10, "", 0, 2),
    (179, 180, 3, 10, "", 0, 2),
    (180, 181, 10, 10, "", 0, 2),
    (181, 182, 3, 10, "", 0, 2),
    (182, 183, 14, 10, "", 0, 2),
    (183, 184, 16, 10, "", 0, 2),
    (184, 185, 7, 10, "", 0, 2),
    (185, 186, 7, 10, "", 0, 2),
    (186, 187, 16, 10, "", 0, 2),
    (187, 188, 14, 10, "", 0, 2),
    (188, 189, 3, 10, "", 0, 2),
    (189, 190, 10, 10, "", 0, 2),
    (190, 191, 3, 10, "", 0, 2),
    (191, 192, 14, 10, "", 0, 2),
    (192, 193, 16, 10, "", 0, 2),
    (193, 194, 7, 10, "", 0, 2),
    (194, 195, 7, 10, "", 0, 2),
    (195, 196, 16, 10, "", 0, 2),
    (196, 197, 14, 10, "", 0, 2),
    (197, 198, 3, 10, "", 0, 2),
    (198, 199, 10, 10, "", 0, 2),
    (199, 200, 3, 10, "", 0, 2),
    (200, 201, 14, 10, "", 0, 2),
    (201, 202, 16, 10, "", 0, 2),
    (202, 203, 7, 10, "", 0, 2),
    (203, 204, 7, 10, "", 0, 2),
    (204, 205, 16, 10, "", 0, 2),
    (205, 206, 14, 10, "", 0, 2),
    (206, 207, 3, 10, "", 0, 2),
    (207, 208, 10, 10, "", 0, 2),
    (208, 209, 3, 10, "", 0, 2),
    (209, 210, 14, 10, "", 0, 2),
    (210, 211, 16, 10, "", 0, 2),
    (211, 176, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addarc(x0, y0, x1, y1, angle, max_angle)
    half = math.radians(angle)/2
    cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
    cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
    xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
    ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
    mi_selectarcsegment(xm, ym)
    mi_setarcsegmentprop(max_angle, boundary, hidden, group)
    mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 6. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 6: Отрезки и дуги.
Рисунок 13.44. Машина с поверхностными постоянными магнитами. Шаг 6: Отрезки и дуги. Открыть в полном размере

Перейти к следующему этапу →

Этап 7 из 11

Метки замкнутых областей

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. В режиме меток добавьте по одной метке в каждую область в координатах таблицы.
  3. На этом этапе метки намеренно оставлены без материала и цепи. Каждая метка должна лежать строго внутри своего замкнутого контура. Обязательно добавьте метку внешней воздушной области.
  4. Не запускайте расчёт: присутствие точки метки ещё не назначает физические свойства.
Неполный учебный этап; решение не запускать.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.25. Положения всех меток
№x или r, ммy или z, ммБудущий материал
0144,5144,5Воздух
1094Линейная сталь
2730Обмоточная область
363,2236,5Обмоточная область
436,563,22Обмоточная область
5073Обмоточная область
6-36,563,22Обмоточная область
7-63,2236,5Обмоточная область
8-730Обмоточная область
9-63,22-36,5Обмоточная область
10-36,5-63,22Обмоточная область
110-73Обмоточная область
1236,5-63,22Обмоточная область
1363,22-36,5Обмоточная область
1422,6322,63Линейная сталь
15520Постоянный магнит
1636,7736,77Воздух
17052Постоянный магнит
18-36,7736,77Воздух
19-520Постоянный магнит
20-36,77-36,77Воздух
210-52Постоянный магнит
2236,77-36,77Воздух
2300Воздух
2456,4217,25Воздух

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 7: Метки замкнутых областей
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
    (0, 1, -1, "Нулевой потенциал", 0, 0),
    (1, 2, -1, "Нулевой потенциал", 0, 0),
    (2, 3, -1, "Нулевой потенциал", 0, 0),
    (3, 0, -1, "Нулевой потенциал", 0, 0),
    (39, 76, -1, "", 0, 0),
    (5, 78, -1, "", 0, 0),
    (6, 79, -1, "", 0, 0),
    (7, 80, -1, "", 0, 0),
    (10, 81, -1, "", 0, 0),
    (11, 82, -1, "", 0, 0),
    (12, 83, -1, "", 0, 0),
    (14, 85, -1, "", 0, 0),
    (15, 86, -1, "", 0, 0),
    (16, 87, -1, "", 0, 0),
    (19, 88, -1, "", 0, 0),
    (20, 89, -1, "", 0, 0),
    (21, 90, -1, "", 0, 0),
    (23, 92, -1, "", 0, 0),
    (24, 93, -1, "", 0, 0),
    (25, 94, -1, "", 0, 0),
    (28, 95, -1, "", 0, 0),
    (29, 96, -1, "", 0, 0),
    (30, 97, -1, "", 0, 0),
    (32, 99, -1, "", 0, 0),
    (33, 100, -1, "", 0, 0),
    (34, 101, -1, "", 0, 0),
    (37, 102, -1, "", 0, 0),
    (38, 103, -1, "", 0, 0),
    (172, 208, -1, "", 0, 2),
    (144, 180, -1, "", 0, 2),
    (145, 181, -1, "", 0, 2),
    (153, 189, -1, "", 0, 2),
    (154, 190, -1, "", 0, 2),
    (162, 198, -1, "", 0, 2),
    (163, 199, -1, "", 0, 2),
    (171, 207, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addsegment(x0, y0, x1, y1)
    mi_selectsegment((x0+x1)/2, (y0+y1)/2)
    mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
    mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
    (4, 5, 7, 10, "", 0, 0),
    (5, 6, 16, 10, "", 0, 0),
    (6, 7, 14, 10, "", 0, 0),
    (7, 8, 3, 10, "", 0, 0),
    (8, 9, 10, 10, "", 0, 0),
    (9, 10, 3, 10, "", 0, 0),
    (10, 11, 14, 10, "", 0, 0),
    (11, 12, 16, 10, "", 0, 0),
    (12, 13, 7, 10, "", 0, 0),
    (13, 14, 7, 10, "", 0, 0),
    (14, 15, 16, 10, "", 0, 0),
    (15, 16, 14, 10, "", 0, 0),
    (16, 17, 3, 10, "", 0, 0),
    (17, 18, 10, 10, "", 0, 0),
    (18, 19, 3, 10, "", 0, 0),
    (19, 20, 14, 10, "", 0, 0),
    (20, 21, 16, 10, "", 0, 0),
    (21, 22, 7, 10, "", 0, 0),
    (22, 23, 7, 10, "", 0, 0),
    (23, 24, 16, 10, "", 0, 0),
    (24, 25, 14, 10, "", 0, 0),
    (25, 26, 3, 10, "", 0, 0),
    (26, 27, 10, 10, "", 0, 0),
    (27, 28, 3, 10, "", 0, 0),
    (28, 29, 14, 10, "", 0, 0),
    (29, 30, 16, 10, "", 0, 0),
    (30, 31, 7, 10, "", 0, 0),
    (31, 32, 7, 10, "", 0, 0),
    (32, 33, 16, 10, "", 0, 0),
    (33, 34, 14, 10, "", 0, 0),
    (34, 35, 3, 10, "", 0, 0),
    (35, 36, 10, 10, "", 0, 0),
    (36, 37, 3, 10, "", 0, 0),
    (37, 38, 14, 10, "", 0, 0),
    (38, 39, 16, 10, "", 0, 0),
    (39, 4, 7, 10, "", 0, 0),
    (40, 41, 7, 10, "", 0, 0),
    (41, 42, 16, 10, "", 0, 0),
    (42, 43, 14, 10, "", 0, 0),
    (43, 44, 3, 10, "", 0, 0),
    (44, 45, 10, 10, "", 0, 0),
    (45, 46, 3, 10, "", 0, 0),
    (46, 47, 14, 10, "", 0, 0),
    (47, 48, 16, 10, "", 0, 0),
    (48, 49, 7, 10, "", 0, 0),
    (49, 50, 7, 10, "", 0, 0),
    (50, 51, 16, 10, "", 0, 0),
    (51, 52, 14, 10, "", 0, 0),
    (52, 53, 3, 10, "", 0, 0),
    (53, 54, 10, 10, "", 0, 0),
    (54, 55, 3, 10, "", 0, 0),
    (55, 56, 14, 10, "", 0, 0),
    (56, 57, 16, 10, "", 0, 0),
    (57, 58, 7, 10, "", 0, 0),
    (58, 59, 7, 10, "", 0, 0),
    (59, 60, 16, 10, "", 0, 0),
    (60, 61, 14, 10, "", 0, 0),
    (61, 62, 3, 10, "", 0, 0),
    (62, 63, 10, 10, "", 0, 0),
    (63, 64, 3, 10, "", 0, 0),
    (64, 65, 14, 10, "", 0, 0),
    (65, 66, 16, 10, "", 0, 0),
    (66, 67, 7, 10, "", 0, 0),
    (67, 68, 7, 10, "", 0, 0),
    (68, 69, 16, 10, "", 0, 0),
    (69, 70, 14, 10, "", 0, 0),
    (70, 71, 3, 10, "", 0, 0),
    (71, 72, 10, 10, "", 0, 0),
    (72, 73, 3, 10, "", 0, 0),
    (73, 74, 14, 10, "", 0, 0),
    (74, 75, 16, 10, "", 0, 0),
    (75, 40, 7, 10, "", 0, 0),
    (76, 77, 7, 10, "", 0, 0),
    (77, 78, 7, 10, "", 0, 0),
    (79, 80, 14, 10, "", 0, 0),
    (81, 82, 14, 10, "", 0, 0),
    (83, 84, 7, 10, "", 0, 0),
    (84, 85, 7, 10, "", 0, 0),
    (86, 87, 14, 10, "", 0, 0),
    (88, 89, 14, 10, "", 0, 0),
    (90, 91, 7, 10, "", 0, 0),
    (91, 92, 7, 10, "", 0, 0),
    (93, 94, 14, 10, "", 0, 0),
    (95, 96, 14, 10, "", 0, 0),
    (97, 98, 7, 10, "", 0, 0),
    (98, 99, 7, 10, "", 0, 0),
    (100, 101, 14, 10, "", 0, 0),
    (102, 103, 14, 10, "", 0, 0),
    (104, 105, 7, 10, "", 0, 2),
    (105, 106, 16, 10, "", 0, 2),
    (106, 107, 14, 10, "", 0, 2),
    (107, 108, 3, 10, "", 0, 2),
    (108, 109, 10, 10, "", 0, 2),
    (109, 110, 3, 10, "", 0, 2),
    (110, 111, 14, 10, "", 0, 2),
    (111, 112, 16, 10, "", 0, 2),
    (112, 113, 7, 10, "", 0, 2),
    (113, 114, 7, 10, "", 0, 2),
    (114, 115, 16, 10, "", 0, 2),
    (115, 116, 14, 10, "", 0, 2),
    (116, 117, 3, 10, "", 0, 2),
    (117, 118, 10, 10, "", 0, 2),
    (118, 119, 3, 10, "", 0, 2),
    (119, 120, 14, 10, "", 0, 2),
    (120, 121, 16, 10, "", 0, 2),
    (121, 122, 7, 10, "", 0, 2),
    (122, 123, 7, 10, "", 0, 2),
    (123, 124, 16, 10, "", 0, 2),
    (124, 125, 14, 10, "", 0, 2),
    (125, 126, 3, 10, "", 0, 2),
    (126, 127, 10, 10, "", 0, 2),
    (127, 128, 3, 10, "", 0, 2),
    (128, 129, 14, 10, "", 0, 2),
    (129, 130, 16, 10, "", 0, 2),
    (130, 131, 7, 10, "", 0, 2),
    (131, 132, 7, 10, "", 0, 2),
    (132, 133, 16, 10, "", 0, 2),
    (133, 134, 14, 10, "", 0, 2),
    (134, 135, 3, 10, "", 0, 2),
    (135, 136, 10, 10, "", 0, 2),
    (136, 137, 3, 10, "", 0, 2),
    (137, 138, 14, 10, "", 0, 2),
    (138, 139, 16, 10, "", 0, 2),
    (139, 104, 7, 10, "", 0, 2),
    (140, 141, 7, 10, "", 0, 2),
    (141, 142, 16, 10, "", 0, 2),
    (142, 143, 14, 10, "", 0, 2),
    (143, 144, 3, 10, "", 0, 2),
    (144, 145, 10, 10, "", 0, 2),
    (145, 146, 3, 10, "", 0, 2),
    (146, 147, 14, 10, "", 0, 2),
    (147, 148, 16, 10, "", 0, 2),
    (148, 149, 7, 10, "", 0, 2),
    (149, 150, 7, 10, "", 0, 2),
    (150, 151, 16, 10, "", 0, 2),
    (151, 152, 14, 10, "", 0, 2),
    (152, 153, 3, 10, "", 0, 2),
    (153, 154, 10, 10, "", 0, 2),
    (154, 155, 3, 10, "", 0, 2),
    (155, 156, 14, 10, "", 0, 2),
    (156, 157, 16, 10, "", 0, 2),
    (157, 158, 7, 10, "", 0, 2),
    (158, 159, 7, 10, "", 0, 2),
    (159, 160, 16, 10, "", 0, 2),
    (160, 161, 14, 10, "", 0, 2),
    (161, 162, 3, 10, "", 0, 2),
    (162, 163, 10, 10, "", 0, 2),
    (163, 164, 3, 10, "", 0, 2),
    (164, 165, 14, 10, "", 0, 2),
    (165, 166, 16, 10, "", 0, 2),
    (166, 167, 7, 10, "", 0, 2),
    (167, 168, 7, 10, "", 0, 2),
    (168, 169, 16, 10, "", 0, 2),
    (169, 170, 14, 10, "", 0, 2),
    (170, 171, 3, 10, "", 0, 2),
    (171, 172, 10, 10, "", 0, 2),
    (172, 173, 3, 10, "", 0, 2),
    (173, 174, 14, 10, "", 0, 2),
    (174, 175, 16, 10, "", 0, 2),
    (175, 140, 7, 10, "", 0, 2),
    (176, 177, 7, 10, "", 0, 2),
    (177, 178, 16, 10, "", 0, 2),
    (178, 179, 14, 10, "", 0, 2),
    (179, 180, 3, 10, "", 0, 2),
    (180, 181, 10, 10, "", 0, 2),
    (181, 182, 3, 10, "", 0, 2),
    (182, 183, 14, 10, "", 0, 2),
    (183, 184, 16, 10, "", 0, 2),
    (184, 185, 7, 10, "", 0, 2),
    (185, 186, 7, 10, "", 0, 2),
    (186, 187, 16, 10, "", 0, 2),
    (187, 188, 14, 10, "", 0, 2),
    (188, 189, 3, 10, "", 0, 2),
    (189, 190, 10, 10, "", 0, 2),
    (190, 191, 3, 10, "", 0, 2),
    (191, 192, 14, 10, "", 0, 2),
    (192, 193, 16, 10, "", 0, 2),
    (193, 194, 7, 10, "", 0, 2),
    (194, 195, 7, 10, "", 0, 2),
    (195, 196, 16, 10, "", 0, 2),
    (196, 197, 14, 10, "", 0, 2),
    (197, 198, 3, 10, "", 0, 2),
    (198, 199, 10, 10, "", 0, 2),
    (199, 200, 3, 10, "", 0, 2),
    (200, 201, 14, 10, "", 0, 2),
    (201, 202, 16, 10, "", 0, 2),
    (202, 203, 7, 10, "", 0, 2),
    (203, 204, 7, 10, "", 0, 2),
    (204, 205, 16, 10, "", 0, 2),
    (205, 206, 14, 10, "", 0, 2),
    (206, 207, 3, 10, "", 0, 2),
    (207, 208, 10, 10, "", 0, 2),
    (208, 209, 3, 10, "", 0, 2),
    (209, 210, 14, 10, "", 0, 2),
    (210, 211, 16, 10, "", 0, 2),
    (211, 176, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addarc(x0, y0, x1, y1, angle, max_angle)
    half = math.radians(angle)/2
    cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
    cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
    xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
    ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
    mi_selectarcsegment(xm, ym)
    mi_setarcsegmentprop(max_angle, boundary, hidden, group)
    mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
    (144.5, 144.5, "", 0, "", 0, 0, 1),
    (0, 94, "", 0, "", 0, 0, 1),
    (73, 0, "", 0, "", 0, 0, 1),
    (63.219854476264025, 36.499999999999993, "", 0, "", 0, 0, 1),
    (36.500000000000007, 63.219854476264018, "", 0, "", 0, 0, 1),
    (4.469813191451677e-15, 73, "", 0, "", 0, 0, 1),
    (-36.499999999999986, 63.219854476264025, "", 0, "", 0, 0, 1),
    (-63.219854476264025, 36.499999999999993, "", 0, "", 0, 0, 1),
    (-73, 8.939626382903354e-15, "", 0, "", 0, 0, 1),
    (-63.219854476264018, -36.500000000000007, "", 0, "", 0, 0, 1),
    (-36.500000000000036, -63.219854476264004, "", 0, "", 0, 0, 1),
    (-1.3409439574355031e-14, -73, "", 0, "", 0, 0, 1),
    (36.500000000000007, -63.219854476264018, "", 0, "", 0, 0, 1),
    (63.219854476264004, -36.500000000000036, "", 0, "", 0, 0, 1),
    (22.627416997969522, 22.627416997969519, "", 0, "", 0, 0, 1),
    (52, 0, "", 0, "", 0, 0, 1),
    (36.769552621700477, 36.76955262170047, "", 0, "", 0, 0, 1),
    (3.1839765199381809e-15, 52, "", 0, "", 0, 0, 1),
    (-36.76955262170047, 36.769552621700477, "", 0, "", 0, 0, 1),
    (-52, 6.3679530398763617e-15, "", 0, "", 0, 0, 1),
    (-36.769552621700477, -36.76955262170047, "", 0, "", 0, 0, 1),
    (-9.5519295598145426e-15, -52, "", 0, "", 0, 0, 1),
    (36.769552621700463, -36.769552621700477, "", 0, "", 0, 0, 1),
    (0, 0, "", 0, "", 0, 0, 1),
    (56.421980601819094, 17.249930578641468, "", 0, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
    mi_addblocklabel(x, y)
    if material:
        mi_selectlabel(x, y)
        mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
        mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 7. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 7: Метки замкнутых областей.
Рисунок 13.45. Машина с поверхностными постоянными магнитами. Шаг 7: Метки замкнутых областей. Открыть в полном размере

Перейти к следующему этапу →

Этап 8 из 11

Назначения материалов и обмоток

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. Выделяйте метки по координатам и открывайте их свойства (Block Label Properties). Назначьте материал, цепь и число витков со знаком из полной таблицы.
  3. Для магнитов задайте направление намагничивания: число означает угол в градусах; theta и theta+180 — функции координат, поэтому их английские технические идентификаторы сохраняются.
  4. Восстановите группы: группа 2 используется для выделения ротора или отдельного якоря при вычислении силы/момента, если это предусмотрено вариантом.
  5. Материалы и обмотки уже назначены, но локальные размеры сетки этого промежуточного файла ещё автоматические. Не запускайте расчёт: сначала перейдите к следующему этапу и восстановите указанные там ограничения сетки.
Назначения выполнены, но эталонные ограничения сетки ещё не восстановлены. Расчёт пока не запускать.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.26. Материалы, цепи и витки каждой области
№x или r, ммy или z, ммМатериалЦепьВитки со знакомНамагничиваниеГруппа
0144,5144,5ВоздухНет10^\circ0
1094Линейная стальНет10^\circ1
2730Обмоточная областьФаза А400^\circ1
363,2236,5Обмоточная областьФаза С-400^\circ1
436,563,22Обмоточная областьФаза В400^\circ1
5073Обмоточная областьФаза А-400^\circ1
6-36,563,22Обмоточная областьФаза С400^\circ1
7-63,2236,5Обмоточная областьФаза В-400^\circ1
8-730Обмоточная областьФаза А400^\circ1
9-63,22-36,5Обмоточная областьФаза С-400^\circ1
10-36,5-63,22Обмоточная областьФаза В400^\circ1
110-73Обмоточная областьФаза А-400^\circ1
1236,5-63,22Обмоточная областьФаза С400^\circ1
1363,22-36,5Обмоточная областьФаза В-400^\circ1
1422,6322,63Линейная стальНет10^\circ2
15520Постоянный магнитНет1theta2
1636,7736,77ВоздухНет10^\circ2
17052Постоянный магнитНет1theta+1802
18-36,7736,77ВоздухНет10^\circ2
19-520Постоянный магнитНет1theta2
20-36,77-36,77ВоздухНет10^\circ2
210-52Постоянный магнитНет1theta+1802
2236,77-36,77ВоздухНет10^\circ2
2300ВоздухНет10^\circ2
2456,4217,25ВоздухНет10^\circ0

Сохранённое состояние этапа

Промежуточный этап построения. Перед расчётом завершите оставшиеся настройки модели.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 8: Назначения материалов и обмоток
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
    (0, 1, -1, "Нулевой потенциал", 0, 0),
    (1, 2, -1, "Нулевой потенциал", 0, 0),
    (2, 3, -1, "Нулевой потенциал", 0, 0),
    (3, 0, -1, "Нулевой потенциал", 0, 0),
    (39, 76, -1, "", 0, 0),
    (5, 78, -1, "", 0, 0),
    (6, 79, -1, "", 0, 0),
    (7, 80, -1, "", 0, 0),
    (10, 81, -1, "", 0, 0),
    (11, 82, -1, "", 0, 0),
    (12, 83, -1, "", 0, 0),
    (14, 85, -1, "", 0, 0),
    (15, 86, -1, "", 0, 0),
    (16, 87, -1, "", 0, 0),
    (19, 88, -1, "", 0, 0),
    (20, 89, -1, "", 0, 0),
    (21, 90, -1, "", 0, 0),
    (23, 92, -1, "", 0, 0),
    (24, 93, -1, "", 0, 0),
    (25, 94, -1, "", 0, 0),
    (28, 95, -1, "", 0, 0),
    (29, 96, -1, "", 0, 0),
    (30, 97, -1, "", 0, 0),
    (32, 99, -1, "", 0, 0),
    (33, 100, -1, "", 0, 0),
    (34, 101, -1, "", 0, 0),
    (37, 102, -1, "", 0, 0),
    (38, 103, -1, "", 0, 0),
    (172, 208, -1, "", 0, 2),
    (144, 180, -1, "", 0, 2),
    (145, 181, -1, "", 0, 2),
    (153, 189, -1, "", 0, 2),
    (154, 190, -1, "", 0, 2),
    (162, 198, -1, "", 0, 2),
    (163, 199, -1, "", 0, 2),
    (171, 207, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addsegment(x0, y0, x1, y1)
    mi_selectsegment((x0+x1)/2, (y0+y1)/2)
    mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
    mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
    (4, 5, 7, 10, "", 0, 0),
    (5, 6, 16, 10, "", 0, 0),
    (6, 7, 14, 10, "", 0, 0),
    (7, 8, 3, 10, "", 0, 0),
    (8, 9, 10, 10, "", 0, 0),
    (9, 10, 3, 10, "", 0, 0),
    (10, 11, 14, 10, "", 0, 0),
    (11, 12, 16, 10, "", 0, 0),
    (12, 13, 7, 10, "", 0, 0),
    (13, 14, 7, 10, "", 0, 0),
    (14, 15, 16, 10, "", 0, 0),
    (15, 16, 14, 10, "", 0, 0),
    (16, 17, 3, 10, "", 0, 0),
    (17, 18, 10, 10, "", 0, 0),
    (18, 19, 3, 10, "", 0, 0),
    (19, 20, 14, 10, "", 0, 0),
    (20, 21, 16, 10, "", 0, 0),
    (21, 22, 7, 10, "", 0, 0),
    (22, 23, 7, 10, "", 0, 0),
    (23, 24, 16, 10, "", 0, 0),
    (24, 25, 14, 10, "", 0, 0),
    (25, 26, 3, 10, "", 0, 0),
    (26, 27, 10, 10, "", 0, 0),
    (27, 28, 3, 10, "", 0, 0),
    (28, 29, 14, 10, "", 0, 0),
    (29, 30, 16, 10, "", 0, 0),
    (30, 31, 7, 10, "", 0, 0),
    (31, 32, 7, 10, "", 0, 0),
    (32, 33, 16, 10, "", 0, 0),
    (33, 34, 14, 10, "", 0, 0),
    (34, 35, 3, 10, "", 0, 0),
    (35, 36, 10, 10, "", 0, 0),
    (36, 37, 3, 10, "", 0, 0),
    (37, 38, 14, 10, "", 0, 0),
    (38, 39, 16, 10, "", 0, 0),
    (39, 4, 7, 10, "", 0, 0),
    (40, 41, 7, 10, "", 0, 0),
    (41, 42, 16, 10, "", 0, 0),
    (42, 43, 14, 10, "", 0, 0),
    (43, 44, 3, 10, "", 0, 0),
    (44, 45, 10, 10, "", 0, 0),
    (45, 46, 3, 10, "", 0, 0),
    (46, 47, 14, 10, "", 0, 0),
    (47, 48, 16, 10, "", 0, 0),
    (48, 49, 7, 10, "", 0, 0),
    (49, 50, 7, 10, "", 0, 0),
    (50, 51, 16, 10, "", 0, 0),
    (51, 52, 14, 10, "", 0, 0),
    (52, 53, 3, 10, "", 0, 0),
    (53, 54, 10, 10, "", 0, 0),
    (54, 55, 3, 10, "", 0, 0),
    (55, 56, 14, 10, "", 0, 0),
    (56, 57, 16, 10, "", 0, 0),
    (57, 58, 7, 10, "", 0, 0),
    (58, 59, 7, 10, "", 0, 0),
    (59, 60, 16, 10, "", 0, 0),
    (60, 61, 14, 10, "", 0, 0),
    (61, 62, 3, 10, "", 0, 0),
    (62, 63, 10, 10, "", 0, 0),
    (63, 64, 3, 10, "", 0, 0),
    (64, 65, 14, 10, "", 0, 0),
    (65, 66, 16, 10, "", 0, 0),
    (66, 67, 7, 10, "", 0, 0),
    (67, 68, 7, 10, "", 0, 0),
    (68, 69, 16, 10, "", 0, 0),
    (69, 70, 14, 10, "", 0, 0),
    (70, 71, 3, 10, "", 0, 0),
    (71, 72, 10, 10, "", 0, 0),
    (72, 73, 3, 10, "", 0, 0),
    (73, 74, 14, 10, "", 0, 0),
    (74, 75, 16, 10, "", 0, 0),
    (75, 40, 7, 10, "", 0, 0),
    (76, 77, 7, 10, "", 0, 0),
    (77, 78, 7, 10, "", 0, 0),
    (79, 80, 14, 10, "", 0, 0),
    (81, 82, 14, 10, "", 0, 0),
    (83, 84, 7, 10, "", 0, 0),
    (84, 85, 7, 10, "", 0, 0),
    (86, 87, 14, 10, "", 0, 0),
    (88, 89, 14, 10, "", 0, 0),
    (90, 91, 7, 10, "", 0, 0),
    (91, 92, 7, 10, "", 0, 0),
    (93, 94, 14, 10, "", 0, 0),
    (95, 96, 14, 10, "", 0, 0),
    (97, 98, 7, 10, "", 0, 0),
    (98, 99, 7, 10, "", 0, 0),
    (100, 101, 14, 10, "", 0, 0),
    (102, 103, 14, 10, "", 0, 0),
    (104, 105, 7, 10, "", 0, 2),
    (105, 106, 16, 10, "", 0, 2),
    (106, 107, 14, 10, "", 0, 2),
    (107, 108, 3, 10, "", 0, 2),
    (108, 109, 10, 10, "", 0, 2),
    (109, 110, 3, 10, "", 0, 2),
    (110, 111, 14, 10, "", 0, 2),
    (111, 112, 16, 10, "", 0, 2),
    (112, 113, 7, 10, "", 0, 2),
    (113, 114, 7, 10, "", 0, 2),
    (114, 115, 16, 10, "", 0, 2),
    (115, 116, 14, 10, "", 0, 2),
    (116, 117, 3, 10, "", 0, 2),
    (117, 118, 10, 10, "", 0, 2),
    (118, 119, 3, 10, "", 0, 2),
    (119, 120, 14, 10, "", 0, 2),
    (120, 121, 16, 10, "", 0, 2),
    (121, 122, 7, 10, "", 0, 2),
    (122, 123, 7, 10, "", 0, 2),
    (123, 124, 16, 10, "", 0, 2),
    (124, 125, 14, 10, "", 0, 2),
    (125, 126, 3, 10, "", 0, 2),
    (126, 127, 10, 10, "", 0, 2),
    (127, 128, 3, 10, "", 0, 2),
    (128, 129, 14, 10, "", 0, 2),
    (129, 130, 16, 10, "", 0, 2),
    (130, 131, 7, 10, "", 0, 2),
    (131, 132, 7, 10, "", 0, 2),
    (132, 133, 16, 10, "", 0, 2),
    (133, 134, 14, 10, "", 0, 2),
    (134, 135, 3, 10, "", 0, 2),
    (135, 136, 10, 10, "", 0, 2),
    (136, 137, 3, 10, "", 0, 2),
    (137, 138, 14, 10, "", 0, 2),
    (138, 139, 16, 10, "", 0, 2),
    (139, 104, 7, 10, "", 0, 2),
    (140, 141, 7, 10, "", 0, 2),
    (141, 142, 16, 10, "", 0, 2),
    (142, 143, 14, 10, "", 0, 2),
    (143, 144, 3, 10, "", 0, 2),
    (144, 145, 10, 10, "", 0, 2),
    (145, 146, 3, 10, "", 0, 2),
    (146, 147, 14, 10, "", 0, 2),
    (147, 148, 16, 10, "", 0, 2),
    (148, 149, 7, 10, "", 0, 2),
    (149, 150, 7, 10, "", 0, 2),
    (150, 151, 16, 10, "", 0, 2),
    (151, 152, 14, 10, "", 0, 2),
    (152, 153, 3, 10, "", 0, 2),
    (153, 154, 10, 10, "", 0, 2),
    (154, 155, 3, 10, "", 0, 2),
    (155, 156, 14, 10, "", 0, 2),
    (156, 157, 16, 10, "", 0, 2),
    (157, 158, 7, 10, "", 0, 2),
    (158, 159, 7, 10, "", 0, 2),
    (159, 160, 16, 10, "", 0, 2),
    (160, 161, 14, 10, "", 0, 2),
    (161, 162, 3, 10, "", 0, 2),
    (162, 163, 10, 10, "", 0, 2),
    (163, 164, 3, 10, "", 0, 2),
    (164, 165, 14, 10, "", 0, 2),
    (165, 166, 16, 10, "", 0, 2),
    (166, 167, 7, 10, "", 0, 2),
    (167, 168, 7, 10, "", 0, 2),
    (168, 169, 16, 10, "", 0, 2),
    (169, 170, 14, 10, "", 0, 2),
    (170, 171, 3, 10, "", 0, 2),
    (171, 172, 10, 10, "", 0, 2),
    (172, 173, 3, 10, "", 0, 2),
    (173, 174, 14, 10, "", 0, 2),
    (174, 175, 16, 10, "", 0, 2),
    (175, 140, 7, 10, "", 0, 2),
    (176, 177, 7, 10, "", 0, 2),
    (177, 178, 16, 10, "", 0, 2),
    (178, 179, 14, 10, "", 0, 2),
    (179, 180, 3, 10, "", 0, 2),
    (180, 181, 10, 10, "", 0, 2),
    (181, 182, 3, 10, "", 0, 2),
    (182, 183, 14, 10, "", 0, 2),
    (183, 184, 16, 10, "", 0, 2),
    (184, 185, 7, 10, "", 0, 2),
    (185, 186, 7, 10, "", 0, 2),
    (186, 187, 16, 10, "", 0, 2),
    (187, 188, 14, 10, "", 0, 2),
    (188, 189, 3, 10, "", 0, 2),
    (189, 190, 10, 10, "", 0, 2),
    (190, 191, 3, 10, "", 0, 2),
    (191, 192, 14, 10, "", 0, 2),
    (192, 193, 16, 10, "", 0, 2),
    (193, 194, 7, 10, "", 0, 2),
    (194, 195, 7, 10, "", 0, 2),
    (195, 196, 16, 10, "", 0, 2),
    (196, 197, 14, 10, "", 0, 2),
    (197, 198, 3, 10, "", 0, 2),
    (198, 199, 10, 10, "", 0, 2),
    (199, 200, 3, 10, "", 0, 2),
    (200, 201, 14, 10, "", 0, 2),
    (201, 202, 16, 10, "", 0, 2),
    (202, 203, 7, 10, "", 0, 2),
    (203, 204, 7, 10, "", 0, 2),
    (204, 205, 16, 10, "", 0, 2),
    (205, 206, 14, 10, "", 0, 2),
    (206, 207, 3, 10, "", 0, 2),
    (207, 208, 10, 10, "", 0, 2),
    (208, 209, 3, 10, "", 0, 2),
    (209, 210, 14, 10, "", 0, 2),
    (210, 211, 16, 10, "", 0, 2),
    (211, 176, 7, 10, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addarc(x0, y0, x1, y1, angle, max_angle)
    half = math.radians(angle)/2
    cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
    cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
    xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
    ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
    mi_selectarcsegment(xm, ym)
    mi_setarcsegmentprop(max_angle, boundary, hidden, group)
    mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
    (144.5, 144.5, "Воздух", 0, "", 0, 0, 1),
    (0, 94, "Линейная сталь", 0, "", 0, 1, 1),
    (73, 0, "Обмоточная область", 0, "Фаза А", 0, 1, 40),
    (63.219854476264025, 36.499999999999993, "Обмоточная область", 0, "Фаза С", 0, 1, -40),
    (36.500000000000007, 63.219854476264018, "Обмоточная область", 0, "Фаза В", 0, 1, 40),
    (4.469813191451677e-15, 73, "Обмоточная область", 0, "Фаза А", 0, 1, -40),
    (-36.499999999999986, 63.219854476264025, "Обмоточная область", 0, "Фаза С", 0, 1, 40),
    (-63.219854476264025, 36.499999999999993, "Обмоточная область", 0, "Фаза В", 0, 1, -40),
    (-73, 8.939626382903354e-15, "Обмоточная область", 0, "Фаза А", 0, 1, 40),
    (-63.219854476264018, -36.500000000000007, "Обмоточная область", 0, "Фаза С", 0, 1, -40),
    (-36.500000000000036, -63.219854476264004, "Обмоточная область", 0, "Фаза В", 0, 1, 40),
    (-1.3409439574355031e-14, -73, "Обмоточная область", 0, "Фаза А", 0, 1, -40),
    (36.500000000000007, -63.219854476264018, "Обмоточная область", 0, "Фаза С", 0, 1, 40),
    (63.219854476264004, -36.500000000000036, "Обмоточная область", 0, "Фаза В", 0, 1, -40),
    (22.627416997969522, 22.627416997969519, "Линейная сталь", 0, "", 0, 2, 1),
    (52, 0, "Постоянный магнит", 0, "", "theta", 2, 1),
    (36.769552621700477, 36.76955262170047, "Воздух", 0, "", 0, 2, 1),
    (3.1839765199381809e-15, 52, "Постоянный магнит", 0, "", "theta+180", 2, 1),
    (-36.76955262170047, 36.769552621700477, "Воздух", 0, "", 0, 2, 1),
    (-52, 6.3679530398763617e-15, "Постоянный магнит", 0, "", "theta", 2, 1),
    (-36.769552621700477, -36.76955262170047, "Воздух", 0, "", 0, 2, 1),
    (-9.5519295598145426e-15, -52, "Постоянный магнит", 0, "", "theta+180", 2, 1),
    (36.769552621700463, -36.769552621700477, "Воздух", 0, "", 0, 2, 1),
    (0, 0, "Воздух", 0, "", 0, 2, 1),
    (56.421980601819094, 17.249930578641468, "Воздух", 0, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
    mi_addblocklabel(x, y)
    if material:
        mi_selectlabel(x, y)
        mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
        mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 8. Модель неполная: переходите к следующему этапу, не запускайте решение.")
Машина с поверхностными постоянными магнитами. Шаг 8: Назначения материалов и обмоток.
Рисунок 13.46. Машина с поверхностными постоянными магнитами. Шаг 8: Назначения материалов и обмоток. Открыть в полном размере

Перейти к следующему этапу →

Этап 9 из 11

Локальные размеры сетки и готовая модель

  1. Продолжайте модель предыдущего этапа: уже заданные свойства и геометрию сохраняйте. Скачиваемый файл этого этапа содержит все предыдущие действия вместе с текущими изменениями.
  2. Откройте свойства каждой метки; снимите Auto mesh для положительного размера и укажите значение в миллиметрах. Нулевой либо отрицательный размер означает автоматический выбор.
  3. Проверьте ограничения длины на отрезках и угла на дугах по отдельным таблицам. Для дуги ограничение задаётся в градусах, а не в миллиметрах.
  4. Сверьте глобальный минимальный угол, умную сетку, материалы, токи, границы и все назначения. Теперь файл содержит полное состояние проверенного исходного варианта.
  5. Сохраните собственную рабочую копию через «Файл → Сохранить как». Изменённая пользователем копия должна рассчитываться заново; унаследованное решение ниже относится к неизменённому эталону.
Полная модель проверенного примера. После изменения параметров необходимо получить новое решение.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.27. Локальные ограничения сетки по областям
№ меткиМатериалРазмер элемента, ммРежим
0Воздух8,5заданный
1Линейная сталь3заданный
2Обмоточная область2заданный
3Обмоточная область2заданный
4Обмоточная область2заданный
5Обмоточная область2заданный
6Обмоточная область2заданный
7Обмоточная область2заданный
8Обмоточная область2заданный
9Обмоточная область2заданный
10Обмоточная область2заданный
11Обмоточная область2заданный
12Обмоточная область2заданный
13Обмоточная область2заданный
14Линейная сталь2заданный
15Постоянный магнит1,5заданный
16Воздух1заданный
17Постоянный магнит1,5заданный
18Воздух1заданный
19Постоянный магнит1,5заданный
20Воздух1заданный
21Постоянный магнит1,5заданный
22Воздух1заданный
23Воздух2заданный
24Воздух0,35заданный

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.28. Ограничения сетки отрезков
№ отрезкаМаксимальная длина, ммРежим
0-1автоматический
1-1автоматический
2-1автоматический
3-1автоматический
4-1автоматический
5-1автоматический
6-1автоматический
7-1автоматический
8-1автоматический
9-1автоматический
10-1автоматический
11-1автоматический
12-1автоматический
13-1автоматический
14-1автоматический
15-1автоматический
16-1автоматический
17-1автоматический
18-1автоматический
19-1автоматический
20-1автоматический
21-1автоматический
22-1автоматический
23-1автоматический
24-1автоматический
25-1автоматический
26-1автоматический
27-1автоматический
28-1автоматический
29-1автоматический
30-1автоматический
31-1автоматический
32-1автоматический
33-1автоматический
34-1автоматический
35-1автоматический
Таблица 13.29. Ограничения сетки дуг
№ дугиМаксимальный угол элемента, {}^\circ
04
14
24
34
44
54
64
74
84
94
104
114
124
134
144
154
164
174
184
194
204
214
224
234
244
254
264
274
284
294
304
314
324
334
344
354
364
374
384
394
404
414
424
434
444
454
464
474
484
494
504
514
524
534
544
554
564
574
584
594
604
614
624
634
644
654
664
674
684
694
704
714
724
734
744
754
764
774
784
794
804
814
824
834
844
854
864
874
884
894
904
914
924
934
944
954
964
974
984
994
1004
1014
1024
1034
1044
1054
1064
1074
1084
1094
1104
1114
1124
1134
1144
1154
1164
1174
1184
1194
1204
1214
1224
1234
1244
1254
1264
1274
1284
1294
1304
1314
1324
1334
1344
1354
1364
1374
1384
1394
1404
1414
1424
1434
1444
1454
1464
1474
1484
1494
1504
1514
1524
1534
1544
1554
1564
1574
1584
1594
1604
1614
1624
1634
1644
1654
1664
1674
1684
1694
1704
1714
1724
1734
1744
1754
1764
1774
1784
1794
1804
1814
1824
1834
1844
1854
1864
1874
1884
1894
1904
1914
1924
1934
1944
1954

Сохранённое состояние этапа

Параметры этого файла подготовлены для расчёта.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 9: Локальные размеры сетки и готовая модель
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
    (0, 1, -1, "Нулевой потенциал", 0, 0),
    (1, 2, -1, "Нулевой потенциал", 0, 0),
    (2, 3, -1, "Нулевой потенциал", 0, 0),
    (3, 0, -1, "Нулевой потенциал", 0, 0),
    (39, 76, -1, "", 0, 0),
    (5, 78, -1, "", 0, 0),
    (6, 79, -1, "", 0, 0),
    (7, 80, -1, "", 0, 0),
    (10, 81, -1, "", 0, 0),
    (11, 82, -1, "", 0, 0),
    (12, 83, -1, "", 0, 0),
    (14, 85, -1, "", 0, 0),
    (15, 86, -1, "", 0, 0),
    (16, 87, -1, "", 0, 0),
    (19, 88, -1, "", 0, 0),
    (20, 89, -1, "", 0, 0),
    (21, 90, -1, "", 0, 0),
    (23, 92, -1, "", 0, 0),
    (24, 93, -1, "", 0, 0),
    (25, 94, -1, "", 0, 0),
    (28, 95, -1, "", 0, 0),
    (29, 96, -1, "", 0, 0),
    (30, 97, -1, "", 0, 0),
    (32, 99, -1, "", 0, 0),
    (33, 100, -1, "", 0, 0),
    (34, 101, -1, "", 0, 0),
    (37, 102, -1, "", 0, 0),
    (38, 103, -1, "", 0, 0),
    (172, 208, -1, "", 0, 2),
    (144, 180, -1, "", 0, 2),
    (145, 181, -1, "", 0, 2),
    (153, 189, -1, "", 0, 2),
    (154, 190, -1, "", 0, 2),
    (162, 198, -1, "", 0, 2),
    (163, 199, -1, "", 0, 2),
    (171, 207, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addsegment(x0, y0, x1, y1)
    mi_selectsegment((x0+x1)/2, (y0+y1)/2)
    mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
    mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
    (4, 5, 7, 4, "", 0, 0),
    (5, 6, 16, 4, "", 0, 0),
    (6, 7, 14, 4, "", 0, 0),
    (7, 8, 3, 4, "", 0, 0),
    (8, 9, 10, 4, "", 0, 0),
    (9, 10, 3, 4, "", 0, 0),
    (10, 11, 14, 4, "", 0, 0),
    (11, 12, 16, 4, "", 0, 0),
    (12, 13, 7, 4, "", 0, 0),
    (13, 14, 7, 4, "", 0, 0),
    (14, 15, 16, 4, "", 0, 0),
    (15, 16, 14, 4, "", 0, 0),
    (16, 17, 3, 4, "", 0, 0),
    (17, 18, 10, 4, "", 0, 0),
    (18, 19, 3, 4, "", 0, 0),
    (19, 20, 14, 4, "", 0, 0),
    (20, 21, 16, 4, "", 0, 0),
    (21, 22, 7, 4, "", 0, 0),
    (22, 23, 7, 4, "", 0, 0),
    (23, 24, 16, 4, "", 0, 0),
    (24, 25, 14, 4, "", 0, 0),
    (25, 26, 3, 4, "", 0, 0),
    (26, 27, 10, 4, "", 0, 0),
    (27, 28, 3, 4, "", 0, 0),
    (28, 29, 14, 4, "", 0, 0),
    (29, 30, 16, 4, "", 0, 0),
    (30, 31, 7, 4, "", 0, 0),
    (31, 32, 7, 4, "", 0, 0),
    (32, 33, 16, 4, "", 0, 0),
    (33, 34, 14, 4, "", 0, 0),
    (34, 35, 3, 4, "", 0, 0),
    (35, 36, 10, 4, "", 0, 0),
    (36, 37, 3, 4, "", 0, 0),
    (37, 38, 14, 4, "", 0, 0),
    (38, 39, 16, 4, "", 0, 0),
    (39, 4, 7, 4, "", 0, 0),
    (40, 41, 7, 4, "", 0, 0),
    (41, 42, 16, 4, "", 0, 0),
    (42, 43, 14, 4, "", 0, 0),
    (43, 44, 3, 4, "", 0, 0),
    (44, 45, 10, 4, "", 0, 0),
    (45, 46, 3, 4, "", 0, 0),
    (46, 47, 14, 4, "", 0, 0),
    (47, 48, 16, 4, "", 0, 0),
    (48, 49, 7, 4, "", 0, 0),
    (49, 50, 7, 4, "", 0, 0),
    (50, 51, 16, 4, "", 0, 0),
    (51, 52, 14, 4, "", 0, 0),
    (52, 53, 3, 4, "", 0, 0),
    (53, 54, 10, 4, "", 0, 0),
    (54, 55, 3, 4, "", 0, 0),
    (55, 56, 14, 4, "", 0, 0),
    (56, 57, 16, 4, "", 0, 0),
    (57, 58, 7, 4, "", 0, 0),
    (58, 59, 7, 4, "", 0, 0),
    (59, 60, 16, 4, "", 0, 0),
    (60, 61, 14, 4, "", 0, 0),
    (61, 62, 3, 4, "", 0, 0),
    (62, 63, 10, 4, "", 0, 0),
    (63, 64, 3, 4, "", 0, 0),
    (64, 65, 14, 4, "", 0, 0),
    (65, 66, 16, 4, "", 0, 0),
    (66, 67, 7, 4, "", 0, 0),
    (67, 68, 7, 4, "", 0, 0),
    (68, 69, 16, 4, "", 0, 0),
    (69, 70, 14, 4, "", 0, 0),
    (70, 71, 3, 4, "", 0, 0),
    (71, 72, 10, 4, "", 0, 0),
    (72, 73, 3, 4, "", 0, 0),
    (73, 74, 14, 4, "", 0, 0),
    (74, 75, 16, 4, "", 0, 0),
    (75, 40, 7, 4, "", 0, 0),
    (76, 77, 7, 4, "", 0, 0),
    (77, 78, 7, 4, "", 0, 0),
    (79, 80, 14, 4, "", 0, 0),
    (81, 82, 14, 4, "", 0, 0),
    (83, 84, 7, 4, "", 0, 0),
    (84, 85, 7, 4, "", 0, 0),
    (86, 87, 14, 4, "", 0, 0),
    (88, 89, 14, 4, "", 0, 0),
    (90, 91, 7, 4, "", 0, 0),
    (91, 92, 7, 4, "", 0, 0),
    (93, 94, 14, 4, "", 0, 0),
    (95, 96, 14, 4, "", 0, 0),
    (97, 98, 7, 4, "", 0, 0),
    (98, 99, 7, 4, "", 0, 0),
    (100, 101, 14, 4, "", 0, 0),
    (102, 103, 14, 4, "", 0, 0),
    (104, 105, 7, 4, "", 0, 2),
    (105, 106, 16, 4, "", 0, 2),
    (106, 107, 14, 4, "", 0, 2),
    (107, 108, 3, 4, "", 0, 2),
    (108, 109, 10, 4, "", 0, 2),
    (109, 110, 3, 4, "", 0, 2),
    (110, 111, 14, 4, "", 0, 2),
    (111, 112, 16, 4, "", 0, 2),
    (112, 113, 7, 4, "", 0, 2),
    (113, 114, 7, 4, "", 0, 2),
    (114, 115, 16, 4, "", 0, 2),
    (115, 116, 14, 4, "", 0, 2),
    (116, 117, 3, 4, "", 0, 2),
    (117, 118, 10, 4, "", 0, 2),
    (118, 119, 3, 4, "", 0, 2),
    (119, 120, 14, 4, "", 0, 2),
    (120, 121, 16, 4, "", 0, 2),
    (121, 122, 7, 4, "", 0, 2),
    (122, 123, 7, 4, "", 0, 2),
    (123, 124, 16, 4, "", 0, 2),
    (124, 125, 14, 4, "", 0, 2),
    (125, 126, 3, 4, "", 0, 2),
    (126, 127, 10, 4, "", 0, 2),
    (127, 128, 3, 4, "", 0, 2),
    (128, 129, 14, 4, "", 0, 2),
    (129, 130, 16, 4, "", 0, 2),
    (130, 131, 7, 4, "", 0, 2),
    (131, 132, 7, 4, "", 0, 2),
    (132, 133, 16, 4, "", 0, 2),
    (133, 134, 14, 4, "", 0, 2),
    (134, 135, 3, 4, "", 0, 2),
    (135, 136, 10, 4, "", 0, 2),
    (136, 137, 3, 4, "", 0, 2),
    (137, 138, 14, 4, "", 0, 2),
    (138, 139, 16, 4, "", 0, 2),
    (139, 104, 7, 4, "", 0, 2),
    (140, 141, 7, 4, "", 0, 2),
    (141, 142, 16, 4, "", 0, 2),
    (142, 143, 14, 4, "", 0, 2),
    (143, 144, 3, 4, "", 0, 2),
    (144, 145, 10, 4, "", 0, 2),
    (145, 146, 3, 4, "", 0, 2),
    (146, 147, 14, 4, "", 0, 2),
    (147, 148, 16, 4, "", 0, 2),
    (148, 149, 7, 4, "", 0, 2),
    (149, 150, 7, 4, "", 0, 2),
    (150, 151, 16, 4, "", 0, 2),
    (151, 152, 14, 4, "", 0, 2),
    (152, 153, 3, 4, "", 0, 2),
    (153, 154, 10, 4, "", 0, 2),
    (154, 155, 3, 4, "", 0, 2),
    (155, 156, 14, 4, "", 0, 2),
    (156, 157, 16, 4, "", 0, 2),
    (157, 158, 7, 4, "", 0, 2),
    (158, 159, 7, 4, "", 0, 2),
    (159, 160, 16, 4, "", 0, 2),
    (160, 161, 14, 4, "", 0, 2),
    (161, 162, 3, 4, "", 0, 2),
    (162, 163, 10, 4, "", 0, 2),
    (163, 164, 3, 4, "", 0, 2),
    (164, 165, 14, 4, "", 0, 2),
    (165, 166, 16, 4, "", 0, 2),
    (166, 167, 7, 4, "", 0, 2),
    (167, 168, 7, 4, "", 0, 2),
    (168, 169, 16, 4, "", 0, 2),
    (169, 170, 14, 4, "", 0, 2),
    (170, 171, 3, 4, "", 0, 2),
    (171, 172, 10, 4, "", 0, 2),
    (172, 173, 3, 4, "", 0, 2),
    (173, 174, 14, 4, "", 0, 2),
    (174, 175, 16, 4, "", 0, 2),
    (175, 140, 7, 4, "", 0, 2),
    (176, 177, 7, 4, "", 0, 2),
    (177, 178, 16, 4, "", 0, 2),
    (178, 179, 14, 4, "", 0, 2),
    (179, 180, 3, 4, "", 0, 2),
    (180, 181, 10, 4, "", 0, 2),
    (181, 182, 3, 4, "", 0, 2),
    (182, 183, 14, 4, "", 0, 2),
    (183, 184, 16, 4, "", 0, 2),
    (184, 185, 7, 4, "", 0, 2),
    (185, 186, 7, 4, "", 0, 2),
    (186, 187, 16, 4, "", 0, 2),
    (187, 188, 14, 4, "", 0, 2),
    (188, 189, 3, 4, "", 0, 2),
    (189, 190, 10, 4, "", 0, 2),
    (190, 191, 3, 4, "", 0, 2),
    (191, 192, 14, 4, "", 0, 2),
    (192, 193, 16, 4, "", 0, 2),
    (193, 194, 7, 4, "", 0, 2),
    (194, 195, 7, 4, "", 0, 2),
    (195, 196, 16, 4, "", 0, 2),
    (196, 197, 14, 4, "", 0, 2),
    (197, 198, 3, 4, "", 0, 2),
    (198, 199, 10, 4, "", 0, 2),
    (199, 200, 3, 4, "", 0, 2),
    (200, 201, 14, 4, "", 0, 2),
    (201, 202, 16, 4, "", 0, 2),
    (202, 203, 7, 4, "", 0, 2),
    (203, 204, 7, 4, "", 0, 2),
    (204, 205, 16, 4, "", 0, 2),
    (205, 206, 14, 4, "", 0, 2),
    (206, 207, 3, 4, "", 0, 2),
    (207, 208, 10, 4, "", 0, 2),
    (208, 209, 3, 4, "", 0, 2),
    (209, 210, 14, 4, "", 0, 2),
    (210, 211, 16, 4, "", 0, 2),
    (211, 176, 7, 4, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addarc(x0, y0, x1, y1, angle, max_angle)
    half = math.radians(angle)/2
    cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
    cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
    xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
    ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
    mi_selectarcsegment(xm, ym)
    mi_setarcsegmentprop(max_angle, boundary, hidden, group)
    mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
    (144.5, 144.5, "Воздух", 8.5, "", 0, 0, 1),
    (0, 94, "Линейная сталь", 3, "", 0, 1, 1),
    (73, 0, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
    (63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
    (36.500000000000007, 63.219854476264018, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
    (4.469813191451677e-15, 73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
    (-36.499999999999986, 63.219854476264025, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
    (-63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
    (-73, 8.939626382903354e-15, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
    (-63.219854476264018, -36.500000000000007, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
    (-36.500000000000036, -63.219854476264004, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
    (-1.3409439574355031e-14, -73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
    (36.500000000000007, -63.219854476264018, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
    (63.219854476264004, -36.500000000000036, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
    (22.627416997969522, 22.627416997969519, "Линейная сталь", 2, "", 0, 2, 1),
    (52, 0, "Постоянный магнит", 1.5, "", "theta", 2, 1),
    (36.769552621700477, 36.76955262170047, "Воздух", 1, "", 0, 2, 1),
    (3.1839765199381809e-15, 52, "Постоянный магнит", 1.5, "", "theta+180", 2, 1),
    (-36.76955262170047, 36.769552621700477, "Воздух", 1, "", 0, 2, 1),
    (-52, 6.3679530398763617e-15, "Постоянный магнит", 1.5, "", "theta", 2, 1),
    (-36.769552621700477, -36.76955262170047, "Воздух", 1, "", 0, 2, 1),
    (-9.5519295598145426e-15, -52, "Постоянный магнит", 1.5, "", "theta+180", 2, 1),
    (36.769552621700463, -36.769552621700477, "Воздух", 1, "", 0, 2, 1),
    (0, 0, "Воздух", 2, "", 0, 2, 1),
    (56.421980601819094, 17.249930578641468, "Воздух", 0.34999999999999998, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
    mi_addblocklabel(x, y)
    if material:
        mi_selectlabel(x, y)
        mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
        mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 9. Модель полная; автоматический расчёт не запускался.")
Машина с поверхностными постоянными магнитами. Шаг 9: Локальные размеры сетки и готовая модель.
Рисунок 13.47. Машина с поверхностными постоянными магнитами. Шаг 9: Локальные размеры сетки и готовая модель. Открыть в полном размере

Перейти к следующему этапу →

Этап 10 из 11

Просмотр сохранённой сетки

  1. Скачайте файлы «Поверхностные-магниты-09-Готовая-модель.fem» и «Поверхностные-магниты-09-Готовая-модель.ans» в одну папку. Их имена до расширения должны совпадать; сохраняйте исходные имена, чтобы FEMM нашёл готовое решение.
  2. Откройте именно файл «Полная модель шага 9 для просмотра решения», затем выполните mi_loadsolution() во встроенной консоли Python. Отдельный файл «Модель после шага 10» содержит то же состояние геометрии, но к его имени не приложено отдельное решение.
  3. В постпроцессоре выполните mo_showmesh(): команда показывает сетку готового решения и не создаёт новую сетку. Программу этого этапа также сохраните рядом с парой файлов модели и решения; запускайте её во встроенном Python FEMM.
  4. Рассмотрите сгущение сетки в узких зазорах и у границ материалов, если они присутствуют в модели. Оценка точности требует отдельной проверки сходимости; один снимок сетки её не заменяет.
  5. Для изменённой рабочей копии сетку и решение нужно построить заново. Приложенное решение относится только к неизменённому примеру.
Просмотр сетки готового решения. Для этого этапа новый расчёт не требуется.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.30. Локальные ограничения сетки по областям
№ меткиМатериалРазмер элемента, ммРежим
0Воздух8,5заданный
1Линейная сталь3заданный
2Обмоточная область2заданный
3Обмоточная область2заданный
4Обмоточная область2заданный
5Обмоточная область2заданный
6Обмоточная область2заданный
7Обмоточная область2заданный
8Обмоточная область2заданный
9Обмоточная область2заданный
10Обмоточная область2заданный
11Обмоточная область2заданный
12Обмоточная область2заданный
13Обмоточная область2заданный
14Линейная сталь2заданный
15Постоянный магнит1,5заданный
16Воздух1заданный
17Постоянный магнит1,5заданный
18Воздух1заданный
19Постоянный магнит1,5заданный
20Воздух1заданный
21Постоянный магнит1,5заданный
22Воздух1заданный
23Воздух2заданный
24Воздух0,35заданный

Сохранённое состояние этапа

Параметры этого файла подготовлены для расчёта.

Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 10: Просмотр сохранённой сетки
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import os
try:
    _script = __file__.replace(chr(92), '/')
    _folder = _script.rsplit('/', 1)[0] if '/' in _script else os.getcwd()
except NameError:
    _folder = os.getcwd()
# Открываем готовый эталон и его унаследованное решение из одной папки.
opendocument(_folder + '/' + "Поверхностные-магниты-09-Готовая-модель.fem")
mi_loadsolution()
mo_clearblock()
mo_clearcontour()
mo_zoomnatural()
mo_showdensityplot(1, 0, 1.8, 0, 'bmag')
# Показать существующие элементы из .ans; сетка не строится заново.
mo_showmesh()
Машина с поверхностными постоянными магнитами. Шаг 10: Просмотр сохранённой сетки.
Рисунок 13.48. Машина с поверхностными постоянными магнитами. Шаг 10: Просмотр сохранённой сетки. Открыть в полном размере

Перейти к следующему этапу →

Этап 11 из 11

Поле и численные результаты

  1. Для просмотра приложенного результата используйте ту же пару итоговых файлов модели и решения из предыдущего этапа. Программу этого этапа сохраните в той же папке: она открывает готовое решение, не запуская новый расчёт. Файл «Модель после шага 11» сохраняет итоговую геометрию; отдельного одноимённого решения к нему нет.
  2. Включите карту модуля магнитной индукции и прочитайте шкалу в теслах. Последовательно откройте результаты каждой цепи и сравните ток, полевое напряжение и потокосцепление с таблицей.
  3. Для этой радиально намагниченной модели значение mo_blockintegral(2) в FEMM 5.0 06Oct2026 не используется как физическая энергия. Сравнивайте строку «Скорректированная энергия» с результатом приложенного проверенного интегрирования по локальному направлению намагниченности. Коэнергию всей модели получают отдельно: mo_clearblock(), mo_groupselectblock(), print(mo_blockintegral(17)), затем mo_clearblock(). Методика исправления и контрольные значения приведены в примере; исправление энергии не меняет геометрию или токи модели.
  4. Для момента ротора относительно начала координат выделите только группу 2: mo_clearblock(), затем mo_groupselectblock(2). Выполните print(mo_blockintegral(22)) и сравните результат в Н·м вместе со знаком. После проверки выполните mo_clearblock().
  5. Это неподвижное токовое состояние. Скоростная ЭДС, коммутация и полный привод не возникают от одной карты поля; для них требуются описанные в курсе серии положений и внешние соотношения.
  6. Таблица содержит результаты этой модели. После изменения параметров выполните новый расчёт через Analysis → Analyze, откройте результат через Analysis → View Results и сравните значения.
  7. В FEMM 5.0 сборки 06Oct2026 выявлено ограничение постпроцессора: для пространственного направления намагниченности theta/theta+180 возвращаемые компоненты H и встроенный интеграл энергии mo_blockintegral(2) используют неверное направление коэрцитивного сдвига. В этом примере физическое поле восстанавливается по \mathbf H=(\mathbf B-B_r\mathbf m)/(\mu_0\mu_{\text{возв}}) с локальным направлением \mathbf m, а энергия — отдельным интегрированием по той же материальной модели. Значения B, потокосцепления, коэнергии и момента проверяются отдельно; совпадение повторного расчёта само по себе не устраняет ошибку определения величины.
  8. Исправленная программа шага 11 суммирует энергию по всем конечным элементам без сглаживания. В магнитах используется w=|\mathbf B-B_r\mathbf m|^2/(2\mu_0\mu_{\text{возв}}), в остальных линейных изотропных областях — w=B^2/(2\mu_0\mu_r). Сумма проверяется отдельной поправкой к исходному интегралу и независимым вычислением коэнергии. Сетка и исходные данные не изменяются; исправляется обработка уже рассчитанного поля.
  9. Момент в таблице этого этапа относится к исходной учебной сетке. Уточнённые значения, сравнение методов и файлы рекомендуемой сетки приведены в разделе «Сходимость момента» выше. По исходному количеству выведенных знаков точность не оценивают.
Просмотр готового поля и проверка численных результатов. Новый расчёт нужен только после изменения модели.

Широкую таблицу можно прокрутить по горизонтали.

Таблица 13.31. Результаты всех цепей
ЦепьТок, АПолевое напряжение, ВПотокосцепление, Вб
Фаза А100,001816
Фаза С-20-0,2922
Фаза В100,2904
Таблица 13.32. Объёмные интегралы
ВеличинаЗначение
Скорректированная энергия, Дж35,15
Коэнергия, Дж80,84
Момент, Н·м-1,156
Исходный интеграл 2: диагностическое значение, Дж196
Посмотреть программу этапа с русскими комментариями
Python · программа этапа
# Машина с поверхностными постоянными магнитами
# Шаг 11: Поле и численные результаты
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import os
try:
    _script = __file__.replace(chr(92), '/')
    _folder = _script.rsplit('/', 1)[0] if '/' in _script else os.getcwd()
except NameError:
    _folder = os.getcwd()
# Открываем готовый эталон и его унаследованное решение из одной папки.
opendocument(_folder + '/' + "Поверхностные-магниты-09-Готовая-модель.fem")
mi_loadsolution()
mo_clearblock()
mo_clearcontour()
mo_zoomnatural()
mo_showdensityplot(1, 0, 1.8, 0, 'bmag')
mo_hidemesh()
# Запрашиваем реальные результаты всех сохранённых цепей.
print("Фаза А: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза А"))
print("Фаза В: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза В"))
print("Фаза С: I, U поля, потокосцепление", mo_getcircuitproperties("Фаза С"))
# Энергия вычисляется по всем областям эталона.
mo_groupselectblock()
print('Вывод интеграла 2 (диагностика ошибки этой сборки), Дж:', mo_blockintegral(2))
mo_clearblock()

# В этой радиальной модели FEMM 5.0 06Oct2026 игнорирует выражение направления
# при вычислении H и энергии. Восстанавливаем направление для каждого элемента.
# Используем B без сглаживания, площадь в единицах модели и глубину mo_getprobleminfo
# в МЕТРАХ. После проверки сглаживание карты поля включается обратно.
# Учебная редакция с русскими пояснениями; формулы и API исходника сохранены.
"""Энергия линейных изотропных постоянных магнитов в плоских моделях курса.

Программу выполняют в Python FEMM либо передают словарь функций через api.
Положения меток магнитов, Hc и возвратная проницаемость берутся из модели.
Метод рассчитан на конкретные SPM/IPM-эталоны курса; нелинейная сталь,
произвольное распределение намагниченности и 3D-эффекты сюда не входят."""
import math


def integrate_linear_pm_energy(pm_labels, pm_mu, pm_hc, api=None):
    """Интегрировать несглаженные поля элементов и восстановить сглаживание on.
    
    pm_labels — список меток с x, y, direction и numeric_angle_deg.
    direction равно theta, theta+180 либо числовому направлению в градусах.
    Ближайшее угловое положение метки различает четыре разнесённых сектора.
    Материал магнитов в данных эталонах однозначно различается по pm_mu.
    pm_hc задаётся в А/м; pm_mu — относительная возвратная проницаемость.
    
    mo_getprobleminfo возвращает глубину в метрах, а mo_getelement — площадь
    в квадрате единиц модели: dV = area * scale**2 * depth_m, м³.
    У mi_getprobleminfo глубина, напротив, задаётся в единицах модели.
    Все возвращаемые интегральные энергии выражены в джоулях.
    При выходе сглаживание включается; прежнее состояние не сохраняется."""
    if api is None:
        api = globals()
    # Проверяем плоскую магнитостатическую постановку до суммирования элементов.
    problem = api['mo_getprobleminfo']()
    if problem[0] != 0 or problem[1] != 0:
        raise ValueError('This helper requires a planar magnetostatic model')
    depth_m, scale = float(problem[2]), float(problem[3])
    mu0 = 4 * math.pi * 1e-7
    result = dict(raw_density_integral_J=0.0, physical_energy_J=0.0,
                  coenergy_integral_J=0.0, correction_integral_J=0.0,
                  pm_volume_m3=0.0, pm_element_count=0,
                  Hparallel_min_A_m=1e300, Hparallel_max_A_m=-1e300)
    # Снимаем прежний выбор областей, чтобы интеграл относился ко всей модели.
    api['mo_clearblock']()
    api['mo_groupselectblock']()
    # Нативные интегралы служат независимой проверкой поэлементного суммирования.
    raw_energy = complex(api['mo_blockintegral'](2)).real
    raw_coenergy = complex(api['mo_blockintegral'](17)).real
    # Снимаем прежний выбор областей, чтобы интеграл относился ко всей модели.
    api['mo_clearblock']()
    # В центре элемента используем его собственное постоянное поле без сглаживания.
    api['mo_smooth']('off')
    try:
        for k in range(1, int(api['mo_numelements']()) + 1):
            element = api['mo_getelement'](k)
            x, y, area = map(float, element[3:6])
            values = api['mo_getpointvalues'](x, y)
            bx, by = (complex(values[j]).real for j in (1, 2))
            mux, muy = (complex(values[j]).real for j in (9, 10))
            if mux <= 0 or abs(mux - muy) > 1e-8:
                raise ValueError('Only linear isotropic positive mu is supported')
            # Площадь переводится в м² отдельно от глубины, уже выраженной в метрах.
            volume = area * depth_m * scale ** 2
            # Для линейной изотропной среды коэнергия имеет плотность B²/(2μ₀μr), Дж/м³.
            wc = (bx * bx + by * by) / (2 * mu0 * mux)
            w, correction = wc, 0.0
            if abs(mux - pm_mu) < 1e-8:
                theta = math.atan2(y, x) * 180 / math.pi
                # Угловое расстояние приводим к интервалу −180…180° с учётом перехода через 0°.
                label = min(pm_labels, key=lambda lab: abs(
                    (theta - math.atan2(lab['y'], lab['x']) * 180 / math.pi + 180) % 360 - 180))
                direction = label['direction']
                if direction == 'theta':
                    alpha = theta
                elif direction == 'theta+180':
                    alpha = theta + 180
                else:
                    alpha = float(direction)
                mx, my = math.cos(alpha * math.pi / 180), math.sin(alpha * math.pi / 180)
                # Числовой угол из метки нужен для сопоставления с нативным интегралом FEMM.
                raw_angle = label['numeric_angle_deg'] * math.pi / 180
                rx, ry = math.cos(raw_angle), math.sin(raw_angle)
                # Остаточная индукция Br = μ₀μrHc; Hc — нормальная коэрцитивность.
                br = mu0 * mux * pm_hc
                # Энергия магнита вычисляется через B − Br·m; коэнергия и энергия здесь различаются.
                w = ((bx - br * mx) ** 2 + (by - br * my) ** 2) / (2 * mu0 * mux)
                # Поправка учитывает различие фактического и числового направлений намагничивания.
                correction = pm_hc * (bx * (rx - mx) + by * (ry - my))
                # Проекция H вдоль намагничивания — локальная величина в А/м.
                hparallel = (bx * mx + by * my - br) / (mu0 * mux)
                result['Hparallel_min_A_m'] = min(result['Hparallel_min_A_m'], hparallel)
                result['Hparallel_max_A_m'] = max(result['Hparallel_max_A_m'], hparallel)
                result['pm_volume_m3'] += volume
                result['pm_element_count'] += 1
            result['raw_density_integral_J'] += complex(values[4]).real * volume
            result['physical_energy_J'] += w * volume
            result['coenergy_integral_J'] += wc * volume
            result['correction_integral_J'] += correction * volume
    finally:
        api['mo_smooth']('on')
    result['raw_energy_J'] = raw_energy
    result['raw_coenergy_J'] = raw_coenergy
    result['corrected_from_raw_J'] = raw_energy + result['correction_integral_J']
    agreements = dict(
        raw_density_vs_native_J=abs(result['raw_density_integral_J'] - raw_energy),
        coenergy_vs_native_J=abs(result['coenergy_integral_J'] - raw_coenergy),
        direct_vs_correction_J=abs(result['physical_energy_J'] - result['corrected_from_raw_J']))
    # Допуск сравнения — абсолютный, в Дж, с масштабированием по энергии.
    tolerance_J = 1e-9 * max(1.0, abs(raw_energy), abs(raw_coenergy))
    if max(agreements.values()) > tolerance_J:
        raise ValueError('Element integrals disagree: check units, materials and PM label identification')
    result['integral_agreement_abs_J'] = agreements
    result['integral_tolerance_J'] = tolerance_J
    result['integral_agreement_passed'] = True
    result['volume_formula'] = 'element_area * unit_scale**2 * postprocessor_depth_metres'
    result['method'] = 'unsmoothed planar element centroid sum; smoothing restored on'
    return result

# Четыре метки именно приложенной модели; материал: mu_r=1.05, B_r=1.2 Тл.
pm_labels = [{'x': 52.0, 'y': 0.0, 'direction': 'theta', 'numeric_angle_deg': 0.0}, {'x': 3.183976519938181e-15, 'y': 52.0, 'direction': 'theta+180', 'numeric_angle_deg': 0.0}, {'x': -52.0, 'y': 6.367953039876362e-15, 'direction': 'theta', 'numeric_angle_deg': 0.0}, {'x': -9.551929559814543e-15, 'y': -52.0, 'direction': 'theta+180', 'numeric_angle_deg': 0.0}]
pm_energy = integrate_linear_pm_energy(pm_labels, 1.05, 1.2/(4*math.pi*1e-7*1.05))
print('Скорректированная энергия, Дж:', pm_energy['physical_energy_J'])
print('Коэнергия, Дж:', pm_energy['coenergy_integral_J'])
print('Проверка двух способов исправления, Дж:', pm_energy['physical_energy_J']-pm_energy['corrected_from_raw_J'])
# Контроль физического поля на верхней оси: направление theta+180, m=(0,-1).
# Контрольная точка использует сглаженное B, как исходная таблица поля.
point = mo_getpointvalues(0, 52)
hy_physical = (complex(point[2]).real + 1.2)/(4*math.pi*1e-7*1.05)
print('Физическое Hy в точке (0;52) мм, А/м:', hy_physical)
print('Проекция H вдоль магнитизации, А/м:', -hy_physical)
Машина с поверхностными постоянными магнитами. Шаг 11: Поле и численные результаты.
Рисунок 13.49. Машина с поверхностными постоянными магнитами. Шаг 11: Поле и численные результаты. Открыть в полном размере