"""Аналитические масштабы измерений машины, трансформатора и аппарата.

Среда: встроенный MicroPython FEMM 5.
Вход: Bpeak [Т], площадь [м²], витки, частота [Гц]; для зазора длина [м].
Выход: JSON с действующими ЭДС [В], идеальной силой [Н] и МДС [А].
Модель: синусоидальный одинаковый поток витков; сила относится к одной
поверхности равномерного нормального поля в воздухе без краевых эффектов.
Это оценка масштаба, а не модель или физическая верификация устройства.
"""

import json
import math

MU0 = 4 * math.pi * 1e-7  # Учебное приближение магнитной постоянной, Гн/м.


def coil_voltage(b_peak_T, area_m2, turns, frequency_Hz):
    """Вернуть действующую ЭДС, В, для синусоидального сцепленного потока.

    b_peak_T — амплитуда нормальной B, а не действующее значение.
    Все витки имеют одинаковый поток b_peak_T*area_m2.
    """
    # Производная синусоиды даёт omega; деление на sqrt(2) даёт E_rms.
    omega = 2 * math.pi * frequency_Hz
    return omega * turns * area_m2 * b_peak_T / math.sqrt(2)


gap_b_T = 0.8
gap_area_m2 = 3e-4
gap_length_m = 0.001

# Давление Максвелла B²/(2*mu0) умножается на площадь одной поверхности.
# МДС равна H*l = B*l/mu0 только для указанного воздушного зазора.
ideal_force_N = gap_b_T**2 * gap_area_m2 / (2 * MU0)
gap_mmf_A = gap_b_T * gap_length_m / MU0
result = {
    "origin": "author_analytical_application_scales_not_device_validation",
    "machine_emf_rms_V": coil_voltage(0.01, 2e-4, 100, 50),
    "transformer_emf_rms_V": coil_voltage(1.2, 4e-4, 20, 50),
    "apparatus_gap_B_T": gap_b_T,
    "apparatus_single_surface_ideal_force_N": ideal_force_N,
    "apparatus_gap_mmf_A": gap_mmf_A,
    "limitations": "Sinusoidal linked flux; last two quantities assume uniform normal field in one air gap without fringing.",
}
print(json.dumps(result))
