Source code for freegs.test_optimise

import numpy as np

from . import optimise


[docs] class DummyCoil:
[docs] def __init__(self): self.R = 1.0 self.Z = 0.0
[docs] class DummyEq:
[docs] def __init__(self, coil_names): self.tokamak = {name: DummyCoil() for name in coil_names}
[docs] def test_CoilRadius(): control_p1 = optimise.CoilRadius("P1") eq = DummyEq(["P1", "P2"]) p2_R = eq.tokamak["P2"].R control_p1.set(eq, 2.5) assert np.isclose(eq.tokamak["P1"].R, 2.5) # The value was changed assert np.isclose(p2_R, eq.tokamak["P2"].R) # Other coil not changed
[docs] def test_CoilRadiusLimits(): control_p1 = optimise.CoilRadius("P1", minimum=0.5, maximum=2) eq = DummyEq(["P1", "P2"]) control_p1.set(eq, 0.1) assert np.isclose(eq.tokamak["P1"].R, 0.5) # Lower limit control_p1.set(eq, 4) assert np.isclose(eq.tokamak["P1"].R, 2.0) # Upper limit
[docs] def test_CoilHeight(): control_p1 = optimise.CoilHeight("P1") eq = DummyEq(["P1", "P2"]) p2_Z = eq.tokamak["P2"].Z control_p1.set(eq, 2.5) assert np.isclose(eq.tokamak["P1"].Z, 2.5) # The value was changed assert np.isclose(p2_Z, eq.tokamak["P2"].Z) # Other coil not changed
[docs] def test_CoilHeightLimits(): control_p1 = optimise.CoilHeight("P1", minimum=0.5, maximum=2) eq = DummyEq(["P1", "P2"]) control_p1.set(eq, 0.1) assert np.isclose(eq.tokamak["P1"].Z, 0.5) # Lower limit control_p1.set(eq, 4) assert np.isclose(eq.tokamak["P1"].Z, 2.0) # Upper limit