
The use_cases serve as examples of creating and filling simple meshes.
The file UseCaseMain.cpp acts as a driver, running each of the separate use-cases
in succession.
Each use-case mesh is embodied in a struct or class called UseCase_<n>_Mesh.
The files for those classes contain the code that populates the MetaData and
BulkData mesh objects with mesh-entities, fields, etc.
UseCaseMain.cpp creates the UseCase_<n>_Mesh object, then calls functions
'populate' and 'verifyMesh'.


For a completely different example of using stk_classic::mesh, see the
Mantevo 'miniFE' application, which is a miniature finite-element application.
miniFE can be downloaded from http://software.sandia.gov/mantevo.
After unpacking the miniFE source code, see the file stk_mesh_description.hpp.
miniFE builds a mesh representing a brick-shaped domain of hexahedral elements,
defines a coordinate field on the nodes, and assembles a finite-element
problem, solving the steady-state conduction equation.


UseCase_2:
  3D, (nLeft+nRight)x1x1 elements
  Includes a coordinate field on nodes, a temperature field on nodes, 
    and a volume field on elements.
  This use case sets up the mesh, assigns coordinates, temperature, and volume
  data to the fields and then demonstrates how all this data is retrieved from
  the mesh by verifying everything is correct through a set of functions on the
  class.


UseCase_3:
  3D, heterogeneous mesh composed of several different element types.
  This is a heterogeneous mesh including:  hexahedron, wedge, tetrahedron,
    pyramid, quadrilateral shell, and triangle shell.  
  Includes a coordinate field on nodes, a centroid field on elements, a
    temperature field on nodes, and a volume field on hexahedrons, wedges,
    tetrahedrons, and pyramids, and an element_node coordinate field on elements
    which sets up a set of pointers in the element field which point to the nodal
    coordinate field data for the nodes attached to that element.


UseCase_4:
  3D, 2x Hex and 3x Wedge mesh with linear and quadratic elements and 66 nodes.
  Includes a coordinate field on nodes, a velocity field on nodes, a centroid
    field on elements, a temperature field on nodes, a pressure field on vertex
    nodes, a boundary field on nodes in the sideset, and an element_node
    coordinate field on the quadratic elements.

  This use case demonstrates how to put the vertex nodes from the quadratic hex
    and wedge elements into a vertex part through the use of part relations and
    stencils.  This is used to put the pressure field on the vertex nodes.

  This use case sets up the mesh, assigns the field data, and runs two centroid
    algorithms on the quadratic hex and wedge elements, then demonstrates how all
    this data is retrieved from the mesh by verifying the data.

UseCase_ChangeOwner:
  2D, 4x Quadrilateral elements
  This use case demonsrates how to move elements from one processor to another.

UseCase_ElementDeath_1:
  "This Use Case demonstrates iteratively removing entities from a mesh and re-skinning."
  GridFixture (2D, 4x4 faces, 25 nodes)
  Mesh is skinned with sides
  Iteratively, faces are removed and the mesh is re-skinned
  Faces are removed according to the documentation in UseCase_ElementDeath_1_validation_helpers.cpp


UseCase_Skinning_1:
  First example: 
    "This Use Case demonstrates removing an interior entity from a mesh and re-skinning"
    HexFixture (3D, 3x3x3 hex elements, standard parallel distribution)
    Mesh is skinned with faces
    Element in middle of mesh (entirely on the inside), is separated out 
    Mesh is re-skinned and faces are added around interior element and around interior of mesh.
  Second example:
    "This Use Case demonstrates removing an interior layer from a mesh and re-skinning"
    HexFixture (3D, 3x3x3 hex elements, standard parallel distribution)
    Mesh is skinned with faces
    Entire middle level (x=1) is separated out
    Mesh is re-skinned and faces are added to middle layer and to remaining mesh

UseCase_Skinning_1b:
  "This Use Case demonstrates converting an entity into a set of particles"
  HexFixture (3D, 3x3x3 hex elements, standard parallel distribution) 
  Iteratively do the following (for every element in a mesh of size 3x3x3):
    create the fixture with a skin_part and a coordinate field on particles
    generate the mesh
    skin the mesh
    Select one of the elements and destroy the element and create particles in its place
    re-skin the mesh

UseCase_Skinning_2:
  "This Use Case demonstrates skinning and element death involving shells"
  HexFixture (3D, 2x1x1 hex elements, standard parallel distribution)
  create skin_part and shell_part
  Attach shards ShellQuadrilateral to the shell_part
  generate the mesh
  Select the element at position (0,0,0) to add a shell between it and the other element
  Skin the mesh and verify the correct number of skin faces
  Destroy the element at position (0,0,0)
  Re-skin the mesh and verify the correct number of skin faces


