https://github.com/daedalus451/exopy
Python module for modeling the growth of planetesimals in a disk over time built using C++ and pybind11
https://github.com/daedalus451/exopy
cpp cpp17 pybind11 python python3
Last synced: 2 months ago
JSON representation
Python module for modeling the growth of planetesimals in a disk over time built using C++ and pybind11
- Host: GitHub
- URL: https://github.com/daedalus451/exopy
- Owner: Daedalus451
- License: mpl-2.0
- Created: 2020-02-05T04:57:17.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2020-02-14T02:05:31.000Z (over 6 years ago)
- Last Synced: 2026-04-23T08:11:07.038Z (3 months ago)
- Topics: cpp, cpp17, pybind11, python, python3
- Language: C++
- Homepage:
- Size: 108 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# exopy #
[](https://en.wikipedia.org/wiki/C%2B%2B17)
[](https://www.mozilla.org/en-US/MPL/2.0/)
[](https://travis-ci.org/Daedalus451/exopy)
[](https://github.com/Daedalus451/exopy/releases)
[](https://pypi.org/project/exo-py/)
[](https://pypi.org/project/exo-py/)
**exopy** is a Python module for modeling the growth of planetesimals in a disk over time. It is built as a .pyd from a C++ project using pybind11.
The [Smoluchowski coagulation equation](https://en.wikipedia.org/wiki/Smoluchowski_coagulation_equation), as shown below, is used to compute the number of planetesimals.

## Requirements ##
+ C++ 17 compiler
+ tested on:
+ msvc 1916/1924 (Windows 10 1909)
+ gcc 7.4.0/8.3.0 (Ubuntu 18.04.4)
+ clang 6.0.0/9.0.0 (Ubuntu 18.04.4)
+ [CMake 3.11](https://cmake.org/) or newer
+ [pybind11](https://github.com/pybind/pybind11)
+ [span-lite](https://github.com/martinmoene/span-lite)
+ [Python 3](https://www.python.org/)
+ [numpy](https://numpy.org/)
## Example ##
### Input ###
```
import exopy
import numpy as np
t = np.linspace(start=0.0, stop=3.0, num=4)
nk = exopy.compute_nk_approx(steps=t, k_max=8, initial=200.0, A=0.001)
with np.printoptions(precision=5, suppress=True, linewidth=100):
print(nk)
```
### Output ###
```
[[200. 0. 0. 0. 0. 0. 0. 0. ]
[160. 20. 0. 0. 0. 0. 0. 0. ]
[131.2 29.2 3.2 0.2 0. 0. 0. 0. ]
[109.70944 33.02376 6.50688 1.0134 0.11968 0.01096 0.00064 0.00002]]
```
## License ##
Copyright © 2020 Jared Duffey - All Rights Reserved
*exopy* is distributed under the [Mozilla Public License, v. 2.0](https://www.mozilla.org/en-US/MPL/2.0/). A copy of this license is included in LICENSE.txt.