00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkFEMSolverHyperbolic.h,v $ 00005 Language: C++ 00006 Date: $Date: 2009-01-30 21:53:03 $ 00007 Version: $Revision: 1.4 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef __itkFEMSolverHyperbolic_h 00019 #define __itkFEMSolverHyperbolic_h 00020 00021 #include "itkFEMSolver.h" 00022 00023 namespace itk { 00024 namespace fem { 00025 00033 class SolverHyperbolic : public Solver 00034 { 00035 public: 00036 00040 SolverHyperbolic(); 00041 00045 virtual void InitializeLinearSystemWrapper(void); 00046 00051 virtual void AssembleElementMatrix(Element::Pointer e); 00052 00056 virtual void InitializeMatrixForAssembly(unsigned int N); 00057 00062 virtual void FinalizeMatrixAfterAssembly( void ); 00063 00067 virtual void Solve( void ); 00068 00069 virtual Float GetTimeStep( void ) const { return m_deltaT; } 00070 virtual void SetTimeStep(Float dt) { this->m_deltaT=dt; } 00071 00075 enum { matrix_K=1, matrix_M=2, matrix_C=3, matrix_tmp=4 }; 00076 00080 enum { solution_d=0, solution_v=1, solution_a=2}; 00081 enum { vector_dhat=2, vector_vhat=3, vector_ahat=4, vector_tmp=5 }; 00082 00083 Float m_gamma; 00084 Float m_beta; 00085 Float m_deltaT; 00086 00087 }; 00088 00089 }} // end namespace itk::fem 00090 00091 #endif // #ifndef __itkFEMSolverHyperbolic_h 00092