00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkFEMSolverHyperbolic.h,v $ 00005 Language: C++ 00006 Date: $Date: 2002/06/06 13:23:08 $ 00007 Version: $Revision: 1.2 $ 00008 00009 Copyright (c) 2002 Insight 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 00026 00027 00028 00036 class SolverHyperbolic : public Solver 00037 { 00038 public: 00039 00043 SolverHyperbolic(); 00044 00048 virtual void InitializeLinearSystemWrapper(void); 00049 00054 virtual void AssembleElementMatrix(Element::Pointer e); 00055 00059 virtual void InitializeMatrixForAssembly(unsigned int N); 00060 00065 virtual void FinalizeMatrixAfterAssembly( void ); 00066 00070 virtual void Solve( void ); 00071 00072 virtual Float GetTimeStep( void ) const { return m_deltaT; } 00073 virtual void SetTimeStep(Float dt) { this->m_deltaT=dt; } 00074 00078 enum { matrix_K=1, matrix_M=2, matrix_C=3, matrix_tmp=4 }; 00079 00083 enum { solution_d=0, solution_v=1, solution_a=2}; 00084 enum { vector_dhat=2, vector_vhat=3, vector_ahat=4, vector_tmp=5 }; 00085 00086 Float m_gamma; 00087 Float m_beta; 00088 Float m_deltaT; 00089 00090 }; 00091 00092 00093 00094 00095 }} // end namespace itk::fem 00096 00097 #endif // #ifndef __itkFEMSolverHyperbolic_h