-
-
Notifications
You must be signed in to change notification settings - Fork 400
/
test_tardis_full_formal_integral.py
89 lines (69 loc) · 2.69 KB
/
test_tardis_full_formal_integral.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import os
import pytest
import numpy as np
import numpy.testing as npt
from astropy import units as u
from astropy.tests.helper import assert_quantity_allclose
from tardis.simulation.base import Simulation
from tardis.io.config_reader import Configuration
config_line_modes = ['downbranch', 'macroatom']
@pytest.fixture(scope='module', params=config_line_modes)
def config(request):
config = Configuration.from_yaml(
'tardis/io/tests/data/tardis_configv1_verysimple.yml')
config["plasma"]["line_interaction_type"] = request.param
config["montecarlo"]["no_of_packets"] = 4.0e+4
config["montecarlo"]["last_no_of_packets"] = 1.0e+5
config["montecarlo"]["no_of_virtual_packets"] = 0
config["spectrum"]["method"] = "integrated"
return config
class TestRunnerSimpleFormalInegral():
"""
Very simple run with the formal integral spectral synthesis method
"""
name = 'test_runner_simple_integral'
@pytest.fixture(scope="class")
def runner(
self, config, atomic_data_fname,
tardis_ref_data, generate_reference):
config.atom_data = atomic_data_fname
self.name = (self.name +
"_{:s}".format(config.plasma.line_interaction_type))
simulation = Simulation.from_config(config)
simulation.run()
if not generate_reference:
return simulation.runner
else:
simulation.runner.hdf_properties = [
'j_blue_estimator',
'spectrum',
'spectrum_integrated'
]
simulation.runner.to_hdf(
tardis_ref_data,
'',
self.name)
pytest.skip(
'Reference data was generated during this run.')
@pytest.fixture(scope='class')
def refdata(self, tardis_ref_data):
def get_ref_data(key):
return tardis_ref_data[os.path.join(
self.name, key)]
return get_ref_data
def test_j_blue_estimators(self, runner, refdata):
j_blue_estimator = refdata('j_blue_estimator').values
npt.assert_allclose(
runner.j_blue_estimator,
j_blue_estimator)
def test_spectrum(self, runner, refdata):
luminosity = u.Quantity(refdata('spectrum/luminosity'), 'erg /s')
assert_quantity_allclose(
runner.spectrum.luminosity,
luminosity)
def test_spectrum_integrated(self, runner, refdata):
luminosity = u.Quantity(
refdata('spectrum_integrated/luminosity'), 'erg /s')
assert_quantity_allclose(
runner.spectrum_integrated.luminosity,
luminosity)