1. Introduction
1.1. what is uDeviceX?
It is a dissipate particle dynamic particle (DPD) simulation code which can model multiphase flows, rigid and soft objects, boundary conditions can be periodic or "wall". Wall boundary can be set from a user provided file. uDeviceX was ACM 2015 Gordon Bell Award Finalist.
It is written in C++ using CUDA and MPI and requires NVIDIA GPUs. Simulation are set from a configuration file and from command line options. Here is an example
udx conf.cfg 'time = { dt = 0.1 }'
Configuration files and command line options follow the syntax of
libconfig library. Some
parameters have default values and are set in
$HOME/.udx/defult.cfg
. uDeviceX outputs DPD particles,
trajectories of the objects, and averaged flow fields.
1.2. code
Code is organized in units which are executables. uDeviceX
installs several command line tools which have prefix u.
, for
example u.run
.
1.3. tests
uDeviceX comes with tests. Each test is a shell script with some conventions. To run a test
atest example.test
Typically test compiles and run one of the units and produce a text
file. atest
compares the text file with a previously stored
reference and report the result. Comparision can be exact or "fuzzy".
1.4. systems of coordinates
There are several systems of coordinates in uDeviceX. Let focus on
X
direction, Y
and Z
are similar. A global system is used as a
reference and in global system left edge of the simulation domain is
0 and right edge is xdomain()
. Each subdomain which belong to one
MPI process has its own local system of coordinates. Most of the
calculations are done in local system, for example arrays of
Particles
are using local system. Left and right edges of the
subdomains are xlo()
and xhi()
and subdomains size is xs()
. The
following holds:
xs() == xhi() - xlo() xdomain() == xs() * nx
where nx
is a number of subdomains in X
direction.
Wall is defined in sdf file system. In this system -1/2
corresponds to 0
and N-1/2
corresponds to xdomain()
where N
is
a number of cells in X
direction. Each MPI process projects from
sdf file system to texture system: a grid which is used to
interpolate a field. If T
is a size of the texture and M
is a wall
margin -1/2
in texture system corresponds to xlo() - M
and
T-1/2
corresponds to xhi() + M
.
2. Installation
A description on how to install uDeviceX can be found in the installation.
3. User Documentation
A description on how to run uDeviceX can be found in the user documentation.
4. Developer Documentation
A description of the code can be found in the developer documentation.
5. List of units
A description of units can be found in the units documentation.