FEMM 5

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

Занятие 14.2

Встроенный Python для теплопроводности: hi/ho и цепочка временных решений

Цель и задачи

Цель. Проверить программную цепочку последовательных тепловых решений.

Задачи

  • Проверьте накопление q_v\Delta t/c_v в аналитическом эталоне, затем сопоставьте его с цепочкой нативных тепловых шагов.
  • Сохраните пути предыдущих решений и конечную температуру серий разных шагов в один момент.
Что нужно вспомнить перед началом

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

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

Расчётная лабораторная работа · Оценка тепловой инерции и длительности режима

Инженерный вопрос. Не теряется ли предыдущее состояние при автоматизации временных шагов?

Температура, тепловое сопротивление и постоянная времени связывают потери с охлаждением и длительностью включения. Это позволяет сравнить материалы, отвод тепла и рабочие циклы по количественным критериям.

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

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

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

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

  2. Нагрев теплоизолированного объёма — аналитический эталон. Проверьте единицу теплоёмкости и аналитический предел накопления энергии при заданной мощности.

  3. Создайте журнал шагов и организуйте hi_saveas → hi_probdef с предыдущим решением → hi_analyze → hi_loadsolution → чтение ho; первые шаги повторите вручную.. Выполните действия практикума по его исходной таблице. Сохраните пути предыдущих решений и конечную температуру серий разных шагов в один момент.

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

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

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

Данные именно этого опыта. Сохраните пути предыдущих решений и конечную температуру серий разных шагов в один момент.

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

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

Проверка из практикума. В отсутствие источника равномерное начальное состояние должно оставаться постоянным на каждом шаге. Прямое численное сравнение возможно только при совпадении всех исходных данных и постановки.

Независимый контроль. Проверьте накопленную энергию и доступный аналитический временной предел; отдельно повторите расчёт с меньшим шагом.

Критерий выполнения. Для \Delta t=2{,}1{,}0{,}5\,\mathrm{с} финальная температура сравнивается при одном t=20\,\mathrm{с}; предыдущие файлы явно перечислены; c_v=2\,\mathrm{МДж/(м^3\cdot К)} не смешана с 2·10⁶ Дж/(м³·К).

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

Основание сравнения. Используйте уравнение накопления энергии и временной эталон из занятия. Одноузловой RC-предел требует обоснования пространственной однородности; предыдущие решения задают начальное состояние.

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

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

Границы вывода. Результат зависит от источников, среды, теплоотдачи и теплоёмкости. Упрощённый эталон не заменяет неизвестные условия охлаждения реального устройства.

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

Семейства hi и ho предназначены для подготовки тепловой модели и обработки решения. Функция hi_probdef принимает units, type, precision и необязательные depth, minangle, prevsoln, timestep; имя предыдущего решения задаётся шестым аргументом, а шаг времени — седьмым.

Соглашения об обозначениях и единицах
  • \(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.2) · Вывод контрольного соотношения

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

Семейства hi и ho обслуживают тепловую модель и её результат. hi_probdef принимает units, type, precision, затем необязательные depth, minangle, prevsoln, timestep. Имя предыдущего решения — шестой аргумент, шаг — седьмой.

Цепочка должна передавать именно последнее успешно рассчитанное .anh с согласованной геометрией. Повторный запуск не должен молча продолжать случайный старый результат. Отдельно сохраняют начальную модель, расписание источников и фактическое время каждого шага.

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

Проверьте накопление q_v\Delta t/c_v в аналитическом эталоне, затем сопоставьте его с цепочкой нативных тепловых шагов.

c_v\frac{dT}{dt}=q_v,\quad T(t)=T_0+\frac{q_v}{c_v}t=300+0{,}5t
(14.2)
FEMM 5 поддерживает переходную теплопроводность через предыдущее решение и шаг времени. Здесь нет переносного члена, течения и фазового перехода.
  1. Из пространственной однородности следует отсутствие градиента и граничного потока.

  2. Скорость нагрева q_v/c_v=0{,}5\,\mathrm{К/с}.

  3. Через 20 с температура равна 310 К. В поле GUI для объёмной теплоёмкости это c_v=2\,\mathrm{МДж/(м^3\cdot К)}, а не 2000000.

