From ccc24be2b393ee135e8ede6337c727b0d4ad6047 Mon Sep 17 00:00:00 2001 From: Vaibhav Gupta Date: Mon, 7 Aug 2017 10:48:04 +0530 Subject: [PATCH] Add plasma test class 1. BasePlasmaTest defines all the common tests for different Plasma Setups. 2. Values are compared from a reference HDF file. --- tardis/conftest.py | 3 +- tardis/plasma/tests/data/reference_plasma.h5 | Bin 1529464 -> 0 bytes tardis/plasma/tests/test_complete_plasmas.py | 161 +++++++++++++++++++ 3 files changed, 163 insertions(+), 1 deletion(-) delete mode 100644 tardis/plasma/tests/data/reference_plasma.h5 diff --git a/tardis/conftest.py b/tardis/conftest.py index 15222177777..852b9a1fb6b 100644 --- a/tardis/conftest.py +++ b/tardis/conftest.py @@ -77,7 +77,8 @@ def pytest_addoption(parser): parser.addoption("--less-packets", action="store_true", default=False, help="Run integration tests with less packets.") - + parser.addoption("--plasma-reference", dest="plasma-reference", default=None, + help="folder for plasma reference HDF files") # ------------------------------------------------------------------------- # project specific fixtures diff --git a/tardis/plasma/tests/data/reference_plasma.h5 b/tardis/plasma/tests/data/reference_plasma.h5 deleted file mode 100644 index 153e5732eb2d50a9c68fde4eebfeaf73412cb14c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529464 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 zkre?15I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL 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 diff --git a/tardis/plasma/tests/test_complete_plasmas.py b/tardis/plasma/tests/test_complete_plasmas.py index 8b137891791..39ba3882117 100644 --- a/tardis/plasma/tests/test_complete_plasmas.py +++ b/tardis/plasma/tests/test_complete_plasmas.py @@ -1 +1,162 @@ +import os +import pandas as pd +import pytest +from pandas.util import testing as pdt + +from tardis.io.config_reader import Configuration +from tardis.simulation import Simulation + + +plasma_ref_path = os.path.expanduser(os.path.expandvars( + pytest.config.getvalue('plasma-reference'))) + + +class BasePlasmaTest: + #Class defining all common tests for different setups of Plasma + #This can then be inherited for different Plasma setup + @classmethod + def setup(cls): + pass + + def read_hdf_attr(self, attr): + return pd.read_hdf(self.reference_file_path, os.path.join('plasma', attr)) + + #GENERAL PROPERTIES + def test_beta_rad(self): + pdt.assert_almost_equal(self.plasma.beta_rad, + self.read_hdf_attr('beta_rad').values) + + def test_g_electron(self): + pdt.assert_almost_equal(self.plasma.g_electron, + self.read_hdf_attr('g_electron').values) + + def test_number_density(self): + pdt.assert_almost_equal( + self.plasma.number_density, self.read_hdf_attr('number_density')) + + def test_electron_temperature(self): + pdt.assert_almost_equal(self.plasma.t_electrons, + self.read_hdf_attr('t_electrons').values) + + #PARTITION PROPERTIES + def test_level_boltzmann_factor(self): + pdt.assert_almost_equal( + self.plasma.level_boltzmann_factor, self.read_hdf_attr('level_boltzmann_factor')) + + def test_lte_partition_function(self): + pdt.assert_almost_equal( + self.plasma.partition_function, self.read_hdf_attr('partition_function')) + + #ATOMIC PROPERTIES + def test_levels_property(self): + pdt.assert_almost_equal( + self.plasma.excitation_energy, self.read_hdf_attr('excitation_energy')) + + def test_lines_property(self): + pdt.assert_almost_equal(self.plasma.lines, self.read_hdf_attr('lines')) + + def test_lines_lower_level_index_property(self): + pdt.assert_almost_equal(self.plasma.lines_lower_level_index, self.read_hdf_attr( + 'lines_lower_level_index').values) + + def test_lines_upper_level_index_property(self): + pdt.assert_almost_equal(self.plasma.lines_upper_level_index, self.read_hdf_attr( + 'lines_upper_level_index').values) + + def test_atomic_mass_property(self): + pdt.assert_almost_equal(self.plasma.atomic_mass, + self.read_hdf_attr('atomic_mass')) + + def test_ionization_data_property(self): + pdt.assert_almost_equal( + self.plasma.ionization_data, self.read_hdf_attr('ionization_data')) + + #ION POPULATION PROPERTIES + def test_phi(self): + pdt.assert_almost_equal(self.plasma.phi, self.read_hdf_attr('phi')) + + def test_ion_number_density(self): + pdt.assert_almost_equal( + self.plasma.ion_number_density, self.read_hdf_attr('ion_number_density')) + + def test_electron_densities(self): + pdt.assert_almost_equal( + self.plasma.electron_densities, self.read_hdf_attr('electron_densities')) + + #LEVEL POPULATION PROPERTIES + def test_level_number_density(self): + pdt.assert_almost_equal( + self.plasma.level_number_density, self.read_hdf_attr('level_number_density')) + + #RADIATIVE PROPERTIES + def test_stimulated_emission_factor(self): + pdt.assert_almost_equal(self.plasma.stimulated_emission_factor, self.read_hdf_attr( + 'stimulated_emission_factor').values) + + def test_tau_sobolev(self): + pdt.assert_almost_equal(self.plasma.tau_sobolevs, + self.read_hdf_attr('tau_sobolevs')) + + def test_beta_sobolev(self): + pdt.assert_almost_equal(self.plasma.beta_sobolev, + self.read_hdf_attr('beta_sobolev').values) + + +@pytest.mark.skipif(not pytest.config.getvalue("plasma-reference"), + reason="Path to Plasma Reference files is not defined") +class TestLTEPlasma(BasePlasmaTest): + + @classmethod + @pytest.fixture(scope="class", autouse=True) + def setup(cls): + cls.reference_file_path = os.path.join( + plasma_ref_path, 'plasma_lte_reference.h5') + + cls.config_path = os.path.join( + 'tardis', 'plasma', 'tests', 'data', 'plasma_test_config_lte.yml') + cls.config = Configuration.from_yaml(cls.config_path) + cls.config['atom_data'] = os.path.abspath(os.path.expanduser(os.path.expandvars( + pytest.config.getvalue('atomic-dataset')))) + cls.sim = Simulation.from_config(cls.config) + cls.sim.run() + cls.plasma = cls.sim.plasma + + +@pytest.mark.skipif(not pytest.config.getvalue("plasma-reference"), + reason="Path to Plasma Reference files is not defined") +class TestNLTEPlasma(BasePlasmaTest): + + @classmethod + @pytest.fixture(scope="class", autouse=True) + def setup(cls): + cls.reference_file_path = os.path.join( + plasma_ref_path, 'plasma_nlte_reference.h5') + + cls.config_path = os.path.join( + 'tardis', 'plasma', 'tests', 'data', 'plasma_test_config_nlte.yml') + cls.config = Configuration.from_yaml(cls.config_path) + cls.config['atom_data'] = os.path.abspath(os.path.expanduser(os.path.expandvars( + pytest.config.getvalue('atomic-dataset')))) + cls.sim = Simulation.from_config(cls.config) + cls.sim.run() + cls.plasma = cls.sim.plasma + + #Additional Tests for NLTE Plasma, apart from tests defined in BasePlasmaTest + #GENERAL PROPERTIES + def test_beta_electron(self): + pdt.assert_almost_equal(self.plasma.beta_electron, + self.read_hdf_attr('beta_electron').values) + + def test_selected_atoms(self): + pdt.assert_almost_equal( + self.plasma.selected_atoms.values, self.read_hdf_attr('selected_atoms').values) + + #ATOMIC PROPERTIES + def test_zeta_data_property(self): + pdt.assert_almost_equal( + self.plasma.zeta_data.values, self.read_hdf_attr('zeta_data').values) + + #ION POPULATION PROPERTIES + def test_radiation_field_correction(self): + pdt.assert_almost_equal(self.plasma.delta, self.read_hdf_attr('delta'))