GQCP
Loading...
Searching...
No Matches
CartesianGTO.hpp
Go to the documentation of this file.
1// This file is part of GQCG-GQCP.
2//
3// Copyright (C) 2017-2020 the GQCG developers
4//
5// GQCG-GQCP is free software: you can redistribute it and/or modify
6// it under the terms of the GNU Lesser General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// GQCG-GQCP is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU Lesser General Public License for more details.
14//
15// You should have received a copy of the GNU Lesser General Public License
16// along with GQCG-GQCP. If not, see <http://www.gnu.org/licenses/>.
17
18#pragma once
19
20
25
26
27namespace GQCP {
28
29
38 public Function<double, Vector<double, 3>> {
39public:
40 // The return type of the `operator()`.
41 using OutputType = double;
42
43 // The input type of the `operator()`.
45
46
47private:
48 double gaussian_exponent; // exponent of the exponential
49 CartesianExponents cartesian_exponents; // exponents of (x-X), (y-Y), (z-Z)
50 Vector<double, 3> m_center; // center of the GTO (X, Y, Z)
51
52
53public:
54 // CONSTRUCTORS
55
63 CartesianGTO(const double gaussian_exponent, const CartesianExponents& cartesian_exponents, const Vector<double, 3>& center);
64
69
70
71 // OPERATORS
72
78 double operator()(const Vector<double, 3>& r) const override;
79
85 bool operator==(const CartesianGTO& other) const;
86
87
88 // STATIC PUBLIC METHODS
89
96 static double calculateNormalizationFactorComponent(const double gaussian_exponent, const size_t cartesian_exponent);
97
104 static double calculateNormalizationFactor(const double gaussian_exponent, const CartesianExponents& cartesian_exponents);
105
106
107 // PUBLIC METHODS
108
112 const CartesianExponents& cartesianExponents() const { return this->cartesian_exponents; }
113
120
125
129 const Vector<double, 3>& center() const { return this->m_center; }
130
134 std::string description() const;
135
139 double gaussianExponent() const { return this->gaussian_exponent; }
140
145};
146
147
148} // namespace GQCP
Definition: CartesianGTO.hpp:38
std::string description() const
Definition: CartesianGTO.cpp:190
CartesianGTO()
Definition: CartesianGTO.cpp:55
double OutputType
Definition: CartesianGTO.hpp:41
bool operator==(const CartesianGTO &other) const
Definition: CartesianGTO.cpp:86
const Vector< double, 3 > & center() const
Definition: CartesianGTO.hpp:129
EvaluableLinearCombination< double, CartesianGTO > calculatePositionDerivative(const CartesianDirection direction) const
Definition: CartesianGTO.cpp:143
static double calculateNormalizationFactorComponent(const double gaussian_exponent, const size_t cartesian_exponent)
Definition: CartesianGTO.cpp:103
double normalizationFactor() const
Definition: CartesianGTO.hpp:144
double gaussianExponent() const
Definition: CartesianGTO.hpp:139
Vector< EvaluableLinearCombination< double, CartesianGTO >, 3 > calculatePositionGradient() const
Definition: CartesianGTO.cpp:175
double operator()(const Vector< double, 3 > &r) const override
Definition: CartesianGTO.cpp:68
const CartesianExponents & cartesianExponents() const
Definition: CartesianGTO.hpp:112
static double calculateNormalizationFactor(const double gaussian_exponent, const CartesianExponents &cartesian_exponents)
Definition: CartesianGTO.cpp:123
Definition: EvaluableLinearCombination.hpp:46
Definition: Function.hpp:153
Definition: Matrix.hpp:47
Definition: BaseOneElectronIntegralBuffer.hpp:25
CartesianDirection
Definition: CartesianDirection.hpp:27
Definition: CartesianExponents.hpp:35