git: 32afad732f1c - main - math/py-heyoka: Update 0.14.0 -> 0.15.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 04 Oct 2021 19:19:36 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=32afad732f1c177ab2c0d6a29bdeae8b4f8b967d commit 32afad732f1c177ab2c0d6a29bdeae8b4f8b967d Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2021-10-04 17:46:02 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2021-10-04 19:18:27 +0000 math/py-heyoka: Update 0.14.0 -> 0.15.0 Reported by: portscout --- math/py-heyoka/Makefile | 8 +++- math/py-heyoka/distinfo | 6 +-- .../files/example-restricted-three-body-problem.py | 53 ++++++++++++++++++++++ 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/math/py-heyoka/Makefile b/math/py-heyoka/Makefile index 29ea55c91cc4..ca6a769fb2aa 100644 --- a/math/py-heyoka/Makefile +++ b/math/py-heyoka/Makefile @@ -1,7 +1,6 @@ PORTNAME= heyoka DISTVERSIONPREFIX= v -DISTVERSION= 0.14.0 -PORTREVISION= 1 +DISTVERSION= 0.15.0 CATEGORIES= math PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -21,6 +20,7 @@ RUN_DEPENDS= ${PYNUMPY} \ ${PYTHON_PKGNAMEPREFIX}cloudpickle>0:devel/py-cloudpickle@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}mpmath>0:math/py-mpmath@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}sympy>0:math/py-sympy@${PY_FLAVOR} +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} USES= cmake compiler:c++17-lang python:3.7+ USE_PYTHON= flavors @@ -32,4 +32,8 @@ GH_PROJECT= ${PORTNAME}.py CMAKE_ON= HEYOKA_PY_ENABLE_IPO CMAKE_ARGS= -DFREEBSD_PYTHON_DISTVERSION=${PYTHON_DISTVERSION} +do-test: install + # integrate and plot an example + @${PYTHON_CMD} ${FILESDIR}/example-restricted-three-body-problem.py + .include <bsd.port.mk> diff --git a/math/py-heyoka/distinfo b/math/py-heyoka/distinfo index f0bcf70423e6..3d66af0656f3 100644 --- a/math/py-heyoka/distinfo +++ b/math/py-heyoka/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1630378504 -SHA256 (bluescarni-heyoka.py-v0.14.0_GH0.tar.gz) = 20fa3498be323ea2b51ec2ab5057c1193af3189df69ddffff42f62741b05994e -SIZE (bluescarni-heyoka.py-v0.14.0_GH0.tar.gz) = 60372207 +TIMESTAMP = 1633368323 +SHA256 (bluescarni-heyoka.py-v0.15.0_GH0.tar.gz) = 0e8c4bf0cc276e52fff3e4114dc759a6f8882fe83215279bcb156403b5d11756 +SIZE (bluescarni-heyoka.py-v0.15.0_GH0.tar.gz) = 101630534 diff --git a/math/py-heyoka/files/example-restricted-three-body-problem.py b/math/py-heyoka/files/example-restricted-three-body-problem.py new file mode 100644 index 000000000000..03500f8d4b18 --- /dev/null +++ b/math/py-heyoka/files/example-restricted-three-body-problem.py @@ -0,0 +1,53 @@ +import heyoka as hy +import numpy as np + +# Create the symbolic variables. +# from https://bluescarni.github.io/heyoka.py/notebooks/The%20restricted%20three-body%20problem.html + +x, y, z, px, py, pz = hy.make_vars("x", "y", "z", "px", "py", "pz") + +# Fix mu to 0.01. +mu = 0.01 + +rps_32 = ((x - mu)**2 + y**2 + z**2)**(-3/2.) +rpj_32 = ((x - mu + 1.)**2 + y**2 + z**2)**(-3/2.) + +# The equations of motion. +dxdt = px + y +dydt = py - x +dzdt = pz +dpxdt = py - (1. - mu) * rps_32 * (x - mu) - mu * rpj_32 * (x - mu + 1.) +dpydt = -px -((1. - mu) * rps_32 + mu * rpj_32) * y +dpzdt = -((1. - mu) * rps_32 + mu * rpj_32) * z + +# create the integrator object +ta = hy.taylor_adaptive( + # The ODEs. + [(x, dxdt), (y, dydt), (z, dzdt), + (px, dpxdt), (py, dpydt), (pz, dpzdt)], + # The initial conditions. + [-0.45, 0.80, 0.00, -0.80, -0.45, 0.58], + # Operate below machine precision + # and in high-accuracy mode. + tol = 1e-18, high_accuracy = True +) + +# integrate the RTBP up to time unit +t_grid = np.linspace(0, 200, 2500) +out = ta.propagate_grid(t_grid) +print(out) + +# plot +from matplotlib.pylab import plt +plt.rcParams["figure.figsize"] = (12,6) + +plt.subplot(1,2,1) +plt.plot(out[4][:, 0], out[4][:, 1]) +plt.xlabel("x") +plt.ylabel("y") +plt.subplot(1,2,2) +plt.plot(out[4][:, 0], out[4][:, 2]) +plt.xlabel("x") +plt.ylabel("z"); + +plt.show();