(parallel discrete partial dislocation + precipitate dynamics)
A Discrete Dislocation Dynamics library built to handle partial dislocations, and superalloy precipitates.
Why pd3?
This project is modern, well documented and, easy to tweak. In addition, it is rigorously unit tested. For standard DDD, it is recommended that one still uses ParaDis, however this project serves as good alternative to something like DDLab.
Running
To run pd3 studies, it is suggested that you write a program to setup your
system and boundary conditions and run with the following methods. Previous
studies are listed in src/studies and can be used as a basis for newer
studies. In order to write your own study, refer to the
API and usage.
Docker
This project is managed with the bazel build system. All dependencies and installation requirements are contained within the provided Docker container. It is heavily recommended you use this container for active development of this project. Further, it is recommended that you use docker to build the project. To run this project, use the scripts provided.
For example:
./deploy-docker.sh --stack=precipitate --study=stress_variation --config=test
or by invoking the docker commands directly:
docker-compose -f containers/docker/test.yaml run run --define=config_file=test pd3:distance-test
Singularity
Additionally, can be run through singularity. This is ideal
when running on HPC systems without having to worry about dependencies or
system libraries. To enable singularity on most systems (marcc, comet,
stampede2, and more) run module load singularity. For this, substitute
./deploy-docker.sh commands with deploy-slurm.sh, which will use
singularity by default. Alternatively compile and run tests within the
singularity container by using apps:
bash
singularity apps containers/singularity/pd3_nightly.sif
singularity run --app <app> containers/singularity/pd3_nightly.sif
or by using the singularity shell
singularity shell containers/singularity/pd3_nightly.sif
Unmanaged
You can run and install pd3 without a container. For this, you will need
bazel. To download the recommended binary for bazel,
run scripts/download_bazel.sh.
Installation
C++ library and header installation is not provided, as you are encouraged to
use the existing bazel build system. However, python installation is available
as a pip package. You can further build this package by running bazel run
pd3/tools/pip_package, and installing the resultant wheel, or by running
scripts/install_pip.sh.
Usage
C++
For usage with C++ please see the C++ api documentation.
Python
For usage with Python please see the Python api documentation.