qdk_chemistry.algorithms.hamiltonian_constructor module

Public entry point for the Hamiltonian constructor algorithms.

This module re-exports the core HamiltonianConstructor and concrete implementations so that consumers can import them directly from qdk_chemistry.algorithms without depending on internal package paths.

class qdk_chemistry.algorithms.hamiltonian_constructor.HamiltonianConstructor

Bases: pybind11_object

Abstract base class for Hamiltonian constructors.

This class defines the interface for constructing Hamiltonian matrices from orbital data. Concrete implementations should inherit from this class and implement the construct method.

Examples

To create a custom Hamiltonian constructor, inherit from this class:

>>> import qdk_chemistry.algorithms as alg
>>> import qdk_chemistry.data as data
>>> class MyHamiltonianConstructor(alg.HamiltonianConstructor):
...     def __init__(self):
...         super().__init__()  # Call the base class constructor
...     # Implement the _run_impl method
...     def _run_impl(self, orbitals: data.Orbitals) -> data.Hamiltonian:
...         # Custom Hamiltonian construction implementation
...         return hamiltonian
__init__(self: qdk_chemistry.algorithms.HamiltonianConstructor) None

Create a HamiltonianConstructor instance.

Default constructor for the abstract base class. This should typically be called from derived class constructors.

Examples

>>> # In a derived class:
>>> class MyConstructor(alg.HamiltonianConstructor):
...     def __init__(self):
...         super().__init__()  # Calls this constructor
name(self: qdk_chemistry.algorithms.HamiltonianConstructor) str

The algorithm’s name.

Returns:

The name of the algorithm

Return type:

str

run(self: qdk_chemistry.algorithms.HamiltonianConstructor, orbitals: qdk_chemistry.data.Orbitals) qdk_chemistry.data.Hamiltonian

Construct a Hamiltonian from the given orbitals.

This method automatically locks settings before execution to prevent modifications during construction.

Parameters:

orbitals (qdk_chemistry.data.Orbitals) – The orbital data to construct the Hamiltonian from

Returns:

The constructed Hamiltonian matrix

Return type:

qdk_chemistry.data.Hamiltonian

Raises:

SettingsAreLocked – If attempting to modify settings after run() is called

settings(self: qdk_chemistry.algorithms.HamiltonianConstructor) qdk_chemistry.data.Settings

Access the constructor’s configuration settings.

Returns:

Reference to the settings object for configuring the constructor

Return type:

qdk_chemistry.data.Settings

type_name(self: qdk_chemistry.algorithms.HamiltonianConstructor) str

The algorithm’s type name.

Returns:

The type name of the algorithm

Return type:

str

class qdk_chemistry.algorithms.hamiltonian_constructor.QdkHamiltonianConstructor

Bases: HamiltonianConstructor

QDK implementation of the Hamiltonian constructor.

This class provides a concrete implementation of the Hamiltonian constructor using the internal backend. It constructs molecular Hamiltonian matrices from orbital data, computing the necessary one- and two-electron integrals.

Typical usage:

import qdk_chemistry.algorithms as alg
import qdk_chemistry.data as data

# Assuming you have orbitals from an SCF calculation
constructor = alg.QdkHamiltonianConstructor()

# Configure settings if needed
constructor.settings().set("eri_method", "direct")

# Construct Hamiltonian
hamiltonian = constructor.run(orbitals)
__init__(self: qdk_chemistry.algorithms.QdkHamiltonianConstructor) None

Default constructor.

Initializes a Hamiltonian constructor with default settings.