forked from espressomd/espresso
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
1524 lines (1040 loc) · 57.1 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=================
= ESPRESSO NEWS =
=================
ESPResSo 4.1.4
==============
This release provides a number of corrections for the ESPResSo 4.1 line.
We recommend that this release be used for all production simulations.
The interface has not been changed between ESPResSo 4.1.3 and 4.1.4.
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
General corrections and improvements:
* Fix a bug in the LB CPU implementation that lead to incorrect
LB shear stress tensors in thermalized fluids since 4.1.0 (#3847)
* Fix a bug in the LB CPU and GPU implementations that lead to
`gamma_bulk` being used in place of `gamma_shear` in the second
order term for forces in all previous ESPResSo versions (#3885)
* Fix a bug that always set the epsilon value to zero in `P3M` and
`P3MGPU` actors since 4.0.0 (#3869)
* Fix an issue in the Python script interface that rejected integer
epsilon values in the `P3M` and `P3MGPU` actors, and the `'metallic'`
epsilon value in the `P3M` actor (#3869)
* Fix the exception mechanism in the `P3M`, `P3MGPU` and `DipolarP3M`
code to forward errors to the Python interface instead of silencing
them or running infinite loops (#3869)
* Fix range checks in the OIF code that failed to raise `TypeError`
exceptions (#3846)
Documentation and tutorials corrections and improvements:
* Explain the discrepancy between the Gay-Berne formula from the user
guide and from the original paper (#3839)
* Add note explaining the P3M algorithm works with non-metallic epsilon
values only when the box is cubic (#3869)
Build system and platform-related corrections and improvements:
* Fix several CMake warnings raised by CMake 3.17 and above (#3830, #3859)
Improved testing:
* Add a test to check the off-diagonal elements of the LB stress tensor
in long simulations of thermalized fluids (#3847)
Under the hood changes:
* Remove unnecessary memory allocation on GPU from MPI worker nodes (#3911)
ESPResSo 4.1.3
==============
This release provides a number of corrections for the ESPResSo 4.1 line.
We recommend that this release be used for all production simulations.
The interface has not been changed between ESPResSo 4.1.2 and 4.1.3.
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
Feature configuration at compile time
* The number of features which need to be defined at compile time in
myconfig.hpp has been reduced. Features without performance impact
are now always present. These are:
* ``OIF_LOCAL_FORCES``
* ``OIF_GLOBAL_FORCES``
General corrections and improvements:
* Many bonded interactions were not considered in the bond cutoff calculation:
umbrella, OIF local, OIF global, IBM tribend, IBM volcons, angle harmonic,
angle cosine, angle cossquare, tabulated angle, bonded Coulomb, subtracted
bonded Coulomb, subtracted LJ, quartic, harmonic dumbbell. This can lead
to sub-optimal skin values when such bonds are used with an inter-particle
distance that is longer than other bonded (FENE, harmonic bond, rigid bond,
thermalized distance, tabulated bond, tabulated dihedral, dihedral, IBM
triel), non-bonded (LJ, Morse, Buckingham, etc.) and long-range
(electrostatics, magnetostatics) interactions in the same system. All
bonded interactions are now considered in the cutoff calculation (#3443).
* Fix a bug in a rotation function that resulted in improper treatment of
rotation vectors with norm different from unity (#3559); all observable
classes inheriting from `CylindricalProfile` are affected
* Fix a bug in the LB GPU implementation that lead to incorrect velocity
interpolation near LB boundaries (#3593)
* Fix a bug in the LB CPU implementation that lead to incorrect grid sizes
(#3678)
* Object-in-fluid bugfixes have been backported from the OIF development
branch; in particular, the bending force between two triangles is now
torque-free (#3385)
* Rewrite the linear polymer position generator, which was inefficient and
frequently rejected valid positions (#3402, #3484, #3491)
* Fix an error in the distance calculation of the `SpheroCylinder`
shape (#3629)
* Fix a sign flip in the surface normal calculation of the `Torus`
shape (#3728)
* Fix an `IndexError` when running `system.number_of_particles()` without a
value for the argument `type` (#3496, #3494) and fix the range check (#3536)
* Fix a `NameError` when running `system.analysis.rdf()` without a value for
the argument `r_max` (#3496, #3494)
* Fix a `NameError` raised by the OpenGL visualizer when drawing bonds in
periodic images of the unit cell (#3511)
* Correctly calculate the orientation of bonds cut by the faces of the
simulation box in the OpenGL visualizer (#3511)
* Fix a memory leak in the OpenGL visualizer when drawing shapes containing
cylindrical elements (`Cylinder`, `SpheroCylinder`, `SimplePore`,
`Slitpore`) and drawing bonds between particles (#3533)
* Fix an issue in the OpenGL visualizer that drew the channel of the
`Slitpore` shape at the center of the box, instead of using the
`dividing_plane` attribute (#3728)
* Fix a bug in the ELC algorithm that ignored the Coulomb prefactor (#3731).
The same bug is also present in MMM2D but could not be fixed.
* Correctly check the P3M parameter `mesh` (#3676)
* The LB checkpointing argument `binary` now takes a boolean value (#3541);
integers values 0 and 1 are still accepted (integers are implicitly cast
to boolean values)
* Reinitialize the P3M and dipolar P3M solvers when the box size or skin
changes (#3717)
* Clarify error messages in the Steepest Descent integrator (#3763)
* Fix an incorrect formula in the `tensor_product` mode of the `Correlator`
class that always returned an array of 0's since 4.1.0 (#3781)
* Fix a runtime error when calling the `get_params()` method of a
ScaFaCoS-based actor (#3784)
Documentation and tutorials corrections and improvements:
* Fix paragraph formatting in Jupyter notebooks and update Sphinx
bibliography (#3395).
* The Sphinx documentation generation doesn't run in parallel any longer
due to plugin `sphinxcontrib.bibtex` throwing a warning when executed
with more than one thread in Sphinx v2.3.1 (#3393). The slowdown is not
significant (less than a second).
* Fix compatibility issues with Sphinx 2.4.0 (#3480), 3.0.1 (#3642, #3659)
and 1.6.7 (#3743)
* Clarify the quaternion formalism used in ESPResSo (#3392, #3748)
* The `p3m.py` sample showcased an incorrect usage of the ELC actor
(the gap region was missing). The actor was removed and a new,
stand-alone sample `visualization_elc.py` was created (#3468)
* The `visualization_constraints.py` sample showcased an incorrect
usage of the `Slitpore` and `Wall` shapes that lead to a discontinuous
potential; this is now fixed (#3728)
* Correct errors in the documentation of the constructor parameters for
shape classes `Cylinder`, `SpheroCylinder`, `Rhomboid` (#3567), for
class `System` (#3542) and for cylindrical observables (#3569)
* Correct an error in the formula of the electrostatic prefactor in the
electrostatics documentation, give the full expression of the
electrostatic prefactor in tutorials and samples (#3673)
* Improve documentation of the `Slitpore` shape and document the
`Torus` shape (#3728)
* Improve installation instructions (#3673, #3699, #3732)
* Document `BoxGeometry`-related functions (#3747)
* Explain release workflow and how to obtain released versions of
ESPResSo (#3745)
* Improve citation instructions with examples (#3745)
* General improvements (#3740, #3743)
Build system and platform-related corrections and improvements:
* The benchmarks can now be run with any MPI library supported by
ESPResSo (#3412)
* The CMake logic was simplified (#3574, parts of #3582). The minimal
required Cython version is now checked. CMake now generates an error
message if `WITH_CLANG_TIDY` is `ON` but no Clang-Tidy can be found
with a version matching the Clang version. The CUDA library installed
via the Ubuntu package `nvidia-cuda-toolkit` is now correctly detected.
* Add support for ROCm versions 3.0 (#3386), 3.1 (#3574) and 3.3 (#3623)
* Fix compiler errors with HDF5 > 1.10.2 (#3604)
* Fix compiler errors with Boost 1.73 (#3725)
* Fix a deprecation warning from the `collections.abc` that will become
an error in the upcoming Python 3.9 interpreter (#3568)
* Fix a compatibility issue with `pint` 0.10.1 in tutorial
12 - constant pH (#3423)
Improved testing:
* Fix a tolerance value that was incorrectly divided by 100, causing unit
tests to fail on i586 architectures (#3427)
* Compile CUDA code in the Travis-CI image to detect more compiler
errors (#3699). GPU tests are skipped on Travis-CI.
* Add a test for the ``Utils::get_n_triangle`` function used in OIF (#3391)
* Add a test for sample `visualization_constraints.py` (#3533)
* Add missing `LENNARD_JONES` and `GPU` feature guards in Python
tests (#3403, #3676)
* Fix a few non-functional Python tests (#3419) and sample tests (#3791)
* Improve testing of ELC (#3731)
* Improve testing of the `Slitpore` shape (#3728)
* Fix an issue in a core test (#3677)
* Add cleanup function in the checkpointing tests (#3699)
* Add a test for `fold_position()` (#3747)
* Improve testing of observables, correlators and accumulators
(#3781, #3783, #3784)
Under the hood changes:
* Remove unused code (#3556, #3738)
* Remove the unused `FindPythonModule` CMake module (#3736)
* Update the espresso-ci bot scripts (#3613)
ESPResSo 4.1.2
==============
This release provides a number of corrections for the ESPResSo 4.1 line.
We recommend that this release be used for all production simulations.
The interface has not been changed between ESPResSo 4.1.1 and 4.1.2.
However, some bugs were discovered which can affect simulation results.
Below, please find the list of changes. The numbers in brackets refer to
ticket numbers on https://github.com/espressomd/espresso
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)
* Minor fixes (#3351, #3336)
Documentation and tutorials corrections and improvements:
* Improve documentation of Monte Carlo methods (#3254, #3330)
* Minor fixes (#3342, #3334)
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)
ESPResSo 4.1.1
==============
This release provides a number of corrections for Espresso 4.1.
We recommend that this release be used for all production simulations.
The interface is mostly unchanged between Espresso 4.1 and 4.1.1; the
two exceptions are limited to these experimental features:
* `Integrator.set_isotropic_npt()`: input value `direction=[0,0,0]`
now throws an error instead of being silently changed to `[1,1,1]`
* `ParticleHandle.swimming`: deprecated value `'rotational_friction'`
is now disabled
These changes are unlikely to affect production simulations.
However, some bugs were discovered which can affect simulation results.
Below, please find the list of changes. The numbers in brackets refer
to ticket numbers on https://github.com/espressomd/espresso
General corrections and improvements:
* 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)
Documentation and tutorials corrections and improvements:
* Add more detailed installation instructions for ESPResSo and its
Python dependencies on MacOS X (#3236)
* Add links to Dockerfiles providing installation instructions for
ESPResSo and its Python dependencies on CentOS 7, Fedora 30, Debian 10
and OpenSUSE Leap 15.1 (#3244)
* Add instructions to read PDB files with `MDAnalysis`, which is one of
the recommended tools to read/write molecular dynamics topologies and
trajectories in ESPResSo; the PdbParser feature will be removed in the
upcoming 4.2 release (#3257)
* Add a new tutorial on the constant pH method; the reaction ensemble
tutorial will be removed in the upcoming 4.2 release (#3184)
Build system and platform-related corrections and improvements:
* Fix a PYTHONPATH error when ESPResSo is built in a directory
containing whitespace characters (#3238)
* Fix several issues with the command `make install` that lead to import
errors in Python (incorrect runtime path, missing shared objects,
name collision for submodule `cluster_analysis`) and deprecate the
`make install DESTDIR=/path/to/espresso` command in favor of the
standard `cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/espresso` command
(#3228), install espressomd module in a platform-dependent python
path, typically `lib{,64}/python3.X/{dist,site}-packages` (#3258)
* Fix an issue in mpiio that triggered an assertion in systems with no
bonds when ESPResSo is built with stdlibc++ range checking enabled
(#3234)
* Fix the pypresso script to correctly parse filepaths containing
whitespaces passed after a pypresso flag, such as `--gdb`, and make
conditional statements cross-platform (#3292)
Improved testing:
* Test checkpointing of integrators and thermostats (#3245)
* Fix and improve `check_cmake_install` test (#3228, #3258) and add a
new CI job to test an installed version of ESPResSo (#3228)
* Test engine LB (#3277)
* Add more LB tests (#2748)
Espresso 4.1
============
This is a feature release, i.e., new functionality is added to Espresso.
An additional focus of this release is quality assurance and
modernization. The testing of Espresso's functionality has been extended
considerably. Also, sample and tutorial scripts are now automatically
tested. Moreover, a large effort was put into modernizing the C++
simulation core. Work has been done, e.g., on particle sorting, the MPI
communication infrastructure, and the lattice-Boltzmann implementations.
Electrostatic and magnetostatic methods now have a clear and common
interface. These changes will facilitate future extensions of Espresso
and make the code more understandable to new developers.
We recommend that this release be used for all production simulations.
No further bug fix releases will be provided for the 4.0 line, and not
all fixes are present in Espresso 4.0.2.
Please carefully read the detailed list of changes below before using
this release. Issues can be reported at
https://github.com/espressomd/espresso.
Changed requirements
--------------------
* Python 2 support has been dropped. Espresso now requires Python 3.
For additional information, please see
https://github.com/espressomd/espresso/wiki/python_2_3_transition.
* Espresso now needs a C++14-capable compiler, such as GCC 4.9 and later
or Clang 4 and later.
* It is discouraged to use Espresso with Boost versions below 1.67.
Added functionality and documentation
-------------------------------------
* The distance between a shape (such as sphere) and a position can now
be queried via ``shape.calc_distance()``.
* The lattice nodes of a lattice-Boltzmann fluid can now be iterated
using ``LBFluid.nodes()``.
* A tutorial on magnetic fluids has been added.
* The stress created by the dissipative particle dynamics interaction
(DPD) can now be obtained via the ``DPDStress`` observable.
* The stress of a lattice-Boltzmann fluid can now be obtained via the
``LBFluidStress`` observable.
* A torus shape has been added.
* Two new accumulators for observables have been added:
``MeanVarianceCalculator`` and ``TimeSeries``.
* An ``ElectricPlaneWave`` constraint was added.
* Experimental support for AMD GPUs via HIP. The future of this feature
is unclear. Please do not base hardware buying decisions on its
presence.
* Visualization of slit pores in the OpenGL visualizer.
* A Weeks-Chandler-Anderson short-range potential has been added
(``WCA``).
* The external force density applied to a lattice-Boltzmann fluid
can now be changed during the simulation.
* Sanity checks for Mach limits and unequal MD and lattice-Boltzmann
time steps have been added.
* The ``system.cell_system.tune_skin()`` method now has a keyword
argument ``adjust_max_skin``. If set to ``True``, the maximum skin
to be tested will be reduced such that it is compatible with the local
box size.
* For the CPU lattice-Boltzmann implementation, the limit on the Verlet
list skin (<0.5 agrid) has been lifted.
* A new observable ``CosPersistenceAngles`` has been added for the bond
angles of a polymer (needed, e.g., for determining the persistence
length).
Feature configuration at compile time
-------------------------------------
* The number of features which need to be defined at compile time in
myconfig.hpp has been reduced. Features without performance impact
are now always present. These are:
* ``PARTIAL_PERIODIC``
* ``LB``
* ``LB_GPU`` (for builds with CUDA)
* ``IMMERSED_BOUNDARY``
* ``BOND_ANGLE``
* For most compilers, it is checked that only known features are
declared in myconfig.hpp.
* The default feature configuration applied when no myconfig.hpp is
present has been extended significantly. In particular, all tutorials
can now be run with the default feature configuration. For production
simulations, it is still recommended to use a custom myconfig.hpp
containing only necessary features. This is true in particular, if
particle rotation is not needed.
* Features that do not have automated tests now require
``EXPERIMENTAL_FEATURES`` to be defined in myconfig.hpp.
Interface changes
-----------------
* Several parts of Espresso now use a method-specific seed for random
number generation. For the following individual methods a random
number seed has to be passed using the keyword argument ``seed``:
* [Langevin thermostat](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.thermostat.Thermostat.set_langevin)
* [DPD thermostat](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.thermostat.Thermostat.set_dpd)
* [LB Thermostat](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.thermostat.Thermostat.set_lb)
* [Thermalized bond](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.interactions.ThermalizedBond)
* [Wang-Landau reaction ensemble](https://espressomd.org/html/doc4.1.0/espressomd.html?#module-espressomd.reaction_ensemble)
* [Constant pH ensemble](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.reaction_ensemble.ConstantpHEnsemble)
* [Widom insertion method](https://espressomd.org/html/doc4.1.0/espressomd.html?#espressomd.reaction_ensemble.WidomInsertion)
* Changes in the lattice-Boltzmann (LB) interface:
* By default the LB fluid is not thermalized. A temperature can be
set using the ``LBFluid``'s keyword parameter ``kT``. If
``kT > 0``, an additional ``seed`` keyword parameter has to be
provided.
* The LB thermostat gets its temperature from the LB fluid.
* The frictional coupling coefficient ``gamma`` is now a keyword
parameter of the LB thermostat.
For more detailed information on how to set up a LB fluid and
thermostat, please see https://espressomd.org/html/doc4.1.0/lb.html.
* The method for polymer creation has been replaced. Now
``espressomd.polymer.positions()`` can be used to obtain particle
positions for one or more polymer chains. Based on these positions,
polymers can be created. For an example please see
https://espressomd.org/html/doc4.1.0/particles.html#setting-up-polymer-chains.
Changed and removed functionality
---------------------------------
* The ``remove_total_momentum()`` method for lattice-Boltzmann fluids
has been removed. The overall velocity of a fluid can be changed
using the ``lb_fluid.nodes()`` iterator.
* The ``CATALYTIC_REACTIONS`` feature has been removed.
* The method for creating a polymer has been replaced.
``espressomd.polymer.positions()`` can now be used to obtain particle
positions for one or more polymer chains.
* Checkpointing has been added for the electrokinetics method.
* The global random number seed has been partly replaced by
method-specific ones. These are specified when activating the relevant
feature such as the Langevin, DPD and lattice-Boltzmann thermostats
via a ``seed`` keyword argument.
* The random number generator has been switched to Philox for most
algorithms requiring random numbers.
* Limitations on the exclusion radius have been relaxed in the reaction
ensemble method.
* A new observable ``CosPersistenceAngles`` has been added for the bond
angles of a polymer (needed, e.g., for determining the persistence
length).
* ELC has been disabled for non-neutral systems with constant potential.
* The calculation of the linear particle momentum included the forces of
the last time step. The function ``system.analysis.linear_momentum()``
now returns the sum of the product of mass and velocity of all
particles, if no lattice-Boltzmann fluid is coupled.
Performance enhancements
------------------------
* Speedup in the short-range force calculation in situations where the
short-range cutoff varies strongly for different pairs of particles,
e.g., in a bidisperse fluid.
* Speedup in particle resorting triggered when particles have moved by
more than a skin.
* Significantly faster back-transfer of particle forces from GPU-based
methods such as the GPU implementations of lattice-Boltzmann and P3M.
Bug fixes
---------
* Lattice-Boltzmann boundaries, constraints and auto_update_accumulators
are now included in checkpointing. (#2915)
* Collision detection is now checkpointed. (#2342)
* The rhomboid shape was fixed. (#2756)
* Deadlocks on certain GPUs have been resolved for the dipolar
Barnes-Hut method. (#2719)
* The visualization of dihedrals has been fixed. (#2677)
* The ``ENGINE`` implementation for CPU LB has been fixed. (#3025)
* The external force density in lattice-Boltzmann fluids is no longer
ignored in the first integration step after setting the force density.
(#3144)
* The positions of virtual sites and the charges of ICC particles are
now updated before observable calculation. (#3128)
* The forces and torques for the Gay-Berne potential have been
corrected. (#3091)
* Remove undocumented behaviour in the case of using a cylindrical
sampling area in the reaction ensemble, constant pH ensemble,
Wang-Landau ensemble, Widom-Insertion method. (#3174)
* The ELC tuning error calculation has been rearranged to produce
correct results for higher accuracies. (#3123)
New tutorials
-------------
* Tutorials for simulating ferrofluids and for using the constant-pH
method have been added.
Under the hood changes
----------------------
* Automated testing has been enhanced. It now also includes samples and
tutorials. The overall test coverage for the simulation core has
increased by ~12% since Espresso 4.0.2.
* The CPU LB and LB-particle coupling have been refactored.
* Particle resorting has been simplified and sped-up.
* The MPI callback mechanism has been simplified. Furthermore, reduction
operations such as summing values from all MPI ranks can now be
performed.
* Nearly all manual memory management and C-style arrays have been
removed.
* The rotation-related code has been simplified.
* Long-range electrostatic and magnetostatic methods now have a common
interface.
* The kernels for short-range and bonded interactions have been
simplified.
* The CMake build system has been refactored and dependencies between
different parts of the code have been made clear.
* Python code formatting: the autopep8 version now matches the one in
Ubuntu 18.04 (autopep8 v1.3.4 with pycodestyle v2.3.1).
ESPResSo 4.0.2
==============
This release provides a number of corrections for the Espresso 4.0 line.
We recommend that this release be used for all production simulations.
Please note that a sign error in tabulated interactions was fixed.
Simulation scripts which worked around this problem might have to be changed.
Below, please find the list of changes. The numbers in brackets refer to
ticket numbers on https://github.com/espressomd/espresso
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)
ESPResSo 4.0.1
==============
This release provides a number of corrections for Espresso 4.0.
We recommend that this release be used for all production simulations.
The interface has not been changed between Espresso 4.0 and 4.0.1
However, some bugs were discovered which can affect simulation results.
Below, please find the list of changes. The numbers in brackets refer to
ticket numbers on https://github.com/espressomd/espresso
Physics related corrections:
* The GPU lattice Boltzmann method produced incorrect results when
EXTERNAL_FORCES was not declared in myconfig.hpp.
This issue was present since around June 2018 (#2241)
* The temperature fluctuations for the GPU lattice Boltzmann implementation
were larger than the ones for the Cpu lattice Boltzmann implementation.
The cause was likely weak or incorrect random number generation.
It is not clear since when this issue existed.
It has been resolved by using library code for a counter-based
random number generator (Philox) rather than the existing custom code.
* Particles which were moved with the configuration changing moves (MC) implemented in the reaction ensemble
module did not get assigned a random velocity. This was not a problem if you were looking at observables
which do not depend on velocity.
* Particles which were created in the Reaction Ensemble module were assigned a random velocity which was not distributed according to the Maxwell-Boltzmann distribution. This was not a problem if you were looking at observables which do not depend on velocity. If you looked at velocity-dependent observables but used a thermostat for thermalization before taking a sample you are also fine. (#2377).
* Under some conditions, the torque on self-propelled particles
in a lattice-Boltzmann fluid was incorrect due to a sign error in the
ENGINE feature. This was the case since the introduction of the feature
(#2383)
* The SimplePore shape was incorrect (#2379)
* The parameters passed from Python to some features were narrowed to single
precision. I.e., the values used were only accurate up to the 7th-8th
significant digit. Further calculations with those values still were
done using double precision.
Classes backed by the script interface were affected. This includes
shapes, LB boundaries, pair criteria and the collision detection.
This issue was likely present since the introduction of Python support
for the relevant features. (#2379)
* Forces on LB boundaries retrieved via the LbBoundary.get_force() method
in a Python script were incorrect for the CPU LB implementation.
The GPU implementation was not affected.
It is not clear, when the issue was introduced. (#2366)
* In highly dense systems, the Widdom insertion scheme reported wrong values
(#2294)
* Fixed the Gay-Berne potential for sigma != 1. Downgraded the GAY_BERNE feature to an experimental feature due to insufficient testing (#2424)
Further general corrections and improvements:
* Fix restoring checkpointed simulations which contain exclusions (#2418)
* Allow neutral systems in reaction ensemble (#2378)
* Support re-tuning the dipolar P3M method (#2351, #1937)
* Support checkpointing of the collision detection parameters (#2342)
* Virtual sites tracers: don't complain about missing lb for non-virtual
part (#2341)
* Prevent access to non-existent lb nodes from Python
* Opengl wildcard imports + mac fix (#2295)
* Fix segfaults in virtual sites based collision detection schemes on more than one processor core (#2195)
* Fixed find_current_cell() and particle deletion (#2410, #2441)
* Fixed coordinate folding for corner cases (0 - epsilon on 32 bit architectures) (#2415)
Documentation and tutorials corrections and improvements:
* Mention how to read h5md files in the docs (#2353)
* Correct docs for setting the skin (#2340)
* Corrections to the Lennard-Jones tutorial (#2339)
* doc: Fixed Gay-Bern formula (#2234)
* Update PDF of tutorial 6 with bibliography (#2285)
Build system and platform related corrections and improvements:
* Fix Cython detection on Fedora 29 (#2371)
* Properly detect CUDA libraries if multiple are available (#2352)
* Guard tests and compilation for different feature sets
in myconfig.hpp (#2344, #2326, #2350, #2349, #2335, #2337, #2266)
* install libH5mdCore (#2277)
* Fix MPI on Ubuntu 18.04 with CUDA (#2271)
* Fix PARTIAL_PERIODIC on big-endian platforms (#2259)
* Fixes for OpenSUSE rpm build (#2255)
* ctest: add ARGS option to custom 'make check' (#2252)
* cmake: workaround for cmake bug#18349 (#2244)
* Remove some superfluous executable bits (#2242)
* Silence arm32 warnings (#2267)
* Fix unit test without SSE instructions (#2265)
* Turn off ScaFaCoS support by default. Has to be enabled explicitly using -DWITH_SCAFACOS=on in CMake. (#2417)
* Fix builds with the Gnu Scientific Library in non-standard locations (#2429)
* Resolve some floating point rounding issues on I386 32-bit (#2454)
Improved testing:
* Test the LB thermostat (#2391, #2362)
* Better stability of the LB test (#2360)
* testsuite: fix checkpoint test (#2336)
* Test the installation routine (#2268)
* Improved testing of the cylindrical lb profile observables (#2272)
* testsuite: Check planar shear profile of LB (#2263)
* Test builds without optional dependencies (#2406)
* Test builds on non-Amd64 architectures (#2401)
* Improved test coverage of the Wang-Landau reaction ensemble (#2404)
* Testing of the electrostatic pressure (#2409)
ESPResSo 4.0
============
ESPResSo 4.0 is the first release of ESPResSo with a Python interface.
I.e., the language in which simulation scripts are written is now Python,
and support for the TCL-interface has been dropped.
We recommend all users switch to ESPResSo 4.0, there will be no more fixes to
TCL-based versions.
Transitioning from TCL-based versions
-------------------------------------
The following can serve as a starting point for the new interface:
* The "Introduction" chapter in the user's guide
* The tutorials provided with ESPResSo
Both can be found at https://espressomd.org/wordpress/documentation
Please note that, starting from ESPResSo 4.0, enabling additional features in myconfig.hpp no longer changes the behavior of a simulation scripts. Features such as particle rotation and virtual sites have to be activated explicitly in the simulation scripts.
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
* Online cluster analysis based on criteria for pairs of particles
* 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
Visualisation
-------------
Espresso contains two online visualizers, one based on Mayavi, one on the OpenGl Python module.
Support for online visualization in VMD has been dropped, but particle data can be stored in file formats which VMD can read (vcf/vtf, h5md).
User-visible changes
--------------------
* When the ROTATION feature is compiled in, the rotation of a particle around each of its Cartesian axes in the body-fixed frame can be enabled
* The rotational degrees of freedom of virtual sites is now integrated. Virtual sites no longer use the quaternion attributes to store their relative orientation
* Alternatively, the orientation of the virtual site can be specified relative to that of the particle it is derived from.
* The random number generator was changed to Mersenne Twister as implemented by C++11.
* Espresso now depends on the Boost library including Boost-Mpi and a C++11 capable compiler
* The build system is now based on CMake.
Removed features
----------------
The following features are not part of the ESPResSo 4.0 release, but support is expected to be re-added in a subsequent release.
* Generalized hybrid Monte Carlo thermostat
* Virtual sites located at the center of mass of a group of particles