ContinuumMechanicsProblemDefinition< DIM > Class Template Reference

#include <ContinuumMechanicsProblemDefinition.hpp>

Inherited by SolidMechanicsProblemDefinition< DIM >, and StokesFlowProblemDefinition< DIM >.

Collaboration diagram for ContinuumMechanicsProblemDefinition< DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ContinuumMechanicsProblemDefinition (QuadraticMesh< DIM > &rMesh)
virtual ~ContinuumMechanicsProblemDefinition ()
void SetDensity (double density)
double GetDensity ()
void SetZeroDirichletNodes (std::vector< unsigned > &rZeroDirichletNodes)
std::vector< unsigned > & rGetDirichletNodes ()
std::vector< c_vector< double,
DIM > > & 
rGetDirichletNodeValues ()
void SetBodyForce (c_vector< double, DIM > bodyForce)
void SetBodyForce (c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &rX, double t))
c_vector< double, DIM > GetBodyForce (c_vector< double, DIM > &rX, double t=0.0)
BodyForceType GetBodyForceType ()
c_vector< double, DIM > GetConstantBodyForce ()
c_vector< double, DIM > EvaluateBodyForceFunction (c_vector< double, DIM > &rX, double t)
TractionBoundaryConditionType GetTractionBoundaryConditionType ()
void SetTractionBoundaryConditions (std::vector< BoundaryElement< DIM-1, DIM > * > &rTractionBoundaryElements, std::vector< c_vector< double, DIM > > &rElementwiseTractions)
void SetTractionBoundaryConditions (std::vector< BoundaryElement< DIM-1, DIM > * > rTractionBoundaryElements, c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &rX, double t))
void SetApplyNormalPressureOnDeformedSurface (std::vector< BoundaryElement< DIM-1, DIM > * > rTractionBoundaryElements, double normalPressure)
std::vector< BoundaryElement
< DIM-1, DIM > * > & 
rGetTractionBoundaryElements ()
std::vector< c_vector< double,
DIM > > & 
rGetElementwiseTractions ()
double GetNormalPressure ()
c_vector< double, DIM > EvaluateTractionFunction (c_vector< double, DIM > &rX, double t)
virtual void Validate ()

Static Public Attributes

static const double FREE = DBL_MAX

Protected Attributes

QuadraticMesh< DIM > & mrMesh
double mDensity
BodyForceType mBodyForceType
c_vector< double, DIM > mConstantBodyForce
c_vector< double, DIM >(* mpBodyForceFunction )(c_vector< double, DIM > &rX, double t)
TractionBoundaryConditionType mTractionBoundaryConditionType
std::vector< BoundaryElement
< DIM-1, DIM > * > 
mTractionBoundaryElements
std::vector< c_vector< double,
DIM > > 
mElementwiseTractions
double mNormalPressure
c_vector< double, DIM >(* mpTractionBoundaryConditionFunction )(c_vector< double, DIM > &rX, double t)
std::vector< unsignedmDirichletNodes
std::vector< c_vector< double,
DIM > > 
mDirichletNodeValues

Detailed Description

template<unsigned DIM>
class ContinuumMechanicsProblemDefinition< DIM >

A class for specifying various parts of a continuum mechanics problem, Dirichlet node information (which nodes are in space in a solid problem, which nodes have fixed flow in a fluids problem), the body force (per unit mass) (usually acceleration due to gravity or zero), the traction boundary conditions, and the density.

Definition at line 66 of file ContinuumMechanicsProblemDefinition.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
ContinuumMechanicsProblemDefinition< DIM >::ContinuumMechanicsProblemDefinition ( QuadraticMesh< DIM > &  rMesh  )  [inline]

Constructor initialises the body force to zero and density to 1.0

Parameters:
rMesh is the mesh being solved on

Definition at line 39 of file ContinuumMechanicsProblemDefinition.cpp.

template<unsigned DIM>
virtual ContinuumMechanicsProblemDefinition< DIM >::~ContinuumMechanicsProblemDefinition (  )  [inline, virtual]

Destructor

Definition at line 134 of file ContinuumMechanicsProblemDefinition.hpp.


Member Function Documentation

template<unsigned DIM>
c_vector< double, DIM > ContinuumMechanicsProblemDefinition< DIM >::EvaluateBodyForceFunction ( c_vector< double, DIM > &  rX,
double  t 
) [inline]

Evaluate the body force function (error if GetBodyForceType()!=FUNCTIONAL_BODY_FORCE)

Parameters:
rX spatial location
t current time

Definition at line 90 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType, and ContinuumMechanicsProblemDefinition< DIM >::mpBodyForceFunction.

template<unsigned DIM>
c_vector< double, DIM > ContinuumMechanicsProblemDefinition< DIM >::EvaluateTractionFunction ( c_vector< double, DIM > &  rX,
double  t 
) [inline]

