musica 0.11.1.3__cp310-cp310-win_amd64.whl → 0.12.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of musica might be problematic. Click here for more details.

Files changed (54) hide show
  1. musica/CMakeLists.txt +35 -40
  2. musica/__init__.py +51 -3
  3. musica/_musica.cp310-win_amd64.pyd +0 -0
  4. musica/_version.py +1 -1
  5. musica/binding_common.cpp +16 -0
  6. musica/binding_common.hpp +7 -0
  7. musica/constants.py +3 -0
  8. musica/cpu_binding.cpp +10 -0
  9. musica/cuda.cpp +12 -0
  10. musica/cuda.py +10 -0
  11. musica/gpu_binding.cpp +10 -0
  12. musica/mechanism_configuration/__init__.py +1 -0
  13. musica/mechanism_configuration/aqueous_equilibrium.py +101 -0
  14. musica/mechanism_configuration/arrhenius.py +121 -0
  15. musica/mechanism_configuration/branched.py +116 -0
  16. musica/mechanism_configuration/condensed_phase_arrhenius.py +116 -0
  17. musica/mechanism_configuration/condensed_phase_photolysis.py +91 -0
  18. musica/mechanism_configuration/emission.py +67 -0
  19. musica/mechanism_configuration/first_order_loss.py +67 -0
  20. musica/mechanism_configuration/henrys_law.py +85 -0
  21. musica/mechanism_configuration/mechanism_configuration.py +161 -0
  22. musica/mechanism_configuration/phase.py +43 -0
  23. musica/mechanism_configuration/photolysis.py +83 -0
  24. musica/mechanism_configuration/reactions.py +61 -0
  25. musica/mechanism_configuration/simpol_phase_transfer.py +88 -0
  26. musica/mechanism_configuration/species.py +72 -0
  27. musica/mechanism_configuration/surface.py +89 -0
  28. musica/mechanism_configuration/troe.py +137 -0
  29. musica/mechanism_configuration/tunneling.py +103 -0
  30. musica/mechanism_configuration/user_defined.py +83 -0
  31. musica/mechanism_configuration/utils.py +10 -0
  32. musica/mechanism_configuration/wet_deposition.py +49 -0
  33. musica/mechanism_configuration.cpp +0 -1
  34. musica/musica.cpp +1 -1
  35. musica/test/examples/v1/{full_configuration.json → full_configuration/full_configuration.json} +30 -15
  36. musica/test/examples/v1/{full_configuration.yaml → full_configuration/full_configuration.yaml} +16 -1
  37. musica/test/test_analytical.py +14 -12
  38. musica/test/test_chapman.py +18 -2
  39. musica/test/test_parser.py +4 -640
  40. musica/test/test_serializer.py +69 -0
  41. musica/test/test_util_full_mechanism.py +668 -0
  42. musica/tools/prepare_build_environment_linux.sh +8 -6
  43. musica/tools/repair_wheel_gpu.sh +25 -16
  44. musica/types.py +4 -6
  45. {musica-0.11.1.3.dist-info → musica-0.12.0.dist-info}/METADATA +179 -43
  46. musica-0.12.0.dist-info/RECORD +57 -0
  47. {musica-0.11.1.3.dist-info → musica-0.12.0.dist-info}/WHEEL +1 -1
  48. musica-0.12.0.dist-info/licenses/AUTHORS.md +59 -0
  49. musica/binding.cpp +0 -19
  50. musica/lib/musica.lib +0 -0
  51. musica/lib/yaml-cpp.lib +0 -0
  52. musica/mechanism_configuration.py +0 -1291
  53. musica-0.11.1.3.dist-info/RECORD +0 -30
  54. {musica-0.11.1.3.dist-info → musica-0.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -7,22 +7,31 @@ for whl in "$2"/*.whl; do
7
7
  tmpdir=$(mktemp -d)
8
8
  unzip -q "$whl" -d "$tmpdir"
9
9
  tree "$tmpdir"
10
- so_path="$tmpdir"/musica/_musica*.so
11
- echo "Before patchelf:"
12
- readelf -d $so_path
13
- # Use patchelf to fix the rpath and library dependencies
14
- patchelf --remove-rpath $so_path
15
- patchelf --set-rpath "\$ORIGIN:\$ORIGIN/../nvidia/cublas/lib:\$ORIGIN/../nvidia/cuda_runtime/lib" --force-rpath $so_path
16
- # these may need to be periodically updated
17
- patchelf --replace-needed libcudart-b5a066d7.so.12.2.140 libcudart.so.12 $so_path
18
- patchelf --replace-needed libcublas-e779a79d.so.12.2.5.6 libcublas.so.12 $so_path
19
- patchelf --replace-needed libcublasLt-fbfbc8a1.so.12.2.5.6 libcublasLt.so.12 $so_path
20
- # Remove bundled CUDA libraries
21
- rm -f "$tmpdir"/musica.libs/libcudart-*.so*
22
- rm -f "$tmpdir"/musica.libs/libcublas-*.so*
23
- rm -f "$tmpdir"/musica.libs/libcublasLt-*.so*
24
- echo "After patchelf:"
25
- readelf -d $so_path
10
+
11
+ so_files=("$tmpdir"/musica/_musica_gpu*.so)
12
+
13
+ if [[ -f "${so_files[0]}" ]]; then
14
+ so_path="${so_files[0]}"
15
+ ls $so_path
16
+ echo "Before patchelf:"
17
+ readelf -d $so_path
18
+ # Use patchelf to fix the rpath and library dependencies
19
+ patchelf --remove-rpath $so_path
20
+ patchelf --set-rpath "\$ORIGIN:\$ORIGIN/../nvidia/cublas/lib:\$ORIGIN/../nvidia/cuda_runtime/lib" --force-rpath $so_path
21
+ # these may need to be periodically updated
22
+ patchelf --replace-needed libcudart-b5a066d7.so.12.2.140 libcudart.so.12 $so_path
23
+ patchelf --replace-needed libcublas-e779a79d.so.12.2.5.6 libcublas.so.12 $so_path
24
+ patchelf --replace-needed libcublasLt-fbfbc8a1.so.12.2.5.6 libcublasLt.so.12 $so_path
25
+ # Remove bundled CUDA libraries
26
+ rm -f "$tmpdir"/musica.libs/libcudart-*.so*
27
+ rm -f "$tmpdir"/musica.libs/libcublas-*.so*
28
+ rm -f "$tmpdir"/musica.libs/libcublasLt-*.so*
29
+ echo "After patchelf:"
30
+ readelf -d $so_path
31
+ else
32
+ echo "No GPU .so file found, skipping patchelf steps"
33
+ fi
34
+
26
35
  # Repack the wheel with correct structure
27
36
  (cd "$tmpdir" && zip -qr "${whl%.whl}.patched.whl" .)
28
37
  rm -rf "$tmpdir"
musica/types.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from typing import Optional, Dict, List, Union, Tuple
7
7
  from os import PathLike
8
8
  import math
9
- from musica._musica._core import (
9
+ from musica import (
10
10
  _Conditions,
11
11
  _SolverType,
12
12
  _Solver,
@@ -20,10 +20,7 @@ from musica._musica._core import (
20
20
  _user_defined_rate_parameters_ordering,
21
21
  )
22
22
  import musica.mechanism_configuration as mc
23
-
24
- AVOGADRO = 6.02214076e23 # mol^-1
25
- BOLTZMANN = 1.380649e-23 # J K^-1
26
- GAS_CONSTANT = AVOGADRO * BOLTZMANN # J K^-1 mol^-1
23
+ from musica.constants import GAS_CONSTANT
27
24
 
28
25
  FilePath = Union[str, "PathLike[str]"]
29
26
 
@@ -172,6 +169,7 @@ class State():
172
169
  state.user_defined_rate_parameters[i_param * param_stride + i_cell * cell_stride] = value[k]
173
170
  k += 1
174
171
 
172
+
175
173
  def set_conditions(self,
176
174
  temperatures: Union[Union[float, int], List[Union[float, int]]],
177
175
  pressures: Union[Union[float, int], List[Union[float, int]]],
@@ -358,5 +356,5 @@ class MICM():
358
356
  if not isinstance(time_step, (int, float)):
359
357
  raise TypeError("time_step must be an int or float.")
360
358
  states = state.get_internal_states()
361
- for _, _state in enumerate(states):
359
+ for _state in states:
362
360
  _micm_solve(self.__solver, _state, time_step)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: musica
3
- Version: 0.11.1.3
3
+ Version: 0.12.0
4
4
  Summary: MUSICA is a Python library for performing computational simulations in atmospheric chemistry.
5
5
  Author-Email: Matthew Dawsom <mattdawson@ucar.edu>, Jiwon Gim <jiwongim@ucar.edu>, David Fillmore <fillmore@ucar.edu>, Kyle Shores <kshores@ucar.edu>, Montek Thind <mthind@ucar.edu>
6
6
  Maintainer-Email: ACOM MUSICA Developers <musica-support@ucar.edu>
@@ -207,6 +207,7 @@ License: Apache License
207
207
  limitations under the License.
208
208
 
209
209
  Project-URL: homepage, https://wiki.ucar.edu/display/MUSICA/MUSICA+Home
210
+ Requires-Dist: pyyaml>=6.0.2
210
211
  Provides-Extra: test
211
212
  Requires-Dist: numpy; extra == "test"
212
213
  Requires-Dist: pytest; extra == "test"
@@ -233,24 +234,132 @@ Multi-Scale Infrastructure for Chemistry and Aerosols
233
234
  MUSICA is a collection of modeling software, tools, and grids, that
234
235
  allow for robust modeling of chemistry in Earth's atmosphere.
235
236
 
236
- At present the project encompasses these components
237
+ At present the project encompasses these core components
237
238
  - [TUV-x](https://github.com/NCAR/tuv-x)
238
239
  - A photolysis rate calculator
239
240
 
240
241
  - [MICM](https://github.com/NCAR/micm)
241
242
  - Model Independent Chemical Module
242
243
 
243
- ## Available grids
244
+ - [Mechanism Configuration](https://github.com/NCAR/MechanismConfiguration)
245
+ - The standardized format to describe atmospheric chemistry
244
246
 
245
- Pre-made grids for use in MUSICA are available [here](https://wiki.ucar.edu/display/MUSICA/Available+Grids).
247
+ These components are used to drive the MUSICA software ecosystem. This is a snapshot of how MUSICA can be used with different
248
+ models.
249
+
250
+ ![MUSICA Ecosystem](docs/source/_static/ecosystem.png)
251
+
252
+ # Installation
253
+ MUSICA is installable via pip for Python or CMake for C++.
254
+
255
+ ## Pip
256
+ ```
257
+ pip install musica
258
+ ```
259
+
260
+ ## CMake
261
+ ```
262
+ $ git clone https://github.com/NCAR/musica.git
263
+ $ cd musica
264
+ $ mkdir build
265
+ $ cd build
266
+ $ ccmake ..
267
+ $ make
268
+ $ make install
269
+ ```
270
+
271
+ # Using the MUSICA Python API
272
+ MUSICA makes its chemical mechanism analysis and visualization available through a Python API. The following example works through solving a simple chemistry system. Please refer to the [official documentation](https://ncar.github.io/musica/index.html) for further tutorials and examples.
273
+ ```
274
+ # --- Import Musica ---
275
+ import musica
276
+ import musica.mechanism_configuration as mc
277
+
278
+ # --- 1. Define the chemical system of interest ---
279
+ A = mc.Species(name="A")
280
+ B = mc.Species(name="B")
281
+ C = mc.Species(name="C")
282
+ species = [A, B, C]
283
+ gas = mc.Phase(name="gas", species=species)
284
+
285
+ # --- 2. Define a mechanism of interest ---
286
+ # Through Musica, several different mechanisms can be explored to define reaction rates. Here, we use the Arrhenius equation as a simple example.
287
+
288
+ r1 = mc.Arrhenius(name="A->B", A=4.0e-3, C=50, reactants=[A], products=[B], gas_phase=gas)
289
+ r2 = mc.Arrhenius(name="B->C", A=1.2e-4, B=2.5, C=75, D=50, E=0.5, reactants=[B], products=[C], gas_phase=gas)
290
+
291
+ mechanism = mc.Mechanism(name="musica_example", species=species, phases=[gas], reactions=[r1, r2])
292
+
293
+ # --- 3. Create MICM solver ---
294
+ # A solver must be initialized with either a configuration file or a mechanism:
295
+
296
+ solver = musica.MICM(mechanism=mechanism, solver_type=musica.SolverType.rosenbrock_standard_order)
297
+
298
+ # --- 4. Define environmental conditions ---
299
+ temperature=300.0
300
+ pressure=101000.0
301
+
302
+ # --- 5. Create and initialize State ---
303
+ # In the model, conditions represent the starting environment for the reactions and are assigned by modifying the state.
304
+
305
+ state = solver.create_state()
306
+ state.set_concentrations({"A": 1.0, "B": 3.0, "C": 5.0})
307
+ state.set_conditions(temperature, pressure)
308
+ initial_pressure = state.get_conditions()['air_density'][0] # store for visualization and output
309
+
310
+ # --- 6. Time parameters ---
311
+ time_step = 4 # stepping
312
+ sim_length = 20 # total simulation time
313
+
314
+ # --- (Optional) 7. Save initial state (t=0) for output visualization ---
315
+ initial_row = {"time.s": 0.0, "ENV.temperature.K": temperature, "ENV.pressure.Pa": pressure, "ENV.air number density.mol m-3": state.get_conditions()['air_density'][0]}
316
+ initial_row.update({f"CONC.{k}.mol m-3": v[0] for k, v in state.get_concentrations().items()})
317
+
318
+ # --- 8. Solve through time loop only ---
319
+ # The following loop simply solves the model per each time step:
320
+
321
+ curr_time = time_step
322
+ while curr_time <= sim_length:
323
+ solver.solve(state, time_step)
324
+ concentrations = state.get_concentrations()
325
+ curr_time += time_step
246
326
 
247
- # Contributors guide
248
- Checkout our [software development plan](docs/Software%20Development%20Plan.pdf)
249
- to see how you can contribute new science to MUSICA software.
327
+ # --- 9. Solve and create DataFrame ---
328
+ # It is likely more useful to solve at each time step and store the associated data:
329
+ import pandas as pd
330
+
331
+ output_data = [] # prepare to store output per time step
332
+ output_data.append(initial_row) # save t=0 data
333
+
334
+ curr_time = time_step
335
+ while curr_time <= sim_length:
336
+ solver.solve(state, time_step)
337
+ row = {
338
+ "time.s": curr_time,
339
+ "ENV.temperature.K": state.get_conditions()['temperature'][0],
340
+ "ENV.pressure.Pa": state.get_conditions()['pressure'][0],
341
+ "ENV.air number density.mol m-3": state.get_conditions()['air_density'][0]
342
+ }
343
+ row.update({f"CONC.{k}.mol m-3": v[0] for k, v in state.get_concentrations().items()})
344
+ output_data.append(row)
345
+ curr_time += time_step
346
+
347
+ df = pd.DataFrame(output_data)
348
+ print(df)
349
+
350
+ # --- 10. Visualize Specific Results ---
351
+ import matplotlib.pyplot as plt
352
+
353
+ df.plot(x='time.s', y=['CONC.A.mol m-3', 'CONC.B.mol m-3', 'CONC.C.mol m-3'], title='Concentration over time', ylabel='Concentration (mol m-3)', xlabel='Time (s)')
354
+ plt.show()
355
+ ```
356
+
357
+ # Available grids
358
+ Pre-made grids for use in MUSICA are available [here](https://wiki.ucar.edu/display/MUSICA/Available+Grids).
250
359
 
251
360
  ## Developer Options
252
361
 
253
- ### Specifying dependency versions via paramaterization at configure time
362
+ ### Specifying dependency versions via parameterization at configure time
254
363
 
255
364
  Introduced in [Pull Request #124](https://github.com/NCAR/musica/pull/124), it is possible for developers to specify which versions of various dependencies should be used. These options are currently limited to those dependencies managed via `FetchContent`. This change allows for more easily testing `musica` against changes committed in different repositories and branches. The environmental variables introduced are outlined in the following table.
256
365
 
@@ -262,6 +371,7 @@ Introduced in [Pull Request #124](https://github.com/NCAR/musica/pull/124), it i
262
371
  | [MICM](https://github.com/NCAR/mcim.git) | MICM_GIT_REPOSITORY | MICM_GIT_TAG |
263
372
  | [TUV-X](https://github.com/NCAR/tuv-x.git) | TUVX_GIT_REPOSITORY | TUVX_GIT_TAG |
264
373
  | [PyBind11](https://github.com/pybind/pybind11) | PYBIND11_GIT_REPOSITORY | PYBIND11_GIT_TAG |
374
+ | [Mechanism Configuration](https://github.com/NCAR/MechanismConfiguration.git) | MECH_CONFIG_GIT_REPOSITORY | MECH_CONFIG_GIT_TAG |
265
375
 
266
376
  #### Example Usage
267
377
 
@@ -282,54 +392,80 @@ Specifying a specific version of `tuv-x` by has, but using the official reposito
282
392
  ### Python build
283
393
  Musica has python bindings. If you want to install the python package, you may `pip install musica`.
284
394
 
285
- To build the package locally,
395
+ #### PyPi
396
+ If you only want to use the CPU components,
286
397
 
287
398
  ```
288
- pip install -e .
399
+ pip install musica
289
400
  ```
290
401
 
291
- If you have an NVIDIA GPU and cuda installed, you can enable a build of musica with GPU support by setting the environment
292
- variable `BUILD_GPU`.
402
+ Note that GPU support has only been tested on linux. If you have an NVIDIA GPU and would like to take
403
+ advantage of our GPU solver, you must first [add the NVIDIA pypi index](https://docs.nvidia.com/cuda/cuda-quick-start-guide/#pip-wheels-linux) and then install musica with our gpu option.
293
404
 
294
405
  ```
295
- BUILD_GPU=1 pip install -e .
406
+ pip install --upgrade setuptools pip wheel
407
+ pip install nvidia-pyindex
408
+ pip install musica[gpu]
296
409
  ```
297
410
 
298
- ## Citing MUSICA
411
+ #### Local build
299
412
 
300
- MUSICA can be cited in at least two ways. The first is to cite [the paper](https://doi.org/10.1175/BAMS-D-19-0331.1) that defines the vision
301
- of the MUSICA software. The bibtex entry below can be used to generate a citaiton for this.
413
+ Musica has python bindings. To build the package locally,
302
414
 
303
415
  ```
304
- @Article { acom.software.musica-vision,
305
- author = "Gabriele G. Pfister and Sebastian D. Eastham and Avelino F. Arellano and Bernard Aumont and Kelley C. Barsanti and Mary C. Barth and Andrew Conley and Nicholas A. Davis and Louisa K. Emmons and Jerome D. Fast and Arlene M. Fiore and Benjamin Gaubert and Steve Goldhaber and Claire Granier and Georg A. Grell and Marc Guevara and Daven K. Henze and Alma Hodzic and Xiaohong Liu and Daniel R. Marsh and John J. Orlando and John M. C. Plane and Lorenzo M. Polvani and Karen H. Rosenlof and Allison L. Steiner and Daniel J. Jacob and Guy P. Brasseur",
306
- title = "The Multi-Scale Infrastructure for Chemistry and Aerosols (MUSICA)",
307
- journal = "Bulletin of the American Meteorological Society",
308
- year = "2020",
309
- publisher = "American Meteorological Society",
310
- address = "Boston MA, USA",
311
- volume = "101",
312
- number = "10",
313
- doi = "10.1175/BAMS-D-19-0331.1",
314
- pages= "E1743 - E1760",
315
- url = "https://journals.ametsoc.org/view/journals/bams/101/10/bamsD190331.xml"
316
- }
416
+ pip install -e .
317
417
  ```
318
418
 
319
- At present MUSICA is on version zero. MUSICAv0 can be cited using the bibtex entry below.
320
- MUSICAv0 description and evaluation:
419
+ If you have an NVIDIA GPU and cuda installed, you can enable a build of musica with GPU support by setting the environment
420
+ variable `BUILD_GPU`.
321
421
 
322
422
  ```
323
- @Article{acom.software.musica,
324
- author = {Schwantes, Rebecca H. and Lacey, Forrest G. and Tilmes, Simone and Emmons, Louisa K. and Lauritzen, Peter H. and Walters, Stacy and Callaghan, Patrick and Zarzycki, Colin M. and Barth, Mary C. and Jo, Duseong S. and Bacmeister, Julio T. and Neale, Richard B. and Vitt, Francis and Kluzek, Erik and Roozitalab, Behrooz and Hall, Samuel R. and Ullmann, Kirk and Warneke, Carsten and Peischl, Jeff and Pollack, Ilana B. and Flocke, Frank and Wolfe, Glenn M. and Hanisco, Thomas F. and Keutsch, Frank N. and Kaiser, Jennifer and Bui, Thao Paul V. and Jimenez, Jose L. and Campuzano-Jost, Pedro and Apel, Eric C. and Hornbrook, Rebecca S. and Hills, Alan J. and Yuan, Bin and Wisthaler, Armin},
325
- title = {Evaluating the Impact of Chemical Complexity and Horizontal Resolution on Tropospheric Ozone Over the Conterminous US With a Global Variable Resolution Chemistry Model},
326
- journal = {Journal of Advances in Modeling Earth Systems},
327
- volume = {14},
328
- number = {6},
329
- pages = {e2021MS002889},
330
- doi = {https://doi.org/10.1029/2021MS002889},
331
- url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2021MS002889},
332
- eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2021MS002889},
333
- year = {2022}
334
- }
423
+ BUILD_GPU=1 pip install -e .
335
424
  ```
425
+
426
+ # Contributing
427
+
428
+ We welcome contributions from the community! Please see our [Contributing Guide](CONTRIBUTING.md) for information on how to get involved.
429
+
430
+ For a complete list of contributors and authors, see [AUTHORS.md](AUTHORS.md).
431
+
432
+ # Citations
433
+
434
+ MUSICA can be cited in at least two ways:
435
+
436
+ 1. **Cite the foundational paper** that defines the vision of the MUSICA software:
437
+ - [Pfister et al., 2020, Bulletin of the American Meteorological Society](https://doi.org/10.1175/BAMS-D-19-0331.1)
438
+ - Use the following BibTeX entry:
439
+ ```
440
+ @Article { acom.software.musica-vision,
441
+ author = "Gabriele G. Pfister and Sebastian D. Eastham and Avelino F. Arellano and Bernard Aumont and Kelley C. Barsanti and Mary C. Barth and Andrew Conley and Nicholas A. Davis and Louisa K. Emmons and Jerome D. Fast and Arlene M. Fiore and Benjamin Gaubert and Steve Goldhaber and Claire Granier and Georg A. Grell and Marc Guevara and Daven K. Henze and Alma Hodzic and Xiaohong Liu and Daniel R. Marsh and John J. Orlando and John M. C. Plane and Lorenzo M. Polvani and Karen H. Rosenlof and Allison L. Steiner and Daniel J. Jacob and Guy P. Brasseur",
442
+ title = "The Multi-Scale Infrastructure for Chemistry and Aerosols (MUSICA)",
443
+ journal = "Bulletin of the American Meteorological Society",
444
+ year = "2020",
445
+ publisher = "American Meteorological Society",
446
+ address = "Boston MA, USA",
447
+ volume = "101",
448
+ number = "10",
449
+ doi = "10.1175/BAMS-D-19-0331.1",
450
+ pages= "E1743 - E1760",
451
+ url = "https://journals.ametsoc.org/view/journals/bams/101/10/bamsD190331.xml"
452
+ }
453
+ ```
454
+
455
+ 2. **Cite the MUSICA software and its evaluation** (MUSICAv0):
456
+ - [Schwantes et al., 2022, Journal of Advances in Modeling Earth Systems](https://doi.org/10.1029/2021MS002889)
457
+ - Use the following BibTeX entry:
458
+ ```
459
+ @Article{acom.software.musica,
460
+ author = {Schwantes, Rebecca H. and Lacey, Forrest G. and Tilmes, Simone and Emmons, Louisa K. and Lauritzen, Peter H. and Walters, Stacy and Callaghan, Patrick and Zarzycki, Colin M. and Barth, Mary C. and Jo, Duseong S. and Bacmeister, Julio T. and Neale, Richard B. and Vitt, Francis and Kluzek, Erik and Roozitalab, Behrooz and Hall, Samuel R. and Ullmann, Kirk and Warneke, Carsten and Peischl, Jeff and Pollack, Ilana B. and Flocke, Frank and Wolfe, Glenn M. and Hanisco, Thomas F. and Keutsch, Frank N. and Kaiser, Jennifer and Bui, Thao Paul V. and Jimenez, Jose L. and Campuzano-Jost, Pedro and Apel, Eric C. and Hornbrook, Rebecca S. and Hills, Alan J. and Yuan, Bin and Wisthaler, Armin},
461
+ title = {Evaluating the Impact of Chemical Complexity and Horizontal Resolution on Tropospheric Ozone Over the Conterminous US With a Global Variable Resolution Chemistry Model},
462
+ journal = {Journal of Advances in Modeling Earth Systems},
463
+ volume = {14},
464
+ number = {6},
465
+ pages = {e2021MS002889},
466
+ doi = {https://doi.org/10.1029/2021MS002889},
467
+ url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2021MS002889},
468
+ eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2021MS002889},
469
+ year = {2022}
470
+ }
471
+ ```
@@ -0,0 +1,57 @@
1
+ musica/__init__.py,sha256=-TtiqPge1QqHDQHJLZb1S13378oCvioqxveGFsTG1K4,1799
2
+ musica/_musica.cp310-win_amd64.pyd,sha256=rDdpqOsRdGVBMF-aJu61lPL6PMfVrc0Scamn5QOxJPE,1371648
3
+ musica/_version.py,sha256=9e9mHDi2fUgxlhglOE73A-PATsMwCeXLJ4vRvu3ZC2A,20
4
+ musica/binding_common.cpp,sha256=A1Y5LxGjWXi09Eczv06H5iJC-9i0R9eya2ehz2jnD9U,575
5
+ musica/binding_common.hpp,sha256=YAcb9WnfXL7Ps-rR-iMBSwUgBQZfZZdCQQod5CTMEZA,108
6
+ musica/CMakeLists.txt,sha256=qRSE9QuzRR1go16-ujVBHpkdHf-5dCuPZLbCrP7ygHc,1092
7
+ musica/constants.py,sha256=o0PjiiTyGMdCPWmBewiQKaX-JBOR6vkz1n0pAacuZNU,124
8
+ musica/cpu_binding.cpp,sha256=J-9SfvuXeWYvOAwX5luG6f5DieV0pchkutRAJ3xoN2Y,234
9
+ musica/cuda.cpp,sha256=oTG2ZnL-SiW2kx9eL4XJOQGJeIiGuy8tJ5BEoLRWL4M,358
10
+ musica/cuda.py,sha256=6Qe6cBbPN9K5Uqu7wBt18zTUjRIgvnQKBJZr6tHJrs8,234
11
+ musica/gpu_binding.cpp,sha256=sv1_exUAhGRXY0kzT_q-f0Yl_GYgkYRKwmqWGSi0Qx8,238
12
+ musica/mechanism_configuration/__init__.py,sha256=WVIbDCgpAd-jH9TBPou-5tyrdxb5Vbm9Zl2h7xmNiQ8,38
13
+ musica/mechanism_configuration/aqueous_equilibrium.py,sha256=O0QuSk-kwc4DKslOeiqgR0E2YrrJhl_BKI-CwNRQzlM,4861
14
+ musica/mechanism_configuration/arrhenius.py,sha256=oEVg7_5XXpiiSeVEOW3_567gHVekvr8kADOBTSqFokM,5268
15
+ musica/mechanism_configuration/branched.py,sha256=MjWJl86BbhJj7M85QRqhiFIyGwzI9u8R2z_oeOIvYLg,5331
16
+ musica/mechanism_configuration/condensed_phase_arrhenius.py,sha256=rUluAt0z_Q79apJKnpC20Ng9Jk1wk5YPn8tvtzXv0wo,5477
17
+ musica/mechanism_configuration/condensed_phase_photolysis.py,sha256=KTebLSs6Hakd4p4oqkGftHgC9QBIExIrMBS7qi0zk-Y,4483
18
+ musica/mechanism_configuration/emission.py,sha256=ak45GY1NswB3P4BwDxRwIky73krz2vxds9t_rP8PxMI,3013
19
+ musica/mechanism_configuration/first_order_loss.py,sha256=Ign87rhDSOiIWV0fSKhHBP1dNvjwBVoXkZ8_H17pE8g,3115
20
+ musica/mechanism_configuration/henrys_law.py,sha256=tbyKP0p_wI7KzmQHaBnjIbdeObu9LzG9fwMDxJBgWZA,4266
21
+ musica/mechanism_configuration/mechanism_configuration.py,sha256=pfDOUxZyyYNYrBzl-Lg_CoWtvQ4Dst5NMubalFVpkdY,7028
22
+ musica/mechanism_configuration/phase.py,sha256=fN8sicZTRVAcFE4djXaj5Pu_pnb-cjA-BymSx38R16Y,1582
23
+ musica/mechanism_configuration/photolysis.py,sha256=nh_0VXWeIqaBugox-anTbbVpqKikKrLQZzhLmaJJk_A,3827
24
+ musica/mechanism_configuration/reactions.py,sha256=jLGo1ZfD_k3EVRBjIvn6LNGZ-oELLittgAB1tdDB0po,1735
25
+ musica/mechanism_configuration/simpol_phase_transfer.py,sha256=AkKgMyCnLmF3n4ueLi470me8jj2Khd0bOuqj7bbJG68,4335
26
+ musica/mechanism_configuration/species.py,sha256=-Rzfyg5Kg5DzLVoAF5exxAuygilvp2HILu-1iZJFXXM,3995
27
+ musica/mechanism_configuration/surface.py,sha256=nYMdIPtgo3XwPG4zht-BNEY7MOf5rWQ15GMpH0HUo0E,4274
28
+ musica/mechanism_configuration/troe.py,sha256=mtVAJcjF9jX3_3q8Z8rG47DvOIrEMB2e6BtSDImOJQA,6713
29
+ musica/mechanism_configuration/tunneling.py,sha256=KVJD7Ej7PecdP0Q4orm8PzMQtgFyHJhSQnFh17qjmgo,4408
30
+ musica/mechanism_configuration/user_defined.py,sha256=7p7xGbAous_3Ef2qfNnc8d63g0G86GpPOGl-GmGRvrs,3835
31
+ musica/mechanism_configuration/utils.py,sha256=dhMFrydNchhdRrfeJw35oJB8Y5oQJa6p65Z7I127P-8,356
32
+ musica/mechanism_configuration/wet_deposition.py,sha256=_9xKNyHFZpfKPBbpi0L_Hi2dilBZIPAMw1rXY2VmUcs,2232
33
+ musica/mechanism_configuration.cpp,sha256=OI1Ua3xypbSe7dPfL50J9qCyHY1b809bRv1DdXu31Iw,27552
34
+ musica/musica.cpp,sha256=w6kI-mrUqNbJPeYuuPzzsDrb7GsHy2bKNoOt0b8tJTY,8614
35
+ musica/test/examples/v0/config.json,sha256=JDQdrDNRmRXGYlytX1uiSDV1lkYIAneLwlodHKFw-os,85
36
+ musica/test/examples/v0/config.yaml,sha256=r31QbiFE2YDudGxLGpTKnpyveTnlfXeLgJ2qSrQddDY,47
37
+ musica/test/examples/v0/reactions.json,sha256=SmRUE5XOAv0h3HOWg4Fb1swBiZvZ-1hsIrmMCJqEVIk,4380
38
+ musica/test/examples/v0/reactions.yaml,sha256=5QeEkhjeAL_rXxNYCLOuqDUudTmgwLW3NERDupKpj6s,2408
39
+ musica/test/examples/v0/species.json,sha256=klFuYb2vAtWdHfHJVYuIuPe_6LHRTuB0Aw29YhwfCFc,604
40
+ musica/test/examples/v0/species.yaml,sha256=ECT9DDa2GMwhSRaRLxjOiCATTKkTRTPwugRsUjHSytY,302
41
+ musica/test/examples/v1/full_configuration/full_configuration.json,sha256=QgCno36VZANP1FcH25ogeYuBtnesdFcc7Mj6CztK4Ds,9660
42
+ musica/test/examples/v1/full_configuration/full_configuration.yaml,sha256=I-eMC2jSCRQ8AvV2WQeF2y96A6ouNDLrvPjvRZV-AXc,5820
43
+ musica/test/test_analytical.py,sha256=domkY4O00RplSdnFvssqUGtPyoXQiV0cfRaLH3gsQ2c,14131
44
+ musica/test/test_chapman.py,sha256=t6p0CadUy-B4OP7A-EZ9Wz52diuYs5yc9LKiFUS9T6A,3651
45
+ musica/test/test_parser.py,sha256=1lL2DZ7ZT1IBGKG3aAc1P_z5GW3u8oBgP6vn3tGr150,2316
46
+ musica/test/test_serializer.py,sha256=mVOXgUFiN5OmCK-8ramsd4hLAYjgvunqBElRbs6nzyM,2535
47
+ musica/test/test_util_full_mechanism.py,sha256=pDWZhJWdP1Q8iCab9AV7GMNIlNdMdgNuAJRqqRccDuw,24730
48
+ musica/test/tuvx.py,sha256=L8X7rJ09HiRlrhLK6fjircI8tGHnFCZJzVow8He5YOE,126
49
+ musica/tools/prepare_build_environment_linux.sh,sha256=kdcBj9qELh811OzY8o5tQDAnLXJFXqzwIkZmkRAcLFY,1500
50
+ musica/tools/prepare_build_environment_windows.sh,sha256=sBBWhJQaS2zWDVFLIDMNBMOMPw8auXwnwz7nhuB5Q_k,847
51
+ musica/tools/repair_wheel_gpu.sh,sha256=nQueyGNC2qWcBAicjVdAfB6JH4m_51dFOG83vVxke54,1525
52
+ musica/types.py,sha256=aBDIOOF9I3u7_drTJebln0O88z0z9dfRNGWhAhP8_7o,15148
53
+ musica-0.12.0.dist-info/METADATA,sha256=ecoVy_lRUnvTA_JTGQRg8SB3EtlnFMr2Lq_8Ke8X1gs,25995
54
+ musica-0.12.0.dist-info/WHEEL,sha256=Bg3xfVZCdvCQkqUyMs2y8LOfK6ua4a-d4Njc-PtQZvk,106
55
+ musica-0.12.0.dist-info/licenses/AUTHORS.md,sha256=1ssAXR4WOMdfl5Or1raPu_2nxHbkwCpxfwJwzpF_cJM,2691
56
+ musica-0.12.0.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
57
+ musica-0.12.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: scikit-build-core 0.11.3
2
+ Generator: scikit-build-core 0.11.4
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-win_amd64
5
5
 
@@ -0,0 +1,59 @@
1
+ # MUSICA Authors and Contributors
2
+
3
+ This file acknowledges all individuals who have contributed to the MUSICA project.
4
+
5
+ ## Core Development Team
6
+
7
+ The following individuals are the primary developers and maintainers of the MUSICA software:
8
+
9
+ - **Matthew Dawson** (mattdawson@ucar.edu) - Core Developer
10
+ - **Jiwon Gim** (jiwongim@ucar.edu) - Core Developer
11
+ - **David Fillmore** (fillmore@ucar.edu) - Core Developer
12
+ - **Kyle Shores** (kshores@ucar.edu) - Core Developer
13
+ - **Montek Thind** (mthind@ucar.edu) - Core Developer
14
+ - **Jian Sun** - Core Developer
15
+
16
+ ## Scientific Leadership and Vision
17
+
18
+ The scientific leadership and vision for MUSICA are provided by the authors of the [foundational paper](https://doi.org/10.1175/BAMS-D-19-0331.1).
19
+ This software implements that vision. For a full list of scientific authors,
20
+ please refer to our [CITATION.cff](CITATION.cff) file. To cite the software, use the Zenodo DOI from our latest release.
21
+
22
+ ## Additional Contributors
23
+
24
+ <!-- Contributors will be added here as they join the project -->
25
+ <!-- Format: -->
26
+ <!-- - **Name** (affiliation) - Brief description of contribution -->
27
+
28
+ - **Aidan Winney** - Documentation and Tutorials
29
+ - **Angela Pak** - Documentation and Tutorials
30
+ - **Dee Grant** - Improving the Python API
31
+ - **Qina Tan** - Implementing the CUDA-based Rosenbrock solver
32
+
33
+ ## Recognition Policy
34
+
35
+ We recognize contributors at different levels based on their involvement:
36
+
37
+ - **Core Development Team**: Listed in `pyproject.toml`, `.zenodo.json` (creators), and this file
38
+ - **Additional Contributors**: Listed in `.zenodo.json` (contributors) and this file
39
+ - **All Contributors**: Automatically tracked by GitHub's contributor statistics
40
+
41
+ See our [Contributing Guide](CONTRIBUTING.md) for more details on how contributions are recognized.
42
+
43
+ ## How to Contribute
44
+
45
+ We welcome contributions from the community! Please see our [Contributing Guide](CONTRIBUTING.md) for information on how to get involved.
46
+
47
+ ## Acknowledgments
48
+
49
+ We thank the broader atmospheric chemistry modeling community for their feedback, testing, and contributions to making MUSICA a robust and useful tool for scientific research.
50
+
51
+ ---
52
+
53
+ ## Citation Information
54
+
55
+ For citation purposes, please refer to our [CITATION.cff](CITATION.cff) file for the appropriate citations based on your use case. The main citations are:
56
+
57
+ 1. **For the MUSICA vision and scientific framework**: [Pfister et al., 2020](https://doi.org/10.1175/BAMS-D-19-0331.1)
58
+ 2. **For the MUSICA software evaluation**: [Schwantes et al., 2022](https://doi.org/10.1029/2021MS002889)
59
+ 3. **For the software itself**: Use the Zenodo DOI from our latest release
musica/binding.cpp DELETED
@@ -1,19 +0,0 @@
1
- // Copyright (C) 2023-2025 University Corporation for Atmospheric Research
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- #include <pybind11/pybind11.h>
5
-
6
- namespace py = pybind11;
7
-
8
- void bind_musica(py::module_ &);
9
- void bind_mechanism_configuration(py::module_ &);
10
-
11
- // Wraps micm.cpp
12
- PYBIND11_MODULE(_musica, m)
13
- {
14
- py::module_ core = m.def_submodule("_core", "Wrapper classes for MUSICA C library structs and functions");
15
- py::module_ mechanism_configuration = m.def_submodule("_mechanism_configuration", "Wrapper classes for Mechanism Configuration library structs and functions");
16
-
17
- bind_musica(core);
18
- bind_mechanism_configuration(mechanism_configuration);
19
- }
musica/lib/musica.lib DELETED
Binary file
musica/lib/yaml-cpp.lib DELETED
Binary file