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 (AbstractTetrahedralMesh< DIM, 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)
void SetApplyNormalPressureOnDeformedSurface (std::vector< BoundaryElement< DIM-1, DIM > * > &rTractionBoundaryElements, double(*pFunction)(double t))
std::vector< BoundaryElement
< DIM-1, DIM > * > & 
rGetTractionBoundaryElements ()
std::vector< c_vector< double,
DIM > > & 
rGetElementwiseTractions ()
double GetNormalPressure ()
void SetPressureScaling (double scaleFactor)
c_vector< double, DIM > EvaluateTractionFunction (c_vector< double, DIM > &rX, double t)
double EvaluateNormalPressureFunction (double t)
virtual void Validate ()
void SetVerboseDuringSolve (bool verboseDuringSolve=true)
bool GetVerboseDuringSolve ()

Static Public Attributes

static const double FREE = std::numeric_limits<double>::max()

Protected Attributes

AbstractTetrahedralMesh< DIM,
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
double mOriginalNormalPressure
c_vector< double, DIM >(* mpTractionBoundaryConditionFunction )(c_vector< double, DIM > &rX, double t)
double(* mpNormalPressureFunction )(double t)
std::vector< unsignedmDirichletNodes
std::vector< c_vector< double,
DIM > > 
mDirichletNodeValues
bool mVerboseDuringSolve

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 74 of file ContinuumMechanicsProblemDefinition.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
ContinuumMechanicsProblemDefinition< DIM >::ContinuumMechanicsProblemDefinition ( AbstractTetrahedralMesh< DIM, 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 47 of file ContinuumMechanicsProblemDefinition.cpp.

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

Destructor

Definition at line 153 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]
Returns:
the body force function (error if GetBodyForceType()!=FUNCTIONAL_BODY_FORCE)
Parameters:
rX spatial location
t current time

Definition at line 99 of file ContinuumMechanicsProblemDefinition.cpp.

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

template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::EvaluateNormalPressureFunction ( double  t  )  [inline]
Returns:
the pressure boundary condition function (error if GetTractionBoundaryConditionType()!=FUNCTIONAL_PRESSURE_ON_DEFORMED)
Parameters:
t current time

Definition at line 233 of file ContinuumMechanicsProblemDefinition.cpp.

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

template<unsigned DIM>
c_vector< double, DIM > ContinuumMechanicsProblemDefinition< DIM >::EvaluateTractionFunction ( c_vector< double, DIM > &  rX,
double  t 
) [inline]
Returns:
the traction boundary condition function (error if GetTractionBoundaryConditionType()!=FUNCTIONAL_TRACTION)
Parameters:
rX spatial location
t current time

Definition at line 226 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]
Returns:
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 106 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]
Returns:
the body force type

Definition at line 86 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]
Returns:
the density

Definition at line 65 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDensity.

template<unsigned DIM>
double ContinuumMechanicsProblemDefinition< DIM >::GetNormalPressure (  )  [inline]
Returns:
the pressure for the boundary elements (corresponding to vector returned by rGetTractionBoundaryElements()) (error if GetTractionBoundaryConditionType()!=PRESSURE_ON_DEFORMED)

Definition at line 219 of file ContinuumMechanicsProblemDefinition.cpp.

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

template<unsigned DIM>
TractionBoundaryConditionType ContinuumMechanicsProblemDefinition< DIM >::GetTractionBoundaryConditionType (  )  [inline]
Returns:
the traction (Neumann) boundary condition type

Definition at line 125 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType.

template<unsigned DIM>
bool ContinuumMechanicsProblemDefinition< DIM >::GetVerboseDuringSolve (  )  [inline]
Returns:
whether the solver should be verbose or not

Definition at line 342 of file ContinuumMechanicsProblemDefinition.hpp.

References ContinuumMechanicsProblemDefinition< DIM >::mVerboseDuringSolve.

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

Definition at line 192 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodes.

template<unsigned DIM>
std::vector< c_vector< double, DIM > > & ContinuumMechanicsProblemDefinition< DIM >::rGetDirichletNodeValues (  )  [inline]
Returns:
the Dirichlet node values.