Evaluate the traction boundary condition function (error if GetTractionBoundaryConditionType()!=FUNCTIONAL_TRACTION)

Parameters:
rX spatial location
t current time

Definition at line 206 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mpTractionBoundaryConditionFunction, and ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType.

template<unsigned DIM>
c_vector< double, DIM > ContinuumMechanicsProblemDefinition< DIM >::GetBodyForce ( c_vector< double, DIM > &  rX,
double  t = 0.0 
) [inline]

Get the body force at a particular point and time. Note: The user can either call this, or check what type of body force has been set using GetBodyForceType() and then call GetConstantBodyForce() or EvaluateBodyForceFunction(X,t).

Parameters:
rX spatial location
t current time

Definition at line 97 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType, ContinuumMechanicsProblemDefinition< DIM >::mConstantBodyForce, ContinuumMechanicsProblemDefinition< DIM >::mpBodyForceFunction, and NEVER_REACHED.

template<unsigned DIM>
BodyForceType ContinuumMechanicsProblemDefinition< DIM >::GetBodyForceType (  )  [inline]

Get the body force type

Definition at line 77 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType.

template<unsigned DIM>
c_vector< double, DIM > ContinuumMechanicsProblemDefinition< DIM >::GetConstantBodyForce (  )  [inline]
template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::GetDensity (  )  [inline]
template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::GetNormalPressure (  )  [inline]

Get the pressure for the boundary elements (corresponding to vector returned by rGetTractionBoundaryElements()) (error if GetTractionBoundaryConditionType()!=PRESSURE_ON_DEFORMED)

Definition at line 199 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mNormalPressure, and ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType.

template<unsigned DIM>
TractionBoundaryConditionType ContinuumMechanicsProblemDefinition< DIM >::GetTractionBoundaryConditionType (  )  [inline]

Get the traction (Neumann) boundary condition type

Definition at line 116 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType.

template<unsigned DIM>
std::vector< unsigned > & ContinuumMechanicsProblemDefinition< DIM >::rGetDirichletNodes (  )  [inline]

Get the Dirichlet nodes

Definition at line 172 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodes.

template<unsigned DIM>
std::vector< c_vector< double, DIM > > & ContinuumMechanicsProblemDefinition< DIM >::rGetDirichletNodeValues (  )  [inline]

Get the Dirichlet node values.

Definition at line 178 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodeValues.

template<unsigned DIM>
std::vector< c_vector< double, DIM > > & ContinuumMechanicsProblemDefinition< DIM >::rGetElementwiseTractions (  )  [inline]
template<unsigned DIM>
std::vector< BoundaryElement< DIM-1, DIM > * > & ContinuumMechanicsProblemDefinition< DIM >::rGetTractionBoundaryElements (  )  [inline]

Get the vector of traction boundary elements

Definition at line 184 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetApplyNormalPressureOnDeformedSurface ( std::vector< BoundaryElement< DIM-1, DIM > * >  rTractionBoundaryElements,
double  normalPressure 
) [inline]

Set traction (Neumann) boundary conditions. This version says that pressures should be applied on surfaces in the DEFORMED body in the outward normal direction.

Parameters:
rTractionBoundaryElements The boundary elements
normalPressure the corresponding pressure

Definition at line 143 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mNormalPressure, ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType, and ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetBodyForce ( c_vector< double, DIM >(*)(c_vector< double, DIM > &rX, double t)  pFunction  )  [inline]

Set the body force to be used - this version sets a functional body force

Parameters:
pFunction a function of space and time returning a vector

Definition at line 69 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType, and ContinuumMechanicsProblemDefinition< DIM >::mpBodyForceFunction.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetBodyForce ( c_vector< double, DIM >  bodyForce  )  [inline]

Set the body force to be used - this version sets a constant body force

Parameters:
bodyForce the constant body force

Definition at line 62 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType, and ContinuumMechanicsProblemDefinition< DIM >::mConstantBodyForce.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetDensity ( double  density  )  [inline]

Set the density

Parameters:
density 

Definition at line 49 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDensity.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetTractionBoundaryConditions ( std::vector< BoundaryElement< DIM-1, DIM > * >  rTractionBoundaryElements,
c_vector< double, DIM >(*)(c_vector< double, DIM > &rX, double t)  pFunction 
) [inline]

Set traction (Neumann) boundary conditions. This version takes in a vector of boundary elements, and a function to be evaluated at points in these boundary elements

Parameters:
rTractionBoundaryElements the boundary elements
pFunction the traction function (a function of space and time, returning a vector)

