36 #include "ExplicitCardiacMechanicsSolver.hpp"
38 template<
class ELASTICITY_SOLVER,
unsigned DIM>
41 std::string outputDirectory)
49 template<
class ELASTICITY_SOLVER,
unsigned DIM>
54 template<
class ELASTICITY_SOLVER,
unsigned DIM>
56 unsigned currentQuadPointGlobalIndex,
57 bool assembleJacobian,
58 double& rActiveTension,
59 double& rDerivActiveTensionWrtLambda,
60 double& rDerivActiveTensionWrtDLambdaDt)
64 assert(this->mMapIterator->first==currentQuadPointGlobalIndex);
72 rDerivActiveTensionWrtLambda = 0.0;
73 rDerivActiveTensionWrtDLambdaDt = 0.0;
77 r_data_at_quad_point.
Stretch = currentFibreStretch;
81 if (this->mMapIterator==this->mQuadPointToDataAtQuadPointMap.end())
83 this->mMapIterator = this->mQuadPointToDataAtQuadPointMap.begin();
87 template<
class ELASTICITY_SOLVER,
unsigned DIM>
90 assert(time < nextTime);
91 this->mCurrentTime = time;
92 this->mNextTime = nextTime;
93 this->mOdeTimestep = odeTimestep;
97 this->AssembleSystem(
true,
false);
100 for (std::map<unsigned,DataAtQuadraturePoint>::iterator iter = this->mQuadPointToDataAtQuadPointMap.begin();
101 iter != this->mQuadPointToDataAtQuadPointMap.end();
105 double stretch = iter->second.Stretch;
107 p_contraction_model->
RunAndUpdate(time, nextTime, odeTimestep);
111 ELASTICITY_SOLVER::Solve();
void GetActiveTensionAndTensionDerivs(double currentFibreStretch, unsigned currentQuadPointGlobalIndex, bool assembleJacobian, double &rActiveTension, double &rDerivActiveTensionWrtLambda, double &rDerivActiveTensionWrtDLambdaDt)
virtual void SetStretchAndStretchRate(double stretch, double stretchRate)=0
virtual double GetActiveTension()=0
void Solve(double time, double nextTime, double odeTimestep)
AbstractContractionModel * ContractionModel
virtual void RunAndUpdate(double startTime, double endTime, double timeStep)=0
virtual ~ExplicitCardiacMechanicsSolver()
ExplicitCardiacMechanicsSolver(QuadraticMesh< DIM > &rQuadMesh, ElectroMechanicsProblemDefinition< DIM > &rProblemDefinition, std::string outputDirectory)