Source code for freegs.test_machine

#
# Test calculation of magnetic field due to coils
# and forces between coils

import math

import numpy as np

from . import machine

mu0 = 4e-7 * np.pi


[docs] def test_coil_axis(): """ Test magnetic field due to a single coil, on axis """ Rcoil = 1.5 current = 123.0 coil = machine.Coil(Rcoil, 1.0, current=current) def analytic_Bz(dZ): return (mu0 / 2) * Rcoil**2 * current / (dZ**2 + Rcoil**2) ** 1.5 # Note: Can't evaluate at R=0, assert math.isclose(coil.Br(0.0001, 2.0), 0.0, abs_tol=1e-8) assert math.isclose(coil.Bz(0.001, 2.0), analytic_Bz(1.0), abs_tol=1e-8) assert math.isclose(coil.Bz(0.001, -1.0), analytic_Bz(-2.0), abs_tol=1e-8)
[docs] def test_coil_forces(): """ Test forces between two coils """ Rcoil = 1.5 current = 123.0 coil1 = machine.Coil(Rcoil, 1.0, current=current) coil2 = machine.Coil(Rcoil, -1.0, current=current) tokamak = machine.Machine([("P1", coil1), ("P2", coil2)]) forces = tokamak.getForces() assert "P1" in forces assert "P2" in forces # Vertical force is equal and opposite assert math.isclose(forces["P1"][1], -forces["P2"][1]) assert forces["P1"][1] < 0.0 # Force downward towards other coil # Reverse one of the currents coil2.current = -123.0 # check the force reverses direction forces = tokamak.getForces() assert forces["P1"][1] > 0.0 print(forces)
[docs] def test_coil_forces_unequal(): """ Test forces between two different sized coils """ coil1 = machine.Coil(1.5, 1.0, current=123) coil2 = machine.Coil(2.5, -1.0, current=456) tokamak = machine.Machine([("P1", coil1), ("P2", coil2)]) forces = tokamak.getForces() assert "P1" in forces assert "P2" in forces # Vertical force is equal and opposite assert math.isclose(forces["P1"][1], -forces["P2"][1]) assert forces["P1"][1] < 0.0 # Force downward towards other coil