Skip to content

Commit

Permalink
Merge pull request #130 from NCAR/main-autopep8
Browse files Browse the repository at this point in the history
Auto-format code by autopep8
  • Loading branch information
boulderdaze authored May 23, 2024
2 parents 971817d + 8c8a3de commit 491d8eb
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 27 deletions.
13 changes: 7 additions & 6 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
author = 'NCAR/UCAR'

suffix = ''
# the suffix is required. This is controlled by the dockerfile that builds the docs
# the suffix is required. This is controlled by the dockerfile that builds
# the docs
release = f'0.0.0'

# -- General configuration ---------------------------------------------------
Expand All @@ -31,9 +32,9 @@
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx_copybutton',
'sphinx_design',
'sphinxcontrib.bibtex',
'sphinx_copybutton',
'sphinx_design',
'sphinxcontrib.bibtex',
]

bibtex_bibfiles = ['references.bib']
Expand All @@ -59,8 +60,8 @@
"external_links": [],
"github_url": "https://github.com/NCAR/musica",
"navbar_end": ["version-switcher", "navbar-icon-links"],
"pygment_light_style": "tango",
"pygment_dark_style": "monokai"
"pygment_light_style": "tango",
"pygment_dark_style": "monokai"
}

html_css_files = [
Expand Down
44 changes: 32 additions & 12 deletions python/test/analytical.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
import numpy as np
import musica


class TestAnalyticalSimulation(unittest.TestCase):
def test_simulation(self):
time_step = 200.0
temperature = 272.5
pressure = 101253.3

solver = musica.create_micm("configs/analytical")
solver = musica.create_micm("configs/analytical")

rates = musica.user_defined_reaction_rates(solver)
ordering = musica.species_ordering(solver)
Expand All @@ -18,14 +19,15 @@ def test_simulation(self):
self.assertEqual(ordering['B'], 1)
self.assertEqual(ordering['C'], 2)

# Initalizes concentrations
# Initalizes concentrations
initial_concentrations = [1, 0, 0]

model_concentrations = [initial_concentrations[:]]
analytical_concentrations = [initial_concentrations[:]]

k1 = 4.0e-3 * np.exp(50 / temperature)
k2 = 1.2e-4 * np.exp(75 / temperature) * (temperature / 50)**7* (1.0 + 0.5 * pressure)
k2 = 1.2e-4 * np.exp(75 / temperature) * \
(temperature / 50)**7 * (1.0 + 0.5 * pressure)

time_step = 1
sim_length = 100
Expand All @@ -38,23 +40,41 @@ def test_simulation(self):

concentrations = initial_concentrations

# Gets analytical concentrations
# Gets analytical concentrations
while curr_time <= sim_length:
musica.micm_solve(solver, time_step, temperature, pressure, concentrations, None)
musica.micm_solve(
solver,
time_step,
temperature,
pressure,
concentrations,
None)
model_concentrations.append(concentrations[:])

initial_A = analytical_concentrations[0][idx_A]
A_conc = initial_A * np.exp(-(k1)* curr_time)
B_conc = initial_A * (k1 / (k2 - k1)) * (np.exp(-k1 * curr_time) - np.exp(-k2 * curr_time))
C_conc = initial_A * (1.0 + (k1 * np.exp(-k2 * curr_time) - k2 * np.exp(-k1 * curr_time)) / (k2 - k1))
A_conc = initial_A * np.exp(-(k1) * curr_time)
B_conc = initial_A * \
(k1 / (k2 - k1)) * (np.exp(-k1 * curr_time) - np.exp(-k2 * curr_time))
C_conc = initial_A * \
(1.0 + (k1 * np.exp(-k2 * curr_time) - k2 * np.exp(-k1 * curr_time)) / (k2 - k1))

analytical_concentrations.append([A_conc, B_conc, C_conc])
curr_time += time_step

for i in range(len(model_concentrations)):
self.assertAlmostEqual(model_concentrations[i][idx_A], analytical_concentrations[i][idx_A], places=8)
self.assertAlmostEqual(model_concentrations[i][idx_B], analytical_concentrations[i][idx_B], places=8)
self.assertAlmostEqual(model_concentrations[i][idx_C], analytical_concentrations[i][idx_C], places=8)
self.assertAlmostEqual(
model_concentrations[i][idx_A],
analytical_concentrations[i][idx_A],
places=8)
self.assertAlmostEqual(
model_concentrations[i][idx_B],
analytical_concentrations[i][idx_B],
places=8)
self.assertAlmostEqual(
model_concentrations[i][idx_C],
analytical_concentrations[i][idx_C],
places=8)


if __name__ == '__main__':
unittest.main()
unittest.main()
30 changes: 21 additions & 9 deletions python/test/chapman.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,50 @@
import unittest
import musica


class TestChapman(unittest.TestCase):
def test_micm_solve(self):
time_step = 200.0
temperature = 272.5
pressure = 101253.3
concentrations = [0.75, 0.4, 0.8, 0.01, 0.02]

solver = musica.create_micm("configs/chapman")
solver = musica.create_micm("configs/chapman")
rate_constant_ordering = musica.user_defined_reaction_rates(solver)
ordering = musica.species_ordering(solver)

rate_constants = {
"PHOTO.R1" : 2.42e-17,
"PHOTO.R3" : 1.15e-5,
"PHOTO.R5" : 6.61e-9
"PHOTO.R1": 2.42e-17,
"PHOTO.R3": 1.15e-5,
"PHOTO.R5": 6.61e-9
}

ordered_rate_constants = len(rate_constants.keys()) * [0.0]

for key, value in rate_constants.items():
ordered_rate_constants[rate_constant_ordering[key]] = value

musica.micm_solve(solver, time_step, temperature, pressure, concentrations, ordered_rate_constants)

self.assertEqual(ordering, {'M': 0, 'O': 2, 'O1D': 1, 'O2': 3, 'O3': 4})
self.assertEqual(rate_constant_ordering, {'PHOTO.R1': 0, 'PHOTO.R3': 1, 'PHOTO.R5': 2})
musica.micm_solve(
solver,
time_step,
temperature,
pressure,
concentrations,
ordered_rate_constants)

self.assertEqual(
ordering, {
'M': 0, 'O': 2, 'O1D': 1, 'O2': 3, 'O3': 4})
self.assertEqual(
rate_constant_ordering, {
'PHOTO.R1': 0, 'PHOTO.R3': 1, 'PHOTO.R5': 2})

self.assertEqual(concentrations[0], 0.75)
self.assertNotEqual(concentrations[1], 0.4)
self.assertNotEqual(concentrations[2], 0.8)
self.assertNotEqual(concentrations[3], 0.01)
self.assertNotEqual(concentrations[4], 0.02)


if __name__ == '__main__':
unittest.main()
unittest.main()

0 comments on commit 491d8eb

Please sign in to comment.