ExplicitCardiacMechanicsSolver< DIM > Class Template Reference

#include <ExplicitCardiacMechanicsSolver.hpp>

Inheritance diagram for ExplicitCardiacMechanicsSolver< DIM >:

Inheritance graph
[legend]
Collaboration diagram for ExplicitCardiacMechanicsSolver< DIM >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ExplicitCardiacMechanicsSolver (ContractionModel contractionModel, QuadraticMesh< DIM > *pQuadMesh, std::string outputDirectory, std::vector< unsigned > &rFixedNodes, AbstractIncompressibleMaterialLaw< DIM > *pMaterialLaw=NULL)
virtual ~ExplicitCardiacMechanicsSolver ()
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)

Friends

class TestExplicitCardiacMechanicsSolver


Detailed Description

template<unsigned DIM>
class ExplicitCardiacMechanicsSolver< DIM >

Explicit cardiac mechanics solver for solving electromechanic problems where the contraction model is not stretch-rate-dependent (for those the implicit solver is needed).

The general explicit solution procedure is to do, each timestep: (0) [solve the electrics and interpolate Ca and voltage onto quad points (i) pass Ca and voltage to the contraction models (ii) pass the fibre stretch to the contraction models in case this is needed. (iii) integrate the contraction models in order to get the active tension (iv) solve for the deformation using this active tension.

Definition at line 49 of file ExplicitCardiacMechanicsSolver.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
ExplicitCardiacMechanicsSolver< DIM >::ExplicitCardiacMechanicsSolver ( ContractionModel  contractionModel,
QuadraticMesh< DIM > *  pQuadMesh,
std::string  outputDirectory,
std::vector< unsigned > &  rFixedNodes,
AbstractIncompressibleMaterialLaw< DIM > *  pMaterialLaw = NULL 
) [inline]

Constructor

Parameters:
contractionModel The contraction model.
pQuadMesh A pointer to the mesh.
outputDirectory The output directory, relative to TEST_OUTPUT
rFixedNodes The fixed nodes
pMaterialLaw The material law for the tissue. Defaults to NULL, in which case a default material law is used.

Definition at line 38 of file ExplicitCardiacMechanicsSolver.cpp.

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

template<unsigned DIM>
ExplicitCardiacMechanicsSolver< DIM >::~ExplicitCardiacMechanicsSolver (  )  [inline, virtual]


Member Function Documentation

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

This solver is an explicit solver (overloaded pure method)

Implements AbstractCardiacMechanicsSolver< DIM >.

Definition at line 55 of file ExplicitCardiacMechanicsSolver.hpp.

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

Get the active tension and other info at the given quadrature point. This is an explicit solver so just sets the active tension, it doesn't set the derivatives. It stores the stretch for the next timestep.

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. Unset in this explicit solver.
rDerivActiveTensionWrtDLambdaDt The returned dT_dLamDot, derivative of active tension wrt stretch rate. Unset in this explicit solver.

Implements AbstractCardiacMechanicsSolver< DIM >.

Definition at line 108 of file ExplicitCardiacMechanicsSolver.cpp.

References AbstractCardiacMechanicsSolver< DIM >::mContractionModelSystems, and AbstractCardiacMechanicsSolver< DIM >::mStretches.

template<unsigned DIM>
void ExplicitCardiacMechanicsSolver< 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 explicitly over the time range using the ODE timestep provided then the active tension used to solve for the deformation

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

Implements AbstractCardiacMechanicsSolver< DIM >.

Definition at line 129 of file ExplicitCardiacMechanicsSolver.cpp.

References NonlinearElasticitySolver< DIM >::AssembleSystem(), AbstractCardiacMechanicsSolver< DIM >::mContractionModelSystems, AbstractCardiacMechanicsSolver< DIM >::mCurrentTime, AbstractCardiacMechanicsSolver< DIM >::mNextTime, AbstractCardiacMechanicsSolver< DIM >::mOdeTimestep, AbstractCardiacMechanicsSolver< DIM >::mStretches, and AbstractNonlinearElasticitySolver< INCOMPRESSIBLE, DIM >::Solve().


The documentation for this class was generated from the following files:

Generated on Mon Apr 18 11:37:05 2011 for Chaste by  doxygen 1.5.5