DL_PY2F
is an open-source library for the creation of modern interfaces and data structures in Python that can interoperate with existing scientific software written in Fortran and manipulate their data.
DL_PY2F
is intended for use with Python-based software packages where data are managed using Python/NumPy and need to be accessed for computations performed by Fortran code.
A great advantage of DL_PY2F
for the application developers is that the attributes of the Python instance are conveniently retrieved by querying their names in a dictionary-like way on the Fortran side.
DL_PY2F
also provides utility tools to facilitate initialisation and enhancement of the Python instances.
DL_PY2F
is open source and released under GNU Lesser General Public License v3.0. It is available for download from the repository.
DL_PY2F
was created and implemented by You Lu at STFC Scientific Computing.
Applications using DL_PY2F
should cite:
You Lu and Thomas W. Keal, Journal of Open Source Software, in preparation
The Python-to-Fortran interoperability has been comprehensively tested using both GNU and Intel compilers.
Tools & Libraries | Min. version | Note |
---|---|---|
gcc/gfortran | 7.3 | |
OR icc/ifort | 17 | |
cmake | 3.16 | |
python3-dev | 3.8 | |
python3-numpy | 1.21.5 |
💡 The above package names are based on Ubuntu Linux. They may vary on other operating systems.
DL_PY2F
is a mixed ABI/API library to be used by another software package. Here is a prototype package which is an example demonstrating in details how to compile and use DL_PY2F
:
https://github.com/stfc/dl_py2f-example
The example also works as a test bench for validating DL_PY2F
. Please follow the instructions therein to compile and run it.
Apart from the source code on the github repository, DL_PY2F
has also been published and deployed in a launchpad.net PPA and can be installed systemwide using apt
:
sudo add-apt-repository ppa:dl-py2f/ppa
sudo apt update
sudo apt install dl-py2f
_
, the package name published on launchpad.net is dl-py2f
but not dl_py2f
.
💡 sudo
access is required for installing system-wide packages using apt
.
The use of system installed DL_PY2F
is also demonstrated in the example package.
For more information about the usage of DL_PY2F
please also read the paper: You Lu and Thomas W. Keal, Journal of Open Source Software, in preparation.
Please raise an Issue on the project's page if you have a question or find an issue about the code.
Contributions are welcome in the form of Issue/PR on github.com.
The DL_PY2F
library was created during the redevelopment of ChemShell as a Python-based package, which was funded by EPSRC under the grant EP/K038419/1. Ongoing support for the development of DL_PY2F
as part of ChemShell is provided under EPSRC grants EP/R001847/1 and EP/W014378/1, and the Computational Science Centre for Research Communities (CoSeC), via the support provided to the Materials Chemistry Consortium. We acknowledge helpful discussions and suggestions for improvement from Paul Sherwood, Joseph Thacker, and Thomas Durrant.