Toast++  1.0.2 (r.539)
Forward and inverse modelling in optical tomography
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Element_Unstructured Class Referenceabstract

Base class for all unstructured element types. More...

#include <element.h>

Inheritance diagram for Element_Unstructured:
Element Element_Unstructured_2D Element_Unstructured_3D Line2D2 Quad4 Triangle10 Triangle10_ip Triangle3 Triangle3old Triangle6 Triangle6_ip Tetrahedron10 Tetrahedron10_ip Tetrahedron4 Wedge18inf Wedge6

Public Member Functions

 Element_Unstructured (const Element_Unstructured &el)
 
virtual void Initialise (const NodeList &nlist)
 Element initialisation. More...
 
virtual void PostInitialisation (const NodeList &nlist)
 Element setup after mesh initialisation. More...
 
double Size () const
 Returns the element size. More...
 
void operator= (const Element_Unstructured &el)
 
virtual bool GContains (const Point &glob, const NodeList &nlist) const
 Checks if a global point coordinate is inside the element. More...
 
RSymMatrix IntDD () const
 Integrals of all products of two shape function derivatives over the element. More...
 
double IntDD (int i, int j) const
 Integral of a product of two shape function derivatives over the element. More...
 
RSymMatrix BndIntFF () const
 Boundary integral of all products of two shape functions over all boundary sides of the element. More...
 
double BndIntFF (int i, int j)
 Boundary integral of a product of two shape functions over all boundary sides of the element. More...
 
- Public Member Functions inherited from Element
 Element ()
 Creates a new element with no nodes.
 
 Element (const Element &el)
 Creates a new element as a copy of 'el'.
 
virtual ~Element ()
 Destroys the element.
 
virtual ElementCopy ()=0
 Create a copy of the element and return a pointer to it.
 
void operator= (const Element &el)
 Element assignment. More...
 
virtual BYTE Type () const =0
 Returns an element type identifier. More...
 
virtual BYTE VtkType () const
 Returns the VTK element type identifier, or 0 if the element doesn't have a VTK representation.
 
virtual unsigned long GetCaps () const =0
 Returns element capability flags. More...
 
virtual int Dimension () const =0
 Returns the spatial dimension of the element. More...
 
virtual int nNode () const =0
 Returns the number of nodes associated with the element. More...
 
virtual int nSide () const =0
 Returns the number of element sides. More...
 
virtual int nSideNode (int side) const =0
 Returns the number of vertices associated with a side. More...
 
virtual int SideNode (int side, int node) const =0
 Returns relative node index for a side vertex. More...
 
virtual bool IsNode (int node)
 Checks if a node is part of the element. More...
 
int IsSide (int nn, int *nd)
 Checks if a face defined by vertex nodes is part of the element. More...
 
virtual bool IsSideNode (int side, int node)
 Checks if a node is associated with a specific side. More...
 
bool IsBoundarySide (int side)
 Checks if a side is on the mesh surface. More...
 
bool HasBoundarySide ()
 Checks if the element contains any surface sides. More...
 
bool HasInterfaceSide ()
 Checks if the element contains any internal interface sides. More...
 
virtual Point Local (const NodeList &nlist, const Point &glob) const =0
 Maps a point from global to local element coordinates. More...
 
virtual Point NodeLocal (int node) const =0
 Returns the local coordinates of an element node. More...
 
virtual Point SurfToLocal (int side, const Point &p) const
 Maps a point from surface coordinates to local element coordinates. More...
 
virtual void MapToSide (int side, Point &loc) const
 Translates a point to an element surface. More...
 
virtual Point SideCentre (int side) const
 Returns the centre point of a side. More...
 
ElementSideNeighbour (int side) const
 returns a pointer to the element connected at 'side', or NULL if this is a boundary side. More...
 
int SideNeighbourIndex (int side) const
 Returns the list index of the element connected at 'side', or -1 if this is a boundary side. More...
 
Point Global (const NodeList &nlist, const Point &loc) const
 Maps a point from local element coordinates to global coordinates. More...
 
