FEMM 5

Часть III · Встроенный Python и воспроизводимая автоматизация → § 14 · API четырёх физических модулей

Занятие 14.1

Встроенный Python для электростатики: ei/eo и матрица ёмкостей

Цель и задачи

Цель. Проверить автоматическое извлечение ёмкости и энергии.

Задачи

  • Проверьте вычисление C=Q/U и энергетическую идентичность до автоматизации нескольких возбуждений.
  • Сохраните фактически считанные потенциалы, заряды, энергию и имя рабочего файла каждого режима.
Что нужно вспомнить перед началом

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

Место занятия в инженерной методике

Расчётная лабораторная работа · Оценка электрического поля, ёмкости и изоляционного промежутка

Инженерный вопрос. Воспроизводит ли программа согласованные зарядовый и энергетический результаты?

Распределение напряжённости и ёмкость используются при выборе размеров промежутка и электродов. Отдельная проверка кромок показывает, какие геометрические подробности влияют на максимум поля.

Последовательность решения, отчёт и критерии результата

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

Последовательность решения

  1. Обосновать постановку и способ измерения. Задайте потенциалы или заряды независимых проводников, свойства диэлектрика и требуемую полевую либо интегральную величину.

  2. Ёмкость плоского конденсатора без краевого поля — аналитический эталон. Проверьте поле, ёмкость или энергию в аналитическом зазорном пределе с теми же границами.

  3. Автоматизируйте сохранение двух режимов конденсатора через ei_saveas, ei_analyze, ei_loadsolution и eo_getconductorproperties; сверьте сигнатуры со справочником.. Выполните действия практикума по его исходной таблице. Сохраните фактически считанные потенциалы, заряды, энергию и имя рабочего файла каждого режима.

  4. Ответить на вопрос по своим результатам. Сопоставьте полевые, зарядовые и энергетические величины с аналитическим контрольным пределом; проверьте потенциалы и зарядовый баланс.

Что включить в отчёт

Результат этого занятия. Журнал двух возбуждений с проверкой ёмкости и энергетической идентичности.

Данные именно этого опыта. Сохраните фактически считанные потенциалы, заряды, энергию и имя рабочего файла каждого режима.

Оформление наблюдений. Потенциалы, заряды, область и энергия; для поля — координаты и компоненты, для ёмкости — определение и полная геометрия электродов.

Как обосновать результат

Проверка из практикума. При U=200\,\mathrm{В} заряд удваивается, энергия увеличивается в четыре раза. При удвоении глубины C, Q, W удваиваются. Прямое численное сравнение возможно только при совпадении всех исходных данных и постановки.

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

Критерий выполнения. Журнал содержит фактический V, Q, C, энергию и имя рабочего файла; аналитический self-check ниже проходит; нативное выполнение отмечается только по фактическому запуску.

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

Основание сравнения. Используйте определения поля, ёмкости и энергии из занятия. Однородный или слоистый зазор является пределом с заданными границами; локальный максимум у идеальной острой кромки требует отдельной оценки.

Вывод для устройства

Свяжите результат с размером электрода, ёмкостью или распределением напряжённости; вывод о пробое требует обоснованного критерия и данных для реального диэлектрика.

Границы вывода. Линейная электростатика даёт поле и энергию, но не критерий пробоя сама по себе. Параметры диэлектрика, состояние поверхности и физическое скругление требуют исходных данных.

Теория и вывод формул

Команды семейства ei задают электростатическую модель, а команды eo обращаются к загруженному решению. Расчёт выполняется последовательно: сохранение рабочей копии, изменение параметров, решение задачи, загрузка результата и извлечение данных.

Соглашения об обозначениях и единицах
  • \(i(t)\), \(u(t)\) — мгновенные значения; \(\widehat I\), \(\widehat U\) — комплексные амплитуды; \(\underline I_{\text{д}}\), \(\underline U_{\text{д}}\) — комплексные действующие значения. Для синусоиды \(\widehat I=\sqrt{2}\,\underline I_{\text{д}}\); действующее значение тока равно \(|\underline I_{\text{д}}|\). Нормировка обязательно учитывается в формулах мощности.
  • \(\Phi=\int_S\mathbf B\cdot\mathrm d\mathbf S\) — поток через ориентированную поверхность; \(\Psi=\sum_k\oint_{C_k}\mathbf A\cdot\mathrm d\mathbf l\) — потокосцепление последовательных витков с согласованными замкнутыми контурами. Только при одинаковом сцепленном потоке каждого витка \(\Psi=N\Phi\). Обе величины измеряются в веберах: число витков безразмерно. Запись «Вб·виток» подчёркивает суммирование.
  • \(\theta_{\text{м}}\), \(\Omega\) (также \(\omega_{\text{мех}}\)) — механические угол и угловая скорость. Для основной гармоники \(\theta_{\text{э}}=p\theta_{\text{м}}\), \(\omega_{\text{э}}=p\Omega\), где \(p\) — число пар полюсов. Геометрический период зубцов задаётся отдельно. В производных по углу используйте радианы.
  • Статическая индуктивность \(L_{\text{ст}}=\Psi/i\) — наклон секущей из начала координат; это определение используется при \(\Psi(0)=0\) и \(i\ne0\). Динамическая индуктивность \(L_{\text{дин}}=\partial\Psi/\partial i\) — наклон касательной (дифференциальная, инкрементальная); положение и остальные токи фиксированы. Для линейной характеристики без смещения обе равны одной индуктивности \(L\). При постоянных магнитах и взаимном возбуждении сначала учитывают ненулевое смещение потокосцепления.
  • Положительные направления, оси и специальные индексы определяются в конкретной задаче. Единицу берите из условия или заголовка таблицы; перед подстановкой в формулу СИ переводите миллиметры в метры, миллигенри в генри и градусы в радианы.
  • Численные результаты обычно показаны с четырьмя значащими цифрами; для сравнения близких значений в таблицах сходимости сохранено больше цифр. Полные значения остаются в исходных расчётных данных. Малые остатки вычисления координат на осях показаны как ноль; малые физические величины сохраняются в показательной записи.
