The CP2K plugin for the AiiDA workflow and provenance engine.
If you use pip
, you can install it as:
pip install aiida-cp2k
Following the philosophy to ''enable without getting in the way'', this plugin provides access to all of CP2K's capabilities through a small set of well-tested features:
- A full CP2K input has to be provided as a nested Python dictionary (example):
params = {'FORCE_EVAL': {'METHOD': 'Quickstep', 'DFT': { ... }}}
calc.use_parameters(ParameterData(dict=params))
- Section parameters are stored as key
_
in the dictionary:
xc_section = {'XC_FUNCTIONAL': {'_': 'LDA'}}
- Repeated sections are stored as a list:
kind_section = [{'_': 'H', 'BASIS_SET': 'DZVP-MOLOPT-GTH', 'POTENTIAL': 'GTH-LDA'},
{'_': 'O', 'BASIS_SET': 'DZVP-MOLOPT-GTH', 'POTENTIAL': 'GTH-LDA'}]
- Most data files (basis sets, pseudo potentials, VdW, etc.) are auto-discovered from CP2K's data directory.
dft_section = {'BASIS_SET_FILE_NAME': 'BASIS_MOLOPT', ...}
- Additional data files can be added as AiiDA SinglefileData (example):
water_pot = SinglefileData(file="/tmp/water.pot")
calc.use_file(water_pot, linkname="water_pot")
- The start geometry can be provided as AiiDA StructureData (example):
atoms = ase.build.molecule('H2O', vacuum=2.0)
calc.use_structure(StructureData(ase=atoms))
- Alternatively the start geometry can be contained in the CP2K input (example):
coord_section = {' ': ['H 2.0 2.0 2.737166',
'H 2.0 2.0 2.000000']},
- For restarting a calculation a parent folder can be attached (example):
calc2.use_parent_folder(calc1.out.remote_folder)
- By default only the output and restart file (if present) are retrieved. Additional files are retrieved upon request (example):
settings = {'additional_retrieve_list': ["*.cube"]}
calc.use_settings(ParameterData(dict=settings))
- The final geometry is extracted from the restart file (if present) and stored in AiiDA (example):
print(calc.out.output_structure)
- From the CP2K output only the #warnings and final energy are parsed (example):
print(calc.res.nwarnings, calc.res.energy, calc.res.energy_units)
-
The calculation is considered failed if #warnings can not be found (example).
-
The conversion of geometries between AiiDA and CP2K has a precision of at least 1e-10 Ångström (example).
-
The Python code complies with the Flake8 coding conventions.
There is a small command line interface to get you started immediately. After setting up a code (see the corresponding AiiDA documentation), you can run any CP2K calculation directly through AiiDA:
aiida-cp2k calc oneshot --code cp2k@yourhost some_cp2k_input_file.inp
Files referenced in some_cp2k_input_file.inp
which are not part of the default CP2K installation (like BASIS_SET
, etc.) must be specified additionally.
Every commit and pull request is automatically tested by TravisCI.
To run the tests locally install Docker and execute the following commands:
git clone https://github.com/cp2k/aiida-cp2k
docker build -t aiida_cp2k_test aiida-cp2k
docker run -it --init aiida_cp2k_test pytest -v