ITK  4.9.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
itk::fem::SolverCrankNicolson< TDimension > Class Template Reference

#include <itkFEMSolverCrankNicolson.h>

+ Inheritance diagram for itk::fem::SolverCrankNicolson< TDimension >:
+ Collaboration diagram for itk::fem::SolverCrankNicolson< TDimension >:

Detailed Description

template<unsigned int TDimension = 3>
class itk::fem::SolverCrankNicolson< TDimension >

FEM Solver for time dependent problems; uses Crank-Nicolson implicit discretization scheme.

This is the main class used for solving FEM time-dependent problems. It solves the following problem:

\[ ( M + \alpha*dt* K )*U_t=(M - (1.- \alpha)*dt* K)* U_{t-1} + dt*(\alpha*f_{n+1} + (1-\alpha)*f_n) \]

which is the Crank-Nicolson formulation of the static problem if $\alpha=0.5$. The static solution is gained if : $\rho = 0.0$; $\alpha = 1.0$; $dt = 1.0$; Practically, it is good to set rho to something small (for the itpack solver). The advantage of choosing $\alpha=0.5$ is that the solution is then stable for any choice of time step, dt. This class inherits and uses most of the Solver class functionality.

Updated: The calls to to AssembleKandM (or AssembleK) and AssembleFforTimeStep (or AssembleF) are now handled internally by calling Update().

FIXME: 1) We should also account for the contribution to the force from essential BCs. Basically there are terms involving $ M * (\dot g_b) $ and $ K * g_b $ where $ g_b$ is the essential BC vector.

Definition at line 72 of file itkFEMSolverCrankNicolson.h.

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef Element::Float Float
 
typedef SmartPointer< SelfPointer
 
typedef SolverCrankNicolson Self
 
typedef Solver< TDimension > Superclass
 
- Public Types inherited from itk::fem::Solver< TDimension >
typedef SmartPointer< const SelfConstPointer
 
typedef DataObject::Pointer DataObjectPointer
 
typedef Element::ArrayType ElementArray
 
typedef FEMObjectType::ConstPointer FEMObjectConstPointer
 
typedef FEMObjectType::Pointer FEMObjectPointer
 
typedef itk::fem::FEMObject
< VDimension > 
FEMObjectType
 
typedef Element::Float Float
 
typedef
InterpolationGridType::DirectionType 
InterpolationGridDirectionType
 
typedef
InterpolationGridType::IndexType 
InterpolationGridIndexType
 
typedef
InterpolationGridType::Pointer 
InterpolationGridPointerType
 
typedef
InterpolationGridType::PointType 
InterpolationGridPointType
 
typedef
InterpolationGridType::RegionType 
InterpolationGridRegionType
 
typedef
InterpolationGridType::SizeType 
InterpolationGridSizeType
 
typedef
InterpolationGridType::SpacingType 
InterpolationGridSpacingType
 
typedef itk::Image
< Element::ConstPointer,
VDimension > 
InterpolationGridType
 
typedef Load::ArrayType LoadArray
 
typedef Material::ArrayType MaterialArray
 
typedef Element::Node::ArrayType NodeArray
 
typedef SmartPointer< SelfPointer
 
typedef Solver Self
 
typedef ProcessObject Superclass
 
typedef Element::VectorType VectorType
 
typedef
ProcessObject::DataObjectPointerArraySizeType 
DataObjectPointerArraySizeType
 
- Public Types inherited from itk::ProcessObject
typedef SmartPointer< const SelfConstPointer
 
typedef
DataObject::DataObjectIdentifierType 
DataObjectIdentifierType
 
typedef DataObject::Pointer DataObjectPointer
 
typedef std::vector
< DataObjectPointer
DataObjectPointerArray
 
typedef
DataObjectPointerArray::size_type 
DataObjectPointerArraySizeType
 
typedef std::vector
< DataObjectIdentifierType
NameArray
 
typedef SmartPointer< SelfPointer
 
typedef ProcessObject Self
 
typedef Object Superclass
 
- Public Types inherited from itk::Object
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef Object Self
 
typedef LightObject Superclass
 
- Public Types inherited from itk::LightObject
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef LightObject Self
 

Public Member Functions

void AddToDisplacements (Float optimum=1.0)
 
void AverageLastTwoDisplacements (Float t=0.5)
 
Float BrentsMethod (Float tol=0.01, unsigned int MaxIters=25)
 
Float EvaluateResidual (Float t=1.0)
 
void FindBracketingTriplet (Float *a, Float *b, Float *c)
 
Float GetCurrentMaxSolution ()
 
Float GetDeformationEnergy (Float t=1.0)
 
LinearSystemWrapperGetLS ()
 
virtual Float GetTimeStep (void) const ITK_OVERRIDE
 
Float GoldenSection (Float tol=0.01, unsigned int MaxIters=25)
 
Float GSMax (Float a, Float b)
 
Float GSSign (Float a, Float b)
 
 itkGetConstMacro (Iterations, unsigned int)
 
 itkGetMacro (TotalSolutionIndex, unsigned int)
 
 itkGetMacro (SolutionTMinus1Index, unsigned int)
 
 itkNewMacro (Self)
 
 itkTypeMacro (SolverCrankNicolson, Solver< TDimension >)
 
void PrintDisplacements ()
 
void PrintForce ()
 
void PrintMinMaxOfSolution ()
 
void RecomputeForceVector (unsigned int index)
 
void ResetIterations (void)
 
void SetEnergyToMin (Float xmin)
 
virtual void SetTimeStep (Float dt) ITK_OVERRIDE
 
void ZeroVector (int which=0)
 
 itkSetMacro (UseMassMatrix, bool)
 
 itkGetMacro (UseMassMatrix, bool)
 
 itkSetMacro (Alpha, Float)
 
 itkGetMacro (Alpha, Float)
 
 itkSetMacro (Rho, Float)
 
 itkGetMacro (Rho, Float)
 
- Public Member Functions inherited from itk::fem::Solver< TDimension >
virtual ::itk::LightObject::Pointer CreateAnother () const
 
Float GetDeformationEnergy (unsigned int SolutionIndex=0)
 
virtual
InterpolationGridDirectionType 
GetDirection ()
 
const ElementGetElementAtPoint (const VectorType &pt) const
 
FEMObjectTypeGetInput ()
 
FEMObjectTypeGetInput (unsigned int idx)
 
LinearSystemWrapper::Pointer GetLinearSystemWrapper ()
 
virtual const char * GetNameOfClass () const
 
virtual InterpolationGridPointType GetOrigin ()
 
virtual InterpolationGridRegionType GetRegion ()
 
Float GetSolution (unsigned int i, unsigned int which=0)
 
virtual
InterpolationGridSpacingType 
GetSpacing ()
 
void InitializeInterpolationGrid (const InterpolationGridSizeType &size, const InterpolationGridPointType &bb1, const InterpolationGridPointType &bb2)
 
virtual void SetDirection (InterpolationGridDirectionType _arg)
 
virtual void SetInput (FEMObjectType *fem)
 
virtual void SetInput (unsigned int, FEMObjectType *fem)
 
void SetLinearSystemWrapper (LinearSystemWrapper::Pointer ls)
 
virtual void SetOrigin (InterpolationGridPointType _arg)
 
virtual void SetRegion (InterpolationGridRegionType _arg)
 
virtual void SetSpacing (InterpolationGridSpacingType _arg)
 
void InitializeInterpolationGrid (const InterpolationGridSizeType &size)
 
void InitializeInterpolationGrid (const InterpolationGridRegionType &region, const InterpolationGridPointType &origin, const InterpolationGridSpacingType &spacing, const InterpolationGridDirectionType &direction)
 
const InterpolationGridTypeGetInterpolationGrid (void) const
 
virtual DataObjectPointer MakeOutput (DataObjectPointerArraySizeType) override
 
FEMObjectTypeGetOutput ()
 
FEMObjectTypeGetOutput (unsigned int idx)
 
- Public Member Functions inherited from itk::ProcessObject
virtual void AbortGenerateDataOff ()
 
virtual void AbortGenerateDataOn ()
 
virtual void EnlargeOutputRequestedRegion (DataObject *)
 
virtual const bool & GetAbortGenerateData () const
 
DataObjectPointerArray GetIndexedInputs ()
 
DataObjectPointerArray GetIndexedOutputs ()
 
NameArray GetInputNames () const
 
DataObjectPointerArray GetInputs ()
 
MultiThreader * GetMultiThreader () const
 
DataObjectPointerArraySizeType GetNumberOfIndexedInputs () const
 
DataObjectPointerArraySizeType GetNumberOfIndexedOutputs () const
 
DataObjectPointerArraySizeType GetNumberOfInputs () const
 