Границы применимости. FEMM 5 поддерживает переходную теплопроводность через предыдущее решение и шаг времени. Здесь нет переносного члена, течения и фазового перехода.

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

Создайте журнал шагов и организуйте hi_saveas → hi_probdef с предыдущим решением → hi_analyze → hi_loadsolution → чтение ho; первые шаги повторите вручную.

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

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

Для \Delta t=2{,}1{,}0{,}5\,\mathrm{с} финальная температура сравнивается при одном t=20\,\mathrm{с}; предыдущие файлы явно перечислены; c_v=2\,\mathrm{МДж/(м^3\cdot К)} не смешана с 2·10⁶ Дж/(м³·К).

В отсутствие источника равномерное начальное состояние должно оставаться постоянным на каждом шаге.

Сохранение нового имени не гарантирует правильный prevsoln; строка пути и существование результата проверяются до шага.

Знак градиента в программном извлечении

Проверяйте знак производной температуры по самому профилю T(x) и закону q=-k\nabla T. Имена G_x/G_y в извлечённых полях нельзя без проверки считать буквальным градиентом: в опубликованном нативном эталоне FEMM 5 знак соответствующей возвращённой компоненты отличается от dT/dx. Контрольные величины этого занятия — температура и тепловой поток; подробность зафиксирована в квитанции эталона.

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

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

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

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

Семейство команды определяет физику и стадию: 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 относится к разным физическим величинам. В справочнике приведены отдельные таблицы для материалов, границ, точек, магнитных цепей и проводников четырёх модулей; используйте таблицу выбранной команды, а не общий список номеров.

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

Таблица М.Н.20. Коды свойств hi_modifymaterial
propnumПолеСмысл и единицы
0BlockNameИмя материала
1kxТеплопроводность по x или r, Вт/(м·К)
2kyТеплопроводность по y или z, Вт/(м·К)
3qsОбъёмное тепловыделение, Вт/м³
4ktОбъёмная теплоёмкость, МДж/(м³·К)
  • В modify-таблице объёмный источник назван qs; аргумент hi_addmaterial того же физического смысла называется q_v. Это не поверхностный тепловой поток qs из граничного свойства.

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

Таблица М.Н.21. Коды свойств hi_modifyboundprop
propnumПолеСмысл и единицы
0BdryNameИмя граничного свойства
1BdryFormat0 — заданная температура; 1 — тепловой поток; 2 — конвекция; 3 — излучение; 4 — периодическое; 5 — антипериодическое
2TsetЗаданная температура, К
3qsПоверхностная плотность теплового потока, Вт/м²
4TinfТемпература среды для конвекции, К
5hКоэффициент теплоотдачи, Вт/(м²·К)
6betaСтепень черноты (эмиссивность), 1
7TinfRadТемпература окружения для излучения, К
  • Код 2 также учитывает заданный qs. Код 3 может одновременно учитывать излучение, конвекцию и qs. Если TinfRad при добавлении условия опущен, используется Tinf.

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

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

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

Таблица М.Н.23. Коды свойств hi_modifyconductorprop
propnumПолеСмысл и единицы
0ConductorNameИмя проводника
1TcТемпература проводника, К
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 — полную мощность.

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

Таблица М.Н.24. Результаты и коды ho_lineintegral
КодВеличинаЕдиница / смысл
0Разность температур: интеграл G\cdot tК; знак зависит от направления и соглашения о G
1Тепловой поток через контур F\cdot nПолный поток, Вт; средняя плотность, Вт/м²
2Геометрия контураДлина, м; площадь поверхности, м²
3Средняя температура контураК
  • В примере PDF F_{\mathrm{tot}},F_{\mathrm{avg}} = ho_lineintegral(2) ошибочен код: тепловой поток имеет код 1, код 2 относится к геометрии.
  • В теоретическом разделе PDF G = -\nabla T, но нативный тепловой слой курса показал другое соглашение о знаке G. При обработке результата сверяйте знак на линейном температурном эталоне.

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

