Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::fem::SolverHyperbolic Class Reference

#include <itkFEMSolverHyperbolic.h>

Inheritance diagram for itk::fem::SolverHyperbolic:

Inheritance graph
[legend]
Collaboration diagram for itk::fem::SolverHyperbolic:

Collaboration graph
[legend]
List of all members.

Detailed Description

Solver class suitable for hyperbolic problems.

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

Definition at line 36 of file itkFEMSolverHyperbolic.h.

Public 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
}
typedef Element::ArrayType ElementArray
typedef Element::Float Float
typedef itk::Image< Element::ConstPointer,
MaxGridDimensions > 
InterpolationGridType
typedef Load::ArrayType LoadArray
typedef Material::ArrayType MaterialArray
typedef Node::ArrayType NodeArray
typedef Element::VectorType VectorType

Public Member Functions

void ApplyBC (int dim=0, unsigned int matrix=0)
virtual void AssembleElementMatrix (Element::Pointer e)
void AssembleF (int dim=0)
void AssembleK (void)
virtual void AssembleLandmarkContribution (Element::Pointer e, float)
virtual void Clear (void)
void DecomposeK (void)
virtual void FinalizeMatrixAfterAssembly (void)
void GenerateGFN (void)
Float GetDeformationEnergy (unsigned int SolutionIndex=0)
const ElementGetElementAtPoint (const VectorType &pt) const
const InterpolationGridTypeGetInterpolationGrid (void) const
LinearSystemWrapper::Pointer GetLinearSystemWrapper ()
unsigned int GetNumberOfDegreesOfFreedom (void)
Float GetSolution (unsigned int i, unsigned int which=0)
virtual Float GetTimeStep (void) const
void InitializeInterpolationGrid (const VectorType &size, const VectorType &bb1, const VectorType &bb2)
virtual void InitializeLinearSystemWrapper (void)
virtual void InitializeMatrixForAssembly (unsigned int N)
 itkStaticConstMacro (MaxGridDimensions, unsigned int, 3)
void Read (std::istream &f)
void SetLinearSystemWrapper (LinearSystemWrapper::Pointer ls)
virtual void SetTimeStep (Float)
virtual void SetTimeStep (Float dt)
virtual void Solve (void)
 SolverHyperbolic ()
void UpdateDisplacements (void)
void Write (std::ostream &f)
void InitializeInterpolationGrid (const VectorType &size)

Public Attributes

ElementArray el
LoadArray load
Float m_beta
Float m_deltaT
Float m_gamma
MaterialArray mat
NodeArray node

Protected Attributes

LinearSystemWrapper::Pointer m_ls
unsigned int NGFN
unsigned int NMFC


Member Typedef Documentation

typedef Element::ArrayType itk::fem::Solver::ElementArray [inherited]

Array that holds pointers to all elements. since we want to be able to manipulate the array we have to use special pointers

Definition at line 54 of file itkFEMSolver.h.

typedef Element::Float itk::fem::Solver::Float [inherited]

Local float type

Definition at line 48 of file itkFEMSolver.h.

typedef itk::Image<Element::ConstPointer,MaxGridDimensions> itk::fem::Solver::InterpolationGridType [inherited]

Type used to store interpolation grid

Definition at line 95 of file itkFEMSolver.h.

typedef Load::ArrayType itk::fem::Solver::LoadArray [inherited]

Array that holds special pointers to all external loads

Definition at line 66 of file itkFEMSolver.h.

typedef Material::ArrayType itk::fem::Solver::MaterialArray [inherited]

Array that holds pointers to the materials

Definition at line 72 of file itkFEMSolver.h.

typedef Node::ArrayType itk::fem::Solver::NodeArray [inherited]

Array that holds special pointers to the nodes

Definition at line 60 of file itkFEMSolver.h.

typedef Element::VectorType itk::fem::Solver::VectorType [inherited]

VectorType from the Element base class

Definition at line 78 of file itkFEMSolver.h.


Member Enumeration Documentation

anonymous enum

Constants that specify, where matrices are strored.

Enumerator:
matrix_K 
matrix_M 
matrix_C 
matrix_tmp 

Definition at line 78 of file itkFEMSolverHyperbolic.h.

anonymous enum

Constants that specify, where vectors are strored.

Enumerator:
solution_d 
solution_v 
solution_a 

Definition at line 83 of file itkFEMSolverHyperbolic.h.

anonymous enum

Enumerator:
vector_dhat 
vector_vhat 
vector_ahat 
vector_tmp 

Definition at line 84 of file itkFEMSolverHyperbolic.h.


Constructor & Destructor Documentation

itk::fem::SolverHyperbolic::SolverHyperbolic (  ) 

Default constructor


