FEMM 5

Часть III · Встроенный Python и воспроизводимая автоматизация → § 12 · Язык и безопасная последовательность вычислений

Занятие 12.4

Повтор ручного расчёта, рабочие копии, таблицы и обработка ошибок

Цель и задачи

Цель. Сделать параметрическую серию прослеживаемой при успехах и отказах.

Задачи

  • Создать рабочую копию, CSV с заголовком и журнал успешных и неуспешных режимов.
  • Записать все запланированные режимы, различая успешный результат и отказ.
Что нужно вспомнить перед началом

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

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

Подготовительный этап методики · Обеспечение воспроизводимости расчётной последовательности

Инженерный вопрос. Можно ли восстановить каждую строку серии по её рабочему файлу?

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

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

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

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

  1. Обосновать постановку и способ измерения. Разделите исходный файл, изменённую копию, актуальное решение и последующую обработку; каждая команда должна обращаться к ожидаемому документу.

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

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

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

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

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

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

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

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

Независимый контроль. Повторите выбранную строку в новой рабочей папке по сохранённым входам; аналитический self-check проверяет арифметику, а решение FEMM — полевую постановку.

Критерий выполнения. Исходная модель сохранена; все режимы учтены; отказ содержит причину; повторный запуск не дублирует строки.

Точность и расхождения. Критерий этого этапа — соответствие исходным данным, топологии, назначениям и процедуре повторного открытия. Численный допуск поля здесь не назначают: поле ещё не является защищаемым результатом. Расхождения размеров и параметров фиксируйте с единицами и происхождением.

Основание сравнения. Опора — контрольный пример и протокол воспроизведения этого занятия. Численный self-check программы и фактическое решение FEMM имеют разное происхождение.

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

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

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

Дополнительный расчётный метод

Моделирование опытов Эрстеда и Фарадея

Момент магнитной стрелки связывает опыт с вычисляемой характеристикой. Сравнение дискретной токовой и полевой моделей отделяет статический момент от движения с заданной инерцией.

Лабораторные работы по методу: Опыт Эрстеда: момент стрелки, эквивалентный ток и движение; Измерительная рамка: от поля провода к ЭДС

Получаемые величины. момент стрелки M(\theta ); ошибка дискретизации токового слоя; эквивалентные \mu и намагниченность; угол и энергия движения при заданном Jмех

  1. Зафиксировать геометрию провода, стрелки и источник.
  2. Вычислить поле внешнего тока и силу каждого элемента эквивалентного токового слоя.
  3. Суммировать моменты и уточнить число элементов/толщину слоя при сохранении полных токов.
  4. Сравнить с FEMM при совместимых свойствах материала.
  5. Для динамики добавить момент инерции и оговорённое трение, проверить шаг времени и баланс энергии.

Страницы источника. PDF 1–19 полностью: 1–4 опыты и амперовская модель; 5–14 алгоритм сил и программные иллюстрации; 15–17 сравнение FEMM; 18–19 движение стрелки.

Литература по методу

Параметризация и автоматизация серий расчётов

Алгоритмическая последовательность объединяет параметры, свойства, геометрию, группы и серии расчётов. В курсе эти действия выполняются во встроенном Python FEMM 5 с сохранением точных имён API.

Лабораторные работы по методу: Трансформатор от потокосцеплений до схемы замещения и нагрузочной характеристики; Асинхронный двигатель от поля в зазоре до параметров и механической характеристики; Генератор с постоянными магнитами от конструкции ротора до ЭДС и нагрузочного напряжения; Контрольный опыт: от условия задачи к инженерному выводу; Опыт Эрстеда: момент стрелки, эквивалентный ток и движение; Измерительная рамка: от поля провода к ЭДС; Аналогии полей: проводимость, дуальная сеть и диффузия; Зубцовый момент: пусковая помеха и спектр PM-генератора

Получаемые величины. профиль B и гармоники; зубцовый момент M(\theta ); численная устойчивость углового шага; целостность параметрической геометрии

  1. Выделить исходные параметры и точные единицы.
  2. Построить свойства, геометрию и группы через проверенный Python API.
  3. Сохранить/повторно открыть модель с кириллицей перед серией.
  4. В каждом положении выполнить новый анализ, загрузить именно новое решение и записать режим/число.
  5. Для спектра и момента обосновать период и уточнить дискретизацию.

Страницы источника. PDF 1–30 полностью: 1–4 команды и правила; 5–10 простой зазор; 11–19 параметрическая PM-геометрия; 20–25 зубцовый момент; 26–30 токовые гармоники.

Литература по методу

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

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

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

Физическая и вычислительная постановка

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

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

