Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# EditorConfig is awesome: https://EditorConfig.org
# EditorConfig: https://EditorConfig.org

root = true

Expand Down
3 changes: 2 additions & 1 deletion gbasis/base_four_symm.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
import abc
import itertools as it

import numpy as np

from gbasis.base import BaseGaussianRelatedArray
from gbasis.spherical import generate_transformation
import numpy as np


# pylint: disable=W0235
Expand Down
3 changes: 2 additions & 1 deletion gbasis/base_one.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""Base class for arrays that depend on one contracted Gaussian."""
import abc

import numpy as np

from gbasis.base import BaseGaussianRelatedArray
from gbasis.spherical import generate_transformation
import numpy as np


# pylint: disable=W0235
Expand Down
3 changes: 2 additions & 1 deletion gbasis/base_two_asymm.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""Base class for arrays that depend on two contracted Gaussians."""
import abc

import numpy as np

from gbasis.base import BaseGaussianRelatedArray
from gbasis.spherical import generate_transformation
import numpy as np


# pylint: disable=W0235
Expand Down
3 changes: 2 additions & 1 deletion gbasis/base_two_symm.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import abc

import numpy as np

from gbasis.base import BaseGaussianRelatedArray
from gbasis.spherical import generate_transformation
import numpy as np


# pylint: disable=W0235
Expand Down
12 changes: 8 additions & 4 deletions gbasis/contractions.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
"""Data class for contractions of Gaussian-type primitives."""

from numbers import Integral

import numpy as np

from gbasis.utils import factorial2


Expand Down Expand Up @@ -31,7 +33,8 @@ class GeneralizedContractionShell:
.. math::

\phi (\mathbf{r} | \mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha}) =
N_{\phi} (\mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha}) \sum_i d_i g_i (\mathbf{r} | \mathbf{R}_A, \mathbf{a})
N_{\phi} (\mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha})
\sum_i d_i g_i (\mathbf{r} | \mathbf{R}_A, \mathbf{a})

where :math:`d_i` is the contraction coefficient of the primitive and :math:`N_{\phi}` is the
normalization constant of the contraction.
Expand Down Expand Up @@ -63,7 +66,8 @@ class GeneralizedContractionShell:
.. math::

\phi_j (\mathbf{r} | \mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha}) =
N_{\phi} (\mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha}) \sum_i d_{ij} g_i (\mathbf{r} | \mathbf{R}_A, \mathbf{a})
N_{\phi} (\mathbf{R}_A, \mathbf{a}, \mathbf{d}, \boldsymbol{\alpha})
\sum_i d_{ij} g_i (\mathbf{r} | \mathbf{R}_A, \mathbf{a})

Attributes
----------
Expand Down Expand Up @@ -427,8 +431,8 @@ def angmom_components_sph(self):
return tuple(["c1", "s1", "c0"])
else:
return tuple(
["s{}".format(m) for m in range(self.angmom, 0, -1)]
+ ["c{}".format(m) for m in range(self.angmom + 1)]
[f"s{m}" for m in range(self.angmom, 0, -1)]
+ [f"c{m}" for m in range(self.angmom + 1)]
)