virtual RDenseMatrix Elgeom (const NodeList &nlist) const
 Returns the element's global node coordinates. More...
 
virtual RVector DirectionCosine (int side, RDenseMatrix &jacin)=0
 Returns the direction cosines of a side normal. More...
 
virtual const RVectorLNormal (int side) const =0
 Returns a side normal in local coordinates. More...
 
virtual double SideSize (int side, const NodeList &nlist) const
 Returns the size of an element side. More...
 
virtual double DetJ (const Point &loc, const NodeList *nlist=0) const
 Returns determinant of Jacobian at a given point inside the element in the local frame. More...
 
virtual bool LContains (const Point &loc, bool pad=true) const =0
 Checks if a local point coordinate is inside the element. More...
 
virtual int BndSideList (const NodeList &nlist, int *list)
 Returns a list of boundary sides. More...
 
void InitNeighbourSupport ()
 
void InitSubdivisionSupport ()
 
int SubdivisionLevel () const
 Returns the element's subdivison level. More...
 
virtual void Subdivide (Mesh *mesh)
 
virtual RVector LocalShapeF (const Point &loc) const =0
 Returns the values of the shape functions at a local point. More...
 
virtual RDenseMatrix LocalShapeD (const Point &loc) const =0
 Returns the values of the shape function derivatives at a local point. More...
 
virtual RVector GlobalShapeF (const NodeList &nlist, const Point &glob) const
 Returns the values of the shape functions at a global point. More...
 
virtual RDenseMatrix GlobalShapeD (const NodeList &nlist, const Point &glob) const
 Returns the values of the shape function derivatives at a global point. More...
 
virtual int QuadRule (int order, const double **wght, const Point **absc) const
 Returns the weights and abscissae of quadrature rules over the element. More...
 
virtual double IntF (int i) const =0
 Integral of a shape function over the element. More...
 
virtual RSymMatrix IntFF () const =0
 Integrals of all products of two shape functions over the element. More...
 
virtual double IntFF (int i, int j) const =0
 Integral of a product of two shape functions over the element. More...
 
virtual double IntFFF (int i, int j, int k) const =0
 Integral of a product of three shape functions over the element. More...
 
virtual RSymMatrix IntPFF (const RVector &P) const =0
 Integrals of all products of two shape functions and a nodal function over the element. More...
 
virtual double IntPFF (int i, int j, const RVector &P) const =0
 Integral of a product of two shape functions and a nodal function over the element. More...
 
virtual RVector IntFD (int i, int j) const
 Integral of a product of a shape function and a shape function derivative over the element. More...
 
virtual double IntFDD (int i, int j, int k) const =0
 Integral of a product of a shape function and two shape function derivatives over the element. More...
 
virtual RSymMatrix IntPDD (const RVector &P) const =0
 All integrals of products of a nodal function and two shape function derivatives over the element. More...
 
virtual double IntPDD (int i, int j, const RVector &P) const =0
 Integrals of a product of a nodal function and two shape function derivatives over the element. More...
 
virtual RVector BndIntF () const
 Boundary integral of all shape functions over all boundary sides of the element. More...
 
virtual double BndIntFSide (int i, int sd)
 Surface integral of a shape function over one of the sides of the element. More...
 
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. More...
 
virtual RSymMatrix BndIntPFF (const RVector &P) const =0
 Surface integrals of all products of a nodal function and two shape functions over all boundary sides of the element. More...
 
virtual double BndIntPFF (int i, int j, const RVector &P) const =0
 Surface integrals of a product of a nodal function and two shape functions over all boundary sides of the element. More...
 
virtual double Intd (int i, int k) const
 Integral of partial shape function derivative over the element. More...
 
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. More...
 
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. More...
 
virtual RSymMatrix Intdd () const
 Integral of the product of two partial shape function derivatives over the element. More...
 
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 element. More...
 
virtual double IntPdd (const RVector &p, int j, int k, int l, int m) const
 