Указатель формул этого занятия
  1. (14.1) · Вывод контрольного соотношения

Физический и методический смысл

Семейство ei работает с электростатическим препроцессором, eo — с загруженным решением. Порядок сохранение рабочей копии → изменение → анализ → загрузка → извлечение остаётся обязательным.

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

Вывод контрольного соотношения

Проверьте вычисление C=Q/U и энергетическую идентичность до автоматизации нескольких возбуждений.

C=\frac{\varepsilon_0\varepsilon_r S}{g},\quad Q=CU,\quad W=\frac12 CU^2
(14.1)
Линейный диэлектрик; полный заряд электрода, а не плотность заряда; идеальные боковые условия исключают бахрому.
  1. Переведите g=0{,}01\,\mathrm{м} и S=0{,}01\cdot 0{,}1=0{,}001\,\mathrm{м^2}. Примите \varepsilon _{0}=8{,}8541878128\cdot 10^{-12}\,\mathrm{Ф/м}.

  2. Ёмкость равна 1,771·10⁻¹² Ф. Заряд электрода положительного потенциала равен +1{,}77083756256\cdot 10^{-10} Кл.

  3. Энергия равна 8,854·10⁻⁹ Дж; сумма зарядов двух электродов равна нулю.

Границы применимости. Линейный диэлектрик; полный заряд электрода, а не плотность заряда; идеальные боковые условия исключают бахрому.

Связь с опытом в FEMM

Автоматизируйте сохранение двух режимов конденсатора через ei_saveas, ei_analyze, ei_loadsolution и eo_getconductorproperties; сверьте сигнатуры со справочником.

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

Проверка и границы вывода

Журнал содержит фактический V, Q, C, энергию и имя рабочего файла; аналитический self-check ниже проходит; нативное выполнение отмечается только по фактическому запуску.

При U=200\,\mathrm{В} заряд удваивается, энергия увеличивается в четыре раза. При удвоении глубины C, Q, W удваиваются.

Нельзя читать eo до загрузки нового решения; список доступных команд в консоли зависит от текущего состояния документа.

Пояснения к официальному руководству

Подробности, которые следует учитывать при настройке и проверке модели. Все учебные пояснения.

Формулы и таблицы руководства к этому занятию

Состояние документа, выбор объектов и свойства

Семейство команды определяет физику и стадию: mi/mo — магнитное поле, ei/eo — электростатика, hi/ho — тепло, ci/co — токопроводимость; i относится к исходной модели, o — к решению. newdocument/create используют номера 0,1,2,3 соответственно. Названия команд содержат только одно подчёркивание после префикса: старые расширенные написания с дополнительными подчёркиваниями не поддерживаются.

Первый выбор скрипта определяет физический модуль нового документа. После него используйте согласованную пару префиксов mi/mo, ei/eo, hi/ho или ci/co.

Таблица М.Н.41. Коды newdocument и create
doctypeФизический модуль
0Магнитное поле
1Электростатика
2Теплопроводность
3Протекание тока

При нескольких документах контролируйте setfocus и gettitle. После изменения исходной модели старое окно решения само по себе не доказывает актуальности результатов: сохраните модель, выполните analyze, затем loadsolution. createmesh возвращает число элементов; analyze умеет обновлять сетку без отдельного предварительного createmesh.

addsegment/addarc связывают ближайшие уже существующие узлы, а drawline/drawarc/drawrectangle создают нужные узлы. Поэтому одинаковые координаты аргументов не делают эти две группы взаимозаменяемыми. Метка области должна лежать в нужной замкнутой области и получить уже определённое свойство материала.

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

Таблица М.Н.40. Тип объектов в преобразованиях геометрии
editactionОбъекты
0Узлы
1Отрезки
2Метки областей
3Дуги
4Группы
  • Круглые скобки вокруг необязательного editaction в PDF обозначают необязательность аргумента, а не буквальный синтаксис вызова Python.

