ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM > Class Template Reference

#include <ImplicitCardiacMechanicsSolver.hpp>

Inherits AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >.

Collaboration diagram for ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ImplicitCardiacMechanicsSolver (ContractionModelName contractionModel, QuadraticMesh< DIM > &rQuadMesh, SolidMechanicsProblemDefinition< DIM > &rProblemDefinition, std::string outputDirectory)
virtual ~ImplicitCardiacMechanicsSolver ()
std::vector< double > & rGetFibreStretches ()
void Solve (double time, double nextTime, double odeTimestep)

Private Member Functions

bool IsImplicitSolver ()
void GetActiveTensionAndTensionDerivs (double currentFibreStretch, unsigned currentQuadPointGlobalIndex, bool assembleJacobian, double &rActiveTension, double &rDerivActiveTensionWrtLambda, double &rDerivActiveTensionWrtDLambdaDt)
void InitialiseContractionModels (ContractionModelName contractionModel)

Private Attributes

std::vector< doublemStretchesLastTimeStep

Friends

class TestImplicitCardiacMechanicsSolver

Detailed Description

template<class ELASTICITY_SOLVER, unsigned DIM>
class ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >

Implicit Cardiac Mechanics Solver

The first template parameter should be either IncompressibleNonlinearElasticitySolver or CompressibleNonlinearElasticityAssembler; this will be the class that this class ultimately inherits from.

Solves cardiac mechanics implicitly (together with the contraction models for determining the active tension), taking in the intracellular calcium concentration. See CardiacElectroMechanicsProblem documentation for more detail.

Definition at line 52 of file ImplicitCardiacMechanicsSolver.hpp.


Constructor & Destructor Documentation

template<class ELASTICITY_SOLVER , unsigned DIM>
ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::ImplicitCardiacMechanicsSolver ( ContractionModelName  contractionModel,
QuadraticMesh< DIM > &  rQuadMesh,
SolidMechanicsProblemDefinition< DIM > &  rProblemDefinition,
std::string  outputDirectory 
) [inline]

Constructor

Parameters:
contractionModel The contraction model.
rQuadMesh A reference to the mesh.
rProblemDefinition Object defining body force and boundary conditions
outputDirectory The output directory, relative to TEST_OUTPUT

Definition at line 35 of file ImplicitCardiacMechanicsSolver.cpp.

References ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::InitialiseContractionModels(), ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretchesLastTimeStep, and AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mTotalQuadPoints.

template<class ELASTICITY_SOLVER , unsigned DIM>
ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::~ImplicitCardiacMechanicsSolver (  )  [inline, virtual]

Member Function Documentation

template<class ELASTICITY_SOLVER , unsigned DIM>
void ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::GetActiveTensionAndTensionDerivs ( double  currentFibreStretch,
unsigned  currentQuadPointGlobalIndex,
bool  assembleJacobian,
double rActiveTension,
double rDerivActiveTensionWrtLambda,
double rDerivActiveTensionWrtDLambdaDt 
) [inline, private, virtual]

A method called by AbstractCardiacMechanicsSolver::AssembleOnElement(), providing the active tension (and other info) at a particular quadrature point. This version uses C to determine the current stretch and stretch rate, and integrates the contraction model ODEs to determine the active tension, and derivatives of the active tension with respect to stretch and stretch rate.

Parameters:
currentFibreStretch The stretch in the fibre direction
currentQuadPointGlobalIndex Quadrature point integrand currently being evaluated at in AssembleOnElement.
assembleJacobian A bool stating whether to assemble the Jacobian matrix.
rActiveTension The returned active tension
rDerivActiveTensionWrtLambda The returned dT_dLam, derivative of active tension wrt stretch
rDerivActiveTensionWrtDLambdaDt The returned dT_dLamDot, derivative of active tension wrt stretch rate

Implements AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >.

Definition at line 141 of file ImplicitCardiacMechanicsSolver.cpp.

References EXCEPTION, AbstractContractionModel::GetNextActiveTension(), AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mContractionModelSystems, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mCurrentTime, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mNextTime, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mOdeTimestep, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretches, ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretchesLastTimeStep, AbstractContractionModel::RunDoNotUpdate(), and AbstractContractionModel::SetStretchAndStretchRate().

template<class ELASTICITY_SOLVER , unsigned DIM>
void ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::InitialiseContractionModels ( ContractionModelName  contractionModel  )  [inline, private]

Initialise contraction models for each quadrature point

Parameters:
contractionModel The name of the contraction model (from the enumeration ContractionModel defined in AbstractContactionModel)

Definition at line 52 of file ImplicitCardiacMechanicsSolver.cpp.

References EXCEPTION, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mContractionModelSystems, and AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mTotalQuadPoints.

Referenced by ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::ImplicitCardiacMechanicsSolver().

template<class ELASTICITY_SOLVER, unsigned DIM>
bool ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::IsImplicitSolver (  )  [inline, private, virtual]

The current stretch ratio (in the fibre direction). Note the indexing: the i-th entry corresponds to the i-th global quad point, when looping over elements and then quad points This solver is an implicit solver (overloaded pure method)

Implements AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >.

Definition at line 70 of file ImplicitCardiacMechanicsSolver.hpp.

template<class ELASTICITY_SOLVER , unsigned DIM>
std::vector< double > & ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::rGetFibreStretches (  )  [inline]

Get lambda (the stretch ratio). NOTE: the i-th entry of this vector is assumed to be the i-th quad point obtained by looping over cells in the obvious way and then looping over quad points. These quad points, in the same order, can be obtained by using the QuadraturePointsGroup class.

Definition at line 103 of file ImplicitCardiacMechanicsSolver.cpp.

References AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretches.

template<class ELASTICITY_SOLVER , unsigned DIM>
void ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::Solve ( double  time,
double  nextTime,
double  odeTimestep 
) [inline, virtual]

Solve for the deformation using quasi-static nonlinear elasticity. (not dynamic nonlinear elasticity, despite the times taken in - just ONE deformation is solved for. The cell models are integrated implicitly over the time range using the ODE timestep provided, as part of the solve, and updated at the end once the solution has been found, as is lambda.

Parameters:
time the current time
nextTime the next time
odeTimestep the ODE timestep

Implements AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >.

Definition at line 110 of file ImplicitCardiacMechanicsSolver.cpp.

References AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mContractionModelSystems, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mCurrentTime, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mNextTime, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mOdeTimestep, AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretches, and ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretchesLastTimeStep.


Member Data Documentation

template<class ELASTICITY_SOLVER, unsigned DIM>
std::vector<double> ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::mStretchesLastTimeStep [private]

The stretch in the fibre direction at the last timestep, in order to compute the stretch rate. Note the indexing: the i-th entry corresponds to the i-th global quad point, when looping over elements and then quad points

Definition at line 62 of file ImplicitCardiacMechanicsSolver.hpp.

Referenced by ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::GetActiveTensionAndTensionDerivs(), ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::ImplicitCardiacMechanicsSolver(), and ImplicitCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::Solve().


The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:05:38 2011 for Chaste by  doxygen 1.6.3