A Discrete Dislocation Dynamics library built to handle partial dislocations, and superalloy precipitates.
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.
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.
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
Additionally, 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:
singularity apps containers/singularity/pd3_nightly.sif
singularity run --app <app> containers/singularity/pd3_nightly.sifor by using the singularity shell
singularity shell containers/singularity/pd3_nightly.sif
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.
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.
For usage with C++ please see the C++ api documentation.
For usage with Python please see the Python api documentation.