1
0

Accepting request 1080111 from home:jngrad:branches:devel:languages:python:numeric

ESPResSo 4.2.1

OBS-URL: https://build.opensuse.org/request/show/1080111
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python3-espressomd?expand=0&rev=44
This commit is contained in:
Matej Cepl 2023-04-18 20:51:28 +00:00 committed by Git OBS Bridge
parent 7f52a710bb
commit d4a88a2e75
11 changed files with 220 additions and 397 deletions

View File

@ -1,34 +0,0 @@
From a392907978506408482d0bdd388534455ba8dfba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= <jgrad@icp.uni-stuttgart.de>
Date: Wed, 28 Oct 2020 21:22:39 +0100
Subject: [PATCH] core: Add guard for boost 1.74.0
This <boost/serialization/version.hpp> include guards against an issue
in boost::serialization from boost 1.74.0 that leads to compiler error
"explicit specialization of undeclared template struct 'version'" when
including <boost/serialization/optional.hpp>. More details in tickets:
https://github.com/boostorg/serialization/issues/210
https://github.com/boostorg/serialization/issues/217
---
src/core/grid_based_algorithms/lb_particle_coupling.hpp | 9 +++++++++
1 file changed, 9 insertions(+)
--- a/src/core/grid_based_algorithms/lb_particle_coupling.hpp
+++ b/src/core/grid_based_algorithms/lb_particle_coupling.hpp
@@ -25,6 +25,15 @@
#include <boost/serialization/access.hpp>
+/* This <boost/serialization/version.hpp> include guards against an issue
+ * in boost::serialization from boost 1.74.0 that leads to compiler error
+ * "explicit specialization of undeclared template struct 'version'" when
+ * including <boost/serialization/optional.hpp>. More details in tickets:
+ * https://github.com/boostorg/serialization/issues/210
+ * https://github.com/boostorg/serialization/issues/217
+ */
+#include <boost/serialization/version.hpp>
+
#include <cstdint>
#include <unordered_set>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:080bbf6bec5456192ce4e1bc0ddebb9e8735db723d3062ec87154f1ac411aaab
size 14000445

3
espresso-4.2.1.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d74b46438b0d013cac35602e28f3530686446a3a307f6771baf15395066bdad5
size 13458982

View File

