All Projects → USCCACS → RXMD

USCCACS / RXMD

Licence: GPL-3.0 license
RXMD : Linear-Scaling Parallel Reactive Molecular Dynamics Simulation Engine

Programming Languages

fortran
972 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to RXMD

matrix multiplication
Parallel Matrix Multiplication Using OpenMP, Phtreads, and MPI
Stars: ✭ 41 (+215.38%)
Mutual labels:  parallel-computing
auryn
Auryn: A fast simulator for spiking neural networks with synaptic plasticity
Stars: ✭ 77 (+492.31%)
Mutual labels:  parallel-computing
madpy-dask
MadPy Dask talk materials
Stars: ✭ 33 (+153.85%)
Mutual labels:  parallel-computing
covid
MolSSI SARS-CoV-2 Biomolecular Simulation Data and Algorithm Store
Stars: ✭ 24 (+84.62%)
Mutual labels:  molecular-dynamics
MDToolbox.jl
MDToolbox.jl: A Julia package for molecular dynamics trajectories analysis and modeling of biomolecules
Stars: ✭ 15 (+15.38%)
Mutual labels:  molecular-dynamics
uf3
UF3: a python library for generating ultra-fast interatomic potentials
Stars: ✭ 19 (+46.15%)
Mutual labels:  molecular-dynamics
explicitSolidDynamics
Cell centred code for explicit solid dynamics in OpenFOAM
Stars: ✭ 43 (+230.77%)
Mutual labels:  parallel-computing
tinker9
Tinker9: Next Generation of Tinker with GPU Support
Stars: ✭ 31 (+138.46%)
Mutual labels:  molecular-dynamics
sph opengl
SPH simulation in OpenGL compute shader.
Stars: ✭ 57 (+338.46%)
Mutual labels:  parallel-computing
perses
Experiments with expanded ensembles to explore chemical space
Stars: ✭ 99 (+661.54%)
Mutual labels:  molecular-dynamics
muster
Massively Scalable Clustering
Stars: ✭ 22 (+69.23%)
Mutual labels:  parallel-computing
sph vulkan
SPH simulation in Vulkan compute shader.
Stars: ✭ 29 (+123.08%)
Mutual labels:  parallel-computing
ludwig
A lattice Boltzmann code for complex fluids
Stars: ✭ 35 (+169.23%)
Mutual labels:  parallel-computing
xcast
A High-Performance Data Science Toolkit for the Earth Sciences
Stars: ✭ 28 (+115.38%)
Mutual labels:  parallel-computing
course
高性能并行编程与优化 - 课件
Stars: ✭ 1,610 (+12284.62%)
Mutual labels:  parallel-computing
votca
The source of the votca-csg and xtp packages
Stars: ✭ 28 (+115.38%)
Mutual labels:  molecular-dynamics
Aboria
Enables computations over a set of particles in N-dimensional space
Stars: ✭ 83 (+538.46%)
Mutual labels:  molecular-dynamics
pytraj
Python interface of cpptraj
Stars: ✭ 106 (+715.38%)
Mutual labels:  molecular-dynamics
AdaptivePELE
AdaptivePELE is a Python package aimed at enhancing the sampling of molecular simulations
Stars: ✭ 14 (+7.69%)
Mutual labels:  molecular-dynamics
future.callr
🚀 R package future.callr: A Future API for Parallel Processing using 'callr'
Stars: ✭ 52 (+300%)
Mutual labels:  parallel-computing

rxmd : Linear Scalable Parallel ReaxFF Molecular Dynamics Simulator

rxmd has been developed to simulate large-scale Reactive Force Field molecular dynamics (MD) simulations on from commodity laptops to high-end supercomputing platforms. rxmd has been used in a various class of material studies, such as shock-induced chemical reactions, stress corrosion cracking, underwater bubble collapse, fracture of self-healing ceramics and oxidation of nanoparticles.

0. Prerequisites

rxmd is designed to be simple, portable and minimally dependent on 3rd party library. You will need 1) a Fortran compiler that supports OpenMP, and 2) MPI (Message Passing Interface) library for parallel and distributed simulation. Modern Fortran compilers natively support OpenMP, and you can find many freely available MPI libraries online. Please refer to MPI library developer website about how to install their library.

rxmd has been tested on following environments.

- Fortan Compiler:

GNU Fortran (GCC) 6.1.0
Intel Fortran (IFORT) 17.0.4
IBM XL Fortran V14.1

- MPI library:

OpenMPI 1.8.8
MPICH2
MVAPICH2 
Cray Mpich 7.6.0

1. Getting Started

To get started, clone this repository to your computer.

~$ git clone https://github.com/USCCACS/rxmd.git rxmd

2. How to build RXMD

2.1 Working Directory

Frist, change working directory to rxmd/

~$ cd rxmd

you will see following files and directories.

rxmd $ ls
DAT/        Makefile    conf/       docs/       ffield      regtests/   src/        util/
LICENSE.md  README.md   config/     examples/   init/       rxmd.in     unittests/

Here, two directories, src/ and init/, are especially important for you. src/ contains all rxmd source codes and init/ has a program and input files to generate an initial configurations for simulation.

2.2 Configure Makefiles

