Many body DPD on DL_MESO_DPD single-GPU

This module implement the many body DPD boundary conditions on the single-GPU version of DL_MESO_DPD.

Purpose of Module

One of the main weak point of DPD simulation is in its equation of state. For example, compressible gas or vapor liquid mixtures are difficult, if not impossible, to correctly be simulated. The many-body DPD approach allows us to overcome this limit by extending the potential of neighbour beads to a large cut off radius.

This module consists in the implementation of many-body DPD on the single GPU version of DL_MESO_DPD. The new feature will allow the simulation of complex systems such as liquid drop, phase interactions, etc.

Background Information

This module is part of the DL_MESO_DPD code. Full support and documentation is available at:

To download the DL_MESO_DPD code you need to register at https://gitlab.stfc.ac.uk. Please contact Dr. Micheal Seaton at Daresbury Laboratory (STFC) for further details.

Building and Testing

To compile and run the code you need to have installed the CUDA-toolkit (>=8.0) and have a CUDA enabled GPU device (see http://docs.nvidia.com/cuda/#axzz4ZPtFifjw). For the MPI library, OpenMPI 3.1.0 has been used during testing.

The DL_MESO code is developed using git version control. Currently, the single GPU version is under a branch named single_GPU_version. After downloading the code, checkout the GPU branch and move to the DPD/gpu_version/bin folder. Modify the Makefile to use the correct GPU architecture (sm_XX) and check if the CPP flags are supported (i.e.: -DAWARE_MPI for CUDA_aware_MPI support, -DOPENMPI for OpenMPI library, -DMVAPICH for MVAPICH library and -DHWLOC for hwloc support). Make sure nvcc is installed (or CUDA toolkit module loaded). Then, compile using make all. In short,

git clone https://gitlab.stfc.ac.uk/dl_meso.git
cd dl_meso
git checkout single_GPU_version
cd ./DPD/gpu_version/bin
# Modify Makefile according to your device and libraries
make all

There are two test cases for this module: * a water drop between two surfaces * a vapour-liquid interface.

To run the water drop case, copy the FIELD and CONTROL files from the “../tests/SurfaceDrop” directory and run using ./dpd_gpu.exe. The test case consists of simulating the evolution of fully-dispersed water droplets which will eventual agglomerate and deposit on a surface.

To run the vapour-liquid interface, copy the FIELD and CONTROL files from the “../tests/VapourLiquid” directory and run using ./dpd_gpu.exe. The test case consists of simulating the interface between vapour and liquid starting from water particle dispersed into the vapour.

For both test cases, compare the OUTPUT and the export files to verify your results.

Source Code

This module has been merged into DL_MESO code. It is composed of the following commits (you need to be registered as collaborator):