Выбор объектов — часть состояния модели. selectgroup очищает прежний выбор и переводит редактор в режим группы. selectcircle/selectrectangle без editmode используют текущий режим; в этих функциях число 4 означает все классы. В преобразованиях editaction=4 означает групповое редактирование. После команд выбора проверяйте, какие объекты будут сдвинуты, скопированы или удалены.

В setblockprop направление намагничивания допускает строковую формулу. theta — полярный угол центра элемента в градусах, R — расстояние от начала координат; координаты обозначаются x/y в плоской и r/z в осесимметричной модели. Число витков имеет знак. automesh для области, elementsize ребра и maxsegdeg дуги управляют разными ограничениями сетки.

Глобальный smartmesh(0/1) переопределяет настройки документов на время сессии; smartmesh(-1) возвращает управление документным mi/ei/hi/ci_smartmesh. У makeABC все недостающие параметры могут выбираться автоматически. Для исследования сходимости и границы явно фиксируйте значения, чтобы изменение геометрии незаметно не изменило внешнюю область.

Проверьте на своей модели

  • Перед преобразованием проверьте setfocus/gettitle, выбранную группу и editaction.
  • Сравните результат addsegment без узлов и drawline на отдельной учебной копии.
  • Запишите параметры Smart Mesh, внешний радиус и число оболочек вместе с числом элементов.

Источник: [33]. § 3.5 · § 3.6.1 · § 3.6.2 · § 3.6.3 · § 3.6.4 · § 3.6.6 · § 3.8 · § 3.10 · § 3.12

Коды свойств и физические единицы API

Число propnum выбирает поле конкретного типа свойства. Один и тот же номер в mi_modifymaterial и hi_modifyboundprop относится к разным физическим величинам. В справочнике приведены отдельные таблицы для материалов, границ, точек, магнитных цепей и проводников четырёх модулей; используйте таблицу выбранной команды, а не общий список номеров.

Вызов ei_modifymaterial(name, propnum, value) меняет одно поле существующего свойства. Строка 0 переименовывает запись; остальные строки задают числовой параметр. Номер поля не является кодом типа границы.

Таблица М.Н.12. Коды свойств ei_modifymaterial
propnumПолеСмысл и единицы
0BlockNameИмя материала
1exОтносительная диэлектрическая проницаемость по x или r; 1
2eyОтносительная диэлектрическая проницаемость по y или z; 1
3qsОбъёмная плотность свободного заряда, Кл/м³

Вызов ei_modifyboundprop(name, propnum, value) меняет одно поле существующего свойства. Строка 0 переименовывает запись; остальные строки задают числовой параметр. Номер поля не является кодом типа границы.

Таблица М.Н.13. Коды свойств ei_modifyboundprop
propnumПолеСмысл и единицы
0BdryNameИмя граничного свойства
1VsЗаданный потенциал, В
2qsПоверхностная плотность заряда, Кл/м²
3c_{0}Коэффициент при V смешанного условия
4c_{1}Свободный член смешанного условия
5BdryFormat0 — заданный V; 1 — смешанное; 2 — поверхностный заряд; 3 — периодическое; 4 — антипериодическое

Вызов ei_modifypointprop(name, propnum, value) меняет одно поле существующего свойства. Строка 0 переименовывает запись; остальные строки задают числовой параметр. Номер поля не является кодом типа границы.

Таблица М.Н.14. Коды свойств ei_modifypointprop
propnumПолеСмысл и единицы
0PointNameИмя точечного свойства
1VpЗаданный потенциал узла, В
2qpЛинейная плотность точечного зарядового источника, Кл/м

Вызов ei_modifyconductorprop(name, propnum, value) меняет одно поле существующего свойства. Строка 0 переименовывает запись; остальные строки задают числовой параметр. Номер поля не является кодом типа границы.

Таблица М.Н.15. Коды свойств ei_modifyconductorprop
propnumПолеСмысл и единицы
0ConductorNameИмя проводника
1VcПотенциал проводника, В
2qcПолный заряд проводника, Кл
3ConductorType0 — заданный заряд; 1 — заданный потенциал

Неиспользуемые коэффициенты конкретного типа границы задаются нулём. В mi_addboundprop код BdryFormat=6/7 означает периодический/антипериодический воздушный зазор, а ia/oa — углы его внутренней и внешней сторон. У тепловой границы свои коды: температура, поток, конвекция, излучение, периодичность и антипериодичность. Если TinfRad опущен, используется Tinf.

Магнитные материалы используют МСм/м для проводимости и МА/м² для заданной плотности тока. Токовый модуль использует См/м и А/м². Ошибка в приставке даёт множитель миллион даже при безошибочном выполнении Python. Тепловая объёмная теплоёмкость kt задаётся в МДж/(м³·К), а источник q_v — в Вт/м³.

Точечный источник и терминальный проводник различны: qp электрического/теплового/токового точечного свойства задан на единицу длины, а qc проводника — полный заряд, мощность или ток. Магнитный точечный ток j в mi_addpointprop задаётся в амперах. Суммарные результаты модели дополнительно зависят от глубины плоской постановки или осесимметричного объёма.

