SurfElem Class Reference

#include <SurfElem.hpp>

Inheritance diagram for SurfElem:

Inheritance graph
[legend]
Collaboration diagram for SurfElem:

Collaboration graph
[legend]

List of all members.

Public Types

enum  Type {
  hexahedron, cartesianHexahedron, hexahedronByEdge, tetrahedron,
  triangle3d, quadrangle3d
}

Public Member Functions

const Cellmother () const
size_t motherCellFaceNumber () const
void setMother (const Cell *cell, const size_t faceNumber)
const SurfElemoperator= (const SurfElem &S)
virtual const TinyVector
< 3, real_t > 
normal () const =0
 SurfElem (const size_t &numberOfVertices, const size_t &reference=0)
 SurfElem (const SurfElem &s)
virtual ~SurfElem ()
 Virtual destructor.
bool find (const Vertex *P)
const real_t & volume () const
void replace (Vertex *v0, Vertex *v1)
const bool & isFictitious () const
void setFictitious (const bool &b) const
virtual size_t numberOfVertices () const =0
virtual Cell::Type type () const =0
const size_t & reference () const
size_t & reference ()
Vertexoperator() (const size_t &i)
const Vertexoperator() (const size_t &i) const

Protected Attributes

const Cell__motherCell
size_t __motherCellFaceNumber
size_t __reference
 Reference of the Cell.
real_t __volume
 Volume or surface of the cell.
Vertex ** __vertices
 Pointers on vertices of the cell.
bool __isFictitious
 indicates if the cell is to be taken into accounts for computations


Detailed Description

Definition at line 39 of file SurfElem.hpp.


Member Enumeration Documentation

enum Cell::Type [inherited]

Enumerator:
hexahedron 
cartesianHexahedron 
hexahedronByEdge 
tetrahedron 
triangle3d 
quadrangle3d 

Definition at line 40 of file Cell.hpp.

00040             {
00041     hexahedron,
00042     cartesianHexahedron,
00043     hexahedronByEdge,
00044     tetrahedron,
00045     triangle3d,
00046     quadrangle3d
00047   };


Constructor & Destructor Documentation

SurfElem::SurfElem ( const size_t &  numberOfVertices,
const size_t &  reference = 0 
) [inline]

Definition at line 106 of file SurfElem.hpp.

00108     : Cell(numberOfVertices, reference),
00109       __motherCell(0),
00110       __motherCellFaceNumber(std::numeric_limits<size_t>::max())
00111   {
00112     ;
00113   }

SurfElem::SurfElem ( const SurfElem s  )  [inline]

Definition at line 115 of file SurfElem.hpp.

00116     : Cell(s),
00117       __motherCell(s.__motherCell),
00118       __motherCellFaceNumber(s.__motherCellFaceNumber)
00119   {
00120     ;
00121   }

virtual SurfElem::~SurfElem (  )  [inline, virtual]

Virtual destructor.

Definition at line 124 of file SurfElem.hpp.

00125   {
00126     ;
00127   }


Member Function Documentation

const Cell& SurfElem::mother (  )  const [inline]

size_t SurfElem::motherCellFaceNumber (  )  const [inline]

Access to the mother cell face number

Definition at line 65 of file SurfElem.hpp.

References __motherCell, __motherCellFaceNumber, and ASSERT.

00066   {
00067     ASSERT(__motherCell!=0);
00068     return __motherCellFaceNumber;
00069   }

void SurfElem::setMother ( const Cell cell,
const size_t  faceNumber 
) [inline]

const SurfElem& SurfElem::operator= ( const SurfElem S  )  [inline]

Operator equal

Parameters:
S 
Returns:
*this

Definition at line 89 of file SurfElem.hpp.

References __motherCell, __motherCellFaceNumber, and Cell::operator=().

00090   {
00091     Cell::operator=(S);
00092     __motherCell = S.__motherCell;
00093     __motherCellFaceNumber = S.__motherCellFaceNumber;
00094 
00095     return *this;
00096   }

Here is the call graph for this function:

virtual const TinyVector<3,real_t> SurfElem::normal (  )  const [pure virtual]

Returns the normal to the face.

Returns:
normal

Implemented in Quadrangle, and Triangle.

Referenced by NormalManager::__buildNormal().

bool Cell::find ( const Vertex P  )  [inline, inherited]

Find the vertex P in the cell

Returns:
bool

Definition at line 69 of file Cell.hpp.

References Cell::__vertices, and Cell::numberOfVertices().

