38 #include "ContinuumMechanicsProblemDefinition.hpp" 39 #include "AbstractIncompressibleMaterialLaw.hpp" 40 #include "AbstractCompressibleMaterialLaw.hpp" 43 template<
unsigned DIM>
46 template<
unsigned DIM>
50 mBodyForceType(CONSTANT_BODY_FORCE),
51 mConstantBodyForce(zero_vector<
double>(DIM)),
52 mTractionBoundaryConditionType(NO_TRACTIONS),
53 mVerboseDuringSolve(false)
57 template<
unsigned DIM>
64 template<
unsigned DIM>
70 template<
unsigned DIM>
77 template<
unsigned DIM>
84 template<
unsigned DIM>
90 template<
unsigned DIM>
97 template<
unsigned DIM>
104 template<
unsigned DIM>
109 case CONSTANT_BODY_FORCE:
113 case FUNCTIONAL_BODY_FORCE:
122 template<
unsigned DIM>
128 template<
unsigned DIM>
130 std::vector<c_vector<double,DIM> >& rElementwiseTractions)
133 assert(rTractionBoundaryElements.size()==rElementwiseTractions.size());
139 template<
unsigned DIM>
141 c_vector<double,DIM> (*pFunction)(c_vector<double,DIM>& rX,
double t))
148 template<
unsigned DIM>
150 double normalPressure)
159 template<
unsigned DIM>
161 double (*pFunction)(
double t))
168 template<
unsigned DIM>
185 template<
unsigned DIM>
191 template<
unsigned DIM>
197 template<
unsigned DIM>
203 template<
unsigned DIM>
210 template<
unsigned DIM>
217 template<
unsigned DIM>
224 template<
unsigned DIM>
231 template<
unsigned DIM>
238 template<
unsigned DIM>
243 EXCEPTION(
"No Dirichlet boundary conditions (eg fixed displacement or fixed flow) have been set");
std::vector< BoundaryElement< DIM-1, DIM > * > & rGetTractionBoundaryElements()
std::vector< unsigned > & rGetDirichletNodes()
std::vector< unsigned > mDirichletNodes
ContinuumMechanicsProblemDefinition(AbstractTetrahedralMesh< DIM, DIM > &rMesh)
void SetTractionBoundaryConditions(std::vector< BoundaryElement< DIM-1, DIM > * > &rTractionBoundaryElements, std::vector< c_vector< double, DIM > > &rElementwiseTractions)
c_vector< double, DIM > EvaluateTractionFunction(c_vector< double, DIM > &rX, double t)
#define EXCEPTION(message)
BodyForceType mBodyForceType
TractionBoundaryConditionType GetTractionBoundaryConditionType()
c_vector< double, DIM > GetConstantBodyForce()
virtual unsigned GetNumNodes() const
void SetZeroDirichletNodes(std::vector< unsigned > &rZeroDirichletNodes)
std::vector< c_vector< double, DIM > > & rGetElementwiseTractions()
BodyForceType GetBodyForceType()
c_vector< double, DIM >(* mpBodyForceFunction)(c_vector< double, DIM > &rX, double t)
std::vector< c_vector< double, DIM > > mDirichletNodeValues
double mOriginalNormalPressure
std::vector< c_vector< double, DIM > > mElementwiseTractions
c_vector< double, DIM > GetBodyForce(c_vector< double, DIM > &rX, double t=0.0)
AbstractTetrahedralMesh< DIM, DIM > & mrMesh
TractionBoundaryConditionType mTractionBoundaryConditionType
void SetDensity(double density)
void SetBodyForce(c_vector< double, DIM > bodyForce)
std::vector< c_vector< double, DIM > > & rGetDirichletNodeValues()
void SetPressureScaling(double scaleFactor)
c_vector< double, DIM > mConstantBodyForce
std::vector< BoundaryElement< DIM-1, DIM > * > mTractionBoundaryElements
void SetApplyNormalPressureOnDeformedSurface(std::vector< BoundaryElement< DIM-1, DIM > * > &rTractionBoundaryElements, double normalPressure)
double(* mpNormalPressureFunction)(double t)
double GetNormalPressure()
c_vector< double, DIM >(* mpTractionBoundaryConditionFunction)(c_vector< double, DIM > &rX, double t)
double EvaluateNormalPressureFunction(double t)
c_vector< double, DIM > EvaluateBodyForceFunction(c_vector< double, DIM > &rX, double t)