Изменение материала через modifymaterial не заменяет проверку его физической модели. Для mi_addmaterial руководство допускает опускать хвост аргументов; важные \mu, H_c, \sigma, шихтовку и параметры провода задавайте явно. Числовой код LamType не означает, что измеренные потери уже подтверждены этой эквивалентной моделью.

Таблица Р.43.1. Коды свойств и физические единицы API
ПараметрыЕдиницы и смысл
mi_addmaterial: J, CductМА/м²; МСм/м
mi_addmaterial: Lam_d, WireDмм независимо от единицы координат
mi_addmaterial: H_cА/м
ci_addmaterial: ox,oyСм/м
hi_addmaterial: ktМДж/(м³·К)
ei/hi/ci_addpointprop: qpКл/м; Вт/м; А/м соответственно
ei/hi/ci_addconductorprop: qcКл; Вт; А соответственно
getprobleminfo: depth, length unitОбе длины возвращаются в метрах
getelement: координаты, площадьЕдиницы геометрии; квадрат единицы геометрии

Проверьте на своей модели

  • До запуска укажите единицы каждого источника и проводимости; отдельно проверьте приставки М и отсутствие приставки.
  • По таблице конкретной modify-команды найдите propnum и проверьте обновлённое свойство.
  • Сопоставьте ток на выводе или тепловой поток с интегральным балансом модели.

Источник: [33]. § 3.6.9 · § 3.8.9 · § 3.10.9 · § 3.12.9

Узлы, элементы и пакетное чтение поля

У сетки есть два разных числа строк: Nn узлов и Ne треугольников. Вводные абзацы PDF описывают готовые numpy-массивы внутри FEMM и плоскую передачу через IPC с восстановлением формы обёрткой. Нативная проверка 16.10.2026 подтвердила массивы координат и полей, но обнаружила важное отличие getallelements: вместо документированной Ne×7 матрицы текущая сборка возвращает кортеж из четырёх массивов. Поэтому сначала проверяйте фактический контейнер, а не назначайте ему форму по краткой таблице.

На четырёх сохранённых решениях магнитного, электростатического, теплового и токового модулей получено: connectivity — Ne×3 int32, centroids — Ne×2 float64, areas — Ne float64, groups — Ne int32. Это четыре члена tuple в таком порядке. Первая тройка connectivity совпала с первыми полями getelement(1), а координаты getallnodes()[0] — с getnode(1). Передать np.int32 аргументом getallelements нельзя: в проверенной сборке команда принимает ноль аргументов. Эта проверка внутреннего Python не устанавливает форму ответа внешнего IPC.

Нумерация узлов API начинается с 1, а индексация массива Python и matplotlib — с 0. В элементной строке первые три поля являются номерами узлов; следующие два — координатами центра, затем идут площадь и группа. При переводе в matplotlib вычитайте 1 только из номеров узлов. Храните индексы как int32: int16 переполняется после 32767 и может превратить корректную сетку в набор отрицательных индексов.

Индексы FEMM и массивов Python

i_{\mathrm{Python}}=i_{\mathrm{FEMM}}-1,\qquad0\le i_{\mathrm{Python}}<N_n
(М.Н.19)
Вычитать единицу требуется только из номеров узлов треугольника. Координаты, площадь и группа сохраняют свои значения.

Обозначения и единицы

  • N_n — число узлов; i_{\mathrm{FEMM}} — номер API от 1; i_{\mathrm{Python}} — индекс массива от 0. Все три величины целочисленные и безразмерные.

Условия применения. Для связности используйте int32. Знаковый int16 ограничен диапазоном −32768…32767 и может молча переполниться.

Формула выделяет математический смысл вычитания 1 из трёх индексов в примере matplotlib. Контейнер getallelements в проверенной сборке отличается от описания PDF; это отдельно разобрано в разделе.

Потенциалы V в электростатике и токопроводимости, а также T в теплопроводности возвращаются по узлам. Их производные D, J, F возвращаются по элементам и не сглаживаются. Магнитный mo_getalla согласно стр.115 выдаёт A в центрах элементов; это принципиальное исключение, которое нельзя соединить с массивом узлов как равнодлинные данные.

Для узлового графика A пример руководства получает координаты mo_getnode(k), затем A через mo_getpointvalues(x,y)[0]. Для крупной серии заранее выделяйте массивы и заполняйте их, а не накапливайте списки Python-чисел. Сроки выполнения примера в руководстве относятся к его модели и компьютеру; их нельзя обещать для произвольной сетки.

В гармонической магнитной и токовой постановке фазовые величины могут быть комплексными. Перед построением рисунка выберите \operatorname{Re}, \operatorname{Im}, модуль или фазу как отдельный шаг обработки. Смешение узлового потенциала, элементного поля и сглаженного точечного запроса может создать ошибку анализа даже при внешне одинаковом изображении.