virtual double IntFfd (int i, int j, int k, int l) const
 
virtual double IntPfd (const RVector &p, int j, int k, int l) const
 
virtual double IntUnitSphereP (const NodeList &nlist, const RVector &P) const
 
virtual double IntUnitSphereFF (const NodeList &nlist, const int i, const int j) const
 
virtual double IntUnitSpherePFF (const NodeList &nlist, const int i, const int j, const RVector &P) const
 
virtual RVector BndIntFX (int side, double(*func)(const Point &), const NodeList &nlist) const
 
virtual RVector BndIntFCos (int side, const Surface *surf, const RVector &cntcos, double sigma, double sup, const NodeList &nlist) const
 
virtual RVector BndIntFCos (int side, const RVector &cntcos, double a, const NodeList &nlist) const
 
virtual RVector BndIntFDelta (int side, const Surface *surf, const RVector &pos, const NodeList &nlist) const
 
int GetSubsampleFD (int &n, double *&wght, Point *&absc, RVector *&F, RDenseMatrix *&D, const NodeList &nlist) const
 
int GetBndSubsampleFD (int side, int &n, double *&wght, Point *&absc, RVector *&F, RDenseMatrix *&D, const NodeList &nlist) const
 
virtual int GetLocalSubsampleAbsc (const Point *&absc) const
 
virtual int GetBndSubsampleAbsc (int side, const Point *&absc) const
 
virtual RDenseMatrix StrainDisplacementMatrix (const Point &glob) const
 
virtual RDenseMatrix ElasticityStiffnessMatrix (const RDenseMatrix &D) const
 
virtual RDenseMatrix ElasticityStiffnessMatrix (double E, double nu) const
 
RDenseMatrix ElasticStrainDisplacement (const RVector &loc, const RDenseMatrix &gder) const
 
virtual RDenseMatrix IsotropicElasticityMatrix (double E, double nu) const
 
virtual RVector InitialStrainVector (double E, double nu, const RVector &e0)
 
virtual RVector ThermalExpansionVector (double E, double nu, double alpha, double dT)
 
virtual RVector DThermalExpansionVector (double E, double nu)
 
virtual int GlobalIntersection (const NodeList &nlist, const Point &p1, const Point &p2, Point **list)=0
 
virtual int Intersection (const Point &, const Point &, Point **)=0
 
virtual RDenseMatrix LocaltoGlobalMat () const
 
virtual RDenseMatrix GlobaltoLocalMat () const
 
virtual RDenseMatrix FTAMat () const
 
int Region () const
 
void SetRegion (int nr)
 
virtual void SplitSide (Mesh *mesh, int side, int newnode, Element *nbr1, Element *nbr2, Element *el1, Element *el2)
 
virtual void Bisect (Mesh *mesh, int side, int newnode, Element *nbr1, Element *nbr2, Element *el1, Element *el2)
 
virtual void MergeAndResplit (Mesh *mesh, int side, int newnode, Element *nbr1, Element *nbr2, Element *el1, Element *el2)
 

Protected Member Functions

virtual double ComputeSize (const NodeList &) const =0
 
virtual RSymMatrix ComputeIntDD (const NodeList &nlist) const =0
 
virtual RSymMatrix ComputeBndIntFF (const NodeList &nlist) const =0
 

Protected Attributes

double size
 
RSymMatrix intdd
 
RSymMatrix intbff
 
Point bbmin
 
Point bbmax
 
- Protected Attributes inherited from Element
bool * bndside
 
bool bndel
 
bool interfaceel
 
int region
 

Additional Inherited Members

- Public Attributes inherited from Element
int * Node
 
ElementSubdivisionDatasubdivdata
 
Element ** sdnbhr
 
int * sdnbhridx
 

Detailed Description

Base class for all unstructured element types.

Unstructured elements within a mesh differ in shape and size. Therefore they must store shape parameters on an individual element basis.

Member Function Documentation

RSymMatrix Element_Unstructured::BndIntFF ( ) const
inlinevirtual

