Class xlifepp::Operand#

class Operand#

Collaboration diagram for xlifepp::Operand:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "36" [label="xlifepp::Collection< string_t >" tooltip="xlifepp::Collection< string_t >"] "30" [label="xlifepp::Matrix< real_t >" tooltip="xlifepp::Matrix< real_t >"] "33" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "43" [label="xlifepp::Vector< xlifepp::Vector< real_t > >" tooltip="xlifepp::Vector< xlifepp::Vector< real_t > >"] "45" [label="std::list< std::pair< number_t, real_t > >" tooltip="std::list< std::pair< number_t, real_t > >"] "26" [label="std::map< number_t, std::vector< number_t > >" tooltip="std::map< number_t, std::vector< number_t > >"] "25" [label="std::map< number_t, xlifepp::Geometry * >" tooltip="std::map< number_t, xlifepp::Geometry * >"] "10" [label="std::map< string_t, number_t >" tooltip="std::map< string_t, number_t >"] "13" [label="std::map< string_t, std::pair< ValueType, StrucType > >" tooltip="std::map< string_t, std::pair< ValueType, StrucType > >"] "3" [label="std::map< string_t, structPair >" tooltip="std::map< string_t, structPair >"] "52" [label="std::map< xlifepp::GeomElement *, std::set< number_t > >" tooltip="std::map< xlifepp::GeomElement *, std::set< number_t > >"] "46" [label="std::list< T >" tooltip="std::list< T >"] "4" [label="std::map< K, T >" tooltip="std::map< K, T >"] "9" [label="std::vector< T >" tooltip="std::vector< T >"] "39" [label="std::vector< T >" tooltip="std::vector< T >"] "32" [label="std::vector< K >" tooltip="std::vector< K >"] "22" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"] "51" [label="std::vector< const xlifepp::GeomDomain * >" tooltip="std::vector< const xlifepp::GeomDomain * >"] "35" [label="std::vector< const xlifepp::Transformation * >" tooltip="std::vector< const xlifepp::Transformation * >"] "40" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "12" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "50" [label="std::vector< std::vector< GeoNumPair > >" tooltip="std::vector< std::vector< GeoNumPair > >"] "27" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"] "37" [label="std::vector< string_t >" tooltip="std::vector< string_t >"] "15" [label="std::vector< xlifepp::DifferentialOperator * >" tooltip="std::vector< xlifepp::DifferentialOperator * >"] "49" [label="std::vector< xlifepp::GeomDomain * >" tooltip="std::vector< xlifepp::GeomDomain * >"] "48" [label="std::vector< xlifepp::GeomElement * >" tooltip="std::vector< xlifepp::GeomElement * >"] "8" [label="std::vector< xlifepp::Parameter * >" tooltip="std::vector< xlifepp::Parameter * >"] "24" [label="std::vector< xlifepp::Point >" tooltip="std::vector< xlifepp::Point >"] "41" [label="std::vector< xlifepp::Transformation * >" tooltip="std::vector< xlifepp::Transformation * >"] "44" [label="std::vector< xlifepp::Vector< real_t > >" tooltip="std::vector< xlifepp::Vector< real_t > >"] "21" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"] "38" [label="xlifepp::Collection< T >" tooltip="xlifepp::Collection< T >"] "14" [label="xlifepp::DifferentialOperator" tooltip="xlifepp::DifferentialOperator"] "18" [label="xlifepp::DomainInfo" tooltip="xlifepp::DomainInfo"] "16" [label="xlifepp::Extension" tooltip="xlifepp::Extension"] "28" [label="xlifepp::ExtrusionData" tooltip="xlifepp::ExtrusionData"] "6" [label="xlifepp::Function" tooltip="xlifepp::Function"] "47" [label="xlifepp::GeoNode" tooltip="xlifepp::GeoNode"] "17" [label="xlifepp::GeomDomain" tooltip="xlifepp::GeomDomain"] "20" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"] "54" [label="xlifepp::Kernel" tooltip="xlifepp::Kernel"] "55" [label="xlifepp::KernelExpansion" tooltip="xlifepp::KernelExpansion"] "31" [label="xlifepp::Matrix< K >" tooltip="xlifepp::Matrix< K >"] "19" [label="xlifepp::Mesh" tooltip="xlifepp::Mesh"] "23" [label="xlifepp::MinimalBox" tooltip="xlifepp::MinimalBox"] "1" [label="xlifepp::Operand" tooltip="xlifepp::Operand" fillcolor="#BFBFBF"] "5" [label="xlifepp::OperatorOnFunction" tooltip="xlifepp::OperatorOnFunction"] "53" [label="xlifepp::OperatorOnKernel" tooltip="xlifepp::OperatorOnKernel"] "7" [label="xlifepp::Parameters" tooltip="xlifepp::Parameters"] "42" [label="xlifepp::Parametrization" tooltip="xlifepp::Parametrization"] "11" [label="xlifepp::Point" tooltip="xlifepp::Point"] "29" [label="xlifepp::Transformation" tooltip="xlifepp::Transformation"] "2" [label="xlifepp::Value" tooltip="xlifepp::Value"] "34" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "36" -> "37" [dir=forward tooltip="public-inheritance"] "36" -> "38" [dir=forward tooltip="template-instance"] "30" -> "12" [dir=forward tooltip="public-inheritance"] "30" -> "31" [dir=forward tooltip="template-instance"] "33" -> "12" [dir=forward tooltip="public-inheritance"] "33" -> "34" [dir=forward tooltip="template-instance"] "43" -> "44" [dir=forward tooltip="public-inheritance"] "43" -> "34" [dir=forward tooltip="template-instance"] "45" -> "46" [dir=forward tooltip="template-instance"] "26" -> "4" [dir=forward tooltip="template-instance"] "25" -> "4" [dir=forward tooltip="template-instance"] "10" -> "4" [dir=forward tooltip="template-instance"] "13" -> "4" [dir=forward tooltip="template-instance"] "3" -> "4" [dir=forward tooltip="template-instance"] "52" -> "4" [dir=forward tooltip="template-instance"] "32" -> "9" [dir=forward tooltip="template-instance"] "22" -> "9" [dir=forward tooltip="template-instance"] "51" -> "9" [dir=forward tooltip="template-instance"] "35" -> "9" [dir=forward tooltip="template-instance"] "40" -> "9" [dir=forward tooltip="template-instance"] "12" -> "9" [dir=forward tooltip="template-instance"] "50" -> "9" [dir=forward tooltip="template-instance"] "27" -> "9" [dir=forward tooltip="template-instance"] "37" -> "9" [dir=forward tooltip="template-instance"] "15" -> "9" [dir=forward tooltip="template-instance"] "49" -> "9" [dir=forward tooltip="template-instance"] "48" -> "9" [dir=forward tooltip="template-instance"] "8" -> "9" [dir=forward tooltip="template-instance"] "24" -> "9" [dir=forward tooltip="template-instance"] "41" -> "9" [dir=forward tooltip="template-instance"] "44" -> "9" [dir=forward tooltip="template-instance"] "21" -> "22" [dir=forward tooltip="usage"] "38" -> "39" [dir=forward tooltip="public-inheritance"] "14" -> "15" [dir=forward tooltip="usage"] "18" -> "19" [dir=forward tooltip="usage"] "16" -> "17" [dir=forward tooltip="usage"] "16" -> "52" [dir=forward tooltip="usage"] "28" -> "29" [dir=forward tooltip="usage"] "28" -> "36" [dir=forward tooltip="usage"] "28" -> "40" [dir=forward tooltip="usage"] "28" -> "12" [dir=forward tooltip="usage"] "28" -> "33" [dir=forward tooltip="usage"] "28" -> "41" [dir=forward tooltip="usage"] "28" -> "11" [dir=forward tooltip="usage"] "6" -> "7" [dir=forward tooltip="usage"] "6" -> "6" [dir=forward tooltip="usage"] "6" -> "11" [dir=forward tooltip="usage"] "6" -> "13" [dir=forward tooltip="usage"] "47" -> "47" [dir=forward tooltip="usage"] "47" -> "20" [dir=forward tooltip="usage"] "17" -> "18" [dir=forward tooltip="usage"] "17" -> "17" [dir=forward tooltip="usage"] "17" -> "20" [dir=forward tooltip="usage"] "17" -> "51" [dir=forward tooltip="usage"] "20" -> "21" [dir=forward tooltip="usage"] "20" -> "23" [dir=forward tooltip="usage"] "20" -> "25" [dir=forward tooltip="usage"] "20" -> "26" [dir=forward tooltip="usage"] "20" -> "27" [dir=forward tooltip="usage"] "20" -> "28" [dir=forward tooltip="usage"] "20" -> "42" [dir=forward tooltip="usage"] "20" -> "20" [dir=forward tooltip="usage"] "20" -> "47" [dir=forward tooltip="usage"] "54" -> "6" [dir=forward tooltip="usage"] "54" -> "54" [dir=forward tooltip="usage"] "54" -> "55" [dir=forward tooltip="usage"] "54" -> "7" [dir=forward tooltip="usage"] "54" -> "11" [dir=forward tooltip="usage"] "55" -> "6" [dir=forward tooltip="usage"] "31" -> "32" [dir=forward tooltip="public-inheritance"] "19" -> "20" [dir=forward tooltip="usage"] "19" -> "24" [dir=forward tooltip="usage"] "19" -> "48" [dir=forward tooltip="usage"] "19" -> "49" [dir=forward tooltip="usage"] "19" -> "40" [dir=forward tooltip="usage"] "19" -> "50" [dir=forward tooltip="usage"] "19" -> "19" [dir=forward tooltip="usage"] "23" -> "24" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "1" -> "5" [dir=forward tooltip="usage"] "1" -> "53" [dir=forward tooltip="usage"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "14" [dir=forward tooltip="usage"] "5" -> "16" [dir=forward tooltip="usage"] "53" -> "54" [dir=forward tooltip="usage"] "53" -> "14" [dir=forward tooltip="usage"] "53" -> "16" [dir=forward tooltip="usage"] "7" -> "8" [dir=forward tooltip="usage"] "7" -> "10" [dir=forward tooltip="usage"] "42" -> "20" [dir=forward tooltip="usage"] "42" -> "33" [dir=forward tooltip="usage"] "42" -> "43" [dir=forward tooltip="usage"] "42" -> "19" [dir=forward tooltip="usage"] "42" -> "7" [dir=forward tooltip="usage"] "42" -> "45" [dir=forward tooltip="usage"] "11" -> "12" [dir=forward tooltip="public-inheritance"] "29" -> "30" [dir=forward tooltip="usage"] "29" -> "33" [dir=forward tooltip="usage"] "29" -> "35" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "34" -> "32" [dir=forward tooltip="public-inheritance"] }

