Esempio n. 1
0
def test_q_profiles():
    from pleque.io.compass import read_fiesta_equilibrium
    from pleque.io._geqdsk import read as read_gfile

    import matplotlib.pyplot as plt
    import numpy as np

    g_file = get_test_equilibria_filenames()[0]

    eq = read_fiesta_equilibrium(g_file)
    with open(g_file, 'r') as f:
        eq_dict = read_gfile(f)

    print(eq_dict.keys())

    q_1 = []
    psi_ns = []
    NN = eq_dict['nx'] * 4
    for i in range(1, NN):
        psi_n = i / NN
        print(psi_n)
        psi_ns.append(psi_n)
        surf = eq._flux_surface(psi_n=psi_n, resolution=[1e-3, 1e-3])
        q_1.append(surf[0].eval_q)

    q_1 = np.array(q_1)
Esempio n. 2
0
def main():
    import matplotlib.pyplot as plt

    tokamak = 'COMPASS-U'

    if tokamak == 'JET':
        eq = reader_jet.sal_jet(92400)
    elif tokamak == 'COMPASS-U':
        test_case = 0
        gfile = get_test_equilibria_filenames()[test_case]
        eq = load_testing_equilibrium(test_case)
    else:
        test_case = 0
        gfile = get_test_equilibria_filenames()[test_case]
        eq = load_testing_equilibrium(test_case)

    eq.plot_overview()
    plot_extremes(eq)

    surfaces = []
    vols = []
    dvols = []
    psi_ns = np.linspace(0.1, 0.9, 200)
    for psi_n in psi_ns:
        sf = eq._flux_surface(psi_n=psi_n)[0]
        surfaces.append(sf)
        vols.append(sf.volume)
        dvols.append(sf.diff_volume)

    dvols2 = np.gradient(vols, psi_ns) * np.abs(eq._diff_psi_n)

    plt.figure()
    plt.plot(psi_ns, dvols, label='computed')
    plt.plot(psi_ns, dvols2, label='shapely')
    plt.legend()
    plt.show()

    print(eq.fluxfuncs.F)
    print(eq.fluxfuncs.__dict__)

    # Show all plots generated during tests
    plt.show()
Esempio n. 3
0
def test_equilibria(case):

    gfiles = get_test_equilibria_filenames()

    print("Reading {}".format(gfiles[case]))

    eq = read_geqdsk(gfiles[case])

    assert np.allclose(eq._mg_axis, o_points[case])
    if eq._x_point is not None:
        assert np.allclose(eq._x_point, x_points[case])
    if eq._strike_points is not None and st_points[case] is not None:
        assert np.allclose(eq._strike_points[0], st_points[case])
Esempio n. 4
0
def main():
    import matplotlib.pyplot as plt

    test_case = 4
    gfile = get_test_equilibria_filenames()[test_case]
    eq = load_testing_equilibrium(test_case)

    ax = plot_overview(eq)
    # plot_extremes(eq, ax)
    # plot_psi_derivatives(eq)

    show_qprofiles(gfile, eq)

    print(eq.fluxfuncs.F)
    print(eq.fluxfuncs.__dict__)

    # Show all plots generated during tests
    plt.show()
Esempio n. 5
0
def geqdsk_file(request):
    yield test_util.get_test_equilibria_filenames()[request.param]
Esempio n. 6
0
if __name__ == '__main__':
    from pleque.io import _geqdsk, _readgeqdsk
    from pleque.tests.utils import get_test_equilibria_filenames
    from collections import *

    eqdsk_file = get_test_equilibria_filenames()[0]

    # Read Matheeesek:
    eq_1 = _readgeqdsk._readeqdsk(eqdsk_file)
    # Read Ben:
    with open(eqdsk_file, 'r') as f:
        eq_2 = _geqdsk.read(f)

    print(eq_1.keys())
    print(eq_2.keys())


    def compare(eq_1, eq_2):
        '''
        Compare content of eq_1 according to content of eq_2
        :param eq_1:
        :param eq_2:
        :return:
        '''
        for k, v in eq_1.items():
            if k in eq_2:
                if isinstance(v, Iterable):
                    if len(v) == len(eq_2[k]):
                        print("{} OK".format(k))
                    else:
                        print("{} in both, but {} != {}".format(k, len(v), len(eq_2[k])))