Source code for xbout.tests.test_plot

import pytest

from matplotlib import pyplot as plt
import numpy as np

from xbout import open_boutdataset
from xbout.tests.test_region import (
    params_guards,
    params_guards_values,
    params_boundaries,
    params_boundaries_values,
)


[docs] class TestPlot:
[docs] @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) ds["R"] = ds["R"].copy(deep=True) ds["R"].data[:, :] = np.linspace(0.0, 1.0, ds.sizes["x"])[:, np.newaxis] ds["Z"] = ds["Z"].copy(deep=True) ds["Z"].data[:, :] = np.linspace(0.0, 1.0, ds.sizes["theta"])[np.newaxis, :] n = ds["n"].isel(t=-1, zeta=0) n.bout.contour() plt.close() n.bout.contourf() plt.close() n.bout.pcolormesh() plt.close() n.bout.from_region("lower_inner_PFR", with_guards=with_guards).bout.pcolormesh() plt.close() n.bout.from_region( "lower_inner_intersep", with_guards=with_guards ).bout.contourf() plt.close() n.bout.from_region("lower_inner_SOL", with_guards=with_guards).bout.contour() plt.close() plt.figure() n.bout.from_region("inner_core", with_guards=with_guards).plot() plt.close() n.bout.from_region("inner_intersep", with_guards=with_guards).bout.pcolormesh() plt.close() n.bout.from_region("inner_SOL", with_guards=with_guards).bout.contourf() plt.close() n.bout.from_region("upper_inner_PFR", with_guards=with_guards).bout.contour() plt.close() plt.figure() n.bout.from_region("upper_inner_intersep", with_guards=with_guards).plot() plt.close() n.bout.from_region("upper_inner_SOL", with_guards=with_guards).bout.pcolormesh() plt.close() n.bout.from_region("upper_outer_PFR", with_guards=with_guards).bout.contourf() plt.close() n.bout.from_region( "upper_outer_intersep", with_guards=with_guards ).bout.contour() plt.close() plt.figure() n.bout.from_region("upper_outer_SOL", with_guards=with_guards).plot() plt.close() n.bout.from_region("outer_core", with_guards=with_guards).bout.pcolormesh() plt.close() n.bout.from_region("outer_intersep", with_guards=with_guards).bout.contourf() plt.close() n.bout.from_region("outer_SOL", with_guards=with_guards).bout.contour() plt.close() plt.figure() n.bout.from_region("lower_outer_PFR", with_guards=with_guards).plot() plt.close() n.bout.from_region( "lower_outer_intersep", with_guards=with_guards ).bout.pcolormesh() plt.close() n.bout.from_region("lower_outer_SOL", with_guards=with_guards).bout.contourf() plt.close()
[docs] @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) ds["R"] = ds["R"].copy(deep=True) ds["R"].data[:, :] = np.linspace(0.0, 1.0, ds.sizes["x"])[:, np.newaxis] ds["Z"] = ds["Z"].copy(deep=True) ds["Z"].data[:, :] = np.linspace(0.0, 1.0, ds.sizes["theta"])[np.newaxis, :] n = ds["n"].isel(t=-1, zeta=0) n.bout.contour() plt.close() n.bout.contourf() plt.close() n.bout.pcolormesh() plt.close()