GQCP
Loading...
Searching...
No Matches
QCMethodNewtonOrbitalOptimizer.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
34protected:
35 Orbital1DM<double> D; // spin-summed 1-DM
36 Orbital2DM<double> d; // spin-summed 2-DM
37
38
39public:
40 // CONSTRUCTORS
41 using NewtonOrbitalOptimizer::NewtonOrbitalOptimizer; // inherit base constructors
42
43
44 // DESTRUCTOR
45
50
51
52 // PUBLIC PURE VIRTUAL METHODS
53
57 virtual Orbital1DM<double> calculate1DM() const = 0;
58
62 virtual Orbital2DM<double> calculate2DM() const = 0;
63
67 virtual void prepareDMCalculation(const RSQHamiltonian<double>& sq_hamiltonian) = 0;
68
69
70 // PUBLIC OVERRIDDEN METHODS
71
77 SquareMatrix<double> calculateGradientMatrix(const RSQHamiltonian<double>& sq_hamiltonian) const override;
78
85
89 void prepareOrbitalDerivativesCalculation(const RSQHamiltonian<double>& sq_hamiltonian) override;
90
91
92 // PUBLIC METHODS
93
97 const Orbital1DM<double>& oneDM() const { return this->D; }
98
102 const Orbital2DM<double>& twoDM() const { return this->d; }
103};
104
105
106} // namespace GQCP
Definition: NewtonOrbitalOptimizer.hpp:37
NewtonOrbitalOptimizer(std::shared_ptr< BaseHessianModifier > hessian_modifier, const double convergence_threshold=1.0e-08, const size_t maximum_number_of_iterations=128)
Definition: NewtonOrbitalOptimizer.cpp:38
Definition: Orbital1DM.hpp:42
Definition: Orbital2DM.hpp:41
Definition: QCMethodNewtonOrbitalOptimizer.hpp:33
Orbital1DM< double > D
Definition: QCMethodNewtonOrbitalOptimizer.hpp:35
const Orbital1DM< double > & oneDM() const
Definition: QCMethodNewtonOrbitalOptimizer.hpp:97
virtual ~QCMethodNewtonOrbitalOptimizer()=default
SquareMatrix< double > calculateGradientMatrix(const RSQHamiltonian< double > &sq_hamiltonian) const override
Definition: QCMethodNewtonOrbitalOptimizer.cpp:33
const Orbital2DM< double > & twoDM() const
Definition: QCMethodNewtonOrbitalOptimizer.hpp:102
void prepareOrbitalDerivativesCalculation(const RSQHamiltonian< double > &sq_hamiltonian) override
Definition: QCMethodNewtonOrbitalOptimizer.cpp:75
virtual void prepareDMCalculation(const RSQHamiltonian< double > &sq_hamiltonian)=0
virtual Orbital2DM< double > calculate2DM() const =0
Orbital2DM< double > d
Definition: QCMethodNewtonOrbitalOptimizer.hpp:36
virtual Orbital1DM< double > calculate1DM() const =0
SquareRankFourTensor< double > calculateHessianTensor(const RSQHamiltonian< double > &sq_hamiltonian) const override
Definition: QCMethodNewtonOrbitalOptimizer.cpp:46
Definition: SQHamiltonian.hpp:54
Definition: SquareMatrix.hpp:39
Definition: SquareRankFourTensor.hpp:36
Definition: BaseOneElectronIntegralBuffer.hpp:25