Таблица М.Н.25. Результаты и коды ho_blockintegral
КодВеличинаЕдиница / смысл
0Средняя температура TК
1Площадь поперечного сечениям²
2Объёмм³
3Средний вектор теплового потока FВт/м²; две компоненты
4Средний температурный градиент GК/м; две компоненты, соглашение о знаке см. примечание
  • Вектор G следует интерпретировать вместе с нативным соглашением о знаке, проверенным на эталоне; не извлекайте направление переноса тепла только из названия gradient.

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

Таблица М.Н.26. Результаты и коды ho_getpointvalues
ПозицияСимволВеличинаЕдиница
1T (в таблице PDF: V)ТемператураК
2F_xТепловой поток по x или rВт/м²
3F_yТепловой поток по y или zВт/м²
4G_xТемпературный градиент по x или rК/м
5GyТемпературный градиент по y или zК/м
6kxТеплопроводность по x или rВт/(м·К)
7kyТеплопроводность по y или zВт/(м·К)
  • Символ V в первой строке исходной таблицы — остаток копирования: соседний пример распаковывает T, и модуль выдаёт температуру.
  • Позиции 1–7 соответствуют Python-индексам 0–6. Знак G проверяется отдельно; он не меняет порядок результатов.

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

Таблица М.Н.27. Результаты и коды ho_makeplot
КодВеличинаЕдиница / смысл
0TК
1|F|Вт/м²
2F\cdot nВт/м²
3F\cdot tВт/м²
4|G|К/м
5G\cdot nК/м
6G\cdot tК/м
  • В исходной таблице скопированы V/D/E и даже слова field intensity. Здесь физические обозначения исправлены на T/F/G без изменения кодов 0–6.
  • Знак G нельзя устанавливать по скопированному тексту; сверяйте с принятой в курсе проверкой теплового эталона.

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

Таблица М.Н.45. Результаты и коды ho_showdensityplot
КодВеличинаЕдиница / смысл
0TК
1|F|Вт/м²
2|G|К/м

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

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

Различайте количество физических величин и конкретный тип 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

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

Нагрев теплоизолированного объёма — аналитический эталон

Дано. Однородное тело вначале имеет 300 К; c_v=2\cdot 10^{6}\,\mathrm{Дж/(м^3\cdot К)}, q_v=10^{6}\,\mathrm{Вт/м^3}, все границы теплоизолированы; длительность 20 с.

  1. Из пространственной однородности следует отсутствие градиента и граничного потока.

  2. Скорость нагрева q_v/c_v=0{,}5\,\mathrm{К/с}.

  3. Через 20 с температура равна 310 К. В поле GUI для объёмной теплоёмкости это c_v=2\,\mathrm{МДж/(м^3\cdot К)}, а не 2000000.

Ответ: T(20\,\mathrm{с})=310\,\mathrm{К}; накопленная энергия на единицу объёма =20 МДж/м³.

Проверка: В отсутствие источника равномерное начальное состояние должно оставаться постоянным на каждом шаге. Значения получены аналитически и сами по себе не подтверждают выполнения полевого расчёта FEMM.

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

Создайте журнал шагов и организуйте hi_saveas → hi_probdef с предыдущим решением → hi_analyze → hi_loadsolution → чтение ho; первые шаги повторите вручную.

Таблица 14.2. Исходные данные практикума
Исходная величинаЗначениеЕдиница
c_v2МДж/(м³·К)
q_v1 × 10⁶Вт/м³
t20с
  1. Подготовьте отдельное начальное решение с равномерными 300 К и q_v=0; сохраните его файл результата .anh.
  2. В рабочей модели снимите фиксированные температуры, задайте теплоизоляцию всех внешних границ, q_v=1000000 и c_v=2\,\mathrm{МДж/(м^3\cdot К)}.
  3. Для временных шагов используйте документированные параметры предыдущего решения и шага hi_probdef; это практикум с продолжением в уроке 14.2.
  4. Выполните серии с \Delta t=2{,}1{,}0{,}5\,\mathrm{с} до одного времени 20 с; каждый следующий шаг читает предыдущее корректное .anh. Сравните T и накопленную энергию.