Definition at line 133 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mpTractionBoundaryConditionFunction, ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType, and ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetTractionBoundaryConditions ( std::vector< BoundaryElement< DIM-1, DIM > * > &  rTractionBoundaryElements,
std::vector< c_vector< double, DIM > > &  rElementwiseTractions 
) [inline]

Set traction (Neumann) boundary conditions. This version takes in a vector of boundary elements, and corresponding tractions for each one.

Parameters:
rTractionBoundaryElements the boundary elements
rElementwiseTractions corresponding tractions

Definition at line 122 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mElementwiseTractions, ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType, and ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetZeroDirichletNodes ( std::vector< unsigned > &  rZeroDirichletNodes  )  [inline]

Set a list of nodes (indices) to be given zero Dirichlet boundary condition

Parameters:
rZeroDirichletNodes the nodes at which the value (displacement/flow) is zero

Definition at line 155 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodes, ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodeValues, and ContinuumMechanicsProblemDefinition< DIM >::mrMesh.

Referenced by SolidMechanicsProblemDefinition< DIM >::SetZeroDisplacementNodes(), and StokesFlowProblemDefinition< DIM >::SetZeroFlowNodes().

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::Validate (  )  [inline, virtual]

Check all variables are set appropriately. Exceptions are thrown if any are not. Derived classes can override but should call this version as well.

Reimplemented in ElectroMechanicsProblemDefinition< DIM >, SolidMechanicsProblemDefinition< DIM >, and StokesFlowProblemDefinition< DIM >.

Definition at line 213 of file ContinuumMechanicsProblemDefinition.cpp.

References EXCEPTION, and ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodes.


Member Data Documentation

template<unsigned DIM>
const double ContinuumMechanicsProblemDefinition< DIM >::FREE = DBL_MAX [inline, static]

Special value for Dirichlet nodes, indicating that a Dirichlet boundary condition in a particular dimension is not specified

Definition at line 71 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by SolidMechanicsProblemDefinition< DIM >::SetFixedNodes().

template<unsigned DIM>
BodyForceType ContinuumMechanicsProblemDefinition< DIM >::mBodyForceType [protected]
template<unsigned DIM>
c_vector<double,DIM> ContinuumMechanicsProblemDefinition< DIM >::mConstantBodyForce [protected]
template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::mDensity [protected]
template<unsigned DIM>
std::vector<unsigned> ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodes [protected]
template<unsigned DIM>
std::vector<c_vector<double,DIM> > ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodeValues [protected]
template<unsigned DIM>
std::vector<c_vector<double,DIM> > ContinuumMechanicsProblemDefinition< DIM >::mElementwiseTractions [protected]

The tractions on each surface element (only used if mTractionBoundaryConditionType is set appropriately)

Definition at line 104 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by ContinuumMechanicsProblemDefinition< DIM >::rGetElementwiseTractions(), and ContinuumMechanicsProblemDefinition< DIM >::SetTractionBoundaryConditions().

template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::mNormalPressure [protected]

If the tractions are specified to correspond to a pressure acting on the surface: the pressure for the given boundary elements (only used if mTractionBoundaryConditionType is set appropriately)

Definition at line 108 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by ContinuumMechanicsProblemDefinition< DIM >::GetNormalPressure(), and ContinuumMechanicsProblemDefinition< DIM >::SetApplyNormalPressureOnDeformedSurface().

template<unsigned DIM>
c_vector<double,DIM>(* ContinuumMechanicsProblemDefinition< DIM >::mpBodyForceFunction)(c_vector< double, DIM > &rX, double t) [protected]

The body force as a function of space and time, only used if mBodyForceType is set appropriately

Definition at line 91 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by ContinuumMechanicsProblemDefinition< DIM >::EvaluateBodyForceFunction(), ContinuumMechanicsProblemDefinition< DIM >::GetBodyForce(), and ContinuumMechanicsProblemDefinition< DIM >::SetBodyForce().

template<unsigned DIM>
c_vector<double,DIM>(* ContinuumMechanicsProblemDefinition< DIM >::mpTractionBoundaryConditionFunction)(c_vector< double, DIM > &rX, double t) [protected]

The tractions as a function of space and time (only used if mTractionBoundaryConditionType is set appropriately)

Definition at line 111 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by ContinuumMechanicsProblemDefinition< DIM >::EvaluateTractionFunction(), and ContinuumMechanicsProblemDefinition< DIM >::SetTractionBoundaryConditions().

template<unsigned DIM>
QuadraticMesh<DIM>& ContinuumMechanicsProblemDefinition< DIM >::mrMesh [protected]
template<unsigned DIM>
TractionBoundaryConditionType ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType [protected]
template<unsigned DIM>
std::vector<BoundaryElement<DIM-1,DIM>*> ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements [protected]

The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:03:36 2011 for Chaste by  doxygen 1.6.3