to deal with syntax Value AlgebraicOperation

Public Functions

Operand(const Function&, AlgebraicOperator)#

construct Operand from a Function (id on Function)

Operand(const Kernel&, AlgebraicOperator)#

construct Operand from a Kernel (id on Function)

Operand(const Operand&)#

copy construct

Operand(const OperatorOnFunction&, AlgebraicOperator)#

construct Operand from a OperatorOnFunction

Operand(const OperatorOnKernel&, AlgebraicOperator)#

construct Operand from a OperatorOnKernel

template<typename T>
Operand(const T&, AlgebraicOperator)#

construct Operand from a scalar, a Vector or a Matrix

Operand(const Value&, AlgebraicOperator)#

construct Operand from a Value (Value is copied)

Operand(const Value*, AlgebraicOperator)#

construct Operand from a Value* (Value is not copied)

Operand(OperatorOnKernel&, AlgebraicOperator)#

construct Operand from a OperatorOnKernel

inline ~Operand()#

destructor

string_t asString() const#

return as symbolic string

inline void changeKernel(Kernel *ker)#

change Kernel in operator

void clear()#

delete allocated pointers and reset pointers to 0

void copy(const Operand&)#

copy tool

inline dimPair dims() const#

returns dimensions

bool elementRequired() const#

true if element is required by any function in

