Class xlifepp::OperatorOnKernel#

class OperatorOnKernel#

describes the operations to process on kernel.

ker_p=nullptr means K(x,y)=1 !

Public Functions

inline OperatorOnKernel()#

default constructor

OperatorOnKernel(const Kernel&, DiffOpType = _id, DiffOpType = _id)#

basic constructor

OperatorOnKernel(const Kernel*, DiffOpType, DiffOpType, DiffOpType, ValueType vt = _real, StrucType st = _scalar, dimPair = dimPair(1, 1))#

basic constructor

OperatorOnKernel(const Kernel*, DiffOpType = _id, DiffOpType = _id, ValueType vt = _real, StrucType st = _scalar, dimPair = dimPair(1, 1))#

basic constructor

OperatorOnKernel(const OperatorOnKernel&)#

copy constructor

~OperatorOnKernel()#

destructor

string_t asString() const#

return as symbolic string

inline void changeKernel(Kernel *ker)#

change Kernel in operator

inline dimPair dims() const#

return the dimension of returned values

inline bool elementRequired() const#

true if geom element is required by kernel

template<typename T>
Matrix<T> &eval(const Point&, const Point&, Matrix<T>&, const Vector<real_t>* = 0, const Vector<real_t>* = 0) const#

evaluate matrix kernel operator at (x,y)

template<typename T>
T &eval(const Point&, const Point&, T&, const Vector<real_t>* = 0, const Vector<real_t>* = 0) const#

evaluate scalar kernel operator at (x,y)

evaluate operator on kernel operator at (x,y), k kernel value, nxp, nyp pointer to normal vectors nx and ny (null if not available)

template<typename T>
Vector<T> &eval(const Point&, const Point&, Vector<T>&, const Vector<real_t>* = 0, const Vector<real_t>* = 0, dimPair* = nullptr, const ExtensionData *extdata = nullptr) const#

evaluate vector kernel operator at (x,y)

general function evaluating operator on kernel, output may be either a scalar, a vector or a matrix but it is always returned as a vector scalar output: set opk[0] = out vector output: set opk[i] = out[i] 0<i<n matrix output: set opk[i*n+j]=out[i,j], 0<i<m; 0<j<n

x, y: points where current operator on kernel is evaluated opk: return value of opk as a vector (may be resized here) dims: dimension of the output (m=n=1 if scalar, n=1 if a vector), computed if pointer is not 0 nxp, nyp: pointers to normal vectors (0 if not allocated) extdata: data related to extension if required, used if not 0

template<typename T>
T &eval(const Point&, T&, const Vector<real_t>* = 0, const Vector<real_t>* = 0) const#

evaluate kernel operator at (x,P) or (P,x)

evaluate operator on kernel operator at (x,P) or (P,x) regarding xpar, xory=P k kernel value, nxp, nyp pointer to normal vectors nx and ny (null if not available)

template<typename T>
std::vector<Matrix<T>> &eval(const std::vector<Point>&, const std::vector<Point>&, std::vector<Matrix<T>>&, number_t = 0, const std::vector<Vector<real_t>>* = nullptr, const std::vector<Vector<real_t>>* = nullptr) const#

evaluate vector kernel operator at (xi,yj)

template<typename T>
std::vector<T> &eval(const std::vector<Point>&, const std::vector<Point>&, std::vector<T>&, number_t = 0, const std::vector<Vector<real_t>>* = nullptr, const std::vector<Vector<real_t>>* = nullptr) const#

evaluate kernel operator at (xi,yj)

evaluate kernel operator at (xi,yj): op [k(x1,y1), k(x1,y2),…, k(x1,yn), k(x2,y1), k(x2,y2), …, k(xm,yn)] xs, ys : points collection nxs, nys: pointer to normal vectors nx and ny (null if not available) shift : shift index of result (by default 0)

NOTE: be careful, address of ks begins at 1 and not at 0 !!!!

template<typename T>
std::vector<Vector<T>> &eval(const std::vector<Point>&, const std::vector<Point>&, std::vector<Vector<T>>&, number_t = 0, const std::vector<Vector<real_t>>* = nullptr, const std::vector<Vector<real_t>>* = nullptr) const#

evaluate vector kernel operator at (xi,yj)

inline number_t extensionOrder() const#

derivative order in extension

inline const string_t &kernelName() const#

returns kernel shortname

inline const Kernel *kernelp() const#

return the Kernel pointer

inline bool normalRequired() const#

true if x or y normals involved

const OperatorOnFunction &operator()(const Point&, VariableName) const#

interpret operator on kernel as operator on y function

const OperatorOnFunction &operator()(VariableName) const#

interpret operator on kernel as operator on variableName function

const OperatorOnFunction &operator()(VariableName, const Point&) const#

interpret operator on kernel as operator on x function

OperatorOnKernel &operator=(const OperatorOnKernel&)#

assignment operator

void print(std::ostream&) const#

print on stream attributes

inline void setX(const Point &P) const#

set X point (usefull for Kernel)

inline void setY(const Point &P) const#

set Y point (usefull for Kernel)

inline real_t singularOrder() const#

returns singularity order (0 if not singular)

inline SingularityType singularType() const#

returns type of singularity (_notsingular, _r, _logr,_loglogr)

inline StrucType &strucType()#

return the operator returned structure

inline StrucType strucType() const#

return the operator returned structure

inline bool tangentRequired() const#

true if x or y tangents involved

inline ValueType &valueType()#

return the operator returned type

inline ValueType valueType() const#

return the operator returned type

inline bool voidKernel() const#

returns true if kernel pointer is null

inline number_t xdiffOrder() const#

order of differential operator

inline DifferentialOperator &xdifOp() const#

return reference to differential operator

inline DifferentialOperator *&xdifOp_()#

return pointer to differential operator

inline DiffOpType xdifOpType() const#

return type of x differential operator

inline bool xnormalRequired() const#

true if x-normal involved

inline bool xtangentRequired() const#

true if x-tangent involved

inline DifferentialOperator &xydifOp() const#

return reference to differential operator

inline DifferentialOperator *&xydifOp_()#

return pointer to differential operator

inline DiffOpType xydifOpType() const#

return type of y differential operator

inline number_t ydiffOrder() const#

order of differential operator

inline DifferentialOperator &ydifOp() const#

return reference to differential operator

inline DifferentialOperator *&ydifOp_()#

return pointer to differential operator

inline DiffOpType ydifOpType() const#

return type of y differential operator

inline bool ynormalRequired() const#

true if y-normal involved

inline bool ytangentRequired() const#

true if y-tangent involved

Public Members

mutable bool conjugate_#

temporary flag for conjugate operation construction

dimPair dimsRes_#

dimension of result, (0,0) if unset (NOT FULL MANAGED)

Extension *ext_p#

extension operator to apply to

bool in_ext#

if true interpreted as ext(difop(f)) else interpreted as difop(ext(f)); default is true

mutable bool noUpdatedNormal#

true means that the normal is not available in Kernel parameters

StrucType struct_#

structure of returned value (one among _scalar, _vector, _matrix)

mutable bool transpose_#

temporary flag for transpose operation construction

ValueType type_#

type of returned value (one among _real, _complex)

Friends

friend bool operator!=(const OperatorOnKernel&, const OperatorOnKernel&)#

different operator on kernel

friend bool operator==(const OperatorOnKernel&, const OperatorOnKernel&)#

same operator on kernel