19 #ifndef itkFEMSolver_h
20 #define itkFEMSolver_h
72 template <
unsigned int VDimension = 3>
88 itkStaticConstMacro(FEMDimension,
unsigned int, VDimension);
89 itkStaticConstMacro(MaxDimensions,
unsigned int, 3);
138 virtual Float GetTimeStep()
const;
145 virtual void SetTimeStep(
Float dt);
148 Float GetSolution(
unsigned int i,
unsigned int which = 0);
152 using Superclass::SetInput;
172 Float GetDeformationEnergy(
unsigned int SolutionIndex = 0);
197 return m_LinearSystem;
214 void InitializeInterpolationGrid(
const InterpolationGridSizeType & size,
const InterpolationGridPointType & bb1,
215 const InterpolationGridPointType & bb2);
226 for(
unsigned int i = 0; i < FEMDimension; i++ )
228 bb2[i] = size[i] - 1.0;
230 InitializeInterpolationGrid(size, bb1, bb2);
235 void InitializeInterpolationGrid(
const InterpolationGridRegionType & region,
236 const InterpolationGridPointType & origin,
237 const InterpolationGridSpacingType & spacing,
238 const InterpolationGridDirectionType & direction);
252 return m_InterpolationGrid.GetPointer();
259 using Superclass::MakeOutput;
281 virtual ~Solver() ITK_OVERRIDE;
282 virtual
void PrintSelf(std::ostream& os,
Indent indent) const ITK_OVERRIDE;
286 virtual
void GenerateData() ITK_OVERRIDE;
308 virtual
void InitializeMatrixForAssembly(
unsigned int N);
315 virtual
void FinalizeMatrixAfterAssembly(
void)
351 void ApplyBC(
int dim = 0,
unsigned int matrix = 0);
360 void AssembleF(
int dim = 0);
367 virtual void RunSolver();
373 void UpdateDisplacements();
376 void FillInterpolationGrid();
382 virtual void InitializeLinearSystemWrapper();
421 #ifndef ITK_MANUAL_INSTANTIATION
422 #include "itkFEMSolver.hxx"
425 #endif // #ifndef itkFEMSolver_h
Superclass::RegionType RegionType
void InitializeInterpolationGrid(const InterpolationGridSizeType &size)
Light weight base class for most itk classes.
InterpolationGridType::PointType InterpolationGridPointType
Implements N-dimensional Finite element (FE) models including elements, materials, and loads.
Represent the size (bounds) of a n-dimensional image.
InterpolationGridType::SpacingType InterpolationGridSpacingType
InterpolationGridType::DirectionType InterpolationGridDirectionType
InterpolationGridPointerType m_InterpolationGrid
InterpolationGridSpacingType m_Spacing
Element::VectorType VectorType
FEMObjectType::ConstPointer FEMObjectConstPointer
FEMObjectType::Pointer FEMObjectPointer
InterpolationGridDirectionType m_Direction
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
itk::Image< Element::ConstPointer, VDimension > InterpolationGridType
void Fill(const ValueType &)
itk::fem::FEMObject< VDimension > FEMObjectType
Load::ArrayType LoadArray
SmartPointer< Self > Pointer
InterpolationGridType::RegionType InterpolationGridRegionType
FEMObjectPointer m_FEMObject
Defines all functions required by Solver class to allocate, assemble and solve a linear system of equ...
InterpolationGridType::IndexType InterpolationGridIndexType
LinearSystemWrapper::Pointer m_LinearSystem
LinearSystemWrapper::Pointer GetLinearSystemWrapper()
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
vnl_vector< Float > VectorType
InterpolationGridRegionType m_Region
Element::ArrayType ElementArray
InterpolationGridType::Pointer InterpolationGridPointerType
InterpolationGridPointType m_Origin
FEM solver used to generate a solution for a FE formulation.
A region represents some portion or piece of data.
Element::Node::ArrayType NodeArray
Abstract base element class.
InterpolationGridType::SizeType InterpolationGridSizeType
ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
DataObject::Pointer DataObjectPointer
const InterpolationGridType * GetInterpolationGrid(void) const
Control indentation during Print() invocation.
static ITK_CONSTEXPR_VAR double e
The base of the natural logarithm or Euler's number
SmartPointer< const Self > ConstPointer
LinearSystemWrapper class that uses VNL numeric library functions to define a sparse linear system of...
Templated n-dimensional image class.
LinearSystemWrapperVNL m_LinearSystemVNL
Material::ArrayType MaterialArray