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

#include <itkFEMSolverHyperbolic.h>

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

Detailed Description

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

Solver class suitable for hyperbolic problems.

M*ddu + C*du + K*u=F.

Definition at line 35 of file itkFEMSolverHyperbolic.h.

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef Element::Float Float
 
typedef SmartPointer< SelfPointer
 
typedef SolverHyperbolic 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

virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
virtual const char * GetNameOfClass () const
 
virtual Float GetTimeStep (void) const
 
virtual void SetTimeStep (Float dt)
 
virtual void SetGamma (Float _arg)
 
virtual Float GetGamma ()
 
virtual void SetBeta (Float _arg)
 
virtual Float GetBeta ()
 
virtual void SetNumberOfIterations (unsigned int _arg)
 
virtual unsigned int GetNumberOfIterations ()
 
- Public Member Functions inherited from itk::fem::Solver< TDimension >
virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
Float GetDeformationEnergy (unsigned int SolutionIndex=0)
 
virtual
InterpolationGridDirectionType 
GetDirection ()
 
const ElementGetElementAtPoint (const VectorType &pt) const
 
FEMObjectTypeGetInput (void)
 
FEMObjectTypeGetInput (unsigned int idx)
 
LinearSystemWrapper::Pointer GetLinearSystemWrapper ()
 
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)
 
FEMObjectTypeGetOutput (void)
 
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 ()
 
NameArray GetInputNames () const
 
MultiThreader * GetMultiThreader () const
 
DataObjectPointerArraySizeType GetNumberOfIndexedInputs () const
 
DataObjectPointerArraySizeType GetNumberOfInputs () const
 
DataObjectPointerArraySizeType GetNumberOfOutputs () const
 
virtual
DataObjectPointerArraySizeType 
GetNumberOfValidRequiredInputs () const
 
NameArray GetOutputNames () const
 
virtual const float & GetProgress ()
 
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 SetProgress (float _arg)
 
virtual void Update ()
 
virtual void UpdateLargestPossibleRegion ()
 
virtual void UpdateOutputData (DataObject *output)
 
virtual void UpdateOutputInformation ()
 
void UpdateProgress (float amount)
 
DataObjectPointerArray GetInputs ()
 
DataObjectPointerArray GetOutputs ()
 
DataObjectPointerArray GetIndexedInputs ()
 
DataObjectPointerArray GetIndexedOutputs ()
 
DataObjectPointerArraySizeType GetNumberOfIndexedOutputs () const
 
virtual void SetReleaseDataFlag (bool flag)
 
virtual bool GetReleaseDataFlag () const
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
virtual void SetReleaseDataBeforeUpdateFlag (bool _arg)
 
virtual const bool & GetReleaseDataBeforeUpdateFlag ()
 
virtual void ReleaseDataBeforeUpdateFlagOn ()
 
virtual void ReleaseDataBeforeUpdateFlagOff ()
 
virtual void SetNumberOfThreads (ThreadIdType _arg)
 
virtual const ThreadIdTypeGetNumberOfThreads ()
 
- 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 (void)
 
const MetaDataDictionaryGetMetaDataDictionary (void) 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
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag)
 
void SetDebug (bool debugFlag) const
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
virtual void SetReferenceCount (int)
 
virtual void UnRegister () 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
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::fem::Solver< TDimension >
static Pointer New ()
 

Protected Types

enum  {
  matrix_K =1,
  matrix_M =2,
  matrix_C =3,
  matrix_tmp =4
}
 
enum  {
  solution_d =0,
  solution_v =1,
  solution_a =2
}
 
enum  {
  vector_dhat =2,
  vector_vhat =3,
  vector_ahat =4,
  vector_tmp =5
}
 

Protected Member Functions

virtual void AssembleElementMatrix (Element::Pointer e)
 
virtual void FinalizeMatrixAfterAssembly (void)
 
void GenerateData ()
 
virtual void InitializeLinearSystemWrapper (void)
 
virtual void InitializeMatrixForAssembly (unsigned int N)
 
void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void RunSolver (void)
 
void Solve ()
 
 SolverHyperbolic ()
 
virtual ~SolverHyperbolic ()
 
- Protected Member Functions inherited from itk::fem::Solver< TDimension >
 Solver ()
 
virtual ~Solver ()
 
void PrintSelf (std::ostream &os, Indent indent) const
 
void GenerateData ()
 
void AssembleK ()
 
virtual void AssembleLandmarkContribution (Element::ConstPointer e, float)
 
void ApplyBC (int dim=0, unsigned int matrix=0)
 
void AssembleF (int dim=0)
 
void DecomposeK (void)
 
void UpdateDisplacements (void)
 
void FillInterpolationGrid (void)
 

Protected Attributes

Float m_Beta
 
Float m_Gamma
 
unsigned int m_NumberOfIterations
 
Float m_TimeStep
 
- 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
 

Private Member Functions

void operator= (const Self &)
 
 SolverHyperbolic (const Self &)
 

Additional Inherited Members

- 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::SolverHyperbolic< TDimension >::ConstPointer

