PASCal Python: A Principal Axis StrainCalculator
Monthakan Lertkiattrakul, Matthew L. Evans, Matthew J. Cliffe
Abstract
The response of crystalline materials to external stimuli: whether temperature, pressure or electrochemical potential, is critical for both our understanding of materials and their use. This information can be readily obtained through in-situ diffraction experiments, however if the intrinsic anisotropy of crystals is not taken into account, the true behaviour of crystals can be overlooked. This is particularly true for anomalous mechanical properties of great topical interest, such as negative linear or area compressibility (Cairns & Goodwin, 2015; Hodgson et al., 2014), negative thermal expansion (Chen et al., 2015) or strongly anisotropic electrochemical strain (Kondrakov et al., 2017). We have developed PASCal, Principal Axis Strain Calculator, a widely used web tool that implements the rapid calculation of principal strains and fitting to many common models for equations of state. It provides a simple web form user interface designed to be able to be used by all levels of experience. This new version of PASCal is written in Python using the standard scientific Python stack (Harris et al., 2020; Virtanen et al., 2020), is released open source under the MIT license, and significantly extends the feature set of the original closed-source Fortran, Perl and Gnuplot webtool (Cliffe & Goodwin, 2012). Significant additional attention has been paid to testing, documentation, modularisation and reproducibility, enabling the main app functionality to now also be accessed directly through a Python API. The web app is deployed online at https://www.pascalapp.co.uk with the associated source code and documentation available on GitHub at MJCliffe/PASCal.