NURBS.jl
This package provides functionality to define and evaluate B-spline, Curry-Schoenberg, and NURBS (non-uniform rational B-spline) basis functions, their derivatives, as well as curves and surfaces based on B-spline and NURBS basis functions.
Overview
The following aspects are implemented (✓) and planned (⌛):
B-spline, Curry-Schoenberg & NURBS evaluation
- ✓ Basis & derivatives
- ✓ Curves & derivatives
- ✓ Surfaces & derivatives
Fundamental operations
- ✓ File I/O (.step)
- ✓ Knot manipulation
- knot insertion / refinement
- knot removal
- splitting of curves and surfaces
- ✓ Transformation of curves and surfaces
- scaling
- translating
- rotating
- mirroring
- ⌛ Degree elevation / reduction
- ⌛ Construction of common geometries
Connectivity
- ✓ Determine patch connectivity
- identify interfaces between patches
- introduce per patch local numbering for vertices and edges
- ✓ Virtual Bezier mesh connectivty (for FEM)
- introduce on each patch a virtual Bezier mesh
- determine adjacency information of mesh cells
Concerning the B-splines itself, chapters 2-5.4 of [1] are implemented so far (adapted to 1-based indexing).
Open knot vectors are assumed everywhere, if not stated otherwise.
The parametric space is assumed to be $[0, 1]$ or ${[0,1]}^2$ everywhere.
Installation
Installing NURBS is done by entering the package manager (enter ]
at the julia REPL) and issuing:
pkg> add NURBS
References
The implementation is based on
- [1] L. Piegl, The NURBS Book, Berlin Heidelberg, Springer-Verlag, 1997.
- [2] R.N. Simpson, et. al, A Two-Dimensional Isogeometric Boundary Element Method for Elastostatic Analysis, Comput. Methods Appl. Mech. Engrg., 2012.
- [3] C. de Boor, A Practical Guide to Splines, revised ed., Appl. Math. Sci., vol. 27, Springer-Verlag, New York, 2001.
- [4] L. Beirão da Veiga, A. Buffa, G. Sangalli, R. Vázquez, Analysis-suitable T-splines of arbitrary degree: Definition, linear independence and approximation properties, Math. Models Methods Appl. Sci. 23, 2013.