Ожидаемый результат. T(20\,\mathrm{с})=310\,\mathrm{К}; накопленная энергия на единицу объёма =20 МДж/м³. Для FEMM сравнение действительно только при совпадении идеализации и граничных условий.

Как проверить. В отсутствие источника равномерное начальное состояние должно оставаться постоянным на каждом шаге. Прямое численное сравнение возможно только при совпадении всех исходных данных и постановки.

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

Не теряется ли предыдущее состояние при автоматизации временных шагов?

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

С чем сравнить. Используйте уравнение накопления энергии и временной эталон из занятия. Одноузловой RC-предел требует обоснования пространственной однородности; предыдущие решения задают начальное состояние.

Итог работы. Прослеживаемая временная таблица с ручным контролем первых шагов и аналитическим пределом.

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

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

Для однородного теплоизолированного тела dT /dt = q_v/c_v = 0{,}5 К/с, поэтому за 20 с температура повышается с 300 до 310 К. Последний шаг сокращается до оставшегося времени; изменение длительности не приводит к её усечению. Постоянная производная делает явный метод точным с учётом округления, поэтому совпадение трёх результатов само по себе не определяет порядок сходимости. В коде используются Дж/(м³·К); для поля объёмной теплоёмкости FEMM значение переводят в МДж/(м³·К). Решатель FEMM не запускается.

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

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

# Цель: проверить баланс энергии однородного теплоизолированного тела.
# Постоянные q_v и c_v дают dT/dt = q_v/c_v; пространственных потоков нет.
# Вход: c_v [Дж/(м³·К)], q_v [Вт/м³], время [с], температура [К].
# Выход: выбранный шаг dt_s и температура T_K в конце нагрева.

# 1. Исходные данные в СИ. В интерфейсе FEMM теплоёмкость вводят в МДж/(м³·К).
cv_si = 2.0e6
qv_w_m3 = 1.0e6
initial_k = 300.0
duration_s = 20.0
heating_rate_k_s = qv_w_m3 / cv_si
analytic_k = initial_k + heating_rate_k_s * duration_s

# 2. Сравниваем три шага явного интегрирования одного и того же баланса.
# Отношение q_v/c_v вычислено до цикла; последний шаг при необходимости
# сокращается, поэтому длительность не отбрасывается округлением int().
for dt in (2.0, 1.0, 0.5):
    T = initial_k
    remaining_s = duration_s
    while remaining_s > 0.0:
        step_s = min(dt, remaining_s)
        T += heating_rate_k_s * step_s
        remaining_s -= step_s

    # При постоянной скорости метод точен с погрешностью округления.
    # Этот опыт проверяет баланс, но не порядок сходимости общего метода.
    assert abs(T - analytic_k) < 1e-9
    print("dt_s", dt, "T_K", T)

# Это аналитическая проверка; hi_analyze здесь не вызывается.
# Для нативного шага нужны открытая тепловая модель и файл previous_anh.
# Порядок аргументов: единицы, тип, точность, глубина, угол, файл, шаг.
# hi_probdef("millimeters", "planar", 1e-8, 100, 30, previous_anh, dt)

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

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

  • Тепловое сопротивление кабеля

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

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

  • Конвекция и нелинейное излучение нагреваемой шины

    Шина 100 × 10 мм, расчётная длина 1 м, равномерное тепловыделение 10⁵ Вт/м³. Нижняя сторона охлаждается конвекцией h=10 Вт/(м² К), верхняя излучает в среду 20 °C с коэффициентом 0.8; торцы изолированы.

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

  • Ток кабеля при ограничении температуры и обратной связи сопротивления

    Медная жила радиуса 5 мм, изоляция до радиуса 8 мм, длина 1 м. Охлаждение воздухом 20 °C с h=10 Вт/(м² К). Учебное ограничение температуры жилы 90 °C; сопротивление зависит от температуры.

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

  • Взаимный нагрев кабелей и расстояние между ними

    Три кабеля радиусами жилы 5 мм и изоляции 10 мм находятся на глубине 1 м в грунте k=1 Вт/(м К). Каждый выделяет 20 Вт/м. Сравниваются расстояния между осями 150, 300 и 600 мм; поверхность грунта поддерживается при 20 °C.

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

  • Нативный тепловой цикл токоведущей детали

    Медная деталь 10 × 1 мм, глубина 100 мм. Три импульса мощности по 1 с разделены паузами по 1 с; полное время 6 с. Мощность при включении 100 Вт, две широкие стороны охлаждаются с h=1000 Вт/(м² К), торцы изолированы.

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

  • Преддуговой нагрев плавкой вставки: теплоотвод и I²t

    Медная вставка длиной 10 мм и сечением 0.2 × 0.2 мм нагревается током 12 А в течение 0.2 с. Торцы закреплены в идеальных держателях 20 °C, боковые поверхности теплоизолированы. Рассчитывается нагрев до плавления; фаза металла не меняется.

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

  • Индукционный нагрев: переходное тепловое поле и температурная обратная связь

    Нативная последовательная связь гармонического магнитного поля и переходного теплового поля с пространственной температурой, консервативным переносом мощности и итерационным обновлением σ(T), μ(T).

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

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

