87 int nSide ()
const {
return 3; };
93 int SideNode (
int side,
int node)
const;
106 {
return Size()*2.0; }
147 double IntF (
int i)
const;
153 int QuadRule (
int order,
const double **wght,
const Point **absc)
const;
155 double IntFF (
int i,
int j)
const;
158 double IntFFF (
int i,
int j,
int k)
const;
166 void IntFFF (
double &iii,
double &iij,
double &ijk)
const;
186 double IntFDD (
int i,
int j,
int k)
const
187 {
return intdd.Get(j,k) * 0.3333333333; }
192 {
return intdd * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
199 {
return intdd.Get(i,j) * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
203 {
return intbff * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
208 {
return intbff.Get(i,j) * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
211 double IntFd (
int i,
int j,
int k)
const;
218 double IntFdd (
int i,
int j,
int k,
int l,
int m)
const;
221 double IntPdd (
const RVector &p,
int j,
int k,
int l,
int m)
const;
233 RVector BndIntFX (
int side,
double (*func)(
const Point&),
238 double sigma,
double sup,
const NodeList &nlist)
const;
249 int GetLocalSubsampleAbsc (
const Point *&absc)
const;
253 int GetBndSubsampleAbsc (
int side,
const Point *&absc)
const;
258 int GlobalIntersection (
const NodeList &nlist,
const Point &p1,
268 void SplitSide (
Mesh *mesh,
int side,
int newnode,
285 void Bisect (
Mesh *mesh,
int side,
int newnode,
288 void MergeAndResplit (
Mesh *mesh,
int side,
int newnode,
293 double ComputeSize (
const NodeList &nlist)
const;
300 void ComputeIntFD (
const NodeList &nlist);
312 double *intfd_0, *intfd_1;
315 double a0, b0, c0, a1, b1, c1, a2, b2, c2;
318 #ifdef TRI3_STORE_INTFF
Templated vector class.
Definition: vector.h:39
virtual bool GContains(const Point &glob, const NodeList &nlist) const
Checks if a global point coordinate is inside the element.
virtual RSymMatrix IntFF() const =0
Integrals of all products of two shape functions over the element.
double DetJ(const Point &loc, const NodeList *nlist=0) const
Returns determinant of Jacobian.
Definition: tri3.h:105
double Size() const
Returns the element size.
Definition: element.h:1128
virtual double IntFdd(int i, int j, int k, int l, int m) const
Integral of the product of a shape function and two partial shape function derivatives over the eleme...
Definition: element.h:850
virtual double IntPd(const RVector &P, int j, int k) const
Integral of the product of a nodal function and a partial shape function derivative over the element...
Definition: element.h:823
BYTE VtkType() const
Returns the VTK element type identifier, or 0 if the element doesn't have a VTK representation.
Definition: tri3.h:79
#define ELID_TRI3
3-noded triangle
Definition: element.h:45
Finite-element mesh management.
Definition: mesh.h:145
virtual RVector DirectionCosine(int side, RDenseMatrix &jacin)=0
Returns the direction cosines of a side normal.
virtual RVector GlobalShapeF(const NodeList &nlist, const Point &glob) const
Returns the values of the shape functions at a global point.
Definition: element.h:490
int nNode() const
Returns the number of nodes associated with the element.
Definition: tri3.h:84
virtual double IntFFF(int i, int j, int k) const =0
Integral of a product of three shape functions over the element.
virtual double BndIntFFSide(int i, int j, int sd)=0
Surface integral of a product of two shape functions over one of the sides of the element...
virtual RDenseMatrix LocalShapeD(const Point &loc) const =0
Returns the values of the shape function derivatives at a local point.
double IntPDD(int i, int j, const RVector &P) const
Integrals of a product of a nodal function and two shape function derivatives over the element...
Definition: tri3.h:198
double BndIntPFF(int i, int j, const RVector &P) const
Surface integrals of a product of a nodal function and two shape functions over all boundary sides of...
Definition: tri3.h:207
virtual double IntFd(int i, int j, int k) const
Integral of the product of a shape function and a partial shape function derivative over the element...
Definition: element.h:810
virtual const RVector & LNormal(int side) const =0
Returns a side normal in local coordinates.
virtual RSymMatrix IntPFF(const RVector &P) const =0
Integrals of all products of two shape functions and a nodal function over the element.
virtual double BndIntFSide(int i, int sd)
Surface integral of a shape function over one of the sides of the element.
Definition: element.h:707
virtual void Initialise(const NodeList &nlist)
Element initialisation.
virtual RDenseMatrix GlobalShapeD(const NodeList &nlist, const Point &glob) const
Returns the values of the shape function derivatives at a global point.
Definition: element.h:502
A 3-noded (linear) 2-dimensional triangle element.
Definition: tri3.h:42
double IntFDD(int i, int j, int k) const
Integral of a product of a shape function and two shape function derivatives over the element...
Definition: tri3.h:186
unsigned long GetCaps() const
Returns element capability flags.
Definition: tri3.h:81
virtual RVector IntFD(int i, int j) const
Integral of a product of a shape function and a shape function derivative over the element...
Definition: element.h:637
Base class for finite element types.
Definition: element.h:84
BYTE Type() const
Returns an element type identifier.
Definition: tri3.h:76
Base class for all 2-D unstructured element types.
Definition: element.h:1234
virtual double IntF(int i) const =0
Integral of a shape function over the element.
int nSide() const
Returns the number of element sides.
Definition: tri3.h:87
virtual double SideSize(int side, const NodeList &nlist) const
Returns the size of an element side.
Definition: element.h:397
virtual RVector LocalShapeF(const Point &loc) const =0
Returns the values of the shape functions at a local point.
RSymMatrix IntPDD(const RVector &P) const
All integrals of products of a nodal function and two shape function derivatives over the element...
Definition: tri3.h:191
virtual Point SurfToLocal(int side, const Point &p) const
Maps a point from surface coordinates to local element coordinates.
Definition: element.h:302
virtual RSymMatrix Intdd() const
Integral of the product of two partial shape function derivatives over the element.
Definition: element.h:836
virtual Element * Copy()=0
Create a copy of the element and return a pointer to it.
Dense matrix class.
Definition: crmatrix.h:38
virtual Point Local(const NodeList &nlist, const Point &glob) const =0
Maps a point from global to local element coordinates.
RSymMatrix BndIntPFF(const RVector &P) const
Surface integrals of all products of a nodal function and two shape functions over all boundary sides...
Definition: tri3.h:202
virtual Point NodeLocal(int node) const =0
Returns the local coordinates of an element node.
#define ELCAPS_SUBSAMPLING
element implements IntFFF and IntFDD by subsampling
Definition: element.h:61
virtual int SideNode(int side, int node) const =0
Returns relative node index for a side vertex.
virtual int QuadRule(int order, const double **wght, const Point **absc) const
Returns the weights and abscissae of quadrature rules over the element.
Definition: element.h:521
virtual bool LContains(const Point &loc, bool pad=true) const =0
Checks if a local point coordinate is inside the element.
int nSideNode(int) const
Returns the number of vertices associated with a side.
Definition: tri3.h:90