From cad74747bfbd503252650a2de25ccde73f739c6b Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Mon, 25 Aug 2025 20:51:12 -0400 Subject: [PATCH] Update Readme and CMakeLists for new git repo path --- CMakeLists.txt | 2 +- README.md | 43 +++++++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb27a81..b7394b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_OBJECTS 0) # Add Vec3 as a dependency include(FetchContent) FetchContent_Declare(Vec3 - GIT_REPOSITORY https://www.alexselimov.com/git/aselimov/Vec3.git + GIT_REPOSITORY https://forge.alexselimov.com/aselimov/Vec3.git ) FetchContent_GetProperties(Vec3) diff --git a/README.md b/README.md index 9236f1b..d8435ec 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,35 @@ -# C++ Project Template -When setting out on a new project in C++ there are a few configuration steps -which need to be completed prior to actually getting down to writing code. -This repository is going to be a C++ project template that already has the -following components: +# ⚛️ CudaCAC -- Directory Structure -- Make Build (CMake) -- CUDA integration -- Unit Test Framework (Google Test) -- API Documentation (Doxygen) +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](mailto:alex@alexselimov.com) or visit his website at [alexselimov.com](https://alexselimov.com).