00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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 }}
00096
00097 #endif // #ifndef __itkFEMSolverHyperbolic_h