There is an important file called make.inc that you might need to modify according to your computing environment.

  • make.inc defines which compiler you like to use to build the rxmd and geninit executable. geninit is created inside init/ directory and is used to generate intial configuration for simulation.

  • config/ directory contains an example make.inc file called make_example.inc, and several other make.inc (make_hpc.inc,make_xl.inc) file containing predefined compiler settings for various machines. Copy the approprite file from config/ inside the rxmd directory as make.inc. Each make.inc file has several compiler flags options. Enable the flags that you want use, and also do not forget disable macros you don't want to use.

  • FC variable in make.inc is used to build software to generate intial configuration, called geninit. Any Fortran or MPI compiler that supports the stream I/O can be used here.

  • Makefile contains commands to create the executable geninit and rxmd. For example, make all creates the executable geninit inside the the init folder and rxmd inside rxmd directory. Whereas, make init creates only the executable geninit and make rxmd creates rxmd executable.

  • Each init and src has Makefile containing commands to create the executable geninit and rxmd, respectively. Makefile in rxmd directory calls these files to create the necessary executables.

Example 1) Linux Computer with Intel Compiler

Many HPC centers have Intel Fortran compiler and its MPI binding installed. If this is the case, copy the make_hpc.inc from config/ as make.inc. It should look as shown below

  • make.inc
# Intel Compiler
MPIF90 = mpif90
FC = ifort

2.3 Prepare Initial Geometry

Next step is to generate initial MD geometry. Type the make command shown below.

rxmd $ make -C init/

This compiles the standalone application geninit, read a geometry file (init.xyz by default) in init/ directory, replicate the geometry and save the entire initial MD geometry into rxff.bin file, and then place rxff.bin file in DAT/ directory.

2.4 Build RXMD

Type the command below to build the rxmd executable.

rxmd $ make -C src/

Check to see if you the rxmd executable and the initial geomerty input DAT/rxff.bin in place, then you are ready to start a simulation.

rxmd $ ls
DAT/        Makefile    conf/       docs/       ffield      make.inc    rxmd*       src/        util/
LICENSE.md  README.md   config/     examples/   init/       regtests/   rxmd.in     unittests/

rxmd $ ls DAT/
rxff.bin

3. How to run

Default input parameters are set to run a single process job. In rxmd.in, the parameter vprocs defines how many MPI ranks in x, y, and z directions. Make sure you have 1 1 1 here.

rxmd $ grep vprocs rxmd.in 
processors   1 1 1                  <vprocs>

To run single MPI rank job on a typical Linux computer, you can simply type

rxmd $ ./rxmd

How to run a multi process job depends on which MPI library you use, but most likely mpirun just works for you.

rxmd $ mpirun -np nprocessors ./rxmd

If you see following outputs, congratulations! You have everything working.

rxmd $ ./rxmd 
              rxmd has started
----------------------------------------------------------------
         req/alloc # of procs:        1  /        1
         req proc arrengement:        1        1        1
                parameter set:Reactive MD-force field: nitramines (RDX/HMX/TATB/PETN)               
                time step[fs]:    2.50E-01
 MDMODE CURRENTSTEP NTIMESTPE:  1         0       100
  isQEq,QEq_tol,NMAXQEq,qstep:     1   1.0E-07   500     1
                Lex_fqs,Lex_k:   1.000   2.000
            treq,vsfact,sstep:     300.000   1.000      100
                  fstep,pstep:   100    10
               NATOMS GNATOMS:                     168                     168
                         LBOX:       1.000       1.000       1.000
                  Hmatrix [A]:         13.180          0.000          0.000
                  Hmatrix [A]:          0.000         11.570          0.000
                  Hmatrix [A]:          0.000          0.000         10.710
               lata,latb,latc:      13.180      11.570      10.710
          lalpha,lbeta,lgamma:      90.000      90.000      90.000
               density [g/cc]:    1.8061
         # of linkedlist cell:     4     3     3
            maxrc, lcsize [A]:     3.160        3.29      3.86      3.57
    # of linkedlist cell (NB):     4     3     3
              lcsize [A] (NB):      3.29      3.86      3.57
     MAXNEIGHBS, MAXNEIGHBS10:    30   700
            NMINCELL, NBUFFER:     3    30000
    FFPath, DataDir, ParmPath:      ffield          DAT      rxmd.in
          # of atoms per type:          24 - 1          48 - 2          48 - 3          48 - 4
----------------------------------------------------------------
nstep  TE  PE  KE: 1-Ebond 2-(Elnpr,Eover,Eunder) 3-(Eval,Epen,Ecoa) 4-(Etors,Econj) 5-Ehbond 6-(Evdw,EClmb,Echarge)
        0 -9.82464E+01 -9.82464E+01  0.00000E+00 -1.369E+02  1.287E+00 -1.362E+00  5.208E-01 -1.398E-03  3.821E+01     0.00    0.00    0.00  41    0.36    0.23
       10 -9.82465E+01 -9.82467E+01  2.32025E-04 -1.369E+02  1.290E+00 -1.364E+00  5.214E-01 -1.397E-03  3.821E+01     0.08    0.00   -0.00  32    0.36    0.27
       20 -9.82466E+01 -9.82471E+01  4.80178E-04 -1.369E+02  1.287E+00 -1.366E+00  5.202E-01 -1.408E-03  3.821E+01     0.16    0.00   -0.00   4    0.36    0.25

...


       total (sec):       2.9980         2.9980
----------------------------------------------
    rxmd successfully finished

4. License

This project is licensed under the GPU 3.0 license - see the LICENSE.md file for details

5. Selected Publications

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].