GQCP
Loading...
Searching...
No Matches
GTOShell.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
23#include "Molecule/Nucleus.hpp"
24
25
26namespace GQCP {
27
28
32class GTOShell {
33public:
34 // The type of primitive that underlies this shell.
36
37 // The type of basis function that this shell can produce.
39
40
41private:
42 // If this shell is considered to be 'pure', i.e. a spherical shell is pure, a Cartesian shell is not pure.
43 bool pure;
44
45 // If the normalization factors of the primitives are embedded in the contraction coefficients.
46 bool are_embedded_normalization_factors_of_primitives;
47
48 // If the total normalization factor of the contracted GTO is already embedded in the contraction coefficients.
49 bool normalized;
50
51 // The angular momentum of the shell, i.e. the sum of the Cartesian exponents of this shell.
52 size_t l;
53
54 // The nucleus on which the shell is centered.
55 Nucleus m_nucleus;
56
57 // The Gaussian exponents for this shell, i.e. the exponents for the exponential. These are shared for every contraction.
58 std::vector<double> gaussian_exponents;
59
60 // The contraction coefficients for this shell.
61 std::vector<double> contraction_coefficients;
62
63
64public:
65 /*
66 * MARK: Constructors
67 */
68
80 GTOShell(const size_t l, const Nucleus& nucleus, const std::vector<double>& gaussian_exponents, const std::vector<double>& contraction_coefficients, const bool pure = true, const bool are_embedded_normalization_factors_of_primitives = false, const bool is_normalized = false);
81
82
83 /*
84 * MARK: Shell characteristics
85 */
86
90 size_t angularMomentum() const { return this->l; }
91
95 const std::vector<double>& gaussianExponents() const { return this->gaussian_exponents; }
96
100 bool isPure() const { return this->pure; }
101
105 const Nucleus& nucleus() const { return this->m_nucleus; }
106
112 bool operator==(const GTOShell& rhs) const;
113
114
115 /*
116 * MARK: Normalization
117 */
118
122 bool isNormalized() const { return this->normalized; }
123
128
132 bool areEmbeddedNormalizationFactorsOfPrimitives() const { return this->are_embedded_normalization_factors_of_primitives; }
133
140
147
148
149 /*
150 * MARK: Contractions
151 */
152
156 const std::vector<double>& contractionCoefficients() const { return this->contraction_coefficients; }
157
161 size_t contractionSize() const { return this->contraction_coefficients.size(); }
162
163
164 /*
165 * MARK: Basis functions
166 */
167
171 size_t numberOfBasisFunctions() const;
172
176 std::vector<CartesianExponents> generateCartesianExponents() const;
177
185 std::vector<BasisFunction> basisFunctions() const;
186};
187
188
189} // namespace GQCP
Definition: CartesianGTO.hpp:38
Definition: EvaluableLinearCombination.hpp:46
Definition: GTOShell.hpp:32
void embedNormalizationFactor()
Definition: GTOShell.cpp:104
std::vector< BasisFunction > basisFunctions() const
Definition: GTOShell.cpp:213
size_t numberOfBasisFunctions() const
Definition: GTOShell.cpp:173
const std::vector< double > & gaussianExponents() const
Definition: GTOShell.hpp:95
bool areEmbeddedNormalizationFactorsOfPrimitives() const
Definition: GTOShell.hpp:132
bool isPure() const
Definition: GTOShell.hpp:100
size_t angularMomentum() const
Definition: GTOShell.hpp:90
void embedNormalizationFactorsOfPrimitives()
Definition: GTOShell.cpp:137
const std::vector< double > & contractionCoefficients() const
Definition: GTOShell.hpp:156
const Nucleus & nucleus() const
Definition: GTOShell.hpp:105
std::vector< CartesianExponents > generateCartesianExponents() const
Definition: GTOShell.cpp:186
bool isNormalized() const
Definition: GTOShell.hpp:122
void unEmbedNormalizationFactorsOfPrimitives()
Definition: GTOShell.cpp:154
size_t contractionSize() const
Definition: GTOShell.hpp:161
bool operator==(const GTOShell &rhs) const
Definition: GTOShell.cpp:68
Definition: Nucleus.hpp:36
Definition: BaseOneElectronIntegralBuffer.hpp:25