Issues (8)

tests/test_ionization.py (4 issues)

1
# -*- coding: utf-8 -*-
2
import numpy as np
3
import pytest
4
5
import eppaurora as aur
6
7
EDISS_FUNCS_EXPECTED = [
8
	(aur.rr1987, 4.51517584e-07),
9
	(aur.rr1987_mod, 4.75296602e-07),
10
	(aur.fang2008, 4.44256875e-07),
11
	(aur.fang2010_mono, 1.96516057e-007),
12
	(aur.fang2010_maxw_int, 4.41340659e-07),
13
	(aur.fang2013_protons, 4.09444686e-22),
14
	(aur.berger1974, 1.18682805e-12),
15
]
16
17
18 View Code Duplication
@pytest.mark.parametrize(
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
19
	"edissfunc, expected",
20
	EDISS_FUNCS_EXPECTED,
21
)
22
def test_endiss(edissfunc, expected):
23
	energies = np.logspace(-1, 2, 4)
24
	fluxes = np.ones_like(energies)
25
	# ca. 100, 150, 200 km
26
	scale_heights = np.array([6e5, 27e5, 40e5])
27
	rhos = np.array([5e-10, 1.7e-12, 2.6e-13])
28
	# energy dissipation "profiles"
29
	ediss = edissfunc(
30
		energies[None, :], fluxes[None, :],
31
		scale_heights[:, None], rhos[:, None]
32
	)
33
	assert ediss.shape == (3, 4)
34
	np.testing.assert_allclose(ediss[0, 2], expected)
35
	return
36
37
38
@pytest.mark.parametrize(
39
	"edissfunc, expected",
40
	EDISS_FUNCS_EXPECTED,
41
)
42
def test_endiss_scalar(edissfunc, expected):
43
	energies = 10.
44
	fluxes = 1.
45
	# ca. 100, 150, 200 km
46
	scale_heights = np.array([6e5, 27e5, 40e5])
47
	rhos = np.array([5e-10, 1.7e-12, 2.6e-13])
48
	# energy dissipation "profiles"
49
	ediss = edissfunc(
50
		energies, fluxes,
51
		scale_heights[:, None], rhos[:, None]
52
	)
53
	assert ediss.shape == (3, 1)
54
	np.testing.assert_allclose(ediss[0, 0], expected)
55
	return
56
57
58 View Code Duplication
@pytest.mark.parametrize(
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
59
	"edissfunc, expected",
60
	EDISS_FUNCS_EXPECTED,
61
)
62
def test_endiss_transposed(edissfunc, expected):
63
	energies = np.logspace(-1, 2, 4)
64
	fluxes = np.ones_like(energies)
65
	# ca. 100, 150, 200 km
66
	scale_heights = np.array([6e5, 27e5, 40e5])
67
	rhos = np.array([5e-10, 1.7e-12, 2.6e-13])
68
	ediss = edissfunc(
69
		energies[:, None], fluxes[:, None],
70
		scale_heights[None, :], rhos[None, :]
71
	)
72
	assert ediss.shape == (4, 3)
73
	np.testing.assert_allclose(ediss[2, 0], expected)
74
	return
75
76
77 View Code Duplication
@pytest.mark.parametrize(
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
78
	"edissfunc, expected",
79
	EDISS_FUNCS_EXPECTED,
80
)
81
def test_endiss_3d(edissfunc, expected):
82
	energies = np.logspace(-1, 2, 4)
83
	fluxes = np.ones_like(energies)
84
	# ca. 100, 150, 200 km
85
	scale_heights = np.array([6e5, 27e5, 40e5])
86
	rhos = np.array([5e-10, 1.7e-12, 2.6e-13])
87
	ediss = edissfunc(
88
		energies[None, None, :], fluxes[None, None, :],
89
		scale_heights[:, None, None], rhos[:, None, None]
90
	)
91
	assert ediss.shape == (3, 1, 4)
92
	np.testing.assert_allclose(ediss[0, 0, 2], expected)
93
	return
94
95
96 View Code Duplication
@pytest.mark.parametrize(
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
97
	"edissfunc, expected",
98
	EDISS_FUNCS_EXPECTED,
99
)
100
def test_endiss_3d_transposed(edissfunc, expected):
101
	energies = np.logspace(-1, 2, 4)
102
	fluxes = np.ones_like(energies)
103
	# ca. 100, 150, 200 km
104
	scale_heights = np.array([6e5, 27e5, 40e5])
105
	rhos = np.array([5e-10, 1.7e-12, 2.6e-13])
106
	ediss = edissfunc(
107
		energies[None, :, None], fluxes[None, :, None],
108
		scale_heights[:, None, None], rhos[:, None, None]
109
	)
110
	assert ediss.shape == (3, 4, 1)
111
	np.testing.assert_allclose(ediss[0, 2, 0], expected)
112
	return
113
114
115
def test_ssusi_ioniz():
116
	energies = np.logspace(-1, 2, 4)
117
	fluxes = np.ones_like(energies)
118
	z = np.array([100, 120, 150])
119
	# energy dissipation "profiles"
120
	ediss = aur.ssusi_ioniz(
121
		z[:, None],
122
		energies[None, :], fluxes[None, :],
123
	)
124
	assert ediss.shape == (3, 4)
125
	return
126