Source code for chemtools.toolbox.densbased

# -*- coding: utf-8 -*-
# ChemTools is a collection of interpretive chemical tools for
# analyzing outputs of the quantum chemistry calculations.
#
# Copyright (C) 2016-2019 The ChemTools Development Team
#
# This file is part of ChemTools.
#
# ChemTools is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# ChemTools is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>
#
# --
# pragma pylint: disable=invalid-name
"""Density-Based Local Tools."""


from chemtools.wrappers.molecule import Molecule
from chemtools.denstools.densbased import DensGradLapKedTool


[docs]class DensityLocalTool(DensGradLapKedTool): """Density Local Tool Class.""" def __init__(self, dens, grad, lap, ked): r"""Initialize class from arrays. Parameters ---------- dens : np.ndarray Electron density evaluated on a set of points, :math:`\rho(\mathbf{r})`. grad : np.ndarray Gradient vector of electron density evaluated on a set of points, :math:`\nabla \rho(\mathbf{r})`. lap : np.ndarray Laplacian of electron density evaluated on a set of points, :math:`\nabla^2 \rho(\mathbf{r})`. ked : np.ndarray Positive-definite or Lagrangian kinetic energy density evaluated on a set of points; :math:`\tau_\text{PD} (\mathbf{r})` or :math:`G(\mathbf{r})`. """ super(DensityLocalTool, self).__init__(dens, grad, lap, ked)
[docs] @classmethod def from_molecule(cls, molecule, points, spin='ab', index=None): r"""Initialize class using instance of `Molecule` and points. Parameters ---------- molecule : Molecule An instance of `Molecule` class. points : np.ndarray The (npoints, 3) array of cartesian coordinates of points. spin : str, optional Type of occupied spin orbitals; options are 'a', 'b' & 'ab'. index : sequence, optional Sequence of integers representing the index of spin orbitals. """ dens = molecule.compute_density(points, spin, index) grad = molecule.compute_gradient(points, spin, index) lap = molecule.compute_laplacian(points, spin, index) ked = molecule.compute_ked(points, spin, index) return cls(dens, grad, lap, ked)
[docs] @classmethod def from_file(cls, fname, points, spin='ab', index=None): r"""Initialize class from file. Parameters ---------- fname : str Path to molecule's file. points : np.ndarray The (npoints, 3) array of cartesian coordinates of points. spin : str, optional Type of occupied spin orbitals; options are 'a', 'b' & 'ab'. index : sequence, optional Sequence of integers representing the index of spin orbitals. """ molecule = Molecule.from_file(fname) return cls.from_molecule(molecule, points, spin, index)