Member Function Documentation

void itk::fem::Solver::ApplyBC ( int  dim = 0,
unsigned int  matrix = 0 
) [inherited]

Apply the boundary conditions to the system.

Note:
This function must be called after AssembleK().
Parameters:
matrix Index of a matrix, to which the BCs should be applied (master stiffness matrix). Normally this is zero, but in derived classes many matrices may be used and this index must be specified.
dim This is a parameter that can be passed to the function and is normally used with isotropic elements to specify the dimension in which the DOF is fixed.

Referenced by itk::fem::Solver::FinalizeMatrixAfterAssembly().

virtual void itk::fem::SolverHyperbolic::AssembleElementMatrix ( Element::Pointer  e  )  [virtual]

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

Reimplemented from itk::fem::Solver.

void itk::fem::Solver::AssembleF ( int  dim = 0  )  [inherited]

Assemble the master force vector.

Parameters:
dim This 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.

void itk::fem::Solver::AssembleK ( void   )  [inherited]

Assemble the master stiffness matrix (also apply the MFCs to K)

virtual void itk::fem::Solver::AssembleLandmarkContribution ( Element::Pointer  e,
float   
) [virtual, inherited]

Add the contribution of the landmark-containing elements to the correct position in the master stiffess matrix. Since more complex Solver classes may need to assemble many matrices and may also do some funky stuff to them, this function is virtual and can be overriden in a derived solver class.

virtual void itk::fem::Solver::Clear ( void   )  [virtual, inherited]

Cleans all data members, and initializes the solver to initial state.

void itk::fem::Solver::DecomposeK ( void   )  [inherited]

Decompose matrix using svd, qr, whatever ...

virtual void itk::fem::SolverHyperbolic::FinalizeMatrixAfterAssembly ( void   )  [virtual]

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

Reimplemented from itk::fem::Solver.

void itk::fem::Solver::GenerateGFN ( void   )  [inherited]

Assign a global freedom numbers to each DOF in a system. This must be done before any other solve function can be called.

Float itk::fem::Solver::GetDeformationEnergy ( unsigned int  SolutionIndex = 0  )  [inherited]

Get the total deformation energy using the chosen solution

const Element* itk::fem::Solver::GetElementAtPoint ( const VectorType pt  )  const [inherited]

Returns the pointer to the element which contains global point pt.

Parameters:
pt Point in global coordinate system.
Note:
Interpolation grid must be initializes before you can call this function.

const InterpolationGridType* itk::fem::Solver::GetInterpolationGrid ( void   )  const [inline, inherited]

Returns pointer to interpolation grid, which is an itk::Image of pointers to Element objects. Normally you would use physical coordinates to get specific points (pointers to elements) from the image. You can then use the Elemenet::InterpolateSolution member function on the returned element to obtain the solution at this point.

Note:
Physical coordinates in an image correspond to the global coordinate system in which the mesh (nodes) are.

Definition at line 132 of file itkFEMSolver.h.

References itk::SmartPointer< TObjectType >::GetPointer().

LinearSystemWrapper::Pointer itk::fem::Solver::GetLinearSystemWrapper (  )  [inline, inherited]

Gets the LinearSystemWrapper object.

See also:
SetLinearSystemWrapper

Definition at line 299 of file itkFEMSolver.h.

References itk::fem::Solver::m_ls.

unsigned int itk::fem::Solver::GetNumberOfDegreesOfFreedom ( void   )  [inline, inherited]

Definition at line 258 of file itkFEMSolver.h.

References itk::fem::Solver::NGFN.

Float itk::fem::Solver::GetSolution ( unsigned int  i,
unsigned int  which = 0 
) [inline, inherited]

Definition at line 253 of file itkFEMSolver.h.

References itk::fem::Solution::GetSolutionValue(), and itk::fem::Solver::m_ls.

virtual Float itk::fem::SolverHyperbolic::GetTimeStep ( void   )  const [inline, virtual]

Returns the time step used for dynamic problems.

Reimplemented from itk::fem::Solver.

Definition at line 72 of file itkFEMSolverHyperbolic.h.

References m_deltaT.

void itk::fem::Solver::InitializeInterpolationGrid ( const VectorType size  )  [inline, inherited]

Same as InitializeInterpolationGrid(size, {0,0...}, size);

Definition at line 116 of file itkFEMSolver.h.

References itk::fem::Solver::InitializeInterpolationGrid().

void itk::fem::Solver::InitializeInterpolationGrid ( const VectorType size,
const VectorType bb1,
const VectorType bb2 
) [inherited]

Initialize the interpolation grid. The interpolation grid is used to find elements that containg specific points in a mesh. The interpolation grid stores pointers to elements for each point on a grid thereby providing a fast way (lookup table) to perform interpolation of results.