Таблица Р.44.1. Узлы, элементы и пакетное чтение поля
ЗапросФорма и расположение
*_getallnodesNn×2: координаты всех узлов
*_getallelements в PDFNe×7: n_{1},n_{2},n_{3},xc,yc,area,group
*_getallelements в проверенной сборкеtuple: connectivity Ne×3; centroids Ne×2; areas Ne; groups Ne
mo_getallb / mo_getallaNe×2: B; Ne: A в центрах элементов
eo_getalld / eo_getallvNe×2: D; Nn: узловой V
ho_getallf / ho_getalltNe×2: F; Nn: узловой T
co_getallj / co_getallvNe×2: J; Nn: узловой V
mo_getallgapb / mo_getallgapanpts×2: B_r,B_{\theta }; npts: A; по умолчанию npts=360
mo_getallgapharmonicsNh×6: acc,acs,brc,brs,btc,bts для каждой гармоники

Проверьте на своей модели

  • Проверьте размеры всех массивов по numnodes/numelements, прежде чем объединять столбцы.
  • Подтвердите, что каждая тройка индексов после вычитания 1 лежит в диапазоне 0…Nn−1.
  • Для mo_getalla укажите расположение значений по элементам; для ho_getallt — по узлам.

Источник: [33]. § 3.7.5 · § 3.9.5 · § 3.11.5 · § 3.13.5 · § 4.3

Возвраты интегралов, гармоники зазора и ориентация контура

Перед интегралом очищайте старый контур или выбор областей и создавайте новый явно. Числовой type выбирает физическую операцию в конкретном модуле: одинаковое число не переносится из mo в eo/ho/co. Например, код 2 у mo_blockintegral означает энергию, у eo/ho_blockintegral — объём, а у co_blockintegral — полную мощность.

Перед вызовом eo_lineintegral выберите нужный документ результата и найдите код именно этой команды. Заново задайте контур и его направление: таблица связывает числовой type с физической величиной, а не с номером строки меню другого модуля.

Таблица М.Н.16. Результаты и коды eo_lineintegral
КодВеличинаЕдиница / смысл
0Интеграл E\cdot tВ
1Поток D\cdot nПолный заряд, Кл; средняя D_n, Кл/м²
2Геометрия контураДлина, м; площадь поверхности, м²
3Сила тензора напряженийКомпоненты силы, Н
4Момент тензора напряженийН·м
  • В зависимости от кода возвращается одна или две величины. Нормаль и касательная определяются направлением контура.

Перед вызовом eo_blockintegral выберите нужный документ результата и найдите код именно этой команды. Очистите прежнее выделение, выберите области интегрирования и затем запишите код вместе с результатом и единицей.

Таблица М.Н.17. Результаты и коды eo_blockintegral
КодВеличинаЕдиница / смысл
0Запасённая энергияДж
1Площадь поперечного сечениям²
2Объёмм³
3Средний вектор DКл/м²; две компоненты
4Средний вектор EВ/м; две компоненты
5Сила взвешенного тензора напряженийН; две компоненты
6Момент взвешенного тензора напряженийН·м
  • В примере PDF F_x,F_y = eo_blockintegral(4) допущена ошибка: по таблице сила имеет код 5, а код 4 возвращает среднее поле E. Курс сохраняет коды таблицы и явно исправляет пример.

Перед вызовом eo_getpointvalues выберите нужный документ результата и найдите код именно этой команды. Здесь приведён порядок всех возвращаемых полей; физическую точку и единицы координат задают до запроса. Позиции таблицы начинаются с 1, индексы Python — с 0.

Таблица М.Н.18. Результаты и коды eo_getpointvalues
ПозицияСимволВеличинаЕдиница / нормировка
1VПотенциалВ
2DxКомпонента D по x или rКл/м²
3DyКомпонента D по y или zКл/м²
4ExКомпонента E по x или rВ/м
5EyКомпонента E по y или zВ/м
6exПроницаемость по x или rТаблица не уточняет абсолютную/относительную нормировку
7eyПроницаемость по y или zТаблица не уточняет абсолютную/относительную нормировку
8nrgПлотность энергии поляДж/м³
  • Позиция 1 соответствует Python-индексу 0. Не путайте параметр ex/ey материала (относительная \varepsilon) с неподтверждённой нормировкой одноимённого возврата.

Перед вызовом eo_makeplot выберите нужный документ результата и найдите код именно этой команды. Сначала постройте контур; PlotType выбирает величину вдоль него. Координата X графика — расстояние по пути, число отсчётов не уточняет сетку.

Таблица М.Н.19. Результаты и коды eo_makeplot
КодВеличинаЕдиница / смысл
0VВ
1|D|Кл/м²
2D·nКл/м²
3D·tКл/м²
4|E|В/м
5E\cdot nВ/м
6E\cdot tВ/м
  • D — электрическое смещение, не магнитная индукция. Файл результата makeplot — CSV; FileFormat игнорируется.

Перед вызовом eo_showdensityplot выберите нужный документ результата и найдите код именно этой команды. Код выбирает смысл цветовой шкалы. При сравнении вариантов фиксируйте одинаковую величину и границы шкалы.

Таблица М.Н.43. Результаты и коды eo_showdensityplot
КодВеличинаЕдиница / смысл
0VВ
1|D|Кл/м²
2|E|В/м

