|
1 | 1 |  |
2 | 2 |
|
3 | | -# PyPartMC (pre-alpha!) |
| 3 | +# PyPartMC |
4 | 4 |
|
5 | 5 | PyPartMC is a Python interface to [PartMC](https://lagrange.mechse.illinois.edu/partmc/), |
6 | 6 | a particle-resolved Monte-Carlo code for atmospheric aerosol simulation. |
7 | | -Since PyPartMC is implemented in C++, it also constitutes a C++ API to the PartMC Fortran internals; |
8 | | - the Python API can be used from other environments - see, e.g., Julia example below. |
| 7 | +PyPartMC is implemented in C++ and it also constitutes a C++ API to the PartMC Fortran internals. |
| 8 | +The Python API can facilitate using PartMC from other environments - see, e.g., Julia example below. |
9 | 9 |
|
10 | 10 | [](https://asr.science.energy.gov/) |
11 | 11 | [](https://www.gnu.org/licenses/gpl-3.0.html) |
@@ -34,10 +34,11 @@ import PyPartMC |
34 | 34 | - hassle-free installation using `pip` (prior PartMC installation **not needed**) |
35 | 35 | - works out of the box on [mybinder.org](https://mybinder.org/), [Google Colab](colab.research.google.com/) and alike |
36 | 36 | - ships with [a set of examples](https://github.com/open-atmos/PyPartMC-examples) maintained in a form of Jupyter notebooks |
37 | | -- Pythonic API (but retaining PartMC jargon) incl. exceptions and GC deallocation of Fortran objects |
| 37 | +- Pythonic API (but retaining PartMC jargon) incl. Python GC deallocation of Fortran objects |
| 38 | +- specification of parameters using native Python datatypes (lists, dicts) in place of PartMC spec files |
38 | 39 | - code snippets in README depicting how to use PyPartMC from Julia (also executed on CI) |
39 | | -- auto-generated [docs on the web](https://open-atmos.github.io/PyPartMC/) |
40 | | -- support for [de]serialization of all exposed structures using JSON |
| 40 | +- auto-generated [API docs on the web](https://open-atmos.github.io/PyPartMC/) |
| 41 | +- support for [de]serialization of selected wrapped structures using JSON |
41 | 42 | - based on [unmodified PartMC code](https://github.com/open-atmos/PyPartMC/tree/main/gitmodules) |
42 | 43 | - does not use or require shell or netCDF Fortran library |
43 | 44 | - aiming at 100% [unit test coverage](https://github.com/open-atmos/PyPartMC/tree/main/tests) |
@@ -75,7 +76,7 @@ PyPartMC is used within the [test workflow of the PySDM project](https://github. |
75 | 76 |
|
76 | 77 | - PyPartMC is written in C++, Fortran and uses [pybind11](https://pybind11.readthedocs.io/en/stable/) and [CMake](https://cmake.org/). |
77 | 78 | - JSON support is handled with [nlohmann::json](https://github.com/nlohmann/json) and [pybind11_json](https://github.com/pybind/pybind11_json) |
78 | | -- PartMC and selected parts of SUNDIALS are compiled during `pip install` and statically linked |
| 79 | +- PartMC and selected parts of SUNDIALS are statically linked (and compiled in during `pip install` or `python -m build`) |
79 | 80 | - C (SUNDIALS), C++ (pybind11, ...) and Fortran (PartMC, CAMP) dependencies are linked through [git submodules](https://github.com/open-atmos/PyPartMC/blob/main/.gitmodules) |
80 | 81 | - a [mock of Fortran netCDF API](https://github.com/open-atmos/PyPartMC/blob/main/src/fake_netcdf.F90) and a [mock of PartMC spec file API](https://github.com/open-atmos/PyPartMC/blob/main/src/fake_spec_file.F90) are used for i/o from/to JSON |
81 | 82 |
|
@@ -109,7 +110,7 @@ PyPartMC codebase benefits from Pylint, Black and isort code analysis (which are |
109 | 110 |
|
110 | 111 | #### PyPartMC: |
111 | 112 |
|
112 | | -author: [PyPartMC developers](https://github.com/open-atmos/PyPartMC/graphs/contributors) |
| 113 | +authors: [PyPartMC developers](https://github.com/open-atmos/PyPartMC/graphs/contributors) |
113 | 114 | funding: [US Department of Energy Atmospheric System Research programme](https://asr.science.energy.gov/) |
114 | 115 | copyright: [University of Illinois at Urbana-Champaign](https://atmos.illinois.edu/) |
115 | 116 | licence: [GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) |
|
0 commit comments