@property
Expand Down
16 changes: 9 additions & 7 deletions gbasis/evals/density.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""Density Evaluation."""
from gbasis.evals.eval import evaluate_basis
from gbasis.evals.eval_deriv import evaluate_deriv_basis
import numpy as np
from scipy.special import comb

from gbasis.evals.eval import evaluate_basis
from gbasis.evals.eval_deriv import evaluate_deriv_basis


def evaluate_density_using_evaluated_orbs(one_density_matrix, orb_eval):
"""Return the evaluation of the density given the evaluated orbitals.
Expand Down Expand Up @@ -218,15 +219,16 @@ def evaluate_deriv_density(
\sum_{l_x=0}^{L_x} \sum_{l_y=0}^{L_y} \sum_{l_z=0}^{L_z}
\binom{L_x}{l_x} \binom{L_y}{l_y} \binom{L_z}{l_z}
\sum_{ij} \gamma_{ij}
\frac{\partial^{l_x + l_y + l_z} \rho(\mathbf{r})}{\partial x^{l_x} \partial y^{l_y} \partial z^{l_z}}
\frac{\partial^{l_x + l_y + l_z}
\rho(\mathbf{r})}{\partial x^{l_x} \partial y^{l_y} \partial z^{l_z}}
\frac{
\partial^{L_x + L_y + L_z - l_x - l_y - l_z} \rho(\mathbf{r})
}{
\partial x^{L_x - l_x} \partial y^{L_y - l_y} \partial z^{L_z - l_z}
}

where :math:`L_x, L_y, L_z` are the orders of the derivative relative to the :math:`x, y, \text{and} z` components,
respectively.
where :math:`L_x, L_y, L_z` are the orders of the derivative relative to the
:math:`x, y, \text{and} z` components, respectively.

Parameters
----------
Expand Down Expand Up @@ -320,7 +322,7 @@ def evaluate_density_gradient(
\frac{\partial}{\partial x} \rho(\mathbf{r})\\\\
\frac{\partial}{\partial y} \rho(\mathbf{r})\\\\
\frac{\partial}{\partial z} \rho(\mathbf{r})
\end{bmatrix}
\end{bmatrix}

Parameters
----------
Expand Down Expand Up @@ -489,7 +491,7 @@ def evaluate_density_hessian(
r"""Return the Hessian of the density evaluated at the given points.

.. math::

H[\rho(\mathbf{r})]
=
\begin{bmatrix}
Expand Down
12 changes: 7 additions & 5 deletions gbasis/evals/electrostatic_potential.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
"""Module for computing electrostatic potential integrals."""
from gbasis.integrals.point_charge import point_charge_integral
import numpy as np

from gbasis.integrals.point_charge import point_charge_integral


def electrostatic_potential(
basis,
Expand All @@ -18,12 +19,13 @@ def electrostatic_potential(

- \left(
- \sum_A \frac{Z_A}{|\mathbf{R}_C - \mathbf{R}_A|}
+ \sum_{ab} \gamma_{ab} \int \phi_a(\mathbf{r}) \frac{-1}{|\mathbf{r} - \mathbf{R}_C|} \phi_b(\mathbf{r}) d\mathbf{r}
+ \sum_{ab} \gamma_{ab} \int \phi_a(\mathbf{r}) \frac{-1}{|\mathbf{r}
- \mathbf{R}_C|} \phi_b(\mathbf{r}) d\mathbf{r}
\right)

where :math:`\mathbf{R}_C` is the coordinate of a unitary point charge, :math:`\mathbf{R}_A` is the
coordinate of the nucleus :math:`A`, :math:`Z_A` its charge, and :math:`\gamma_{ab}` is the
one-electron density matrix.
where :math:`\mathbf{R}_C` is the coordinate of a unitary point charge, :math:`\mathbf{R}_A`
is the coordinate of the nucleus :math:`A`, :math:`Z_A` its charge, and :math:`\gamma_{ab}`
is the one-electron density matrix.

Parameters
----------
Expand Down
3 changes: 2 additions & 1 deletion gbasis/evals/eval.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
"""Functions for evaluating Gaussian contractions."""
import numpy as np

from gbasis.base_one import BaseOneIndex
from gbasis.contractions import GeneralizedContractionShell
from gbasis.evals._deriv import _eval_deriv_contractions
import numpy as np


class Eval(BaseOneIndex):
Expand Down
19 changes: 11 additions & 8 deletions gbasis/evals/eval_deriv.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
"""Functions for evaluating Gaussian primitives."""
import numpy as np

from gbasis.base_one import BaseOneIndex
from gbasis.contractions import GeneralizedContractionShell
from gbasis.evals._deriv import _eval_deriv_contractions
from gbasis.evals._deriv import _eval_first_second_order_deriv_contractions
import numpy as np
from gbasis.evals._deriv import (
_eval_deriv_contractions,
_eval_first_second_order_deriv_contractions,
)


class EvalDeriv(BaseOneIndex):
Expand Down Expand Up @@ -150,13 +153,13 @@ def evaluate_deriv_basis(
The derivative (to arbitrary orders) of a basis function is given by:

.. math::

\frac{\partial^{m_x + m_y + m_z}}{\partial x^{m_x} \partial y^{m_y} \partial z^{m_z}}
\phi (\mathbf{r})
where :math:`m_x, m_y, m_z` are the orders of the derivative with respect to x, y, and z,
:math:`\phi` is the basis function (a generalized contraction shell), and :math:`\mathbf{r}_n` are
the coordinate of the points in space where the basis function is evaluated.

where :math:`m_x, m_y, m_z` are the orders of the derivative with respect to x, y, and z,
:math:`\phi` is the basis function (a generalized contraction shell), and :math:`\mathbf{r}_n`
are the coordinate of the points in space where the basis function is evaluated.

Parameters
----------
Expand Down
53 changes: 27 additions & 26 deletions gbasis/evals/stress_tensor.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""Module for computing properties related to the stress tensor."""
import numpy as np

from gbasis.evals.density import (
evaluate_density_laplacian,
evaluate_deriv_density,
evaluate_deriv_reduced_density_matrix,
)
import numpy as np


# TODO: need to be tested against reference
Expand Down Expand Up @@ -132,31 +133,31 @@ def evaluate_ehrenfest_force(one_density_matrix, basis, points, alpha=1, beta=0,

.. math::

F_{j}(\mathbf{r} | \alpha, \beta)
=&- \sum_i \frac{\partial}{\partial r_i} \boldsymbol{\sigma}_{ij}\\
=&
\alpha
\sum_i
\left.
\frac{\partial^3}{\partial r^2_i \partial r'_j} \gamma(\mathbf{r}, \mathbf{r}')
\right|_{\mathbf{r} = \mathbf{r}'}\\
&- (1 - \alpha)
\sum_i
\left.
\frac{\partial^3}{\partial r^2_i \partial r_j} \gamma(\mathbf{r}, \mathbf{r})
\right|_{\mathbf{r} = \mathbf{r}'}
- (1 - 2\alpha)
\sum_i
\left.
\frac{\partial^3}{\partial r_i \partial r_j \partial r'_i} \gamma(\mathbf{r}, \mathbf{r})
\right|_{\mathbf{r} = \mathbf{r}'}\\
&+ \frac{1}{2} \beta
\left(
\frac{\partial^3}{\partial r_j \partial x^2}
+ \frac{\partial^3}{\partial r_j \partial y^2}
+ \frac{\partial^3}{\partial r_j \partial z^2}
\right)
\rho(\mathbf{r})
F_{j}(\mathbf{r} | \alpha, \beta)
=&- \sum_i \frac{\partial}{\partial r_i} \boldsymbol{\sigma}_{ij}\\
=&
\alpha
\sum_i
\left.
\frac{\partial^3}{\partial r^2_i \partial r'_j} \gamma(\mathbf{r}, \mathbf{r}')
\right|_{\mathbf{r} = \mathbf{r}'}\\
&- (1 - \alpha)
\sum_i
\left.
\frac{\partial^3}{\partial r^2_i \partial r_j} \gamma(\mathbf{r}, \mathbf{r})
\right|_{\mathbf{r} = \mathbf{r}'}
- (1 - 2\alpha)
\sum_i
\left.
\frac{\partial^3}{\partial r_i \partial r_j \partial r'_i} \gamma(\mathbf{r}, \mathbf{r})
\right|_{\mathbf{r} = \mathbf{r}'}\\
&+ \frac{1}{2} \beta
\left(
\frac{\partial^3}{\partial r_j \partial x^2}
+ \frac{\partial^3}{\partial r_j \partial y^2}
+ \frac{\partial^3}{\partial r_j \partial z^2}
\right)
\rho(\mathbf{r})

Parameters
----------
Expand Down
3 changes: 2 additions & 1 deletion gbasis/integrals/_diff_operator_int.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""Integrals over differential operator involving contracted Cartesian Gaussians."""
import numpy as np

from gbasis.integrals._moment_int import (
_cleanup_intermediate_integrals,
_compute_multipole_moment_integrals_intermediate,
)
import numpy as np


# FIXME: returns nan when exponent is zero
Expand Down
1 change: 1 addition & 0 deletions gbasis/integrals/_one_elec_int.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""One-electron integrals involving Contracted Cartesian Gaussians."""
import numpy as np

from gbasis.utils import factorial2


Expand Down
1 change: 1 addition & 0 deletions gbasis/integrals/_two_elec_int.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Two-electron integrals involving Contracted Cartesian Gaussians."""
import numpy as np

from gbasis.utils import factorial2

# pylint: disable=C0103,R0914,R0915
Expand Down
26 changes: 14 additions & 12 deletions gbasis/integrals/angular_momentum.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
"""Module for evaluating the integral over the angular momentum operator."""
import numpy as np

from gbasis.base_two_symm import BaseTwoIndexSymmetric
from gbasis.contractions import GeneralizedContractionShell
from gbasis.integrals._diff_operator_int import (
_compute_differential_operator_integrals_intermediate,
)
from gbasis.integrals._moment_int import _compute_multipole_moment_integrals_intermediate
import numpy as np


# TODO: need to test against reference
Expand Down Expand Up @@ -161,17 +162,18 @@ def angular_momentum_integral(basis, transform=None):

.. math::

\left< \hat{\mathbf{L}} \right>
&= \int \phi_a(\mathbf{r}) \left( -i \mathbf{r} \times \nabla \right) \phi_b(\mathbf{r}) d\mathbf{r}\\
&= -i
\begin{bmatrix}
\int \phi_a(\mathbf{r}) y\frac{\partial}{\partial z} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) z\frac{\partial}{\partial y} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\int \phi_a(\mathbf{r}) z\frac{\partial}{\partial x} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) x\frac{\partial}{\partial z} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\int \phi_a(\mathbf{r}) x\frac{\partial}{\partial y} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) y\frac{\partial}{\partial x} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\end{bmatrix}
\left< \hat{\mathbf{L}} \right>
&= \int \phi_a(\mathbf{r}) \left( -i \mathbf{r} \times \nabla \right) \phi_b(\mathbf{r})
d\mathbf{r}\\
&= -i
\begin{bmatrix}
\int \phi_a(\mathbf{r}) y\frac{\partial}{\partial z} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) z\frac{\partial}{\partial y} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\int \phi_a(\mathbf{r}) z\frac{\partial}{\partial x} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) x\frac{\partial}{\partial z} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\int \phi_a(\mathbf{r}) x\frac{\partial}{\partial y} \phi_b(\mathbf{r}) d\mathbf{r}
- \int \phi_a(\mathbf{r}) y\frac{\partial}{\partial x} \phi_b(\mathbf{r}) d\mathbf{r}\\\\
\end{bmatrix}

Parameters
----------
Expand Down
3 changes: 2 additions & 1 deletion gbasis/integrals/electron_repulsion.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
"""Electron-electron repulsion integral."""
import numpy as np

from gbasis.base_four_symm import BaseFourIndexSymmetric
from gbasis.contractions import GeneralizedContractionShell
from gbasis.integrals._two_elec_int import (
_compute_two_elec_integrals,
_compute_two_elec_integrals_angmom_zero,
)
from gbasis.integrals.point_charge import PointChargeIntegral
import numpy as np


class ElectronRepulsionIntegral(BaseFourIndexSymmetric):
Expand Down
6 changes: 4 additions & 2 deletions gbasis/integrals/kinetic_energy.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
"""Module for evaluating the kinetic energy integral."""
import numpy as np

from gbasis.base_two_symm import BaseTwoIndexSymmetric
from gbasis.contractions import GeneralizedContractionShell
from gbasis.integrals._diff_operator_int import _compute_differential_operator_integrals
import numpy as np


class KineticEnergyIntegral(BaseTwoIndexSymmetric):
Expand Down Expand Up @@ -126,7 +127,8 @@ def kinetic_energy_integral(basis, transform=None):

\begin{split}
\left< \hat{T} \right>
&= \int \phi_a(\mathbf{r}) \left( -\frac{1}{2} \nabla^2 \right) \phi_b(\mathbf{r}) d\mathbf{r}\\
&= \int \phi_a(\mathbf{r}) \left( -\frac{1}{2} \nabla^2 \right) \phi_b(\mathbf{r})
d\mathbf{r}\\
&= -\frac{1}{2}
\left(
\int \phi_a(\mathbf{r}) \frac{\partial^2}{\partial x^2} \phi_b(\mathbf{r}) d\mathbf{r}
Expand Down
Loading