N_{\text{усп}}+N_{\text{отказ}}=N_{\text{зад}},\qquad \Delta I=\frac{I_{\text{кон}}-I_{\text{нач}}}{N_{\text{зад}}-1}
(12.8)
Количество заданных режимов должно совпадать с числом явно учтённых результатов и отказов.

Порядок проверки результата

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

Пояснение программы

Конструкция with гарантирует закрытие файла при выходе из блока. Режим w создаёт новую таблицу и перезаписывает файл с тем же именем, поэтому каждой серии нужен отдельный рабочий каталог. Заголовок указывает величины и состояние расчёта. При исключении сохраняется запись об отказе без фиктивного численного результата. Формат %.9g задаёт числовую запись с девятью значащими цифрами; число цифр в окончательном техническом отчёте выбирают по погрешности результата.

Полнота серии и обработка отказов

Каждому заданному набору параметров соответствует одна запись с результатом либо с явной причиной отказа.

  1. Сформируйте сетку параметра до запуска решателя. При одном узле используйте его непосредственно: формула шага с делением на число интервалов предполагает хотя бы два узла.

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

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

Таблица 12.10. Обозначения и единицы
ВеличинаФизический смыслЕдиница СИ
IТок обмотки; в статике постоянныйА
qПроверяемый результат; единица определяется выбором результатапо результату
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; при наличии сначала исполнить сценарий
femm_headless без аргументов в терминалеВойти в REPL
femm_headless --version / --helpНапечатать версию / помощь и выйти
Неизвестный параметр femm_headlessОшибка с кодом 2, параметр не считается сценарием
femm-lua -h -p 48016 script.luaСовместимый Lua-клиент с отдельным портом
femm_headless --port 48020 -run sweep.py --port 5
# FEMM слушает 48020; сценарий получает строки "--port", "5".
# Внутри sweep.py: import sys; print(sys.argv)

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

  • Объясните разницу между femm_headless model.py и femm_headless -run model.py.
  • Укажите, кому достанется второй --port в примере ниже; проверьте преобразование числовых sys.argv.
  • Зафиксируйте версию, код завершения и новый путь решения; не считайте старый .ans успешным новым результатом.

Источник: [33]. § 1.1 · § 3.1 · § 3.3

Файлы, таблицы, память и протокол серии

Имя 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]
os.path.exists/isdir/isfile/getsizeПроверка назначения и размера пути
os.path.abspath/join/split/splitext/dirname/basenameПостроение абсолютных путей и разбор компонентов

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

  • Сохраните и прочитайте CSV с кириллической строкой и запятой в поле, проверьте число строк.
  • Проверьте, что пути модели, решения и таблицы уникальны для параметра серии.
  • Не интерпретируйте gc.mem_free как объём свободной ОЗУ компьютера.

Источник: [33]. § 3.2 · § 3.3 · § 3.5

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

Вычисленный аналитический эталон

Дано. Пять заданных токов от 0 до 4 \,\text{А}; успешно рассчитаны 0, 1, 3 и 4 \,\text{А}, отказ на 2 \,\text{А}.

  1. Шаг тока \Delta I = (4 - 0)/(5 - 1) = 1 \,\text{А}.

    \Delta I=\frac{4-0}{5-1}=1\ \text{А},\quad N_{\text{усп}}+N_{\text{отказ}}=4+1=5
    (12.9)
  2. Учтены четыре успешных режима и один отказ: 4 + 1 = 5. Строка неуспешного расчёта содержит статус error, а не фиктивное \Psi = 0.

Ответ: Полнота учёта 100 \,\%; доля успешно решённых режимов 80 \,\%. Эти показатели имеют разный смысл.

Проверка: После повторного запуска с режимом w файл содержит пять строк данных, а не десять.

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

Повторяемая серия и журнал отказов

Таблица 12.11. Исходные данные практикума
Исходная величинаЗначениеЕдиница
Число режимов5
Диапазон токов0\text{–}4А
Имя цепиКатушка
  1. Подготовьте отдельный каталог опыта; поместите в него копию эталонной модели и текст программы.
  2. Сохраните рабочую модель метода конечных элементов под новым именем. Запишите частоту, глубину, материал и число витков в текстовый протокол.
  3. Для каждого тока решите задачу и прочитайте свойства цепи. После получения результата проверяйте совпадение заданного и возвращённого тока.
  4. Откройте CSV в режиме w, один раз запишите заголовок. Каждой успешной строке назначьте статус ok.
  5. Искусственно ошибитесь в имени цепи, проверьте ясность сообщения. Затем восстановите имя и повторите проход.
  6. Откройте таблицу текстовым редактором. Пересчитайте строки и сопоставьте их со списком заданных режимов.

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

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