Referenced by Triangulation::__checkLine().

00069                                      {
00070     for(size_t i=0 ; i<numberOfVertices() ; ++i) {
00071       if(__vertices[i]==P) {
00072         return true;
00073       }
00074     }
00075     return false;
00076   }

Here is the call graph for this function:

const real_t& Cell::volume (  )  const [inline, inherited]

void Cell::replace ( Vertex v0,
Vertex v1 
) [inline, inherited]

Replaces a vertex by another

Parameters:
v0 the vertex to replace
v1 the new vertex

Definition at line 94 of file Cell.hpp.

References Cell::__vertices, Cell::numberOfVertices(), stringify(), and ErrorHandler::unexpected.

00095   {
00096     for (size_t i = 0; i<numberOfVertices(); ++i) {
00097       if (__vertices[i] == v0) {
00098         __vertices[i] = v1;
00099         return;
00100       }
00101     }
00102 
00103     const std::string errorMsg
00104       = "vertex "+stringify(v0)+" was not found while replacing "+stringify(v1);
00105 
00106     throw ErrorHandler(__FILE__,__LINE__,
00107                        errorMsg,
00108                        ErrorHandler::unexpected);
00109   }

Here is the call graph for this function:

const bool& Cell::isFictitious (  )  const [inline, inherited]

Read-only access to the fictitious state of the cell

Returns:
true if the cell is fictitious

Definition at line 116 of file Cell.hpp.

References Cell::__isFictitious.

Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember().

00117   {
00118     return __isFictitious;
00119   }

void Cell::setFictitious ( const bool &  b  )  const [inline, inherited]

Sets fictitious state of the cell

Note:
method is const since this does not change the cell. Fictitious state is a mutable member!

Definition at line 127 of file Cell.hpp.

References Cell::__isFictitious.

Referenced by FictitiousDomainMethod::Compute().

00128   {
00129     __isFictitious = b;
00130   }

virtual size_t Cell::numberOfVertices (  )  const [pure virtual, inherited]

virtual Cell::Type Cell::type (  )  const [pure virtual, inherited]

Access to the type of the cell

Returns:
the cell type

Implemented in CartesianHexahedron, Hexahedron, Quadrangle, Tetrahedron, and Triangle.

const size_t& Cell::reference (  )  const [inline, inherited]

size_t& Cell::reference (  )  [inline, inherited]

Access to the reference of the Cell.

Returns:
a reference to the reference

Definition at line 161 of file Cell.hpp.

References Cell::__reference.

00162   {
00163     return __reference;
00164   }

Vertex& Cell::operator() ( const size_t &  i  )  [inline, inherited]

Access to the ith Vertex of the Cell.

Parameters:
i the local number of the vertex
Returns:
a reference to a the vertex

Definition at line 173 of file Cell.hpp.

References Cell::__vertices, ASSERT, and Cell::numberOfVertices().

00174   {
00175     ASSERT (i<numberOfVertices());
00176     return *__vertices[i];
00177   }

Here is the call graph for this function:

const Vertex& Cell::operator() ( const size_t &  i  )  const [inline, inherited]

Read-only access to the ith Vertex of the Cell.

Parameters:
i the local number of the vertex
Returns:
a const reference to a the vertex

Definition at line 186 of file Cell.hpp.

References Cell::__vertices, ASSERT, and Cell::numberOfVertices().

00187   {
00188     ASSERT (i<numberOfVertices());
00189     return *(__vertices[i]);
00190   }

Here is the call graph for this function:


Member Data Documentation

const Cell* SurfElem::__motherCell [protected]

The mother cell (ie: a 3d element which interacts with the triangle)

Definition at line 47 of file SurfElem.hpp.

Referenced by mother(), motherCellFaceNumber(), operator=(), and setMother().

Definition at line 48 of file SurfElem.hpp.

Referenced by motherCellFaceNumber(), operator=(), and setMother().

size_t Cell::__reference [protected, inherited]

Reference of the Cell.

Definition at line 51 of file Cell.hpp.

Referenced by Cell::operator=(), and Cell::reference().

real_t Cell::__volume [protected, inherited]

Vertex** Cell::__vertices [protected, inherited]

bool Cell::__isFictitious [mutable, protected, inherited]

indicates if the cell is to be taken into accounts for computations

Definition at line 60 of file Cell.hpp.

Referenced by Cell::isFictitious(), and Cell::setFictitious().


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

Generated on Wed Nov 19 00:16:19 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6