Перед вызовом eo_showvectorplot выберите нужный документ результата и найдите код именно этой команды. Код выбирает физический вектор и его комплексную составляющую; масштаб стрелок задаётся отдельно и не меняет решение.

Таблица М.Н.44. Результаты и коды eo_showvectorplot
КодВеличинаЕдиница / смысл
0Выключено—
1DКл/м²
2EВ/м

Различайте количество физических величин и конкретный тип Python-контейнера. Документация часто пишет «один результат», не устанавливая скаляр или одноэлементный кортеж. Ранее выполненный нативный эталон курса подтвердил кортеж для eo_blockintegral(0) в своём режиме; это не проверка всех других кодов. Перед массовой выгрузкой исследуйте repr/type нужного ответа на малой модели.

mo_lineintegral может возвращать среднее и полный интеграл, либо компоненты постоянной и удвоенной по частоте силы. Члены 2\omega имеют смысл при ненулевой частоте. Текст упоминает взаимодействие постоянного и малого переменного поля в режиме дифференциальной проницаемости, но таблица не задаёт дополнительные индексы 1\omega: не добавляйте их в распаковку по предположению.

Контурный bendcontour требует не менее двух точек, угла от -180^\circ до +180{}^\circ и положительного anglestep. При менее чем двух точках операция игнорируется. Ориентация n/t задаётся направлением обхода; при смене направления отдельно проверяются знаки потока, напряжения и температурной разности.

У mo_gapintegral коды 0/2/3/5 возвращают одну величину момента или энергии, а 1/4/6 — две компоненты силы F_x,F_y. mo_getgapharmonics без n сообщает максимальный доступный порядок; с n даёт шесть коэффициентов. Угол в API задаётся в градусах, тогда как math.cos/math.sin принимают радианы.

B_r(\theta)=b_{rc}\cos\left(n\theta\frac{\pi}{180}\right)+b_{rs}\sin\left(n\theta\frac{\pi}{180}\right)
(Р.45.1)
theta — угол в градусах. Аналогично восстанавливаются A из acc/acs и B_{\theta } из btc/bts.
Таблица Р.45.1. Возвраты интегралов, гармоники зазора и ориентация контура
mo_lineintegral typeДокументированный порядок величин
0 / 1Полный интеграл B\cdot n / H\cdot t; затем среднее соответствующей величины
2Длина контура; площадь поверхности. В таблице PDF строка сдвинута; смысл подтверждён §2.3.10
3F_x /r постоянная; F_y /z постоянная; F_x /r 2\omega; F_y /z 2\omega
4Постоянный момент; момент 2\omega
5Полный интеграл (B\cdot n)^{2}; среднее (B\cdot n)^{2}

Проверьте на своей модели

  • Выберите один контур и проверьте смысл изменения знака при его обходе в другую сторону.
  • Прочитайте фактический контейнер нужного integral перед распаковкой; сохраните версию FEMM.
  • Восстановите B_r по коэффициентам одной гармоники и сравните с прямым getgapb в согласованных углах.

Источник: [33]. § 3.7.1 · § 3.7.2 · § 3.9.1 · § 3.11.1 · § 3.13.1

Проверка описания и границы подтверждённого поведения

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

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

eo_blockintegral(0) возвращает одноэлементный кортеж; извлеките его компоненту перед скалярными вычислениями. Для тепловой задачи проверяйте знак G по профилю температуры и закону Фурье. У getall-вызовов проверяйте форму массивов и индексацию связности. Для работы с CSV и регулярными выражениями используйте csv и re.split. mo_lineintegral(2) возвращает длину контура и площадь соответствующей поверхности.

Таблица Р.51.1. Аргументы и формы ответа команд FEMM 5
Команда и страницы руководстваПравило применения
csv, re.split; стр.92–95Используйте csv для табличных данных и re.split для разделения строк по регулярному выражению.
getallelements, стр.114–115/128/142/157getallelements возвращает кортеж из четырёх массивов; связность использует индексы узлов, начинающиеся с 1.
mi_probdef, стр.99; moverotateПередавайте аргументы внутри скобок; editaction задавайте отдельным аргументом.
mo_lineintegral(2), стр.107Результат содержит пару: длина контура и площадь соответствующей поверхности.
eo_blockintegral, стр.124Для силы используйте код 5; код 4 не является этой операцией.
ho_lineintegral, стр.137Для теплового потока используйте код 1; код 2 относится к геометрии контура.
ho_makeplot, стр.138Выбирайте тепловые величины T/F/G: температуру, поток и компоненты температурного градиента.
ho_selectconductor, стр.139Выбирается тепловой проводник; ho_blockintegral не вычисляет механическую силу.
ho_showcontourplot, стр.141Изолинии относятся к температуре T; имена аргументов границ диапазона — lower_V и upper_V.
co_getpointvalues, стр.152Смысл и единицы ox/oy сверяйте с материальными параметрами и контрольной токовой задачей; не подставляйте их как магнитную проницаемость.
co_showcontourplot, стр.155Передавайте type внутри списка аргументов co_showcontourplot.

