Other programs
**************

In this chapter we present a list of PLAMS interfaces to other
programs and packages. A majority of what follows below are interfaces
to so-called *external binaries* -- computational chemistry tools that
come in a form of executable programs that read an input file, perform
calculations, and produce various output files. From the PLAMS
perspective each such interface is just a subclass of "SingleJob" that
implements a way of producing a working runscript ("get_runscript()")
and a valid input file ("get_input()") for a particular binary based
on the contents of job settings. Usually such a "specialized"
"SingleJob" subclass comes together with a corresponding specialized
"Results" subclass providing methods for accessing the data produced
by the binary. Some of these methods are just simple convenience
shortcuts (like "get_energy()" or "get_main_molecule()"), others
provide access to files in whatever formats a particular binary
produces (XML, binary files).

Interfaces described below are divided into interfaces to programs and
tools that are included in Amsterdam Modeling Suite and interfaces to
third-party computational chemistry packages (usually contributed by
other PLAMS users). The last chapter presents a slightly different
kind of interfaces, so-called *molecule interfaces*. They offer a way
of using PLAMS "Molecule" class with other libraries capable of
manipulating molecular coordinates.

* CP2K

  * Settings

  * Molecule parsing

  * Loading jobs

  * Molecule loading

  * API

    * "Cp2kJob"

      * "Cp2kJob._result_type"

      * "Cp2kJob.__init__()"

      * "Cp2kJob._get_ready()"

      * "Cp2kJob.get_input()"

      * "Cp2kJob.get_runscript()"

      * "Cp2kJob.check()"

    * "Cp2kResults"

      * "Cp2kResults.recreate_settings()"

      * "Cp2kResults.get_runtime()"

      * "Cp2kResults.get_timings()"

      * "Cp2kResults.get_energy()"

      * "Cp2kResults.get_dispersion()"

      * "Cp2kResults.get_forces()"

      * "Cp2kResults.get_mulliken_charges()"

      * "Cp2kResults.get_hirshfeld_charges()"

      * "Cp2kResults.get_multigrid_info()"

      * "Cp2kResults.get_md_infos()"

      * "Cp2kResults.get_md_cell_volumes()"

      * "Cp2kResults.get_md_pressure()"

      * "Cp2kResults.check_scf()"

      * "Cp2kResults.check_go()"

    * "Cp2kSettings2Mol()"

* Crystal

  * Preparing a calculation

    * Input

    * Runscript

  * Molecule parsing

  * Results extraction

  * Example

  * API

    * "CrystalJob"

      * "CrystalJob.get_input()"

      * "CrystalJob.get_runscript()"

      * "CrystalJob.check()"

    * "mol2CrystalConf()"

* DFTB+

  * Preparing a calculation

    * Input

    * Runscript

  * Results extraction

  * Example

  * API

    * "DFTBPlusJob"

      * "DFTBPlusJob.get_input()"

      * "DFTBPlusJob.get_runscript()"

      * "DFTBPlusJob.check()"

    * "DFTBPlusResults"

      * "DFTBPlusResults.get_molecule()"

      * "DFTBPlusResults.get_energy()"

      * "DFTBPlusResults.get_atomic_charges()"

* Dirac

  * Preparing a calculation

    * Input

    * Runscript

  * Results extraction

  * API

    * "DiracJob"

      * "DiracJob.__init__()"

      * "DiracJob._get_ready()"

      * "DiracJob.get_input()"

      * "DiracJob.get_runscript()"

      * "DiracJob.check()"

    * "DiracResults"

      * "DiracResults.collect()"

* ORCA

  * Settings

  * Loading jobs

  * API

    * "ORCAJob"

      * "ORCAJob._result_type"

      * "ORCAJob.__init__()"

      * "ORCAJob._get_ready()"

      * "ORCAJob.get_input()"

      * "ORCAJob.print_molecule()"

      * "ORCAJob.get_runscript()"

      * "ORCAJob.check()"

    * "ORCAResults"

      * "ORCAResults.get_runtime()"

      * "ORCAResults.get_timings()"

      * "ORCAResults.check()"

      * "ORCAResults.check_go_conv()"

      * "ORCAResults.check_scf_conv()"

      * "ORCAResults.get_scf_iterations()"

      * "ORCAResults.get_energy()"

      * "ORCAResults.get_dispersion()"

      * "ORCAResults.get_zpe()"

      * "ORCAResults.get_inner_energy()"

      * "ORCAResults.get_enthalpy()"

      * "ORCAResults.get_entropy()"

      * "ORCAResults.get_gibbs_free_energy()"

      * "ORCAResults.get_electrons()"

      * "ORCAResults.get_gradients()"

      * "ORCAResults.get_dipole_vector()"

      * "ORCAResults.get_dipole()"

      * "ORCAResults.get_atomic_charges()"

      * "ORCAResults.get_hirshfeld()"

      * "ORCAResults.get_orbital_energies()"

* RASPA

  * Input

  * Molecule parsing

  * Loading jobs

  * API

    * "RaspaJob"

      * "RaspaJob._result_type"

      * "RaspaJob.__init__()"

      * "RaspaJob._get_ready()"

      * "RaspaJob.get_input()"

      * "RaspaJob.get_runscript()"

      * "RaspaJob.check()"

    * "RaspaResults"

      * "RaspaResults.collect()"

      * "RaspaResults.get_block_value()"

      * "RaspaResults.get_value()"

      * "RaspaResults.get_from_all_files()"

      * "RaspaResults.get_isotherm()"

* VASP

  * Results

  * API

    * "VASPJob"

      * "VASPJob._result_type"

      * "VASPJob.get_input()"

      * "VASPJob.get_runscript()"

      * "VASPJob.check()"

    * "VASPResults"

      * "VASPResults.get_energy()"

      * "VASPResults.get_dispersion_energy()"

* Serenity

  * Serenity calculation

  * ADF interface

  * API

    * "SerenityJob"

      * "SerenityJob.get_input()"

      * "SerenityJob.get_runscript()"

    * "SerenityResults"

      * "SerenityResults.get_energy()"

      * "SerenityResults.get_ccsd_energy_correction()"
