AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM > Class Template Reference

#include <AbstractNonlinearElasticitySolver.hpp>

Inheritance diagram for AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >:

Inheritance graph
[legend]
Collaboration diagram for AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 AbstractNonlinearElasticitySolver (QuadraticMesh< DIM > *pQuadMesh, c_vector< double, DIM > bodyForce, double density, std::string outputDirectory, std::vector< unsigned > &fixedNodes)
virtual ~AbstractNonlinearElasticitySolver ()
void Solve (double tol=-1.0, unsigned maxNumNewtonIterations=INT_MAX, bool quitIfNoConvergence=true)
void WriteCurrentDeformation (std::string fileName, int counterToAppend=-1)
unsigned GetNumNewtonIterations ()
void SetFunctionalBodyForce (c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &X, double t))
void SetWriteOutput (bool writeOutput=true)
void SetWriteOutputEachNewtonIteration (bool writeOutputEachNewtonIteration=true)
void SetKspAbsoluteTolerance (double kspAbsoluteTolerance)
std::vector< double > & rGetCurrentSolution ()
void SetSurfaceTractionBoundaryConditions (std::vector< BoundaryElement< DIM-1, DIM > * > &rBoundaryElements, std::vector< c_vector< double, DIM > > &rSurfaceTractions)
void SetFunctionalTractionBoundaryCondition (std::vector< BoundaryElement< DIM-1, DIM > * > rBoundaryElements, c_vector< double, DIM >(*pFunction)(c_vector< double, DIM > &X, double t))
std::vector< c_vector< double,
DIM > > & 
rGetDeformedPosition ()
void SetCurrentTime (double time)
void CreateCmguiOutput ()

Protected Member Functions

virtual void AssembleSystem (bool assembleResidual, bool assembleJacobian)=0
void Initialise (std::vector< c_vector< double, DIM > > *pFixedNodeLocations)
void AllocateMatrixMemory ()
void ApplyBoundaryConditions (bool applyToMatrix)
double ComputeResidualAndGetNorm (bool allowException)
double CalculateResidualNorm ()
void VectorSum (std::vector< double > &rX, ReplicatableVector &rY, double a, std::vector< double > &rZ)
void PrintLineSearchResult (double s, double residNorm)
double TakeNewtonStep ()
double UpdateSolutionUsingLineSearch (Vec solution)
virtual void PostNewtonStep (unsigned counter, double normResidual)

Protected Attributes

QuadraticMesh< DIM > * mpQuadMesh
std::vector< BoundaryElement
< DIM-1, DIM > * > 
mBoundaryElements
GaussianQuadratureRule< DIM > * mpQuadratureRule
GaussianQuadratureRule< DIM-1 > * mpBoundaryQuadratureRule
double mKspAbsoluteTol
unsigned mNumDofs
LinearSystemmpLinearSystem
LinearSystemmpPreconditionMatrixLinearSystem
c_vector< double, DIM > mBodyForce
double mDensity
std::vector< unsigned > mFixedNodes
std::vector< c_vector< double,
DIM > > 
mFixedNodeDisplacements
bool mWriteOutput
std::string mOutputDirectory
OutputFileHandlermpOutputFileHandler
bool mWriteOutputEachNewtonIteration
std::vector< double > mCurrentSolution
FourthOrderTensor< DIM, DIM,
DIM, DIM > 
dTdE
unsigned mNumNewtonIterations
std::vector< c_vector< double,
DIM > > 
mDeformedPosition
std::vector< c_vector< double,
DIM > > 
mSurfaceTractions
c_vector< double, DIM >(* mpBodyForceFunction )(c_vector< double, DIM > &X, double t)
c_vector< double, DIM >(* mpTractionBoundaryConditionFunction )(c_vector< double, DIM > &X, double t)
bool mUsingBodyForceFunction
bool mUsingTractionBoundaryConditionFunction
double mCurrentTime

Static Protected Attributes

static double MAX_NEWTON_ABS_TOL = 1e-7
static double MIN_NEWTON_ABS_TOL = 1e-10
static double NEWTON_REL_TOL = 1e-4


Detailed Description

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
class AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >

Abstract nonlinear elasticity solver.

Definition at line 73 of file AbstractNonlinearElasticitySolver.hpp.


Constructor & Destructor Documentation

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::AbstractNonlinearElasticitySolver ( QuadraticMesh< DIM > *  pQuadMesh,
c_vector< double, DIM >  bodyForce,
double  density,
std::string  outputDirectory,
std::vector< unsigned > &  fixedNodes 
) [inline]