Окна FEMM 5

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

Поперечная геометрия многослойного кабеля в модуле теплопроводности FEMM 5. Текстовые подписи скрыты в отображении, чтобы различались тонкие слои; зелёные точки — метки областей.
Поперечная геометрия многослойного кабеля в модуле теплопроводности FEMM 5. Текстовые подписи скрыты в отображении, чтобы различались тонкие слои; зелёные точки — метки областей. Открыть в полном размере
Сохранённое решение «Тепловое сопротивление кабеля». Температура T, К, и изотермы многослойного кабеля; стационарная теплопроводность.
Сохранённое решение «Тепловое сопротивление кабеля». Температура T, К, и изотермы многослойного кабеля; стационарная теплопроводность. Открыть в полном размере
Рабочая область модели «Конвекция и нелинейное излучение нагреваемой шины». Нативный препроцессор FEMM 5.
Рабочая область модели «Конвекция и нелинейное излучение нагреваемой шины». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Конвекция и нелинейное излучение нагреваемой шины». Температура T, К, шины с радиационным охлаждением. Для почти равномерного поля использована шкала отображения 293,15–373,15 К; её пределы не являются экстремумами решения. Изотермы скрыты.
Сохранённое решение «Конвекция и нелинейное излучение нагреваемой шины». Температура T, К, шины с радиационным охлаждением. Для почти равномерного поля использована шкала отображения 293,15–373,15 К; её пределы не являются экстремумами решения. Изотермы скрыты. Открыть в полном размере
Рабочая область модели «Ток кабеля при ограничении температуры и обратной связи сопротивления». Нативный препроцессор FEMM 5.
Рабочая область модели «Ток кабеля при ограничении температуры и обратной связи сопротивления». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Ток кабеля при ограничении температуры и обратной связи сопротивления». Температура T, К, и изотермы сохранённого предельного режима кабеля; обратная связь потерь и температуры учитывается в учебной программе.
Сохранённое решение «Ток кабеля при ограничении температуры и обратной связи сопротивления». Температура T, К, и изотермы сохранённого предельного режима кабеля; обратная связь потерь и температуры учитывается в учебной программе. Открыть в полном размере
Увеличенная область трёх подземных кабелей с шагом 600 мм. Крупные внешние окружности ограничивают области сгущения сетки в грунте. Поверхность и удалённые границы за кадром; подписи скрыты.
Увеличенная область трёх подземных кабелей с шагом 600 мм. Крупные внешние окружности ограничивают области сгущения сетки в грунте. Поверхность и удалённые границы за кадром; подписи скрыты. Открыть в полном размере
Сохранённое решение «Взаимный нагрев кабелей и расстояние между ними». Температура T, К, и изотермы взаимного нагрева трёх кабелей. Верхняя горизонталь — поверхность грунта; внутренний прямоугольник — область сгущения сетки; удалённые границы за кадром.
Сохранённое решение «Взаимный нагрев кабелей и расстояние между ними». Температура T, К, и изотермы взаимного нагрева трёх кабелей. Верхняя горизонталь — поверхность грунта; внутренний прямоугольник — область сгущения сетки; удалённые границы за кадром. Открыть в полном размере
Рабочая область модели «Нативный тепловой цикл токоведущей детали». Нативный препроцессор FEMM 5.
Рабочая область модели «Нативный тепловой цикл токоведущей детали». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Нативный тепловой цикл токоведущей детали». Температура T, К, на сохранённом шаге переходного теплового цикла. Шкала отображения 293,15–333,15 К выбрана для почти равномерного поля; её пределы не являются экстремумами решения. Изотермы скрыты.
Сохранённое решение «Нативный тепловой цикл токоведущей детали». Температура T, К, на сохранённом шаге переходного теплового цикла. Шкала отображения 293,15–333,15 К выбрана для почти равномерного поля; её пределы не являются экстремумами решения. Изотермы скрыты. Открыть в полном размере
Рабочая область модели «Преддуговой нагрев плавкой вставки: теплоотвод и I²t». Нативный препроцессор FEMM 5.
Рабочая область модели «Преддуговой нагрев плавкой вставки: теплоотвод и I²t». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Преддуговой нагрев плавкой вставки: теплоотвод и I²t». Температура T, К, на сохранённом шаге доплавительного нагрева тонкой медной вставки. Изотермы скрыты; виден продольный профиль температуры между охлаждаемыми торцами.
Сохранённое решение «Преддуговой нагрев плавкой вставки: теплоотвод и I²t». Температура T, К, на сохранённом шаге доплавительного нагрева тонкой медной вставки. Изотермы скрыты; виден продольный профиль температуры между охлаждаемыми торцами. Открыть в полном размере
Тепловая геометрия связанной модели индукционного нагрева, разделённая на подобласти назначения источников тепла. Зелёные точки — метки областей; длинные текстовые подписи скрыты в отображении.
Тепловая геометрия связанной модели индукционного нагрева, разделённая на подобласти назначения источников тепла. Зелёные точки — метки областей; длинные текстовые подписи скрыты в отображении. Открыть в полном размере
Сохранённое решение «Индукционный нагрев: переходное тепловое поле и температурная обратная связь». Температура T, К, на сохранённом шаге связанного индукционного нагрева. Прямоугольные подобласти служат назначению распределённых источников тепла; изотермы скрыты.
Сохранённое решение «Индукционный нагрев: переходное тепловое поле и температурная обратная связь». Температура T, К, на сохранённом шаге связанного индукционного нагрева. Прямоугольные подобласти служат назначению распределённых источников тепла; изотермы скрыты. Открыть в полном размере

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

