"""Запись таблицы аналитических результатов.

Среда: встроенный 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)
