HamiltonCGTO_PBC

class dqc.hamilton.HamiltonCGTO_PBC(atombases: List[dqc.utils.datastruct.AtomCGTOBasis], latt: dqc.hamilton.intor.lattice.Lattice, *, kpts: Optional[torch.Tensor] = None, wkpts: Optional[torch.Tensor] = None, spherical: bool = True, df: Optional[dqc.utils.datastruct.DensityFitInfo] = None, lattsum_opt: Optional[Union[dqc.hamilton.intor.pbcintor.PBCIntOption, Dict]] = None, cache: Optional[dqc.utils.cache.Cache] = None)[source]

Hamiltonian with contracted Gaussian type orbitals in a periodic boundary condition systems. The calculation of Hamiltonian components follow the reference: Sun, et al., J. Chem. Phys. 147, 164119 (2017) https://doi.org/10.1063/1.4998644

property nao

Returns the number of atomic orbital basis

property kpts

Returns the list of k-points in the Hamiltonian, raise TypeError if the Hamiltonian does not have k-points. Shape: (nkpts, ndim)

property df

Returns the density fitting object (if any) attached to this Hamiltonian object. If None, returns None

build() → dqc.hamilton.base_hamilton.BaseHamilton[source]

Construct the elements needed for the Hamiltonian. Heavy-lifting operations should be put here.

setup_grid(grid: dqc.grid.base_grid.BaseGrid, xc: Optional[dqc.xc.base_xc.BaseXC] = None) → None[source]

Setup the basis (with its grad) in the spatial grid and prepare the gradient of atomic orbital according to the ones required by the xc. If xc is not given, then only setup the grid with ao (without any gradients of ao)

get_nuclattr() → xitorch._core.linop.LinearOperator[source]

Returns the LinearOperator of the nuclear Coulomb attraction.

get_kinnucl() → xitorch._core.linop.LinearOperator[source]

Returns the LinearOperator of the one-electron operator (i.e. kinetic and nuclear attraction).

get_overlap() → xitorch._core.linop.LinearOperator[source]

Returns the LinearOperator representing the overlap of the basis.

get_elrep(dm: torch.Tensor) → xitorch._core.linop.LinearOperator[source]

Obtains the LinearOperator of the Coulomb electron repulsion operator. Known as the J-matrix.

get_exchange(dm: torch.Tensor) → xitorch._core.linop.LinearOperator[source]
get_exchange(dm: dqc.utils.datastruct.SpinParam[torch.Tensor]) → dqc.utils.datastruct.SpinParam[xitorch._core.linop.LinearOperator]

Obtains the LinearOperator of the exchange operator. It is -0.5 * K where K is the K matrix obtained from 2-electron integral.

get_vext(vext: torch.Tensor) → xitorch._core.linop.LinearOperator[source]

Returns a LinearOperator of the external potential in the grid.

\[\mathbf{V}_{ij} = \int b_i(\mathbf{r}) V(\mathbf{r}) b_j(\mathbf{r})\ d\mathbf{r}\]
get_vxc(dm: dqc.utils.datastruct.SpinParam[torch.Tensor]) → dqc.utils.datastruct.SpinParam[xitorch._core.linop.LinearOperator][source]
get_vxc(dm: torch.Tensor) → xitorch._core.linop.LinearOperator

Returns a LinearOperator for the exchange-correlation potential.

ao_orb2dm(orb: torch.Tensor, orb_weight: torch.Tensor) → torch.Tensor[source]

Convert the atomic orbital to the density matrix.

aodm2dens(dm: torch.Tensor, xyz: torch.Tensor) → torch.Tensor[source]

Get the density value in the Cartesian coordinate.

get_e_hcore(dm: torch.Tensor) → torch.Tensor[source]

Get the energy from the one-electron Hamiltonian. The input is total density matrix.

get_e_elrep(dm: torch.Tensor) → torch.Tensor[source]

Get the energy from the electron repulsion. The input is total density matrix.

get_e_exchange(dm: Union[torch.Tensor, dqc.utils.datastruct.SpinParam[torch.Tensor]]) → torch.Tensor[source]

Get the energy from the exact exchange.

get_e_xc(dm: Union[torch.Tensor, dqc.utils.datastruct.SpinParam[torch.Tensor]]) → torch.Tensor[source]

Returns the exchange-correlation energy using the xc object given in .setup_grid()

getparamnames(methodname: str, prefix: str = '') → List[str][source]

Return the paramnames