Definition at line 198 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDirichletNodeValues.

template<unsigned DIM>
std::vector< c_vector< double, DIM > > & ContinuumMechanicsProblemDefinition< DIM >::rGetElementwiseTractions (  )  [inline]
Returns:
the element-wise tractions vector (corresponding to vector returned by rGetTractionBoundaryElements()) (error if GetTractionBoundaryConditionType()!=ELEMENTWISE_TRACTION)

Definition at line 211 of file ContinuumMechanicsProblemDefinition.cpp.

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

template<unsigned DIM>
std::vector< BoundaryElement< DIM-1, DIM > * > & ContinuumMechanicsProblemDefinition< DIM >::rGetTractionBoundaryElements (  )  [inline]
Returns:
the vector of traction boundary elements

Definition at line 204 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryElements.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetApplyNormalPressureOnDeformedSurface ( std::vector< BoundaryElement< DIM-1, DIM > * > &  rTractionBoundaryElements,
double(*)(double t)  pFunction 
) [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, and here the pressure is specified in FUNCTIONAL FORM

Parameters:
rTractionBoundaryElements The boundary elements
pFunction the pressure function (a function of time, returning a double)

Definition at line 163 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mpNormalPressureFunction, ContinuumMechanicsProblemDefinition< DIM >::mTractionBoundaryConditionType, and 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 152 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mNormalPressure, ContinuumMechanicsProblemDefinition< DIM >::mOriginalNormalPressure, 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 78 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 71 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 58 of file ContinuumMechanicsProblemDefinition.cpp.

References ContinuumMechanicsProblemDefinition< DIM >::mDensity.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetPressureScaling ( double  scaleFactor  )  [inline]

Set the value that will be returned by GetNormalPressure() to be a fraction of its full value.

Note: you don't have to take into account previous calls when calling this. SetPressureScaling(0.1); SetPressureScaling(1); will lead to the original pressure being used

(Error if GetTractionBoundaryConditionType()!=PRESSURE_ON_DEFORMED)

Parameters:
scaleFactor scale factor

Definition at line 240 of file ContinuumMechanicsProblemDefinition.cpp.

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

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 142 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 131 of file ContinuumMechanicsProblemDefinition.cpp.

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

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetVerboseDuringSolve ( bool  verboseDuringSolve = true  )  [inline]

Tell the solver to be verbose (print details on how the solve is progressing), or not.

Parameters:
verboseDuringSolve be verbose or not.

Definition at line 334 of file ContinuumMechanicsProblemDefinition.hpp.

References ContinuumMechanicsProblemDefinition< DIM >::mVerboseDuringSolve.

template<unsigned DIM>
void ContinuumMechanicsProblemDefinition< DIM >::SetZeroDirichletNodes ( std::vector< unsigned > &  rZeroDirichletNodes  )  [inline]
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 247 of file ContinuumMechanicsProblemDefinition.cpp.

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


Member Data Documentation

template<unsigned DIM>
const double ContinuumMechanicsProblemDefinition< DIM >::FREE = std::numeric_limits<double>::max() [inline, static]

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

Definition at line 79 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 112 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 116 of file ContinuumMechanicsProblemDefinition.hpp.

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

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

If the user asks this class to increment the pressure, the variable mNormalPressure will be altered depending on which increment it is. Here we store the original (full) pressure.

Definition at line 121 of file ContinuumMechanicsProblemDefinition.hpp.

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

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

The normal pressure as a function if time (only used if mTractionBoundaryConditionType is set appropriately)

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

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)

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

template<unsigned DIM>
AbstractTetrahedralMesh<DIM,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]
template<unsigned DIM>
bool ContinuumMechanicsProblemDefinition< DIM >::mVerboseDuringSolve [protected]

Whether the solver will be verbose or not. See dox for Set method below

Definition at line 143 of file ContinuumMechanicsProblemDefinition.hpp.

Referenced by ContinuumMechanicsProblemDefinition< DIM >::GetVerboseDuringSolve(), and ContinuumMechanicsProblemDefinition< DIM >::SetVerboseDuringSolve().


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

Generated by  doxygen 1.6.2