DFT-EFE
 
Loading...
Searching...
No Matches
RDM1Spectral.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Bikash Kanungo
24 */
25
26#ifndef dftefe_RDM1Spectral_h
27#define dftefe_RDM1Spectral_h
28
29#include <vector>
30#include <memory>
31#include <ksdft/RDM1.h>
33
34namespace dftefe
35{
36 namespace ksdft
37 {
44 template <typename ValueType, dftefe::utils::MemorySpace memorySpace>
45 class RDM1Spectral : public RDM1<ValueType, memorySpace>
46 {
47 public:
49
50 public:
52 virtual ~RDM1Spectral() = default;
53
54 void
57 ksOrbitals,
58 const std::vector<std::vector<double>> &occupancies,
59 const size_type nKSOrbs);
60
61 void
64 & ksOrbitals,
65 std::vector<std::vector<double>> &occupancies,
66 size_type & nKSOrbs);
67
68 bool
69 getKSSetFlag() const;
70
71 protected:
72 std::unique_ptr<linearAlgebra::MultiVector<ValueType, memorySpace>>
75 std::vector<std::vector<double>> d_occupancies;
78 };
79
80 } // namespace ksdft
81} // namespace dftefe
82#include "RDM1Spectral.t.cpp"
83#endif // dftefe_RDM1Spectral_h
Intermediate abstract class that stores the spectral (eigen) decomposition of the one-particle reduce...
Definition: RDM1Spectral.h:46
void getSpectral(std::unique_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > &ksOrbitals, std::vector< std::vector< double > > &occupancies, size_type &nKSOrbs)
Definition: RDM1Spectral.t.cpp:54
bool getKSSetFlag() const
Definition: RDM1Spectral.t.cpp:68
void setSpectral(std::unique_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > ksOrbitals, const std::vector< std::vector< double > > &occupancies, const size_type nKSOrbs)
Definition: RDM1Spectral.t.cpp:39
std::vector< std::vector< double > > d_occupancies
Definition: RDM1Spectral.h:75
size_type d_nKSOrbs
Definition: RDM1Spectral.h:74
std::unique_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_ksOrbs
Definition: RDM1Spectral.h:73
RDM1Spectral()
Definition: RDM1Spectral.t.cpp:31
virtual ~RDM1Spectral()=default
typename RDM1< ValueType, memorySpace >::AttrStorage AttrStorage
Definition: RDM1Spectral.h:48
bool d_evalFlag
Definition: RDM1Spectral.h:77
bool d_ksSetFlag
Definition: RDM1Spectral.h:76
Abstract class for the one-particle reduced density matrix.
Definition: RDM1.h:52
std::vector< dftefe::quadrature::QuadratureValuesContainer< double, dftefe::utils::MemorySpace::HOST > > AttrStorage
Definition: RDM1.h:59
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9