Проверьте на своей модели

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

Источник: [33]. § 3.2 · § 3.7.1 · § 3.9.1 · § 3.11.1 · § 3.11.2 · § 3.11.4 · § 3.13.1 · § 3.13.4

Разобранный численный пример

Ёмкость плоского конденсатора без краевого поля — аналитический эталон

Дано. Зазор g=10\,\mathrm{мм}; высота электрода 10 мм; глубина 100 мм; S=0{,}001\,\mathrm{м^2}; \varepsilon_r=2; U=100\,\mathrm{В}.

  1. Переведите g=0{,}01\,\mathrm{м} и S=0{,}01\cdot 0{,}1=0{,}001\,\mathrm{м^2}. Примите \varepsilon _{0}=8{,}8541878128\cdot 10^{-12}\,\mathrm{Ф/м}.

  2. Ёмкость равна 1,771·10⁻¹² Ф. Заряд электрода положительного потенциала равен +1{,}77083756256\cdot 10^{-10} Кл.

  3. Энергия равна 8,854·10⁻⁹ Дж; сумма зарядов двух электродов равна нулю.

Ответ: C = 1{,}77083756256\,\mathrm{пФ}; Q+ = 177{,}083756256 пКл; W = 8{,}8541878128 нДж.

Проверка: При U=200\,\mathrm{В} заряд удваивается, энергия увеличивается в четыре раза. При удвоении глубины C, Q, W удваиваются. Значения получены аналитически и сами по себе не подтверждают выполнения полевого расчёта FEMM.

Практикум в FEMM 5

Автоматизируйте сохранение двух режимов конденсатора через ei_saveas, ei_analyze, ei_loadsolution и eo_getconductorproperties; сверьте сигнатуры со справочником.

Таблица 14.1. Исходные данные практикума
Исходная величинаЗначениеЕдиница
Зазор10мм
Глубина100мм
\varepsilon_r21
U100В
  1. Создайте Electrostatics Problem; Problem Definition: millimeters, Planar, Depth=100, Precision=1e-8.
  2. Постройте узлы (0,0), (10,0), (10,10), (0,10), соедините четырьмя отрезками. Добавьте одну метку внутри; \varepsilon_x=\varepsilon_y=2.
  3. Задайте проводникам имена left и right: потенциалы 0 и 100 В. Назначьте проводники соответствующим вертикальным отрезкам; не дублируйте их независимыми зарядовыми условиями.
  4. После решения откройте Conductor Properties и прочитайте V, Q. Выделите весь диэлектрик и найдите энергию блоковым интегралом. Вычислите C=Q_{\mathrm{right}}/100 и сравните с 2W/100^{2}.

Ожидаемый результат. C = 1{,}77083756256\,\mathrm{пФ}; Q+ = 177{,}083756256 пКл; W = 8{,}8541878128 нДж. Для FEMM сравнение действительно только при совпадении идеализации и граничных условий.

Как проверить. При U=200\,\mathrm{В} заряд удваивается, энергия увеличивается в четыре раза. При удвоении глубины C, Q, W удваиваются. Прямое численное сравнение возможно только при совпадении всех исходных данных и постановки.

Обработка и анализ результатов

Воспроизводит ли программа согласованные зарядовый и энергетический результаты?

  1. Сохраните фактически считанные потенциалы, заряды, энергию и имя рабочего файла каждого режима.
  2. Сопоставьте полевые, зарядовые и энергетические величины с аналитическим контрольным пределом; проверьте потенциалы и зарядовый баланс.

С чем сравнить. Используйте определения поля, ёмкости и энергии из занятия. Однородный или слоистый зазор является пределом с заданными границами; локальный максимум у идеальной острой кромки требует отдельной оценки.

Итог работы. Журнал двух возбуждений с проверкой ёмкости и энергетической идентичности.

Программа с русскими пояснениями: Контрольный вычислительный фрагмент · Порядок запуска

Контрольный вычислительный фрагмент

Аналитический эталон линейного плоского конденсатора: именованные исходные величины заданы в СИ, площадь включает глубину модели. Сначала вычисляются C, Q и W, затем проверяются численный эталон и равенство C = Q/U = 2W/U^{2}. Проверки используют одну аналитическую модель и не заменяют независимого решения FEMM; краевое поле исключено. Метки вывода содержат единицы: Ф, Кл и Дж.

Python · встроенный MicroPython FEMM 5
"""Контрольный вычислительный фрагмент.

Среда: встроенный MicroPython FEMM 5.
Аналитический учебный пример; полевой решатель не вызывается.
Параметры, единицы величин и порядок вывода пояснены по стадиям.
"""

# Цель: аналитический эталон плоского конденсатора без краевого поля.
# Все исходные величины заданы в СИ; диэлектрик линейный и однородный.
# Результат: ёмкость C [Ф], заряд положительного электрода Q [Кл],
# энергия W [Дж]. Полевой решатель FEMM этот фрагмент не запускает.

