Fluctuating Hydrodynamics
The group has created a github organization stochasticHydroTools with a number of repositories connected to our work on fluctuating hydrodynamics of particle suspensions. Codes associated with IBAMR are released under IBAMR's github and those developed using BoxLib/AMReX are under BoxLib's github or the newer AMReX github, and codes implemented using UAMMD are typically released on the UAMMD github.
- The RigidMultiblobsWall repository contains python and pyCUDA codes for performing Brownian Dynamics of rigid bodies in the presence of a single wall, as described in the papers "Brownian Dynamics of Confined Rigid Bodies" (stochastic but not scalable to many bodies) and "Hydrodynamics of Suspensions of Passive and Active Rigid Particles: A Rigid Multiblob Approach" (scalable but without fluctuations) and "Brownian Dynamics of Active Sphere Suspensions Confined Near a No-Slip Boundary" (with fluctuations but without rotations and only at Rotne-Prager level, i.e., single blob per body). Work is presently underway to add fluctuations efficiently and accurately to the many-body pyCUDA rigid multiblob code including particle rotations.
- The Positively Split Ewald (PSE) method is developed by collaborators Andrew Fiore and James Swan (MIT Chemical engineering) and is a plug-in to the GPU library HOOMD that can efficiently sample Brownian increments for bulk colloidal suspensions (3D periodic systems) up to the Rotne-Prager level. Another fast GPU implementation is provided by Raul Perez in UAMMD, along with an easy-to-use python interface.
- We are in the process of developing methods for electrostatics and Stokes flow in doubly-periodic geometries. For electrostatics, a fast GPU implementation of a spectral Ewald method for triply and doubly-periodic geometries is provided by Raul Perez in UAMMD, along with an easy-to-use python interface.
- The Fluctuating Immersed Boundary method can perform Brownian Dynamics of suspensions of colloids or elastic structures such as polymer chains in confined geometries, as described in the paper "Brownian Dynamics without Green's Functions". A simple GPU-enabled implementation for periodic domains only is available in UAMMD. A recent but still-undocumented implementation including boundary conditions and electrostatics, suitable for electrolyte solutions is available in FHDeX. The original FIB code including boundary conditions was developed as an add-on to the state-of-the-art parallel C++ Immersed Boundary Adaptive Mesh Refinement IBAMR framework developed and maintained by collaborator Boyce Griffith, which implements internally the required stochastic stress tensor generator (for any combination of no-slip, slip and periodic boundary conditions), as explained in the paper "Staggered Schemes for Fluctuating Hydrodynamics". See examples/IB/explicit/ex5 for an example that advects particles (markers) by thermal velocity fluctuations, and examples/navier_stokes/ex6 for an example that advects a scalar field (concentration or temperature) with thermal fluctuations in a Boussinesq model.
- The GPU code fluam developed by collaborators Rafael Delgado-Buscalioni and Florencio Balboa implements compressible and incompressible staggered-grid fluctuating hydrodynamics for binary fluid mixtures and for particle suspensions. For incompressible hydrodynamics only periodic boundary conditions are supported because the code relies on FFT techniques for solving the Stokes equations. A newer and more flexible implementation for neutrally buoyant particles is available in UAMMD.
- The SRBD
code implements the Split Reactive Brownian Dynamics
algorithm proposed in the paper "Efficient
Reactive Brownian Dynamics". It can be used to perform
particle-based reaction-diffusion modeling (SRBD, S-BD-RME); see BoxLib
Reaction-Diffusion module described below for cell-based
modeling (RDME/FHD).
- The MixingIBAMR
code is an extension and improvement of examples/navier_stokes/ex6
included in the IBAMR
framework, and contains example input files that we
used for performing simulations of experimental measurements of
giant fluctuations in binary fluid mixtures in microgravity and in
Earth gravity. These simulations and the algorithms used are
described in the papers "Multiscale
temporal integrators for fluctuating hydrodynamics", with
comparisons to experiments described in the papers "Dynamic
scaling for the growth of non-equilibrium fluctuations during
thermophoretic diffusion in microgravity" and "Slowing-down
of non-equilibrium concentration fluctuations in confinement".
- The BoxLib
repository contains parallel finite volume solvers
for the compressible,
incompressible, and low
Mach number fluctuating hydrodynamic equations for fluid
mixtures, as well as reaction-diffusion
systems, implemented in the Fortran binding of the BoxLib
framework developed by the group of collaborator John
Bell at LBNL. An add-on BoxLib
Low Mach module for staggered-grid
low Mach number
fluctuating hydrodynamics of multispecies liquid mixtures is
available publicly on github. An add-on BoxLib
Reaction-Diffusion module implements the methods
described in the paper "Stochastic
Simulation of Reaction-Diffusion Systems: A
Fluctuating-Hydrodynamics Approach". Note that BoxLib has
now been renamed and restructured as AMReX.
Immersed Boundary Method and CFD
- The python/C++/matlab SlenderBody code written by Ondrej Maxian implements a method for periodic suspensions of slender semi-flexible fibers, as described in the paper "An integral-based spectral method for inextensible slender fibers in Stokes flow".
- The MATLAB+MeX DFIB code written by Bill Bao implements the divergence-free IB method described in the paper "An Immersed Boundary Method with Divergence-Free Velocity Interpolation".
- The MATLAB+Mex FBIM
code written by Bill Bao implements the fluctuating
boundary integral method in two dimensions, as described in the
paper "A fluctuating boundary
integral method for Brownian suspensions".
- The RigidBodyIB
code contains the stand-alone C code MobilityFunctions.c
that contains the empirical fits of the pairwise marker mobility
(documentation is in comments), as described in the paper "An
immersed boundary method for rigid bodies". The rigid-body
algorithms described in the followup paper "Hydrodynamics
of Suspensions of Passive and Active Rigid Particles: A Rigid
Multiblob Approach" (see in particular Section III) are part
of the RigidBAMR code
which is fully integrated into IBAMR, see these examples
and codes.
- The IBMethod
repository contains some example/tutorial Matlab
codes, including code for the new 6pt and 5pt immersed boundary
kernels used in our work, as described in a recent note "A
Gaussian-Like Immersed Boundary Kernel with Improved
Translational Invariance and Smoothness" by Bao, Kaye and
Peskin [ArXiv:1505.07529].
Hard-Particle packing Codes
- Here are some old but still very efficient precompiled
executables for generating packings of spheres, ellipsoids
and super ellipsoids. These were developed during my Ph.D.
research and you should consult my Ph.D.
thesis if you plan to use them.
- If you wish to modify the codes yourself you should instead use
the simpler but still reasonably efficient C++
sphere packing code.