Boundary integral of all products of two shape functions over all boundary sides of the element.

Returns
Matrix of size nNode x nNode, containing the integrals

\[ \int_{\partial\Omega} u_i(\vec{r}) u_j(\vec{r}) d\vec{r} \]

where the integration is performed over all sides of the element that are part of the mesh surface.
Note
The returned matrix contains nonzero entries at (i,j) only if nodes i and j are both boundary nodes.
If the element does not contain boundary sides, the returned matrix is zero.
See Also
BndIntFF(int,int), BndIntFFSide

Implements Element.

double Element_Unstructured::BndIntFF ( int  i,
int  j 
)
inlinevirtual

Boundary integral of a product of two shape functions over all boundary sides of the element.

Parameters
ifirst node index (range 0 .. nNode-1)
jsecond node index (range 0 .. nNode-1)
Returns
Value of the integral

\[ \int_{\partial\Omega} u_i(\vec{r}) u_j(\vec{r}) d\vec{r} \]

where the integration is performed over all sides of the element that are part of the mesh surface.
Note
The return value is nonzero only if both nodes i and j are boundary nodes.
See Also
BndIntFF()const, BndIntFFSide

Implements Element.

virtual bool Element_Unstructured::GContains ( const Point glob,
const NodeList nlist 
) const
virtual

Checks if a global point coordinate is inside the element.

Parameters
globpoint in global coordinates
nlistmesh node list
Returns
true if the point is inside the element, false otherwise.
See Also
LContains

Reimplemented from Element.

Reimplemented in Triangle3, Triangle3D6, Line2D2, Triangle3D3, Triangle10, Triangle3old, Triangle6, Triangle10_ip, Triangle6_ip, and Quad4.

virtual void Element_Unstructured::Initialise ( const NodeList nlist)
virtual

Element initialisation.

Calculation of geometric element parameters, including element size and pre-calculation of geometry dependent element matrices.

Parameters
nlistNode list, containing node geometry
Note
Should be called after the node list has been generated, and whenever the node list changes.

Reimplemented from Element.

Reimplemented in Triangle3, Tetrahedron4, Triangle10, Triangle6, Triangle3D6, Tetrahedron10_ip, Tetrahedron10, Triangle10_ip, Triangle6_ip, Line2D2, Triangle3D3, Quad4, Triangle3old, Wedge6, and Wedge18inf.

RSymMatrix Element_Unstructured::IntDD ( ) const
inlinevirtual

Integrals of all products of two shape function derivatives over the element.

Returns
Matrix of size nNode x nNode, containing the integrals

\[ \int_\Omega \nabla u_i(\vec{r}) \nabla u_j(\vec{r}) d\vec{r} \]

See Also
IntDD(int,int)const,
IntF, IntFF, IntFFF, IntFD, IntDD, IntPFF, IntPDD

Implements Element.

double Element_Unstructured::IntDD ( int  i,
int  j 
) const
inlinevirtual

Integral of a product of two shape function derivatives over the element.

Parameters
ifirst node index (range 0 .. nNode-1)
jsecond node index (range 0 .. nNode-1)
Returns
Value of the integral

\[ \int_\Omega \nabla u_i(\vec{r}) \nabla u_j(\vec{r}) d\vec{r} \]

See Also
IntDD()const,
IntF, IntFF, IntFFF, IntFD, IntDD, IntPFF, IntPDD

Implements Element.

virtual void Element_Unstructured::PostInitialisation ( const NodeList nlist)
virtual

Element setup after mesh initialisation.

This method is called after all mesh elements have been initialised. It can be used to perform any element initialisation steps that require the rest of the mesh to be initialised.

Reimplemented from Element.

double Element_Unstructured::Size ( ) const
inlinevirtual

Returns the element size.

Returns
Area (for 2-D elements) or volume (for 3-D elements) of the element.
See Also
SideSize

Implements Element.

Referenced by Tetrahedron4::DetJ(), and Triangle3::DetJ().


The documentation for this class was generated from the following file: