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