@ -1,260 +0,0 @@
From 12b1c3a77060a0d402984ce88b230744fa31c79d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= <jgrad@icp.uni-stuttgart.de>
Date: Thu, 1 Sep 2022 13:37:40 +0200
Subject: [PATCH] core: Fix broken FFT check
Properly check the magnitude of complex residuals. Add a parameter
to disable the check for debugging purposes.
---
src/core/electrostatics/p3m.cpp | 8 +++++---
src/core/electrostatics/p3m.hpp | 3 ++-
src/core/p3m/fft.cpp | 2 +-
.../unit_tests/EspressoSystemStandAlone_test.cpp | 2 +-
src/python/espressomd/electrostatics.py | 7 +++++++
src/script_interface/electrostatics/CoulombP3M.hpp | 6 ++++--
.../electrostatics/CoulombP3MGPU.hpp | 6 ++++--
testsuite/python/coulomb_interface.py | 6 ++++--
testsuite/python/icc_interface.py | 14 ++++++++++----
testsuite/python/save_checkpoint.py | 1 +
testsuite/python/test_checkpoint.py | 2 ++
11 files changed, 41 insertions(+), 16 deletions(-)
diff --git a/src/core/electrostatics/p3m.cpp b/src/core/electrostatics/p3m.cpp
index d0d059157f1..b06300fed9e 100644
--- a/src/core/electrostatics/p3m.cpp
+++ b/src/core/electrostatics/p3m.cpp
@@ -270,9 +270,11 @@ void CoulombP3M::init() {
}
CoulombP3M::CoulombP3M(P3MParameters &&parameters, double prefactor,
- int tune_timings, bool tune_verbose)
+ int tune_timings, bool tune_verbose,
+ bool check_complex_residuals)
: p3m{std::move(parameters)}, tune_timings{tune_timings},
- tune_verbose{tune_verbose} {
+ tune_verbose{tune_verbose}, check_complex_residuals{
+ check_complex_residuals} {
m_is_tuned = !p3m.params.tuning;
p3m.params.tuning = false;
@@ -490,7 +492,7 @@ double CoulombP3M::long_range_kernel(bool force_flag, bool energy_flag,
}
/* Back FFT force component mesh */
- auto const check_complex = !p3m.params.tuning;
+ auto const check_complex = !p3m.params.tuning and check_complex_residuals;
for (int d = 0; d < 3; d++) {
fft_perform_back(p3m.E_mesh[d].data(), check_complex, p3m.fft, comm_cart);
}
diff --git a/src/core/electrostatics/p3m.hpp b/src/core/electrostatics/p3m.hpp
index 4f682bf7fa8..a8d02b055b4 100644
--- a/src/core/electrostatics/p3m.hpp
+++ b/src/core/electrostatics/p3m.hpp
@@ -89,13 +89,14 @@ struct CoulombP3M : public Coulomb::Actor<CoulombP3M> {
int tune_timings;
bool tune_verbose;
+ bool check_complex_residuals;
private:
bool m_is_tuned;
public:
CoulombP3M(P3MParameters &&parameters, double prefactor, int tune_timings,
- bool tune_verbose);
+ bool tune_verbose, bool check_complex_residuals);
bool is_tuned() const { return m_is_tuned; }
diff --git a/src/core/p3m/fft.cpp b/src/core/p3m/fft.cpp
index 55ff03c66d3..2c1d193155c 100644
--- a/src/core/p3m/fft.cpp
+++ b/src/core/p3m/fft.cpp
@@ -738,7 +738,7 @@ void fft_perform_back(double *data, bool check_complex, fft_data_struct &fft,
for (int i = 0; i < fft.plan[1].new_size; i++) {
fft.data_buf[i] = data[2 * i]; /* real value */
// Vincent:
- if (check_complex && (data[2 * i + 1] > 1e-5)) {
+ if (check_complex and std::abs(data[2 * i + 1]) > 1e-5) {
printf("Complex value is not zero (i=%d,data=%g)!!!\n", i,
data[2 * i + 1]);
if (i > 100)
diff --git a/src/core/unit_tests/EspressoSystemStandAlone_test.cpp b/src/core/unit_tests/EspressoSystemStandAlone_test.cpp
index 94cbc51a24d..ddf19a283ed 100644
--- a/src/core/unit_tests/EspressoSystemStandAlone_test.cpp
+++ b/src/core/unit_tests/EspressoSystemStandAlone_test.cpp
@@ -115,7 +115,7 @@ static void mpi_set_tuned_p3m_local(double prefactor) {
0.654,
1e-3};
auto solver =
- std::make_shared<CoulombP3M>(std::move(p3m), prefactor, 1, false);
+ std::make_shared<CoulombP3M>(std::move(p3m), prefactor, 1, false, true);
::Coulomb::add_actor(solver);
}
diff --git a/src/python/espressomd/electrostatics.py b/src/python/espressomd/electrostatics.py
index 6b91ec6d355..60a12cc4483 100644
--- a/src/python/espressomd/electrostatics.py
+++ b/src/python/espressomd/electrostatics.py
@@ -155,6 +155,7 @@ def default_params(self):
"mesh_off": [-1., -1., -1.],
"prefactor": 0.,
"check_neutrality": True,
+ "check_complex_residuals": True,
"tune": True,
"timings": 10,
"verbose": True}
@@ -231,6 +232,9 @@ class P3M(_P3MBase):
check_neutrality : :obj:`bool`, optional
Raise a warning if the system is not electrically neutral when
set to ``True`` (default).
+ check_complex_residuals: :obj:`bool`, optional
+ Raise a warning if the backward Fourier transform has non-zero
+ complex residuals when set to ``True`` (default).
"""
_so_name = "Coulomb::CoulombP3M"
@@ -281,6 +285,9 @@ class P3MGPU(_P3MBase):
check_neutrality : :obj:`bool`, optional
Raise a warning if the system is not electrically neutral when
set to ``True`` (default).
+ check_complex_residuals: :obj:`bool`, optional
+ Raise a warning if the backward Fourier transform has non-zero
+ complex residuals when set to ``True`` (default).
"""
_so_name = "Coulomb::CoulombP3MGPU"
diff --git a/src/script_interface/electrostatics/CoulombP3M.hpp b/src/script_interface/electrostatics/CoulombP3M.hpp
index 147ee7d0af7..0f167cfa442 100644
--- a/src/script_interface/electrostatics/CoulombP3M.hpp
+++ b/src/script_interface/electrostatics/CoulombP3M.hpp
@@ -69,6 +69,8 @@ class CoulombP3M : public Actor<CoulombP3M, ::CoulombP3M> {
{"timings", AutoParameter::read_only,
[this]() { return actor()->tune_timings; }},
{"tune", AutoParameter::read_only, [this]() { return m_tune; }},
+ {"check_complex_residuals", AutoParameter::read_only,
+ [this]() { return actor()->check_complex_residuals; }},
});
}
@@ -85,8 +87,8 @@ class CoulombP3M : public Actor<CoulombP3M, ::CoulombP3M> {
get_value<double>(params, "accuracy")};
m_actor = std::make_shared<CoreActorClass>(
std::move(p3m), get_value<double>(params, "prefactor"),
- get_value<int>(params, "timings"),
- get_value<bool>(params, "verbose"));
+ get_value<int>(params, "timings"), get_value<bool>(params, "verbose"),
+ get_value<bool>(params, "check_complex_residuals"));
});
set_charge_neutrality_tolerance(params);
}
diff --git a/src/script_interface/electrostatics/CoulombP3MGPU.hpp b/src/script_interface/electrostatics/CoulombP3MGPU.hpp
index d212a5e671f..3fe11a9de85 100644
--- a/src/script_interface/electrostatics/CoulombP3MGPU.hpp
+++ b/src/script_interface/electrostatics/CoulombP3MGPU.hpp
@@ -70,6 +70,8 @@ class CoulombP3MGPU : public Actor<CoulombP3MGPU, ::CoulombP3MGPU> {
{"timings", AutoParameter::read_only,
[this]() { return actor()->tune_timings; }},
{"tune", AutoParameter::read_only, [this]() { return m_tune; }},
+ {"check_complex_residuals", AutoParameter::read_only,
+ [this]() { return actor()->check_complex_residuals; }},
});
}
@@ -86,8 +88,8 @@ class CoulombP3MGPU : public Actor<CoulombP3MGPU, ::CoulombP3MGPU> {
get_value<double>(params, "accuracy")};
m_actor = std::make_shared<CoreActorClass>(
std::move(p3m), get_value<double>(params, "prefactor"),
- get_value<int>(params, "timings"),
- get_value<bool>(params, "verbose"));
+ get_value<int>(params, "timings"), get_value<bool>(params, "verbose"),
+ get_value<bool>(params, "check_complex_residuals"));
});
m_actor->request_gpu();
set_charge_neutrality_tolerance(params);
diff --git a/testsuite/python/coulomb_interface.py b/testsuite/python/coulomb_interface.py
index eff174e6e08..a5a1dc6b828 100644
--- a/testsuite/python/coulomb_interface.py
+++ b/testsuite/python/coulomb_interface.py
@@ -59,7 +59,8 @@ def tearDown(self):
system, espressomd.electrostatics.P3M,
dict(prefactor=2., epsilon=0., mesh_off=[0.6, 0.7, 0.8], r_cut=1.5,
cao=2, mesh=[8, 10, 8], alpha=12., accuracy=0.01, tune=False,
- check_neutrality=True, charge_neutrality_tolerance=7e-12))
+ check_neutrality=True, charge_neutrality_tolerance=7e-12,
+ check_complex_residuals=False))
test_p3m_cpu_non_metallic = tests_common.generate_test_for_actor_class(
system, espressomd.electrostatics.P3M,
dict(prefactor=2., epsilon=3., mesh_off=[0.6, 0.7, 0.8], r_cut=1.5,
@@ -78,7 +79,8 @@ def tearDown(self):
system, espressomd.electrostatics.P3MGPU,
dict(prefactor=2., epsilon=0., mesh_off=[0.6, 0.7, 0.8], r_cut=1.5,
cao=2, mesh=[8, 10, 8], alpha=12., accuracy=0.01, tune=False,
- check_neutrality=True, charge_neutrality_tolerance=7e-12))
+ check_neutrality=True, charge_neutrality_tolerance=7e-12,
+ check_complex_residuals=False))
test_p3m_gpu_non_metallic = tests_common.generate_test_for_actor_class(
system, espressomd.electrostatics.P3MGPU,
dict(prefactor=2., epsilon=3., mesh_off=[0.6, 0.7, 0.8], r_cut=1.5,
diff --git a/testsuite/python/icc_interface.py b/testsuite/python/icc_interface.py
index 2b968d2432b..6eadca2d0e7 100644
--- a/testsuite/python/icc_interface.py
+++ b/testsuite/python/icc_interface.py
@@ -121,15 +121,21 @@ def test_exceptions_small_r_cut(self):
@utx.skipIfMissingFeatures(["P3M"])
def test_exceptions_large_r_cut(self):
- icc, (_, p) = self.setup_icc_particles_and_solver(max_iterations=1)
- p3m = espressomd.electrostatics.P3M(**self.valid_p3m_parameters())
+ icc, (_, p) = self.setup_icc_particles_and_solver(
+ max_iterations=1, convergence=10.)
+ p3m = espressomd.electrostatics.P3M(
+ check_complex_residuals=False, **self.valid_p3m_parameters())
self.system.actors.add(p3m)
self.system.actors.add(icc)
-
with self.assertRaisesRegex(Exception, f"Particle with id {p.id} has a charge .+ that is too large for the ICC algorithm"):
- p.q = 1e9
+ p.q = 1e8
self.system.integrator.run(0)
+
+ self.system.actors.remove(icc)
+ self.system.part.clear()
+ icc, (_, p) = self.setup_icc_particles_and_solver(max_iterations=1)
+ self.system.actors.add(icc)
with self.assertRaisesRegex(Exception, "ICC failed to converge in the given number of maximal steps"):
p.q = 0.
self.system.integrator.run(0)
diff --git a/testsuite/python/save_checkpoint.py b/testsuite/python/save_checkpoint.py
index 09ebda6f002..55ab1b37b82 100644
--- a/testsuite/python/save_checkpoint.py
+++ b/testsuite/python/save_checkpoint.py
@@ -125,6 +125,7 @@
cao=1,
alpha=1.0,
r_cut=1.0,
+ check_complex_residuals=False,
timings=15,
tune=False)
if 'ELC' in modes:
diff --git a/testsuite/python/test_checkpoint.py b/testsuite/python/test_checkpoint.py
index 17363085c3f..98f9959f68f 100644
--- a/testsuite/python/test_checkpoint.py
+++ b/testsuite/python/test_checkpoint.py
@@ -504,6 +504,7 @@ def test_p3m(self):
reference = {'prefactor': 1.0, 'accuracy': 0.1, 'mesh': 3 * [10],
'cao': 1, 'alpha': 1.0, 'r_cut': 1.0, 'tune': False,
'timings': 15, 'check_neutrality': True,
+ 'check_complex_residuals': False,
'charge_neutrality_tolerance': 1e-12}
for key in reference:
self.assertIn(key, state)
@@ -519,6 +520,7 @@ def test_elc(self):
p3m_reference = {'prefactor': 1.0, 'accuracy': 0.1, 'mesh': 3 * [10],
'cao': 1, 'alpha': 1.0, 'r_cut': 1.0, 'tune': False,
'timings': 15, 'check_neutrality': True,
+ 'check_complex_residuals': False,
'charge_neutrality_tolerance': 7e-12}
elc_reference = {'gap_size': 6.0, 'maxPWerror': 0.1,
'delta_mid_top': 0.9, 'delta_mid_bot': 0.1,

View File

@ -1,17 +0,0 @@
---
src/core/CMakeLists.txt | 4 ++++
1 file changed, 4 insertions(+)
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -127,6 +127,10 @@ add_subdirectory(reaction_methods)
add_subdirectory(scafacos)
add_subdirectory(virtual_sites)
+if(H5MD)
+ target_link_libraries(EspressoCore PUBLIC ${HDF5_LIBRARIES})
+endif(H5MD)
+
if(WITH_TESTS)
add_subdirectory(unit_tests)
endif(WITH_TESTS)

View File

@ -1,15 +0,0 @@
---
src/config/config.hpp | 2 ++
1 file changed, 2 insertions(+)
--- a/src/config/config.hpp
+++ b/src/config/config.hpp
@@ -37,6 +37,8 @@
#define MPICH_SKIP_MPICXX
#endif
+#include <cstddef>
+
#include "config-features.hpp"
/** P3M: Default for offset of first mesh point from the origin (left

View File

@ -1,36 +0,0 @@
commit bff5e2703d4371f06f281d48181431558066d566
Author: Jean-Noël Grad <jgrad@icp.uni-stuttgart.de>
Date: Tue Dec 20 19:36:34 2022 +0100
tests: Replace deprecated numpy option
Option 'normed' in numpy.histogramdd was deprecated since 1.15 and
removed in 1.24.
---
testsuite/python/observable_profile.py | 2 +-
testsuite/python/observable_profileLB.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/testsuite/python/observable_profile.py
+++ b/testsuite/python/observable_profile.py
@@ -51,7 +51,7 @@ def test_density_profile(self):
obs_bin_centers = density_profile.bin_centers()
np_hist, np_edges = tests_common.get_histogram(
np.copy(self.system.part.all().pos), self.kwargs, 'cartesian',
- normed=True)
+ density=True)
np_hist *= len(self.system.part)
np.testing.assert_array_almost_equal(obs_data, np_hist)
for i in range(3):
--- a/testsuite/python/observable_profileLB.py
+++ b/testsuite/python/observable_profileLB.py
@@ -91,7 +91,7 @@ def test_velocity_profile(self):
obs_edges = obs.call_method("edges")
_, np_edges = tests_common.get_histogram(
np.zeros([1, 3]), LB_VELOCITY_PROFILE_PARAMS, 'cartesian',
- normed=True)
+ density=True)
for i in range(3):
np.testing.assert_array_almost_equal(obs_edges[i], np_edges[i])
for x in range(obs_data.shape[0]):

View File

@ -1,3 +1,198 @@
-------------------------------------------------------------------
Tue Apr 18 10:43:03 UTC 2023 - Jean-Noel Grad <jgrad@icp.uni-stuttgart.de>
- 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).
-------------------------------------------------------------------
Thu Jan 26 19:46:39 UTC 2023 - Jean-Noel Grad <jgrad@icp.uni-stuttgart.de>

View File

@ -35,25 +35,15 @@
%define pkgname espresso
%define modname %{pkgname}md
Name: python3-%{modname}
Version: 4.2.0
Version: 4.2.1
Release: 0
Summary: Parallel simulation software for soft matter research
License: GPL-3.0-or-later
Group: Productivity/Scientific/Chemistry
URL: http://espressomd.org
Source: https://github.com/%{modname}/%{pkgname}/releases/download/%{version}/%{pkgname}-%{version}.tar.gz
# PATCH-FIX-UPSTREAM boost-1.74.patch gh#espressomd/espresso#3864
Patch0: boost-1.74.patch
# PATCH-FIX-OPENSUSE missing_size_t.patch gh#espressomd/espresso#4274
Patch1: missing_size_t.patch
# PATCH-FIX-OPENSUSE hdf5.patch gh#espressomd/espresso#3543
Patch2: hdf5.patch
# PATCH-FIX-OPENSUSE rpath.patch boo#1198352
Patch3: rpath.patch
# PATCH-FIX-UPSTREAM fix-broken-fft-check.patch gh#espressomd/espresso#4567
Patch4: fix-broken-fft-check.patch
# PATCH-FIX-UPSTREAM numpy-1.24.patch gh#espressomd/espresso#4635
Patch5: numpy-1.24.patch
# PATCH-FIX-UPSTREAM setuptools.patch gh#espressomd/espresso#4709
Patch0: setuptools.patch
# According to gh#espressomd/espresso#4537 32bit architectures are not supported any more
ExcludeArch: %{ix86}
BuildRequires: cmake
@ -112,6 +102,7 @@ export HDF5_USE_SHLIB=yes
# 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} \
@ -124,10 +115,6 @@ find %{buildroot}%{python3_sitearch} -name \*.so \
-exec chrpath -r %{python3_sitearch} '{}' \;
%check
# gh#espressomd/espresso#3315
%ifarch i586
%define testargs ARGS='-E collision_detection'
%endif
LD_LIBRARY_PATH='%{buildroot}/%{python3_sitearch}/espressomd::%{_libdir}/mpi/gcc/%{mpiver}/%{_lib}' make -C build check CTEST_OUTPUT_ON_FAILURE=1 %{?testargs:%{testargs}}
%files

View File

@ -1,15 +0,0 @@
---
CMakeLists.txt | 2 ++
1 file changed, 2 insertions(+)
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,8 @@
cmake_minimum_required(VERSION 3.16)
message(STATUS "CMake version: ${CMAKE_VERSION}")
+set(CMAKE_SKIP_RPATH ON)
+
if(POLICY CMP0076)
# make target_sources() convert relative paths to absolute
cmake_policy(SET CMP0076 NEW)

18
setuptools.patch Normal file
View File

@ -0,0 +1,18 @@
diff --git a/testsuite/python/unittest_decorators.py b/testsuite/python/unittest_decorators.py
index 109f89cc8..a9a0e5200 100644
--- a/testsuite/python/unittest_decorators.py
+++ b/testsuite/python/unittest_decorators.py
@@ -20,5 +20,5 @@
import sys
import importlib
-import setuptools
+import pkg_resources
import unittest
@@ -75,5 +75,5 @@ def skipIfUnmetModuleVersionRequirement(module, version_requirement):
except ImportError:
return skipIfMissingModules(module)
- if not setuptools.version.pkg_resources.packaging.specifiers.SpecifierSet(
+ if not pkg_resources.packaging.specifiers.SpecifierSet(
version_requirement).contains(_module.__version__):
return unittest.skip(