Class xlifepp::DoubleIntgBilinearForm#
-
class DoubleIntgBilinearForm : public xlifepp::BasicBilinearForm#
-
describes a bilinear form based on a double integral
intg_domain_v intg_domain_u opu(y) aopu opker(x,y) aopv opv(x) dy dx
with opu, opv: operator on u and v aopu, aopv: algebraic operation (*,|,%,^) opker: operator on a kernel function
note: when kernel = 1 the pointer to kernel function in opker is ker_p=0 ! Be cautious with order of domain, first if for v-domain, second for u-domain
Actually, two ways to handle some integration methods: by pointer to an IntegrationMethod object, so only one integration method (old way, should disappear in futur) by an IntegrationMethods object that handles some IntegrationMethod (new way)
Public Functions
-
DoubleIntgBilinearForm(const DoubleIntgBilinearForm &dibf)#
-
copy constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const KernelOperatorOnUnknowns &kopus, const IntegrationMethod &im, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const KernelOperatorOnUnknowns &kopus, const IntegrationMethods &ims, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const KernelOperatorOnUnknowns &kopus, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethod &im, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const LcKernelOperatorOnUnknowns &lckopus, const IntegrationMethods &ims, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const LcKernelOperatorOnUnknowns &lckopus, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2, SymType st)#
-
basic constructor
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)#
-
constructor from unknown operators (no kernel)
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)#
-
constructor from unknown operators (no kernel)
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aop, const OperatorOnUnknown &opv, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2, SymType st)#
-
constructor from unknown operators (no kernel)
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)#
-
constructor from unknown operators and kernel
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)#
-
constructor from unknown operators and kernel
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const Kernel &ker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2, SymType st)#
-
constructor from unknown operators and kernel//accessors
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethod &im, SymType st)#
-
constructor from unknown operators and operator on kernel
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, const IntegrationMethods &ims, SymType st)#
-
constructor from unknown operators and operator on kernel
-
DoubleIntgBilinearForm(const GeomDomain &domu, const GeomDomain &domv, const OperatorOnUnknown &opu, AlgebraicOperator aopu, const OperatorOnKernel &opker, AlgebraicOperator aopv, const OperatorOnUnknown &opv, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2, SymType st)#
-
constructor from unknown operators and operator on kernel
-
~DoubleIntgBilinearForm()#
-
destructor
-
inline AlgebraicOperator algopu() const#
-
return the algebraic operator on u
-
inline AlgebraicOperator algopv() const#
-
return the algebraic operator on v
-
virtual string_t asString() const#
-
interpret as string for print purpose
-
void checkCollinoIM(const IntegrationMethod*)#
-
check that CollinoIM is available for the double integral
-
virtual BasicBilinearForm *clone() const#
-
clone of the linear form
-
inline DomainPair domains() const#
-
return the pair of domain pointers
-
inline const GeomDomain *domainx() const#
-
return the pointer to the x domain, say v-domain
-
inline const GeomDomain *domainy() const#
-
return the pointer to the y domain, say u-domain
-
inline const IntegrationMethod *intgMethod() const#
-
return the pointer to the integration method
-
inline const KernelOperatorOnUnknowns &kopus() const#
-
return KernelOperatorOnUnknowns reference (const)
-
inline const KernelOperatorOnUnknowns *kopusp() const#
-
return KernelOperatorOnUnknowns pointer (const)
-
inline const KernelOperatorOnUnknowns &kopuv() const#
-
return KernelOperatorOnUnknowns reference
-
inline const LcKernelOperatorOnUnknowns &lckopus() const#
-
return KernelOperatorOnUnknowns reference (const)
-
inline const LcKernelOperatorOnUnknowns *lckopusp() const#
-
return KernelOperatorOnUnknowns pointer (const)
-
DoubleIntgBilinearForm &operator=(const DoubleIntgBilinearForm &dibf)#
-
assign operator
-
inline const OperatorOnKernel &opker() const#
-
return the pointer to the operator on kernel
-
inline const OperatorOnUnknown &opu() const#
-
return the pointer to the operator on unknown
-
inline const OperatorOnUnknown &opv() 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#
-
print utility
-
void setComputationType()#
-
set computation type (_IEComputation,_IEExtComputation,IEHMatrixComputation, ..)
-
void setHMIntegrationMethods()#
-
check and update quadrature pointers of IntegrationsMethods when a HMatrixIM
-
void setIntegrationMethod(const GeomDomain &domu, const GeomDomain &domv, const KernelOperatorOnUnknowns &kopus, QuadRule qr1, number_t qo1, QuadRule qr2, number_t qo2)#
-
set IntegrationMethod for quadrature product rule
-
void setIntegrationMethods()#
-
check and update quadrature pointers of IntegrationsMethods
check and set quadrature pointers of IntegrationsMethods if they are not set
if intgMethods is empty if kernel is singular (Kernel::singularType!=_notSingular) add if possible
a well suited singular quadrature method applied to adjacent elements (dist=0)
some regular quadrature products applied to non adjacent elements (one for 0<dist<=1, one for 1<dist<=2 and one for dist>2) if kernel is regular (Kernel::singularType==_notSingular) add
a regular quadrature products if intgMethods contains only a singular quadrature if kernel is regular stop on error if kernel is singular, check if singular quadrature is consistent if not stop on error else add some regular quadrature products applied to non adjacent elements (one for 0<dist<=1, one for 1<dist<=2 and one for dist>2) if intgMethods contains only a regular quadrature if kernel is regular check if it is consistent if kernel is singular add a well suited singular quadrature method applied to adjacent elements (dist=0) if intgMethods are more than one integration method if kernel is singular, check if there is only one consistent singular quadrature for dist=0, if not stop on error if there is no regular quadrature, add some if kernel is regular, check that all are regular quadratures
At the end of the process, produce an intgMethods vector consistent with the Kernel In a second step, update pointers of quadrature if required
-
virtual SymType setSymType() const#
-
return the value type of the bilinear form
find symmetry property (_noSymmetry , _symmetric, _skewSymmetric, _selfAdjoint) of bilinear form, used to set symmetry parameter Here only simple cases.
return symmetry property (_noSymmetry, _symmetric, _skewSymmetric, _selfAdjoint, _skewAdjoint)
In more complex cases, the user may enforce symmetry by specifying sym argument in constructors of bilinear form To be improved…
-
inline virtual LinearFormType type() const#
-
return the type of the linear form
Public Members
-
IntegrationMethods intgMethods#
-
list of integration methods
Friends
-
inline friend std::ostream &operator<<(std::ostream &os, const DoubleIntgBilinearForm &dibf)#
-
print operator
-
DoubleIntgBilinearForm(const DoubleIntgBilinearForm &dibf)#