DataObjectPointerArraySizeType GetNumberOfOutputs () const
 
virtual
DataObjectPointerArraySizeType 
GetNumberOfValidRequiredInputs () const
 
NameArray GetOutputNames () const
 
DataObjectPointerArray GetOutputs ()
 
virtual const float & GetProgress () const
 
NameArray GetRequiredInputNames () const
 
bool HasInput (const DataObjectIdentifierType &key) const
 
bool HasOutput (const DataObjectIdentifierType &key) const
 
virtual DataObjectPointer MakeOutput (const DataObjectIdentifierType &)
 
virtual void PrepareOutputs ()
 
virtual void PropagateRequestedRegion (DataObject *output)
 
virtual void ResetPipeline ()
 
virtual void SetAbortGenerateData (bool _arg)
 
virtual void Update ()
 
virtual void UpdateLargestPossibleRegion ()
 
virtual void UpdateOutputData (DataObject *output)
 
virtual void UpdateOutputInformation ()
 
void UpdateProgress (float progress)
 
void SetProgress (float progress)
 
virtual void SetReleaseDataFlag (bool flag)
 
virtual bool GetReleaseDataFlag () const
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
virtual void SetReleaseDataBeforeUpdateFlag (bool _arg)
 
virtual const bool & GetReleaseDataBeforeUpdateFlag () const
 
virtual void ReleaseDataBeforeUpdateFlagOn ()
 
virtual void ReleaseDataBeforeUpdateFlagOff ()
 
virtual void SetNumberOfThreads (ThreadIdType _arg)
 
virtual const ThreadIdTypeGetNumberOfThreads () const
 
- Public Member Functions inherited from itk::Object
unsigned long AddObserver (const EventObject &event, Command *)
 
unsigned long AddObserver (const EventObject &event, Command *) const
 
virtual void DebugOff () const
 
virtual void DebugOn () const
 
CommandGetCommand (unsigned long tag)
 
bool GetDebug () const
 
MetaDataDictionaryGetMetaDataDictionary ()
 
const MetaDataDictionaryGetMetaDataDictionary () const
 
virtual ModifiedTimeType GetMTime () const
 
virtual const TimeStampGetTimeStamp () const
 
bool HasObserver (const EventObject &event) const
 
void InvokeEvent (const EventObject &)
 
void InvokeEvent (const EventObject &) const
 
virtual void Modified () const
 
virtual void Register () const override
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag)
 
void SetDebug (bool debugFlag) const
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
virtual void SetReferenceCount (int) override
 
virtual void UnRegister () const noexceptoverride
 
virtual void SetObjectName (std::string _arg)
 
virtual const std::string & GetObjectName () const
 
- Public Member Functions inherited from itk::LightObject
virtual void Delete ()
 
virtual int GetReferenceCount () const
 
 itkCloneMacro (Self)
 
void Print (std::ostream &os, Indent indent=0) const
 

Protected Member Functions

void AssembleFforTimeStep (int dim=0)
 
void AssembleKandM ()
 
void GenerateData () ITK_OVERRIDE
 
void InitializeForSolution ()
 
virtual void RunSolver (void) ITK_OVERRIDE
 
 SolverCrankNicolson ()
 
 ~SolverCrankNicolson ()
 
- Protected Member Functions inherited from itk::fem::Solver< TDimension >
 Solver ()
 
virtual ~Solver ()
 
virtual void PrintSelf (std::ostream &os, Indent indent) const override
 
void AssembleK ()
 
virtual void InitializeMatrixForAssembly (unsigned int N)
 
virtual void FinalizeMatrixAfterAssembly (void)
 
virtual void AssembleElementMatrix (Element::Pointer e)
 
virtual void AssembleLandmarkContribution (Element::ConstPointer e, float)
 
void ApplyBC (int dim=0, unsigned int matrix=0)
 
void AssembleF (int dim=0)
 
void DecomposeK ()
 
void UpdateDisplacements ()
 
void FillInterpolationGrid ()
 
virtual void InitializeLinearSystemWrapper ()
 
- Protected Member Functions inherited from itk::ProcessObject
virtual void AddInput (DataObject *input)
 
virtual void AddOutput (DataObject *output)
 
bool AddRequiredInputName (const DataObjectIdentifierType &)
 
bool AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx)
 
virtual void CacheInputReleaseDataFlags ()
 
virtual void GenerateInputRequestedRegion ()
 