Constructor.

Parameters:
pQuadMesh the quadratic mesh
bodyForce Body force density (for example, acceleration due to gravity)
density density
outputDirectory output directory
fixedNodes std::vector of nodes which have a dirichlet boundary condition imposed on them

Definition at line 1001 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mNumDofs, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mOutputDirectory, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpOutputFileHandler, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpQuadMesh, and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mWriteOutput.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::~AbstractNonlinearElasticitySolver (  )  [inline, virtual]


Member Function Documentation

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
virtual void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::AssembleSystem ( bool  assembleResidual,
bool  assembleJacobian 
) [protected, pure virtual]

Assemble the residual vector (using the current solution stored in mCurrentSolution, output going to mpLinearSystem->rGetRhsVector), or Jacobian matrix (using the current solution stored in mCurrentSolution, output going to mpLinearSystem->rGetLhsMatrix). Must be overridden in concrete derived classes.

Parameters:
assembleResidual A bool stating whether to assemble the residual vector.
assembleJacobian A bool stating whether to assemble the Jacobian matrix.

Implemented in CompressibleNonlinearElasticitySolver< DIM >, and NonlinearElasticitySolver< DIM >.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::ComputeResidualAndGetNorm(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::TakeNewtonStep().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Initialise ( std::vector< c_vector< double, DIM > > *  pFixedNodeLocations  )  [inline, protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::AllocateMatrixMemory (  )  [inline, protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::ApplyBoundaryConditions ( bool  applyToMatrix  )  [inline, protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::ComputeResidualAndGetNorm ( bool  allowException  )  [inline, protected]

Set up the residual vector (using the current solution), and get its scaled norm (Calculate |r|_2 / length(r), where r is residual vector)

Parameters:
allowException Sometimes the current solution solution will be such that the residual vector cannot be computed, as (say) the material law will throw an exception as the strains are too large. If this bool is set to true, the exception will be caught, and DBL_MAX returned as the residual norm

Definition at line 647 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::AssembleSystem(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::CalculateResidualNorm().

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::UpdateSolutionUsingLineSearch().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::CalculateResidualNorm (  )  [inline, protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::VectorSum ( std::vector< double > &  rX,
ReplicatableVector rY,
double  a,
std::vector< double > &  rZ 
) [inline, protected]

Simple helper function, computes Z = X + aY, where X and Z are std::vectors and Y a ReplicatableVector

Parameters:
rX X
rY Y (replicatable vector)
a a
rZ Z the returned vector

Definition at line 682 of file AbstractNonlinearElasticitySolver.hpp.

References ReplicatableVector::GetSize().

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::UpdateSolutionUsingLineSearch().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::PrintLineSearchResult ( double  s,
double  residNorm 
) [inline, protected]

Print to std::cout the residual norm for this s, ie ||f(x+su)|| where f is the residual vector, x the current solution and u the update vector

Parameters:
s s
residNorm residual norm.

Definition at line 841 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::UpdateSolutionUsingLineSearch().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::TakeNewtonStep (  )  [inline, protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::UpdateSolutionUsingLineSearch ( Vec  solution  )  [inline, protected]

Using the update vector (of Newton's method), choose s such that ||f(x+su)|| is most decreased, where f is the residual vector, x the current solution (mCurrentSolution) and u the update vector. This checks s=1 first (most likely to be the current solution, then 0.9, 0.8.. until ||f|| starts increasing.

Parameters:
solution The solution of the linear solve in newton's method, ie the update vector u.

Definition at line 849 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::CalculateResidualNorm(), AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::ComputeResidualAndGetNorm(), AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mCurrentSolution, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::PrintLineSearchResult(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::VectorSum().

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::TakeNewtonStep().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::PostNewtonStep ( unsigned  counter,
double  normResidual 
) [inline, protected, virtual]

This function may be overloaded by subclasses. It is called after each Newton iteration.

Parameters:
counter current newton iteration number
normResidual norm of the residual

Definition at line 995 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve ( double  tol = -1.0,
unsigned  maxNumNewtonIterations = INT_MAX,
bool  quitIfNoConvergence = true 
) [inline]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::WriteCurrentDeformation ( std::string  fileName,
int  counterToAppend = -1 
) [inline]

Write the current deformation of the nodes.

Parameters:
fileName (stem)
counterToAppend append a counter to the file name
For example: WriteCurrentDeformation("solution") --> file called "solution.nodes" WriteCurrentDeformation("solution",3) --> file called "solution_3.nodes"

Definition at line 1145 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpOutputFileHandler, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mWriteOutput, OutputFileHandler::OpenOutputFile(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::rGetDeformedPosition().

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
unsigned AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::GetNumNewtonIterations (  )  [inline]

Get number of Newton iterations taken in last solve.

Definition at line 1177 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mNumNewtonIterations.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalBodyForce ( c_vector< double, DIM >(*)(c_vector< double, DIM > &X, double t)  pFunction  )  [inline]

Set a function which gives body force as a function of X (undeformed position) Whatever body force was provided in the constructor will now be ignored.

Parameters:
pFunction the function, which should be a function of space and time Note that SetCurrentTime() should be called each timestep if the force changes with time

Definition at line 1184 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpBodyForceFunction, and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mUsingBodyForceFunction.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetWriteOutput ( bool  writeOutput = true  )  [inline]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetWriteOutputEachNewtonIteration ( bool  writeOutputEachNewtonIteration = true  )  [inline]

By default only the original and converged solutions are written. Call this by get node positions written after every Newton step (mostly for debugging).

Parameters:
writeOutputEachNewtonIteration whether to write each iteration

Definition at line 391 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetKspAbsoluteTolerance ( double  kspAbsoluteTolerance  )  [inline]

Set the absolute tolerance to be used when solving the linear system. If this is not called a relative tolerance is used.

Parameters:
kspAbsoluteTolerance the tolerance

Definition at line 401 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<double>& AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::rGetCurrentSolution (  )  [inline]

Get the current solution vector (advanced use only - for getting the deformed position use rGetDeformedPosition()

Definition at line 411 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetSurfaceTractionBoundaryConditions ( std::vector< BoundaryElement< DIM-1, DIM > * > &  rBoundaryElements,
std::vector< c_vector< double, DIM > > &  rSurfaceTractions 
) [inline]

Specify traction boundary conditions (if this is not called zero surface tractions are assumed. This method takes in a list of boundary elements and a corresponding list of surface tractions.

Parameters:
rBoundaryElements the boundary elements
rSurfaceTractions the corresponding tractions

Definition at line 1202 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mBoundaryElements, and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mSurfaceTractions.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalTractionBoundaryCondition ( std::vector< BoundaryElement< DIM-1, DIM > * >  rBoundaryElements,
c_vector< double, DIM >(*)(c_vector< double, DIM > &X, double t)  pFunction 
) [inline]

Set a function which gives the surface traction as a function of X (undeformed position), together with the surface elements which make up the Neumann part of the boundary.

Parameters:
rBoundaryElements the boundary elements
pFunction the function, which should be a function of space and time. Note that SetCurrentTime() should be called each timestep if the traction changes with time

Definition at line 1212 of file AbstractNonlinearElasticitySolver.hpp.

References AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mBoundaryElements, AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpTractionBoundaryConditionFunction, and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mUsingTractionBoundaryConditionFunction.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector< c_vector< double, DIM > > & AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::rGetDeformedPosition (  )  [inline]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetCurrentTime ( double  time  )  [inline]

This solver is for static problems, however the body force or surface tractions could be a function of time. This method is for setting the time.

Parameters:
time current time

Definition at line 447 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
void AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::CreateCmguiOutput (  )  [inline]


Member Data Documentation

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::MAX_NEWTON_ABS_TOL = 1e-7 [inline, static, protected]

Maximum absolute tolerance for Newton solve. The Newton solver uses the absolute tolerance corresponding to the specified relative tolerance, but has a max and min allowable absolute tolerance. (ie: if max_abs = 1e-7, min_abs = 1e-10, rel=1e-4: then if the norm of the initial_residual (=a) is 1e-2, it will solve with tolerance 1e-7; if a=1e-5, it will solve with tolerance 1e-9; a=1e-9, it will solve with tolerance 1e-10.

Definition at line 82 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::MIN_NEWTON_ABS_TOL = 1e-10 [inline, static, protected]

Minimum absolute tolerance for Newton solve. See documentation for MAX_NEWTON_ABS_TOL.

Definition at line 85 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::NEWTON_REL_TOL = 1e-4 [inline, static, protected]

Relative tolerance for Newton solve. See documentation for MAX_NEWTON_ABS_TOL.

Definition at line 88 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
QuadraticMesh<DIM>* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpQuadMesh [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<BoundaryElement<DIM-1,DIM>*> AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mBoundaryElements [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
GaussianQuadratureRule<DIM>* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpQuadratureRule [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
GaussianQuadratureRule<DIM-1>* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpBoundaryQuadratureRule [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mKspAbsoluteTol [protected]

Absolute tolerance for linear systems. Can be set by calling SetKspAbsoluteTolerances(), but default to -1, in which case a relative tolerance is used.

Definition at line 110 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBLE, DIM >::SetKspAbsoluteTolerance(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::TakeNewtonStep().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
unsigned AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mNumDofs [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
LinearSystem* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpLinearSystem [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
LinearSystem* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpPreconditionMatrixLinearSystem [protected]

The linear system which stores the matrix used for preconditioning (given the helper functions on LinearSystem it is best to use LinearSystem and use these for assembling the preconditioner, rather than just use a Mat.

In the incompressible case: the preconditioner is the petsc LU factorisation of

Jp = [A B] in displacement-pressure block form, [C M]

where the A, B and C are the matrices in the normal jacobian, ie

J = [A B] [C 0]

and M is the MASS MATRIX (ie integral phi_i phi_j dV, where phi_i are the pressure basis functions).

Definition at line 147 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::AllocateMatrixMemory(), AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::ApplyBoundaryConditions(), AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::TakeNewtonStep(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::~AbstractNonlinearElasticitySolver().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
c_vector<double,DIM> AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mBodyForce [protected]

Body force vector

Definition at line 150 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mDensity [protected]

Mass density of the undeformed body (equal to the density of deformed body in the incompressible case)

Definition at line 153 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<unsigned> AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mFixedNodes [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mFixedNodeDisplacements [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
bool AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mWriteOutput [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::string AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mOutputDirectory [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
OutputFileHandler* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpOutputFileHandler [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
bool AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mWriteOutputEachNewtonIteration [protected]

By default only the initial and final solutions are written. However, we may want to write the solutions after every Newton iteration, in which case the following should be set to true

Definition at line 173 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBLE, DIM >::SetWriteOutputEachNewtonIteration(), and AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::Solve().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<double> AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mCurrentSolution [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
FourthOrderTensor<DIM,DIM,DIM,DIM> AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::dTdE [protected]

Storage space for a 4th order tensor used in assembling the Jacobian (to avoid repeated memory allocation)

Definition at line 187 of file AbstractNonlinearElasticitySolver.hpp.

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
unsigned AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mNumNewtonIterations [protected]

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mDeformedPosition [protected]

Deformed position: mDeformedPosition[i](j) = x_j for node i

Definition at line 193 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::rGetDeformedPosition().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
std::vector<c_vector<double,DIM> > AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mSurfaceTractions [protected]

The surface tractions (which should really be non-zero) for the boundary elements in mBoundaryElements.

Definition at line 199 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetSurfaceTractionBoundaryConditions().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
c_vector<double,DIM>(* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpBodyForceFunction)(c_vector< double, DIM > &X, double t) [protected]

An optionally provided (pointer to a) function, giving the body force as a function of undeformed position.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalBodyForce().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
c_vector<double,DIM>(* AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mpTractionBoundaryConditionFunction)(c_vector< double, DIM > &X, double t) [protected]

An optionally provided (pointer to a) function, giving the surface traction as a function of undeformed position.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalTractionBoundaryCondition().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
bool AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mUsingBodyForceFunction [protected]

Whether the functional version of the body force is being used or not

Definition at line 211 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalBodyForce().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
bool AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mUsingTractionBoundaryConditionFunction [protected]

Whether the functional version of the surface traction is being used or not

Definition at line 214 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::SetFunctionalTractionBoundaryCondition().

template<CompressibilityType COMPRESSIBILITY_TYPE, unsigned DIM>
double AbstractNonlinearElasticitySolver< COMPRESSIBILITY_TYPE, DIM >::mCurrentTime [protected]

This solver is for static problems, however the body force or surface tractions could be a function of time. The user should call SetCurrentTime() if this is the case

Reimplemented in AbstractCardiacMechanicsSolver< DIM >.

Definition at line 220 of file AbstractNonlinearElasticitySolver.hpp.

Referenced by AbstractNonlinearElasticitySolver< COMPRESSIBLE, DIM >::SetCurrentTime().


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

Generated on Mon Apr 18 11:36:07 2011 for Chaste by  doxygen 1.5.5