Skip to content

Commit 66b8309

Browse files
committed
Having to revert some of the lambda changes in TableKernel.
1 parent fcb1a3b commit 66b8309

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

src/Kernel/TableKernel.cc

+27-3
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,30 @@ gradf1Integral(const KernelType& W,
169169
numbins);
170170
}
171171

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+
172196
} // anonymous
173197

174198
//------------------------------------------------------------------------------
@@ -184,9 +208,9 @@ TableKernel<Dimension>::TableKernel(const KernelType& kernel,
184208
mNumPoints(numPoints),
185209
mMinNperh(std::max(minNperh, 1.1/kernel.kernelExtent())),
186210
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)),
190214
mNperhLookup(),
191215
mWsumLookup() {
192216

src/Utilities/QuadraticInterpolator.hh

+6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public:
2525
// Constructors, destructors
2626
template<typename Func>
2727
QuadraticInterpolator(double xmin, double xmax, size_t n, const Func& F);
28+
2829
QuadraticInterpolator(double xmin, double xmax, const std::vector<double>& yvals);
2930
SPHERAL_HOST_DEVICE QuadraticInterpolator() = default;
3031

@@ -89,6 +90,11 @@ class QuadraticInterpolator__(
8990
const Func& F)
9091
: VVI_VALUE_CTOR_ARGS((xmin,xmax,n,F)) {}
9192

93+
QuadraticInterpolator(double xmin,
94+
double xmax,
95+
const std::vector<double>& yvals)
96+
: VVI_VALUE_CTOR_ARGS((xmin,xmax,yvals)) {}
97+
9298
VVI_VALUE_DEF_CTOR(QuadraticInterpolator)
9399

94100
// Alternatively initialize from tabulated values

0 commit comments

Comments
 (0)