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 "AbstractContractionModel.hpp"
00034
00035
00048 template<unsigned DIM>
00049 class ExplicitCardiacMechanicsSolver : public AbstractCardiacMechanicsSolver<DIM>
00050 {
00051 friend class TestExplicitCardiacMechanicsSolver;
00052
00053 private:
00055 bool IsImplicitSolver()
00056 {
00057 return false;
00058 }
00059
00060
00061
00062
00063
00076 void GetActiveTensionAndTensionDerivs(double currentFibreStretch,
00077 unsigned currentQuadPointGlobalIndex,
00078 bool assembleJacobian,
00079 double& rActiveTension,
00080 double& rDerivActiveTensionWrtLambda,
00081 double& rDerivActiveTensionWrtDLambdaDt);
00082
00083 public:
00094 ExplicitCardiacMechanicsSolver(ContractionModel contractionModel,
00095 QuadraticMesh<DIM>* pQuadMesh,
00096 std::string outputDirectory,
00097 std::vector<unsigned>& rFixedNodes,
00098 AbstractIncompressibleMaterialLaw<DIM>* pMaterialLaw = NULL);
00099
00103 virtual ~ExplicitCardiacMechanicsSolver();
00104
00105
00117 void Solve(double time, double nextTime, double odeTimestep);
00118 };
00119
00120 #endif