Add linear elastic solver
This MR adds a solver for the linear elasticity equations and the library and pre/post-processing infrastructure that is needed to support it. In particular, the primary application for the solver within Nektar++ is for mesh generation purposes, whereby the mesh is treated as a solid body and deformed at the boundary to align the curvilinear elements with a given surface.
To do this robustly, as the linear elastic equations are only valid for small deformations, the implementation presented here adopts a multi-step approach, solving the equations after each step. As such, routines are needed in MultiRegions
and SpatialDomains
to reset the geometry information and rebuild the matrix system at each step.
The following changes have been made to accommodate this:
-
Geometry
objects now have aReset
method, which clears the geometry coefficients of itself and any derived edges/faces, rebuilding this from the vertex and curvature information. To facilitate this, most elements now have aSetUpXmap
routine which regenerates them_xmap
object as curvature may have been added to the element. - Similarly,
ExpList
also has aReset
method which clears the matrix managers and causes matrices to be rebuild on the next call toHelmSolve
or similar. - Added support for 1D curved segments in 2D space to
MeshConvert
andMeshGraph
. -
FieldConvert
has three new modules:- a displacement processing module which calculates the displacement between an XML manifold and a 2D/3D domain's boundary region and outputs a file suitable for a boundary condition in the elasticity solver;
- a deformation processing module which takes the displacement field generated by the elasticity solver and applies it to the mesh;
- and an XML output module which can be used in conjunction with the previous module. Since this is likely to be useful elsewhere, most of the code for this has been added as a
MeshGraph
routine.
-
XmlToVtk
has a new command line argument to output the distribution of scaled Jacobians of a given mesh for quality assessment purposes. - The elasticity code itself which includes the thermal terms discussed in publications.
- Documentation for all of the above.