Создайте журнал шагов и организуйте hi_saveas → hi_probdef с предыдущим решением → hi_analyze → hi_loadsolution → чтение ho; первые шаги повторите вручную. Сопоставьте исходный и изменённый режимы, сохраните исходные файлы, результаты и объяснение различия.

Критерий выполнения: Для \Delta t=2{,}1{,}0{,}5\,\mathrm{с} финальная температура сравнивается при одном t=20\,\mathrm{с}; предыдущие файлы явно перечислены; c_v=2\,\mathrm{МДж/(м^3\cdot К)} не смешана с 2·10⁶ Дж/(м³·К).
Первоисточники и дополнительное чтение по занятию
  1. [33] — 129–142
Пояснения и типичные ошибки
Что произойдёт, если каждый шаг читает начальный .anh?

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

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

T(20\,\mathrm{с})=310\,\mathrm{К}; накопленная энергия на единицу объёма =20 МДж/м³.

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

FEMM 5 поддерживает переходную теплопроводность через предыдущее решение и шаг времени. Здесь нет переносного члена, течения и фазового перехода.

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

  • Сохранение нового имени не гарантирует правильный prevsoln; строка пути и существование результата проверяются до шага.
  • FEMM 5 поддерживает переходную теплопроводность через предыдущее решение и шаг времени. Здесь нет переносного члена, течения и фазового перехода.