netket.experimental.operator.from_pyscf_molecule#
- class netket.experimental.operator.from_pyscf_molecule[source]#
Bases:
Construct a netket operator encoding the electronic hamiltonian of a pyscf molecule in a chosen orbital basis.
Example
Constructs the hamiltonian for a Li-H molecule, using the sto-3g basis and the default Hartree-Fock molecular orbitals.
>>> from pyscf import gto, scf, fci >>> import netket as nk; import netket.experimental as nkx >>> >>> bond_length = 1.5109 >>> geometry = [('Li', (0., 0., -bond_length/2)), ('H', (0., 0., bond_length/2))] >>> mol = gto.M(atom=geometry, basis='STO-3G') >>> >>> mf = scf.RHF(mol).run() converged SCF energy = -7.86338... >>> E_hf = sum(mf.scf_summary.values()) >>> >>> E_fci = fci.FCI(mf).kernel()[0] >>> >>> ha = nkx.operator.from_pyscf_molecule(mol) converged SCF energy = -7.86338... >>> E0 = float(nk.exact.lanczos_ed(ha)) >>> print(f"{E0 = :.5f}, {E_fci = :.5f}") E0 = -7.88253, E_fci = -7.88253
Example
Constructs the hamiltonian for a Li-H molecule, using the sto-3g basis and the Boys orbitals using
Boys
.>>> from pyscf import gto, scf, lo >>> import netket as nk; import netket.experimental as nkx >>> >>> bond_length = 1.5109 >>> geometry = [('Li', (0., 0., -bond_length/2)), ('H', (0., 0., bond_length/2))] >>> mol = gto.M(atom=geometry, basis='STO-3G') >>> >>> # compute the boys orbitals >>> mf = scf.RHF(mol).run() converged SCF energy = -7.86338... >>> mo_coeff = lo.Boys(mol).kernel(mf.mo_coeff) >>> # use the boys orbitals to construct the netket hamiltonian >>> ha = nkx.operator.from_pyscf_molecule(mol, mo_coeff=mo_coeff)
- Parameters:
molecule – The pyscf
Mole
object describing the Hamiltonianmo_coeff (
ndarray
|None
) – The molecular orbital coefficients determining the linear combination of atomic orbitals to produce the molecular orbitals. If unspecified this defaults to the hartree fock orbitals computed usingHF
.cutoff (
float
) – Ignores all matrix elements in the V and T matrix that have magnitude less than this value. Defaults to \(10^{-11}\)implementation (
DiscreteOperator
) – The particular implementation to use for the operator. Different fermionic operator implementation might have different performances. Defaults tonetket.experimental.operator.FermionOperator2nd
(this might change in the future).
- Return type:
- Returns:
A netket second quantised operator that encodes the electronic hamiltonian.