forked from pool/python3-espressomd
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:
parent
7f52a710bb
commit
d4a88a2e75
@ -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>
|
||||
|
@ -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
3
espresso-4.2.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d74b46438b0d013cac35602e28f3530686446a3a307f6771baf15395066bdad5
|
||||
size 13458982
|
@ -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 &¶meters, 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 &¶meters, 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,
|
17
hdf5.patch
17
hdf5.patch
@ -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)
|
@ -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
|
@ -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]):
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
15
rpath.patch
15
rpath.patch
@ -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
18
setuptools.patch
Normal 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(
|
Loading…
Reference in New Issue
Block a user