DFT-EFE
 
Loading...
Searching...
No Matches
OperatorContextFE.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 dftefeOperatorContext_h
27#define dftefeOperatorContext_h
28
33namespace dftefe
34{
35 namespace linearAlgebra
36 {
47 template <typename ValueTypeOperator,
48 typename ValueTypeOperand,
49 utils::MemorySpace memorySpace,
50 size_type dim>
51 class OperatorContextFE ::
52 OperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>
53 {
54 public:
60 &feBasisDataStorage);
61
66 ~OperatorContextFE() = default;
67
68 /*
69 * @brief Function to apply the operator on an input Vector \p X and store
70 * the output in \p Y. A typical use case is that the operator is a matrix
71 * (\f$A$\f) and we want to evaluate \f$Y=AX$\f
72 *
73 * @param[in] X Input Vector
74 * @param[out] Y Output Vector that stores the action of the operator
75 * on \p X
76 *
77 * @note The input Vector \p X can be modified inside the function for
78 * performance reasons. If the user needs \p X to be constant
79 * (un-modified), we suggest the user to make a copy of \p X
80 * prior to calling this function
81 *
82 */
83 virtual void
86
87 virtual void
89
90 virtual void
92 };
93 } // end of namespace linearAlgebra
94} // end of namespace dftefe
95#endif // dftefeOperatorContext_h
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:53
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
virtual void apply(MultiVector< ValueTypeOperand, memorySpace > &X, MultiVector< ValueTypeUnion, memorySpace > &Y) const =0
OperatorContextFE(const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > &feBasisDataStorage)
Constructor.
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: OperatorContext.h:51
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8