Refactoring itk::FEM framework - V4

From KitwarePublic
Jump to navigationJump to search

This page outlines the proposed changes to the itk::FEM framework. Feed back on these changes should be sent to Vincent Magnotta (vincent-magnotta - at- uiowa.edu). A number of these changes will break backwards compatibility.

Encapsulate class variables in FEM Framework

itk::Solver

  1. Move the following class variables from public to protected:
    • node
    • el
    • load
    • mat
  2. Add the following member functions:
    • bool AddNextElement(ElementType *element) – Add the next element to the mesh data structure. This will be used to

replace the solver->el.push_back()

    • bool InsertElement(ElementType *element, unsigned long index) – Insert the element to the position within the mesh data structure.
    • bool AddNextNode(NodeType *node) – Add the next node to the

mesh data structure. This will be used to replace the solver->node.push_back()

    • bool InsertNode(NodeType *node, unsigned long index) – Insert

the node into the desired location within the mesh data structure.

    • bool AddNextMaterial(itk::fem::FEMP<itk::fem::Material>) – Add the next material type to the solver.
    • bool InsertMaterial(itk::fem::FEMP<itk::fem::Material>, int) – Insert the material property to the specified index in the

solver material property array.

    • bool AddNextLoad(itk::fem::FEMP<itk::fem::Load>) – Add the

next load to the solver.

    • bool InsertLoad(itk::fem::FEMP<itk::fem::Load>, int) – Insert the load to the specified index in the solver load array.
    • bool GetElement(unsigned long index, ElementType *element) – Get the specified element from the mesh data structure
    • bool GetNode(unsigned long index, NodeType *node) – Get the specified node from the mesh data structure
    • bool GetMaterial(itk::fem::FEMP<itk::fem::Material>, int) – Get the specified material from the solver.
    • bool GetLoad(itk::fem::FEMP<itk::fem::Load>, int) – Get the specified load from the solver.
    • unsigned int GetNumberOfNodes() – Returns the number of nodes stored in the solver.
    • unsigned int GetNumberOfElements()– Returns the number of element stored in the solver.
    • unsigned int GetNumberOfMaterials()– Returns the number of materials stored in the solver.
    • unsigned int GetNumberOfLoads() – Returns the number of loads stored in the solver
    • bool ClearMaterialArray() – Insert the load to the specified index in the solver load array.
    • bool ClearloadArray() – Insert the load to the specified index in the solver load array.
    • bool RemoveMaterial(int) – Remove the material property at the specified index from the solver Material array.
    • bool RemoveLoad(int) – Remove the load at the specified index from the solver load array.
    • void SetMesh(itk::Mesh) – Specify the entire mesh to be used by the solver.
    • itk::Mesh GetMesh() – Returns the mesh used by the solver.
    • MeshType::Pointer GetDeformedMesh() – Returns the resulting mesh after applying the loading and boundary conditions on

the mesh.

    • itk::Array<double>::Pointer GetMeshStresses() – Returns the stresses for the mesh with each element of the array corresponding to an element in the mesh.
    • itk::Array<double>::Pointer GetMeshStrains()– Returns the strains for the mesh with each element of the array corresponding to an element in the mesh.

itk::Load