inline const Extension *extension() const#

return extension

const Function &function() const#

return operand object as function

inline const Function *functionp() const#

return pointer to function (0 if not)

inline bool hasExtension() const#

true if opfun or opker handle an extension

inline bool isFunction() const#

true if operand with function

inline bool isKernel() const#

true if operand with kernel

inline bool isValue() const#

true if operand with value

const Kernel &kernel() const#

return operand object as kernel

inline const Kernel *kernelp() const#

return pointer to kernel (0 if not)

template<typename T, typename R>
inline Vector<T> leftEval(const Point&, const Point&, const Vector<R>&, dimen_t&, dimen_t&, number_t, const Vector<real_t>* = nullptr, const Vector<real_t>* = nullptr) const#

evaluate kernel operand at left

f(p) op V

template<typename T, typename R>
inline Vector<T> leftEval(const Point&, const Vector<R>&, dimen_t&, dimen_t&, number_t, const Vector<real_t>* = nullptr, const ExtensionData* = nullptr) const#

evaluate function operand at left

f(p) op V

template<typename T, typename R>
inline Vector<T> leftEval(const Vector<R>&, dimen_t&, dimen_t&, number_t) const#

evaluate value operand at left

evaluate operand with value or function at left or right applied to a collection of scalar/vector/matrix values of m basis functions (v_1)_1,…,(v_1)_d,(v_2)_1,…,(v_2)_d, …, (v_m)_1,…,(v_m)_d return in same structure w= op aop v (w_1)_1,…,(w_1)_q,(w_2)_1,…,(w_2)_q, …, (w_m)_1,…,(w_m)_q