virtual void GenerateOutputInformation ()
 
virtual void GenerateOutputRequestedRegion (DataObject *output)
 
DataObjectGetInput (const DataObjectIdentifierType &key)
 
const DataObjectGetInput (const DataObjectIdentifierType &key) const
 
virtual const
DataObjectPointerArraySizeType
GetNumberOfRequiredInputs () const
 
virtual const
DataObjectPointerArraySizeType
GetNumberOfRequiredOutputs () const
 
bool IsIndexedInputName (const DataObjectIdentifierType &) const
 
bool IsIndexedOutputName (const DataObjectIdentifierType &) const
 
bool IsRequiredInputName (const DataObjectIdentifierType &) const
 
 itkLegacyMacro (virtual void RemoveOutput(DataObject *output))
 
 itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num))
 
 itkLegacyMacro (virtual void RemoveInput(DataObject *input))
 
 itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num))
 
DataObjectPointerArraySizeType MakeIndexFromInputName (const DataObjectIdentifierType &name) const
 
DataObjectPointerArraySizeType MakeIndexFromOutputName (const DataObjectIdentifierType &name) const
 
DataObjectIdentifierType MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const
 
DataObjectIdentifierType MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const
 
virtual void PopBackInput ()
 
virtual void PopFrontInput ()
 
 ProcessObject ()
 
virtual void PropagateResetPipeline ()
 
virtual void PushBackInput (const DataObject *input)
 
virtual void PushFrontInput (const DataObject *input)
 
virtual void ReleaseInputs ()
 
virtual void RemoveInput (const DataObjectIdentifierType &key)
 
virtual void RemoveInput (DataObjectPointerArraySizeType)
 
virtual void RemoveOutput (const DataObjectIdentifierType &key)
 
virtual void RemoveOutput (DataObjectPointerArraySizeType idx)
 
bool RemoveRequiredInputName (const DataObjectIdentifierType &)
 
virtual void RestoreInputReleaseDataFlags ()
 
virtual void SetInput (const DataObjectIdentifierType &key, DataObject *input)
 
virtual void SetNthInput (DataObjectPointerArraySizeType num, DataObject *input)
 
virtual void SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output)
 
void SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num)
 
void SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num)
 
virtual void SetNumberOfRequiredInputs (DataObjectPointerArraySizeType)
 
virtual void SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg)
 
virtual void SetOutput (const DataObjectIdentifierType &key, DataObject *output)
 
virtual void SetPrimaryInput (DataObject *input)
 
virtual void SetPrimaryOutput (DataObject *output)
 
void SetRequiredInputNames (const NameArray &)
 
virtual void VerifyInputInformation ()
 
virtual void VerifyPreconditions ()
 
 ~ProcessObject ()
 
DataObjectGetInput (DataObjectPointerArraySizeType idx)
 
const DataObjectGetInput (DataObjectPointerArraySizeType idx) const
 
DataObjectGetPrimaryInput ()
 
const DataObjectGetPrimaryInput () const
 
virtual void SetPrimaryInputName (const DataObjectIdentifierType &key)
 
virtual const char * GetPrimaryInputName (void) const
 
DataObjectGetOutput (const DataObjectIdentifierType &key)
 
const DataObjectGetOutput (const DataObjectIdentifierType &key) const
 
virtual void SetPrimaryOutputName (const DataObjectIdentifierType &key)
 
virtual const char * GetPrimaryOutputName (void) const
 
DataObjectGetOutput (DataObjectPointerArraySizeType idx)
 
const DataObjectGetOutput (DataObjectPointerArraySizeType idx) const
 
DataObjectGetPrimaryOutput ()
 
const DataObjectGetPrimaryOutput () const
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
virtual void SetTimeStamp (const TimeStamp &time)
 
virtual ~Object ()
 
- Protected Member Functions inherited from itk::LightObject
virtual LightObject::Pointer InternalClone () const
 
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Protected Attributes

Float m_Alpha
 
Float m_CurrentMaxSolution
 
unsigned int m_DifferenceMatrixIndex
 
unsigned int m_DiffMatrixBySolutionTMinus1Index
 
unsigned int m_ForceTIndex
 
unsigned int m_ForceTMinus1Index
 
unsigned int m_ForceTotalIndex
 
unsigned int m_Iterations
 
Float m_Rho
 
unsigned int m_SolutionTIndex
 
unsigned int m_SolutionTMinus1Index
 
unsigned int m_SolutionVectorTMinus1Index
 
unsigned int m_SumMatrixIndex
 
Float m_TimeStep
 
unsigned int m_TotalSolutionIndex
 
bool m_UseMassMatrix
 
- Protected Attributes inherited from itk::fem::Solver< TDimension >
unsigned int m_NGFN
 
unsigned int m_NMFC
 
LinearSystemWrapper::Pointer m_ls
 
LinearSystemWrapperVNL m_lsVNL
 
InterpolationGridPointerType m_InterpolationGrid
 
FEMObjectPointer m_FEMObject
 
- Protected Attributes inherited from itk::ProcessObject
TimeStamp m_OutputInformationMTime
 
bool m_Updating
 
- Protected Attributes inherited from itk::LightObject
AtomicInt< int > m_ReferenceCount
 

Private Member Functions

void operator= (const Self &) ITK_DELETE_FUNCTION
 
 SolverCrankNicolson (const Self &) ITK_DELETE_FUNCTION
 

Additional Inherited Members

- Static Public Member Functions inherited from itk::fem::Solver< TDimension >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::Object
static bool GetGlobalWarningDisplay ()
 
static void GlobalWarningDisplayOff ()
 
static void GlobalWarningDisplayOn ()
 
static Pointer New ()
 
static void SetGlobalWarningDisplay (bool flag)
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 
- Static Public Attributes inherited from itk::fem::Solver< TDimension >
static const unsigned int FEMDimension
 
static const unsigned int MaxDimensions
 

Member Typedef Documentation

template<unsigned int TDimension = 3>
typedef SmartPointer<const Self> itk::fem::SolverCrankNicolson< TDimension >::ConstPointer

Definition at line 78 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
typedef Element::Float itk::fem::SolverCrankNicolson< TDimension >::Float

Definition at line 86 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
typedef SmartPointer<Self> itk::fem::SolverCrankNicolson< TDimension >::Pointer

Definition at line 77 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
typedef SolverCrankNicolson itk::fem::SolverCrankNicolson< TDimension >::Self

Definition at line 75 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
typedef Solver<TDimension> itk::fem::SolverCrankNicolson< TDimension >::Superclass

Definition at line 76 of file itkFEMSolverCrankNicolson.h.

Constructor & Destructor Documentation

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::SolverCrankNicolson ( )
protected
template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::~SolverCrankNicolson ( )
inlineprotected

Definition at line 207 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::SolverCrankNicolson ( const Self )
private

Member Function Documentation

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::AddToDisplacements ( Float  optimum = 1.0)

Add solution vector u to the corresponding nodal values, which are stored in node objects). This is standard post processing of the solution

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::AssembleFforTimeStep ( int  dim = 0)
protected

Assemble the master force vector at a given time.

Parameters
dimThis is a parameter that can be passed to the function and is normally used with isotropic elements to specify the dimension for which the master force vector should be assembled.
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::AssembleKandM ( )
protected

Assemble the master stiffness and mass matrix. We actually assemble the right hand side and left hand side of the implicit scheme equation.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::AverageLastTwoDisplacements ( Float  t = 0.5)
template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::BrentsMethod ( Float  tol = 0.01,
unsigned int  MaxIters = 25 
)
template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::EvaluateResidual ( Float  t = 1.0)
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::FindBracketingTriplet ( Float a,
Float b,
Float c 
)
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::GenerateData ( )
protectedvirtual

Method invoked by the pipeline in order to trigger the computation of the registration.

Reimplemented from itk::fem::Solver< TDimension >.

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::GetCurrentMaxSolution ( )
inline
template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::GetDeformationEnergy ( Float  t = 1.0)
template<unsigned int TDimension = 3>
LinearSystemWrapper* itk::fem::SolverCrankNicolson< TDimension >::GetLS ( )
inline

Definition at line 190 of file itkFEMSolverCrankNicolson.h.

References itk::fem::Solver< TDimension >::m_ls.

template<unsigned int TDimension = 3>
virtual Float itk::fem::SolverCrankNicolson< TDimension >::GetTimeStep ( void  ) const
inlinevirtual

Returns the time step used for dynamic problems.

Reimplemented from itk::fem::Solver< TDimension >.

Definition at line 142 of file itkFEMSolverCrankNicolson.h.

References itk::fem::SolverCrankNicolson< TDimension >::m_TimeStep.

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::GoldenSection ( Float  tol = 0.01,
unsigned int  MaxIters = 25 
)

