BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
general_hypersingular_integral_operator_imp.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 bempp_general_hypersingular_integral_operator_imp_hpp
22 #define bempp_general_hypersingular_integral_operator_imp_hpp
23 
24 #include "general_hypersingular_integral_operator.hpp"
25 
26 #include "../fiber/default_collection_of_kernels.hpp"
27 #include "../fiber/default_collection_of_basis_transformations.hpp"
28 #include "../fiber/default_test_kernel_trial_integral.hpp"
29 
30 namespace Bempp
31 {
32 
33 template <typename BasisFunctionType_, typename KernelType_, typename ResultType_>
34 template <typename KernelFunctor,
35  typename TestTransformationsFunctor,
36  typename TrialTransformationsFunctor,
37  typename IntegrandFunctor,
38  typename OffDiagonalKernelFunctor,
39  typename OffDiagonalTestTransformationsFunctor,
40  typename OffDiagonalTrialTransformationsFunctor,
41  typename OffDiagonalIntegrandFunctor>
42 GeneralHypersingularIntegralOperator<
43 BasisFunctionType_, KernelType_, ResultType_>::
44 GeneralHypersingularIntegralOperator(
45  const shared_ptr<const Space<BasisFunctionType_> >& domain,
46  const shared_ptr<const Space<BasisFunctionType_> >& range,
47  const shared_ptr<const Space<BasisFunctionType_> >& dualToRange,
48  const std::string& label,
49  int symmetry,
50  const KernelFunctor& kernelFunctor,
51  const TestTransformationsFunctor& testTransformationsFunctor,
52  const TrialTransformationsFunctor& trialTransformationsFunctor,
53  const IntegrandFunctor& integrandFunctor,
54  const OffDiagonalKernelFunctor& offDiagonalKernelFunctor,
55  const OffDiagonalTestTransformationsFunctor& offDiagonalTestTransformationsFunctor,
56  const OffDiagonalTrialTransformationsFunctor& offDiagonalTrialTransformationsFunctor,
57  const OffDiagonalIntegrandFunctor& offDiagonalIntegrandFunctor) :
58  Base(domain, range, dualToRange, label, symmetry),
59  m_kernels(
60  new Fiber::DefaultCollectionOfKernels<KernelFunctor>(kernelFunctor)),
61  m_testTransformations(
62  new Fiber::DefaultCollectionOfShapesetTransformations<TestTransformationsFunctor>(
63  testTransformationsFunctor)),
64  m_trialTransformations(
65  new Fiber::DefaultCollectionOfShapesetTransformations<TrialTransformationsFunctor>(
66  trialTransformationsFunctor)),
67  m_integral(
68  new Fiber::DefaultTestKernelTrialIntegral<IntegrandFunctor>(
69  integrandFunctor)),
70  m_offDiagonalKernels(
71  new Fiber::DefaultCollectionOfKernels<OffDiagonalKernelFunctor>(
72  offDiagonalKernelFunctor)),
73  m_offDiagonalTestTransformations(
74  new Fiber::DefaultCollectionOfShapesetTransformations<OffDiagonalTestTransformationsFunctor>(
75  offDiagonalTestTransformationsFunctor)),
76  m_offDiagonalTrialTransformations(
77  new Fiber::DefaultCollectionOfShapesetTransformations<OffDiagonalTrialTransformationsFunctor>(
78  offDiagonalTrialTransformationsFunctor)),
79  m_offDiagonalIntegral(
80  new Fiber::DefaultTestKernelTrialIntegral<OffDiagonalIntegrandFunctor>(
81  offDiagonalIntegrandFunctor))
82 {
83 }
84 
85 template <typename BasisFunctionType_, typename KernelType_, typename ResultType_>
86 template <typename KernelFunctor,
87  typename TestTransformationsFunctor,
88  typename TrialTransformationsFunctor,
89  typename OffDiagonalKernelFunctor,
90  typename OffDiagonalTestTransformationsFunctor,
91  typename OffDiagonalTrialTransformationsFunctor>
93 BasisFunctionType_, KernelType_, ResultType_>::
95  const shared_ptr<const Space<BasisFunctionType_> >& domain,
96  const shared_ptr<const Space<BasisFunctionType_> >& range,
97  const shared_ptr<const Space<BasisFunctionType_> >& dualToRange,
98  const std::string& label,
99  int symmetry,
100  const KernelFunctor& kernelFunctor,
101  const TestTransformationsFunctor& testTransformationsFunctor,
102  const TrialTransformationsFunctor& trialTransformationsFunctor,
103  const shared_ptr<Fiber::TestKernelTrialIntegral<
104  BasisFunctionType_, KernelType_, ResultType_> >& integral,
105  const OffDiagonalKernelFunctor& offDiagonalKernelFunctor,
106  const OffDiagonalTestTransformationsFunctor& offDiagonalTestTransformationsFunctor,
107  const OffDiagonalTrialTransformationsFunctor& offDiagonalTrialTransformationsFunctor,
108  const shared_ptr<Fiber::TestKernelTrialIntegral<
109  BasisFunctionType_, KernelType_, ResultType_> >& offDiagonalIntegral) :
110  Base(domain, range, dualToRange, label, symmetry),
111  m_kernels(
112  new Fiber::DefaultCollectionOfKernels<KernelFunctor>(kernelFunctor)),
113  m_testTransformations(
114  new Fiber::DefaultCollectionOfShapesetTransformations<TestTransformationsFunctor>(
115  testTransformationsFunctor)),
116  m_trialTransformations(
117  new Fiber::DefaultCollectionOfShapesetTransformations<TrialTransformationsFunctor>(
118  trialTransformationsFunctor)),
119  m_integral(integral),
120  m_offDiagonalKernels(
121  new Fiber::DefaultCollectionOfKernels<OffDiagonalKernelFunctor>(
122  offDiagonalKernelFunctor)),
123  m_offDiagonalTestTransformations(
124  new Fiber::DefaultCollectionOfShapesetTransformations<OffDiagonalTestTransformationsFunctor>(
125  offDiagonalTestTransformationsFunctor)),
126  m_offDiagonalTrialTransformations(
127  new Fiber::DefaultCollectionOfShapesetTransformations<OffDiagonalTrialTransformationsFunctor>(
128  offDiagonalTrialTransformationsFunctor)),
129  m_offDiagonalIntegral(offDiagonalIntegral)
130 {
131 }
132 
133 } // namespace Bempp
134 
135 #endif
An integral representing the weak form of an integral operator.
Definition: test_kernel_trial_integral.hpp:70
Function space.
Definition: assembled_potential_operator.hpp:35
Standard implementation of a hypersingular singular integral operator.
Definition: general_hypersingular_integral_operator.hpp:65
Hypersingular integral boundary operator.
Definition: hypersingular_integral_operator.hpp:105