21 #ifndef fiber_simple_test_scalar_kernel_trial_integrand_functor_hpp
22 #define fiber_simple_test_scalar_kernel_trial_integrand_functor_hpp
24 #include "../common/common.hpp"
27 #include "collection_of_3d_arrays.hpp"
28 #include "geometrical_data.hpp"
29 #include "conjugate.hpp"
30 #include "scalar_traits.hpp"
42 template <
typename BasisFunctionType_,
typename KernelType_,
47 typedef BasisFunctionType_ BasisFunctionType;
48 typedef KernelType_ KernelType;
49 typedef ResultType_ ResultType;
52 void addGeometricalDependencies(
size_t& testGeomDeps,
size_t& trialGeomDeps)
const {
59 template <
template <
typename T>
class CollectionOf2dSlicesOfConstNdArrays>
65 const CollectionOf2dSlicesOfConstNdArrays<KernelType>& kernelValues)
const {
67 assert(kernelValues.size() >= 1);
68 assert(kernelValues[0].extent(0) == 1);
69 assert(kernelValues[0].extent(1) == 1);
73 assert(testValues.size() >= 1);
74 assert(trialValues.size() >= 1);
75 assert(testValues[0].extent(0) == trialValues[0].extent(0));
77 const int transformationDim = testValues[0].extent(0);
79 BasisFunctionType dotProduct = 0.;
80 for (
int dim = 0; dim < transformationDim; ++dim)
81 dotProduct += conjugate(testValues[0](dim)) *
83 ResultType result = dotProduct * kernelValues[0](0, 0);
88 template <
typename BasisFunctionType_,
typename KernelType_,
89 typename ResultType_,
int transformationDim>
93 typedef BasisFunctionType_ BasisFunctionType;
94 typedef KernelType_ KernelType;
95 typedef ResultType_ ResultType;
98 void addGeometricalDependencies(
size_t& testGeomDeps,
size_t& trialGeomDeps)
const {
105 template <
template <
typename T>
class CollectionOf2dSlicesOfConstNdArrays>
111 const CollectionOf2dSlicesOfConstNdArrays<KernelType>& kernelValues)
const {
113 assert(kernelValues.size() >= 1);
114 assert(kernelValues[0].extent(0) == 1);
115 assert(kernelValues[0].extent(1) == 1);
119 assert(testValues.size() >= 1);
120 assert(trialValues.size() >= 1);
122 assert(testValues[0].extent(0) == transformationDim);
123 assert(trialValues[0].extent(0) == transformationDim);
125 BasisFunctionType dotProduct = 0.;
126 for (
int dim = 0; dim < transformationDim; ++dim)
127 dotProduct += conjugate(testValues[0](dim)) *
129 ResultType result = dotProduct * kernelValues[0](0, 0);
Traits of scalar types.
Definition: scalar_traits.hpp:40
Definition: collection_of_3d_arrays.hpp:151
Functor evaluating the integrand of the simplest boundary integral operator.
Definition: simple_test_scalar_kernel_trial_integrand_functor.hpp:44
Definition: simple_test_scalar_kernel_trial_integrand_functor.hpp:90
Access to slices of geometrical data.
Definition: geometrical_data.hpp:88