Если одно из понятий незнакомо, вернитесь к предыдущему занятию и воспроизведите его численный пример. После этого переходите к новой постановке.
Место занятия в инженерной методике
Подготовительный этап методики · Обеспечение воспроизводимости расчётной последовательности
Инженерный вопрос. Можно ли восстановить каждую строку серии по её рабочему файлу?
Эти действия входят в подготовку расчёта любого устройства: они устанавливают связь источника, геометрии и наблюдаемой величины. Их результат позволяет выбрать допустимую постановку и способ извлечения будущей характеристики.
Последовательность решения, отчёт и критерии результата
Результат этого этапа — проверенная постановка или воспроизводимая процедура перед серией расчётов.
Последовательность решения
Обосновать постановку и способ измерения. Разделите исходный файл, изменённую копию, актуальное решение и последующую обработку; каждая команда должна обращаться к ожидаемому документу.
Повторяемая серия и журнал отказов. Выполните действия практикума по его исходной таблице. Проверьте входы, имя копии, статус и результат каждой точки, включая ошибочную.
Ответить на вопрос по своим результатам. Повторите выбранную строку по сохранённым входам и проверьте связь числа с файлом и режимом; зафиксируйте причину отказа отдельно.
Что включить в отчёт
Результат этого занятия. Журнал без подстановки чисел в неуспешные строки и проверка одного повтора.
Данные именно этого опыта. Проверьте входы, имя копии, статус и результат каждой точки, включая ошибочную.
Оформление наблюдений. Версия входа, режим, команды запуска, файл результата и статус; неудачные строки сохраняйте отдельно с причиной отказа.
Как обосновать результат
Проверка из практикума. Два повторных прохода имеют одинаковые входные данные и число строк; неуспешный режим не создаёт численного результата.
Независимый контроль. Повторите выбранную строку в новой рабочей папке по сохранённым входам; аналитический self-check проверяет арифметику, а решение FEMM — полевую постановку.
Критерий выполнения. Исходная модель сохранена; все режимы учтены; отказ содержит причину; повторный запуск не дублирует строки.
Точность и расхождения. Критерий этого этапа — соответствие исходным данным, топологии, назначениям и процедуре повторного открытия. Численный допуск поля здесь не назначают: поле ещё не является защищаемым результатом. Расхождения размеров и параметров фиксируйте с единицами и происхождением.
Основание сравнения. Опора — контрольный пример и протокол воспроизведения этого занятия. Численный self-check программы и фактическое решение FEMM имеют разное происхождение.
Вывод для устройства
Покажите, как другой исполнитель воспроизведёт параметр устройства и обнаружит сбой без ручного восстановления скрытого состояния.
Границы вывода. Простой эталон проверяет конкретное действие или физический закон; перенос на устройство требует заново согласовать геометрию, материалы, режим и объёмный множитель.
Дополнительный расчётный метод
Моделирование опытов Эрстеда и Фарадея
Момент магнитной стрелки связывает опыт с вычисляемой характеристикой. Сравнение дискретной токовой и полевой моделей отделяет статический момент от движения с заданной инерцией.
Получаемые величины. момент стрелки M(\theta ); ошибка дискретизации токового слоя; эквивалентные \mu и намагниченность; угол и энергия движения при заданном Jмех
Зафиксировать геометрию провода, стрелки и источник.
Вычислить поле внешнего тока и силу каждого элемента эквивалентного токового слоя.
Суммировать моменты и уточнить число элементов/толщину слоя при сохранении полных токов.
Сравнить с FEMM при совместимых свойствах материала.
Для динамики добавить момент инерции и оговорённое трение, проверить шаг времени и баланс энергии.
Страницы источника. PDF 1–19 полностью: 1–4 опыты и амперовская модель; 5–14 алгоритм сил и программные иллюстрации; 15–17 сравнение FEMM; 18–19 движение стрелки.
Алгоритмическая последовательность объединяет параметры, свойства, геометрию, группы и серии расчётов. В курсе эти действия выполняются во встроенном Python FEMM 5 с сохранением точных имён API.
Воспроизводимый расчёт требует сохранённых исходных данных, рабочих копий и определённого порядка обработки ошибок. Организация файлов и таблиц результатов рассматривается как часть вычислительного эксперимента.
Соглашения об обозначениях и единицах
\(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\). При постоянных магнитах и взаимном возбуждении сначала учитывают ненулевое смещение потокосцепления.
Положительные направления, оси и специальные индексы определяются в конкретной задаче. Единицу берите из условия или заголовка таблицы; перед подстановкой в формулу СИ переводите миллиметры в метры, миллигенри в генри и градусы в радианы.
Численные результаты обычно показаны с четырьмя значащими цифрами; для сравнения близких значений в таблицах сходимости сохранено больше цифр. Полные значения остаются в исходных расчётных данных. Малые остатки вычисления координат на осях показаны как ноль; малые физические величины сохраняются в показательной записи.
Повторяемость начинается с неизменяемого исходного файла. Скрипт не должен незаметно перезаписывать исходную модель ручного расчёта или дописывать новую серию к старой таблице. Одна серия соответствует одному набору параметров, версии программы и определению величин. Для CSV удобны два правила: точка как машинный десятичный разделитель и отдельная колонка статуса. Русские единицы выводятся в странице и описании столбцов, а однозначные имена столбцов остаются пригодными для автоматического чтения.
Обработчик исключения сообщает, на каком токе или угле расчёт остановился. Он не превращает незавершённый режим в ноль и не продолжает использовать прошлое поле. При больших проходах полезно записывать строку сразу после успешной проверки, а затем закрывать файл. Для небольшого учебного прохода режим w создаёт новую таблицу; режим a используется лишь при сознательном возобновлении с проверкой совпадения параметров. Исходная модель и рабочая копия должны иметь разные имена.
Количество заданных режимов должно совпадать с числом явно учтённых результатов и отказов.
Порядок проверки результата
Численный пример ниже является аналитическим учебным эталоном. Его значения вычислены по указанным формулам; они не обозначают результат решения новой модели методом конечных элементов. Практикум связывает эталон с полевой задачей: сначала воспроизведите уже проверенный результат базового раздела, затем измените только один исследуемый параметр. Именно такое сравнение позволяет отделить ошибку программы от влияния геометрии, сетки и физического приближения. Сохраните исходную модель, рабочую копию и таблицу с заголовками величин. В подписи каждой величины укажите единицу, положительное направление и способ получения; для гармонических величин дополнительно укажите амплитудную нормировку. Если условие задачи не выполнено, остановите серию и сохраните причину отказа вместе с последним корректным состоянием.
Пояснение программы
Конструкция with гарантирует закрытие файла при выходе из блока. Режим w создаёт новую таблицу и перезаписывает файл с тем же именем, поэтому каждой серии нужен отдельный рабочий каталог. Заголовок указывает величины и состояние расчёта. При исключении сохраняется запись об отказе без фиктивного численного результата. Формат %.9g задаёт числовую запись с девятью значащими цифрами; число цифр в окончательном техническом отчёте выбирают по погрешности результата.
Полнота серии и обработка отказов
Каждому заданному набору параметров соответствует одна запись с результатом либо с явной причиной отказа.
Сформируйте сетку параметра до запуска решателя. При одном узле используйте его непосредственно: формула шага с делением на число интервалов предполагает хотя бы два узла.
Сохраняйте исходный индекс и входные параметры даже при ошибке. Не заменяйте отсутствующий результат нулём, потому что физический нуль может быть допустимым значением.
После серии проверьте равенство числа заданий сумме успешных и отказавших. При сравнении с ручным расчётом выберите совпадающий режим, а не ближайшую строку по порядку.
Проверяемый результат; единица определяется выбором результата
по результату
N_{\text{зад}}
Количество запланированных состояний
1
Границы применимости. Автоматическое продолжение после ошибки допустимо только при восстановлении известного состояния модели. Иначе последующие строки могут унаследовать неверные параметры.
Пояснения к официальному руководству
Подробности, которые следует учитывать при настройке и проверке модели. Все учебные пояснения.
Режим запуска, аргументы и завершение расчёта
Для серии расчётов сначала выберите жизненный цикл процесса. Запуск GUI с путём модели или сценария оставляет окно открытым. Ключ -run запускает сценарий и завершает процесс после него. У headless запуск с одним сценарием без -run после исполнения продолжает обслуживание TCP; это иной режим, даже если вычисления в сценариях одинаковы.
Все параметры FEMM ставятся до имени сценария. После него начинаются аргументы самого сценария: sys.argv[0] содержит его путь, остальные строки нужно самостоятельно преобразовать в числа. Например, --port после sweep.py не перенастраивает FEMM, а поступает в sweep.py. При необходимости разбор именованных параметров выполняет встроенный argparse.
Версия входит в протокол расчёта. femm_headless --version печатает версию и дату сборки без запуска Python и открытия порта; в GUI эти сведения доступны через Help → About. Код возврата процесса и наличие ожидаемого решения проверяются отдельно: файл от прошлого запуска не подтверждает успех нового.
femm-lua предназначен для старых Lua 4 сценариев. Его -h/--headless выбирает headless, тогда как -h у femm_headless означает помощь. Параллельным Lua-клиентам нужны разные порты через -p; аргументы сценария находятся в таблице arg. Новые практикумы курса используют встроенный Python.
Таблица Р.38.1. Режим запуска, аргументы и завершение расчёта
Запуск / код
Документированное действие
femm_gui [--port N] [file]
Открыть задачу/решение или исполнить .py; оставить окно
femm_gui -run script.py [args...]
Исполнить и завершить: 0 успех, 1 ошибка сценария
femm_headless [--port N] [script.py]
После сценария обслуживать TCP; порт по умолчанию 48015
femm_headless -run script.py [args...]
Пакетный запуск: 0 успех; 1 ошибка; 130 Ctrl+C
femm_headless -i [script.py]
Интерактивный REPL; при наличии сначала исполнить сценарий
Имя open имеет два назначения. Единственный аргумент с расширением .fem/.fee/.feh/.fec открывает документ FEMM; файловое чтение/запись определяется иными аргументами. Для ясности открытия модели используйте opendocument, а для результатов — with open(path, "w", newline="") as f. Контекстный менеджер закрывает файл до следующего шага серии; ожидание конца сценария при множестве открытых файлов может исчерпать дескрипторы.
Пути с кириллицей поддерживаются; обратная косая черта нормализуется, а возвращаемые пути используют прямую. В строке Python обратную черту нужно экранировать либо использовать прямые разделители. Текстовый режим преобразует перевод строки платформы; rb/wb сохраняет точные байты. Ошибки файловых операций вызывают OSError и должны фиксироваться, а не превращаться в строку якобы успешного расчёта.
Для числового массива np.savetxt поддерживает delimiter и header, пишет заголовок с # и пятнадцать знаков после точки, но не параметр fmt. Общий CSV со строками, кавычками, запятыми внутри поля или переводом строки требует CSV-парсера. Ручной split(",") допустим лишь для заранее ограниченного формата собственных числовых файлов. По актуальному описанию csv.writer/reader используют newline="", иначе на Windows возможны лишние пустые строки.
print в FEMM по умолчанию разделяет аргументы табуляцией. Для машинного журнала задавайте sep/end явно; сообщения об ошибках можно направлять в sys.stderr. Внешний TCP-клиент не получает этот вывод через строку результата команды.
FEMM не задаёт отдельный фиксированный предел кучи сценария: объём массивов ограничен доступной памятью системы. gc.mem_free сообщает свободное место внутри уже удерживаемой памяти, а не запас всей машины. gc.threshold принимается, но игнорируется. gc.collect принудительно запускает сборку; несколько вызовов могут потребоваться для возврата большой области ОС. Это не повод хранить крупную сетку списком отдельных Python-чисел.
Таблица Р.40.1. Файлы, таблицы, память и протокол серии
Функция / группа
Контракт, важный для практикума
os.getcwd, os.chdir; getcwd, setcurrentdirectory
Чтение и установка текущего каталога
os.listdir([path])
Список имён; сортируйте явно, если порядок серии существенен
os.mkdir, os.makedirs
Один каталог либо также отсутствующие родители
os.remove/unlink, os.rmdir, os.rename
Файл, каталог и смена имени/пути — разные операции
os.stat(path)
10 полей: mode,inode,device,links,uid,gid,size,atime,mtime,ctime; size находится в [6]
Подготовьте отдельный каталог опыта; поместите в него копию эталонной модели и текст программы.
Сохраните рабочую модель метода конечных элементов под новым именем. Запишите частоту, глубину, материал и число витков в текстовый протокол.
Для каждого тока решите задачу и прочитайте свойства цепи. После получения результата проверяйте совпадение заданного и возвращённого тока.
Откройте CSV в режиме w, один раз запишите заголовок. Каждой успешной строке назначьте статус ok.
Искусственно ошибитесь в имени цепи, проверьте ясность сообщения. Затем восстановите имя и повторите проход.
Откройте таблицу текстовым редактором. Пересчитайте строки и сопоставьте их со списком заданных режимов.
Ожидаемый результат. Воспроизводимая серия с полным учётом режимов и без изменения исходного эталона.
Как проверить. Два повторных прохода имеют одинаковые входные данные и число строк; неуспешный режим не создаёт численного результата.
Оценка результата
Можно ли восстановить каждую строку серии по её рабочему файлу?
Проверьте входы, имя копии, статус и результат каждой точки, включая ошибочную.
Повторите выбранную строку по сохранённым входам и проверьте связь числа с файлом и режимом; зафиксируйте причину отказа отдельно.
С чем сравнить. Опора — контрольный пример и протокол воспроизведения этого занятия. Численный self-check программы и фактическое решение FEMM имеют разное происхождение.
Итог работы. Журнал без подстановки чисел в неуспешные строки и проверка одного повтора.
Сначала упражнение без FEMM; затем замените аналитическую формулу проверенным циклом mi_/mo_ из предыдущего занятия.
Python · встроенный MicroPython FEMM 5
"""Запись таблицы аналитических результатов.Среда: встроенный MicroPython FEMM 5.Аналитический учебный пример; полевой решатель не вызывается.Параметры, единицы величин и порядок вывода пояснены по стадиям."""# Аналитический контроль: Ψ = 0,12·I. Ток задан в А, потокосцепление получается в Вб.currents=[0.0,1.0,2.0,3.0,4.0]# Создаём новую таблицу CSV в рабочем каталоге. Режим w перезаписывает прежний файл.# Выберите отдельный каталог опыта, чтобы сохранить результаты предыдущей серии.withopen("II00_control.csv","w")asstream:# Первая строка содержит обозначения величин и состояния расчёта.# Числа записываются с десятичной точкой, как требуется для последующей обработки.stream.write("current_a,linkage_wb,status\n")forcurrentincurrents:# Каждый режим обрабатывается отдельно; отказ одного режима сохраняется явно.try:# Здесь используется аналитическая формула, а не команда решения поля FEMM.linkage=0.12*currentstream.write("%.9g,%.9g,ok\n"%(current,linkage))# При отказе численное значение не подставляется; причина выводится в консоль.exceptExceptionaserror:stream.write("%.9g,,error\n"%current)print("Неуспешный режим:",current,error)
Пошаговая настройка расчётного примера
Откройте отдельную страницу с последовательными действиями, точными параметрами, накопительными файлами этапов и программами с русскими комментариями.
Рисунок 12.17. Визуализация численных данных FEMM 5: Воздушная катушка. Это экспорт результатов поля, а не снимок окна программы.
Осесимметричная учебная модель. Независимо проверены изменения сетки и внешнего радиуса; аналитическая модель тонкостенного соленоида служит отдельным приближённым ориентиром.
Ориентиры в интерфейсеРисунок 12.18. Версия FEMM 5 и дата сборки: окно «О программе». Открыть в полном размереРисунок 12.19. Поле воздушной катушки: осесимметричный магнитостатический эталон FEMM 5. Открыть в полном размереРисунок 12.20. Встроенная Python-консоль: ток, полевое напряжение и потокосцепление рассчитанных обмоток. Открыть в полном размереРисунок 12.21. Встроенная консоль FEMM: Повтор ручного расчёта, рабочие копии, таблицы и обработка ошибок. Аналитическая проверка программы занятия. Показана консоль исходной редакции программы, зафиксированной при съёмке. Текущая программа с русскими пояснениями проверена отдельно во встроенном Python FEMM; этот снимок не является новым запуском текущей редакции. Открыть в полном размере
Самостоятельная работа
Добавьте к таблице заданный ток, возвращённый ток и относительное расхождение. Проверяйте расхождение до записи статуса ok.
Критерий выполнения: Исходная модель сохранена; все режимы учтены; отказ содержит причину; повторный запуск не дублирует строки.
[19] — Выделенный Bianchi_FEMM_Lua_section.pdf, с. 24–40; исходный PDF, с. 59–75
[87] — Скачанная фиксированная версия a17dfd4, README. Внешняя система управления этого проекта не является инструментом курса.
[18] — Скачанная фиксированная версия 44fcedb, documentation/user_guide.md и tests_and_examples.md. Используется методика описания, не внешний py2femm.
Пояснения и типичные ошибкиЗачем различать полноту учёта и долю успешных режимов?
В противном случае исчезнувшие строки могут быть ошибочно приняты за завершённый проход.
Можно ли при исключении сохранить прошлое \Psi?
Нет. Оно относится к другому режиму и создаёт физически ложную строку.
На что обратить внимание
Автоматическое дописывание к results.csv скрывает смешение разных серий.
Общий except без текста ошибки лишает журнал диагностической ценности.