#!/usr/bin/env python3
"""Reproduce an ideal circular-loop scale check; this is not a propulsion model.

Inputs are selected for illustration and are not reported coil properties:
B=0.46 T at axial distance z=10 m; loop radius a=6.59 m.
Only Python's standard library is required. The script writes JSON beside itself.
"""
import json
import math
from pathlib import Path

mu0_approx_SI = 4 * math.pi * 1e-7
B_target_T = 0.46
loop_radius_m = 6.59
axial_distance_m = 10.0

# On-axis field of an ideal N-turn circular loop: B = mu0*N*I*a^2 /
# (2*(a^2+z^2)^(3/2)). Solve for ampere-turns N*I.
ampere_turns = B_target_T * 2 * (loop_radius_m**2 + axial_distance_m**2)**1.5 / (mu0_approx_SI * loop_radius_m**2)
center_field_T = mu0_approx_SI * ampere_turns / (2 * loop_radius_m)
local_vacuum_field_energy_density_J_m3 = B_target_T**2 / (2 * mu0_approx_SI)

result = {
    "status": "illustrative ideal-loop scale check; not a reconstruction, measurement, or propulsion model",
    "scenario_inputs": {"assumed_field_T": B_target_T, "assumed_axial_distance_m": axial_distance_m, "measurement_status": "illustrative values only; no calibrated field, vector map, current geometry, duration, or force measurement supplied"},
    "chosen_model_inputs": {"mu0_approx_SI": mu0_approx_SI, "loop_radius_m": loop_radius_m, "axial_distance_m": axial_distance_m},
    "results": {"required_ampere_turns_N_times_I_A_turn": ampere_turns, "same_loop_center_field_T": center_field_T, "local_vacuum_field_energy_density_J_m3": local_vacuum_field_energy_density_J_m3},
    "limits": ["The selected circular-loop geometry is selected for this exercise.", "N and I are not separately determined.", "Resistance, coil mass, cooling, power, uncertainty, field extent, total field energy, force, and vehicle momentum balance are omitted.", "Local energy density is not total stored energy, usable power, or thrust."],
}
output = Path(__file__).with_name("field-scale-results.json")
output.write_text(json.dumps(result, indent=2) + "\n", encoding="utf-8")
print(json.dumps(result, indent=2))
