git: 8b65c127626c - main - math/{,py-}heyoka: update 1.0.0 → 5.0.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 14 Jun 2024 21:32:13 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=8b65c127626c86e615dc66f379d1a81c579fed52 commit 8b65c127626c86e615dc66f379d1a81c579fed52 Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2024-06-14 19:00:34 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2024-06-14 21:31:32 +0000 math/{,py-}heyoka: update 1.0.0 → 5.0.0 Reported by: portscout --- math/heyoka/Makefile | 15 ++++- math/heyoka/distinfo | 14 ++++- math/heyoka/files/patch-CMakeLists.txt | 14 ++--- math/heyoka/pkg-plist | 61 ++++++++++++++++-- math/py-heyoka/Makefile | 5 +- math/py-heyoka/distinfo | 6 +- .../files/example-restricted-three-body-problem.py | 73 +++++++++++++++++++--- math/py-heyoka/pkg-plist | 9 +++ 8 files changed, 163 insertions(+), 34 deletions(-) diff --git a/math/heyoka/Makefile b/math/heyoka/Makefile index 17ca6f164cdc..c46f9c458961 100644 --- a/math/heyoka/Makefile +++ b/math/heyoka/Makefile @@ -1,9 +1,14 @@ PORTNAME= heyoka DISTVERSIONPREFIX= v -DISTVERSION= 1.0.0 -PORTREVISION= 7 +DISTVERSION= 5.0.0 CATEGORIES= math +PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ +PATCHFILES= e9ca3726897a0b114876f4486d8903740c167893.patch:-p1 # 4 release followup patches from https://github.com/bluescarni/heyoka/pull/428 +PATCHFILES+= 86e10d0115074b347d74e78102d59395091c66ac.patch:-p1 +PATCHFILES+= c5609ec799822a3a44044d061a8376221863f747.patch:-p1 +PATCHFILES+= f60ce702cb5d2005598c139c87a2b93460f0771a.patch:-p1 + MAINTAINER= yuri@FreeBSD.org COMMENT= C++ library for ODE integration via Taylor's method and LLVM WWW= https://bluescarni.github.io/heyoka/ @@ -23,7 +28,7 @@ LIB_DEPENDS= libboost_serialization.so:devel/boost-libs \ TEST_DEPENDS= xtensor>0:math/xtensor \ xtensor-blas>0:math/xtensor-blas -USES= cmake:testing compiler:c++17-lang llvm:min=15,build,run +USES= cmake:testing compiler:c++17-lang llvm:min=16,build,run USE_LDCONFIG= yes USE_GITHUB= yes @@ -33,4 +38,8 @@ CMAKE_ON= HEYOKA_WITH_MPPP HEYOKA_WITH_SLEEF CMAKE_ARGS= -DFREEBSD_LLVM_VERSION=${LLVM_VERSION} CMAKE_TESTING_ON= HEYOKA_BUILD_TESTS # 1 test fails, see https://github.com/bluescarni/heyoka/issues/338 +# 2 tests fail: +# * https://github.com/bluescarni/heyoka/issues/429 +# * https://github.com/bluescarni/heyoka/issues/430 + .include <bsd.port.mk> diff --git a/math/heyoka/distinfo b/math/heyoka/distinfo index 8387d403e93d..bd390a29c892 100644 --- a/math/heyoka/distinfo +++ b/math/heyoka/distinfo @@ -1,3 +1,11 @@ -TIMESTAMP = 1691728123 -SHA256 (bluescarni-heyoka-v1.0.0_GH0.tar.gz) = 96f2e049e0518c49dbe224fc268ab1ad80abeaa306e2fe7a30e2acffb79c04af -SIZE (bluescarni-heyoka-v1.0.0_GH0.tar.gz) = 103578659 +TIMESTAMP = 1718356708 +SHA256 (bluescarni-heyoka-v5.0.0_GH0.tar.gz) = e9a4b5683a08706addc1b448e232f1e269d78586859fe3f4d93d4c5eee3bc8ae +SIZE (bluescarni-heyoka-v5.0.0_GH0.tar.gz) = 104391096 +SHA256 (e9ca3726897a0b114876f4486d8903740c167893.patch) = ebc1dcf41e0b827512fd7551152c3b16b188b69b8b3e6236e594859aa79a8c61 +SIZE (e9ca3726897a0b114876f4486d8903740c167893.patch) = 1198 +SHA256 (86e10d0115074b347d74e78102d59395091c66ac.patch) = 9813a89a0f749872424715827f31a7683df290bc58675746583ed0da7337183a +SIZE (86e10d0115074b347d74e78102d59395091c66ac.patch) = 2573 +SHA256 (c5609ec799822a3a44044d061a8376221863f747.patch) = 96203f43462281e176fec3a50b3e95d1482a98c341d3f51ea2251df6bd3a0ddf +SIZE (c5609ec799822a3a44044d061a8376221863f747.patch) = 2701 +SHA256 (f60ce702cb5d2005598c139c87a2b93460f0771a.patch) = d1887691e6b13c39dbd551d58f1be647cda9548b48a86732e5eaf8b535568b7a +SIZE (f60ce702cb5d2005598c139c87a2b93460f0771a.patch) = 1941 diff --git a/math/heyoka/files/patch-CMakeLists.txt b/math/heyoka/files/patch-CMakeLists.txt index ebc7046cd3fd..833117d9a3d2 100644 --- a/math/heyoka/files/patch-CMakeLists.txt +++ b/math/heyoka/files/patch-CMakeLists.txt @@ -1,13 +1,13 @@ - fix llvm version ---- CMakeLists.txt.orig 2021-08-03 13:32:13 UTC +--- CMakeLists.txt.orig 2024-06-13 17:20:31 UTC +++ CMakeLists.txt -@@ -147,7 +147,7 @@ endif() - # NOTE: do it early so that we can set up - # compiler flags based on the LLVM version - # if needed. +@@ -156,7 +156,7 @@ include(GNUInstallDirs) + # + # https://github.com/llvm/llvm-project/issues/58558 + include(GNUInstallDirs) -find_package(LLVM REQUIRED CONFIG) +find_package(LLVM ${FREEBSD_LLVM_VERSION} REQUIRED CONFIG) - if(${LLVM_VERSION_MAJOR} LESS 10) - message(FATAL_ERROR "LLVM >= 10 is required.") + if(${LLVM_VERSION_MAJOR} LESS 13 OR ${LLVM_VERSION_MAJOR} GREATER 18) + message(FATAL_ERROR "LLVM >= 13 and <= 18 is required.") diff --git a/math/heyoka/pkg-plist b/math/heyoka/pkg-plist index f0d22d31e566..bdc5e0fb5b17 100644 --- a/math/heyoka/pkg-plist +++ b/math/heyoka/pkg-plist @@ -1,28 +1,65 @@ include/heyoka/callable.hpp +include/heyoka/callback/angle_reducer.hpp +include/heyoka/callbacks.hpp include/heyoka/config.hpp +include/heyoka/continuous_output.hpp include/heyoka/detail/binomial.hpp include/heyoka/detail/cm_utils.hpp include/heyoka/detail/dfloat.hpp include/heyoka/detail/div.hpp +include/heyoka/detail/dtens_impl.hpp +include/heyoka/detail/ed_data.hpp +include/heyoka/detail/elp2000/elp2000_10_15.hpp +include/heyoka/detail/elp2000/elp2000_16_21.hpp +include/heyoka/detail/elp2000/elp2000_1_3.hpp +include/heyoka/detail/elp2000/elp2000_22_36.hpp +include/heyoka/detail/elp2000/elp2000_4_9.hpp include/heyoka/detail/event_detection.hpp -include/heyoka/detail/fmt_compat.hpp +include/heyoka/detail/fast_unordered.hpp include/heyoka/detail/func_cache.hpp include/heyoka/detail/fwd_decl.hpp +include/heyoka/detail/i_data.hpp include/heyoka/detail/igor.hpp +include/heyoka/detail/llvm_func_create.hpp include/heyoka/detail/llvm_fwd.hpp include/heyoka/detail/llvm_helpers.hpp include/heyoka/detail/llvm_vector_type.hpp include/heyoka/detail/logging_impl.hpp +include/heyoka/detail/mdspan/__p0009_bits/compressed_pair.hpp +include/heyoka/detail/mdspan/__p0009_bits/config.hpp +include/heyoka/detail/mdspan/__p0009_bits/default_accessor.hpp +include/heyoka/detail/mdspan/__p0009_bits/dynamic_extent.hpp +include/heyoka/detail/mdspan/__p0009_bits/extents.hpp +include/heyoka/detail/mdspan/__p0009_bits/full_extent_t.hpp +include/heyoka/detail/mdspan/__p0009_bits/layout_left.hpp +include/heyoka/detail/mdspan/__p0009_bits/layout_right.hpp +include/heyoka/detail/mdspan/__p0009_bits/layout_stride.hpp +include/heyoka/detail/mdspan/__p0009_bits/macros.hpp +include/heyoka/detail/mdspan/__p0009_bits/mdspan.hpp +include/heyoka/detail/mdspan/__p0009_bits/no_unique_address.hpp +include/heyoka/detail/mdspan/__p0009_bits/trait_backports.hpp +include/heyoka/detail/mdspan/__p0009_bits/type_list.hpp +include/heyoka/detail/mdspan/__p1684_bits/mdarray.hpp +include/heyoka/detail/mdspan/__p2630_bits/strided_slice.hpp +include/heyoka/detail/mdspan/__p2630_bits/submdspan.hpp +include/heyoka/detail/mdspan/__p2630_bits/submdspan_extents.hpp +include/heyoka/detail/mdspan/__p2630_bits/submdspan_mapping.hpp +include/heyoka/detail/mdspan/mdarray +include/heyoka/detail/mdspan/mdspan include/heyoka/detail/num_identity.hpp include/heyoka/detail/num_utils.hpp +include/heyoka/detail/optional_s11n.hpp include/heyoka/detail/real_helpers.hpp include/heyoka/detail/simple_timer.hpp -include/heyoka/detail/sleef.hpp include/heyoka/detail/string_conv.hpp include/heyoka/detail/sub.hpp include/heyoka/detail/sum_sq.hpp +include/heyoka/detail/tanuki.hpp +include/heyoka/detail/tanuki_impl.hpp include/heyoka/detail/taylor_common.hpp include/heyoka/detail/type_traits.hpp +include/heyoka/detail/variant_s11n.hpp +include/heyoka/detail/vector_math.hpp include/heyoka/detail/visibility.hpp include/heyoka/detail/vsop2013/vsop2013_1.hpp include/heyoka/detail/vsop2013/vsop2013_2.hpp @@ -34,12 +71,15 @@ include/heyoka/detail/vsop2013/vsop2013_7.hpp include/heyoka/detail/vsop2013/vsop2013_8.hpp include/heyoka/detail/vsop2013/vsop2013_9.hpp include/heyoka/ensemble_propagate.hpp +include/heyoka/events.hpp include/heyoka/exceptions.hpp include/heyoka/expression.hpp include/heyoka/func.hpp include/heyoka/gp.hpp +include/heyoka/hamiltonian.hpp include/heyoka/heyoka.hpp include/heyoka/kw.hpp +include/heyoka/lagrangian.hpp include/heyoka/llvm_state.hpp include/heyoka/logging.hpp include/heyoka/math.hpp @@ -53,12 +93,16 @@ include/heyoka/math/atanh.hpp include/heyoka/math/constants.hpp include/heyoka/math/cos.hpp include/heyoka/math/cosh.hpp +include/heyoka/math/dfun.hpp include/heyoka/math/erf.hpp include/heyoka/math/exp.hpp +include/heyoka/math/kepDE.hpp include/heyoka/math/kepE.hpp +include/heyoka/math/kepF.hpp include/heyoka/math/log.hpp include/heyoka/math/pow.hpp include/heyoka/math/prod.hpp +include/heyoka/math/relu.hpp include/heyoka/math/sigmoid.hpp include/heyoka/math/sin.hpp include/heyoka/math/sinh.hpp @@ -67,10 +111,16 @@ include/heyoka/math/sum.hpp include/heyoka/math/tan.hpp include/heyoka/math/tanh.hpp include/heyoka/math/time.hpp -include/heyoka/math/tpoly.hpp +include/heyoka/mdspan.hpp +include/heyoka/model/cart2geo.hpp +include/heyoka/model/cr3bp.hpp +include/heyoka/model/elp2000.hpp +include/heyoka/model/ffnn.hpp include/heyoka/model/fixed_centres.hpp +include/heyoka/model/jb08_tn.hpp include/heyoka/model/mascon.hpp include/heyoka/model/nbody.hpp +include/heyoka/model/nrlmsise00_tn.hpp include/heyoka/model/pendulum.hpp include/heyoka/model/rotating.hpp include/heyoka/model/vsop2013.hpp @@ -81,11 +131,12 @@ include/heyoka/s11n.hpp include/heyoka/splitmix64.hpp include/heyoka/step_callback.hpp include/heyoka/taylor.hpp +include/heyoka/var_ode_sys.hpp include/heyoka/variable.hpp lib/cmake/heyoka/heyoka-config-version.cmake lib/cmake/heyoka/heyoka-config.cmake lib/cmake/heyoka/heyoka_export-%%CMAKE_BUILD_TYPE%%.cmake lib/cmake/heyoka/heyoka_export.cmake lib/libheyoka.so -lib/libheyoka.so.22 -lib/libheyoka.so.22.0 +lib/libheyoka.so.28 +lib/libheyoka.so.28.0 diff --git a/math/py-heyoka/Makefile b/math/py-heyoka/Makefile index df19d5ca939e..b4ed9f9191fc 100644 --- a/math/py-heyoka/Makefile +++ b/math/py-heyoka/Makefile @@ -1,7 +1,6 @@ PORTNAME= heyoka DISTVERSIONPREFIX= v -DISTVERSION= 1.0.0 -PORTREVISION= 7 +DISTVERSION= 5.0.0 CATEGORIES= math PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -29,7 +28,7 @@ RUN_DEPENDS= ${PYNUMPY} \ ${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 +USES= cmake compiler:c++17-lang llvm:min=16,build,run python USE_PYTHON= flavors USE_GITHUB= yes diff --git a/math/py-heyoka/distinfo b/math/py-heyoka/distinfo index c7a0a1c8b49e..4213bc0d8b9b 100644 --- a/math/py-heyoka/distinfo +++ b/math/py-heyoka/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1691742354 -SHA256 (bluescarni-heyoka.py-v1.0.0_GH0.tar.gz) = 96da8b3d345e3b9a905fc4c5a7dbf21df5d64c6d8565ce9ddffb720b92fa3e46 -SIZE (bluescarni-heyoka.py-v1.0.0_GH0.tar.gz) = 100062902 +TIMESTAMP = 1718389415 +SHA256 (bluescarni-heyoka.py-v5.0.0_GH0.tar.gz) = b0759366eba2b733958a3d22c92ebf79e76bf663366e1a3220ab08b4ebf98114 +SIZE (bluescarni-heyoka.py-v5.0.0_GH0.tar.gz) = 149321377 diff --git a/math/py-heyoka/files/example-restricted-three-body-problem.py b/math/py-heyoka/files/example-restricted-three-body-problem.py index 03500f8d4b18..57643922ba5f 100644 --- a/math/py-heyoka/files/example-restricted-three-body-problem.py +++ b/math/py-heyoka/files/example-restricted-three-body-problem.py @@ -1,9 +1,12 @@ +# Create the symbolic variables. +# from https://bluescarni.github.io/heyoka.py/notebooks/The%20restricted%20three-body%20problem.html + + + 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. @@ -20,7 +23,7 @@ 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), @@ -32,22 +35,72 @@ ta = hy.taylor_adaptive( 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) + +fig = plt.figure(figsize = (12, 6)) plt.subplot(1,2,1) -plt.plot(out[4][:, 0], out[4][:, 1]) +plt.plot(out[5][:, 0], out[5][:, 1]) plt.xlabel("x") plt.ylabel("y") plt.subplot(1,2,2) -plt.plot(out[4][:, 0], out[4][:, 2]) +plt.plot(out[5][:, 0], out[5][:, 2]) plt.xlabel("x") plt.ylabel("z"); +plt.show() + + +def ham(s): + x, y, z, px, py, pz = s + + rps = ((x - mu)**2 + y**2 + z**2)**0.5 + rpj = ((x - mu + 1.)**2 + y**2 + z**2)**0.5 + + return .5 * (px**2 + py**2 + pz**2) + y*px - x*py - (1-mu)/rps - mu/rpj + + +fig = plt.figure(figsize = (8, 5)) + +plt.plot(t_grid, abs((ham(out[5][0]) - ham(out[5].transpose())) / ham(out[5][0])), 'x') +plt.xlabel('Time') +plt.ylabel('Relative error'); +plt.show() + +ta.time = 0 +ta.state[:] = [-0.80, 0.0, 0.0, 0.0, -0.6276410653920693, 0.0] + +t_grid = np.linspace(0, 2000, 100000) + +out = ta.propagate_grid(t_grid) + +fig = plt.figure(figsize = (12, 6)) + +ax = plt.subplot(1,1,1) + +plt.axis('equal') +plt.plot(out[5][:, 0], out[5][:, 1]) + +cc0 = plt.Circle((0.01 , 0.), 0.012, ec='black', fc='orange', zorder=2) +cc1 = plt.Circle((-0.99 , 0.), 0.012, ec='black', fc='orange', zorder=2) + +ax.add_artist(cc0) +ax.add_artist(cc1) + +plt.xlabel("x") +plt.ylabel("y"); + + +plt.show() + +fig = plt.figure(figsize = (12, 6)) -plt.show(); +plt.semilogy(t_grid, abs((ham(out[5][0]) - ham(out[5].transpose())))) +plt.ylim(1e-16, 1e-11) +plt.xlabel('Time') +plt.ylabel('Relative error'); +plt.show() diff --git a/math/py-heyoka/pkg-plist b/math/py-heyoka/pkg-plist index f69f4819ed30..befd6b006602 100644 --- a/math/py-heyoka/pkg-plist +++ b/math/py-heyoka/pkg-plist @@ -2,16 +2,25 @@ %%PYTHON_SITELIBDIR%%/heyoka/_ensemble_impl.py %%PYTHON_SITELIBDIR%%/heyoka/_sympy_utils.py %%PYTHON_SITELIBDIR%%/heyoka/_test_batch_integrator.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_celmec.py %%PYTHON_SITELIBDIR%%/heyoka/_test_cfunc.py %%PYTHON_SITELIBDIR%%/heyoka/_test_dtens.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_elp2000.py %%PYTHON_SITELIBDIR%%/heyoka/_test_ensemble.py %%PYTHON_SITELIBDIR%%/heyoka/_test_expression.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_lagham.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_memcache.py %%PYTHON_SITELIBDIR%%/heyoka/_test_model.py %%PYTHON_SITELIBDIR%%/heyoka/_test_mp.py %%PYTHON_SITELIBDIR%%/heyoka/_test_real.py %%PYTHON_SITELIBDIR%%/heyoka/_test_real128.py %%PYTHON_SITELIBDIR%%/heyoka/_test_scalar_integrator.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_sympy.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_var_integrator.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_var_ode_sys.py +%%PYTHON_SITELIBDIR%%/heyoka/_test_vsop2013.py %%PYTHON_SITELIBDIR%%/heyoka/_version.py +%%PYTHON_SITELIBDIR%%/heyoka/callback/__init__.py %%PYTHON_SITELIBDIR%%/heyoka/core%%PYTHON_EXT_SUFFIX%%.so %%PYTHON_SITELIBDIR%%/heyoka/model/__init__.py %%PYTHON_SITELIBDIR%%/heyoka/test.py