Implementation of Rational Bézier Cells into VTK

March 18, 2020
A ball bearing shearing simulation
Bezier cell type

Introduction by TJ Corona, Senior R&D Engineer at Kitware

VTK 8.1.0 saw the introduction of Lagrange Finite Elements to VTK. These cells use Lagrange polynomials as basis functions to describe the geometry of 2- and 3-dimensional cells. There are other sets of basis functions that are often used to describe higher-order finite elements, and each have different mathematical properties that make them useful for certain tasks. For example, Lagrange shape functions have the property that the function they represent is guaranteed to go through each of its control points. 

Another set of basis functions, called Bernstein-Bezier functions (hereafter referred to simply as Bezier functions), are frequently used due to their geometric scaling properties and the fact that the functions’ control points constitute a convex hull for their domain. When rational weights are assigned to the control points of a Bezier cell, Bezier cells can conform to an even greater number of shapes. For these reasons, Computer-Aided Design (CAD) software most commonly employ Bezier shape functions to model geometric elements.

The development team at CoreForm have extended VTK’s support for higher order cells to include another class of cell types to VTK that are described using rational Bezier shape functions. As a result, VTK is now able to accept shapes from input sources that internally use Bezier shapes without having to translate or approximate the input cell information. VTK can also now model different shapes that it couldn’t in the past.

You can read the full report here: Implementation of rational Bézier cells into VTK

If you’d like to learn more about how we introduced Lagrange Finite Elements to VTK, you can read the article in the Source, Kitware’s quarterly magazine.

1 comment to Implementation of Rational Bézier Cells into VTK

  1. Hello. Is it possible for you to send the .vtu files that TestBezier.cxx produces? I want to write a simple vtkwriter in my fe-solver, but do not know how to specify the weights and anisotropic order for the bezier cells (ie, what xml tags are needed in the output .vtu file?).

    I am not able to compile vtk from source and run the testbezier.cxx myself, so it would be really nice if you could send one or more xml/vtu example files for me to take a look at.

Leave a Reply