CRV

The crv library is a library to support curved meshes, meant to perform all traditional meshing operations for curved elements. Currently, Bezier simplices are supported.

There are several example files that test and make use of this functionality all starting with bezier<testname>.

In practice, geometry models are required (analytic or CAD), and this works best with those formats, however all of the functionality will work in the absence of geometry.

It is also assumed integers are sufficient for storing entity counts, as a higher-order should have fewer entities, and not need long integers.

There is also support for visualization of high-order fields, on linear or curved meshes, through writeCurvedVtuFiles, which uses subdivision to output into current paraview format. This is all in crvVtk.cc with function definitions in crv.h. There is currently no support for IP fields on curved meshes yet, as far as output is concerned.

This works using subdivision. Triangles are divided into more triangles, Tetrahedra are first divided into four hexes, which are then divided into more hexes.

They will also write two additional variables for each entity, detJacobian, the scaled Jacobian determinant, a quality measure, and minDetJacobian, the scaled Jacobian determinant, but the minimum of the entity. This allows for thresholding and filtering in paraview, as well as proper quality assessment.

ie, crv::writeCurvedVtuFiles(mesh,apf::Mesh::TET,4,"curvedMesh") writes a pvtu file and vtu files with each tet subdivided into 4 (each tet split into 4 hexes, each hex split into 2 hexes per direction).

crv::writeCurvedVtuFiles(mesh,apf::Mesh::TRIANGLE,4,"curvedMesh") writes a pvtu file and vtu files with each triangle subdivided into 16 triangles.

Viewing each entity type seperately is a useful debugging tool, since a 3D mesh with just faces subdivided is much smaller than the full subdivided tet mesh, and makes viewing the outer surface much easier.

There is crv::writeControlPointVtuFiles and crv::writeInterpolationPointVtuFiles, which write out the actual node values, with point data showing entity type, allowing for debugging point locations by looking at where the control points are, and what interpolating location their xi corresponds to.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines