ExplicitCardiacMechanicsSolver.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef EXPLICITCARDIACMECHANICSSOLVER_HPP_
00030 #define EXPLICITCARDIACMECHANICSSOLVER_HPP_
00031
00032 #include "AbstractCardiacMechanicsSolver.hpp"
00033 #include "AbstractCardiacMechanicsSolverInterface.hpp"
00034 #include "AbstractContractionModel.hpp"
00035
00036
00053 template<class ELASTICITY_SOLVER,unsigned DIM>
00054 class ExplicitCardiacMechanicsSolver : public AbstractCardiacMechanicsSolver<ELASTICITY_SOLVER,DIM>
00055 {
00056 friend class TestExplicitCardiacMechanicsSolver;
00057
00058 private:
00060 bool IsImplicitSolver()
00061 {
00062 return false;
00063 }
00064
00065
00078 void GetActiveTensionAndTensionDerivs(double currentFibreStretch,
00079 unsigned currentQuadPointGlobalIndex,
00080 bool assembleJacobian,
00081 double& rActiveTension,
00082 double& rDerivActiveTensionWrtLambda,
00083 double& rDerivActiveTensionWrtDLambdaDt);
00084
00090 void InitialiseContractionModels(ContractionModelName contractionModel);
00091
00092 public:
00101 ExplicitCardiacMechanicsSolver(ContractionModelName contractionModel,
00102 QuadraticMesh<DIM>& rQuadMesh,
00103 SolidMechanicsProblemDefinition<DIM>& rProblemDefinition,
00104 std::string outputDirectory);
00105
00106
00110 virtual ~ExplicitCardiacMechanicsSolver();
00111
00112
00124 void Solve(double time, double nextTime, double odeTimestep);
00125 };
00126
00127 #endif