AiiDA plugin for the OpenMX DFT code.
pip install aiida-openmxTo simplify the use of pseudopotentials and orbital bases in aiida-openmx, aiida-pseudo and aiida-basis have support for OpenMX's VPS pseudopotential and PAO pseudoatomic orbital formats respectively.
For high-throughput studies, it is additionally useful to create PseudoPotentialFamily and BasisSet AiiDA Groups, which hold many pseudopotentials and orbital bases as well as various metadata.
As an example, lets create a PseudoPotentialFamily for OpenMX's soft PBE19 pseudopotentials and a BasisSet for OpenMX's soft 'standard' recommendation.
First, we collect the appropriate .vps pseudopotentials in a directory:
export OPENMX_SOURCE=$HOME/openmx3.9/ # Path to the extracted OpenMX source code on your computer
mkdir PBE_19_soft # Directory to hold the .vps files
cp ${OPENMX_SOURCE}/DFT_DATA19/VPS/*PBE19.vps ./PBE_19_soft/ # Copy non-hard/soft .vps files
cp ${OPENMX_SOURCE}/DFT_DATA19/VPS/*PBE19S.vps ./PBE_19_soft/ # Copy soft version of hard/soft .vps filesNext, we'll create a PseudoPotentialFamily which contains all of the pseudopotentials in our directory.
First, run python, ipython, or verdi shell.
Then, run something like the following code:
from aiida_pseudo.groups.family import PseudoPotentialFamily
from aiida_pseudo.data.pseudo import VpsData
PBE_19_soft_family = PseudoPotentialFamily(
dirpath='./PBE_19_soft/', # Directory where we copied our .vps files
label='OpenMX/19/PBE/S', # Name of the PseudoPotentialFamily in the AiiDA database
description='OpenMX PBE19 (soft)' # Longer description of what the PseudoPotentialFamily contains
pseudo_type=VpsData # AiiDA data type for VPS pseudopotentials
)We can then check that the PseudoPotentialFamily is listed in our AiiDA Groups:
verdi group list -a PK Label Type string User
---- ----------------- ------------- ---------------------
1 OpenMX/19/PBE/S pseudo.family [email protected]
Great! Now we can set up our pseudoatomic orbitals in a similar manner.
Because it's a bit trickier to collect all the appropriate files in this case, aiida-openmx provides some PAO tables based on OpenMX's recommendations.
export OPENMX_SOURCE=$HOME/openmx3.9/
export AIIDA_OPENMX=$(python -c "import pathlib; import aiida_openmx; print(pathlib.Path(aiida_openmx.__file__).parent)")
mkdir standard_19_soft
for paofile in $(cat $AIIDA_OPENMX/data/pao/standard_s.txt); do cp $OPENMX_SOURCE/DFT_DATA19/PAO/$paofile ./standard_19_soft/; doneFinally, we'll create a BasisSet which contains all of the pseudoatomic orbitals in our directory.
First, run python, ipython, or verdi shell.
Then, run something like the following code:
from aiida_basis.groups.set import BasisSet
from aiida_basis.data.basis import PaoData
standard_19_soft_set = BasisSet(
dirpath='./standard_19_soft/', # Directory where we copied our .pao files
label='OpenMX/19/standard/S', # Name of the BasisSet in the AiiDA database
description='OpenMX standard 19 (soft)' # Longer description of what the BasisSet contains
basis_type=PaoData # AiiDA data type for PAO bases
)We can then check that the BasisSet is listed in our AiiDA Groups:
verdi group list -a PK Label Type string User
---- -------------------- ------------- ---------------------
1 OpenMX/19/PBE/S pseudo.family [email protected]
2 OpenMX/19/standard/S basis.set [email protected]
If you would like to contribute to the development of aiida-openmx, please clone this Github repository and install aiida-openmx as follows:
git clone https://github.com/zooks97/aiida-openmx .
cd aiida-openmx
pip install -e .[pre-commit,testing,docs] # Install extra dependencies
pre-commit install # Install pre-commit hooks
pytest -v # Discover and run all testsSee the developer guide for more information.
MIT