From b01be06e23b9b6c9c13834c32553a3545b8c48ce Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Sun, 21 Jun 2026 01:03:26 +0200 Subject: [PATCH] =?UTF-8?q?enhance=20C++=20usability=20description=20in=20?= =?UTF-8?q?README,=20add=20Rafa=C5=82=20to=20Zenodo=20authorship=20metadat?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .zenodo.json | 4 ++++ README.md | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index 15b24f8b..7a6a5ee0 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -29,6 +29,10 @@ "affiliation": "AGH University of Krakow, Kraków, Poland", "name": "Adamus, Gracjan" }, + { + "affiliation": "AGH University of Krakow, Kraków, Poland", + "name": "Oszajca, Rafał" + }, { "affiliation": "University of Illinois Urbana-Champaign", "name": "Tang, Wenhan" diff --git a/README.md b/README.md index 1b157a09..ff9f8c2d 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ Additionally, the ability to easily package examples, simple simulations, and re instructors, and students, with nominal software and hardware requirements. Documentation of PyPartMC is hosted at https://open-atmos.github.io/PyPartMC. -PyPartMC is implemented in C++ and it also constitutes a C++ API to the PartMC Fortran internals (C++ example below). -The Python API can facilitate using PartMC from other environments - see, e.g., Julia and Matlab examples below. +PyPartMC is implemented in C++ and it also constitutes a C++ API to the PartMC Fortran internals (see the C++ example below). +The Python API can facilitate using PartMC from other environments than Python and C++ - see, e.g., Julia and Matlab examples below. For an outline of the project, rationale, architecture, and features, refer to: [D'Aquino et al., 2024 (SoftwareX)](https://doi.org/10.1016/j.softx.2023.101613) (please cite if PyPartMC is used in your research). For a list of talks and other relevant resources, please see [project Wiki](https://github.com/open-atmos/PyPartMC/wiki/). @@ -120,7 +120,7 @@ pip install PyPartMC[examples] - ships with [a set of examples](https://github.com/open-atmos/PyPartMC/tree/main/examples) maintained in a form of Jupyter notebooks - Pythonic API (but retaining PartMC jargon) incl. Python GC deallocation of Fortran objects - specification of parameters using native Python datatypes (lists, dicts) in place of PartMC spec files -- code snippets in README depicting how to use PyPartMC from Julia and Matlab (also executed on CI) +- code snippets in README depicting how to use PyPartMC from Python, C++, Julia and Matlab (also executed on CI) - auto-generated [API docs on the web](https://open-atmos.github.io/PyPartMC/) - support for [de]serialization of selected wrapped structures using JSON - based on [unmodified PartMC code](https://github.com/open-atmos/PyPartMC/tree/main/gitmodules) @@ -132,7 +132,7 @@ pip install PyPartMC[examples] The listings below depict how the identical task of randomly sampling particles from an aerosol size distribution in PartMC can be done in different programming languages. -For a Fortran equivalent of the Python, Julia and Matlab programs below, see the [`readme_fortran` folder](https://github.com/open-atmos/PyPartMC/tree/main/readme_fortran). +For a Fortran equivalent of the Python, C++, Julia and Matlab programs below, see the [`readme_fortran` folder](https://github.com/open-atmos/PyPartMC/tree/main/readme_fortran). #### Python @@ -178,6 +178,10 @@ print(np.dot(aero_state.masses(), aero_state.num_concs), "# kg/m3") #### C++ +Note that `pip install PyPartMC` also installs C++ header files as well as CMake package configuration file for PyPartMC. +No other dependencies are needed to use PyPartMC from C++, and using it in the way exemplified below works by +linking against the PyPartMC binary library file, but without involving the Python interpretter at runtime. + ```cpp #include #include @@ -236,7 +240,7 @@ int main() { } ``` -What can be compiled using CMake with following CMakeLists.txt: +What can be compiled using CMake with the following CMakeLists.txt: ```cmake cmake_minimum_required(VERSION 3.22)