khinsen / pystokes

Phoresis and Stokesian hydrodynamics in Python - https://github.com/rajeshrinet/pystokes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PyStokes: Phoresis and Stokesian hydrodynamics in Python Binder

Installation Notebooks Documentation Status PyPI version Downloads License

About | News | Installation | Documentation | Examples | Publications | Support | License

Imagel

About

PyStokes is a numerical library for phoresis and Stokesian hydrodynamics in Python. It uses a grid-free method, combining the integral representation of Laplace and Stokes equations, spectral expansion, and Galerkin discretization, to compute phoretic and hydrodynamic interactions between spheres with slip boundary conditions on their surfaces. The library also computes suspension scale quantities, such as rheological response, energy dissipation and fluid flow. The computational cost is quadratic in the number of particles and upto 1e5 particles have been accommodated on multicore computers. The library has been used to model suspensions of microorganisms, synthetic autophoretic particles and self-propelling droplets.

Crystallization of active colloids

News

26th July 2019 -- PyStokes can compute hydrodynamic and phoretic interactions in autophoretic suspensions.

Installation

You can take PyStokes for a spin without installation: Binder. Please be patient while Binder loads.

To install PyStokes and its dependencies in a pystokes environment:

>> git clone https://github.com/rajeshrinet/pystokes.git
>> cd pystokes
>> make env
>> conda activate pystokes
>> make

Via pip

Install the latest PyPI version

pip install pystokes

From a checkout of this repository:

First, install the required dependencies:

Then clone the repository and use a terminal to install using

>> git clone https://github.com/rajeshrinet/pystokes.git
>> cd pystokes
>> python setup.py install

Examples

# Example 1: Flow field due to $2s$ mode of active slip
import pystokes, numpy as np, matplotlib.pyplot as plt

# particle radius, self-propulsion speed, number and fluid viscosity
b, eta, Np = 1.0, 1.0/6.0, 1

# initialize
r, p = np.array([0.0, 0.0, 3.4]), np.array([0.0, 1.0, 0])
V2s  = pystokes.utils.irreducibleTensors(2, p)

# space dimension , extent , discretization
dim, L, Ng = 3, 10, 64;

# instantiate the Flow class
flow = pystokes.wallBounded.Flow(radius=b, particles=Np, viscosity=eta, gridpoints=Ng*Ng)

# create grid, evaluate flow and plot
rr, vv = pystokes.utils.gridYZ(dim, L, Ng)
flow.flowField2s(vv, rr, r, V2s)  
pystokes.utils.plotStreamlinesYZsurf(vv, rr, r, offset=6-1, density=1.4, title='2s')
#Example 2: Phoretic field due to active surface flux of l=0 mode
import pystokes, numpy as np, matplotlib.pyplot as plt
# particle radius, fluid viscosity, and number of particles
b, eta, Np = 1.0, 1.0/6.0, 1

#initialise
r, p = np.array([0.0, 0.0, 5]), np.array([0.0, 0.0, 1])
J0 = np.ones(Np)  # strength of chemical monopolar flux

# space dimension , extent , discretization
dim, L, Ng = 3, 10, 64;

# instantiate the Flow class
phoreticField = pystokes.phoreticUnbounded.Field(radius=b, particles=Np, phoreticConstant=eta, gridpoints=Ng*Ng)

# create grid, evaluate phoretic field and plot
rr, vv = pystokes.utils.gridYZ(dim, L, Ng)
phoreticField.phoreticField0(vv, rr, r, J0)  
pystokes.utils.plotContoursYZ(vv, rr, r, density=.8, offset=1e-16,  title='l=0') 

Other examples include

Publications

Support

  • For help with and questions about PyStokes, please post to the pystokes-users group.
  • For bug reports and feature requests, please use the issue tracker on GitHub.

License

We believe that openness and sharing improves the practice of science and increases the reach of its benefits. This code is released under the MIT license. Our choice is guided by the excellent article on Licensing for the scientist-programmer.

About

Phoresis and Stokesian hydrodynamics in Python - https://github.com/rajeshrinet/pystokes

License:MIT License


Languages

Language:Python 99.7%Language:Makefile 0.3%