# 1. Исходные данные: площадь учитывает высоту электрода и глубину модели.
eps0_f_m = 8.8541878128e-12  # Электрическая постоянная, Ф/м.
eps_r = 2.0  # Относительная проницаемость, безразмерная.
area_m2 = 0.001  # Площадь электрода: 0,01 м × 0,1 м.
gap_m = 0.01  # Зазор между электродами, м.
U = 100.0  # Разность потенциалов, В.

# 2. Применяем формулы C = εS/g, Q = CU и W = CU²/2.
C = eps0_f_m * eps_r * area_m2 / gap_m
Q = C * U
W = 0.5 * C * U * U

# 3. Сверяем с численным эталоном и энергетическим определением ёмкости.
# Допуск относится к этому аналитическому примеру, а не к сетке FEMM.
capacitance_tolerance_f = 1e-22
assert abs(C - 1.77083756256e-12) < capacitance_tolerance_f
assert abs(2.0 * W / (U * U) - Q / U) < capacitance_tolerance_f
print("C_F", C, "Q_C", Q, "W_J", W)

Расчётные исследования по теме

Изучите физическую постановку, выполните программу во встроенном Python FEMM 5 и проверьте результаты по сохранённым моделям и независимым критериям.

  • Профиль Роговского: конформное поле и распределение напряжённости

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

    Решений FEMM: 3 · Численных проверок: 16

  • Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление

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

    Решений FEMM: 12 · Численных проверок: 41

  • Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо

    Изолированное проволочное кольцо является трёхмерным телом, но его осевая симметрия позволяет вычислить ёмкость в FEMM без трёхмерного решателя. Круг в плоскости r–z представляет сечение проволоки; после вращения он образует тор. Работа проверяет правильный геометрический вес полного тела и сравнивает результат с приближением тонкого кольца.

    Решений FEMM: 9 · Численных проверок: 21

Все темы учебного практикума

Окна FEMM 5

Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.

Рабочая область модели «Профиль Роговского: конформное поле и распределение напряжённости». Нативный препроцессор FEMM 5.
Рабочая область модели «Профиль Роговского: конформное поле и распределение напряжённости». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Профиль Роговского: конформное поле и распределение напряжённости». Электрический потенциал V, В, между профилированными электродами; диапазон −100…100 В.
Сохранённое решение «Профиль Роговского: конформное поле и распределение напряжённости». Электрический потенциал V, В, между профилированными электродами; диапазон −100…100 В. Открыть в полном размере
Рабочая область модели «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Нативный препроцессор FEMM 5.
Рабочая область модели «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Электростатический потенциал V, В: один базисный режим возбуждения дифференциальной пары для определения её параметров.
Сохранённое решение «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Электростатический потенциал V, В: один базисный режим возбуждения дифференциальной пары для определения её параметров. Увеличенная область около пары; верхняя удалённая граница за кадром. Открыть в полном размере
Увеличенное сечение проволочного кольца: центр r = 20 мм, z = 0; радиус проволоки 0,25 мм. Показан меридиональный разрез тела вращения; ось и удалённая граница за кадром.
Увеличенное сечение проволочного кольца: центр r = 20 мм, z = 0; радиус проволоки 0,25 мм. Показан меридиональный разрез тела вращения; ось и удалённая граница за кадром. Открыть в полном размере
Сохранённое решение «Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо». Потенциал V, В, в увеличенной области проволочного кольца. Слева видна ось r = 0; прямоугольник — вспомогательная область сгущения сетки; удалённая сферическая граница за кадром.
Сохранённое решение «Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо». Потенциал V, В, в увеличенной области проволочного кольца. Слева видна ось r = 0; прямоугольник — вспомогательная область сгущения сетки; удалённая сферическая граница за кадром. Открыть в полном размере

Самостоятельная работа

Автоматизируйте сохранение двух режимов конденсатора через ei_saveas, ei_analyze, ei_loadsolution и eo_getconductorproperties; сверьте сигнатуры со справочником. Сопоставьте исходный и изменённый режимы, сохраните исходные файлы, результаты и объяснение различия.

Критерий выполнения: Журнал содержит фактический V, Q, C, энергию и имя рабочего файла; аналитический self-check ниже проходит; нативное выполнение отмечается только по фактическому запуску.
Первоисточники и дополнительное чтение по занятию
  1. [33] — 115–128
Пояснения и типичные ошибки
Почему Q=0 после ошибки не является допустимым результатом?

Он неотличим от физического нулевого заряда; ошибка должна иметь отдельный статус.

Какое контрольное число и единица проверяют этот опыт?

C = 1{,}77083756256\,\mathrm{пФ}; Q+ = 177{,}083756256 пКл; W = 8{,}8541878128 нДж.

При каких предположениях получена приведённая формула?

Линейный диэлектрик; полный заряд электрода, а не плотность заряда; идеальные боковые условия исключают бахрому.

На что обратить внимание

  • Нельзя читать eo до загрузки нового решения; список доступных команд в консоли зависит от текущего состояния документа.
  • Линейный диэлектрик; полный заряд электрода, а не плотность заряда; идеальные боковые условия исключают бахрому.