CardiacNewtonSolver< SIZE, CELLTYPE > Class Template Reference

#include <CardiacNewtonSolver.hpp>

Collaboration diagram for CardiacNewtonSolver< SIZE, CELLTYPE >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void Solve (CELLTYPE &rCell, double time, double rCurrentGuess[SIZE])

Static Public Member Functions

static CardiacNewtonSolver
< SIZE, CELLTYPE > * 
Instance ()

Protected Member Functions

 CardiacNewtonSolver ()
 CardiacNewtonSolver (const CardiacNewtonSolver< SIZE, CELLTYPE > &)
CardiacNewtonSolver< SIZE,
CELLTYPE > & 
operator= (const CardiacNewtonSolver< SIZE, CELLTYPE > &)
void SolveLinearSystem ()

Private Attributes

c_vector< double, SIZE > mResidual
double mJacobian [SIZE][SIZE]
c_vector< double, SIZE > mUpdate

Detailed Description

template<unsigned SIZE, typename CELLTYPE>
class CardiacNewtonSolver< SIZE, CELLTYPE >

Specialised Newton solver for solving the nonlinear systems arising when simulating a cardiac cell using Backward Euler.

The class is templated by the size of the nonlinear system, and uses the singleton pattern to ensure only 1 solver for any given system size is created. This allows us to be both computationally and memory efficient.

It would be nice to have a test of this class directly, but you need a cardiac cell in order to test it. So all tests occur when testing particular cardiac cells, e.g. the LuoRudy1991BackwardEuler.

Definition at line 50 of file CardiacNewtonSolver.hpp.


Constructor & Destructor Documentation

template<unsigned SIZE, typename CELLTYPE>
CardiacNewtonSolver< SIZE, CELLTYPE >::CardiacNewtonSolver (  )  [inline, protected]

Singleton pattern - protected default constructor.

Definition at line 139 of file CardiacNewtonSolver.hpp.

template<unsigned SIZE, typename CELLTYPE>
CardiacNewtonSolver< SIZE, CELLTYPE >::CardiacNewtonSolver ( const CardiacNewtonSolver< SIZE, CELLTYPE > &   )  [protected]

Singleton pattern - protected copy constructor. Not implemented.


Member Function Documentation

template<unsigned SIZE, typename CELLTYPE>
static CardiacNewtonSolver<SIZE, CELLTYPE>* CardiacNewtonSolver< SIZE, CELLTYPE >::Instance (  )  [inline, static]

Call this method to obtain a solver instance.

Returns:
a single instance of the class

Definition at line 42 of file CardiacNewtonSolver.hpp.

template<unsigned SIZE, typename CELLTYPE>
CardiacNewtonSolver<SIZE, CELLTYPE>& CardiacNewtonSolver< SIZE, CELLTYPE >::operator= ( const CardiacNewtonSolver< SIZE, CELLTYPE > &   )  [protected]

Singleton pattern - protected assignment operator. Not implemented.

template<unsigned SIZE, typename CELLTYPE>
void CardiacNewtonSolver< SIZE, CELLTYPE >::Solve ( CELLTYPE &  rCell,
double  time,
double  rCurrentGuess[SIZE] 
) [inline]

Use Newton's method to solve the given cell for the next timestep.

Parameters:
rCell the cell to solve
time the current time
rCurrentGuess the current guess at a solution. Will be updated on exit.

Definition at line 55 of file CardiacNewtonSolver.hpp.

template<unsigned SIZE, typename CELLTYPE>
void CardiacNewtonSolver< SIZE, CELLTYPE >::SolveLinearSystem (  )  [inline, protected]

Solve a linear system to calculate the Newton update step

This is solving Jacbian . update = residual for update given values of the Jacobian matrix and residual

The implementation does Gaussian elimination with no pivotting and no underflow checking

Definition at line 155 of file CardiacNewtonSolver.hpp.


Member Data Documentation

template<unsigned SIZE, typename CELLTYPE>
double CardiacNewtonSolver< SIZE, CELLTYPE >::mJacobian[SIZE][SIZE] [private]

Working memory : Jacobian matrix

Definition at line 184 of file CardiacNewtonSolver.hpp.

template<unsigned SIZE, typename CELLTYPE>
c_vector<double, SIZE> CardiacNewtonSolver< SIZE, CELLTYPE >::mResidual [private]

Working memory : residual vector

Definition at line 182 of file CardiacNewtonSolver.hpp.

template<unsigned SIZE, typename CELLTYPE>
c_vector<double, SIZE> CardiacNewtonSolver< SIZE, CELLTYPE >::mUpdate [private]

Working memory : update vector

Definition at line 186 of file CardiacNewtonSolver.hpp.


The documentation for this class was generated from the following file:
Generated on Thu Dec 22 13:03:18 2011 for Chaste by  doxygen 1.6.3