Оценка результата

Можно ли восстановить каждую строку серии по её рабочему файлу?

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

С чем сравнить. Опора — контрольный пример и протокол воспроизведения этого занятия. Численный 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 перезаписывает прежний файл.
# Выберите отдельный каталог опыта, чтобы сохранить результаты предыдущей серии.
with open("II00_control.csv", "w") as stream:
    # Первая строка содержит обозначения величин и состояния расчёта.
    # Числа записываются с десятичной точкой, как требуется для последующей обработки.
    stream.write("current_a,linkage_wb,status\n")
    for current in currents:
        # Каждый режим обрабатывается отдельно; отказ одного режима сохраняется явно.
        try:
            # Здесь используется аналитическая формула, а не команда решения поля FEMM.
            linkage = 0.12 * current
            stream.write("%.9g,%.9g,ok\n" % (current, linkage))
        # При отказе численное значение не подставляется; причина выводится в консоль.
        except Exception as error:
            stream.write("%.9g,,error\n" % current)
            print("Неуспешный режим:", current, error)

Пошаговая настройка расчётного примера

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

Все расчётные примеры курса

Расчётный образец FEMM 5

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

Таблица 12.12. Результаты расчётного образца
ВеличинаРезультатЕдиница
Частота0Гц
Ток цепи Катушка1А
Потокосцепление цепи Катушка95,85 × 10⁻⁶Вб
Энергия поля47,92 × 10⁻⁶Дж
Модуль B в контрольной точке608,5 × 10⁻⁶Тл
Координаты контрольной точки (r, z)0,001; 0мм
Визуализация численных данных FEMM 5: Воздушная катушка. Это экспорт результатов поля, а не снимок окна программы.
Рисунок 12.17. Визуализация численных данных FEMM 5: Воздушная катушка. Это экспорт результатов поля, а не снимок окна программы.

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

Ориентиры в интерфейсе
Версия FEMM 5 и дата сборки: окно «О программе».
Рисунок 12.18. Версия FEMM 5 и дата сборки: окно «О программе». Открыть в полном размере
Поле воздушной катушки: осесимметричный магнитостатический эталон FEMM 5.
Рисунок 12.19. Поле воздушной катушки: осесимметричный магнитостатический эталон FEMM 5. Открыть в полном размере
Встроенная Python-консоль: ток, полевое напряжение и потокосцепление рассчитанных обмоток.
Рисунок 12.20. Встроенная Python-консоль: ток, полевое напряжение и потокосцепление рассчитанных обмоток. Открыть в полном размере
Встроенная консоль FEMM: Повтор ручного расчёта, рабочие копии, таблицы и обработка ошибок. Аналитическая проверка программы занятия. Показана консоль исходной редакции программы, зафиксированной при съёмке. Текущая программа с русскими пояснениями проверена отдельно во встроенном Python FEMM; этот снимок не является новым запуском текущей редакции.
Рисунок 12.21. Встроенная консоль FEMM: Повтор ручного расчёта, рабочие копии, таблицы и обработка ошибок. Аналитическая проверка программы занятия. Показана консоль исходной редакции программы, зафиксированной при съёмке. Текущая программа с русскими пояснениями проверена отдельно во встроенном Python FEMM; этот снимок не является новым запуском текущей редакции. Открыть в полном размере

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

Добавьте к таблице заданный ток, возвращённый ток и относительное расхождение. Проверяйте расхождение до записи статуса ok.

Критерий выполнения: Исходная модель сохранена; все режимы учтены; отказ содержит причину; повторный запуск не дублирует строки.
Первоисточники и дополнительное чтение по занятию
  1. [33] — 90–95, 99–100, 110
  2. [81] — Раздел Packages · Локальная копия
  3. [19] — Выделенный Bianchi_FEMM_Lua_section.pdf, с. 24–40; исходный PDF, с. 59–75
  4. [87] — Скачанная фиксированная версия a17dfd4, README. Внешняя система управления этого проекта не является инструментом курса.
  5. [18] — Скачанная фиксированная версия 44fcedb, documentation/user_guide.md и tests_and_examples.md. Используется методика описания, не внешний py2femm.
Пояснения и типичные ошибки
Зачем различать полноту учёта и долю успешных режимов?

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

Можно ли при исключении сохранить прошлое \Psi?

Нет. Оно относится к другому режиму и создаёт физически ложную строку.

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

  • Автоматическое дописывание к results.csv скрывает смешение разных серий.
  • Общий except без текста ошибки лишает журнал диагностической ценности.