musica 0.12.2__cp39-cp39-macosx_15_0_arm64.whl → 0.13.0__cp39-cp39-macosx_15_0_arm64.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 (66) hide show
  1. musica/.dylibs/libgcc_s.1.1.dylib +0 -0
  2. musica/.dylibs/libgfortran.5.dylib +0 -0
  3. musica/.dylibs/libquadmath.0.dylib +0 -0
  4. musica/CMakeLists.txt +4 -0
  5. musica/_musica.cpython-39-darwin.so +0 -0
  6. musica/_version.py +1 -1
  7. musica/binding_common.cpp +6 -9
  8. musica/binding_common.hpp +17 -1
  9. musica/grid.cpp +206 -0
  10. musica/grid.py +98 -0
  11. musica/grid_map.cpp +117 -0
  12. musica/grid_map.py +167 -0
  13. musica/mechanism_configuration/__init__.py +18 -1
  14. musica/mechanism_configuration/ancillary.py +6 -0
  15. musica/mechanism_configuration/arrhenius.py +111 -269
  16. musica/mechanism_configuration/branched.py +116 -275
  17. musica/mechanism_configuration/emission.py +63 -52
  18. musica/mechanism_configuration/first_order_loss.py +73 -157
  19. musica/mechanism_configuration/mechanism.py +93 -0
  20. musica/mechanism_configuration/phase.py +44 -33
  21. musica/mechanism_configuration/phase_species.py +58 -0
  22. musica/mechanism_configuration/photolysis.py +77 -67
  23. musica/mechanism_configuration/reaction_component.py +54 -0
  24. musica/mechanism_configuration/reactions.py +17 -58
  25. musica/mechanism_configuration/species.py +45 -71
  26. musica/mechanism_configuration/surface.py +78 -74
  27. musica/mechanism_configuration/taylor_series.py +136 -0
  28. musica/mechanism_configuration/ternary_chemical_activation.py +138 -330
  29. musica/mechanism_configuration/troe.py +138 -330
  30. musica/mechanism_configuration/tunneling.py +105 -229
  31. musica/mechanism_configuration/user_defined.py +79 -68
  32. musica/mechanism_configuration.cpp +54 -162
  33. musica/musica.cpp +2 -5
  34. musica/profile.cpp +294 -0
  35. musica/profile.py +93 -0
  36. musica/profile_map.cpp +117 -0
  37. musica/profile_map.py +167 -0
  38. musica/test/examples/v1/full_configuration/full_configuration.json +91 -233
  39. musica/test/examples/v1/full_configuration/full_configuration.yaml +191 -290
  40. musica/test/integration/test_chapman.py +2 -2
  41. musica/test/integration/test_tuvx.py +72 -15
  42. musica/test/unit/test_grid.py +137 -0
  43. musica/test/unit/test_grid_map.py +126 -0
  44. musica/test/unit/test_parser.py +10 -10
  45. musica/test/unit/test_profile.py +169 -0
  46. musica/test/unit/test_profile_map.py +137 -0
  47. musica/test/unit/test_serializer.py +17 -16
  48. musica/test/unit/test_state.py +17 -4
  49. musica/test/unit/test_util_full_mechanism.py +78 -298
  50. musica/tuvx.cpp +94 -15
  51. musica/tuvx.py +92 -22
  52. musica/types.py +13 -5
  53. {musica-0.12.2.dist-info → musica-0.13.0.dist-info}/METADATA +14 -14
  54. musica-0.13.0.dist-info/RECORD +90 -0
  55. musica/mechanism_configuration/aqueous_equilibrium.py +0 -274
  56. musica/mechanism_configuration/condensed_phase_arrhenius.py +0 -309
  57. musica/mechanism_configuration/condensed_phase_photolysis.py +0 -88
  58. musica/mechanism_configuration/henrys_law.py +0 -44
  59. musica/mechanism_configuration/mechanism_configuration.py +0 -234
  60. musica/mechanism_configuration/simpol_phase_transfer.py +0 -217
  61. musica/mechanism_configuration/wet_deposition.py +0 -52
  62. musica-0.12.2.dist-info/RECORD +0 -80
  63. {musica-0.12.2.dist-info → musica-0.13.0.dist-info}/WHEEL +0 -0
  64. {musica-0.12.2.dist-info → musica-0.13.0.dist-info}/entry_points.txt +0 -0
  65. {musica-0.12.2.dist-info → musica-0.13.0.dist-info}/licenses/AUTHORS.md +0 -0
  66. {musica-0.12.2.dist-info → musica-0.13.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,7 @@
1
1
  // Copyright (C) 2025 University Corporation for Atmospheric Research
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ #include "binding_common.hpp"
4
+
3
5
  #include <musica/micm/parse.hpp>
4
6
 
5
7
  #include <mechanism_configuration/constants.hpp>
@@ -7,8 +9,6 @@
7
9
  #include <mechanism_configuration/v1/reaction_types.hpp>
8
10
  #include <mechanism_configuration/v1/types.hpp>
9
11
  #include <mechanism_configuration/v1/validation.hpp>
10
- #include <pybind11/pybind11.h>
11
- #include <pybind11/stl.h>
12
12
 
13
13
  #include <variant>
14
14
 
@@ -21,18 +21,13 @@ enum class ReactionType
21
21
  {
22
22
  Arrhenius,
23
23
  Branched,
24
- CondensedPhaseArrhenius,
25
- CondensedPhasePhotolysis,
26
24
  Emission,
27
25
  FirstOrderLoss,
28
- SimpolPhaseTransfer,
29
- AqueousEquilibrium,
30
- WetDeposition,
31
- HenrysLaw,
32
26
  Photolysis,
33
27
  Surface,
34
- Troe,
28
+ TaylorSeries,
35
29
  TernaryChemicalActivation,
30
+ Troe,
36
31
  Tunneling,
37
32
  UserDefined
38
33
  };
@@ -42,18 +37,13 @@ struct ReactionsIterator
42
37
  using VariantType = std::variant<
43
38
  Arrhenius,
44
39
  Branched,
45
- CondensedPhaseArrhenius,
46
- CondensedPhasePhotolysis,
47
40
  Emission,
48
41
  FirstOrderLoss,
49
- SimpolPhaseTransfer,
50
- AqueousEquilibrium,
51
- WetDeposition,
52
- HenrysLaw,
53
42
  Photolysis,
54
43
  Surface,
55
- Troe,
44
+ TaylorSeries,
56
45
  TernaryChemicalActivation,
46
+ Troe,
57
47
  Tunneling,
58
48
  UserDefined>;
59
49
 
@@ -62,26 +52,19 @@ struct ReactionsIterator
62
52
  size_t inner_index = 0;
63
53
 
64
54
  ReactionsIterator(Reactions &reactions)
65
- : reaction_lists{
66
- std::vector<VariantType>(reactions.arrhenius.begin(), reactions.arrhenius.end()),
67
- std::vector<VariantType>(reactions.branched.begin(), reactions.branched.end()),
68
- std::vector<VariantType>(reactions.condensed_phase_arrhenius.begin(), reactions.condensed_phase_arrhenius.end()),
69
- std::vector<VariantType>(reactions.condensed_phase_photolysis.begin(), reactions.condensed_phase_photolysis.end()),
70
- std::vector<VariantType>(reactions.emission.begin(), reactions.emission.end()),
71
- std::vector<VariantType>(reactions.first_order_loss.begin(), reactions.first_order_loss.end()),
72
- std::vector<VariantType>(reactions.simpol_phase_transfer.begin(), reactions.simpol_phase_transfer.end()),
73
- std::vector<VariantType>(reactions.aqueous_equilibrium.begin(), reactions.aqueous_equilibrium.end()),
74
- std::vector<VariantType>(reactions.wet_deposition.begin(), reactions.wet_deposition.end()),
75
- std::vector<VariantType>(reactions.henrys_law.begin(), reactions.henrys_law.end()),
76
- std::vector<VariantType>(reactions.photolysis.begin(), reactions.photolysis.end()),
77
- std::vector<VariantType>(reactions.surface.begin(), reactions.surface.end()),
78
- std::vector<VariantType>(reactions.troe.begin(), reactions.troe.end()),
79
- std::vector<VariantType>(
80
- reactions.ternary_chemical_activation.begin(),
81
- reactions.ternary_chemical_activation.end()),
82
- std::vector<VariantType>(reactions.tunneling.begin(), reactions.tunneling.end()),
83
- std::vector<VariantType>(reactions.user_defined.begin(), reactions.user_defined.end())
84
- }
55
+ : reaction_lists{ std::vector<VariantType>(reactions.arrhenius.begin(), reactions.arrhenius.end()),
56
+ std::vector<VariantType>(reactions.branched.begin(), reactions.branched.end()),
57
+ std::vector<VariantType>(reactions.emission.begin(), reactions.emission.end()),
58
+ std::vector<VariantType>(reactions.first_order_loss.begin(), reactions.first_order_loss.end()),
59
+ std::vector<VariantType>(reactions.photolysis.begin(), reactions.photolysis.end()),
60
+ std::vector<VariantType>(reactions.surface.begin(), reactions.surface.end()),
61
+ std::vector<VariantType>(reactions.taylor_series.begin(), reactions.taylor_series.end()),
62
+ std::vector<VariantType>(
63
+ reactions.ternary_chemical_activation.begin(),
64
+ reactions.ternary_chemical_activation.end()),
65
+ std::vector<VariantType>(reactions.troe.begin(), reactions.troe.end()),
66
+ std::vector<VariantType>(reactions.tunneling.begin(), reactions.tunneling.end()),
67
+ std::vector<VariantType>(reactions.user_defined.begin(), reactions.user_defined.end()) }
85
68
  {
86
69
  }
87
70
 
@@ -163,14 +146,6 @@ Reactions create_reactions(const py::list &reactions)
163
146
  {
164
147
  reaction_obj.branched.push_back(item.cast<Branched>());
165
148
  }
166
- else if (py::isinstance<CondensedPhaseArrhenius>(item))
167
- {
168
- reaction_obj.condensed_phase_arrhenius.push_back(item.cast<CondensedPhaseArrhenius>());
169
- }
170
- else if (py::isinstance<CondensedPhasePhotolysis>(item))
171
- {
172
- reaction_obj.condensed_phase_photolysis.push_back(item.cast<CondensedPhasePhotolysis>());
173
- }
174
149
  else if (py::isinstance<Emission>(item))
175
150
  {
176
151
  reaction_obj.emission.push_back(item.cast<Emission>());
@@ -179,22 +154,6 @@ Reactions create_reactions(const py::list &reactions)
179
154
  {
180
155
  reaction_obj.first_order_loss.push_back(item.cast<FirstOrderLoss>());
181
156
  }
182
- else if (py::isinstance<SimpolPhaseTransfer>(item))
183
- {
184
- reaction_obj.simpol_phase_transfer.push_back(item.cast<SimpolPhaseTransfer>());
185
- }
186
- else if (py::isinstance<AqueousEquilibrium>(item))
187
- {
188
- reaction_obj.aqueous_equilibrium.push_back(item.cast<AqueousEquilibrium>());
189
- }
190
- else if (py::isinstance<WetDeposition>(item))
191
- {
192
- reaction_obj.wet_deposition.push_back(item.cast<WetDeposition>());
193
- }
194
- else if (py::isinstance<HenrysLaw>(item))
195
- {
196
- reaction_obj.henrys_law.push_back(item.cast<HenrysLaw>());
197
- }
198
157
  else if (py::isinstance<Photolysis>(item))
199
158
  {
200
159
  reaction_obj.photolysis.push_back(item.cast<Photolysis>());
@@ -203,14 +162,18 @@ Reactions create_reactions(const py::list &reactions)
203
162
  {
204
163
  reaction_obj.surface.push_back(item.cast<Surface>());
205
164
  }
206
- else if (py::isinstance<Troe>(item))
165
+ else if (py::isinstance<TaylorSeries>(item))
207
166
  {
208
- reaction_obj.troe.push_back(item.cast<Troe>());
167
+ reaction_obj.taylor_series.push_back(item.cast<TaylorSeries>());
209
168
  }
210
169
  else if (py::isinstance<TernaryChemicalActivation>(item))
211
170
  {
212
171
  reaction_obj.ternary_chemical_activation.push_back(item.cast<TernaryChemicalActivation>());
213
172
  }
173
+ else if (py::isinstance<Troe>(item))
174
+ {
175
+ reaction_obj.troe.push_back(item.cast<Troe>());
176
+ }
214
177
  else if (py::isinstance<Tunneling>(item))
215
178
  {
216
179
  reaction_obj.tunneling.push_back(item.cast<Tunneling>());
@@ -232,32 +195,20 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
232
195
  py::enum_<ReactionType>(mechanism_configuration, "_ReactionType")
233
196
  .value("Arrhenius", ReactionType::Arrhenius)
234
197
  .value("Branched", ReactionType::Branched)
235
- .value("CondensedPhaseArrhenius", ReactionType::CondensedPhaseArrhenius)
236
- .value("CondensedPhasePhotolysis", ReactionType::CondensedPhasePhotolysis)
237
198
  .value("Emission", ReactionType::Emission)
238
199
  .value("FirstOrderLoss", ReactionType::FirstOrderLoss)
239
- .value("SimpolPhaseTransfer", ReactionType::SimpolPhaseTransfer)
240
- .value("AqueousEquilibrium", ReactionType::AqueousEquilibrium)
241
- .value("WetDeposition", ReactionType::WetDeposition)
242
- .value("HenrysLaw", ReactionType::HenrysLaw)
243
200
  .value("Photolysis", ReactionType::Photolysis)
244
201
  .value("Surface", ReactionType::Surface)
245
- .value("Troe", ReactionType::Troe)
202
+ .value("TaylorSeries", ReactionType::TaylorSeries)
246
203
  .value("TernaryChemicalActivation", ReactionType::TernaryChemicalActivation)
204
+ .value("Troe", ReactionType::Troe)
247
205
  .value("Tunneling", ReactionType::Tunneling)
248
206
  .value("UserDefined", ReactionType::UserDefined);
249
207
 
250
208
  py::class_<Species>(mechanism_configuration, "_Species")
251
209
  .def(py::init<>())
252
210
  .def_readwrite("name", &Species::name)
253
- .def_readwrite("absolute_tolerance", &Species::absolute_tolerance)
254
- .def_readwrite("diffusion_coefficient_m2_s", &Species::diffusion_coefficient)
255
211
  .def_readwrite("molecular_weight_kg_mol", &Species::molecular_weight)
256
- .def_readwrite("HLC_298K_mol_m3_Pa", &Species::henrys_law_constant_298)
257
- .def_readwrite("HLC_exponential_factor_K", &Species::henrys_law_constant_exponential_factor)
258
- .def_readwrite("N_star", &Species::n_star)
259
- .def_readwrite("density_kg_m3", &Species::density)
260
- .def_readwrite("tracer_type", &Species::tracer_type)
261
212
  .def_readwrite("constant_concentration_mol_m3", &Species::constant_concentration)
262
213
  .def_readwrite("constant_mixing_ratio_mol_mol", &Species::constant_mixing_ratio)
263
214
  .def_readwrite("is_third_body", &Species::is_third_body)
@@ -265,6 +216,14 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
265
216
  .def("__str__", [](const Species &s) { return s.name; })
266
217
  .def("__repr__", [](const Species &s) { return "<Species: " + s.name + ">"; });
267
218
 
219
+ py::class_<PhaseSpecies>(mechanism_configuration, "_PhaseSpecies")
220
+ .def(py::init<>())
221
+ .def_readwrite("name", &PhaseSpecies::name)
222
+ .def_readwrite("diffusion_coefficient_m2_s", &PhaseSpecies::diffusion_coefficient)
223
+ .def_readwrite("other_properties", &PhaseSpecies::unknown_properties)
224
+ .def("__str__", [](const PhaseSpecies &s) { return s.name; })
225
+ .def("__repr__", [](const PhaseSpecies &s) { return "<PhaseSpecies: " + s.name + ">"; });
226
+
268
227
  py::class_<Phase>(mechanism_configuration, "_Phase")
269
228
  .def(py::init<>())
270
229
  .def_readwrite("name", &Phase::name)
@@ -312,21 +271,21 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
312
271
  .def("__repr__", [](const Arrhenius &a) { return "<Arrhenius: " + a.name + ">"; })
313
272
  .def_property_readonly("type", [](const Arrhenius &) { return ReactionType::Arrhenius; });
314
273
 
315
- py::class_<CondensedPhaseArrhenius>(mechanism_configuration, "_CondensedPhaseArrhenius")
274
+ py::class_<TaylorSeries>(mechanism_configuration, "_TaylorSeries")
316
275
  .def(py::init<>())
317
- .def_readwrite("A", &CondensedPhaseArrhenius::A)
318
- .def_readwrite("B", &CondensedPhaseArrhenius::B)
319
- .def_readwrite("C", &CondensedPhaseArrhenius::C)
320
- .def_readwrite("D", &CondensedPhaseArrhenius::D)
321
- .def_readwrite("E", &CondensedPhaseArrhenius::E)
322
- .def_readwrite("reactants", &CondensedPhaseArrhenius::reactants)
323
- .def_readwrite("products", &CondensedPhaseArrhenius::products)
324
- .def_readwrite("name", &CondensedPhaseArrhenius::name)
325
- .def_readwrite("condensed_phase", &CondensedPhaseArrhenius::condensed_phase)
326
- .def_readwrite("other_properties", &CondensedPhaseArrhenius::unknown_properties)
327
- .def("__str__", [](const CondensedPhaseArrhenius &cpa) { return cpa.name; })
328
- .def("__repr__", [](const CondensedPhaseArrhenius &cpa) { return "<CondensedPhaseArrhenius: " + cpa.name + ">"; })
329
- .def_property_readonly("type", [](const CondensedPhaseArrhenius &) { return ReactionType::CondensedPhaseArrhenius; });
276
+ .def_readwrite("A", &TaylorSeries::A)
277
+ .def_readwrite("B", &TaylorSeries::B)
278
+ .def_readwrite("C", &TaylorSeries::C)
279
+ .def_readwrite("D", &TaylorSeries::D)
280
+ .def_readwrite("E", &TaylorSeries::E)
281
+ .def_readwrite("taylor_coefficients", &TaylorSeries::taylor_coefficients)
282
+ .def_readwrite("name", &TaylorSeries::name)
283
+ .def_readwrite("gas_phase", &TaylorSeries::gas_phase)
284
+ .def_readwrite("reactants", &TaylorSeries::reactants)
285
+ .def_readwrite("products", &TaylorSeries::products)
286
+ .def_readwrite("other_properties", &TaylorSeries::unknown_properties)
287
+ .def("__str__", [](const TaylorSeries &ts) { return "TaylorSeries"; })
288
+ .def("__repr__", [](const TaylorSeries &ts) { return "<TaylorSeries>"; });
330
289
 
331
290
  py::class_<Troe>(mechanism_configuration, "_Troe")
332
291
  .def(py::init<>())
@@ -404,7 +363,6 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
404
363
  .def_readwrite("gas_phase_products", &Surface::gas_phase_products)
405
364
  .def_readwrite("name", &Surface::name)
406
365
  .def_readwrite("gas_phase", &Surface::gas_phase)
407
- .def_readwrite("condensed_phase", &Surface::condensed_phase)
408
366
  .def_readwrite("other_properties", &Surface::unknown_properties)
409
367
  .def("__str__", [](const Surface &s) { return s.name; })
410
368
  .def("__repr__", [](const Surface &s) { return "<Surface: " + s.name + ">"; })
@@ -422,19 +380,6 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
422
380
  .def("__repr__", [](const Photolysis &p) { return "<Photolysis: " + p.name + ">"; })
423
381
  .def_property_readonly("type", [](const Photolysis &) { return ReactionType::Photolysis; });
424
382
 
425
- py::class_<CondensedPhasePhotolysis>(mechanism_configuration, "_CondensedPhasePhotolysis")
426
- .def(py::init<>())
427
- .def_readwrite("scaling_factor", &CondensedPhasePhotolysis::scaling_factor)
428
- .def_readwrite("reactants", &CondensedPhasePhotolysis::reactants)
429
- .def_readwrite("products", &CondensedPhasePhotolysis::products)
430
- .def_readwrite("name", &CondensedPhasePhotolysis::name)
431
- .def_readwrite("condensed_phase", &CondensedPhasePhotolysis::condensed_phase)
432
- .def_readwrite("other_properties", &CondensedPhasePhotolysis::unknown_properties)
433
- .def("__str__", [](const CondensedPhasePhotolysis &cpp) { return cpp.name; })
434
- .def("__repr__", [](const CondensedPhasePhotolysis &cpp) { return "<CondensedPhasePhotolysis: " + cpp.name + ">"; })
435
- .def_property_readonly(
436
- "type", [](const CondensedPhasePhotolysis &) { return ReactionType::CondensedPhasePhotolysis; });
437
-
438
383
  py::class_<Emission>(mechanism_configuration, "_Emission")
439
384
  .def(py::init<>())
440
385
  .def_readwrite("scaling_factor", &Emission::scaling_factor)
@@ -457,52 +402,6 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
457
402
  .def("__repr__", [](const FirstOrderLoss &fol) { return "<FirstOrderLoss: " + fol.name + ">"; })
458
403
  .def_property_readonly("type", [](const FirstOrderLoss &) { return ReactionType::FirstOrderLoss; });
459
404
 
460
- py::class_<AqueousEquilibrium>(mechanism_configuration, "_AqueousEquilibrium")
461
- .def(py::init<>())
462
- .def_readwrite("name", &AqueousEquilibrium::name)
463
- .def_readwrite("condensed_phase", &AqueousEquilibrium::condensed_phase)
464
- .def_readwrite("condensed_phase_water", &AqueousEquilibrium::condensed_phase_water)
465
- .def_readwrite("reactants", &AqueousEquilibrium::reactants)
466
- .def_readwrite("products", &AqueousEquilibrium::products)
467
- .def_readwrite("A", &AqueousEquilibrium::A)
468
- .def_readwrite("C", &AqueousEquilibrium::C)
469
- .def_readwrite("k_reverse", &AqueousEquilibrium::k_reverse)
470
- .def_readwrite("other_properties", &AqueousEquilibrium::unknown_properties)
471
- .def("__str__", [](const AqueousEquilibrium &ae) { return ae.name; })
472
- .def("__repr__", [](const AqueousEquilibrium &ae) { return "<AqueousEquilibrium: " + ae.name + ">"; })
473
- .def_property_readonly("type", [](const AqueousEquilibrium &) { return ReactionType::AqueousEquilibrium; });
474
-
475
- py::class_<WetDeposition>(mechanism_configuration, "_WetDeposition")
476
- .def(py::init<>())
477
- .def_readwrite("scaling_factor", &WetDeposition::scaling_factor)
478
- .def_readwrite("name", &WetDeposition::name)
479
- .def_readwrite("condensed_phase", &WetDeposition::condensed_phase)
480
- .def_readwrite("other_properties", &WetDeposition::unknown_properties)
481
- .def("__str__", [](const WetDeposition &wd) { return wd.name; })
482
- .def("__repr__", [](const WetDeposition &wd) { return "<WetDeposition: " + wd.name + ">"; })
483
- .def_property_readonly("type", [](const WetDeposition &) { return ReactionType::WetDeposition; });
484
-
485
- py::class_<HenrysLaw>(mechanism_configuration, "_HenrysLaw")
486
- .def(py::init<>())
487
- .def_readwrite("name", &HenrysLaw::name)
488
- .def_readwrite("other_properties", &HenrysLaw::unknown_properties)
489
- .def("__str__", [](const HenrysLaw &hl) { return hl.name; })
490
- .def("__repr__", [](const HenrysLaw &hl) { return "<HenrysLaw: " + hl.name + ">"; })
491
- .def_property_readonly("type", [](const HenrysLaw &) { return ReactionType::HenrysLaw; });
492
-
493
- py::class_<SimpolPhaseTransfer>(mechanism_configuration, "_SimpolPhaseTransfer")
494
- .def(py::init<>())
495
- .def_readwrite("gas_phase", &SimpolPhaseTransfer::gas_phase)
496
- .def_readwrite("gas_phase_species", &SimpolPhaseTransfer::gas_phase_species)
497
- .def_readwrite("condensed_phase", &SimpolPhaseTransfer::condensed_phase)
498
- .def_readwrite("condensed_phase_species", &SimpolPhaseTransfer::condensed_phase_species)
499
- .def_readwrite("name", &SimpolPhaseTransfer::name)
500
- .def_readwrite("B", &SimpolPhaseTransfer::B)
501
- .def_readwrite("other_properties", &SimpolPhaseTransfer::unknown_properties)
502
- .def("__str__", [](const SimpolPhaseTransfer &spt) { return spt.name; })
503
- .def("__repr__", [](const SimpolPhaseTransfer &spt) { return "<SimpolPhaseTransfer: " + spt.name + ">"; })
504
- .def_property_readonly("type", [](const SimpolPhaseTransfer &) { return ReactionType::SimpolPhaseTransfer; });
505
-
506
405
  py::class_<UserDefined>(mechanism_configuration, "_UserDefined")
507
406
  .def(py::init<>())
508
407
  .def_readwrite("scaling_factor", &UserDefined::scaling_factor)
@@ -520,29 +419,22 @@ void bind_mechanism_configuration(py::module_ &mechanism_configuration)
520
419
  .def(py::init([](const py::list &reactions) { return create_reactions(reactions); }))
521
420
  .def_readwrite("arrhenius", &Reactions::arrhenius)
522
421
  .def_readwrite("branched", &Reactions::branched)
523
- .def_readwrite("condensed_phase_arrhenius", &Reactions::condensed_phase_arrhenius)
524
- .def_readwrite("condensed_phase_photolysis", &Reactions::condensed_phase_photolysis)
525
422
  .def_readwrite("emission", &Reactions::emission)
526
423
  .def_readwrite("first_order_loss", &Reactions::first_order_loss)
527
- .def_readwrite("simpol_phase_transfer", &Reactions::simpol_phase_transfer)
528
- .def_readwrite("aqueous_equilibrium", &Reactions::aqueous_equilibrium)
529
- .def_readwrite("wet_deposition", &Reactions::wet_deposition)
530
- .def_readwrite("henrys_law", &Reactions::henrys_law)
531
424
  .def_readwrite("photolysis", &Reactions::photolysis)
532
425
  .def_readwrite("surface", &Reactions::surface)
533
- .def_readwrite("troe", &Reactions::troe)
426
+ .def_readwrite("taylor_series", &Reactions::taylor_series)
534
427
  .def_readwrite("ternary_chemical_activation", &Reactions::ternary_chemical_activation)
428
+ .def_readwrite("troe", &Reactions::troe)
535
429
  .def_readwrite("tunneling", &Reactions::tunneling)
536
430
  .def_readwrite("user_defined", &Reactions::user_defined)
537
431
  .def(
538
432
  "__len__",
539
433
  [](const Reactions &r)
540
434
  {
541
- return r.arrhenius.size() + r.branched.size() + r.condensed_phase_arrhenius.size() +
542
- r.condensed_phase_photolysis.size() + r.emission.size() + r.first_order_loss.size() +
543
- r.simpol_phase_transfer.size() + r.aqueous_equilibrium.size() + r.wet_deposition.size() +
544
- r.henrys_law.size() + r.photolysis.size() + r.surface.size() + r.troe.size() + r.tunneling.size() +
545
- r.user_defined.size();
435
+ return r.arrhenius.size() + r.branched.size() + r.emission.size() + r.first_order_loss.size() +
436
+ r.photolysis.size() + r.surface.size() + r.taylor_series.size() + r.troe.size() +
437
+ r.ternary_chemical_activation.size() + r.tunneling.size() + r.user_defined.size();
546
438
  })
547
439
  .def("__str__", [](const Reactions &r) { return "Reactions"; })
548
440
  .def("__repr__", [](const Reactions &r) { return "<Reactions>"; })
musica/musica.cpp CHANGED
@@ -1,5 +1,7 @@
1
1
  // Copyright (C) 2023-2025 University Corporation for Atmospheric Research
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ #include "binding_common.hpp"
4
+
3
5
  #include <musica/micm/cuda_availability.hpp>
4
6
  #include <musica/micm/micm.hpp>
5
7
  #include <musica/micm/micm_c_interface.hpp>
@@ -7,19 +9,14 @@
7
9
  #include <musica/micm/state_c_interface.hpp>
8
10
 
9
11
  #include <mechanism_configuration/v1/types.hpp>
10
- #include <pybind11/pybind11.h>
11
- #include <pybind11/stl.h>
12
- #include <pybind11/stl_bind.h>
13
12
 
14
13
  namespace py = pybind11;
15
14
  namespace v1 = mechanism_configuration::v1::types;
16
15
 
17
- PYBIND11_MAKE_OPAQUE(std::vector<double>)
18
16
  PYBIND11_MAKE_OPAQUE(std::vector<micm::Conditions>)
19
17
 
20
18
  void bind_musica(py::module_ &core)
21
19
  {
22
- py::bind_vector<std::vector<double>>(core, "VectorDouble");
23
20
  py::bind_vector<std::vector<micm::Conditions>>(core, "VectorConditions");
24
21
 
25
22
  py::class_<micm::Conditions>(core, "_Conditions")