Class xlifepp::OperatorOnUnknown#
-
class OperatorOnUnknown#
-
Collaboration diagram for xlifepp::OperatorOnUnknown:
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
-
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
-
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 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 bool extensionRequired() const#
-
true if operator involve non-tangential derivatives or space has no FE trace space
-
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
-
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
-
void print(std::ostream&) const#
-
print attributes on stream
-
void printsymbolic(std::ostream&) const#
-
print attributes in symbolic form on stream
-
void setStructure()#
-
set returned type, structure, dims of returned value
-
bool tangentRequired() const#
-
true if tangent involved
true if tangent is required in computation
-
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)
-
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
-
OperatorOnUnknown(const OperatorOnUnknown&)#