From 1a0cd08b37bd225804fb1914f0d477a952307af5960e1dca4f0fa862b0a7acd0 Mon Sep 17 00:00:00 2001 From: Jean-Noel Grad Date: Wed, 11 Sep 2024 18:38:18 +0000 Subject: [PATCH] - Add numpy.patch to improve NumPy 2.0 compatibility (gh#espressomd/espresso#4992) - Add cmake.patch to address CMake warnings (gh#espressomd/espresso#4992) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python3-espressomd?expand=0&rev=55 --- .gitattributes | 23 ++ .gitignore | 1 + cmake.patch | 33 ++ espresso-4.2.2.tar.gz | 3 + numpy.patch | 93 +++++ python3-espressomd.changes | 756 +++++++++++++++++++++++++++++++++++++ python3-espressomd.spec | 111 ++++++ 7 files changed, 1020 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 cmake.patch create mode 100644 espresso-4.2.2.tar.gz create mode 100644 numpy.patch create mode 100644 python3-espressomd.changes create mode 100644 python3-espressomd.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/cmake.patch b/cmake.patch new file mode 100644 index 0000000..0ec2290 --- /dev/null +++ b/cmake.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ac0432c34..bff6f289b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -38,7 +38,13 @@ if(POLICY CMP0148) + cmake_policy(SET CMP0148 OLD) + endif() ++if(POLICY CMP0167) ++ # use BoostConfig.cmake shipped with Boost 1.70+ instead of the one in CMake ++ cmake_policy(SET CMP0167 NEW) ++endif() + # CMake modules/macros are in a subdirectory to keep this file cleaner + set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + ++project(ESPResSo) ++ + # C++ standard + enable_language(CXX) +@@ -49,5 +55,4 @@ set(CMAKE_CXX_EXTENSIONS OFF) + include(FeatureSummary) + include(GNUInstallDirs) +-project(ESPResSo) + include(option_enum) + if(POLICY CMP0074) +@@ -268,7 +273,5 @@ if(WITH_STOKESIAN_DYNAMICS) + set(STOKESIAN_DYNAMICS 1) + if(NOT stokesian_dynamics_POPULATED) +- FetchContent_Populate(stokesian_dynamics) +- add_subdirectory(${stokesian_dynamics_SOURCE_DIR} +- ${stokesian_dynamics_BINARY_DIR}) ++ FetchContent_MakeAvailable(stokesian_dynamics) + endif() + endif(WITH_STOKESIAN_DYNAMICS) diff --git a/espresso-4.2.2.tar.gz b/espresso-4.2.2.tar.gz new file mode 100644 index 0000000..85ce5f4 --- /dev/null +++ b/espresso-4.2.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bc02f91632b0030f1203759768bd718bd8a0005f72696980b12331b4bfa0d76 +size 13463564 diff --git a/numpy.patch b/numpy.patch new file mode 100644 index 0000000..36a761e --- /dev/null +++ b/numpy.patch @@ -0,0 +1,93 @@ +diff --git a/testsuite/python/brownian_dynamics.py b/testsuite/python/brownian_dynamics.py +index 223340e15..f99d94018 100644 +--- a/testsuite/python/brownian_dynamics.py ++++ b/testsuite/python/brownian_dynamics.py +@@ -161,5 +161,5 @@ class BrownianThermostat(ut.TestCase): + system.integrator.run(3) + np.testing.assert_allclose( +- part.omega_lab, [0, 0, 1.3 / 1.5], atol=1e-14) ++ np.copy(part.omega_lab), [0, 0, 1.3 / 1.5], atol=1e-14) + + # noise only +@@ -168,5 +168,5 @@ class BrownianThermostat(ut.TestCase): + kT=1, gamma=1, gamma_rotation=1.5, act_on_virtual=False, seed=41) + system.integrator.run(3) +- self.assertGreater(np.linalg.norm(part.omega_lab), 0.) ++ self.assertGreater(np.linalg.norm(np.copy(part.omega_lab)), 0.) + + +diff --git a/testsuite/python/lees_edwards.py b/testsuite/python/lees_edwards.py +index 002340bd2..4539f1af5 100644 +--- a/testsuite/python/lees_edwards.py ++++ b/testsuite/python/lees_edwards.py +@@ -397,5 +397,5 @@ class LeesEdwards(ut.TestCase): + a=k_non_bonded / 2, n=-2, cutoff=r_cut) + system.integrator.run(0) +- r_12 = system.distance_vec(p1, p2) ++ r_12 = np.copy(system.distance_vec(p1, p2)) + + np.testing.assert_allclose( +@@ -405,5 +405,5 @@ class LeesEdwards(ut.TestCase): + np.testing.assert_allclose( + np.copy(system.analysis.pressure_tensor()["non_bonded"]), +- np.outer(r_12, p2.f) / system.volume()) ++ np.outer(r_12, np.copy(p2.f)) / system.volume()) + + np.testing.assert_almost_equal( +@@ -438,5 +438,5 @@ class LeesEdwards(ut.TestCase): + shear_direction="x", shear_plane_normal="y", protocol=lin_protocol) + # Test position and velocity of VS with Le shift +- old_p3_pos = p3.pos ++ old_p3_pos = np.copy(p3.pos) + expected_p3_pos = old_p3_pos - \ + np.array((get_lin_pos_offset(system.time, **params_lin), 0, 0)) +diff --git a/testsuite/python/test_checkpoint.py b/testsuite/python/test_checkpoint.py +index f295cec44..4b30aaefb 100644 +--- a/testsuite/python/test_checkpoint.py ++++ b/testsuite/python/test_checkpoint.py +@@ -217,12 +217,12 @@ class CheckpointTest(ut.TestCase): + np.testing.assert_allclose(np.copy(p3.ext_torque), [0.3, 0.5, 0.7]) + if espressomd.has_features('ROTATIONAL_INERTIA'): +- np.testing.assert_allclose(p3.rinertia, [2., 3., 4.]) ++ np.testing.assert_allclose(np.copy(p3.rinertia), [2., 3., 4.]) + if espressomd.has_features('THERMOSTAT_PER_PARTICLE'): + gamma = 2. + if espressomd.has_features('PARTICLE_ANISOTROPY'): + gamma = np.array([2., 3., 4.]) +- np.testing.assert_allclose(p4.gamma, gamma) ++ np.testing.assert_allclose(np.copy(p4.gamma), gamma) + if espressomd.has_features('ROTATION'): +- np.testing.assert_allclose(p3.gamma_rot, 2. * gamma) ++ np.testing.assert_allclose(np.copy(p3.gamma_rot), 2. * gamma) + if espressomd.has_features('ENGINE'): + self.assertEqual(p3.swimming, {"f_swim": 0.03, "mode": "N/A", +@@ -237,9 +237,11 @@ class CheckpointTest(ut.TestCase): + q_ind = ([1, 2, 3, 0],) # convert from scalar-first to scalar-last + vs_id, vs_dist, vs_quat = p2.vs_relative +- d = p2.pos - p1.pos ++ d = np.copy(p2.pos - p1.pos) ++ vs_quat = np.copy(vs_quat) ++ p_quat = np.copy(p1.quat) + theta = np.arccos(d[2] / np.linalg.norm(d)) + assert abs(theta - 3. * np.pi / 4.) < 1e-8 + q = np.array([0., 0., np.sin(theta / 2.), -np.cos(theta / 2.)]) +- r = R.from_quat(p1.quat[q_ind]) * R.from_quat(vs_quat[q_ind]) ++ r = R.from_quat(p_quat[q_ind]) * R.from_quat(vs_quat[q_ind]) + self.assertEqual(vs_id, p1.id) + np.testing.assert_allclose(vs_dist, np.sqrt(2.)) +@@ -500,5 +502,5 @@ class CheckpointTest(ut.TestCase): + self.assertEqual(p_virt.vs_relative[1], np.sqrt(2.)) + np.testing.assert_allclose( +- p_real.vs_relative[2], [1., 0., 0., 0.], atol=1e-10) ++ np.copy(p_real.vs_relative[2]), [1., 0., 0., 0.], atol=1e-10) + + def test_mean_variance_calculator(self): +@@ -785,6 +787,6 @@ class CheckpointTest(ut.TestCase): + p2 = system.part.add(pos=[system.box_l[0] - 1., 1.6, 0.], type=6) + system.integrator.run(0, recalc_forces=True) +- np.testing.assert_allclose(p1.f, [0., 1e8, 0.], atol=1e-3) +- np.testing.assert_allclose(p2.f, [0., 1e8, 0.], atol=1e-3) ++ np.testing.assert_allclose(np.copy(p1.f), [0., 1e8, 0.], atol=1e-3) ++ np.testing.assert_allclose(np.copy(p2.f), [0., 1e8, 0.], atol=1e-3) + p1.remove() + p2.remove() diff --git a/python3-espressomd.changes b/python3-espressomd.changes new file mode 100644 index 0000000..7771961 --- /dev/null +++ b/python3-espressomd.changes @@ -0,0 +1,756 @@ +------------------------------------------------------------------- +Wed Sep 11 18:36:23 UTC 2024 - Jean-Noel Grad + +- Add numpy.patch to improve NumPy 2.0 compatibility (gh#espressomd/espresso#4992) +- Add cmake.patch to address CMake warnings (gh#espressomd/espresso#4992) + +------------------------------------------------------------------- +Wed May 22 16:08:22 UTC 2024 - Jean-Noel Grad + +- Exclude 32bit architectures + +------------------------------------------------------------------- +Wed May 22 14:36:04 UTC 2024 - Jean-Noel Grad + +- Update to 4.2.2: + This release provides a number of corrections for the ESPResSo 4.2 line. + We recommend that this release be used for all production simulations. + The interface has not been changed between ESPResSo 4.2.1 and 4.2.2. + However, some bugs were discovered which can affect simulation results. + Please find the list of changes below. The numbers in brackets refer to + ticket numbers on https://github.com/espressomd/espresso + + Improved documentation + ---------------------- + * Installation instructions now mention the FFTW3 MPI dependency + of long-range solvers and provide recommended version numbers + for Jupyter Notebook dependencies (#4790). + * Installation instructions now mention Python environments (#4922). + * Observables not properly document return values, array shapes, + and use a more consistent mathematical notation (#4898). + + Bug fixes + --------- + * Fatal runtime errors due to MPI global variables lifetime + were addressed (#4858). Older ESPResSo releases built with + Boost 1.84 or later might randomly crash when exiting + the Python interpreter. + * Virtual sites no longer contribute to the kinetic energy + of the system (#4839). The regression was introduced + in April 2021 and affected the 4.2 branch of ESPResSo. + * Inertialess tracers are now integrated along the z-axis (#4714). + The regression was introduced in February 2022 and affected + the 4.2 branch of ESPResSo. + * Inertialess tracers now throw an exception when attempting to use + LB GPU with 2 or more MPI ranks (#4714). Before, tracers on non-root + MPI ranks would be silently ignored by the CUDA kernels, + and would have a constant velocity, either 0 if the particle never + visited the fluid domain on the root rank, or the last known velocity + if the particle was once on the root rank. This bug affected all + ESPResSo versions. + * Particles close to the faces of the simulation box are now properly + coupled to the LB fluid (#4827). Due to numerical instability, it was + previously possible for particles to be outside the box simulation by + a tiny amount and skip LB particle coupling. The probability of this + bug occurring was low, but could be enhanced in simulations that + purposefully placed particle near the faces of the simulation box: + polymers sheared by Lees-Edwards boundary conditions, raspberry + particles (colloids, bacteria, etc.) when crossing a periodic + boundary, or cell membranes placed close to a periodic boundary. + * Resizing the box now throws a runtime error if there are constraints + present (#4778), since constraint preconditions might no longer be + fulfilled. For example, a wall constraint might end up outside the + box boundaries when the box shrinks. + * Resizing the box via `system.box_l = new_box_l` now throws + a runtime error if there are particles present, because particle + position folding cannot be guaranteed to be correct (#4901); + use `system.change_volume_and_rescale_particles()` instead, + which properly rescales particle positions. + * The velocity Verlet NpT propagator doesn't apply friction and noise + on angular velocities. ESPResSo now throws an error when NpT + encounters a rotating particle (#4843). This bug affected all + ESPResSo versions. + * The Brownian thermostat can no longer be configured with + `act_on_virtual=True` due to an unresolved bug (#4295) + that will be addressed in the next minor release. + * Restrictions on the number of MPI ranks have been lifted from the + checkpointing mechanism (#4724). It is now possible to use + checkpointing again in MPI-parallel simulations when the system + contains LB boundaries or `Union` shape-based constraints. + These restrictions had been introduced in 4.2.0 for technical + reasons that have since been resolved. + * When passing an invalid value to a function that expects an input + parameter of type `list` of size 3, an exception is now raised (#4911). + Previously, some functions would print an error message and continue + their execution with uninitialized data. + * The per-`type` and per-`mol_id` contributions from + `system.analysis.energy()`, `system.analysis.pressure()` + and `system.analysis.pressure_tensor()` now return the correct + values (#4788). Older version of ESPResSo were confusing the + particle `mol_id` with the particle `type`. The total pressure + was unreliable when `mol_id` properties were set to non-zero values. + * The OpenGL visualizer now extracts the correct non-bonded potential + parameter `sigma` when feature `WCA` is compiled in but `LENNARD_JONES` + isn't (#4720). The regression was introduced in 4.2.1. + * Method `OifCell.elastic_forces()` no longer throws a `TypeError` (#4813). + * Benchmark scripts were adjusted to support large particle numbers (#4753). + + Under the hood changes + ---------------------- + * Several Clang 16 and GCC 13 compiler diagnostics have been addressed + (#4715). + * A non-critical GCC C++20 deprecation warning in Cython-generated code + was disabled (#4725). + * Several deprecation warnings emitted by CMake 3.27 have been silenced + (#4792). + * Add support for setuptools version 67.3.0 and above (#4709). + * Add support for Python 3.12 in testsuites run by CTest (#4852). + * Python requirements have been updated (#4924). + * CI pipeline URLs have been fixed (#4736). + +- Removed upstreamed patches: + - array-bounds.patch + - mpi.patch + - setuptools.patch + - tracers.patch +------------------------------------------------------------------- +Fri Feb 2 16:23:08 UTC 2024 - Jean-Noel Grad + +- Fix undefined behavior due to improper handling of MPI static globals +- Add mpi.patch to remove MPI globals (gh#espressomd/espresso#4858) + +------------------------------------------------------------------- +Mon Oct 2 12:11:53 UTC 2023 - Ondřej Súkup + +- cleanup spec +- skip mpiio test + +------------------------------------------------------------------- +Wed Apr 26 18:06:17 UTC 2023 - Jean-Noel Grad + +- Fix LB inertialess tracers bug, fix compiler warnings +- Add tracers.patch to fix LB inertialess tracers (gh#espressomd/espresso#4714) +- Add array-bounds.patch to fix compiler warnings (gh#espressomd/espresso#4715) + +------------------------------------------------------------------- +Tue Apr 18 10:43:03 UTC 2023 - Jean-Noel Grad + +- Update to 4.2.1: + This release provides a number of corrections for the ESPResSo + 4.2 line. We recommend that this release be used for all + production simulations. The interface has not been changed + between ESPResSo 4.2.0 and 4.2.1. However, some bugs were + discovered which can affect simulation results. No further bug + fix releases will be provided for the 4.2 line. + + Added functionality + ------------------- + + * P3M and DipolarP3M can now be used with the hybrid + decomposition cell system with 1 MPI rank (#4678). + * Lattice-Boltzmann can now be used with the N-square and + hybrid decomposition cell systems with 2 or more MPI ranks + (#4676). + + Changed requirements + -------------------- + * The nbconvert version requirement was bumped to 6.5.1 to + patch an XSS vulnerability (#4658). + + Improved documentation + ---------------------- + * The user guide now documents how to improve the + reproducibility of simulations that have checkpointing + enabled (#4677). + * The user guide now reflects that the lattice-Boltzmann + profile observables can be used in parallel (#4583). + * The active matter tutorial now uses an adequate engine + dipole for the swimmer particle (#4585). + * The error analysis tutorials have been improved (#4597). + * The tutorials can now be used in VS Code Jupyter (both the + desktop and web versions) and the mathematical formula are + now correctly displayed (#4531). + * All ESPResSo-specific CMake options are now documented in + the installation chapter of the user guide (#4608). + * Python package installation instructions no longer feature + package version numbers; instead, `requirements.txt` is used + as a constraint file (#4638). + * MMM1D algorithms now properly document their parameter names + (#4677). + * Reaction methods now cite the relevant literature (#4681). + * Caveats for chain analysis methods are now documented + (#4698). + * Minor formatting issues in Sphinx and typos in Python + docstrings were addressed (#4608). + + Interface changes + ----------------- + * A new boolean property + `System.virtual_sites.override_cutoff_check` was introduced + to allow disabling the cutoff range checks from virtual + sites (#4623). + + Removed functionality + --------------------- + * The unused and untested `Analysis.v_kappa()` method was + removed (#4534). + + Improved testing + ---------------- + * Improve unit testing of core functionality: P3M, MMM1D, OIF, + virtual sites, script interface factory (#4631). + + Bug fixes + --------- + * The checkpointing mechanism now properly restores the + particle quaternion and all derived quantities (#4637). + Release 4.2.0 introduced a regression that caused checkpoint + files to overwrite the particle quaternion/director by a + unit vector pointing along the z direction, when the + `DIPOLES` feature was part of the myconfig file. This lead + to incorrect trajectories when reloading a simulation from + a checkpoint file, if the particle director played a role in + the simulation (ex: relative virtual sites, Gay-Berne + potential, anisotropic particles, active particles, etc.). + In addition, the angular velocity in body frame was restored + with the wrong orientation. Since the default myconfig file + contains `DIPOLES`, most ESPResSo users were affected. + * The checkpointing mechanism now properly restores LB + boundaries (#4649). Release 4.2.0 introduced a regression + where reloading LB populations would accidentally reset LB + boundary flags. + * The checkpointing mechanism now restores P3M and DipolarP3M + solvers without triggering a re-tune (#4677). In previous + releases, the checkpointing code would automatically re-tune + these algorithms during a reload, causing tiny deviations in + the forces that were problematic for trajectory + reproducibility. + * Brownian dynamics now integrates the rotational dynamics of + rotatable particles whose position is fixed in 3D space + (#4548). + * Langevin dynamics now properly integrates particles with + anisotropic friction (#4683, #4690). + * A regression that caused virtual sites to incorrectly count + their image box when crossing a periodic boundary has been + fixed (#4564, #4707). + * Particles can no longer be created or updated with a + negative mass or a null mass (#4679). + * Particles created without a user-specified type can now + participate in reactions (#4589). + * When a Monte Carlo displacement move is rejected, the + original particle velocity is now restored (#4589). + * Reaction methods now raise an exception when accidentally + calling `method.reaction(steps=20)` instead of + `method.reaction(reaction_steps=20)` (#4666). Since 4.2.0 + the `steps` argument was ignored, in which case the default + value `reaction_steps=1` would used by the core. Note that + in the next minor release of ESPResSo, the `reaction_steps` + argument will be renamed to `steps`. + * Reaction methods now rebuild the list of free particle ids + every time `WidomInsertion::calculate_particle_insertion_potential_energy()` + and `ReactionAlgorithm::do_reaction()` are called (#4609). + This was needed to allow multiple concurrent reactions, as + well as avoiding subtle bugs when both the user and a + reaction method tried to create a new particle with an id + that used to belong to a deleted particle. + * When all particles are cleared, the reaction methods type + map is now also cleared (#4645). In the past, it was + possible to attempt a reaction on particles that had just + been cleared from the system, which would raise an + exception. This bug affected all ESPResSo releases since + 4.0. + * The `System.part.pairs()` method now returns the correct + particle pairs when particle ids aren't both contiguous and + starting from 0 (#4628). The regression was introduced in + release 4.2.0. + * The auto-exclusions feature no longer adds spurious + exclusions to particle ids in the range [1, distance] + (#4654). This bug would potentially break the physics of the + system and potentially raise an exception in a system with + non-contiguous particle ids. This regression was introduced + in release 2.2.0b. + * The structure factor analysis code no longer double-counts + particles when the same particle type is provided twice + (#4534). + * The minimal distance distribution analysis code no longer + has an arbitrary cutoff distance when the simulation box is + aperiodic (open boundaries); this would cause spurious + artifacts to appear in the histogram at + `r = np.sum(system.box_l)` when particles were further apart + than this arbitrary distance (#4534). + * The cluster analysis functions are now disabled for systems + with Lees-Edwards periodic boundaries, since the cluster + analysis position wrapping code doesn't properly handle the + shear offset (#4698). + * The chain analysis methods now raise an error when the + number of chains or beads per chain is invalid (#4708). + * The observable tests now longer rely on deprecated numpy + options that were removed in numpy 1.24 (#4635). + * The visualizer `*_arrows_type_materials` options now have an + effect on arrow materials (#4686). + * The visualizer exception handling mechanism has been made + less brittle (#4686). + * The visualizer no longer raises exception when the optional + dependency `freeglut` isn't installed (#4691). + * The visualizer can randomly freeze when using collision + detection or bond breakage; a temporary workaround has been + introduced that fixes the issue for simulations that use + only 1 MPI rank (#4686). + * The `__dir__()` method of script interface objects no longer + raises an exception (#4674). + * Compilation and testsuite issues involving missing or + incorrect feature guards were addressed (#4562, #4648). + * The build system no longer silently ignores invalid external + feature definitions in `myconfig.hpp` and CMake files + (#4608). This issue would only affect feature developers, + as well as users of very old compilers, and would lead to + ESPResSo builds missing features. + + Under the hood changes + ---------------------- + * The Clang 14 and AppleClang 14 compilers are now supported + (#4601). + * Several Clang 14 compiler diagnostics have been addressed + (#4606). + * Boost 1.81 and later versions are now supported (#4655). + * Compiler errors on non-x86 architectures were addressed + (#4538). + * Test tolerances were adjusted for non-x86 architectures + (#4708). + * The pypresso script now prints a warning when running with + MCA binding policy "numa" on NUMA architectures that are not + supported in singleton mode by Open MPI 4.x (#4607). + * The config file generator has been rewritten to properly + handle external features and compiler errors (#4608). + * Security hardening for GitHub Workflows (#4577, #4638) and + Codecov (#4600). + * Deployment of the user guide to GitHub Pages now relies on + cloud providers to fetch JavaScript dependencies (#4656). +- Removed upstreamed patches: + - fix-broken-fft-check.patch + - boost-1.74.patch + - numpy-1.24.patch + - rpath.patch + - missing_size_t.patch + - hdf5.patch + - setuptools.patch + +------------------------------------------------------------------- +Thu Jan 26 19:46:39 UTC 2023 - Jean-Noel Grad + +- added numpy-1.24.patch to fix the testsuite (see + gh#espressomd/espresso#4635) + +------------------------------------------------------------------- +Thu Sep 15 07:47:38 UTC 2022 - Guillaume GARDET + +- Add upstream patch to fix test on aarch64: + * fix-broken-fft-check.patch + +------------------------------------------------------------------- +Tue Jul 19 19:40:59 UTC 2022 - Matej Cepl + +- Update to 4.2.0: + This is a feature release, i.e., new functionality is added + to ESPResSo. New thermostats, cell systems and boundary + conditions have been introduced to simulate systems with + Stokesian Dynamics, Brownian Dynamics, strongly inhomogeneous + particle sizes or translation-invariant shear flow. The + interface underwent (non-silent) changes, therefore scripts + will have to be slightly adapted. Most notably, particle + access by id and particle slices have a new syntax, and + electrostatic/magnetostatic layer correction and reaction + methods have a different setup. All errors are also now + emitted as Python exceptions and are recoverable with minimal + effort. An additional focus of this release is the + simplification of both the C++ core and the Python script + interface to facilitate future extensions of ESPResSo. The + testing of ESPResSo's functionality has been extended + considerably. We recommend that this release be used for all + production simulations. No further bug fix releases will be + provided for the 4.1 line, and not all fixes are present in + ESPResSo 4.1.4. + + Added functionality + ------------------- + + * `P3MGPU` now supports energy and pressure calculation via + the CPU kernels (#4506). + * `ELC` now works with `P3MGPU` (#4506). + * The LB grid now supports slicing operations (#4195) and LB + slices are equality comparable (#4268). + * Lees-Edwards boundary conditions can be used for + particle-based simulations (#4457). Lattice-Boltzmann + support will be added in the 4.3.0 release. + * The non-bonded energy of a single particle can be calculated + (#4401). + * The list of close neighbors of a single particle can be + extracted (#4401). + * Brownian Dynamics simulations can be carried out with the + newly added Brownian integrator and Brownian thermostat + (#1842). + * Stokesian Dynamics simulations can be carried out with the + newly added Stokesian integrator and Stokesian thermostat + (#3790, #3987). + * Bonded interactions can now be automatically broken when the + bond length exceeds a critical value (#4456). This feature + can be combined with collision detection to model reversible + bonds (#4464). + * A new cell system `HybridDecomposition` was introduced to + speed up simulations with inhomogeneous particle interaction + ranges (#4373). + * Shapes can be merged into meta-shapes (#3493, #3538). + * The `HollowConicalFrustum` can now be sliced open, made + thick and rotated to model quarter pipes in any orientation + (#4179). The main application is in the construction of + complex microchannel geometries via `LBBoundaries`. + * A parametric weight function was added to the DPD + interaction (#3570). + * H5MD output files now support a unit system (#3751). + * H5MD output files now support custom specifications to + control which particle and box properties to write to disk + (#4480). + * The `H5md` class is now checkpointable and usable in an + interactive Python session (#3751). + * MDAnalysis integration now provides bond information + (#3801). +- Give up on building on 32bit architectures (gh#espressomd/espresso#4537). +- Fix rpath in provided libraries and shebang in pypresso. + +------------------------------------------------------------------- +Sat Apr 16 00:24:21 UTC 2022 - Jean-Noel Grad + +- added rpath.patch to fix the failing Rpath checks (see + boo#1198352) + +------------------------------------------------------------------- +Sat Apr 16 00:19:40 UTC 2022 - Jean-Noel Grad + +- added hdf5.patch to fix builds with H5MD (see + gh#espressomd/espresso#3543) + +------------------------------------------------------------------- +Mon Jul 12 22:24:29 UTC 2021 - Christoph Junghans + +- added missing_size_t.patch, to workaround missing size_t (see + gh#espressomd/espresso#4274) + +------------------------------------------------------------------- +Tue May 11 09:29:24 UTC 2021 - Dominique Leuenberger + +- Use openmpi4 on 'non-sle based systems' (aka Tumbleweed) (can't + use unversioned openmpi, as hdf5-openmpi-devel would not exist). + +------------------------------------------------------------------- +Thu Oct 29 15:42:42 UTC 2020 - Christoph Junghans + +- added boost-1.74.patch to fix build with boost-1.74 + (gh#espressomd/espresso#3864) + +------------------------------------------------------------------- +Tue Oct 20 19:03:28 UTC 2020 - Christoph Junghans + +- Update to 4.1.4, see + https://github.com/espressomd/espresso/blob/4.1.4/NEWS for + details + +------------------------------------------------------------------- +Tue Sep 8 20:26:00 UTC 2020 - Christoph Junghans + +- fix unversioned Obsoletes: statement + +------------------------------------------------------------------- +Fri Aug 21 16:36:20 UTC 2020 - Christoph Junghans + +- force the use of shared hdf5 by setting HDF5_USE_SHLIB + +------------------------------------------------------------------- +Wed Jul 8 19:14:39 UTC 2020 - Christoph Junghans + +- Update to 4.1.3, see + https://github.com/espressomd/espresso/blob/4.1.3/NEWS for + details +- drop 3427.patch - merged upstream + +------------------------------------------------------------------- +Thu May 21 21:52:51 UTC 2020 - Christoph Junghans + +- Require: the right hdf5 library + +------------------------------------------------------------------- +Mon May 11 20:57:59 UTC 2020 - Christoph Junghans + +- enable hdf5 support +- python3-numpy & python3-h5md are needed at runtime + +------------------------------------------------------------------- +Tue Jan 21 13:26:55 UTC 2020 - Christoph Junghans + +- add 3427.patch to fix tests on i586 + +------------------------------------------------------------------- +Wed Jan 15 23:35:14 CET 2020 - Matej Cepl + +- Update to 4.1.2: + - The interface has not been changed between ESPResSo 4.1.1 and + 4.1.2. + - General corrections and improvements: + - Remove correlation between the rotational noise and + translational noise in the Langevin thermostat (#3355) + - Fix a bug that may cause the wrong temperature to be set by + the Langevin and DPD thermostats in the first time step + after the system was altered from the Python level, e.g., + by changing particles or interactions (#3341) + - Fix a bug that caused the DPD thermostat to generate an + incorrect velocity distribution when used together with the + Langevin thermostat (#3352) + - Fix a bug in MMM2D and ELC with potential boundary + conditions, where one of the correction factors was + over-counted resulting in wrong energies (#3310) + - Fix a bug that caused the wrong bonds to be deleted when + removing particles from the system (#3356) + - Fix an ambiguity in `ParticleSlice`: the values in the + square brackets refer to particle ids, not array indices + (#3367). This means the ill-defined syntax + `system.part[0:-1]` is no longer valid. See the User Guide + section on Setting up particles for more information. + - Remove the mass prefactor in the `ComForce` observable and + use the correct Particle ids in the + `ParticleAngularVelocities` and `ParticleBodyVelocities` + observables (#3380) + - Fix a rounding error that caused debug builds of ESPResSo + running with multiple MPI threads to crash when a particle + was placed exactly on the boundary between two cells + (#3377) + - Fix `espressomd.has_features()` for the corner case where + the list of all compiled-in features is passed as argument, + returning ``False`` instead of ``True`` (#3318) + - Refactor the random number generator code (#3349) + - Documentation and tutorials corrections and improvements: + - Improve documentation of Monte Carlo methods (#3254, #3330) + - Build system and platform-related corrections and + improvements: + - List all Python dependencies in `requirements.txt` with the + supported version numbers (#3300). Please note that most of + them are optional. + - Add `MPIEXEC_PREFLAGS` and `MPIEXEC_POSTFLAGS` to the + command lines of parallel tests (#3221) + - Add the `-oversubscribe` flag to the command lines of + parallel tests running with OpenMPI v2.X to avoid exiting + early from a Python test configured without `MAX_NUM_PROC` + on a machine with a hyperthreaded CPU where OpenMPI is + configured such that the number of threads cannot exceed + the number of cores (#3335) + - Refactor the CI, maintainer, Doxygen and pypresso shell + scripts to make them more portable and support filepaths + containing whitespaces (#3326, #3373) + - Fix a nvcc compiler warning on the empty config (#3329) + - Improved testing: + - Add a test for ELC and MMM2D using analytic expressions of + the force and energy (#3331) + - Sped-up seven Python tests (#3319) + - Fix a test that broke on s390x architectures with Fedora 31 + (#3312) + - Fix tests that broke on i586 architectures with OpenSUSE + Tumbleweed (#3327, #3358) + +------------------------------------------------------------------- +Fri Nov 15 16:24:45 UTC 2019 - Christoph Junghans + +- Version bump to 4.1.1 + * Restore checkpointing mechanism for the steepest descent and NPT + integrators, LB and NPT thermostats (#3245) + * Increase the minimum MPI version to 3.0; OpenMPI versions 1.6.5 and + lower are no longer supported (#3236) + * Fix `Integrator.set_isotropic_npt()`: remove the silent conversion of + the incorrect input parameter `direction=[0,0,0]` to `[1,1,1]` in the + core; the function now throws an exception for fixed-volume boxes; + this change is unlikely to break pypresso scripts since not providing + a value to `direction` or providing `[1,1,1]` were the two standard + ways to set up a box with all directions allowed to rescale (#3253) + * Fix `Integrator.set_vv()`: this function failed to set the velocity + Verlet integrator if the NPT integrator was active; this is now + resolved (#3274) + * Fix the random segmentation fault triggered by the removal of a + particle with a bond or a virtual site relationship to another + particle (#3288) + * Fix `system.part.writevtk()`: the function now writes down all + particles when using `types="all"` (#3290) + * Disable the deprecated and broken ENGINE shear torque calculation + feature; the feature will be completely removed from the core in + the upcoming 4.2 release (#3277) + * Fix unit conversion for the LB fluid viscosity (#3287) + + +------------------------------------------------------------------- +Tue Apr 30 18:06:33 UTC 2019 - Christoph Junghans + +- Version bump to 4.0.2 + *Corrections for bugs that may harm simulation results: + * A sign error in tabulated interactions was corrected such that + the force equals the negative gradient of the potential. + (#2519,2520) + * The flow field of the CPU lattice-Boltzmann implementation was + deleted when aspects of the molecular dynamics cell grid were + changed; E.g., when interactions, the skin or the parallelization + setup were changed. ESPResSo now terminates with an error, when this + happens. To avoid this, please setup the CPU lattice-Boltzmann after + all other aspects of the system. The GPU LB is not affected in the + 4.0 release, but was affected in the current development branch. + (#2728, #2736) + * Corrected the force acting on LB Boundaries for the case of + agrid and density not equal to 1 (#2624). + * Corrected the cutoff calculation for the soft sphere interaction. In + the previous implementation, the offset parameter was ignored. + (#2505) + * The "three point coupling" of particles to the lattice-Boltzmann + method has been removed. While it works in most environments, for + some compilers the calculation gives wrong values. This is likely + caused by undefined behavior. A corrected implementation is + available in ESPResSo's development branch. It cannot be safely + backported to 4.0.2, because the code has diverged too far. (#2516, + #2517) Users who did not explicitly activate this coupling via + couple="3pt" are not affected. + * The velocity of existing particles was changed when setting or + changing the simulation time step (#2480) + * Further changes: + * Fixed the electrokinetic Python interface (#2486) + * Correction to the installation instructions for mac (#2510) + * Corrected file permissions (#2470) + * Minor corrections and extensions to the test suite (#2477, #2552) + * Fixed a dead-lock in the dipolar Barnes Hutt method on the GPU for + recent NVIDIA cards such as RTX 2080 (#2719). + * Restored Mayavi visualizer's API-compatibility with OpenGL + visualizer (#2751) + +------------------------------------------------------------------- +Fri Jan 25 16:28:37 UTC 2019 - Christoph Junghans + +- Version bump to 4.0.1 + * Many small bugfixes +- Drop 2255.patch, 2259.patch and 2265.patch - merged upstream + +------------------------------------------------------------------- +Fri Sep 28 23:13:13 UTC 2018 - Christoph Junghans + +- added change from request #639007 + - rename package to python3-espressomd + - install COPYING for all packages + - change license to GPL-3.0-or-later + - added sonum define + +------------------------------------------------------------------- +Fri Sep 7 15:36:54 UTC 2018 - junghans@votca.org + +- Version bump to 4.0.0 +- Rename pacakge to python-espressomd +- Dropped 1830.patch - merged upstream +- Dropped doc package - under rework in 4.0.0 +- New features: + - Reaction ensemble methods for the modelling of chemical reactions, including constant pH and Wang-Landau schemes. + - Polarisable particles via the Drude-oscillator scheme. + - Steepest-descent energy minimization scheme. + - Methods for active particles (swimmer_reaction, dipolar swimmers). + - GPU-accelerated P3M method for electrostatic interactions. + - GPU-accelerated direct summation and Barnes-Hutt schemes for dipolar interactions under open boundary conditions. + - Support for the electrostatic and magnetostatics method provided by the ScaFaCoS library. + - Immersed boundary method for soft immersed objects in an LB fluid. + - Virtual sites acting as inertialess tracers in an LB fluid usable as part of the immersed boundary method or independently. + - New bonded quartic and Coulomb interactions. + - Possibility to tune the skin parameter. + - Support for saving to the h5md file format for molecular dynamics data. + - Connection to the MD Analysis Python package. + - A rotate_system command was added, which rotates the particle positions around the system’s center of mass. +- Added 2255.patch to fix numpy issue on i586 +- Added 2259.patch to fix numpy issue on big-endian platforms +- Added 2265.patch to fix test on i586 + +------------------------------------------------------------------- +Mon Feb 12 19:25:01 UTC 2018 - junghans@votca.org + +- add 1830.patch to fix install +- update version 3.3.1+git20180203.f74064d + * many many small fixes + * support for newer cython + +------------------------------------------------------------------- +Wed Oct 25 12:43:08 UTC 2017 - junghans@votca.org + +- adapt to new openlmi package - source mpivars.h during build + +------------------------------------------------------------------- +Wed Feb 1 10:36:28 UTC 2017 - adam.majer@suse.de + +- use individual libboost-*-devel packages instead of boost-devel + +------------------------------------------------------------------- +Thu Sep 29 13:46:20 UTC 2016 - jengelh@inai.de + +- RPM group fixup + +------------------------------------------------------------------- +Wed Aug 3 17:54:16 UTC 2016 - junghans@votca.org + +- switched to cmake build-system +- build python module +- dropped header as they are for internal use only +- dropped pkg-config files as nothing depends on libs yet +- update version 3.3.1+git20160803.6ed0518.tar.gz + * overhaul of buildsystem + * many many small fixes + +------------------------------------------------------------------- +Sun Jun 26 07:35:00 UTC 2016 - i@marguerite.su + +- fix boo#985147 + * there's a commit that removed redefinition of malloc and realloc + which fixed build for gcc 6. but it's too hard to cherry pick, so + update to the latest git version is a good idea +- there's no --without-mpi option left in configure.ac, so "-openmpi" + sub-package is meaningless now (everything has openmpi support) + and since there's no two main packages any more, "-common" sub-package + is also meaningless now (and it doesn't contains data), merged. +- add sub-package: "-devel", "libEspresso0", "libEspressoTcl0" +- add generate_headers.rb to gather those .hpp that're really used + into "-devel" sub-package +- create pkgconfig files +- add some texlive BuildRequires to build pdf documentation. +- update version 3.3.1+git20160622.6aa229c: + * added edge statistics for meshes used by object-in-fluid + * added pos_folded property + * Adapted simple LB tests to current interface. + * system.part.writevtk() + * redesigned exclusions and added slice input + * Scafacos: Add long range energy to correct place in energy data structure + * Correction to scafacos energy calculation: Check cutoff in near field contrib + * Scafacos: Sort out conditional compilation and cython includes + * Scafacos: methods shared between electrostatics and dipolar calculations + +------------------------------------------------------------------- +Sun Nov 8 21:57:37 UTC 2015 - p.drouand@gmail.com + +- Update to version 3.3.1 + * A lot of changes; please read the NEWS file + +------------------------------------------------------------------- +Tue Aug 12 03:44:16 UTC 2014 - junghans@votca.org + +- version bumped to 3.3.0 +- Highlights of this release include: + - Calculation of the electrokinetic equations via the ELECTROKINETICS feature, + - the Shan/Chen method for multi component lattice Boltzmann fluids, + - the P3M and MMM1D methods can now be computed on a GPU, + - ESPResSo now has a rudimentary Python interface. + For a complete list of the changes in the release, please refer to: + http://download.savannah.gnu.org/releases/espressomd/NEWS + +------------------------------------------------------------------- +Fri Feb 7 17:41:18 UTC 2014 - junghans@votca.org + +- build openmpi and non-mpi version + +------------------------------------------------------------------- +Tue Feb 4 18:59:10 UTC 2014 - junghans@votca.org + +- initial commit + diff --git a/python3-espressomd.spec b/python3-espressomd.spec new file mode 100644 index 0000000..783bb77 --- /dev/null +++ b/python3-espressomd.spec @@ -0,0 +1,111 @@ +# +# spec file for package python3-espressomd +# +# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2014 Christoph Junghans +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +# Build with OpenMPI +%define mpiver openmpi4 +%define pkgname espresso +%define modname %{pkgname}md +Name: python3-%{modname} +Version: 4.2.2 +Release: 0 +Summary: Parallel simulation software for soft matter research +License: GPL-3.0-or-later +URL: http://espressomd.org +Source: https://github.com/%{modname}/%{pkgname}/releases/download/%{version}/%{pkgname}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM numpy.patch gh#espressomd/espresso#4992 +Patch0: numpy.patch +# PATCH-FIX-UPSTREAM cmake.patch gh#espressomd/espresso#4992 +Patch1: cmake.patch +# According to gh#espressomd/espresso#4537 32bit architectures are not supported any more +ExcludeArch: %{ix86} armv7l +BuildRequires: cmake +BuildRequires: fftw3-devel +BuildRequires: gcc-c++ +# Currently libboost_mpi-devel and hdf5 use different mpi versions +# BuildRequires: hdf5-devel +BuildRequires: %{mpiver}-devel +BuildRequires: chrpath +BuildRequires: gsl-devel +BuildRequires: hdf5-%{mpiver}-devel +BuildRequires: libboost_filesystem-devel +BuildRequires: libboost_mpi-devel +BuildRequires: libboost_system-devel +BuildRequires: libboost_test-devel +BuildRequires: python3-Cython < 3.0.10 +BuildRequires: python3-devel +BuildRequires: python3-h5py +BuildRequires: python3-numpy-devel +BuildRequires: python3-scipy +BuildRequires: python3-setuptools +BuildRequires: zlib-devel +Provides: libEspresso4 = %{version}-%{release} +Obsoletes: libEspresso4 < 4.1 +Requires: python3-h5py +Requires: python3-numpy +# make sure rpm pulls in the right dependency +Requires: libhdf5-%{mpiver} + +%description +ESPResSo is a highly versatile software package for performing and analyzing +scientific Molecular Dynamics many-particle simulations of coarse-grained +atomistic or bead-spring models as they are used in soft-matter research in +physics, chemistry and molecular biology. It can be used to simulate systems +such as polymers, liquid crystals, colloids, ferrofluids and biological +systems, for example DNA and lipid membranes. + +%prep +%autosetup -p1 -n %{pkgname} +# Fix shebang line for pypresso +sed -i -E '1s@^#!/usr/bin/env[[:blank:]]+sh@#!/bin/sh@' src/python/pypresso.cmakein +# skip mpiio test - it fails if inwoked with cmake, direct run with python3 -m unittest pass +sed -i '/mpiio\.py/d' testsuite/python/CMakeLists.txt + +%build +source %{_libdir}/mpi/gcc/%{mpiver}/bin/mpivars.sh +# gh#espressomd/espresso#3396 +%define _lto_cflags %{nil} + +#force usage of shared hdf5 +export HDF5_USE_SHLIB=yes +# overwrite .so linker flags on SUSE distros: drop --no-undefined +# we don't install {i,}pypresso scripts as they aren't needed when installing in /usr +%cmake \ + -DCMAKE_SHARED_LINKER_FLAGS='-Wl,--as-needed -Wl,-z,now' \ + -DCMAKE_SKIP_RPATH=ON \ + -DLIBDIR=%{_libdir} \ + -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ + -DPYTHON_INSTDIR=%{python3_sitearch} \ + -DINSTALL_PYPRESSO=ON +%make_jobs + +%install +%cmake_install +find %{buildroot}%{python3_sitearch} -name \*.so \ + -exec chrpath -r %{python3_sitearch} '{}' \; + +%check +LD_LIBRARY_PATH='%{buildroot}/%{python3_sitearch}/espressomd::%{_libdir}/mpi/gcc/%{mpiver}/%{_lib}' make -C build check CTEST_OUTPUT_ON_FAILURE=1 %{?testargs:%{testargs}} + +%files +%license COPYING +%doc Readme.md AUTHORS NEWS ChangeLog +%{_bindir}/pypresso +%{python3_sitearch}/espressomd + +%changelog