Go to the documentation of this file.
6 #ifndef clusterCebysevK_hh
7 #define clusterCebysevK_hh
34 template <
class K = bem::Laplace,
class Fspc = concepts::Real>
59 inline int index_(
int ix,
int iy,
int iz)
const;
71 uint
blksz(uint
m)
const {
return (
m * (
m * (
m + 3) + 2)) / 6;}
72 uint
m()
const {
return m_;}
90 const Fspc src[], Fspc dst[])
const;
92 const Fspc src[], Fspc dst[])
const;
95 template <
class K,
class Fspc>
98 return (((m+3)*m+2)*m + ((3-ix)*3*ix)) / 6 + m*ix + iy;
101 template <
class K,
class Fspc>
107 fit(m, z, F); ceby2poly(m, z, F);
115 template <
class K,
class Fspc>
119 fit(m, z, F); ceby2poly(m, z, F);
122 template <
class K,
class Fspc>
124 const Fspc src[], Fspc dst[])
const {
126 if (fexp) {
apply(m, fexp, src, dst);
return;}
134 #endif // clusterCebysevK_hh
Class to hold expansion coefficients of type F.
void ceby2poly(uint m, const concepts::Real3d &z, Fkrnl F[]) const
Conversion from Cebysev to monomial basis of interpolation polynom.
#define conceptsException(exc)
Prepares an exception for throwing.
uint blksz(uint m) const
Size of memory used for the expansion.
int index_(int ix, int iy, int iz) const
CebysevKFTraits< K > Traits
concepts::Real ** cebysev_
Values of the Cebysev polynomials.
Fkrnl * d_
Auxiliary vectors.
part of the Cebysev expansion for arbitrary kernels.
virtual FColF< Fkrnl > * getCol(uint blksz) const
Allocates memory for the expansion coefficients.
Fkrnl * kernel_
values of the kernel function
void apply(uint m, const FColF< Fkrnl > Fexp[], const Fspc src[], Fspc dst[]) const
concepts::Real * x_
Interpolation points.
CebysevKF(K &krnl, uint m, concepts::Real eta)
Constructor.
void evaluate(uint m, const concepts::Real3d &z, FColExp *Fexp) const
Used for the cluster classes for the boundary element method.
Abstract class for the part of a kernel expansion.
Exception class to express a missing feature.
void apply(uint m, const FColExp *Fexp, const Fspc src[], Fspc dst[]) const
K & krnl_
Kernel function.
Interface for the kernel function used by CebysevKF.
void fit(uint m, const concepts::Real3d &z, Fkrnl F[]) const
Interpolation.
void apply(Operator< F > &op, const Matrix< H > &mX, Matrix< I > &mY)
Multiplication with a matrix.
concepts::Real eta_
Interpolation coefficient.
static Fkrnl eval(K &k, const concepts::Real3d &x, const concepts::Real3d &y)
double Real
Type normally used for a floating point number.
Abstract class to hold the expansion coefficients.