E-CAM Verlet_list_for_ODE module

The Verlet_list_for_ODE module introduces Verlet-list for the rigid-body dynamics Open-Dynamics-Engine software.

Purpose of Module

Rigid-body dynamics is useful for mechanical articulated systems. In addition, the tool allows the user to simulate complex shape and resolve excluded volume constraints. It is used in the industry of video games to accurately reproduce physics. However, a software like Open-Dynamics-Engine computes pairwise overlap every time-step. The engine starts with a partition of the space and then loops over all the blocks of partition. For each blocks it runs nested loops to check the overlaps between the objects inside the block.

The module implements external functions that can be used to compute the Verlet-list. Therefore, the user does not call the pairwise overlap check every time-step. He only needs to loop over the Verlet-list with the pairwise objects within a given cut-off distance. However, the Verlet-list has to be updated according to the displacement length of the objects.

The module can be used to speed-up the Open-Dynamics-Engine simulation of polymers and complex objects system.

We test the module with two examples: chromatin fiber and bacterial circular DNA. Chromatin fiber is an assembly of DNA wrapped around nucleosomes that compact the genome. We model the DNA at the scale of 10.5 base-pair (one helix turn) as an articulated system. The nucleosomes is built with complex shape. We run a Langevin dynamics and check that our Verlet-list implementation gives the same results Open-Dynamics-Engine would give.

Background Information

You can find a detailed description on the Verlet_list_for_ODE GitLab repository.

Building and Testing

First of all you need to download and build the 0.16 version of Open-Dynamics-Engine. You can find the steps on the Verlet_list_for_ODE GitLab repository.

In order to compile the two examples (tests) I provide a template Makefile you can find at the same location that the source code. You need C++11 in order to use pseudo-random number generator.

It has OpenMP acceleration, edit the Makefile to enable it. The example uses threads from std as well.

Before the compilation you can clean the previous build with make mrproper command. The Verlet-list implementation returns the number of collisions that can be confronted with the result returns by Open-Dynamics-Engine.

Source Code

The source code and more information can be find at Verlet_list_for_ODE GitLab repository.