dev-zero / aiida-cp2k

The CP2K plugin for the AiiDA workflow and provenance engine.

Home Page:http://www.aiida.net

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AiiDA CP2K

Build Status codecov

The CP2K plugin for the AiiDA workflow and provenance engine.

logo

Installation

If you use pip, you can install it as:

pip install aiida-cp2k

Features

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:

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.

Usage

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.

Testing

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

About

The CP2K plugin for the AiiDA workflow and provenance engine.

http://www.aiida.net

License:MIT License


Languages

Language:Python 98.0%Language:Dockerfile 2.0%