Class xlifepp::IntgBilinearForm#

class IntgBilinearForm : public xlifepp::BasicBilinearForm#

describes a bilinear form based on a single integral

 intg_domain opu aopu opv
with opu, opv: operator on u and v aopu, aopv: algebraic operation (*,|,%,^)

Public Functions

IntgBilinearForm(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st, StorageBuildType sbt = _undefBuild)#

constructor from explicit operators

IntgBilinearForm(const GeomDomain &dom, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, QuadRule qr, number_t qo, SymType st, StorageBuildType sbt = _undefBuild)#

constructor from explicit operators

IntgBilinearForm(const GeomDomain &dom, const OperatorOnUnknowns &opus, const IntegrationMethod &im, SymType st, StorageBuildType sbt = _undefBuild)#

constructor from OperatorOnUnknowns

IntgBilinearForm(const GeomDomain &dom, const OperatorOnUnknowns &opus, QuadRule qr, number_t qo, SymType st, StorageBuildType sbt = _undefBuild)#

constructor from OperatorOnUnknowns

IntgBilinearForm(const IntgBilinearForm &ibf)#

copy constructor

~IntgBilinearForm()#

destructor

inline AlgebraicOperator algop() const#

return the algebraic operator

virtual string_t asString() const#

interpret as string for print purpose

virtual BasicBilinearForm *clone() const#

clone of the linear form

inline const GeomDomain *domain() const#

return the pointer to the domain

virtual bool hasJump() const#

true if bilinear form has jump, mean operator

inline const IntegrationMethod *intgMethod() const#

pointer to integration method object

IntgBilinearForm &operator=(const IntgBilinearForm &ibf)#

assign operator

inline const OperatorOnUnknown &opu() const#

return the reference to the operator on unknown

inline const OperatorOnUnknown *opu_p() const#

return the pointer to the operator on unknown

inline const OperatorOnUnknown &opv() const#

return the reference to the operator on unknown

inline const OperatorOnUnknown *opv_p() const#

return the pointer to the operator on unknown

inline virtual void print(PrintStream &ps) const#

print utility

virtual void print(std::ostream &os) const#

true if bilinear form has jump, mean operator

print utility

void setComputationType()#

set computation type (_FEComputation,_SPComputation, _FESPComputation)

void setDiagonalStorage()#

set diagonal storage if required by data

set diagonal storage if required, rules are the following for Lagrange Gauss Lobatto FE if sbType = _diagBuild , use same quadrature as FE if quadrature is the same as FE set sbType=_diagBuild possible only if FE interpolation on u, v are the same

void setIntegrationMethod(const GeomDomain &dom, const OperatorOnUnknowns &opus, QuadRule qr, number_t qo)#

set integration method

virtual SymType setSymType() const#

set symmetry property

virtual void setUnknowns(const Unknown &u, const Unknown &v)#

set (change) the unknowns

virtual std::vector<bfPair> split() const#

split IntgBilinearForm involving particular operators (jump, mean)

split IntgBilinearForm involving particular operators (jump : u1-u2, mean : (u1+u2)/2 for instance, if G is one side of a crack with Gd the opposite side of gamma intg(G,[u]*v)= intg(G,(u|G-u|Gd)*v) is split as intg(G,u*v)-intg(G,u|Gd*v) (v continuous) intg(G,u*[v])= intg(G,u*(v|G-v|Gd)) is split as intg(G,u*v)-intg(G,u*v|Gd) (u continuous) intg(G,{u}*v)= intg(G,(u|G+u|Gd)*v) is split as intg(G,u*v)+intg(G,u|Gd*v) (v continuous) intg(G,u*{v})= intg(G,u*(v|G+v|Gd)) is split as intg(G,u*v)+intg(G,u*v|Gd) (u continuous) intg(G,[u]*[v])= intg(G,(u|G-u|Gd)*(v|G-v|Gd)) is split as intg(G,u*v)+intg(Gd,u*v)-intg(G,u*v|Gd)-intg(G,u|Gd*v) intg(G,{u}*{v})= intg(G,(u|G+u|Gd)*(v|G+v|Gd)) is split as intg(G,u*v)+intg(Gd,u*v)+intg(G,u*v|Gd)+intg(G,u|Gd*v) intg(G,{u}*[v])= intg(G,(u|G+u|Gd)*(v|G-v|Gd)) is split as intg(G,u*v)-intg(Gd,u*v)-intg(G,u*v|Gd)+intg(G,u|Gd*v) intg(G,[u]*{v})= intg(G,(u|G-u|Gd)*(v|G+v|Gd)) is split as intg(G,u*v)-intg(Gd,u*v)+intg(G,u*v|Gd)-intg(G,u|Gd*v)

gives the following table intg(G,u*v) intg(Gd,u*v) intg(G,u*v|Gd) intg(G,u|Gd*v) [u]*v 1 0 0 -1 u*[v] 1 0 -1 0 {u}*v 1 0 0 1 u*{v} 1 0 1 0 [u]*[v] 1 1 -1 -1 {u}*{v} 1 1 1 1 {u}*[v] 1 -1 -1 1 [u]*{v} 1 -1 1 -1 a b c all coefficient are multiplied by the factor f = 1 if no mean operator, f = 0.5 if one mean operator, f = 0.25 if two mean operators

inline virtual LinearFormType type() const#

return the type of the linear form

inline virtual ValueType valueType() const#

return the value type of the linear form