v: basis function values m: number of blocks (each block corresponds to a basis function) d: size of block (may be updated) n: dimension of matrix, when blocks are matrices (p=d/n): [v_1,…,v_d] = [v_11,…,v_1n, v_21,…,v_2n, …, v_p1,…,v_pn]

Note: no consistency test are done here !!! Note: d and n may be updated by operations value op V

bool normalRequired() const#

true if normal involved

inline AlgebraicOperator operation() const#

returns algebraic operation

Operand &operator=(const Operand&)#

assign operator

const OperatorOnFunction &opfunction() const#

return operand object as operator on function

inline const OperatorOnFunction *opfunctionp() const#

return operand object as pointer to operator on function

const OperatorOnKernel &opkernel() const#

return operand object as operator on kernel

inline const OperatorOnKernel *opkernelp() const#

return operand object as pointer to operator on kernel

inline void print(PrintStream &os) const#

print Operand attributes

void print(std::ostream&) const#

print Operand attributes

inline void printsymbolic(PrintStream &os) const#

print Operand in symbolic form

void printsymbolic(std::ostream&) const#

print Operand in symbolic form

template<typename T, typename R>
inline Vector<T> rightEval(const Point&, const Point&, const Vector<R>&, dimen_t&, dimen_t&, number_t, const Vector<real_t>* = nullptr, const Vector<real_t>* = nullptr) const#

evaluate kernel operand at right

V op f(p)

template<typename T, typename R>
inline Vector<T> rightEval(const Point&, const Vector<R>&, dimen_t&, dimen_t&, number_t, const Vector<real_t>* = nullptr, const ExtensionData* = nullptr) const#

evaluate function operand at right

V op f(p)

template<typename T, typename R>
inline Vector<T> rightEval(const Vector<R>&, dimen_t&, dimen_t&, number_t) const#

evaluate value operand at right

V op value.

inline void setX(const Point &P) const#

set X point if Function involved (usefull for Kernel)

inline void setY(const Point &P) const#

set Y point if Function involved (usefull for Kernel)

StrucType strucType() const#

return structure type of value or function

bool tangentRequired() const#

true if tangent involved

Value &value()#

return the operand value as object

const Value &value() const#

return the operand value as object

template<class T>
inline T &value(T&) const#

return const value

template<class T>
inline T &value(T&, const Point&, const Point&, const Vector<real_t> *nxp = nullptr, const Vector<real_t> *nyp = nullptr) const#

compute value kernel

template<class T>
inline T &value(T&, const Point&, const Vector<real_t> *np = nullptr, const ExtensionData* = nullptr) const#

compute value function

template<class T>
inline T &valueT() const#

return operand object as value of T type

ValueType valueType() const#

return value type of value or function

bool xnormalRequired() const#

true if xnormal involved

bool xtangentRequired() const#

true if xtangent involved

bool ynormalRequired() const#

true if ynormal involved

bool ytangentRequired() const#

true if ytangent involved

Public Members

mutable bool conjugate_#

true if the operand has to be conjugated

mutable bool transpose_#

true if the operand has to be transposed