BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
assembled_potential_operator.hpp
1 // Copyright (C) 2011-2013 by the BEM++ Authors
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 // THE SOFTWARE.
20 
21 #ifndef bempp_assembled_potential_operator_hpp
22 #define bempp_assembled_potential_operator_hpp
23 
24 #include "../common/common.hpp"
25 
26 #include "../common/armadillo_fwd.hpp"
27 #include "../common/scalar_traits.hpp"
28 #include "../common/shared_ptr.hpp"
29 
30 namespace Bempp
31 {
32 
33 template <typename ValueType> class DiscreteBoundaryOperator;
34 template <typename BasisFunctionType, typename ResultType> class GridFunction;
35 template <typename BasisFunctionType> class Space;
36 
49 template <typename BasisFunctionType, typename ResultType>
51 {
52 public:
55 
56  // name abuse: the discrete operator plays the part of a discrete *potential*
57  // operator, not a discrete boundary operator...
76  const shared_ptr<const Space<BasisFunctionType> >& space_,
77  const shared_ptr<const arma::Mat<CoordinateType> >& evaluationPoints_,
78  const shared_ptr<const DiscreteBoundaryOperator<ResultType> >& op_,
79  int componentCount_);
80 
84  shared_ptr<const Space<BasisFunctionType> > space() const;
85 
90  shared_ptr<const arma::Mat<CoordinateType> > evaluationPoints() const;
91 
95  shared_ptr<const DiscreteBoundaryOperator<ResultType> >
96  discreteOperator() const;
97 
99  int componentCount() const;
100 
109  arma::Mat<ResultType> apply(
110  const GridFunction<BasisFunctionType, ResultType>& argument) const;
111 
112 private:
114  shared_ptr<const Space<BasisFunctionType> > m_space;
115  shared_ptr<const arma::Mat<CoordinateType> > m_evaluationPoints;
116  shared_ptr<const DiscreteBoundaryOperator<ResultType> > m_op;
117  int m_componentCount;
119 };
120 
121 } // namespace Bempp
122 
123 #endif
Traits of scalar types.
Definition: scalar_traits.hpp:40
int componentCount() const
Return the number of components of the potential.
Definition: assembled_potential_operator.cpp:90
Function space.
Definition: assembled_potential_operator.hpp:35
shared_ptr< const Space< BasisFunctionType > > space() const
Definition: assembled_potential_operator.cpp:68
shared_ptr< const DiscreteBoundaryOperator< ResultType > > discreteOperator() const
Definition: assembled_potential_operator.cpp:83
Discrete boundary operator.
Definition: assembled_potential_operator.hpp:33
arma::Mat< ResultType > apply(const GridFunction< BasisFunctionType, ResultType > &argument) const
Apply the operator to a grid function.
Definition: assembled_potential_operator.cpp:97
Function defined on a grid.
Definition: assembled_potential_operator.hpp:34
AssembledPotentialOperator(const shared_ptr< const Space< BasisFunctionType > > &space_, const shared_ptr< const arma::Mat< CoordinateType > > &evaluationPoints_, const shared_ptr< const DiscreteBoundaryOperator< ResultType > > &op_, int componentCount_)
Constructor.
Definition: assembled_potential_operator.cpp:33
shared_ptr< const arma::Mat< CoordinateType > > evaluationPoints() const
Definition: assembled_potential_operator.cpp:76
ScalarTraits< ResultType >::RealType CoordinateType
Type used to represent point coordinates.
Definition: assembled_potential_operator.hpp:54
Assembled potential operator.
Definition: assembled_potential_operator.hpp:50