Finds the optimum value between the last two solutions and sets the current solution to that value. Uses Evaluate Residual;

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::GSMax ( Float  a,
Float  b 
)
inline

Definition at line 183 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::GSSign ( Float  a,
Float  b 
)
inline

Definition at line 179 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::InitializeForSolution ( )
protected

helper initialization function before assembly but after generate GFN.

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetConstMacro ( Iterations  ,
unsigned  int 
)

Get the number of iterations run for the solver

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetMacro ( UseMassMatrix  ,
bool   
)

Get/Set the use of the Mass Matrix for the solution

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetMacro ( TotalSolutionIndex  ,
unsigned  int 
)

Get the index for the current solution

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetMacro ( SolutionTMinus1Index  ,
unsigned  int 
)

Get the index for the previous solution

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetMacro ( Alpha  ,
Float   
)

Set stability step for the solution. Initialized to 0.5

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkGetMacro ( Rho  ,
Float   
)

Set density constant.

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkNewMacro ( Self  )

Method for creation through the object factory.

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkSetMacro ( UseMassMatrix  ,
bool   
)

Get/Set the use of the Mass Matrix for the solution

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkSetMacro ( Alpha  ,
Float   
)

Set stability step for the solution. Initialized to 0.5

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkSetMacro ( Rho  ,
Float   
)

Set density constant.

template<unsigned int TDimension = 3>
itk::fem::SolverCrankNicolson< TDimension >::itkTypeMacro ( SolverCrankNicolson< TDimension >  ,
Solver< TDimension >   
)

Run-time type information (and related methods)

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::operator= ( const Self )
private
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::PrintDisplacements ( )
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::PrintForce ( )
template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::PrintMinMaxOfSolution ( )

Compute and print the minimum and maximum of the total solution and the last solution.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::RecomputeForceVector ( unsigned int  index)

compute the current state of the right hand side and store the current force for the next iteration.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::ResetIterations ( void  )
inline

Reset the number of iterations for the solver. This will prompt the Solver to Assemble the master stiffness and mass matrix again. This is only generated before the first iteration.

Definition at line 106 of file itkFEMSolverCrankNicolson.h.

References itk::fem::SolverCrankNicolson< TDimension >::m_Iterations.

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverCrankNicolson< TDimension >::RunSolver ( void  )
protectedvirtual

Solve for the displacement vector u at a given time. Update the total solution as well.

Reimplemented from itk::fem::Solver< TDimension >.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::SetEnergyToMin ( Float  xmin)
template<unsigned int TDimension = 3>
virtual void itk::fem::SolverCrankNicolson< TDimension >::SetTimeStep ( Float  dt)
inlinevirtual

Sets the time step used for dynamic problems.

Parameters
dtNew time step.

Reimplemented from itk::fem::Solver< TDimension >.

Definition at line 152 of file itkFEMSolverCrankNicolson.h.

References itk::fem::SolverCrankNicolson< TDimension >::m_TimeStep.

template<unsigned int TDimension = 3>
void itk::fem::SolverCrankNicolson< TDimension >::ZeroVector ( int  which = 0)

Member Data Documentation

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::m_Alpha
protected

Definition at line 240 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::m_CurrentMaxSolution
protected
template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_DifferenceMatrixIndex
protected

Definition at line 253 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_DiffMatrixBySolutionTMinus1Index
protected

Definition at line 255 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_ForceTIndex
protected

Definition at line 246 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_ForceTMinus1Index
protected

Definition at line 248 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_ForceTotalIndex
protected

Definition at line 247 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_Iterations
protected
template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::m_Rho
protected

Definition at line 239 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_SolutionTIndex
protected

Definition at line 249 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_SolutionTMinus1Index
protected

Definition at line 250 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_SolutionVectorTMinus1Index
protected

Definition at line 251 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_SumMatrixIndex
protected

Definition at line 254 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
Float itk::fem::SolverCrankNicolson< TDimension >::m_TimeStep
protected
template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverCrankNicolson< TDimension >::m_TotalSolutionIndex
protected

Definition at line 252 of file itkFEMSolverCrankNicolson.h.

template<unsigned int TDimension = 3>
bool itk::fem::SolverCrankNicolson< TDimension >::m_UseMassMatrix
protected

Definition at line 243 of file itkFEMSolverCrankNicolson.h.


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