36 #ifndef CONTINUUMMECHANICSPROBLEMDEFINITION_HPP_
37 #define CONTINUUMMECHANICSPROBLEMDEFINITION_HPP_
39 #include "AbstractTetrahedralMesh.hpp"
41 #include "AbstractIncompressibleMaterialLaw.hpp"
42 #include "AbstractCompressibleMaterialLaw.hpp"
43 #include "CompressibilityType.hpp"
49 typedef enum BodyForceType_
58 typedef enum TractionBoundaryConditionType_
64 FUNCTIONAL_PRESSURE_ON_DEFORMED
65 } TractionBoundaryConditionType;
73 template<
unsigned DIM>
99 c_vector<double,DIM> (*mpBodyForceFunction)(c_vector<double,DIM>& rX,
double t);
124 c_vector<double,DIM> (*mpTractionBoundaryConditionFunction)(c_vector<double,DIM>& rX,
double t);
197 void SetBodyForce(c_vector<double,DIM> (*pFunction)(c_vector<double,DIM>& rX,
double t));
207 c_vector<double,DIM>
GetBodyForce(c_vector<double,DIM>& rX,
double t = 0.0);
239 std::vector<c_vector<double,DIM> >& rElementwiseTractions);
249 c_vector<double,DIM> (*pFunction)(c_vector<double,DIM>& rX,
double t));
259 double normalPressure);
272 double (*pFunction)(
double t));
350 #endif // CONTINUUMMECHANICSPROBLEMDEFINITION_HPP_
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)
BodyForceType mBodyForceType
TractionBoundaryConditionType GetTractionBoundaryConditionType()
c_vector< double, DIM > GetConstantBodyForce()
void SetZeroDirichletNodes(std::vector< unsigned > &rZeroDirichletNodes)
std::vector< c_vector< double, DIM > > & rGetElementwiseTractions()
bool GetVerboseDuringSolve()
BodyForceType GetBodyForceType()
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 SetVerboseDuringSolve(bool verboseDuringSolve=true)
void SetDensity(double density)
void SetBodyForce(c_vector< double, DIM > bodyForce)
std::vector< c_vector< double, DIM > > & rGetDirichletNodeValues()
double(* mpNormalPressureFunction)(double t)
void SetPressureScaling(double scaleFactor)
c_vector< double, DIM > mConstantBodyForce
std::vector< BoundaryElement< DIM-1, DIM > * > mTractionBoundaryElements
virtual ~ContinuumMechanicsProblemDefinition()
void SetApplyNormalPressureOnDeformedSurface(std::vector< BoundaryElement< DIM-1, DIM > * > &rTractionBoundaryElements, double normalPressure)
double GetNormalPressure()
double EvaluateNormalPressureFunction(double t)
c_vector< double, DIM > EvaluateBodyForceFunction(c_vector< double, DIM > &rX, double t)