*************************
Single-Point Calculations
*************************

.. py:class:: SP

Single-point calculations can be carried out using the :py:obj:`SP()` driver, which
expects a :ref:`Theory <theories>` object, e.g.::

  my_theory = NWChem(...)
  my_job = SP(theory=my_theory)

The single point calculation is run with::

  my_job.run()

Then the results will be stored in :py:obj:`my_job.result` (see: `\<class Result\>`_).

.. _`\<class Result\>`: result.html


Methods
=======

.. py:method:: SP.run(dryrun=False)

   :param dryrun: If the function is called with ``dryrun=True``, the job will only
                       generate input scripts without executing real calculatons
   :type dryrun: bool, optional

Options
=======

The single-point driver takes the following arguments:

.. py:attribute:: theory
   :noindex:

   Choose the theory level by specifying a :ref:`Theory <theories>` instance

.. py:attribute:: gradients

   Calculate single-point gradients

   Allowed values:

   * ``False``: (default) No gradients will be calculated

   * ``True`` or ``'analytic'``: Calculate single-point gradients analytically at the specified level of theory

   * ``'2pfd'``: Calculate two-point finite difference numerical gradients at the specified level of theory
  
.. py:attribute:: hessian

   Calculate single-point Hessian matrix 

   Allowed values:

   * ``False``: (default) No Hessian will be calculated

   * ``True`` or ``'2pfd'``: Calculate two-point finite difference numerical Hessian at the specified level of theory (using DL-FIND by default)

