-
Notifications
You must be signed in to change notification settings - Fork 189
es 420 release notes
These are the draft release notes for ESPResSo 4.2
This is a feature release, i.e., new functionality is added to ESPResSo.
-
LaTeX is no longer a requirement for building the Sphinx documentation and running the tutorials (#3256, #3395)
-
The minimal versions of all dependencies was increased (#3375, #3687, #3878, #3984, #3994): Python 3.6, Cython 0.29, CMake 3.16, Boost 1.66, and Python packages based on versions available in Ubuntu 18.04.
-
CUDA 11 support was added (#3870)
-
CUDA 8 and CUDA 9 support was removed (#3984)
-
AMD GPU support via ROCm (HCC and HIP-Clang compilers) was removed (#3966)
-
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)
-
Incompatible thermostat/integrator combinations will now throw an error (#3880)
-
Profile
observables now provide methodsbin_centers()
andbin_edges()
to facilitate plotting (#3608) -
Accumulator
andCorrelator
classes now return the data in suitably shaped multi-dimensional numpy arrays; dependent properties such as lag times and sample sizes need to be obtained separately by calling methods (#3848) -
Shapes can be merged into meta-shapes (#3493, #3538)
-
A parametric weight function was added to the DPD interaction (#3570)
-
H5MD output files now support a unit system (#3751)
-
MDAnalysis integration now provides bond information (#3801)
-
ScaFaCoS integration now supports activating an electrostatics ScaFaCoS actor at the same time as a magnetostatics ScaFaCoS actor (#4036)
-
MMM1D now throws an error for incorrect periodicity or cell system instead of causing a segfault (#4064)
-
The user guide chapter on thermostats was moved to the chapter on integrators, since they are tightly coupled (#4080)
-
Tutorials 01, 02, 04 and 05 have been improved (#3408, #3881, #3914, #3893)
-
Tutorials now use the
exercise2
plugin to hide solutions (#3872) -
Tutorials have been re-organized by difficulty level (#3993)
-
Scientific publications referenced in comment lines in the core have been converted to BibTeX citations and moved to doxygen blocks to make them more accessible (#3304)
-
The particle director can now be set from the python interface (#4053)
-
The particle method
vs_auto_relate_to()
can now take a particle as argument instead of a particle id (#4058) -
Particles can now be serialized and deserialized in the python interface with
particle_dict = p.to_dict()
andsystem.part.add(particle_dict)
(#4060)
-
GPU support is now opt-in (#3582). Pass the CMake flags
-DWITH_CUDA=ON
to compile CUDA code and optionally-DWITH_CUDA_COMPILER=<compiler>
to select the CUDA compiler: NVCC (default), Clang. -
Optional features HDF5, GSL, ScaFaCoS and Stokesian Dynamics will now throw an error if they are explicitly requested with the corresponding
-DWITH_<FEATURE>=ON
flag and their dependencies are not found (#3735). In the original build system, CMake would silently ignore these features if the dependencies were not found, creating confusion as to what was exactly compiled. Note: this change doesn't affect standard builds where CMake is called without these feature flags, which is the most common use case. -
The
LANGEVIN_PER_PARTICLE
feature was renamed toTHERMOSTAT_PER_PARTICLE
(#4057)
-
The NpT thermostat now uses the Philox random number generator and requires a random seed on first instantiation (#3444).
-
The global Mersenne Twister RNG was removed (#3482). All thermostats are now Philox-based. Local Mersenne Twister RNGs are still used in the linear polymer position generator (now with proper warmup) and in the
ReactionAlgorithm
class. -
The polymer setup code was moved from the core to Python (#3477). The
espressomd.polymer.positions()
function was renamed toespressomd.polymer.linear_polymer_positions()
and theespressomd.diamond.Diamond
class was converted to functionespressomd.polymer.setup_diamond_polymer()
. For diamond polymers, counter-ions must now be added manually by the user. -
It is no longer necessary to manually reshape the output of Observable objects. The Observable classes now return multi-dimensional numpy arrays and the documentation clearly indicates the shape and size of the calculated data (#3560). The same applies to Accumulators and TimeSeries (#3578)
-
The observable
ComForce
was renamed toTotalForce
, to reflect in the name what it actually calculates (#3471). -
The RDF feature was removed from the Analysis module and converted to an Observable class (#3706). Time averages can be obtained using the
TimeSeries
accumulator. -
All occurrences of "Stress Tensor" in the Analysis module and LB module were renamed to "Pressure Tensor" to better reflect what is actually calculated (#3723)
-
The
MeanVarianceCalculator
interface was changed (#3996)
-
The active matter tutorial was converted into a Jupyter notebook (#3395)
-
The reaction ensemble tutorial deprecated in 4.1.1 was removed (#3256)
-
The
PdbParser
feature deprecated in 4.1.1 was removed (#3257) -
The
ENGINE
shear torque calculation feature deprecated in 4.1.1 was removed (#3277) -
The
MEMBRANE_COLLISION
andOifOutDirection
features were removed (#3418) -
The
AFFINITY
feature was removed (#3225) -
The unused and untested
UMBRELLA
feature was removed (#4032, #4079) -
The unused and untested
VIRTUAL_SITES_COM
feature was removed (#3250) -
The unused and untested MD Metadynamics feature was removed (#3563)
-
The unused and untested
Stomatocyte
shape was removed (#3730) -
The incorrectly implemented and untested
HarmonicDumbbellBond
interaction was removed (#3974, ) -
The per-particle temperature feature was removed (#4057)
-
The
Current
observable was removed in favor of theFluxDensityProfile
observable (#3973) -
The incorrectly implemented analysis function
cylindrical_average
was removed in favor of theCylindricalDensityProfile
observable (#3470) -
The
minimize_energy
member of theSystem
class was removed (#3390, #3891). The steepest descent algorithm is now a regular integrator that is set up via thesystem.integrator.set_steepest_descent()
method. -
The MMM2D electrostatics feature was removed (#3340). Electrostatics in slab geometries can still be achieved by ELC, with significantly better performance.
-
The layered cell system was removed (#3512)
-
The Analysis module
min_dist2()
function was removed and thedist_to()
function was merged intosystem.distance_vec()
(#3586) -
The Analysis module
energy()
function now returns the lower triangle of the non-bonded interaction matrix, to be consistent withpressure()
andstress_tensor()
(#3712) -
The number of cells for the link cell algorithm can no longer be constrained to a range of values (#3701)
-
The
system.cell_system.get_pairs_()
method was renamed and now supports filtering particle pairs by type (#4035) -
The NpT integrator can no longer be used with the GPU implementation of P3M due to the undefined P3MGPU contribution to the virial (#4026)
-
The
transform_vector_cartesian_to_cylinder()
now calculates the correct phi angle (#4094). The bug was present since ESPResSo 4.0.0 and affected observablesCylindricalVelocityProfile
,CylindricalFluxDensityProfile
,CylindricalLBVelocityProfile
,CylindricalLBVelocityProfileAtParticlePositions
,CylindricalLBFluxDensityProfileAtParticlePositions
. -
The memory leaks in the
TabulatedBond
interactions were resolved (#3961) -
The memory leaks in the electrostatics and magnetostatics tuning functions were resolved (#4069)
-
The
system.actors.clear()
method was broken and would only remove half of the actors since 4.0.0. This is now fixed (#4037). -
Setting the NpT or steepest descent integrators with incorrect parameters no longer leaves the system in an undefined state (#4026).
-
The OpenGL visualizer had a tendency to slow down after pausing and resuming the simulation, or freezing when using the steepest descent integrator. This was due to a race condition between two threads that has been fixed (#4040).
-
Illegal LB node access is now properly caught by exceptions (#3978)
-
The ELC and MDLC actors now throw an error when a particle enters the gap region (#4051)
-
The dipolar direct sum with replica method is now disabled on periodic systems with zero replica, as it does not apply minimum image convention (#4061)
-
The DipolarP3M checkpointing mechanism was fixed (#3879)
-
A buffer overflow in the DipolarP3M tuning function lead to random failures during tuning, this is now fixed (#3879)
-
A buffer overflow in the LB code could lead to incorrect results in grids of size 9x9x9 or larger with open boundaries, this is now fixed (#4078)
-
It is no longer possible to accidentally add the same bond twice on the same particles (#4058)
-
Providing incorrect parameters to the ScaFaCoS actors no longer cause ESPResSo to crash (#4068)
-
The Boost 1.74 bug was patched (#3978)
-
The Python code is now checked with Pylint to prevent the introduction of unused code and dangerous anti-patterns (#3293, #3203)
-
The Python code and C++ code are now checked with LGTM to detect coding errors and anti-patterns (#3851, #3856)
-
The CMakeLists.txt files are now formatted automatically with
cmake-format
(#3622) -
The
Particle
struct was moved to a dedicated header fileParticle.hpp
to improve separation of concerns in the core (#3251, #3164). -
The
Observable_stat
structs were moved to a dedicated header fileObservable_stat.hpp
and decoupled from the pressure/energy/coulomb/dipolar frameworks (#3712) and made stateless (#3723) -
Observables based on particle ids have been rewritten using particle traits to decouple the
Particle
struct fromObservable
classes (#3667) -
The Python
Integrator
class was split in multiple classes, one for each integrator, with a structure similar to actor and interaction classes (#3390). This layout better reflects the structure of integrators in the core and will make it easier to include new integrators in the future. This change doesn't break the API. -
The ghost communication infrastructure was simplified (#3216, #3399)
-
Thermostats are now fully object-oriented in the core to reduce code duplication (#3438, #3444, #3461)
-
The
local_particles
global variable is no longer accessible directly (#3501) -
The Python tests now use specialized assertions to generate more helpful error messages (#3419)
-
The tutorial tests were simplified using AST to parse Jupyter notebooks (#3408)
-
The CMake logic for tutorials has been simplified (#3408, #3486)
-
The Cython interface was thoroughly cleaned up from unused imports (#3496, #3510)
-
The
ScriptInterface
backend was rewritten (#3794) -
The duplicated functions between P3M and DipolarP3M were factored out (#3879)
-
Statistical tests are no longer executed in coverage and sanitizers builds (#3999)
-
The
Utils::Mpi::gather_buffer()
function was fixed (#4075). The bug didn't affect ESPResSo. -
Clang 10 warnings were addressed (#4084)