@@ -169,6 +169,30 @@ gradf1Integral(const KernelType& W,
169
169
numbins);
170
170
}
171
171
172
+ // ------------------------------------------------------------------------------
173
+ // Functors for building interpolation of kernel
174
+ // ------------------------------------------------------------------------------
175
+ template <typename KernelType>
176
+ struct Wlookup {
177
+ const KernelType& mW ;
178
+ Wlookup (const KernelType& W): mW (W) {}
179
+ double operator ()(const double x) const { return mW (x, 1.0 ); }
180
+ };
181
+
182
+ template <typename KernelType>
183
+ struct gradWlookup {
184
+ const KernelType& mW ;
185
+ gradWlookup (const KernelType& W): mW (W) {}
186
+ double operator ()(const double x) const { return mW .grad (x, 1.0 ); }
187
+ };
188
+
189
+ template <typename KernelType>
190
+ struct grad2Wlookup {
191
+ const KernelType& mW ;
192
+ grad2Wlookup (const KernelType& W): mW (W) {}
193
+ double operator ()(const double x) const { return mW .grad2 (x, 1.0 ); }
194
+ };
195
+
172
196
} // anonymous
173
197
174
198
// ------------------------------------------------------------------------------
@@ -184,9 +208,9 @@ TableKernel<Dimension>::TableKernel(const KernelType& kernel,
184
208
mNumPoints (numPoints),
185
209
mMinNperh(std::max(minNperh, 1.1 /kernel.kernelExtent())),
186
210
mMaxNperh(maxNperh),
187
- mInterp(0.0 , kernel.kernelExtent(), numPoints, [&]( const double x) { return kernel (x, 1.0 ); } ),
188
- mGradInterp (0.0 , kernel.kernelExtent(), numPoints, [&]( const double x) { return kernel. grad (x, 1.0 ); } ),
189
- mGrad2Interp (0.0 , kernel.kernelExtent(), numPoints, [&]( const double x) { return kernel. grad2 (x, 1.0 ); } ),
211
+ mInterp(0.0 , kernel.kernelExtent(), numPoints, Wlookup<KernelType>( kernel) ),
212
+ mGradInterp(0.0 , kernel.kernelExtent(), numPoints, gradWlookup<KernelType>( kernel) ),
213
+ mGrad2Interp(0.0 , kernel.kernelExtent(), numPoints, grad2Wlookup<KernelType>( kernel) ),
190
214
mNperhLookup(),
191
215
mWsumLookup() {
192
216
0 commit comments