DFT-EFE
 
Loading...
Searching...
No Matches
ElectrostaticFE.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 Avirup Sircar
24 */
25
26#ifndef dftefeElectrostaticFE_h
27#define dftefeElectrostaticFE_h
28
31#include <ksdft/Hamiltonian.h>
32#include <ksdft/Energy.h>
35#include <vector>
36
37namespace dftefe
38{
39 namespace ksdft
40 {
51 template <typename ValueTypeBasisData,
52 typename ValueTypeBasisCoeff,
53 typename ValueTypeWaveFnBasisData,
54 utils::MemorySpace memorySpace,
55 size_type dim>
57 : public Hamiltonian<
58 linearAlgebra::blasLapack::scalar_type<
59 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisData,
60 ValueTypeWaveFnBasisData>,
61 ValueTypeBasisCoeff>,
62 memorySpace>,
63 public Energy<linearAlgebra::blasLapack::real_type<
64 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisData,
65 ValueTypeBasisCoeff>>>
66 {
67 public:
68 using ValueType =
70 ValueTypeBasisCoeff>;
74 ValueTypeWaveFnBasisData>,
75 ValueTypeBasisCoeff>,
76 memorySpace>;
78
79 public:
80 virtual ~ElectrostaticFE() = default;
81 virtual void
82 getLocal(Storage &cellWiseStorage) const = 0;
83 virtual RealType
84 getEnergy() const = 0;
85 virtual std::vector<
88 virtual void
91 bool updateGhostX,
92 bool updateGhostY) const = 0;
93 virtual bool
94 hasLocalComponent() const = 0;
95 virtual bool
97
98 }; // end of class ElectrostaticFE
99 } // end of namespace ksdft
100} // end of namespace dftefe
101#endif // dftefeElectrostaticFE_h
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on...
Definition: ElectrostaticFE.h:66
virtual bool hasNonLocalComponent() const =0
virtual bool hasLocalComponent() const =0
virtual void applyNonLocal(linearAlgebra::MultiVector< ValueType, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y, bool updateGhostX, bool updateGhostY) const =0
virtual ~ElectrostaticFE()=default
linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff > ValueType
Definition: ElectrostaticFE.h:70
virtual void getLocal(Storage &cellWiseStorage) const =0
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: ElectrostaticFE.h:77
virtual RealType getEnergy() const =0
virtual std::vector< quadrature::QuadratureValuesContainer< ValueType, memorySpace > > getFunctionalDerivative() const =0
Definition: Energy.h:35
Definition: Hamiltonian.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
Definition: MemoryStorage.h:38
typeInternal::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:177
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9