BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
quadrature_strategy.hpp
1 // Copyright (C) 2011-2012 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 fiber_quadrature_strategy_hpp
22 #define fiber_quadrature_strategy_hpp
23 
24 #include "../common/common.hpp"
25 
26 #include "scalar_traits.hpp"
27 #include "shared_ptr.hpp"
28 #include "verbosity_level.hpp"
29 
30 #include "../common/armadillo_fwd.hpp"
31 #include <boost/type_traits/is_same.hpp>
32 #include <boost/utility/enable_if.hpp>
33 #include <memory>
34 
35 namespace Fiber
36 {
37 
39 class ParallelizationOptions;
40 class OpenClHandler;
41 
42 template <typename ValueType> class Shapeset;
43 template <typename CoordinateType> class CollectionOfShapesetTransformations;
44 template <typename ValueType> class Function;
45 template <typename ValueType> class CollectionOfKernels;
46 template <typename BasisFunctionType, typename KernelType, typename ResultType>
47 class TestKernelTrialIntegral;
48 template <typename BasisFunctionType, typename KernelType, typename ResultType>
49 class KernelTrialIntegral;
50 template <typename BasisFunctionType, typename ResultType>
51 class TestTrialIntegral;
52 template <typename CoordinateType> class RawGridGeometry;
53 
54 template <typename ResultType> class LocalAssemblerForIntegralOperators;
55 template <typename ResultType> class LocalAssemblerForLocalOperators;
56 template <typename ResultType> class LocalAssemblerForPotentialOperators;
57 template <typename ResultType> class LocalAssemblerForGridFunctions;
58 template <typename ResultType> class EvaluatorForIntegralOperators;
61 template <typename BasisFunctionType, typename ResultType,
62  typename GeometryFactory>
64 {
65 public:
66  typedef typename ScalarTraits<ResultType>::RealType CoordinateType;
67 
68  virtual ~QuadratureStrategyBase() {}
69 
72  std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
74  const shared_ptr<const GeometryFactory>& testGeometryFactory,
75  const shared_ptr<const GeometryFactory>& trialGeometryFactory,
76  const shared_ptr<const RawGridGeometry<CoordinateType> >& testRawGeometry,
77  const shared_ptr<const RawGridGeometry<CoordinateType> >& trialRawGeometry,
78  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
79  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
80  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
81  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernels,
82  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
84  const shared_ptr<const OpenClHandler>& openClHandler,
85  const ParallelizationOptions& parallelizationOptions,
86  VerbosityLevel::Level verbosityLevel,
87  bool cacheSingularIntegrals) const {
88  return this->makeAssemblerForIntegralOperatorsImplRealKernel(
89  testGeometryFactory, trialGeometryFactory,
90  testRawGeometry, trialRawGeometry,
91  testShapesets, trialShapesets,
92  testTransformations, kernels, trialTransformations, integral,
93  openClHandler,
94  parallelizationOptions, verbosityLevel,
95  cacheSingularIntegrals);
96  }
97 
103  virtual std::auto_ptr<LocalAssemblerForLocalOperators<ResultType> >
105  const shared_ptr<const GeometryFactory>& geometryFactory,
106  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
107  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
108  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
109  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
110  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
111  const shared_ptr<const OpenClHandler>& openClHandler) const = 0;
112 
114  virtual std::auto_ptr<LocalAssemblerForLocalOperators<ResultType> >
116  const shared_ptr<const GeometryFactory>& geometryFactory,
117  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
118  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
119  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
120  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
121  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
122  const shared_ptr<const TestTrialIntegral<BasisFunctionType, ResultType> >& integral,
123  const shared_ptr<const OpenClHandler>& openClHandler) const = 0;
124 
127  std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
129  const shared_ptr<const GeometryFactory>& geometryFactory,
130  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
131  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
132  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
133  const shared_ptr<const Function<ResultType> >& function,
134  const shared_ptr<const OpenClHandler>& openClHandler) const {
135  return this->makeAssemblerForGridFunctionsImplRealUserFunction(
136  geometryFactory, rawGeometry, testShapesets,
137  testTransformations, function, openClHandler);
138  }
139 
142  std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
144  const shared_ptr<const GeometryFactory>& geometryFactory,
145  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
146  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
147  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernels,
148  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
150  const shared_ptr<const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
151  const shared_ptr<const OpenClHandler>& openClHandler,
152  const ParallelizationOptions& parallelizationOptions) const {
153  return this->makeEvaluatorForIntegralOperatorsImplRealKernel(
154  geometryFactory, rawGeometry, trialShapesets,
155  kernels, trialTransformations, integral,
156  argumentLocalCoefficients,
157  openClHandler, parallelizationOptions);
158  }
159 
161  std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
163  const arma::Mat<CoordinateType>& evaluationPoints,
164  const shared_ptr<const GeometryFactory>& geometryFactory,
165  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
166  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
167  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernels,
168  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
170  const shared_ptr<const OpenClHandler>& openClHandler,
171  const ParallelizationOptions& parallelizationOptions,
172  VerbosityLevel::Level verbosityLevel) const {
173  return this->makeAssemblerForPotentialOperatorsImplRealKernel(
174  evaluationPoints,
175  geometryFactory, rawGeometry, trialShapesets,
176  kernels, trialTransformations, integral,
177  openClHandler, parallelizationOptions, verbosityLevel);
178  }
179 
180 private:
181  virtual std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
182  makeAssemblerForIntegralOperatorsImplRealKernel(
183  const shared_ptr<const GeometryFactory>& testGeometryFactory,
184  const shared_ptr<const GeometryFactory>& trialGeometryFactory,
185  const shared_ptr<const RawGridGeometry<CoordinateType> >& testRawGeometry,
186  const shared_ptr<const RawGridGeometry<CoordinateType> >& trialRawGeometry,
187  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
188  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
189  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
190  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernel,
191  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
193  const shared_ptr<const OpenClHandler>& openClHandler,
194  const ParallelizationOptions& parallelizationOptions,
195  VerbosityLevel::Level verbosityLevel,
196  bool cacheSingularIntegrals) const = 0;
197 
198  virtual std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
199  makeAssemblerForGridFunctionsImplRealUserFunction(
200  const shared_ptr<const GeometryFactory>& geometryFactory,
201  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
202  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
203  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
204  const shared_ptr<const Function<CoordinateType> >& function,
205  const shared_ptr<const OpenClHandler>& openClHandler) const = 0;
206 
207  virtual std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
208  makeEvaluatorForIntegralOperatorsImplRealKernel(
209  const shared_ptr<const GeometryFactory>& geometryFactory,
210  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
211  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
212  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernel,
213  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
215  const shared_ptr<const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
216  const shared_ptr<const OpenClHandler>& openClHandler,
217  const ParallelizationOptions& parallelizationOptions) const = 0;
218 
219  virtual std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
220  makeAssemblerForPotentialOperatorsImplRealKernel(
221  const arma::Mat<CoordinateType>& evaluationPoints,
222  const shared_ptr<const GeometryFactory>& geometryFactory,
223  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
224  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
225  const shared_ptr<const CollectionOfKernels<CoordinateType> >& kernels,
226  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
228  const shared_ptr<const OpenClHandler>& openClHandler,
229  const ParallelizationOptions& parallelizationOptions,
230  VerbosityLevel::Level verbosityLevel) const = 0;
231 };
232 
240 template <typename BasisFunctionType, typename ResultType,
241  typename GeometryFactory, typename Enable = void>
243  public QuadratureStrategyBase<BasisFunctionType, ResultType, GeometryFactory>
244 {
246 public:
247  typedef typename Base::CoordinateType CoordinateType;
248 
253 
256  std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
258  const shared_ptr<const GeometryFactory>& testGeometryFactory,
259  const shared_ptr<const GeometryFactory>& trialGeometryFactory,
260  const shared_ptr<const RawGridGeometry<CoordinateType> >& testRawGeometry,
261  const shared_ptr<const RawGridGeometry<CoordinateType> >& trialRawGeometry,
262  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
263  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
264  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
265  const shared_ptr<const CollectionOfKernels<ResultType> >& kernels,
266  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
268  const shared_ptr<const OpenClHandler>& openClHandler,
269  const ParallelizationOptions& parallelizationOptions,
270  VerbosityLevel::Level verbosityLevel,
271  bool cacheSingularIntegrals) const {
272  return this->makeAssemblerForIntegralOperatorsImplComplexKernel(
273  testGeometryFactory, trialGeometryFactory,
274  testRawGeometry, trialRawGeometry,
275  testShapesets, trialShapesets,
276  testTransformations, kernels, trialTransformations, integral,
277  openClHandler,
278  parallelizationOptions, verbosityLevel,
279  cacheSingularIntegrals);
280  }
281 
284  std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
286  const shared_ptr<const GeometryFactory>& geometryFactory,
287  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
288  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
289  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
290  const shared_ptr<const Function<ResultType> >& function,
291  const shared_ptr<const OpenClHandler>& openClHandler) const {
292  return this->makeAssemblerForGridFunctionsImplComplexUserFunction(
293  geometryFactory, rawGeometry, testShapesets,
294  testTransformations, function, openClHandler);
295  }
296 
299  std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
301  const shared_ptr<const GeometryFactory>& geometryFactory,
302  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
303  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
304  const shared_ptr<const CollectionOfKernels<ResultType> >& kernel,
305  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
306  const shared_ptr<const KernelTrialIntegral<BasisFunctionType, ResultType, ResultType> >& integral,
307  const shared_ptr<const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
308  const shared_ptr<const OpenClHandler>& openClHandler,
309  const ParallelizationOptions& parallelizationOptions) const {
310  return this->makeEvaluatorForIntegralOperatorsImplComplexKernel(
311  geometryFactory, rawGeometry, trialShapesets,
312  kernel, trialTransformations, integral,
313  argumentLocalCoefficients,
314  openClHandler, parallelizationOptions);
315  }
316 
319  std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
321  const arma::Mat<CoordinateType>& evaluationPoints,
322  const shared_ptr<const GeometryFactory>& geometryFactory,
323  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
324  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
325  const shared_ptr<const CollectionOfKernels<ResultType> >& kernels,
326  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
327  const shared_ptr<const KernelTrialIntegral<BasisFunctionType, ResultType, ResultType> >& integral,
328  const shared_ptr<const OpenClHandler>& openClHandler,
329  const ParallelizationOptions& parallelizationOptions,
330  VerbosityLevel::Level verbosityLevel) const {
331  return this->makeAssemblerForPotentialOperatorsImplComplexKernel(
332  evaluationPoints,
333  geometryFactory, rawGeometry, trialShapesets,
334  kernels, trialTransformations, integral,
335  openClHandler, parallelizationOptions, verbosityLevel);
336  }
337 
338 private:
339  virtual std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
340  makeAssemblerForIntegralOperatorsImplComplexKernel(
341  const shared_ptr<const GeometryFactory>& testGeometryFactory,
342  const shared_ptr<const GeometryFactory>& trialGeometryFactory,
343  const shared_ptr<const RawGridGeometry<CoordinateType> >& testRawGeometry,
344  const shared_ptr<const RawGridGeometry<CoordinateType> >& trialRawGeometry,
345  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
346  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
347  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
348  const shared_ptr<const CollectionOfKernels<ResultType> >& kernels,
349  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
351  const shared_ptr<const OpenClHandler>& openClHandler,
352  const ParallelizationOptions& parallelizationOptions,
353  VerbosityLevel::Level verbosityLevel,
354  bool cacheSingularIntegrals) const = 0;
355 
356  virtual std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
357  makeAssemblerForGridFunctionsImplComplexUserFunction(
358  const shared_ptr<const GeometryFactory>& geometryFactory,
359  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
360  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& testShapesets,
361  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& testTransformations,
362  const shared_ptr<const Function<ResultType> >& function,
363  const shared_ptr<const OpenClHandler>& openClHandler) const = 0;
364 
365  virtual std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
366  makeEvaluatorForIntegralOperatorsImplComplexKernel(
367  const shared_ptr<const GeometryFactory>& geometryFactory,
368  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
369  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
370  const shared_ptr<const CollectionOfKernels<ResultType> >& kernels,
371  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
372  const shared_ptr<const KernelTrialIntegral<BasisFunctionType, ResultType, ResultType> >& integral,
373  const shared_ptr<const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
374  const shared_ptr<const OpenClHandler>& openClHandler,
375  const ParallelizationOptions& parallelizationOptions) const = 0;
376 
377  virtual std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
378  makeAssemblerForPotentialOperatorsImplComplexKernel(
379  const arma::Mat<CoordinateType>& evaluationPoints,
380  const shared_ptr<const GeometryFactory>& geometryFactory,
381  const shared_ptr<const RawGridGeometry<CoordinateType> >& rawGeometry,
382  const shared_ptr<const std::vector<const Shapeset<BasisFunctionType>*> >& trialShapesets,
383  const shared_ptr<const CollectionOfKernels<ResultType> >& kernels,
384  const shared_ptr<const CollectionOfShapesetTransformations<CoordinateType> >& trialTransformations,
385  const shared_ptr<const KernelTrialIntegral<BasisFunctionType, ResultType, ResultType> >& integral,
386  const shared_ptr<const OpenClHandler>& openClHandler,
387  const ParallelizationOptions& parallelizationOptions,
388  VerbosityLevel::Level verbosityLevel) const = 0;
389 };
390 
392 template <typename BasisFunctionType, typename ResultType, typename GeometryFactory>
393 class QuadratureStrategy<BasisFunctionType, ResultType, GeometryFactory,
394  typename boost::enable_if<boost::is_same<ResultType, typename ScalarTraits<ResultType>::RealType> >::type > :
395  public QuadratureStrategyBase<BasisFunctionType, ResultType, GeometryFactory>
396 {
397  typedef QuadratureStrategyBase<BasisFunctionType, ResultType, GeometryFactory> Base;
398 public:
399  typedef typename Base::CoordinateType CoordinateType;
400 };
403 } // namespace Fiber
404 
405 #endif
Traits of scalar types.
Definition: scalar_traits.hpp:40
std::auto_ptr< EvaluatorForIntegralOperators< ResultType > > makeEvaluatorForIntegralOperators(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const std::vector< std::vector< ResultType > > > &argumentLocalCoefficients, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions) const
Allocate an evaluator for an integral operator with real kernel applied to a grid function...
Definition: quadrature_strategy.hpp:143
An integral representing the weak form of an integral operator.
Definition: test_kernel_trial_integral.hpp:70
virtual std::auto_ptr< LocalAssemblerForLocalOperators< ResultType > > makeAssemblerForLocalOperators(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestTrialIntegral< BasisFunctionType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler) const =0
Allocate a Galerkin-mode local assembler for a local operator.
Collection of kernels.
Definition: collection_of_kernels.hpp:59
std::auto_ptr< LocalAssemblerForPotentialOperators< ResultType > > makeAssemblerForPotentialOperators(const arma::Mat< CoordinateType > &evaluationPoints, const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel) const
Allocate a local assembler for a potential operator with complex kernel.
Definition: quadrature_strategy.hpp:320
Base class for quadrature strategies.
Definition: quadrature_strategy.hpp:242
Parallel operation settings.
Definition: parallelization_options.hpp:32
std::auto_ptr< LocalAssemblerForIntegralOperators< ResultType > > makeAssemblerForIntegralOperators(const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestKernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
Allocate a Galerkin-mode local assembler for an integral operator with complex kernel.
Definition: quadrature_strategy.hpp:257
virtual std::auto_ptr< LocalAssemblerForLocalOperators< ResultType > > makeAssemblerForIdentityOperators(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const OpenClHandler > &openClHandler) const =0
Allocate a Galerkin-mode local assembler for the identity operator.
Definition: quadrature_strategy.hpp:63
std::auto_ptr< LocalAssemblerForPotentialOperators< ResultType > > makeAssemblerForPotentialOperators(const arma::Mat< CoordinateType > &evaluationPoints, const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel) const
Allocate a local assembler for a potential operator with real kernel.
Definition: quadrature_strategy.hpp:162
std::auto_ptr< LocalAssemblerForIntegralOperators< ResultType > > makeAssemblerForIntegralOperators(const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestKernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
Allocate a Galerkin-mode local assembler for an integral operator with real kernel.
Definition: quadrature_strategy.hpp:73
Collection of shape functions defined on a reference element.
Definition: default_local_assembler_for_operators_on_surfaces_utilities.hpp:34
std::auto_ptr< LocalAssemblerForGridFunctions< ResultType > > makeAssemblerForGridFunctions(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const Function< ResultType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
Allocate a local assembler for calculations of the projections of complex-valued functions from a giv...
Definition: quadrature_strategy.hpp:285
Function to be used as a source term.
Definition: function.hpp:39
std::auto_ptr< LocalAssemblerForGridFunctions< ResultType > > makeAssemblerForGridFunctions(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const Function< ResultType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
Allocate a local assembler for calculations of the projections of functions from a given space on a F...
Definition: quadrature_strategy.hpp:128
std::auto_ptr< EvaluatorForIntegralOperators< ResultType > > makeEvaluatorForIntegralOperators(const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernel, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const std::vector< std::vector< ResultType > > > &argumentLocalCoefficients, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions) const
Allocate an evaluator for an integral operator with complex-valued kernel applied to a grid function...
Definition: quadrature_strategy.hpp:300
Definition: default_local_assembler_for_operators_on_surfaces_utilities.hpp:35
Definition: kernel_trial_integral.hpp:42