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.
-
property