friendzone.nwx2qcengine.call_qcengine

Functions

call_qcengine(driver, mol, program, runtime, **kwargs)

Wraps calling a program through the QCEngine API.

Module Contents

friendzone.nwx2qcengine.call_qcengine.call_qcengine(driver, mol, program, runtime, **kwargs)

Wraps calling a program through the QCEngine API.

Note

QCEngine only supports high-level modularity (modularity roughly at the granularity of a call to an electronic structure package). We thus have assumed that the molecular system will always be an input to whatever QCEngine call we are running.

This function is the main API for calling QCEngine from NWChemEx. The idea is to more or less feed the inputs from a run_as call directly into this function and then have this function convert the NWChemEx objects to their QCElemental equivalents. Right now those mappings include:

  • ChemicalSystem -> qcel.models.Molecule

  • RuntimeView -> qcng.TaskConfig

While not supported at the moment, similar conversions for the AO basis set are possible.

Because of the difference in philosophy between QCEngine and NWChemEx, there are some inputs which can not easily be mapped automatically, for example the electronic structure method (in NWChemEx methods correspond to module instances, whereas QCEngine requires strings). It is the responsibility of the module wrapping the call to call_qcengine to pass these additional inputs in as kwargs that can be forwarded to a QCElemental.models.AtomicInput object via the model keyword.

Parameters:
  • pt (pluginplay.PropertyType) – The property type we are computing.

  • mol (chemist.ChemicalSystem) – The molecular system we are computing the properties of.

  • program (str) – Which electronic structure package is being used as the backend?

  • kwargs – Key-value pairs which will be forwarded to QCElemental’s AtomicInput class as kwargs.

Returns:

A dictionary containing the requested property and any other property of potential interest.

Return type:

Varies depending on the requested property