Merge branch 'feature/mesh-deform' into 'master'
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 a `Reset` 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 a `SetUpXmap` routine which regenerates the `m_xmap` object as curvature may have been added to the element. - Similarly, `ExpList` also has a `Reset` method which clears the matrix managers and causes matrices to be rebuild on the next call to `HelmSolve` or similar. - Added support for 1D curved segments in 2D space to `MeshConvert` and `MeshGraph`. - `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. See merge request !400
Showing with 5776 additions and 979 deletions