Skip to content

Proceedings 2021 ESPResSo meetings

Jean-Noël Grad edited this page Nov 23, 2021 · 5 revisions

Proceedings of the 2021 ESPResSo meetings

2021-11-23

Bonds storage

  • bonds are currently stored on single particles
    • requires a reduction of ghost forces
    • increases the complexity of checkpointing
  • by storing bonds on all particles, there is no longer a need for reduction, and the forces could be calculated in parallel
  • deleting particles is dangerous:
    • risk of dangling pointers if the bonds the particle is involved in are not deleted first
    • reaction methods work around that by changing the particle type
  • proposed new interface: system.bonds[harmonic].insert([p0, p1])

Lattice-Boltzmann

  • ESPResSo relies on the collide-stream (push) scheme, other LB software use the stream-collide (pull) scheme
  • both schemes should give the same results, but the scheme interacts with particle coupling and Lees-Edwards

2021-11-02

Summer school summary

  • 92 registered participants
  • unexpectedly low turnout for online hands-on sessions
  • technical aspects of the school were not 100% ready on Monday (e.g. tutorial workstations)

New bonded interactions framework

  • bonds are now immutable
  • bond ids are still exposed
  • removed a lot of custom communication code
  • currently, bond information is still stored on a single particle, storing it on all bonded particles would help remove a MPI reduction and would allow parallel force calculation

LB/EK

  • LB and EK share the lattice structure, this shared ownership needs to be visible from the python side, for example with:
lattice = Lattice(agrid=0.5)
lb = LBFluidWalberla(lattice=lattice, kT=1, seed=42)
ek = AdvectionDiffusion(lattice=lattice)
  • adding or removing a boundary in the middle of a simulation is allowed, although it's not momentum-conserving, and the velocity of the fluid node needs to be manually set to e.g. the old slip velocity
  • the code should issue a warning when the box is not fully periodic

2021-08-31

Summer school

  • tutoring
    • 5 tutors are needed
    • 20 online participants (3 online groups of 7)
    • 15 onsite participants (1 group)
    • tutorials: LJ, raspberry electrophoresis, active matter, reactions, lbmpy
  • Zoom or VS Code for tutorials
    • VS Code installation can be tricky
    • try running the tutorials in VS Code or PyCharm (for autocompletion) with remote control in Zoom (@Carl)

Progress updates

  • waLBerla: thermalized LB works on CPU, pressure tensor still missing, currently working on boundary conditions and GPU support
  • electrokinetics: currently works on CPU without reactions and boundary conditions
  • Lees-Edwards: works for particles in the N-squared system, the LB part is currently being implemented in waLBerla

