18 #ifndef itkFEMSolverHyperbolic_h
19 #define itkFEMSolverHyperbolic_h
34 template <
unsigned int TDimension = 3>
52 itkSetMacro(Gamma,
Float);
53 itkGetMacro(Gamma,
Float);
57 itkSetMacro(Beta,
Float);
58 itkGetMacro(Beta,
Float);
62 itkSetMacro(NumberOfIterations,
unsigned int);
63 itkGetMacro(NumberOfIterations,
unsigned int);
69 return this->m_TimeStep;
79 this->m_TimeStep = dt;
88 virtual void InitializeLinearSystemWrapper(
void) ITK_OVERRIDE;
97 virtual
void InitializeMatrixForAssembly(
unsigned int N) ITK_OVERRIDE;
103 virtual
void FinalizeMatrixAfterAssembly(
void ) ITK_OVERRIDE;
107 void GenerateData() ITK_OVERRIDE;
111 virtual
void RunSolver(
void) ITK_OVERRIDE;
117 enum { matrix_K=1, matrix_M=2, matrix_C=3, matrix_tmp=4 };
120 enum { solution_d=0, solution_v=1, solution_a=2};
121 enum { vector_dhat=2, vector_vhat=3, vector_ahat=4, vector_tmp=5 };
135 #ifndef ITK_MANUAL_INSTANTIATION
136 #include "itkFEMSolverHyperbolic.hxx"
140 #endif // #ifndef itkFEMSolverHyperbolic_h
virtual void PrintSelf(std::ostream &os, Indent indent) const override
Solver< TDimension > Superclass
Light weight base class for most itk classes.
unsigned int m_NumberOfIterations
SmartPointer< Self > Pointer
virtual ~SolverHyperbolic()
SmartPointer< const Self > ConstPointer
FEM solver used to generate a solution for a FE formulation.
Abstract base element class.
Control indentation during Print() invocation.
virtual Float GetTimeStep(void) const override
Solver class suitable for hyperbolic problems.M*ddu + C*du + K*u=F.
virtual void SetTimeStep(Float dt) override
static ITK_CONSTEXPR_VAR double e
The base of the natural logarithm or Euler's number