Simulation Runners
==================
MOFA employs "runners" which invoke different scientific software
through interfaces appropriate for workflow engines.
Use any runner by first creating a runner object with any
settings specific a certain supercomputer, then call
the methods of that object:
.. code-block:: python
runner = ExampleRunner(example_cmd='/path/to/example')
output = runner.do_science(mof_strc, iterations)
The functions available are determined by the type of runner.
.. contents:: Available Runners
:depth: 2
DFT Runners
-----------
Density Functional Theory (DFT) runners compute the energy of a MOF
along with the forces and partial charges of each atom from quantum mechanics.
MOFA currently supports DFT implemented using `CP2K `_
and `PWDFT `_
Each runner is based on the :class:`mofa.simulation.dft.base.BaseDFTRunner` class,
which has two functions: one to evaluate a structure as-provided,
and a second to relax the structure before evaluating.
The output of the functions are an ASE Atoms object holding the energies and forces,
and a path to the output directory.
The output directory contains at least a file named ``valence.cube`` holding the
charge density of the system, which are used to compute partial charges
with :class:`~mofa.simulation.dft.compute_partial_charges`.