Coding day

  • doodle poll
  • the LB boundary per node ticket (#4252) can be shared among multiple people

2021-08-10

Coding day tasks

  • #4052 LB: small details (Carl)
  • #4052 polymer: Zimm model probably can't be simulated in an afternoon with long polymers (David?)
  • #4052 Langevin: velocity autocorrelation is missing (Patrick)
  • #4260 LJ (Mariano)
  • #4321 reaction methods hidden particle type (Peter?)
  • #4315 Verlet list (any C++ expert in the team)
  • Lees-Edwards (Sebastian, Rudolf)
  • Ekin, quaternion (Christoph)
  • walberla Ekin (Alex)
  • walberla LatticeModel (JN)

MPI discussion follow-up

  • libraries that could help with parallelization and memory layout: HPX, kokkos

2021-07-20

Summer school program

  • upload program on CECAM

Tutorials

  • create a visualization tutorial for Paraview and VMD
  • review the constant pH refactor and tutorial (@jngrad)
  • the LJ and Langevin tutorials still need some work

MPI discussion follow-up

  • the current custom MPI infrastructure is difficult to maintain and has a lot of code (especially for managing ghost communication)
  • OpenMP would benefit from shared memory architectures, but only on a single node
  • kokkos could be used to abstract the communication logic and memory layout

2021-06-29

ESPResSo summer school 2021

Decision on format

  • hybrid: offline for people who can safely travel to Germany, online for the other
    • max 10 people in CIP pool and seminar room, depending on rules that will be released in September
    • lectures: live if the speakers are present, otherwise possibility to record in advance

State of tutorials

  • error analysis: still waiting for a review on part 2
  • LB tutorial: waiting for a review
  • reaction tutorial: still a WIP
  • active matter: for next coding day

Coding day

  • do a poll (@Rudolf Weeber)

MPI vs. shared memory parallelization

  • the custom MPI framework in ESPResSo makes maintenance of the script interface complex, especially regarding checkpointing
  • OpenMP benefits from shared memory on NUMA architectures; simulations would be limited to up to 32 dual-threaded cores depending on hardware
  • from a maintenance point of view, this change would be irreversible
  • consult the community on the mailing list

Future of checkpointing

  • object containers (e.g. LB boundaries, shape-based constraints, in the future bonded interactions) are not restored on all MPI nodes when reloading a simulation from a checkpoint file (#4280)
  • possibility: only store the system state (particles, interactions, random seeds, box_l, LB, observables in accumulators, total simulation time), then let the user re-run the script with this state as initial conditions
  • for now, disable checkpointing for object containers (#4287)

Future syntax for particle access, removal/replacement of []-operator from system.part

  • system.part[:10] returns a range of all particles whose id is less than 10, instead of returning the first 10 particles
  • this can lead to unexpected results when particles ids are not consecutive and starting from zero
  • proposal: use system.part.by_id(10) and disable the []-operator

2021-06-08

Coding Day wrap-up

  • pair programming: mixed feelings but overall went reasonably well, helpful when one member of the team has less experience, VS code is useful once people are familiar with the Teams interface
  • in 4.2-dev, ekin is tightly coupled to the LB GPU code, which prevents refactoring the ekin setters; the plan is to make the setters private to prevent users from accidentally modifying the ekin properties after ekin was initialized (@Christoph)
  • waLBerla changes have side effects that need to be resolved (@Ingo, @Michael)
  • the global variables communication code was completely rewritten
  • LB tutorial split:
    • short Langevin tutorial
    • shorter LB tutorial (LB theory, Poiseuille flow)
    • polymer+langevin tutorial (check ACF integration limits with the criterion explained in the error analysis tutorial part 2, change Rg, Rf, etc. plots to log-log scale)
    • @David
  • constant pH tutorial: work in progress
  • constant pH refactoring: merged
  • Wang-Landau: the class is tightly coupled to the other reaction methods, which slows down development of the other classes

Core team Kanban board

  • keeps track of big projects with high priority

Summer school 2022

  • CECAM deadline: 18 July 2021
  • possible topics: waLBerla, Shan-Chen, reaction-advection, ekin, multiphase/multiscale
  • invite someone from the datascience community, like pandas?

EKin in Walberla

2021-05-18

Packaging

  • Ubuntu, Debian (#4185)
  • with a PPA, one can download the .deb file directly from the browser
  • depending on the maintenance costs, we could later consider providing ESPResSo in one of the Ubuntu repositories instead of a PPA
  • create a stable build and a nighly build (e.g. for summer schools)

waLBerla progress

Integration

  • ESPResSo does the collision first and the streaming second, waLBerla does it the other way around, this has led to instabilities until recently
  • waLBerla can use the collide-push schema, but with degraded performance
  • still missing in our walberla branch: stress tensor and electrokinetics

Pystencils EK

  • integrate the ekin kernels in our walberla branch
  • coordinate between Ingo, Michael, Alex, Rudolf

LB boundaries per node

Reaction algorithms

  • #4251
  • discuss plans for the Reaction code with the Peter group
  • look into improving runtime of the constant pH tutorial
  • the Wang-Landau algorithm is not used at the ICP

Coding Day

  • ~10 ICP participants and ~5 external contributors
  • consider pair programming for PR reviews or knowledge transfer with C++/python/git

Works in progress

  • Error analysis tutorial (#4174) (@jngrad for the review, @Carl)
  • Bond refactoring (#4225) (@jngrad for the PR draft, @Carl to finalize it)
  • Gibbs Ensemble (#4243) (@Rudolf for the review)

2021-04-27

LBs: similarities and differences

  • test with the time evolution of a LB cell force impulse
    • LB GPU, lbmpy agree
    • different result for LB CPU
    • ESPResSo+waLBerla streams forces one time step later, could explain the particle coupling instability in the thermalized case
    • run the test again (@Kai)
  • ESPResSo only uses shear relaxation, other relaxations constants are zero

Summer school

  • Lectures/talks asked from external speakers

    • contact the speakers to confirm attendance (@Rudolf)
  • What tutorials do we offer (and hence have to have in good shape)

    • LB tutorial needs to be split (ICP, @Alex S)
    • active matter tutorial needs to be converted to a Jupyter notebook (ICP, @Christoph)
    • constant pH tutorial requires extra features (@Peter, @David)
    • blood cell tutorial needs to be developed externally
    • blood cell feature isn't fully integrated in ESPResSo 4.2

Moving the documentation to GitHub pages

Next coding day

  • doodle

2021-04-06

Summer school

  • update CECAM page and espresso website: confirm workshop, but explain the decision for online/offline will be taken in July
  • decide in July 1st if the school takes place online
  • possibility of hybrid workshop, with live recording of lectures and invited talks
  • contact invited speakers to confirm their presence and list them on the CECAM page

New ESPResSo developer's guide

  • the developer's guide is now available in the wiki
  • relevant information from the website and user guide were moved to the wiki
  • can be edited by anyone in the ESPResSo organization

Coding day

  • most PRs from the last coding day have already been merged
  • the structure factor PR is still open, consider implementing a second structure factor based on an integral

2021-02-23

waLBerla moving boundaries

  • coupled fluid-particle simulation: velocity boundary condition for LB, hydrodynamic force on particles
  • map ESPResSo virtual sites (VS) to waLBerla physics engine (PE) particles
  • raspberries with many VS can be replaced by a single VS at the center of a moving sphere/ellipsoid/cylinder using PE

Propagation refactoring

  • ticket: #4015
  • make a clear division between Hamiltonian and numerical solver
  • consider replacing "integrator + thermostat" by "equation of motion"
    • e.g. "velocity Verlet + Langevin thermostat" -> "Langevin Dynamics"
    • at the moment, most thermostats in ESPResSo can only be coupled to a single integrator
  • use propagator kernels
  • separate translation propagation from rotation propagation
    • e.g. NpT velocity Verlet for translation and Langevin Dynamics for rotation (NpT currently doesn't propagate rotation)
    • allow Langevin Dynamics for most particles and LB for inertialess tracers (currently not possible)
  • challenges:
    • some are single particle functions (e.g. velocity Verlet), some are collective (Stokesian)
    • most propagators can easily be split in translation and rotation, but Stokesian does both simultaneously
    • VS and RATTLE need to be integrated

Coding day

  • organize an online coding day

2021-02-02

Introducing MD reduced units in tutorials

  • consider writing a self-contained units tutorial
  • to avoid overburdening the LJ tutorial, link to the units tutorials (or the units section in the user guide)
  • tutorial should link more often to user guide, and make clear what the expected prior knowledge is
  • open question: enforcing dimensions in C++ and python to prevent e.g. adding a value with units of [length]/[time] to a value with units of [length]

2021-01-12

Which GPU features should be kept in the waLBerla release?

  • P3M: keep
  • MMM1D: keep
  • DDS: drop if the MPI-parallel version is fast enough
  • Barnes-Hut: remove due to maintainability issues

Coding day summary

merged:

  • matrix vector operations with Boost (#4034)
  • list of actors cannot be cleared (#4033)
  • remove strcat_alloc() (#4020)
  • throw if particles enter ELC gap region (#4009)
  • save particle state in a dict (#3916)
  • central chapter for thermostats and integrators (#3913)
  • improve error message in number_of_particles_with_type() (#3908)
  • rotational diffusion test fails with Brownian Dynamics (#3875)

partially fixed:

  • make particle id less prominent in docs (#4029)

awaiting review:

  • unite BROWNIAN_PER_PARTICLE and LANGEVIN_PER_PARTICLE (#4008)

started:

  • waLBerla initialization with viscosities and relaxation rates (#4028)
  • add orientation to cylindrical Observables (#4023)
    • LB observables are undocumented and unintuitive, should be renamed and patched
  • split LB tutorial into LB, polymer and Langevin simulation tutorials (#3939)
    • LB: Poiseuille flow
    • Langevin: monomer diffusion (use MSD and GK), show Maxwell distribution
    • polymer: Flory theory, Rouse and Kirkwood-Zimm diffusion using Langevin resp. hydrodynamics

unassigned:

  • doxygen documentation for Quaternion and Matrix (#4048)
  • investigate switching integrator per particle (#4015)
  • installation instructions for Windows Subsystem for Linux (#3094)

Computing infrastructure

  • latest NVIDIA driver update 450.102.04 blocked condor jobs and blocked CI
  • the nvidia/cuda:11.0-devel-ubuntu20.04 Docker image doesn't work properly anymore, the issue comes from the compat shared libraries
Clone this wiki locally