GQCP
Loading...
Searching...
No Matches
APIGGeminalCoefficients.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
24
25
26namespace GQCP {
27
28
33private:
34 size_t K; // the number of spatial orbitals corresponding to these geminal coefficients
35 size_t N_P; // the number of electron pairs (i.e. the number of geminals) corresponding to these geminal coefficients
36 MatrixX<double> G; // the APIG geminal coefficients
37
38
39public:
40 // CONSTRUCTORS
41
46
53 APIGGeminalCoefficients(const size_t N_P, const size_t K);
54
55
56 // DESTRUCTOR
57
61 ~APIGGeminalCoefficients() override;
62
63
64 // OPERATORS
65
72 double operator()(const size_t i, const size_t p) const;
73
74
75 // NAMED CONSTRUCTORS
76
82 static APIGGeminalCoefficients FromColumnMajor(const VectorX<double>& g, const size_t N_P, const size_t K);
83
89 static APIGGeminalCoefficients FromRowMajor(const VectorX<double>& g, const size_t N_P, const size_t K);
90
91
92 // STATIC PUBLIC METHODS
93
100 static size_t numberOfGeminalCoefficients(const size_t N_P, const size_t K);
101
102
103 // PUBLIC METHODS
104
108 const MatrixX<double>& asMatrix() const { return this->G; };
109
115 double overlap(const SpinUnresolvedONV& onv) const override;
116};
117
118
119} // namespace GQCP
Definition: APIGGeminalCoefficients.hpp:32
static size_t numberOfGeminalCoefficients(const size_t N_P, const size_t K)
Definition: APIGGeminalCoefficients.cpp:113
double operator()(const size_t i, const size_t p) const
Definition: APIGGeminalCoefficients.cpp:71
static APIGGeminalCoefficients FromColumnMajor(const VectorX< double > &g, const size_t N_P, const size_t K)
Definition: APIGGeminalCoefficients.cpp:86
double overlap(const SpinUnresolvedONV &onv) const override
Definition: APIGGeminalCoefficients.cpp:133
const MatrixX< double > & asMatrix() const
Definition: APIGGeminalCoefficients.hpp:108
~APIGGeminalCoefficients() override
Definition: APIGGeminalCoefficients.cpp:58
static APIGGeminalCoefficients FromRowMajor(const VectorX< double > &g, const size_t N_P, const size_t K)
Definition: APIGGeminalCoefficients.cpp:97
Definition: GeminalCoefficientsInterface.hpp:28
Definition: Matrix.hpp:47
Definition: BaseOneElectronIntegralBuffer.hpp:25