Computational Microfluidics
YMeRo is a GPU high-performance and high-throughput code aimed at simulation of flows at milli- and microscales. The code uses Dissipative Particle Dynamics method to describe the liquid and its interaction with cells and other bodies.
For more information, please refer to the online documentation: http://ymero.readthedocs.io/
- densities computed from pairwise interactions are now mass density
- internal changes:
- add fetcher with mass
- add type trait for self interacting pairwise kernels
- add support of SDPD/MDPD for objects
- fix belonging checkers for halo objects: needed rigid motions
- fix reverse exchanger data taken from halo for the extra data
- fix
ymero.restart()
will now indeed restart the simulation - interface change Renamed and moved parameter for MPI communicator in the ymero constructor
- interface change Density interaction needs a density kernel
- add SDPD interactions
- add more density kernels
- docs: add tutorials
- docs: minor fixes
- internal:
- tests are more robust to DPD noise
- proper rng per time step in DPD/MDPD
- add density outlet plugin
- add rate outlet plugin
- add experimental version of density control plugin
- support for RDMA communication
- membrane fluctuation forces: use uniform distribution instead of gaussian so that it is bounded
- membrane forces: more robust computation of Lim forces
- internal changes:
- simplify interface of interaction manager
- pairwise forces can contain only host memory variable and pass a separate handle to gpu
- pairwise interaction: compiled separately when template instances are created
- fix Lim shear forces bug: triangle invariant
- fix reset accumulated quantities in Juelicher ADE model
- fix check MPI send requests
- fix Juelicher bending forces sign
- fix Lim shear forces sign
- add possibility to compute membrane forces in double perecision
- fix wall thickness is larger when using MDPD
- internal changes:
- cell lists do not know about special channels
- add interaction manager to manage interaction channels
- fix bounce back on multiple nodes for objects
- minor fixes in documentation
- add Lim model for shear forces on membranes
- add corresponding tests
- interface change membrane interactions take only one constructor (see docs)
- fix warp reductions: all threads participate
- internal changes:
- cosmetic changes: more consistent namespace style
- membrane interaction takes a functor for dihedral computations
- refactor membrane interactions: take functors for shear and bending forces
- Internal change: add before cell list plugin task
- fix: pvs exchanger plugin: new particles are now correctly redistributed
- fix: velocity inlet plugin: new particles are now correctly redistributed
- fix: communication of persistent data to empty pvs
- fix: average plugin asynchronous message to postprocessing
- add displacement plugin
- add radial velocity control plugin
- fix reordering of extra data in celllists
- fix pvsExchanger plugin also copies persistent channels
- add test for pvsExchanger
- add test for displacement plugin
- internal changes:
- packers can copy to another packer
- defaultStream in
core/utils/cuda_common.h
- add velocity inlet plugin
- add very simple CPU marching cubes implementation in core
- clean up units
- add wall force collector plugin
- automated support of multiple GPUs on single nodes
- fix in bounce
- remove deprecate warings for python 3.7
- Adds support for different stress free shape than original mesh
- add plugin to save a channel of extra particle data (useful for intermediate quantities such as densities in MDPD)
- fix reordering of persistent extra channels in primary cell lists
- fix use local cell lists instead of primary ones in halo exchanger
- Add MDPD interaction (walls and solvent fully supported only)
- internal changes:
- generic pairwise interaction fetching
- 2-steps interaction support: extended task dependency graph
- cell lists are aware of which channels to clear, accumulate and reorder
- wip: more general object reverse exchangers
- interface change: make frozen walls takes a list of interactions
- interface change: make frozen rigid takes a list of interactions
- support for VOLTA architecture
- internal changes
- generic pairwise interaction output: accumulators
- generic pairwise_interaction: pass views
- cell lists produce views; cellinfos don not know about particles and forces
- less magic numbers
- fix: LJ potential had swapped epsilon and sigma
- separate sdf grid implementation into more general core/field
- field can be initialized from std::function
- pressure plugin uses region
- fix: stress free state can be used when the cell is grown
- fix: MembraneMesh wrapper needs GPU
- fix: the stress entries are now cleared before forces; could be cleared more by other interaction handlers
- use ymero state inside the simulation objects; do not have current time, step and dt separate in simulation
- add filtered initial conditions: allows custom regions in space to initialise uniform density particles
- add sphere initial condition
- add plugin to compute total virial pressure from stresses per particle for a given pv
- Add common YmrState object.
- interface change:
- the time step is now passed to the coordinator constructor
- the time step is not passed to any other object
- add checkpoint for permanent channels
- extra data managers are aware of the type
- add permanent channels in extra data manager
- reorganise memebrane interaction kernels:
- bending force kernels now separated from other
- 2 parameter strctures
- add Juelicher bending model
- add force saver plugin to save forces in channels
- rename uDeviceX to YMeRo
- synchronzation bug fix
- add plugin for magnetic orientation of rigid bodies
- make the stress channel name customizable
- add stress computation + tests
- perf improvement in sdf
- minor perf improvement in pairwise kernels
- compile some units
- use gtest
- interface change: wall oscillation: period is in dpd units now
- add hdf5 support for mesh dump
- allow for extra channels to be dumped together with the mesh
- add compile time switch for CUDA>9 support
- add extra force plugin
- proper MPI init and finalize
- communicator can be passed from python
- add tools python submodule
- add checkpoint/restart support for object vectors
- dumped in xdmf+hdf5 format: restart files can be viewed
- add bounce tests
- wip: xdmf support for restart
- bug fix: bounce back with substep integration
- xdmf reader
- dump walls in xdmf format
- add tests for bounce back on mesh + rigid ellipsoids
- sdf fix: merged sdf before splittinf frozen particles
- set up versioning