Skip to content

CI Status codecov Singularity Status Latest PyPI version

(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.