Implementation of CAC using CUDA
Find a file
2025-08-27 22:07:47 -04:00
docs ENH: add Doxygen documentation 2017-12-28 11:23:40 -07:00
kernels Add force calculation kernel and fix incorrect ctest configuration for Cuda tests 2025-08-27 22:07:47 -04:00
src Update all code to use real type 2025-04-27 14:33:46 -04:00
tests Add force calculation kernel and fix incorrect ctest configuration for Cuda tests 2025-08-27 22:07:47 -04:00
.gitignore Add basic LJ potential* 2025-04-17 16:07:26 -04:00
CMakeLists.txt Update Readme and CMakeLists for new git repo path 2025-08-25 20:51:12 -04:00
LICENSE Create LICENSE 2017-12-28 09:31:15 -07:00
main.cpp Formatting change 2025-07-14 10:37:35 -04:00
README.md Update Readme and CMakeLists for new git repo path 2025-08-25 20:51:12 -04:00

⚛️ CudaCAC

CudaCAC is a Cuda accelerated implementation of the Concurrent Atomistic-Continuum (CAC) method.

Background

Molecular Dynamics

Molecular dynamics (MD) is a computer simulation method for analyzing the physical movements of atoms and molecules. The atoms and molecules are allowed to interact for a fixed period of time, giving a view of the dynamic evolution of the system. In the most common version, the trajectories of atoms and molecules are determined by numerically solving Newton's equations of motion for a system of interacting particles, where forces between the particles and their potential energies are often calculated using interatomic potentials or molecular mechanics force fields.

Concurrent Atomistic-Continuum (CAC) Method

The Concurrent Atomistic-Continuum (CAC) method is a multiscale modeling technique used for simulating materials at the nano and micro-scale. It partitions a simulation into a coarse-grained domain and an atomistic domain. This allows for the detailed, fully-resolved atomistic simulation of important regions, like those with lattice defects, while more efficiently modeling the rest of the material as a continuum. A key feature of the CAC method is its use of a unified set of governing equations and interatomic potentials across both the atomistic and continuum domains. This avoids the need for complex coupling procedures at the interface of the two regions.

Tech Stack

This project leverages a high-performance computing stack for its simulations:

  • C++: The core application logic is written in modern C++, providing a balance of performance and high-level abstractions.
  • CUDA: NVIDIA's CUDA platform is used to accelerate the computationally intensive parts of the simulation on the GPU.
  • CMake: A cross-platform build system used to manage the compilation and linking of the project.
  • Google Test: A testing framework for writing C++ tests.
  • Doxygen: A documentation generator for C++ code.

Roadmap

  • Complete basic molecular dynamics atomistic solver using Cuda using Lennard-Jones pair potential with order O(n^2) calculations
  • Implement CAC rhombohedral finite element solver
  • Adding neighbor lists with cutoff distances to reduce runtime complexity
  • Adding multi-body potential support
  • Adding support for overlaying multiple potentials

Contact

For any questions or inquiries, please contact Alex Selimov at alex@alexselimov.com or visit his website at alexselimov.com.