21 #ifndef fiber_quadrature_strategy_hpp
22 #define fiber_quadrature_strategy_hpp
24 #include "../common/common.hpp"
26 #include "scalar_traits.hpp"
27 #include "shared_ptr.hpp"
28 #include "verbosity_level.hpp"
30 #include "../common/armadillo_fwd.hpp"
31 #include <boost/type_traits/is_same.hpp>
32 #include <boost/utility/enable_if.hpp>
39 class ParallelizationOptions;
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;
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>
72 std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
74 const shared_ptr<const GeometryFactory>& testGeometryFactory,
75 const shared_ptr<const GeometryFactory>& trialGeometryFactory,
84 const shared_ptr<const OpenClHandler>& openClHandler,
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,
94 parallelizationOptions, verbosityLevel,
95 cacheSingularIntegrals);
103 virtual std::auto_ptr<LocalAssemblerForLocalOperators<ResultType> >
105 const shared_ptr<const GeometryFactory>& geometryFactory,
111 const shared_ptr<const OpenClHandler>& openClHandler)
const = 0;
114 virtual std::auto_ptr<LocalAssemblerForLocalOperators<ResultType> >
116 const shared_ptr<const GeometryFactory>& geometryFactory,
123 const shared_ptr<const OpenClHandler>& openClHandler)
const = 0;
127 std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
129 const shared_ptr<const GeometryFactory>& geometryFactory,
134 const shared_ptr<const OpenClHandler>& openClHandler)
const {
135 return this->makeAssemblerForGridFunctionsImplRealUserFunction(
136 geometryFactory, rawGeometry, testShapesets,
137 testTransformations,
function, openClHandler);
142 std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
144 const shared_ptr<const GeometryFactory>& geometryFactory,
150 const shared_ptr<
const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
151 const shared_ptr<const OpenClHandler>& openClHandler,
153 return this->makeEvaluatorForIntegralOperatorsImplRealKernel(
154 geometryFactory, rawGeometry, trialShapesets,
155 kernels, trialTransformations, integral,
156 argumentLocalCoefficients,
157 openClHandler, parallelizationOptions);
161 std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
163 const arma::Mat<CoordinateType>& evaluationPoints,
164 const shared_ptr<const GeometryFactory>& geometryFactory,
170 const shared_ptr<const OpenClHandler>& openClHandler,
172 VerbosityLevel::Level verbosityLevel)
const {
173 return this->makeAssemblerForPotentialOperatorsImplRealKernel(
175 geometryFactory, rawGeometry, trialShapesets,
176 kernels, trialTransformations, integral,
177 openClHandler, parallelizationOptions, verbosityLevel);
181 virtual std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
182 makeAssemblerForIntegralOperatorsImplRealKernel(
183 const shared_ptr<const GeometryFactory>& testGeometryFactory,
184 const shared_ptr<const GeometryFactory>& trialGeometryFactory,
193 const shared_ptr<const OpenClHandler>& openClHandler,
195 VerbosityLevel::Level verbosityLevel,
196 bool cacheSingularIntegrals)
const = 0;
198 virtual std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
199 makeAssemblerForGridFunctionsImplRealUserFunction(
200 const shared_ptr<const GeometryFactory>& geometryFactory,
205 const shared_ptr<const OpenClHandler>& openClHandler)
const = 0;
207 virtual std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
208 makeEvaluatorForIntegralOperatorsImplRealKernel(
209 const shared_ptr<const GeometryFactory>& geometryFactory,
215 const shared_ptr<
const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
216 const shared_ptr<const OpenClHandler>& openClHandler,
219 virtual std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
220 makeAssemblerForPotentialOperatorsImplRealKernel(
221 const arma::Mat<CoordinateType>& evaluationPoints,
222 const shared_ptr<const GeometryFactory>& geometryFactory,
228 const shared_ptr<const OpenClHandler>& openClHandler,
230 VerbosityLevel::Level verbosityLevel)
const = 0;
240 template <
typename BasisFunctionType,
typename ResultType,
241 typename GeometryFactory,
typename Enable =
void>
247 typedef typename Base::CoordinateType CoordinateType;
256 std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
258 const shared_ptr<const GeometryFactory>& testGeometryFactory,
259 const shared_ptr<const GeometryFactory>& trialGeometryFactory,
268 const shared_ptr<const OpenClHandler>& openClHandler,
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,
278 parallelizationOptions, verbosityLevel,
279 cacheSingularIntegrals);
284 std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
286 const shared_ptr<const GeometryFactory>& geometryFactory,
291 const shared_ptr<const OpenClHandler>& openClHandler)
const {
292 return this->makeAssemblerForGridFunctionsImplComplexUserFunction(
293 geometryFactory, rawGeometry, testShapesets,
294 testTransformations,
function, openClHandler);
299 std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
301 const shared_ptr<const GeometryFactory>& geometryFactory,
307 const shared_ptr<
const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
308 const shared_ptr<const OpenClHandler>& openClHandler,
310 return this->makeEvaluatorForIntegralOperatorsImplComplexKernel(
311 geometryFactory, rawGeometry, trialShapesets,
312 kernel, trialTransformations, integral,
313 argumentLocalCoefficients,
314 openClHandler, parallelizationOptions);
319 std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
321 const arma::Mat<CoordinateType>& evaluationPoints,
322 const shared_ptr<const GeometryFactory>& geometryFactory,
328 const shared_ptr<const OpenClHandler>& openClHandler,
330 VerbosityLevel::Level verbosityLevel)
const {
331 return this->makeAssemblerForPotentialOperatorsImplComplexKernel(
333 geometryFactory, rawGeometry, trialShapesets,
334 kernels, trialTransformations, integral,
335 openClHandler, parallelizationOptions, verbosityLevel);
339 virtual std::auto_ptr<LocalAssemblerForIntegralOperators<ResultType> >
340 makeAssemblerForIntegralOperatorsImplComplexKernel(
341 const shared_ptr<const GeometryFactory>& testGeometryFactory,
342 const shared_ptr<const GeometryFactory>& trialGeometryFactory,
351 const shared_ptr<const OpenClHandler>& openClHandler,
353 VerbosityLevel::Level verbosityLevel,
354 bool cacheSingularIntegrals)
const = 0;
356 virtual std::auto_ptr<LocalAssemblerForGridFunctions<ResultType> >
357 makeAssemblerForGridFunctionsImplComplexUserFunction(
358 const shared_ptr<const GeometryFactory>& geometryFactory,
363 const shared_ptr<const OpenClHandler>& openClHandler)
const = 0;
365 virtual std::auto_ptr<EvaluatorForIntegralOperators<ResultType> >
366 makeEvaluatorForIntegralOperatorsImplComplexKernel(
367 const shared_ptr<const GeometryFactory>& geometryFactory,
373 const shared_ptr<
const std::vector<std::vector<ResultType> > >& argumentLocalCoefficients,
374 const shared_ptr<const OpenClHandler>& openClHandler,
377 virtual std::auto_ptr<LocalAssemblerForPotentialOperators<ResultType> >
378 makeAssemblerForPotentialOperatorsImplComplexKernel(
379 const arma::Mat<CoordinateType>& evaluationPoints,
380 const shared_ptr<const GeometryFactory>& geometryFactory,
386 const shared_ptr<const OpenClHandler>& openClHandler,
388 VerbosityLevel::Level verbosityLevel)
const = 0;
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>
397 typedef QuadratureStrategyBase<BasisFunctionType, ResultType, GeometryFactory> Base;
399 typedef typename Base::CoordinateType CoordinateType;
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 ¶llelizationOptions) 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 ¶llelizationOptions, 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 ¶llelizationOptions, 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 ¶llelizationOptions, 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 ¶llelizationOptions, 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 ¶llelizationOptions) 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