braket.experimental.algorithms.qc_qmc.classical_qmc module

class braket.experimental.algorithms.qc_qmc.classical_qmc.ChemicalProperties(h1e: numpy.ndarray, eri: numpy.ndarray, nuclear_repulsion: float, v_0: numpy.ndarray, h_chem: numpy.ndarray, v_gamma: List[numpy.ndarray], l_gamma: List[numpy.ndarray], mf_shift: numpy.ndarray, lambda_l: List[numpy.ndarray], u_l: List[numpy.ndarray])[source]

Bases: object

h1e: ndarray
eri: ndarray
nuclear_repulsion: float
v_0: ndarray
h_chem: ndarray
v_gamma: List[ndarray]
l_gamma: List[ndarray]
mf_shift: ndarray
lambda_l: List[ndarray]
u_l: List[ndarray]
braket.experimental.algorithms.qc_qmc.classical_qmc.classical_qmc(num_walkers: int, num_steps: int, dtau: float, trial: ndarray, prop: ChemicalProperties, max_pool: int = 8) Tuple[float, float][source]

Classical Auxiliary-Field Quantum Monte Carlo.

Parameters:
  • num_walkers (int) – Number of walkers.

  • num_steps (int) – Number of (imaginary) time steps

  • dtau (float) – Increment of each time step

  • trial (ndarray) – Trial wavefunction.

  • prop (ChemicalProperties) – Chemical properties.

  • max_pool (int) – Max workers. Defaults to 8.

Returns:

Tuple[float, float] – Energies

braket.experimental.algorithms.qc_qmc.classical_qmc.hartree_fock_energy(trial: ndarray, prop: ChemicalProperties) float[source]

Compute Hatree Fock energy.

Parameters:
  • trial (ndarray) – Trial wavefunction.

  • prop (ChemicalProperties) – Chemical properties.

Returns:

float – Energy

braket.experimental.algorithms.qc_qmc.classical_qmc.full_imag_time_evolution_wrapper(args: Tuple) Callable[source]
braket.experimental.algorithms.qc_qmc.classical_qmc.full_imag_time_evolution(num_steps: int, dtau: float, trial: ndarray, prop: ChemicalProperties, e_shift: float, walker: ndarray, weight: float) Tuple[List[float], float][source]

Imaginary time evolution of a single walker.

Parameters:
  • num_steps (int) – number of time steps

  • dtau (float) – imaginary time step size

  • trial (ndarray) – trial state as np.ndarray, e.g., for h2 HartreeFock state, it is np.array([[1,0], [0,1], [0,0], [0,0]])

  • prop (ChemicalProperties) – Chemical properties.

  • e_shift (float) – Reference energy, i.e. Hartree-Fock energy

  • walker (ndarray) – normalized walker state as np.ndarray, others are the same as trial

  • weight (float) – weight for sampling.

Returns:

Tuple[List[float], float] – energy_list, weights

braket.experimental.algorithms.qc_qmc.classical_qmc.imag_time_propogator(dtau: float, trial: ndarray, walker: ndarray, weight: float, prop: ChemicalProperties, e_shift: float) Tuple[float, ndarray, float][source]

Propagate a walker by one time step.

Parameters:
  • dtau (float) – imaginary time step size

  • trial (ndarray) – trial state as np.ndarray, e.g., for h2 HartreeFock state, it is np.array([[1,0], [0,1], [0,0], [0,0]])

  • walker (ndarray) – normalized walker state as np.ndarray, others are the same as trial

  • weight (float) – weight for sampling.

  • prop (ChemicalProperties) – Chemical properties.

  • e_shift (float) – Reference energy, i.e. Hartree-Fock energy

Returns:

Tuple[float, ndarray, float] – e_loc, new_walker, new_weight

braket.experimental.algorithms.qc_qmc.classical_qmc.local_energy(h1e: ndarray, eri: ndarray, green_funcs: ndarray, enuc: float) float[source]

Calculate local energy for generic two-body Hamiltonian using the full (spatial) form for the two-electron integrals.

Parameters:
  • h1e (ndarray) – one-body term.

  • eri (ndarray) – two-body term.

  • green_funcs (ndarray) – Walker’s “green’s function”.

  • enuc (float) – Nuclear repulsion energy.

Returns:

float – kinetic, potential energies and nuclear repulsion energy.

braket.experimental.algorithms.qc_qmc.classical_qmc.reortho(A: ndarray) Tuple[ndarray, float][source]

Reorthogonalise a MxN matrix A. Performs a QR decomposition of A. Note that for consistency elsewhere we want to preserve detR > 0 which is not guaranteed. We thus factor the signs of the diagonal of R into Q.

Parameters:

A (ndarray) – MxN matrix.

Returns:

Tuple[ndarray, float] – (Q, detR) Q (ndarray): Orthogonal matrix. A = QR. detR (float): Determinant of upper triangular matrix (R) from QR decomposition.

braket.experimental.algorithms.qc_qmc.classical_qmc.greens_pq(psi: ndarray, phi: ndarray) ndarray[source]

This function computes the one-body Green’s function.

Parameters:
  • psi (ndarray) – wavefunction

  • phi (ndarray) – wavefunction

Returns:

ndarray – one-body Green’s function

braket.experimental.algorithms.qc_qmc.classical_qmc.chemistry_preparation(mol: Molecule, geometry: ndarray, trial: ndarray) ChemicalProperties[source]

Return the one- and two-electron integrals from Pennylane.

Parameters:
  • mol (Molecule) – Pennylane molecular structure.

  • geometry (ndarray) – Atomic coordiantes for the molecule.

  • trial (ndarray) – Trial wavefunction.

Returns:

ChemicalProperties – chemical properties v_0: one-body term stored as np.ndarray, with mean-field subtraction h_chem: one-body term stored as np.ndarray, without mean-field subtraction v_gamma: 1.j*l_gamma l_gamma: Cholesky vector decomposed from two-body terms mf_shift: mean-field shift nuclear_repulsion: nuclear repulsion constant

braket.experimental.algorithms.qc_qmc.classical_qmc.propagate_walker(x: ndarray, v_0: List[ndarray], v_gamma: List[ndarray], mf_shift: ndarray, dtau: float, trial: ndarray, walker: ndarray, green_funcs: List[ndarray]) ndarray[source]

Update the walker forward in imaginary time.

Parameters:
  • x (ndarray) – auxiliary fields

  • v_0 (List[ndarray]) – modified one-body term from reordering the two-body operator + mean-field subtraction.

  • v_gamma (List[ndarray]) – Cholesky vectors stored in list (L, num_spin_orbitals, num_spin_orbitals), without mf_shift.

  • mf_shift (ndarray) – mean-field shift Bar{v}_{gamma} stored in np.array format

  • dtau (float) – imaginary time step size

  • trial (ndarray) – trial state as np.ndarray, e.g., for h2 HartreeFock state, it is np.array([[1,0], [0,1], [0,0], [0,0]])

  • walker (ndarray) – walker state as np.ndarray, others are the same as trial

  • green_funcs (List[ndarray]) – one-body Green’s function

Returns:

ndarray – new walker for next time step