Definition at line 41 of file itkFEMSolverHyperbolic.h.

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

Definition at line 47 of file itkFEMSolverHyperbolic.h.

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

Definition at line 40 of file itkFEMSolverHyperbolic.h.

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

Definition at line 38 of file itkFEMSolverHyperbolic.h.

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

Definition at line 39 of file itkFEMSolverHyperbolic.h.

Member Enumeration Documentation

template<unsigned int TDimension = 3>
anonymous enum
protected

Constants that specify, where matrices are strored.

Enumerator
matrix_K 
matrix_M 
matrix_C 
matrix_tmp 

Definition at line 126 of file itkFEMSolverHyperbolic.h.

template<unsigned int TDimension = 3>
anonymous enum
protected

Constants that specify, where vectors are strored.

Enumerator
solution_d 
solution_v 
solution_a 

Definition at line 131 of file itkFEMSolverHyperbolic.h.

template<unsigned int TDimension = 3>
anonymous enum
protected
Enumerator
vector_dhat 
vector_vhat 
vector_ahat 
vector_tmp 

Definition at line 132 of file itkFEMSolverHyperbolic.h.

Constructor & Destructor Documentation

template<unsigned int TDimension = 3>
itk::fem::SolverHyperbolic< TDimension >::SolverHyperbolic ( )
protected
template<unsigned int TDimension = 3>
virtual itk::fem::SolverHyperbolic< TDimension >::~SolverHyperbolic ( )
inlineprotectedvirtual

Definition at line 84 of file itkFEMSolverHyperbolic.h.

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

Member Function Documentation

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverHyperbolic< TDimension >::AssembleElementMatrix ( Element::Pointer  e)
protectedvirtual

When assembling the element matrix into master matrix, we need to assemble the mass matrix too.

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

template<unsigned int TDimension = 3>
virtual::itk::LightObject::Pointer itk::fem::SolverHyperbolic< TDimension >::CreateAnother ( void  ) const
virtual

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Reimplemented from itk::Object.

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

Combines the M, C and K matrices into one big system of linear equations.

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

template<unsigned int TDimension = 3>
void itk::fem::SolverHyperbolic< TDimension >::GenerateData ( )
protectedvirtual

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

Reimplemented from itk::ProcessObject.

template<unsigned int TDimension = 3>
virtual Float itk::fem::SolverHyperbolic< TDimension >::GetBeta ( )
virtual

Get/Set Beta

template<unsigned int TDimension = 3>
virtual Float itk::fem::SolverHyperbolic< TDimension >::GetGamma ( )
virtual

Get/Set Gamma

template<unsigned int TDimension = 3>
virtual const char* itk::fem::SolverHyperbolic< TDimension >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods)

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

template<unsigned int TDimension = 3>
virtual unsigned int itk::fem::SolverHyperbolic< TDimension >::GetNumberOfIterations ( )
virtual

Get/Set Number of Iterations

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

Returns the time step used for dynamic problems.

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

Definition at line 67 of file itkFEMSolverHyperbolic.h.

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

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

Initialize the linear system wrapper.

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

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverHyperbolic< TDimension >::InitializeMatrixForAssembly ( unsigned int  N)
protectedvirtual

Initializes the storasge for all master matrices.

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

template<unsigned int TDimension = 3>
static Pointer itk::fem::SolverHyperbolic< TDimension >::New ( )
static

Method for creation through the object factory.

template<unsigned int TDimension = 3>
void itk::fem::SolverHyperbolic< TDimension >::operator= ( const Self )
private
template<unsigned int TDimension = 3>
void itk::fem::SolverHyperbolic< TDimension >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protectedvirtual

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::ProcessObject.

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverHyperbolic< 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>
virtual void itk::fem::SolverHyperbolic< TDimension >::SetBeta ( Float  _arg)
virtual

Get/Set Beta

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverHyperbolic< TDimension >::SetGamma ( Float  _arg)
virtual

Get/Set Gamma

template<unsigned int TDimension = 3>
virtual void itk::fem::SolverHyperbolic< TDimension >::SetNumberOfIterations ( unsigned int  _arg)
virtual

Get/Set Number of Iterations

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

Sets the time step used for the problems.

Parameters
dtNew time step.

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

Definition at line 77 of file itkFEMSolverHyperbolic.h.

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

template<unsigned int TDimension = 3>
void itk::fem::SolverHyperbolic< TDimension >::Solve ( )
protected

Solve for the displacement vector u for one iteration

Member Data Documentation

template<unsigned int TDimension = 3>
Float itk::fem::SolverHyperbolic< TDimension >::m_Beta
protected

Definition at line 136 of file itkFEMSolverHyperbolic.h.

template<unsigned int TDimension = 3>
Float itk::fem::SolverHyperbolic< TDimension >::m_Gamma
protected

Definition at line 135 of file itkFEMSolverHyperbolic.h.

template<unsigned int TDimension = 3>
unsigned int itk::fem::SolverHyperbolic< TDimension >::m_NumberOfIterations
protected

Definition at line 137 of file itkFEMSolverHyperbolic.h.

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

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