"""Поверхностные и встроенные магниты: проверка геометрии и обмоток.

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

import math

# Магнитная постоянная, Гн/м; остаточная индукция, Тл; относительная возвратная проницаемость.
mu0 = 4 * math.pi * 1e-7
remanence_t, recoil_permeability = 1.2, 1.05
# Нормальная коэрцитивная напряжённость Hc задаёт пересечение возвратной прямой B(H) с B = 0.
# Она не совпадает автоматически с внутренней коэрцитивной напряжённостью HcJ из паспорта магнита.
normal_coercivity_am = remanence_t / (mu0 * recoil_permeability)
print("Нормальная коэрцитивность, А/м:", normal_coercivity_am)
# Проверяем два пересечения возвратной прямой: при H = 0 и при H = −Hc.
for field_am in [0, -normal_coercivity_am]:
    flux_density_t = mu0 * recoil_permeability * field_am + remanence_t
    # Порядок вывода: напряжённость, А/м; магнитная индукция, Тл.
    print(field_am, flux_density_t)
