# iprPy High Throughput Computational Framework

## Description

The iprPy package is a computational framework supporting open source calculation methods. The framework focuses on making the barriers for usage as low as possible for both users and developers of calculations. In particular, the methods are

fully documented,

designed to be transparent to end users,

produce results in formats that are both human and machine readable,

modular in design supporting the incorporation of new methods,

and can be easily integrated into workflows.

The framework consists of the following major components

Calculation methods, which exist as Python scripts and fully detail how to perform a single independent calculation.

Calculation classes that manage metadata associated with the calculations. These classes integrate the calculation method scripts into the framework and allow for the calculations to be accessed and executed in a variety of ways.

Calculation subsets that provide common handling of input/output parameter sets that are shared by multiple calculations.

Built-in workflow tools that make it possible to run the implemented calculations in high throughput and store/access the results in databases.

iprPy was originally created for the NIST Interatomic Potentials Repository (i.e. I.P.R. Python) for collecting and performing calculation methods that evaluate how different classical interatomic potentials predict A variety of basic materials properties. As such, the majority of included methods are centered around performing classical atomistic calculations. It should be noted, however, that the framework design can support any type of underlying calculation as long as the calculation method can be represented as a python function that can be executed independently from any other calculation method.

## Documentation Sections

A quick introduction describing why you would want to use the iprPy framework.

Gives details on how to install and set up iprPy.

Describes the basic components of iprPy.

Learn about the different components of the iprPy framework and how to run calculations.

Describes the implemented calculations and what input parameters the calculation scripts use.

Jupyter Demonstration Notebooks

Provides demonstration Jupyter Notebooks for the implemented calculations.

This describes the components of iprPy in more detail for those who want to contribute to the package by adding content.

The Python docstring information for the functions and classes of iprPy.

## Package Tutorials

- Introduction to iprPy
- Setup
- iprPy Package Components
- Calculations
- Running a single calculation
- Run a Jupyter Calculation Notebook
- Database Setup
- High Throughput Operations

- Extending iprPy
- Adding new calculation styles
- Adding new subset styles
- Adding new buildcombos styles

## Implemented Content

- Calculation Styles
- E_vs_r_scan
- crystal_space_group
- diatom_scan
- dislocation_SDVPN
- dislocation_monopole
- dislocation_periodic_array
- elastic_constants_static
- isolated_atom
- phonon
- point_defect_diffusion
- point_defect_static
- relax_box
- relax_dynamic
- relax_static
- stacking_fault_map_2D
- stacking_fault_static
- surface_energy_static

- Jupyter Demonstration Notebooks
- isolated_atom - Methodology and code
- crystal_space_group - Methodology and code
- diatom_scan - Methodology and code
- dislocation_monopole - Methodology and code
- dislocation_monopole - Methodology and code
- dislocation_monopole - Methodology and code
- elastic_constants_static - Methodology and code
- isolated_atom - Methodology and code
- point_defect_static - Methodology and code
- relax_box - Methodology and code
- relax_dynamic - Methodology and code
- relax_static - Methodology and code
- stacking_fault_map_2D - Methodology and code
- stacking_fault_static - Methodology and code
- surface_energy_static - Methodology and code