Source code for freegs.test_equilibrium

from . import equilibrium
from . import boundary
from . import jtor
from . import picard
from .machine import TestTokamak

import numpy as np

[docs] def test_inoutseparatrix(): eq = equilibrium.Equilibrium(Rmin=0.1, Rmax=2.0, Zmin=-1.0, Zmax=1.0, nx=65, ny=65) # Two O-points, one X-point half way between them psi = np.exp((-((eq.R - 1.0) ** 2) - eq.Z**2) * 3) + np.exp( (-((eq.R - 1.0) ** 2) - (eq.Z + 1) ** 2) * 3 ) eq._updatePlasmaPsi(psi) Rin, Rout = eq.innerOuterSeparatrix() assert Rin >= eq.Rmin assert Rout >= eq.Rmin assert Rin <= eq.Rmax assert Rout <= eq.Rmax
[docs] def test_fixed_boundary_psi(): # This is adapted from example 5 eq = equilibrium.Equilibrium( Rmin=0.1, Rmax=2.0, Zmin=-1.0, Zmax=1.0, nx=65, ny=65, boundary=boundary.fixedBoundary, ) # Plasma pressure on axis [Pascals] # Plasma current [Amps] profiles = jtor.ConstrainPaxisIp(eq, 1e3, 1e5, 1.0) # fvac = R*Bt # Nonlinear solve picard.solve(eq, profiles) psi = eq.psi() assert psi[0, 0] == 0.0 # Boundary is fixed assert psi[32, 32] != 0.0 # Solution is not all zero assert eq.psi_bndry == 0.0 assert eq.poloidalBeta() > 0.0
[docs] def test_fixed_boundary_psi_check_limited(): # This is adapted from example 5 tokamak = TestTokamak() eq = equilibrium.Equilibrium( tokamak=tokamak, Rmin=0.1, Rmax=2.0, Zmin=-1.0, Zmax=1.0, nx=65, ny=65, boundary=boundary.fixedBoundary, check_limited=True, ) profiles = jtor.ConstrainPaxisIp( eq, 1e3, 1e5, 1.0 # Plasma pressure on axis [Pascals] # Plasma current [Amps] ) # fvac = R*Bt # Nonlinear solve picard.solve(eq, profiles) psi = eq.psi() assert psi[0, 0] == 0.0 # Boundary is fixed assert psi[32, 32] != 0.0 # Solution is not all zero assert eq.psi_bndry == 0.0 assert eq.poloidalBeta() > 0.0
[docs] def test_setSolverVcycle(): eq = equilibrium.Equilibrium(Rmin=0.1, Rmax=2.0, Zmin=-1.0, Zmax=1.0, nx=65, ny=65) oldsolver = eq._solver eq.setSolverVcycle(nlevels=2, ncycle=1, niter=5) assert eq._solver != oldsolver