-
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, #4115): Python 3.6, Cython 0.29, CMake 3.16, Boost 1.66, and Python packages based on versions available in Ubuntu 20.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)
-
library
libcuda
is no longer a dependency in CUDA builds (#4095)
-
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)
-
CUDA errors now halt the flow of the program by throwing a Python exception with a clear error message (#4095)
-
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) -
The LB grid now supports slicing operations (#4195).
-
The
Electrokinetics
class now has an extra optional parameterext_force_density
, for consistency with other LB implementations (#4203) -
Cylindrical observable classes have an extra
transform_params
argument to change the orientation of the cylindrical coordinates systems and control the origin of the phi angle (#4152) -
The Reaction Field electrostatic method is now documented (#4218)
-
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)
-
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, ScaFaCoS and Stokesian Dynamics are now opt-in (#3735, #4112). If they are requested with the corresponding
-DWITH_<FEATURE>=ON
flag and their dependencies are not found, CMake will raise an error. In the original build system, CMake would silently ignore these features if the dependencies were not found, causing confusion as to what was exactly compiled. -
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) -
Observable parameters are now immutable (#4206, #4211)
-
The
system.cuda_init_handle.list_devices()
feature is now a function, and thesystem.cuda_init_handle.list_devices_properties()
function disabled in 4.0.0 was restored (#4095) -
Parameter
particle_scales
of coupling-based fieldsPotentialField
andForceField
now takes adict
object instead of a list of tuples (#4121) -
Several parameters of the
ICC
class are no longer optional:epsilons
,normals
,areas
,sigmas
(#4162) -
The
ELC
actor is no longer an electrostatics extension (#4125). TheELC
actor now takes aP3M
actor as argument and modifies it. Only theELC
actor needs to be added to the system list of actors. TheELC
actor can be removed from the list of actors.
-
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
EK_DOUBLE_PREC
feature was removed (#4192) -
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, #4079) -
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 C++ core of ESPResSo is now 95% covered by unit tests and integration tests.
-
The structure factor code is now tested against simple lattices (#4205)
-
The MMM1D GPU code is now tested (#4064)
-
The Reaction Ensemble core classes are now unit tested (#4164)
-
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
. -
Several memory leaks were fixed in the
TabulatedBond
interactions (#3961), electrostatics and magnetostatics tuning functions (#4069), and LB feature (#4108) -
The
system.actors.clear()
method was broken and would only remove half of the actors since 4.0.0. This is now fixed (#4037). -
Adding a LB thermostat when any other thermostat was already active would silently fail since 4.0.0. This is now fixed (#4116).
-
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).
-
It is no longer possible to accidentally set a non-cubic NpT integrator with P3M (#4165)
-
Illegal LB node access is now properly caught by exceptions (#3978)
-
Accessing the flux property of EK species no longer throws an error (#4106)
-
The LB grid in the GPU implementation is now automatically resized when the simulation box size changes (#4191)
-
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)
-
P3M-based actors now sanitize the user-provided
alpha
andaccuracy
parameters and no longer allow constraining thealpha
parameter during tuning (alpha
was always derived from the other parameters at the end of tuning) (#4118) -
The Debye-Hückel range check now accepts a prefactor of 0 for consistency with other electrostatic methods (#4218)
-
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)
-
The EK feature now generates VTK files that are compliant with the VTK 2.0 standard (#4106)
-
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)
-
Constant parameters
default_scale
,particle_scales
andgamma
of coupling-based fieldsPotentialField
,ForceField
,FlowField
andHomogeneousFlowField
now throw an error when an attempt is made to change their value via the class setter, instead of silently ignoring the new value (#4121) -
The observable
CylindricalLBFluxDensityProfileAtParticlePositions
now measures the correct quantity (#4152) -
Providing incorrect values to the histogram ranges in profile-based observables (e.g.
min_x > max_x
) now throws an error (#4211) -
The Boost 1.74 bug was patched (#3978)
-
A bug involving an access out of bounds was fixed in the structure factor code (#4205)
-
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)
-
Bonded interactions are now fully object-oriented in the core to facilitate the development of new interactions (#4161)
-
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)