Note:
Interpolation grid must be reinitialized each time a mesh changes.
Parameters:
size Vector that represents number of points on a grid in each dimension.
bb1 Lower limit of a bounding box of a grid.
bb2 Upper limit of a bounding box of a grid.
See also:
GetInterpolationGrid

Referenced by itk::fem::Solver::InitializeInterpolationGrid().

virtual void itk::fem::SolverHyperbolic::InitializeLinearSystemWrapper ( void   )  [virtual]

Initialize the linear system wrapper.

Reimplemented from itk::fem::Solver.

virtual void itk::fem::SolverHyperbolic::InitializeMatrixForAssembly ( unsigned int  N  )  [virtual]

Initializes the storasge for all master matrices.

Reimplemented from itk::fem::Solver.

itk::fem::Solver::itkStaticConstMacro ( MaxGridDimensions  ,
unsigned  int,
 
) [inherited]

Since the itk::Image is templated over the number of dimensions, we have to know this at compile time. Solver class, however, can handle elements in any number of dimensions. In order to be able to use the Image, we choose the maximum number of space dimension that this function will be able to handle. Any unused dimensions are filled with zero.

For example: If a 2D node coordinates are {1.0,3.0} then the corresponding phisycal point in an image is {1.0,3.0,0.0};

void itk::fem::Solver::Read ( std::istream &  f  )  [inherited]

Reads the whole system (nodes, materials and elements) from input stream

void itk::fem::Solver::SetLinearSystemWrapper ( LinearSystemWrapper::Pointer  ls  )  [inherited]

Sets the LinearSystemWrapper object that will be used when solving the master equation. If this function is not called, a default VNL linear system representation will be used (class LinearSystemWrapperVNL).

Parameters:
ls Pointer to an object of class which is derived from LinearSystemWrapper.
Note:
Once the LinearSystemWrapper object is changed, it is used until the member function SetLinearSystemWrapper is called again. Since LinearSystemWrapper object was created outside the Solver class, it should also be destroyed outside. Solver class will not destroy it when the Solver object is destroyed.

virtual void itk::fem::Solver::SetTimeStep ( Float   )  [inline, virtual, inherited]

Sets the time step used for dynamic problems.

Parameters:
dt New time step.

Definition at line 317 of file itkFEMSolver.h.

virtual void itk::fem::SolverHyperbolic::SetTimeStep ( Float  dt  )  [inline, virtual]

Definition at line 73 of file itkFEMSolverHyperbolic.h.

References m_deltaT.

virtual void itk::fem::SolverHyperbolic::Solve ( void   )  [virtual]

Solves the system for the next time step.

Reimplemented from itk::fem::Solver.

void itk::fem::Solver::UpdateDisplacements ( void   )  [inherited]

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

void itk::fem::Solver::Write ( std::ostream &  f  )  [inherited]

Writes everything (nodes, materials and elements) to output stream


Member Data Documentation

ElementArray itk::fem::Solver::el [inherited]

Definition at line 55 of file itkFEMSolver.h.

LoadArray itk::fem::Solver::load [inherited]

Definition at line 67 of file itkFEMSolver.h.

Float itk::fem::SolverHyperbolic::m_beta

Definition at line 87 of file itkFEMSolverHyperbolic.h.

Float itk::fem::SolverHyperbolic::m_deltaT

Definition at line 88 of file itkFEMSolverHyperbolic.h.

Referenced by GetTimeStep(), and SetTimeStep().

Float itk::fem::SolverHyperbolic::m_gamma

Definition at line 86 of file itkFEMSolverHyperbolic.h.

LinearSystemWrapper::Pointer itk::fem::Solver::m_ls [protected, inherited]

Pointer to LinearSystemWrapper object.

Definition at line 333 of file itkFEMSolver.h.

Referenced by itk::fem::Solver::GetLinearSystemWrapper(), and itk::fem::Solver::GetSolution().

MaterialArray itk::fem::Solver::mat [inherited]

Definition at line 73 of file itkFEMSolver.h.

unsigned int itk::fem::Solver::NGFN [protected, inherited]

Number of global degrees of freedom in a system

Definition at line 324 of file itkFEMSolver.h.

Referenced by itk::fem::Solver::GetNumberOfDegreesOfFreedom().

unsigned int itk::fem::Solver::NMFC [protected, inherited]

Number of multi freedom constraints in a system. This member is set in a AssembleK function.

Definition at line 330 of file itkFEMSolver.h.

NodeArray itk::fem::Solver::node [inherited]

Definition at line 61 of file itkFEMSolver.h.


The documentation for this class was generated from the following file:
Generated at Wed Jul 30 12:54:43 2008 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000