pach

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.