Source code for freegs.test_readwrite

import io

from numpy import allclose

import freegs


[docs] def test_readwrite(): """Test reading/writing to a file round-trip""" for tokamak in [freegs.machine.TestTokamak(), freegs.machine.MAST_sym()]: eq = freegs.Equilibrium( tokamak=tokamak, Rmin=0.1, Rmax=2.0, Zmin=-1.0, Zmax=1.0, nx=17, ny=17, boundary=freegs.boundary.freeBoundaryHagenow, ) profiles = freegs.jtor.ConstrainPaxisIp(eq, 1e4, 1e6, 2.0) # Note here the X-point locations and isoflux locations are not the same. # The result will be an unbalanced double null configuration, where the # X-points are on different flux surfaces. xpoints = [(1.1, -0.6), (1.1, 0.8)] isoflux = [(1.1, -0.6, 1.1, 0.6)] constrain = freegs.control.constrain(xpoints=xpoints, isoflux=isoflux) freegs.solve(eq, profiles, constrain, maxits=25, atol=1e-3, rtol=1e-1) memory_file = io.BytesIO() with freegs.OutputFile(memory_file, "w") as f: f.write_equilibrium(eq) with freegs.OutputFile(memory_file, "r") as f: read_eq = f.read_equilibrium() assert tokamak == read_eq.tokamak assert allclose(eq.psi(), read_eq.psi())