Hexahedron Class Reference

#include <Hexahedron.hpp>

Inheritance diagram for Hexahedron:

Inheritance graph
[legend]
Collaboration diagram for Hexahedron:

Collaboration graph
[legend]

List of all members.

Public Types

enum  { NumberOfVertices = 8, NumberOfFaces = 6, NumberOfEdges = 12 }
typedef Quadrangle FaceType
enum  Type {
  hexahedron, cartesianHexahedron, hexahedronByEdge, tetrahedron,
  triangle3d, quadrangle3d
}

Public Member Functions

virtual Cell::Type type () const
size_t numberOfVertices () const
 Number of Vertices.
size_t numberOfEdges () const
 Number of Edges.
const Hexahedronoperator= (const Hexahedron &H)
 sets equal to a given tetrahedron
 Hexahedron ()
 Default constructor does nothing but reserving memory.
 Hexahedron (Vertex &x0, Vertex &x1, Vertex &x2, Vertex &x3, Vertex &x4, Vertex &x5, Vertex &x6, Vertex &x7, const size_t &ref=0)
 ~Hexahedron ()
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
const size_t & reference () const
size_t & reference ()
Vertexoperator() (const size_t &i)
const Vertexoperator() (const size_t &i) const

Static Public Attributes

static const size_t faces [NumberOfFaces][FaceType::NumberOfVertices] = {{0,1,2,3},{0,4,5,1},{1,5,6,2},{2,6,7,3},{0,3,7,4},{4,7,6,5}}
static const size_t edges [NumberOfEdges][Edge::NumberOfVertices] = {{0,1},{1,2},{2,3},{3,0},{0,4},{1,5},{2,6},{3,7},{4,5},{5,6},{6,7},{7,4}}

Protected Attributes

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 36 of file Hexahedron.hpp.


Member Typedef Documentation

Definition at line 46 of file Hexahedron.hpp.


Member Enumeration Documentation

anonymous enum

Enumerator:
NumberOfVertices  number of vertices
NumberOfFaces  number of faces
NumberOfEdges  number of edges

Definition at line 40 of file Hexahedron.hpp.

00040        {
00041     NumberOfVertices   = 8,     
00042     NumberOfFaces      = 6,     
00043     NumberOfEdges      = 12     
00044   };

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

Hexahedron::Hexahedron (  )  [inline]

Default constructor does nothing but reserving memory.

Definition at line 76 of file Hexahedron.hpp.

00077     : Cell(Hexahedron::NumberOfVertices)
00078   {
00079     ;
00080   }

Hexahedron::Hexahedron ( Vertex x0,
Vertex x1,
Vertex x2,
Vertex x3,
Vertex x4,
Vertex x5,
Vertex x6,
Vertex x7,
const size_t &  ref = 0 
)

Definition at line 23 of file Hexahedron.cpp.

References Cell::__vertices, Cell::__volume, and ConformTransformationQ1HexahedronJacobian::jacobianDet().

00032   : Cell(Hexahedron::NumberOfVertices, ref)
00033 {
00034   __vertices[0] = &x0;
00035   __vertices[1] = &x1;
00036   __vertices[2] = &x2;
00037   __vertices[3] = &x3;
00038   __vertices[4] = &x4;
00039   __vertices[5] = &x5;
00040   __vertices[6] = &x6;
00041   __vertices[7] = &x7;
00042 
00043   ConformTransformationQ1Hexahedron T(*this);
00044   ConformTransformationQ1HexahedronJacobian J(T);
00045 
00046   __volume = J.jacobianDet();
00047 }

Here is the call graph for this function:

Hexahedron::~Hexahedron (  )  [inline]

Definition at line 92 of file Hexahedron.hpp.

00093   {
00094     ;
00095   }


Member Function Documentation

virtual Cell::Type Hexahedron::type (  )  const [inline, virtual]

Access to the type of the cell

Returns:
the cell type

Implements Cell.

Definition at line 51 of file Hexahedron.hpp.

References Cell::hexahedron.

00052   {
00053     return Cell::hexahedron;
00054   }

size_t Hexahedron::numberOfVertices (  )  const [inline, virtual]

Number of Vertices.

Implements Cell.

Definition at line 57 of file Hexahedron.hpp.

References NumberOfVertices.

00058   {
00059     return NumberOfVertices;
00060   }

size_t Hexahedron::numberOfEdges (  )  const [inline]

Number of Edges.

Definition at line 63 of file Hexahedron.hpp.

References NumberOfEdges.

00064   {
00065     return NumberOfEdges;
00066   }

const Hexahedron& Hexahedron::operator= ( const Hexahedron H  )  [inline]

sets equal to a given tetrahedron

Definition at line 69 of file Hexahedron.hpp.

References Cell::operator=().

00070   {
00071     Cell::operator=(H);
00072     return *this;
00073   }

Here is the call graph for this function:

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   }

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 size_t Hexahedron::faces = {{0,1,2,3},{0,4,5,1},{1,5,6,2},{2,6,7,3},{0,3,7,4},{4,7,6,5}} [static]

Definition at line 48 of file Hexahedron.hpp.

Referenced by ConformTransformationQ1Hexahedron::__inside().

const size_t Hexahedron::edges = {{0,1},{1,2},{2,3},{3,0},{0,4},{1,5},{2,6},{3,7},{4,5},{5,6},{6,7},{7,4}} [static]

Definition at line 49 of file Hexahedron.hpp.

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 files:

Generated on Thu Nov 20 00:07:44 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6