Class xlifepp::OperatorOnUnknown#

class OperatorOnUnknown#

Collaboration diagram for xlifepp::OperatorOnUnknown:

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

describes the operations to process on unknown.

Unknown may be scalar or vector

Public Functions

OperatorOnUnknown(const OperatorOnUnknown&)#

copy constructor

OperatorOnUnknown(const Unknown&, const Function&, AlgebraicOperator, bool)#

useful constructor: (fun op u) or (u op fun)

OperatorOnUnknown(const Unknown&, const OperatorOnFunction&, AlgebraicOperator, bool)#

useful constructor: (opfun op u) or (u op opfun)

OperatorOnUnknown(const Unknown&, const Value&, AlgebraicOperator, bool)#

useful constructor: (val op u) or (u op val)

OperatorOnUnknown(const Unknown&, DiffOpType, const std::vector<complex_t>&)#

constructor with generalized differential operator

OperatorOnUnknown(const Unknown&, DiffOpType = _id)#

constructor with differential operator

OperatorOnUnknown(const Unknown *un = nullptr, DiffOpType = _id)#

default constructor

~OperatorOnUnknown()#

destructor

string_t asString() const#

return as symbolic string

void changeKernel(Kernel*)#

change Kernel in operator

change Kernel in operator (unique Kernel, left priority)

inline std::vector<complex_t> &coefs()#

return coefs vector (write)

inline const std::vector<complex_t> &coefs() const#

return coefs vector (read)

inline bool conjugateUnknown() const#

returns true if the unknown has to be conjugated

number_t degree() const#

degree of (derivative) unknown (basis function)

order of polynom used by unknown (degree od basis), decreased by order of derivation as we use numtype (order of interpolation) we distinguish Pk or Qk using a ShapeType argument

dimen_t diffOrder() const#

order of differential operator

order of differential operator involved

inline DifferentialOperator &difOp() const#

return reference to differential operator

inline DifferentialOperator *&difOp_()#

return pointer to differential operator

inline DiffOpType difOpType() const#

return type of differential operator

inline dimPair dimsRes() const#

return the dimension of returned values

inline GeomDomain *&domain()#

return the restriction domain pointer (write)

inline GeomDomain *domain() const#

return the restriction domain pointer (read)

bool elementRequired() const#

true if normal is required by operator

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

evaluate operator from point and shape values (kernel to evaluate)

template<typename T, typename K>
void eval(const Point &p, const std::vector<K>&, const std::vector<std::vector<K>>&, const std::vector<std::vector<K>>&, dimen_t, Vector<T>&, dimen_t&, dimen_t&, const Vector<real_t>* = nullptr, const ExtensionData* = nullptr) const#

evaluate operator from point and shape values (function to evaluate)

template<typename T, typename K>
void eval(const std::vector<K>&, const std::vector<std::vector<K>>&, const std::vector<std::vector<K>>&, dimen_t, Vector<T>&, dimen_t&, dimen_t&, const Vector<real_t>* = 0) const#

evaluate operator from shape values (no function to evaluate)

evaluate operator from shape values and its derivatives sv: shape values dsv: shape derivatives dimFun: dimension of shape function val: operator values as a vector stored as following: O1 O2 ….

Os s number of shape functions Ok may be

  • a scalar

  • a vector O_k=[Ok1, Ok2, …, Okn]

  • a matrix O_k=[Ok11, Ok12, …, Ok1n, Ok21, Ok22, …, Ok2n, … Okm1, Okm2, …, Okmn] d: block size m: number of matrix rows when returning some matrices np: pointer to the normal vector, 0 if no available normal vector

T type of result val has to be consistent (no check) K type of shape functions

There are 3 versions of eval corresponding to the cases:

  • no function to evaluate

  • function to evaluate at a point

  • kernel to evaluate at a pair of points

inline const Extension *extension() const#

return extension pointer, 0 if there is no extension

inline bool extensionRequired() const#

true if operator involve non-tangential derivatives or space has no FE trace space

const Function *functionp() const#

direct access to Function if unique

direct acces to Kernel (unique Function, left priority)

inline bool hasExtension() const#

true if handles an extension

bool hasFun() const#

true if operator involves a user Function

true if operator involves some functions

bool hasFunction() const#

true if operator involves a user function or kernel

true if operator involves some functions or kernels

bool hasKernel() const#

true if operator involves a user Kernel

true if operator involves some functions or kernels

bool hasOperand() const#

true if operator involves left or right operand

inline bool isDG() const#

true if operator involves jump or mean

inline bool isId() const#

true if id

const Kernel *kernelp() const#

direct access to Kernel

direct acces to Kernel (unique Kernel, left priority)

inline Operand *&leftOperand()#

return pointer to left operand

inline const Operand *leftOperand() const#

return pointer to left operand

inline bool &leftPriority()#

return the priority flag

inline bool leftPriority() const#

return the priority flag

bool normalRequired() const#

true if normal involved

true if normal is required in computation

EssentialCondition operator=(const complex_t&)#

construct equation Op(u)=c

EssentialCondition operator=(const Function&)#

construct equation Op(u)=f

OperatorOnUnknown &operator=(const OperatorOnUnknown&)#

assignment operator

EssentialCondition operator=(const real_t&)#

construct equation Op(u)=r

EssentialCondition operator=(const TermVector&)#

construct equation Op(u)=TermVector (implemented in TermVector.cpp)

const OperatorOnKernel *opkernelp() const#

direct access to operator on Kernel

direct acces to Kernel (unique Kernel, left priority)

void print(std::ostream&) const#

print attributes on stream

void printsymbolic(std::ostream&) const#

print attributes in symbolic form on stream

inline Operand *&rightOperand()#

return pointer to right operand

inline const Operand *rightOperand() const#

return pointer to left operand

void setStructure()#

set returned type, structure, dims of returned value

inline void setUnknown(const Unknown &u)#

set (change) the unknowns

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)

inline StrucType strucType() const#

return the operator returned structure

bool tangentRequired() const#

true if tangent involved

true if tangent is required in computation

inline const Unknown *unknown() const#

return the unknown pointer

number_t unknownDegree() const#

degree of unknown (basis function)

order of polynom used by unknown (degree of basis)

void updateReturnedType(AlgebraicOperator, ValueType, StrucType, dimPair, bool)#

update value and struct returned

update value, structure and dimensions of result of (operator)(op)(valueType,strucType)

inline ValueType &valueType()#

return the operator returned type (non const)

inline ValueType valueType() const#

return the operator returned type

bool xnormalRequired() const#

true if xnormal involved

true if normal is required in computation

bool xnormalRequiredByOpKernel() const#

true if xnormal is required by operator on Kernel

true if normal is required in computation by operator on Kernel

bool xtangentRequired() const#

true if xtangent involved

true if tangent is required in computation

bool xtangentRequiredByOpKernel() const#

true if xtangent is required by operator on Kernel

true if tangent is required in computation by operator on Kernel

bool ynormalRequired() const#

true if ynormal involved

true if normal is required in computation

bool ynormalRequiredByOpKernel() const#

true if xnormal is required by operator on Kernel

true if normal is required in computation by operator on Kernel

bool ytangentRequired() const#

true if ytangent involved

true if tangent is required in computation

bool ytangentRequiredByOpKernel() const#

true if xtangent is required by operator on Kernel

true if tangent is required in computation by operator on Kernel

true if GeomElemnt is required by operator