You are on page 1of 93

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/235784548

An introduction to standard and enriched isogeometric analysis through a


simple Matlab code

Article  in  Computers & Structures · January 2012

CITATIONS READS

0 2,175

4 authors, including:

Vinh Phu Nguyen Stéphane Pierre Alain Bordas


Monash University (Australia) University of Luxembourg
95 PUBLICATIONS   2,879 CITATIONS    337 PUBLICATIONS   10,417 CITATIONS   

SEE PROFILE SEE PROFILE

Timon Rabczuk
Bauhaus Universität Weimar
622 PUBLICATIONS   22,793 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Special Issue "Advances in Machine Learning Prediction Models" View project

Minimum energy multiple crack propagation View project

All content following this page was uploaded by Vinh Phu Nguyen on 25 October 2017.

The user has requested enhancement of the downloaded file.


Isogeometric Analysis: A review and computer implementation aspects

Vinh Phu Nguyena,1 , Robert N. Simpsona,2 , Stéphane P.A. Bordasa,3,∗, Timon Rabczukb,4
a School of Engineering, Institute of Mechanics and Advanced Materials, Cardiff University, Queen’s Buildings, The Parade, Cardiff
CF24 3AA
b Institute of Structural Mechanics, Bauhaus-Universität Weimar, Marienstraße 15 99423 Weimar

Abstract

Isogeometric analysis (IGA) is a fundamental step forward in computational mechanics that offers the possibility of
integrating methods for analysis into Computer Aided Design (CAD) tools and vice versa. The benefits of such an
approach are evident, since the time taken from design to analysis is greatly reduced leading to large savings in cost
and time for industry. The tight coupling of CAD and analysis within IGA requires knowledge from both fields
and it is one of the goals of the present paper to outline much of the commonly used notation. In this manuscript,
through a clear and simple Matlab
R
implementation, we present an introduction to IGA applied to the Finite Element
(FE) method and related computer implementation aspects. Furthermore, implementation of the extended IGA which

incorporates enrichment functions through the partition of unity method (PUM) is also presented, where several fracture
examples in both two-dimensions and three-dimensions are given as illustration. The open source Matlab
R
code which
accompanies the present paper can be applied to one, two and three-dimensional problems for linear elasticity, linear
elastic fracture mechanics, structural mechanics (beams/plates/shells including large displacements and rotations) and
Poisson problems with or without enrichment. It also implements the Bézier extraction concept that allows FE analysis
to be performed on T-spline geometries. An attempt was also made to include a review of recent developments of IGA.
Keywords: isogeometric analysis, linear elasticity, Matlab
R
, spline, NURBS, finite elements, partition of unity,
enrichment, 3D cracks, boundary conditions, CAD, large displacements and rotations, shells

∗ Corresponding author
1 nguyenpv@cardiff.ac.uk
2 SimpsonR4@cardiff.ac.uk
3 stephane.bordas@alum.northwestern.edu
4 timon.rabczuk@uni-weimar.de

Preprint submitted to Elsevier April 24, 2013


1. Introduction

1.1. Underlying concepts of isogeometric analysis

The predominant technology that is used by CAD to represent complex geometries is the Non-Uniform Rational B-
spline (NURBS). This allows certain geometries to be represented exactly that can only be approximated by polynomial
functions, such as conic and circular sections. There is a vast array of literature focused on NURBS (e.g. [1], [2]) and as

a result of several decades of research, many efficient computer algorithms exist for their fast evaluation and refinement.
The key observation that was made by Hughes et al. [3] was that NURBS can not only be used to describe the geometry
of a problem, but can also be used to construct finite approximations for analysis and coined such an array of methods
‘Isogeometric Analysis’ (IGA). Since this seminal paper, a monograph were published entirely on the subject [4] and
applications were found in several fields including structural mechanics, solid mechanics, fluid mechanics and contact
mechanics. We give in this section an overview of some of these recent developments while outlining the benefits and
shortcomings of IGA. It should be emphasized that the idea of using CAD technologies in finite elements dates back
at least to [5, 6] where B-splines were used as shape functions in FEM and subdivision surfaces were adopted to model
shells [7]. We also review some of the recent contemporary attempts at simplifying the CAD-FEA integration by
separating boundary and field variable discretization.

1.2. Applications

In contact formulations using conventional geometry discretisations, faceted surfaces are often found on contact

surfaces that can lead to jumps and oscillations in traction responses unless very fine meshes are used. The benefits of
using NURBS over such an approach are therefore evident, since the contact surface is now smooth leading to more
physically accurate contact stresses. Recent work in this area includes [8, 9, 10, 11, 12].
Another area where IGA has shown advantages over traditional approaches is optimisation problems [13, 14, 15, 16].
IGA is particularly suited to such problems due to the tight coupling with CAD models and offers an extremely attractive
approach for industrial applications. Moreover, it was found that certain numerical methods can be closely integrated
with CAD where only a surface or boundary representation is required. In [17, 18] an isogeometric boundary element
method was presented where no meshing is required at all allowing CAD models to be used directly for analysis.
Shell and plate problems are another field of which IGA has demonstrated beneficial properties over conventional
approaches [19, 20, 21, 22, 23, 24, 25]. The smoothness of the NURBS basis functions allows for a straightforward

2
construction of plate/shell elements. Particularly for thin shells, rotation-free formulations can be easily constructed
[20, 26]. Furthermore, isogeometric plate/shell elements exhibit shear-locking much less pronouncedly compared to
standard FE plate/shell elements. Elements with smooth boundaries such as circular and cylindrical elements were
successfully constructed using the IGA concept [27, 28].
The smoothness of NURBS basis functions is attractive for analysis of fluids [29, 30, 31] and for fluid-structure
interaction problems [32, 33]. In addition, due to the ease of constructing high order continuous basis functions, IGA

has been used with great success in solving PDEs that incorporate fourth order (or higher) derivatives of the field
variable such as the Hill-Cahnard equation [34], explicit gradient damage models [35] and gradient elasticity [36]. The
high order NURBS basis have also found potential application in the Kohn-Sham equation for electronic structure
modeling of semiconducting materials [37].
NURBS also provide advantageous properties for structural vibration problems [38, 39, 40, 41]–the k-method was
shown to provide more robust and accurate frequency spectra than typical higher-order FE p-method. Particularly,
the optical branches of frequency spectra, which have been identified as contributors to Gibbs phenomena in wave
propagation problems (and the cause of rapid degradation of higher modes in p-version of FEM), are eliminated.
However when lumped mass matrices were used, the accuracy is limited to second order for any basis order. High order
isogeometric lumped mass matrices are not yet available. The mathematical properties of IGA were studied in detail
by Evans et al.[42].
The isogeometric concept has also spread to the meshfree field, see e.g., [43, 44] in which splines-based meshfree
methods were presented. Industrial applications of IGA were presented in e.g., [45, 18]. IGA has also found applications

in experimental mechanics as shown in [46] where it was shown that NURBS-based DIC (Digital Image Correlation)
outperforms standard FE DIC.

1.3. Shortcomings of NURBS and alternative geometry discretisations

NURBS are ubiquitous in CAD but were shown to exhibit major shortcomings, such as the inability to produce
watertight geometries with no gaps and overlaps which often complicate mesh generation. From the perspective of
analysis however, the major shortcoming is perhaps their tensor product structure of NURBS, where refinement must

be a global operation. Refinement algorithms required for error estimation and adaptivity are therefore inefficient.
As a solution to this, T-splines [47] were recently developed to overcome the limitations of NURBS while making use

3
of existing NURBS algorithms. T-splines correct the deficiencies of NURBS since local refinement and coarsening is
permitted, and gap/overlaps are precluded. However, [48] note that linear independence of the T-spline basis functions
is not guaranteed on generic T-meshes. Therefore, [49] propose analysis-suitable T-splines, a mildly restricted subset of
T-splines which appears to meet the demands of both design and analysis. Utilization of T-splines in an IGA framework
has been illustrated in [50, 51]. Scott et al.[52] showed that through an efficient Bézier extraction process, T-splines
can be incorporated efficiently into existing FE codes.

Alternatives to T-splines are polycube splines [53], PHT-splines [54] and LR-spline [55] among others. The PHT-
splines (polynomial spline over hierarchical T-meshes) were extended to rational splines and applied in [56, 57] to
problems in elasticity for continua and thin structures. Adaptive refinement with PHT-splines is particularly simple.
Though T-splines allow for local adaptive refinement, the complexity of knot insertion under adaptive refinement is
complex, particularly in 3D. Yet another possibility is provided by hierarchical B-splines [58, 59, 60] and the unstruc-
tured Powell-Sabin splines [61]. In particular, the hierarchical B-splines finite cell method [59] furnishes a seamless
CAD-FEA integration for very complex geometries. We refer also to [62] for a IGA with finite element based local
refinement capability. Different subdivision surface techniques (Catmull-Clark, Loop) were utilized for solids ans shells
modeling [63, 64].
In the computer aided geometric design, patching multiple NURBS to form complex topology is not easy for certain
continuity between adjacent patches should be maintained. Trimming techniques provide a promising alternative for
representing complex NURBS domains. In [65] a trimmed surface based analysis framework has been proposed where
the NURBS-enhanced FEM [66, 67] was applied to define a suitable integration domain within the parameter space.

In a recent contribution [68], the authors presented another method to deal with trimmed NURBS geometries.

1.4. Discontinuities and fracture

IGA was applied to cohesive fracture [69] including a framework for modeling debonding along material interfaces
using NURBS and propagating cohesive cracks using T-splines. The method hinges upon the ability to specify the
continuity of NURBS/T-splines through a process known as knot insertion. As a variation of the eXtended Finite
Element Method (XFEM) [70], IGA was applied to fracture using the partition of unity method (PUM) to capture

two dimensional strong discontinuities and crack tip singularities efficiently [71, 72]. In [73] an explicit isogeometric
enrichment technique was proposed for modeling material interfaces and cracks exactly. Note that this method is

4
contrary to PUM-based enrichment methods which define the cracks implicitly.
A phase field model for dynamic fracture was presented in [74] where adaptive refinement with T-splines provides
an effective method for simulating fracture in three dimensions. In [75] high order B-splines were utilized to efficiently
model delamination of composite specimens. Continuum description of fracture using explicit gradient damage models
was also studied using NURBS FEs [35].

1.5. Alternatives to IGA

Other techniques which integrate CAD and analysis were introduced at least as early as 2003, such as the use
of subdivision surfaces to model shells [7], NURBS-enhanced finite elements [66, 67] and NURBS for BEM shape
optimisation [76]. Immersed boundary methods, see e.g., [77] and references therein, the finite cell method [59, 78], the
structured XFEM [79, 80] are yet another alternatives to tying numerical simulations and CAD. But we must recognise
that for the fields of CAD and analysis to work seamlessly, the technologies used for discretisation in each must either
be the same or be converted easily between the two.

1.6. Computational aspects

Some major computational aspects of IGA which have been studied so far include (i) locking issue, (ii) sensitivity to
mesh distortion, (iii) impact of high continuity of NURBS on direct solvers, (iv) efficiency in large scale computations
and (v) construction of a trivariate solid for a given bivariate surface representation.
Although the ultra-smoothness of NURBS basis functions reduces to some extent the locking phenomena for
constrained problems e.g., incompressible media, thin-walled structures, NURBS-based FEs are not locking free

[81, 82, 83, 84, 85]. Existing locking removal techniques in standard FEM were successfully adapted to IGA–the
Discrete Strain Gap method [83], the F/B-bar method [82, 84], the enhanced assumed strain method [85] and mixed
formulations [86].
The effect of mesh distortion on the performance of IGA for solid mechanics was discussed in [87] in which it was
found that higher-order NURBS functions are able to somewhat alleviate the impact of the distortions.
The high order continuity offered by NURBS has a negative impact on the performance of direct solvers as pointed
out in [88]. The authors found that for a fixed number of unknowns and basis degree, a higher degree of continuity
drastically increases the CPU time and RAM needed to solve the problem when using a direct solver.

5
In an attempt to compete with low order FEs with one-point quadrature that are extensively used in industrial
applications, isogeometric collocation methods were developed [89, 90].
Due to the fact that meshes in an isogeometric framework are defined by the parametrization of the object of interest,
the quality of geometry parametrization plays an important role to assure mesh quality. This issue has, however, been
addressed by only a few researchers, see e.g., [91, 92, 93, 94, 95]. In particular, in [93], the authors proposed a concept
of ”analysis-aware geometry modeling”.

In CAD, solids are actually surfaces for only the boundary not the interior is modeled. In FEA, a true solid
is however needed. Therefore, the transition from CAD solids to FEA solids demands a step in which the CAD
boundary representation will be converted to a FEA solid representation. Initial developments have been reported
in [96, 97, 98, 99, 100, 101]. Note that in this regard, the isogeometric boundary element method–IGABEM can be
considered the truly isogeometric method up to date [17, 18, 102, 103].

1.7. Available implementations

Some implementation aspects of IGA were reported in [4] and more recently, an open source IGA Matlab
R
code
was described in [104] with a restriction to 2D scalar PDEs. An excellent open source IGA code written in Matlab
R

is given in [105]. Incorporating IGA within an object-oriented C++ FE code was discussed in [106]. Implementation
details for enriched formulations within an IGA framework are reported in [107] using commercial FE software. An
IGA BEM code written in Matlab
R
was presented in [103].
Isogeometric analysis was also incorporated into FEAP [108, 86]. A high performance IGA code was given in [109]
which is based on PETSc, the Portable, Extensible Toolkit for Scientific Computation. The Python programming
language was also adopted to implement IGA, see e.g., [110, 111].

1.8. Outline

In this paper, we present in detail an isogeometric Bubnov-Galerkin finite element method applied to two- and
three-dimensional elasto-static solid/structural mechanics problems and traction-free crack problems. The discussion
is confined to NURBS for the sake of simplicity. The remainder of the paper is structured as follows: Section 2
describes NURBS curves, surfaces and solids. The finite element formulation using NURBS is treated in Section 3. A
detailed description of our IGA Matlab code is given in Section 4. An extended isogeometric formulation based on the

6
concept of PUM is a subject of Section 5. The Bézier extraction implementation of IGA codes is discussed in Section
6. Structural mechanics are presented in Section 7. Numerical examples including 2D/3D fracture mechanics, large
deformation shells are given in Section 8.

2. A brief introduction to NURBS

In this section a brief discussion on B-splines is given since the same technology is utilised for more advanced
geometrical functions (e.g. NURBS, T-splines). We begin with some basic concepts, define commonly used notations
and introduce B-spline curves and surfaces. Most of the algorithms used to implement B-splines and NURBS in our
Matlab
R
code are described in the book [1].

2.1. Parametric representation

In order to present the basic concepts such as parameters, parametric space and physical space, let us consider the

equation of a unit circle centered at the origin

x2 + y 2 = 1 (1)

which can be rewritten using the so-called parametric equation

x = cos t, y = sin t 0 ≤ t ≤ 2π (2)

in which t denotes a parameter ranging from 0 to 2π. The interval [0, 2π] constitutes a parametric space. Equation (2)
maps a parameter (t) in the parametric space to a point (x, y) on the unit circle–the physical space.

2.2. B-splines

A knot vector is a sequence in ascending order of parameter values, written Ξ = {ξ1 , ξ2 , . . . , ξn+p+1 } where ξi is the
ith knot, n is the number of basis functions and p is the polynomial order. The knot vector divides the parametric
space into intervals usually referred to as knot spans. A number of coinciding knots is referred to as a knot with a
certain multiplicity. A knot vector is said to be open if its first and last knots have multiplicity equal to the polynomial
order plus one (p + 1). As will be seen, an important property of open knot vectors is that the B-splines start and

7
end at the first and last control points which facilitates the imposing of boundary conditions in an analysis context. A
uniform knot vector is associated to evenly distributed knots. Otherwise it is said to be a non-uniform knot vector.

2.2.1. Basis functions

Given a knot vector Ξ, the associated B-spline basis functions are functions mapping R to R defined recursively
starting with the zeroth order basis function (p = 0) as



1 if ξi ≤ ξ < ξi+1 ,

Ni,0 (ξ) = (3)

0 otherwise,

and for a polynomial order p ≥ 1

ξ − ξi ξi+p+1 − ξ
Ni,p (ξ) = Ni,p−1 (ξ) + Ni+1,p−1 (ξ). (4)
ξi+p − ξi ξi+p+1 − ξi+1

This is referred to as the Cox-de Boor recursion formula. Note that when evaluating these functions, ratios of the form
0/0 are defined as zero.
Some salient properties of B-spline basis functions are (1) they constitute a partition of unity, (2) each basis function
is nonnegative over the entire domain, (3) they are linearly independent, (4) the support of a B-spline function of order
p is p + 1 knot spans i.e., Ni,p is non-zero over [ξi , ξi+p+1 ], (5) basis functions of order p have p − mi continuous
derivatives across knot ξi where mi is the multiplicity of knot ξi and (6) B-spline basis are generally only approximants
and not interpolants. Therefore imposing Dirichlet boundary conditions will require special care which will be discussed
in Section 3.6.
Figure 1 illustrates quadratic (p = 2) B-spline basis functions for a uniform knot vector while Figure 2 illustrates
similar functions for an open non-uniform knot vector. Note that the basis functions are interpolatory at each end of
the interval and also at ξ = 4, the location of a repeated knot, where only C 0 -continuity is attained. Elsewhere, the
functions are C 1 -continuous (C p−1 ). The ability to control continuity by means of knot insertion is particularly useful
for modeling discontinuities such as cracks or material interfaces [69] although it requires knots to be placed on the

discontinuity surfaces which is not as flexible as PUM enrichment.

8
1 N1,2 N N
2,2 3,2

0
0 1 2 3 4 5 6

Figure 1: Linear and quadratic B-spline basis functions for a uniform knot vector Ξ = {0, 1, 2, 3, 4, 5, 6}.

C−1 C0 C−1

C1
1 N1,2 N3,2 N4,2 N6,2
N2,2 N5,2

0
0 1 2 3 4 5
Figure 2: Quadratic (p = 2) B-spline basis functions for an open non-uniform knot vector Ξ = {0, 0, 0, 1, 2, 3, 4, 4, 5, 5, 5}.
Note the flexibility in the construction of basis functions with varying degrees of regularity.

The first derivative of a B-spline basis function is given by

d p p
Ni,p (ξ) = Ni,p−1 (ξ) − Ni+1,p−1 (ξ). (5)
dξ ξi+p − ξi ξi+p+1 − ξi+1

Derivatives of higher order can be found in [1].

9
2.3. B-spline curves

Let the number of space dimensions be denoted by d. Given n B-spline basis functions Ni,p and n control points
(Bi )1≤i≤n ∈ Rd , a piecewise-polynomial B-spline curve is constructed as

n
X
C(ξ) = Ni,p (ξ)Bi . (6)
i=1

This equation can be interpreted as a linear combination of B-spline basis functions with control points as coefficients.
Equation (6) defines the B-spline completely. Piecewise linear interpolation of the control points gives the so-called

control polygon.
Figures 3 give an example of a quadratic B-spline curve. A B-spline curve inherits all of the continuity properties
of their underlying basis. The use of open knots ensures that the first and last points are interpolated. Note that the
tangent to the curve at the first control point is defined by the first two control points. This property will be exploited
in rotation-free element formulations for thin-walled structures (section 7).

3.5

2.5

1.5

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Figure 3: A quadratic (p = 2) B-spline curve with a uniform open knot vector Ξ = {0, 0, 0, 1, 2, 3, 4, 5, 5, 5}. Control
points are denoted by filled circles and the control polygon linking the control points is shown as well. Note that the
curve is C 1 continuous everywhere except at the extremities where repeated knots are present.

10
2.4. B-spline surfaces

Given two knot vectors (one for each parametric direction) Ξ = {ξ1 , ξ2 , . . . , ξn+p+1 } and H = {η1 , η2 , . . . , ηm+q+1 }
and a control net Bi,j ∈ Rd , a tensor-product B-spline surface is defined as

n X
X m
S(ξ, η) = Ni,p (ξ)Mj,q (η)Bi,j , (7)
i=1 j=1

where Ni,p (ξ) and Mj,q (η) are the univariate B-spline basis functions of order p and q corresponding to knot vectors Ξ
and H , respectively. The above can be rewritten in a more compact form as follows

n X
X m
p,q
S(ξ, η) = Ni,j (ξ, η)Bi,j , (8)
i=1 j=1

p,q p,q
where the bivariate B-spline basis functions Ni,j are functions mapping R2 to R such that Ni,j (ξ, η) = Ni,p (ξ)Mj,q (η).
In Fig. (4) a bi-cubic B-Spline basis function is shown and Figure 5 gives a bi-quadratic B-spline surface. Also shown
is the parameter space, which is a square, for any B-spline surfaces.
The derivatives of bivariate B-spline basis functions with respect to the parametric coordinates are computed using
the chain rule as:
   
∂Ni,j (ξ, η) d ∂Ni,j (ξ, η) d
= Ni (ξ) Mj (η), = Mj (η) Ni (ξ). (9)
∂ξ dξ ∂η dη

Higher order derivatives can be computed in the same manner.

2.5. NURBS

B-Splines are convenient for free-form modelling, but they lack the ability to exactly represent some simple shapes
such as circles and ellipsoids. This is why today, the de facto standard technology in CAD is a generalization of
B-Splines referred to as NURBS (Non-Uniform Rational B-Splines). NURBS are rational functions of B-Splines and

inherit all their favourable geometrical properties. They can be shown to be a superset of B-Splines and are favoured
over their counterparts since they allow exact representations of conic sections such as spheres, ellipsoids, paraboloids
and hyperboloids. In addition, there exist efficient algorithms for their evaluation and refinement (see e.g., [1]).

11
3,3
N3,3 (ξ, η)

1
0.9
0.8
0.4

0.35

0.7
0.3

0.6
0.25

0.2

0.5
0.15
0.4
0.1

0.05
0.3

0
1
0.2

0.9
0.8 1
0.7 0.9
0.6 0.8
0.1

0.5 0.7
0.4 0.6
0.5
0.3 0.4
0.2 0.3
0

0.2
0.7

0.6

0.5

0.4

0.3

0.2

0.1

0.1 0.1
0 0

M3,3 (η) 0.7

0.6

0.5

0.4

0.3
N3,3 (ξ)
0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figure 4: A bivariate cubic B-spline basis function with knots vectors Ξ = H = {0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1}.
1, 1, 1

(ξ, η)
0.5

z
y
x ξ
0, 0, 0

0, 0, 0 0.5 1, 1, 1
Figure 5: A bi-quadratic B-spline surface (left) and the corresponding parameter space (right). Knot vectors are
Ξ = H = {0, 0, 0, 0.5, 1, 1, 1}. The 4 × 4 control points are denoted by red filled circles.

12
2.5.1. NURBS basis functions

NURBS basis functions are defined as

Ni,p (ξ)wi Ni,p (ξ)wi


Ri,p (ξ) = = Pn , (10)
W (ξ) j=1 Nj,p (ξ)wj

where Ni,p denotes the ith B-spline basis function of order p and wi are a set of n positive weights. Selecting appropriate
values for the wi permits the description of many different types of curves including polynomials and circular arcs. For

the special case in which wi = c ∀i, the NURBS basis reduces to the B-spline basis. Note that for simple geometries, the
weights can be defined analytically see e.g., [1]. For complex geometries, the weights are obtained from CAD packages
such as Rhino [112] and can be defined by the user.
The first derivative of a NURBS basis function Ri,p is computed using the quotient rule. That is,


d Ni,p (ξ)W (ξ) − Ni,p (ξ)W ′ (ξ)
Ri,p (ξ) = wi , (11)
dξ W (ξ)2
′ d
where Ni,p (ξ) ≡ dξ Ni,p (ξ) and

n
X
W ′ (ξ) = ′
Ni,p (ξ)wi . (12)
i=1

2.5.2. NURBS curves

In a similar fashion to B-spline curves, the NURBS curve associated with control points Bi and basis function Ri,p
is defined as
n
X
C(ξ) = Ri,p (ξ)Bi . (13)
i=1

2.5.3. NURBS surfaces/solids

Given two knot vectors (one for each direction) Ξ = {ξ1 , ξ2 , . . . , ξn+p+1 } and H = {η1 , η2 , . . . , ηm+q+1 } and a
control net Bi,j ∈ Rd , a tensor-product NURBS surface is defined as

n X
X m
p,q
S(ξ, η) = Ri,j (ξ, η)Bi,j , (14)
i=1 j=1

13
p,q
where the bivariate basis functions Ri,j are given by

N (ξ)Mj (η)wi,j
p,q
Ri,j (ξ, η) = Pn Pim . (15)
î=1 ĵ=1 Nî (ξ)Mĵ (η)wî,ĵ

NURBS solids are simply an extension of NURBS surfaces to a trivariate representation and are defined as

n X
X m X
l
p,q,r
S(ξ, η, ζ) = Ri,j,k (ξ, η, ζ)Bi,k,j , (16)
i=1 j=1 k=1

p,q,r
where Ri,j,k are given by

p,q,r Ni (ξ)Mj (η)Pk (ζ)wi,j,k


Ri,j,k (ξ, η, ζ) = Pn Pm Pl . (17)
î=1 ĵ=1 k̂=1 Nî (ξ)Mĵ (η)Pk̂ (ζ)wî,ĵ,k̂

Remark 2.1. In CAD, solids are actually surfaces for the interior is not of interest. In physics-based modeling systems
such as FEA, a true solid i.e., a trivariate representation of the object is, however, needed. Therefore, the transition
from CAD solids to FEA solids demands a step in which the CAD boundary representation will be converted to a
trivariate representation suitable for FEA. Except for some simple cases in which a trivariate representation can be
directly obtained from a bivariate boundary representation such as extruded-surface solids, swept solids etc. generally
trivariate parametrizations for solids are not available in majority of CAD packages. This has motivated the works
reported in [97, 98, 99, 100, 101] in which trivariate solids are built from bivariate boundary surfaces.

3. Finite element analysis with NURBS

3.1. Isoparametric discretisation

The isoparametric concept refers to the use of the same basis functions for both geometry and unknown field
discretisation. Both FEM and IGA formulations most commonly utilise the isoparametric concept. However, they
differ from each other by the type of basis functions used. That is,

• Finite elements: the basis which is chosen to approximate the unknown field, is also used to approximate the
known geometry. This most commonly takes the form of (low order) polynomial functions and the geometry is
in most cases only approximated.

14
• Isogeometric analysis: the basis is chosen to exactly capture the geometry and this is also used to approximate
the unknown field. Refinement may be required for the unknown fields, but the exact geometry is maintained at
all stages of analysis.

The physical domain is denoted by Ω and the parametric domain by Ω̂, where we refer to Fig. (6) for the illustration
of these terms. In two dimensions, the parametric domain is a square and in three dimensions it is a cube. The mapping
from the parametric domain to the physical domain is then given by

n
X
x= ΦI (ξ)BI , (18)
I=1

where the shape function ΦI refers to either the univariate NURBS basis function if Ω is a curve or the bivariate
NURBS basis function in case Ω is a surface. The number of control points is denoted by n. In the above, ξ is the
parametric coordinate i.e., ξ in one dimension, (ξ, η) in two dimensions and BI denotes control point number I.
In an isoparametric formulation, the unknown field variable is approximated by the same shape functions as the
geometry. That is,

n
X
u(x) = ΦI (ξ)uI , (19)
I=1

where uI denotes the value of the field variable at control point BI . It is therefore referred to as a control variable or
more generally a degree of freedom (dof). It should be emphasized that since control points do not generally locate
inside the domain of interest or even fall outside the physical domain, see for example Fig. (5), uI does not usually

represent a physical nodal value as in conventional FEM. For control points inside the physical domain, uI also does
not represent a physical nodal displacement due to the non-interpolatory nature of NURBS. This is similar to the case
of meshless methods built on non-interpolatory shape functions such as the moving least squares (MLS) [113, 114, 115].

15
3.2. Spatial derivatives of shape functions

Before computing the spatial derivatives NI,x and NI,y of the shape functions, it is necessary to compute the
Jacobian matrix of the geometry mapping defined in Eq. (18)

 
 x,ξ x,η 
Jξ =  , (20)
y,ξ y,η

with the components calculated as (using Eq. (18))

∂xi ∂ΦI
= BiI , (21)
∂ξj ∂ξj

where BiI represents the ith coordinate of control point I. The determinant of Jξ is denoted by |Jξ |.
The derivatives of basis functions with respect to the physical domain coordinates are given by

 
 ξ,x ξ,y 
     
ΦI,x ΦI,y = ΦI,ξ ΦI,η  = ΦI,ξ ΦI,η J−1
ξ , (22)
η,x η,y

where ΦI,ξ and ΦI,η can be computed using Eq. (9) in the case of B-spline surfaces.

3.3. Numerical integration

Integrals over the entire geometry (physical domain Ω) are split into elemental integrals over a domain denoted
by Ωe . These integrals are pulled back to the parametric element Ω̂e via the geometry mapping, Eq. (18). Finally,
integrals over the parametric element are pulled back to the parent domain  (the determinant of the Jacobian is |Jξ̄ |)
where existing integration rules are usually defined. Refer to Fig. (6) for an illustration. We write for a function f of
two variables x and y

Z n Z
X n Z
X
f (x, y)dΩ = f (x, y)dΩe = f (x(ξ), y(η))|Jξ |dΩ̂e
Ω e=1 Ωe e=1 Ω̂e
n Z (23)
¯ η̄)|Jξ ||J |d.
X
= f (ξ, ξ̄
e=1 

16
The final integral can be computed using standard Gauss-Legendre quadrature (hereafter named Gaussian). Specially,
a (p + 1) × (q + 1) Gaussian quadrature is adopted for two dimensional elements with p and q denoting the orders of
the NURBS basis in the ξ and η directions. It should be emphasized that Gaussian quadrature is not optimal for IGA.
In [116, 117], an optimal quadrature rule–the half-point rule–for IGA was presented. In our paper, only a standard
Gauss-Legendre quadrature implementation is used.
η̄
(1, 1)

images of ξ and η-lines


Physical domain
ξ¯


(−1, −1) Parent domain

Ωe

y ηj+1

Ω̂e η-lines

η ηj
x

ξi ξi+1
ξ-lines
ξ Parametric domain
Figure 6: Definition of domains used for integration in isogeometric analysis. Elements are defined in the parametric
space as non-zero knot spans, [ξi , ξi+1 ] × [ηj , ηj+1 ] and elements in the physical space are images of their parametric
counterparts.

The transformation from the parent domain  to a parametric domain [ξi , ξi+1 ] × [ηi , ηi+1 ] is given by

1
ξ= [(ξi+1 − ξi )ξ¯ + (ξi+1 + ξi )] (24)
2
1
η = [(ηj+1 − ηj )η̄ + (ηj+1 + ηj )]. (25)
2

17
¯ η̄ represents a Gauss point. Therefore, the determinant of the Jacobian of this transformation reads
where xi,

1
|Jξ̄ | = (ξi+1 − ξi )(ηj+1 − ηj ). (26)
4

3.4. Assembly for one dimensional problems

To illustrate the use of the isogeometric concept in a finite element context, an example is best suited for explanation.
Let us consider the following one dimensional Poisson equation

u,xx(x) + b(x) = 0 x ∈ [0, 1]; u(0) = 0, u(1) = 0, (27)

with b(x) = x. It should be emphasized that the boundary conditions given above are homogeneous Dirichlet boundary
conditions which can be imposed directly as in FEM by setting the corresponding control variables as zeros. This is
due to the use of an open knot vector which ensures that the first and last points of the curve are interpolatory (see
Section 2.5). More details on imposition of boundary conditions are provided in Section 3.6. The exact solution for

this problem is

1 1
u(x) = − x3 + x. (28)
6 6

Using the method of weighted residuals, the weak form associated with Eq. (27) writes

1 1
du dv
Z Z
o
Find u ∈ U | ∀v ∈ U , dx = b(x)v(x)dx, (29)
0 dx dx 0

where U and Uo are the usual trial and test spaces. Using n shape functions NI as test and trial functions, the discrete
form of this equation reads

Z 1  Z 1
Find (uJ )1≤j≤n ∈ Rn , NI,x (x)NJ,x (x)dx uJ = b(x)NI (x)dx, (30)
0 0

using Eq. (19). This can be written in matrix form

KIJ uJ = fI , (31)

18
where the stiffness matrix and the force vector are defined as

Z 1 Z 1
∀I, J ∈ {1, . . . , n}, KIJ = NI,x (x)NJ,x (x)dΩ, fI = b(x)NI (x)dΩ. (32)
0 0

In order to build the global stiffness matrix, first the elementary stiffness matrices are computed. They are then
assembled into the global stiffness matrix K. In the same manner, one obtains the global force vector f . The solution
is then given by u = K−1 f .

To illustrate the assembly of the elementary stiffness into the global stiffness matrix, let us consider the example
given in Fig. (7). Recall that for element e = [ξi , ξi+1 ], there are p + 1 non-zero basis functions Nα with i − p ≤ α ≤ i.
This can be seen from Fig. (7). For this problem, the data is therefore as follows

element range non-zero basis dofs control points


1 [ξ3 , ξ4 ] N1 , N2 , N3 u1 , u2 , u3 B1 , B2 , B3 , (33)

2 [ξ4 , ξ5 ] N2 , N3 , N4 u2 , u3 , u4 B2 , B3 , B4

where the dof data is used to assemble the global stiffness matrix. One can consider this mesh as composed of
two elements of which each has three nodes (control points). In this manuscript we use nodes and control points
interchangeably. Box 1 outlines the steps to compute KIJ for element 1 of the problem given in Fig. (7). Note that the

code follows exactly the standard FEM code presented in [118]. In this box, the symbol ||·|| denotes the L2 Eucledian
norm.
The good agreement of the numerical results for quadratic B-spline elements compared to the exact solution as
shown in Fig. (8) verifies the implementation. For the coarse mesh of two quadratic elements, the knot vector is
Ξ = [0, 0, 0, 0.5, 1, 1, 1] and hence there are 4 CPs and 4 nodal unknowns. For smooth curves given in Fig. (8), 20
uniformly distributed points on the parameter space (the interval [0, 1]) were used. The coordinates and u values at
these points were obtained using interpolations from the control points and the nodal unknowns.
In order to assess how high order B-spline elements behave for problems with localized gradients, let us consider
the following problem [115]

u,xx(x) + b(x) = 0 x ∈ [0, 1]; u(0) = 0, u(1) = 1, (34)

19
1
B2 B3
0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

B1 0
0 0.2 0.4 0.6 0.8 1 B4

A quadratic B-spline curve with 4 control points

N1 N4
0.8 N2 N3

0.6

0.4

0.2

0
0 0.5 1

4 quadratic basis functions

1 2 ξ

ξ1 = ξ2 = ξ3 = 0 ξ4 ξ5 = ξ6 = ξ7 = 1

Parametric space
Figure 7: One dimensional isogeometric analysis example: exact geometry, quadratic basis functions and mesh in the
parametric space.

20
Box 1 Procedure for evaluation of Eq. (32) for element [ξi , ξi+1 ].

1. x = [B1 ; B2 ; B3 ]
2. sctr = [1, 2, 3]
3. Set Ke = 0
4. ¯ w)∗
Loop over Gauss points (GPs) (ξ,
(a) Compute parametric coordinate ξ = 0.5[(ξi+1 − ξi )ξ¯ + ξi+1 + ξi ]
(b) Compute derivatives NI,ξ (I = 1, 2, 3) at point ξ
(c) Define vector Nξ = [N1,ξ N2,ξ N3,ξ ]
(d) Compute the first Jacobian Jξ = ||Nξ x||
(e) Compute the second Jacobian Jξ̄ = 0.5(ξi+1 − ξi )
(f) Compute shape function derivatives Nx = Jξ−1 NT ξ
(g) Ke = Ke + Jξ Jξ̄ wNx NT
x
5. End loop over GPs
6. Assemble Ke to the global matrix K(sctr, sctr) = K(sctr, sctr) + Ke

w denotes the weight of a Gauss point.

0.07 0.07

0.06 0.06

0.05 0.05

0.04 0.04
u

0.03 0.03
numerical solution
0.02 numerical solution 0.02 exact solution
exact solution
0.01 0.01

0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x x
(a) 2 elements (b) 4 elements

Figure 8: Comparison of the IGA result against the exact solution for the one dimensional PDE given in Eq. (27).

21
with

    
 2α2 − 4[α2 (x − 0.5)]2 exp −[α(x − 0.5)]2
 x ∈ [0.42, 0.58]
b(x) = (35)
 0

otherwise

The exact solution of this problem is

 
2
u(x) = x + exp −[α(x − 0.5)] x ∈ [0, 1] (36)

We use a value of 50 for α and the exact solution exhibits a sharp peek at location x = 0.5. We are going to solve this
problem using elements of order ranging from one (linear elements) to five (quintic elements). To remove error in the
numerical integration of the body force term, Eq. (32), 10 GPs were used for each element. We use the k-refinement (to
be discussed in detail in Section 4.6) in building meshes of different basis orders. The initial mesh consists of one single
linear element with knot vector Ξ = {0, 0, 1, 1}. The parametrization is thus linear and after performing k-refinement,
the parametrization is still linear. Therefore, a point with x = 0.3 corresponds to ξ = 0.3 in the parameter space. The
Matlab file for this problem is iga1DStrongGradient.m in the iga folder of our source code.

Figure (9a,b) shows the results obtained with meshes consisting of 16 and 32 elements of C p−1 continuity where
p denotes the B-spline basis order. It is obvious that smooth basis is not suitable to problems with sharp gradients.
Linear elements which have a C 0 continuity at location x = 0.5 (precisely at every knots) give better results than high
order B-spline elements.
Knot insertion was made to insert the value 0.5 p times to the initial knot vector so that the basis is C 0 continuous
at x = 0.5. For example for p = 2, a vector {0.5, 0.5} was inserted to the knot vector. The results are given in Fig.
(9c,d) where the peak was captured better. Finally 0.42, 0.5, 0.58 were added to the knots p times so that the basis are
C 0 continuous at locations x = 0.42, 0.5, 0.58. The corresponding results are given in Fig. (10). With only 16 cubic
elements (25 CPs) the exact solution was well captured. This example showed the flexibility of B-splines/NURBS–high
order functions and any level of continuity can be easily achieved.

22
1.5 1.5
exact solution
p=1 exact solution
p=2 p=1
p=3 p=2
1 1 p=3
p=4
p=5 p=4

u
u

p=5

0.5 0.5

0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x x
(a) 16 elements (b) 32 elements

1.5 1.6
exact solution exact solution
1.4
p=1 p=1
p=2 1.2 p=2
1 p=3 p=3
p=4 1 p=4
u
u

0.8
0.5 0.6

0.4

0.2
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.4 0.420.440.460.48 0.5 0.520.540.560.58 0.6
x x
(c) 32 elements with C 0 continuity at x = 0.5 (d) 32 elements with C 0 continuity at x = 0.5 (close up)

Figure 9: Comparison of the IGA result against the exact solution for the one dimensional PDE given in Eq. (34).

23
1.6
exact solution
1.4 p=1
p=2
1.2 1.6
p=3
exact solution
1.4
1 p=1
p=2
1.2 p=3

0.8
u

0.6 0.8

u
0.4 0.6

0.2 0.4

0.2
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0
x 0.42 0.44 0.46 0.48
x
0.5 0.52 0.54 0.56

(a) 16 elements with C0 continuity at x = 0.42, 0.5, 0.58 (b) 16 elements with C0 continuity at x = 0.42, 0.5, 0.58 (close
up)

Figure 10: Comparison of the IGA result against the exact solution for the one dimensional PDE given in Eq. (34).

3.5. Assembly process for two dimensional elastostatic analysis

Consider a domain Ω, bounded by Γ. The boundary is partitioned into two sets: Γu and Γt with displacements
prescribed on Γu and tractions t prescribed on Γt . The weak form of a linear elastostatics problem is to find u in the
trial space 5 , such that for all test functions δu in the test space 6 ,

Z Z Z
ε(u) : D : ε(δu)dΩ = t · δudΓ + b · δudΩ, (37)
Ω Γt Ω

where the elasticity matrix is denoted by D and b refers to a body force. Using the Bubnov-Galerkin method where
the same shape functions ΦI are used for both u and δu, we can write

n
X n
X
u(x) = ΦI (ξ)uI , δu(x) = ΦI (ξ)δuI , (38)
I I

where δuI denote the nodal displacement variations.


Substitution of these approximations into Eq. (37) and using the arbitrariness of the nodal variations gives the

5 contains C 0 functions
6 contains C 0 functions vanishing on Γu

24
discrete set of equations

K u = f, (39)

with

Z Z Z
KIJ = BT
I DBJ dΩ, fI = ΦI tdΓ + ΦI bdΩ. (40)
Ω Γt Ω

In two dimensions, the B matrix (not to be confused with the control net) is given by

 
ΦI,x 0 
 
BI = 
 0 ,
ΦI,y  (41)
 
ΦI,y ΦI,x

where the shape function derivatives are computed according to Eq. (22).
We now consider the two dimensional problem shown in Fig. (11). In this case, the knot vectors are Ξ = [0, 0, 1, 1]
and H = [0, 0, 0, 0.5, 1, 1, 1], respectively. The orders of the basis functions are p = 1 and q = 2. Eight control points
are defined: two points along the ξ direction and four points along the η direction.
The domain and non-zero basis functions for Element 1 are given by

direction range non zero basis


ξ [ξ2 , ξ3 ] N1 , N2 (42)

η [η3 , η4 ] M1 , M2 , M3

Hence there are six non-zero basis functions on element e = 1 which can be assembled into a vector R as follows

R1 = [N1 M1 , N2 M1 , N1 M2 , N2 M2 , N1 M3 , N2 M3 ]. (43)

25
(a) Exact geometry (b) Mesh in physical space
B24 (8)
2 B23 (6) 2
1.8 1.8
1.6 1.6
1.4 1.4
1.2 1.2
B22 (4) 1 1
0.8 B13 (5) B14 (7) 0.8
0.6 0.6
B12 (3)
0.4 0.4
0.2 0.2
B21 (2) 0 B11 (1)
0 0
−2 −1.5 −1 −0.5 −2 −1.5 −1 −0.5 0

(c) Mesh in parametric space and basis functions


η5,6,7 = 1

8
M1 (η) M2 (η) M3 (η) M4 (η)

7
2
6
η4 = 0.5

5
0.5

1
4 3
η1,2,3 = 0

2
1
00
1
0.8

0.6

0.4

0.2

ξ1,2 = 0 ξ3,4 = 1

1
N1 (ξ)
N2 (ξ)

00 1
Figure 11: Two dimensional isogeometric analysis example: (a) exact geometry, (b) mesh in physical space and (c)
mesh in the parametric space. The two rectangles are used to illustrate the control points belonging to each element.

26
7
These six basis functions are associated with six global basis indices given by

element(1, :) = [1, 2, 3, 4, 5, 6]. (44)

Similarly, for element 2, the shape function vector is given by

R2 = [N1 M2 , N2 M2 , N1 M3 , N2 M3 , N1 M4 , N2 M4 ], (45)

with the associated global indices

element(2, :) = [3, 4, 5, 6, 7, 8]. (46)

Control points are stored in a two dimensional matrix of dimensions n × 2 (n denotes the number of control points in
the mesh). The connectivity data is stored in a two dimensional matrix of dimensions nel × (p + 1) ∗ (q + 1) where nel
denotes the number of elements. For the example under consideration, these two matrices are given by

 
B11
 
 
B21 
 
 
B 
 12   
 
B22  1 2 3 4 5 6
 
controlPts = 

,
 element =  . (47)
B13  3 4 5 6 7 8
 
 
B 
 23 
 
B14 
 
 
B24

7 in Matlab
R
notation.

27
The knot ranges along the ξ and η directions are stored in the following matrices

 
0 0.5
 
elRangeU = 0 1 , elRangeV =  , (48)
 
0.5 1

where the number of rows is equal to the number of elements (non-zero knot spans) in each direction.
With this vector of basis functions R, we can compute the derivatives of the basis functions. The derivatives of the
basis functions with respect to x are stored in the following vector

 T
R,x = R1,x R2,x R3,x R4,x R5,x R6,x , (49)

Similarly, we have R,y for the derivatives of the basis functions with respect to y. Having these basis function derivatives,
we are now ready to define the B matrix for any element e

 
 R[1],x R[2],x · · · R[6],x 0 ··· 0 
 
Be = 
 0 0 ··· 0 R[1],y ··· R[6],y ,
 (50)
 
R[1],y R[2],y · · · R[6],y R[1],x · · · R[6],x

where the control point displacement vector is stored in the following order u = [u1x , u2x , . . . , unx , u1y , u2y , . . . , uny ]T .
The element stiffness matrix is then given by

Z
Ke = BT
e DBe dΩe , (51)
Ωe

which is then assembled to the global stiffness matrix using the element connectivity matrix.
For implementation convenience, Box 2 gives a procedure of an isogeometric analysis of 2D elasticity problems.

In order to compute the external force vector, it is convenient to define a boundary mesh as shown in Fig. (12). The
Matlab R
code to automatically generate this boundary mesh is given in Listing 1. The computation of the external
force vector Γ RT t̄dΓ then follows the one dimensional assembly procedure given in Section 3.4.
R

Listing 1: Matlab
R
code for generating a boundary mesh used in the computation of the external force.
forcedNodes = find ( c o n t r o l P t s ( : , 1 ) = = 0 ) ’ ;

28
Box 2 Procedure for isogeometric analysis of 2D elasticity problems.

1. Loop over elements, e = 1, . . . , nel


(a) Determine NURBS coordinates [i, i + 1] × [j, j + 1] using elRangeU and elRangeV
(b) Get connectivity array, sctr = element(e, :)
(c) Define sctrB = sctr + n used for assembly ∗
(d) Ke = 0
(e) Loop over Gauss points, (ξ̄, w)
i. Compute ξ and η corresponding to ξ̄ (Eq. 25)
ii. Compute |Jξ̄ | (Eq. 26)
iii. Compute derivatives of shape functions R,ξ and R,η
iv. Compute Jξ using controlP ts(sctr, :), R,ξ and R,η (Eq. 21)
v. Compute Jacobian inverse J−1 ξ and determinant |Jξ |
vi. Compute derivatives of shape functions R,x = [R,ξ R,η ]J−1
ξ (Eq. 22)
vii. Use R,x to build the strain-displacement matrix B
viii. Compute Ke = Ke + w|Jξ̄ ||Jξ |BT DB
(f) End loop over Gauss points
(g) Assemble Ke : K(sctrB, sctrB) ← Ke
2. End loop over elements

n denotes the number of control points.

12 12
11

2
7 8 8
1
3
10
4 4
6
2

9 5 1
Figure 12: Boundary mesh for external force computation. A linear basis is used in the η direction. Assume a traction
is applied on the edge containing nodes 4, 8 and 12. The boundary mesh is composed of two linear isogeometric
elements 1 and 2 .

29
rightPoints = c o n tr o l P ts ( forcedNodes , : ) ;
rightEdgeMesh = zeros ( noElemsV , q +1);

f o r i =1: noElemsV
rightEdgeMesh ( i , : ) = f o r c e d N o d e s ( i : i+q ) ;
end

3.6. Boundary condition enforcement

Figure 13 illustrates two kinds of Dirichlet boundary conditions: on edge AD, ux = 0 and on edge BC, uy = ū. The
former is a homogeneous Dirichlet boundary condition (BC) while the latter is referred to as uniform inhomogeneous

Dirichlet BCs. Homogeneous Dirichlet BCs can be enforced by setting the corresponding control variables as zeros
(in this example, setting uxI = 0, I = 2, 4, 6, 8). For edge BC, the inhomogeneous Dirichlet BCs can also be satisfied
by setting uyI = ū, I = 1, 3, 5, 7. This is due to the partition of unity property of the NURBS basis i.e., uBC
y =
M1 (η)uy1 + M2 (η)uy3 + M3 (η)uy5 + M4 (η)uy7 = (M1 (η) + M2 (η) + M3 (η) + M4 (η))ū = ū. Inhomogeneous Dirichlet
BCs applied on corner control points (black points in Fig. (13)) are enforced by simply setting the corner control
variables equal to the prescribed values since the NURBS shape functions at these points satisfy the Kronecker delta
η5,6,7 = 1

property (assuming the use of open knot vectors). This is called direct imposition of Dirichlet BCs.
D C
M1 (η) M2 (η) M3 (η) M4 (η)

8 7
η4 = 0.5

6
5
0.5

4 3
η1,2,3 = 0

2
1
0
1
0.8

0.6

0.4

0.2

A B
Figure 13: Imposing Dirichlet BCs: black points denote corner control points where the NURBS basis satisfies the
Kronecker delta property.

For cases other than the ones previously discussed such as a prescribed displacement imposed at interior control

30
point 3 or a non-uniform Dirichlet BC8 applied on edge BC, special treatment of Dirichlet BCs have to be employed as
is the case for meshless methods. Techniques available include the Lagrange multiplier method, the penalty method,
the augmented Lagrangian method and we refer to [115] for an overview of these techniques in the context of meshless
methods. In [119] a transformation method was proposed to impose inhomogeneous Dirichlet BCs in IGAFEM. However
this method requires modifications to the stiffness matrix which breaks the usual structure of a FE code. The authors
in [71] presented a weak enforcement of general inhomogeneous Dirichlet BCs using a least squares minimization and

the implementation is described in what follows. The same procedure was used in imposing BCs in meshless methods
when coupling a fluid to a solid domain through a master-slave concept [120]. Imposing Dirichlet boundary conditions
with Nitsche’s method was presented in [121] for spline-based finite elements.
The basic idea of the least squares method is to find the parameters of the boundary control points that minimize
the following quantity

1X 2
J= ||u(xC ) − ū(xC )||
2
C
2 , (52)
1 X X
= ΦA (xC )qA − ū(xC )

2


C A

where xC denotes a set of collocation points distributed on the essential boundary Γu , qA are the parameters of the
control points defining Γu and ΦA represents the NURBS basis functions that are non-zero at xC . For the sake of
clarity, let us consider the case where there is only one collocation point and a quadratic basis (thus there are 3 non-zero
ΦA at xC ). So, we have

1 2
J= ||Φ1 (xC )q1 + Φ2 (xC )q2 + Φ3 (xC )q3 − ū(xC )|| . (53)
2

8 Dirichlet BCs that vary from point to point.

31
The partial derivatives of J with respect to qi are given by

∂J
= [Φ1 (xC )q1 + Φ2 (xC )q2 + Φ3 (xC )q3 − ū(xC )]Φ1 (xC )
∂q1
∂J
= [Φ1 (xC )q1 + Φ2 (xC )q2 + Φ3 (xC )q3 − ū(xC )]Φ2 (xC ) (54)
∂q2
∂J
= [Φ1 (xC )q1 + Φ2 (xC )q2 + Φ3 (xC )q3 − ū(xC )]Φ3 (xC ).
∂q3

∂J
The condition ∂q = 0 thus gives the following linear system

     
Φ1 Φ1 Φ2 Φ1 Φ3 Φ1  q1
x
q1y  ūx (xC )Φ1 (xC ) ūy (xC )Φ1 (xC )
     
Φ Φ
 1 2 Φ2 Φ2 Φ3 Φ2 

q x
 2 q2y 
 = ūx (xC )Φ2 (xC ) ūy (xC )Φ2 (xC ) .
  (55)
     
Φ1 Φ3 Φ2 Φ3 Φ3 Φ3 q3x q3y ūx (xC )Φ3 (xC ) ūy (xC )Φ3 (xC )
xC

By collecting all the NURBS basis at point xC in a column vector N(xC ), the control points displacements in the x
and y directions in qx and qy , respectively, Eq. (55) can be written in a compact form as

(N(xC )N(xC )T )qx = ūx (xC )N(xC )


(56)
(N(xC )N(xC )T )qy = ūy (xC )N(xC ).

Repeating the same analysis for other collocation points xC on the Dirichlet boundary, one obtains the linear system
Aq = b with two different b (one for the x component and the other for the y component). The dimension of A is
n × n where n denotes the number of control points defining the Dirichlet boundary. Having these boundary control
point displacements, the enforcement of Dirichlet BCs (when solving Ku = f ) are then treated as in standard FEM.
We note that this procedure involves only control points that define the essential boundary. This is in sharp contrast
to meshless shape functions such as the MLS used in the Element Free Galerkin method [122] where the displacements
at a point on the essential boundary depend not only on the nodes on that boundary but also the neighbouring interior

nodes. It is said that NURBS therefore satisfy the so-called weak Kronecker delta property as local Maxent interpolants
approximations.

32
Listing 2 gives the Matlab
R
implementation of the least-squares method. We refer to Fig. (14) for an illustration
of this method.
7

6 2

x
control points 5
1
collocation points xC
1 2 3 4

1 2

Figure 14: Illustration of the implementation of the least squares method: a quadratic NURBS surface with knot
vectors Ξ = {0, 0, 0, 0.5, 1, 1, 1} and H = {0, 0, 0, 0.5, 1, 1, 1}. Essential BCs are imposed on the bottom and right
edges. A one dimensional mesh for this boundary is created. The control points defining the essential boundary are
numbered from one to the total number of boundary control points. Note that this numbering is required only for
assembling the matrix A.

Listing 2: Matlab
R
implementation of the least-squares method
A = zeros ( noDispNodes , noDispNodes ) ;
bx = zeros ( noDispNodes , 1 ) ;
by = zeros ( noDispNodes , 1 ) ;

noxC = 4 ; % number o f c o l l o c a t i o n p t s / e l e m e n t
% l o o p o v e r bottom edge
f o r i e =1: noElemsU
sctr = bottomEdgeMeshIGA( i e , : ) ; % s t a n d a r d c o n n e c t i v i t y a r r a y
pts = c o n tr o l P ts ( s c tr , : ) ; % c o n t r o l pts o f element i e
s c tr A = bndElement ( i e , : ) ; % c o n n e c t i v i t y a r r a y f o r A m a tr i x
xiE = elRangeU ( i e , : ) ; % p a r a m e t r i c c o o r d s o f i e
xiArr = linspace ( xiE ( 1 ) , xiE ( 2 ) , noxC ) ; % c o l l o c a t i o n p t s x C
f o r i c =1:noxC

33
xi = xiArr ( i c ) ;
[N dNdxi ] = NURBS1DBasisDers ( x i , p , uKnot , w e i g h t s ) ;
A( sctrA , s c tr A ) = A( sctrA , s c tr A ) + N’ ∗N;
x = N ∗ pts ;
% exact displacements
[ ux , uy ] = e x a c t G r i f f i t h ( x , E0 , nu0 , sigmato , xTip , s e g , c r a c k l e n g t h ) ;
bx ( s c tr A ) = bx ( s c tr A ) + ux ∗N ’ ;
by ( s c tr A ) = by ( s c tr A ) + uy ∗N ’ ;
end
end
% loop over other edges i f neccessary

% s o l v e th e system Aq x=bx and Aq y=by


[ LL UU] = lu (A ) ;
qxTemp = LL\ bx ;
qyTemp = LL\ by ;
qx = UU\qxTemp ;
qy = UU\qyTemp ;
% l a t e r , b e f o r e s o l v i n g Ku=f , qx and qy w i l l be used
% to e n f o r c e BCs a s i n c o n v e n t i o n a l FEM.

In our Matlab
R
code implementation are provided for the penalty method, the Lagrange multiplier method and

the least squares method. The implementation of the two former methods are considered standard and the reader is
referred to [115] for details.

4. MIGFEM- A Matlab IGA (X)FEM code

In this section we describe shortly the open source IGA Matlab (X)FEM program which can be downloaded from
https://sourceforge.net/projects/cmcodes/. The code supports one, two and three dimensional linear elasticity
problems. Extended IGA for crack and material interface modelling is also implemented. Geometrically nonlinear solid
and structural mechanics models are available. The features of the code include:

• Global h,p and k-refinement is provided for one, two and three dimensional meshes.

34
• Extended IGA which is a Partition of Unity enrichment IGA for 2D traction-free cracks and material interfaces.

• An implementation for 3D cracks is also provided. In this case, level sets are used both for enrichment detection
and enrichment function evaluation.

• Visualization of displacements and stresses in Paraview (by exporting the results to a VTU file). The mesh used
for visualization is Q4 in 2D and B8 in 3D9 .

• Inhomogeneous Dirichlet boundary conditions are treated with the penalty method, the Lagrange multiplier
method and the least squares method.

• Compatible multi-patch isogeometric formulation for two dimensional problems.

• Support for T-splines via the Bézier extraction operators.

• Structural elements including beams, plates and thin shells.

• Implicit Newmark scheme and explicit central difference scheme for time discretization.

• Python scripts to extract Rhino3d NURBS surfaces to be used for IGA.

4.1. Program structure

The code is organized into sub-folders as explained in what follows.

iga contains the main files for linear elasticity problems e.g., igaPlateCircularHole.m for the plate with a circular hole
problem. These are the main script files to start with.

xiga contains the main files for LEFM problems e.g., xigaEdgeCrack.m for the edged crack plate in tension problem.

data contains data files that specify control points, knots, basis orders and weights. The data files are named as
“*Data.m”.

9 Q4 denotes four-noded quadrilateral elements and B8 denotes eight-noded brick elements.

35
C files contains the C implementation of some NURBS algorithms (evaluation of NURBS basis and their derivatives
etc.). In this way, MIGFEM is much faster than using a Matlab NURBS implementation.

fem contains FEM M files to solve the same problems solved with IGA. Such solutions are used as reference solution
to check IGA implementation. Usually the FEM code reads GMSH mesh files (files with extension *.msh). The *.msh
files are created from the GMSH geometry files *.geo.

fem-util contains some FEM related functions ([118]) which are used in an IGA context (Gauss quadrature for in-
stance).

@patch2D contains classes and methods implementation for multi-patch isogeometric analysis.

nurbs-geopdes contains the NURBS toolbox [105]. We use the order elevation and knot insertion provided by this
toolbox to perform k-refinement.

bezier-extraction contains a 2D/3D implementation of NURBS-based FEM using the concept of Bézier extraction.

structural-mechanics contains implementation of various structural mechanics models including Euler-Bernoulli


beam, Kirchhoff plate, Kirchhoff-Love thin shell (with and without geometrical nonlinearity). Mass matrices are also

provided so that modal analysis and transient dynamics analysis can be performed.

geometric-nonlinear contains implementation of the Total Lagrangian formulation for large displacements and rota-
tions.

4.2. Shape function routines

The shape function routines (evaluate NURBS basis functions and derivatives with respect to parametric coordi-

nates) are implemented using MEX files to improve the performance. They are located in folder C files. Listing 3
gives some commonly used shape function routines to compute the NURBS basis function and their first derivatives in

36
1D, 2D and 3D at a given point. In the last line, second derivatives are also computed.

Listing 3: Shape function routines.


[ R dRdxi ] = NURBS1DBasisDers ( Xi , q , vKnot , w e i g h t s ) ;
[R dRdxi dRdeta ] = NURBS2DBasisDers ( [ Xi ; Eta ] , p , q , uKnot , vKnot , w e i g h ts ’ ) ;
[R dRdxi dRdeta dRdzeta ] = NURBS3DBasisDers ( [ Xi ; Eta ; Zeta ] , p , q , r , uKnot , vKnot , wKnot , w e i g h ts ’ ) ;

[R dRdxi dRdeta dR2dxi dR2det dR2dxe ] = NURBS2DBasis2ndDers ( [ Xi ; Eta ] , p , q , uKnot , vKnot , w e i g h ts ’ ) ;

4.3. Data structure

MIGFEM follows the Matlab FEM code described in [118]. The main data structures include (1) element (store
the element connectivity), (2) node (store nodal coordinates), (3) K (stiffness matrix) and (4) f (external force vector).
Contrary to FEM in which the element connectivity and nodal coordinates are inputs which have been created by a
meshing program, in IGA, the input consists of CAD data including knots, control points, order of basis functions.
Therefore, one has to construct the element matrix based on the knots and the basis orders.

Mesh generation is illustrated by a 2D example shown in Fig. (15). Given the knot vectors uKnot and vKnot
together with the orders of the basis p and q, one can compute the number of control points along the ξ and ζ
directions, denoted by n and m. Then we define a two dimensional matrix of dimension m × n called node pattern
given by for the illustrated example shown in Fig. (15) which has 4 control points along ξ and 4 control points along
η directions

 
 1 2 3 4 
 
5 6 7 8
node pattern =  . (57)
 
 9 10 11 12
 
 
13 14 15 16

The number of elements along the two directions are noElemsU = length(unique(uKnot)) − 1 and noElemsV =
length(unique(uKnot))−1. Then the connectivity matrix for the ξ direction, denoted by connU which is a noElemsU ×

37
=

Node pattern
13 14 15 16

1
M4 (η)

9 10 11 12 3 2
M3 (η)

connV
2 1
0.5

2
M2 (η)

1
5 6 7 8 1
M1 (η)

1 2 3

2
00
1

0.8

0.6

0.4

0.2

2 3 4
1 2 3 4

1 connU
N1 (ξ) N2 (ξ) N3 (ξ) N4 (ξ)
0.8

Basis functions 0.6 Ξ = {0, 0, 0, 0.5, 1, 1, 1}

0.4

0.2
H = {0, 0, 0, 0.5, 1, 1, 1}

00 0.5 1
Figure 15: Two dimensional isogeometric analysis: mesh generation for a bi-quadratic NURBS surface (2 × 2 elements).
The circles denote the control points.

(p + 1) matrix, is given by

   
1 2 3 1 2 3
connU =  , connV =  , (58)
2 3 4 2 3 4

for the example under consideration. Matrix connU stores the indices of the non-zero basis functions at each knot span
for the ξ direction. Having this information, we are able to define the connectivity matrix for the whole mesh, called

38
element which is a noElemsU ∗ noElemsV × (p + 1)(q + 1) matrix. For the example herein, this matrix reads

 
1 2 3 5 6 7 9
10 11
 
2 3 4 6 7 8 10 11 12
element =  . (59)
 
5 6 7 9 10 11 13 14 15
 
 
6 7 8 10 11 12 14 15 16

Finally in order to compute the mapping from the parent domain  to the parametric space, we define the range of
each knot span in two directions as

   
 0 0.5  0 0.5
rangeU =  , rangeV =  . (60)
0.5 1 0.5 1

In order to retrieve the parametric coordinates of a specific element, the matrix index, that is a noElemsU ∗
noElemsV ×2 matrix, is used. For a given element e, its parametric coordinates are determined by rangeU(index(e,1),:);
rangeV(index(e,2),:).
The above discussion, together with the illustration given in Fig. (15) is implemented in Matlab in the file gener-
ateIGA2DMesh.m, located in folder meshing, and shown in Listing 4. In that folder, one can find similar M files
for generating 1D and 3D meshes.

Listing 4: Mesh generation for two dimensional problems.


uniqueUKnots = u n i q u e ( uKnot ) ;
uniqueVKnots = u n i q u e ( vKnot ) ;
noElemsU = length ( uniqueUKnots ) −1;%#o f e l e m e n t s x i d i r .
noElemsV = length ( uniqueVKnots ) −1;%#o f e l e m e n t s e t a d i r .
n o d e P a tte r n = zeros ( noPtsY , noPtsX ) ;

count = 1 ;
f o r i =1: noPtsY
f o r j =1: noPtsX
n o d e P a tte r n ( i , j ) = c o u n t ;
count = count + 1 ;
end

39
end
% d e t e r m i n e our e l e m e n t r a n g e s and th e c o r r e s p o n d i n g
% knot i n d i c e s a l o n g each d i r e c t i o n
[ elRangeU , elConnU ] = b u i l d C o n n e c t i v i t y ( p , uKnot , noElemsU ) ;
[ elRangeV , elConnV ] = b u i l d C o n n e c t i v i t y ( q , vKnot , noElemsV ) ;

noElems = noElemsU ∗ noElemsV ;


e l e m e n t = zeros ( noElems , ( p +1)∗( q + 1 ) ) ;

e = 1;
f o r v =1: noElemsV
vConn = elConnV ( v , : ) ;
f o r u=1: noElemsU
c = 1;
uConn = elConnU ( u , : ) ;
f o r i =1: length ( vConn )
f o r j =1: length ( uConn )
e l e m e n t ( e , c ) = n o d e P a tte r n ( vConn ( i ) , uConn ( j ) ) ;
c = c + 1;
end
end
e = e + 1;
end
end

i n d e x = zeros ( noElems , 2 ) ;
count = 1 ;
f o r j =1: s i z e ( elRangeV , 1 )
f o r i =1: s i z e ( elRangeU , 1 )
i n d e x ( count , 1 ) = i ;
i n d e x ( count , 2 ) = j ;
count = count + 1 ;
end
end

40
4.4. Assembly process

The assembly of an IGA-FEM code is given in Listing 5 where it can be seen that the procedure is almost identical
to that used in the conventional FEM. The minor differences lie in (1) the need of the elements in the parameter space
(lines 4 to 7) and (2) the second map (from the parent domain to the parametric domain) in the numerical integration
of the stiffness matrix (line 35).

Listing 5: Matlab code for IGA (2D elasticity problems).


1 [W,Q]= q u a d r a t u r e ( 4 , ’ GAUSS ’ , 2 ) ; % 4 x4 p o i n t q u a d r a t u r e
2 % A s s e m b l i n g system o f e q u a t i o n
3 f o r e =1: noElems % Loop o v e r e l e m e n t s ( knot s p a n s )
4 idu = index ( e , 1 ) ;
5 idv = index ( e , 2 ) ;
6 xiE = elRangeU ( idu , : ) ; % [ x i i , x i i +1]
7 etaE = elRangeV ( idv , : ) ; % [ e t a j , e t a j +1]
8 sctr = element ( e , : ) ; % element s c a t t e r v e c to r
9 sctrB = [ s c t r s c t r+noCtrPts ] ; % B s c a t t e r v e c .
10 nn = length ( s c t r ) ;
11 B = zeros ( 3 , 2 ∗ nn ) ;
12 % l o o p o v e r Gauss p o i n t s
13 f o r gp =1: s i z e (W, 1 )
14 pt = Q( gp , : ) ;
15 wt = W( gp ) ;
16 % compute c o o r d s i n p a r a m e te r s p a c e
17 Xi = p a r e n t 2 P a r a m e t r i c S p a c e ( xiE , pt ( 1 ) ) ;
18 Eta = p a r e n t 2 P a r a m e t r i c S p a c e ( etaE , pt ( 2 ) ) ;
19 J2 = jacobianPaPaMapping ( xiE , etaE ) ;
20 % d e r i v a t e o f R=Nxi ∗ Neta w . r . t x i and e t a
21 [ dRdxi dRdeta ] = NURBS2Dders ( [ Xi ; Eta ] , p , q , uKnot , vKnot , w e i g h ts ’ ) ;
22 % J a c o b i a n m a tr i x
23 pts = controlPts ( sctr , : ) ;
24 jacob = p ts ’ ∗ [ dRdxi ’ dRdeta ’ ] ;
25 J1 = det ( j a c o b ) ;
26 invJacob = inv ( j a c o b ) ;
27 dRdx = [ dRdxi ’ dRdeta ’ ] ∗ i n v J a c o b ;

41
28 % B m a tr i x
29 B ( 1 , 1 : nn ) = dRdx ( : , 1 ) ’ ;
30 B( 2 , nn +1:2∗ nn ) = dRdx ( : , 2 ) ’ ;
31 B ( 3 , 1 : nn ) = dRdx ( : , 2 ) ’ ; B( 3 , nn +1:2∗ nn)= dRdx ( : , 1 ) ’ ;
32 % compute e l e m e n t a r y s t i f f n e s s m a tr i x and assemble i t to th e g l o b a l m a tr i x
33 K( s c tr B , s c t r B ) = K( s c tr B , s c t r B ) + B’ ∗C∗B∗ J1 ∗ J2 ∗wt ;
34 end
35 end

4.5. Post-processing

We present here a simple technique to visualize the IGA results that reuse available visualization techniques for
finite elements. To simplify the exposé, only 2D cases are considered here. In the first step, a mesh consisting of
four-noded quadrilateral (Q4) elements is generated, see Fig. (16). We call this mesh the visualization mesh (whose
connectivity matrix is stored in elementV and nodal coordinates are stored in node) whose nodes are images of the
knots in the physical space. In the second step, quantities of interest e.g., stresses are computed at the nodes of the Q4

mesh. This mesh together with the nodal values can then be exported to a visualization program such as Paraview, see
[123], for visualization. It should be emphasized that due to the high order continuity of the NURBS basis, there is no
need to perform nodal averaging as required in standard C 0 finite element analysis to obtain smooth fields. Listing 6
gives the Matlab code (we have removed some code due to the similarity with the assembly code) for building the Q4
visualization mesh, computing the stresses at the nodes of this mesh and exporting the result to Paraview. The source
code can be found in the file plotStress1.m located in folder post-processing. The results can be then visualized
directly in Matlab or exported to Paraview, see Listing 7.

Listing 6: Matlab code for computing stresses and displacements at nodes of the visualization mesh.
b u i l d V i s u a l i z a t i o n M e s h ; % b u i l d v i s u a l i z a t i o n Q4 mesh
s t r e s s = zeros ( noElems , 4 , 3 ) ;
disp = zeros ( noElems , 4 , 2 ) ;
f o r e =1: noElems
idu = index ( e , 1 ) ; idv = index ( e , 2 ) ;
xiE = elRangeU ( idu , : ) ; etaE = elRangeV ( idv , : ) ;
sctr = element ( e , : ) ; % element s c a t t e r v e c to r

42
(a) NURBS mesh (b) approximate Q4 mesh

(c) stress visualization on a refined mesh

Figure 16: Exact NURBS mesh (top left) and approximate Q4 mesh (top right) for visualization purpose. The nodes
in the Q4 mesh are the intersections of the ξ and η knot lines. The bottom figure shows a contour plot of a stress field
in Paraview. It should be emphasized that the mesh in (b) does not provide a sufficiently smooth contour plot for it
to be directly usable. The result given in (c) was obtained with a refined NURBS mesh (hence a refined Q4 mesh).

43
sctrB = [ s c t r s c t r+noCtrPts ] ; %v e c t o r s c a t t e r s B m a tr i x
uspan = FindSpan ( noPtsX −1 ,p , xiE ( 1 ) , uKnot ) ;
vspan = FindSpan ( noPtsY −1 ,q , etaE ( 1 ) , vKnot ) ;
% l o o p o v e r 4 nodes ( i n s t e a d o f l o o p o v e r GPs)
gp = 1 ;
f o r i v =1:2
i f ( i v ==2) xiE = sort ( xiE , ’ descend ’ ) ; end
f o r i u =1:2
Xi = xiE ( i u ) ; Eta = etaE ( i v ) ;
[N dRdxi dRdeta ]= NURBS2DBasisDersSpecial ( [ Xi ; Eta ] , p , q , uKnot , vKnot , w e i g h ts ’ , [ uspan ; vspan ] ) ;
% B m a tr i x a s u s u a l
strain = B∗U( s c t r B ) ;
s t r e s s ( e , gp , : ) = C∗ s t r a i n ;
gp = gp +1;
end
end
end

Listing 7: Matlab code for post-processing.


% p l o t s i g m a x x c o n t o u r d i r e c t l y i n Matlab
figure
p l o t f i e l d ( node , elementV , ’ Q4 ’ , s t r e s s ( : , : , 1 ) ) ;
% e x p o r t to VTK f o r m a t to p l o t i n Mayavi o r Paraview
sigmaXX = zeros ( s i z e ( node , 1 ) , 1 ) ;
sigmaYY = zeros ( s i z e ( node , 1 ) , 1 ) ;
sigmaXY = zeros ( s i z e ( node , 1 ) , 1 ) ;

dispX = zeros ( s i z e ( node , 1 ) , 1 ) ;


dispY = zeros ( s i z e ( node , 1 ) , 1 ) ;

f o r e =1: s i z e ( elementV , 1 )
c o n n e c t = elementV ( e , : ) ;
f o r i n =1:4
nid = connect ( i n ) ;

44
sigmaXX ( n i d ) = s t r e s s ( e , in , 1 ) ;
sigmaYY ( n i d ) = s t r e s s ( e , in , 2 ) ;
sigmaXY ( n i d ) = s t r e s s ( e , in , 3 ) ;
end
end
VTKPostProcess ( node , elementV , 2 , ’ Quad4 ’ , ’ result . vtu ’ , . . .
[ sigmaXX sigmaYY sigmaXY ] , [ dispX dispY ] ) ;

For three-dimensional problems, the same procedure is used where a mesh of tri-linear brick elements is created and
the values of interest are computed at the nodes of this mesh (see file plotStress3d.m). The results are then exported
to Paraview under a structured grid format (*.vts files), see the file mshToVTK.m).

4.6. h, p, k-refinement

For the refinement of NURBS, we reuse the NURBS Toolbox described in [105]. We construct a NURBS surface as
shown in Fig.(17a). The corresponding Matlab code is given in Listing 8. Using a uniform h-refinement (Listing 9), we
obtain the mesh given in Fig.(17b). If one needs to use k−refinement (p−refinement followed by h−refinement), then
the code in Listing 10 can be used (see Fig.(17c)). Finally, Fig.(17d) gives the mesh which is obtained by the process
in which h−refinement is employed first and then p−refinement is performed (see Listing 11). After using the NURBS
toolbox, the NURBS object is then converted to MIGFEM data structures using the function convert2DNurbs lo-
cated in folder nurbs-util.

Listing 8: Construct a NURBS surface using the NURBS toolbox.


a = 0 . 3 ; b = 0 . 5 ; % inner / outer radius
%% knots , c o n t r o l p o i n t s
uKnot = [ 0 0 0 1 1 1 ] ; %q u a d r a t i c b a s i s
vKnot = [ 0 0 1 1 ] ; %l i n e a r b a s i s
% homogeneous c o o r d s ( x∗w, y ∗w, z ∗w, w)
% 3 p t s i n u−d i r , 2 p t s i n v−d i r
controlPts = zeros ( 4 , 3 , 2 ) ;

45
(a) Initial NURBS mesh (b) After h-refinement

(c) After k-refinement (d) After hp-refinement

Figure 17: Illustration of the utilization of the NURBS toolbox in building NURBS object (a). From the initial mesh,
different meshes can be obtained using either h−refinement, p−refinement or combination thereof. As can be seen from
(c) and (d), k−refinement (c) is more efficient than hp−refinement (d). The function plotMesh.m in folder meshing
is used to plot NURBS mesh and control polygon.

46
controlPts (1: 2 , 1 , 1) = [ a ; 0 ] ;
controlPts (1: 2 , 2 , 1) = [ a ; a ; ] ;
controlPts (1: 2 , 3 , 1) = [ 0 ; a ] ;

controlPts (1: 2 , 1 , 2) = [ b ; 0 ] ;
controlPts (1: 2 , 2 , 2) = [ b ; b ] ;
controlPts (1: 2 , 3 , 2) = [ 0 ; b ] ;

controlPts ( 4 , : , : ) = 1;
c o n t r o l P t s ( 4 , 2 , 1 ) = 1/ sqrt ( 2 ) ;
c o n t r o l P t s ( 4 , 2 , 2 ) = 1/ sqrt ( 2 ) ;

% homogenous c o o r d i n a t e s ( x ∗w, y∗w, z ∗w)


controlPts (1: 2 , 2 , 1) = controlPts (1:2 ,2 ,1)∗ fac ;
controlPts (1: 2 , 2 , 2) = controlPts (1:2 ,2 ,2)∗ fac ;

%% b u i l d NURBS o b j e c t
s o l i d = nrbmak ( c o n t r o l P t s , { uKnot vKnot } ) ;

Listing 9: h-refinement using the NURBS toolbox.


1 refineLevel = 2;
2 f o r i =1: r e f i n e L e v e l
3 uKnotVectorU = u n i q u e ( uKnot ) ;
4 uKnotVectorV = u n i q u e ( vKnot ) ;
5 % new k n o ts a l o n g two d i r e c t i o n s
6 newKnotsX =uKnotVectorU ( 1 : end−1)+0.5∗ d i f f ( uKnotVectorU ) ;
7 newKnotsY =uKnotVectorV ( 1 : end−1)+0.5∗ d i f f ( uKnotVectorV ) ;
8

9 newKnots = {newKnotsX newKnotsY } ;


10 solid = n r b k n t i n s ( s o l i d , newKnots ) ;
11 uKnot = c e l l 2 m a t ( s o l i d . k n o ts ( 1 ) ) ;
12 vKnot = c e l l 2 m a t ( s o l i d . k n o ts ( 2 ) ) ;
13 end
14 convert2DNurbs % c o n v e r t to th e MIGFEM f o r m a t

47
15 plotMesh ( c o n t r o l P t s , w e i g h ts , uKnot , vKnot , p , q , r e s , ’r - ’ , ’ try . eps ’ ) ;

Listing 10: k-refinement using the NURBS toolbox.


1 % code from L i s t i n g 5
2 % o r d e r e l e v a t i o n , p=p+2 , q=q+1
3 s o l i d = nrbdegelev ( s ol i d , [ 2 1]);
4 % then , knot i n s e r t i o n u s i n g th e code from L i s t i n g 6
5 convert2DNurbs % c o n v e r t to th e MIGFEM f o r m a t

Listing 11: h-refinement followed by p-refinement using the NURBS toolbox.


1 % code from L i s t i n g 5
2 % then , knot i n s e r t i o n u s i n g th e code from L i s t i n g 6
3 % o r d e r e l e v a t i o n , p=p+2 , q=q+1
4 s o l i d = nrbdegelev ( s ol i d , [ 2 1]);
5 convert2DNurbs % c o n v e r t to th e MIGFEM f o r m a t

Listing 12: A typical input file for MIGFEM.


1 % code from L i s t i n g 5
2 % code from L i s t i n g 6 ( i f o n l y h−r e f i n e m e n t )
3 convert2DNurbs%c o n v e r t to th e MIGFEM f o r m a t ( i f not done y e t )
4 generateIGA2DMesh % b u i l d th e mesh ( e l e m e n t c o n n e c t i v i t y )

4.7. Input file for MIGFEM

A typical input file is given in Listing 12. This file replaces the standard FE mesh file. Note that, for backward
compatibility with older versions of the MIGFEM code, some input files do not use the NURBS toolbox to create the
NURBS object. For those input files, it is however impossible to perform order elevation and hence k−refinement. It is,
therefore, recommended to create the NURBS objects using the NURBS toolbox [105] which, besides the aforementioned
refinement functionalities, also supports many useful operations such as extrusion, rotation etc.

48
4.8. Linear and nonlinear parametrization

Let us consider a simple example to illustrate what parametrization means to isogeometric analysis. We refer to
[38, 94] for a throughout discussion on this topic. Suppose ones need to perform an IGA for a unit square using
bi-cubic B-spline basis functions. Figure (18) presents two ways of parametrization of the square. In the first way, the
k-refinement (hence the CPs are automatically computed) was used to obtain the mesh shown in Fig.(18a) of which the
parametrization is linear i.e., the determinant of the Jacobian is constant as shown in Fig. (18b). In the second way,
a uniform distribution of CPs was chosen a priori. The corresponding mesh and the distribution of the determinant of
the Jacobian are given in Fig. (18c,d). Obviously the parametrization in this case is nonlinear.

(a) mesh with non-uniform CPs (b) determinant of the Jacobian

(c) mesh with uniform CPs (d) determinant of the Jacobian

Figure 18: Illustration of linear vs nonlinear parametrization.

49
5. Extended isogeometric finite element method

Inspired by the extended finite element method (XFEM) (see e.g., [70], [124] for a recent review and open XFEM
library [125]), a 2D extended isogeometric finite element formulation (XIGA) was presented in [71, 72] in which the
displacement field is enriched for traction-free crack modelling using the following approximation

4
!
X X X X
h
u (x) = ΦI (x)uI + ΦJ (x)H(x)aJ + ΦK (x) B α bα
K , (61)
I∈S J∈Sc K∈Sf α=1

where ΦI,J,K are NURBS basis functions. In addition to the standard dofs uI , additional dofs aJ and bα
K are introduced.

The set Sc includes the nodes whose support is cut by the crack and the set Sf are nodes whose support contains the
crack tip xtip , see Fig. (19). Note that we use a topological tip enrichment and in the literature another tip enrichment
scheme called geometrical enrichment with a fixed area (to ensure that the role of enrichment in the approximation
space does not vanish as the mesh is refined) is present see e.g., [126]. The Heaviside function H is given by


 +1 if (x − x∗ ) · n ≥ 0

H(x) = , (62)
 −1 otherwise

where x∗ is the projection of point x on the crack. And the branch functions are given by

√ θ √ θ √ √
 
θ θ
[B1 , B2 , B3 , B4 ] (r, θ) = r sin , r cos , r sin cos θ, r cos cos θ , (63)
2 2 2 2

where r and θ are polar coordinates in the local crack front coordinate system (see e.g., [70] for details). It is noted
that B1 is discontinuous along the crack face.
Using the standard Bubnov-Galerkin procedure as outlined in Section 3.5 the discrete system of equations Ku = f
are formed by an enlarged B matrix given by

 
B= Bstd Benr , (64)

50
Heaviside enriched nodes
vertices of physical mesh

D C P N
control points

A B Q M crack tip enriched nodes

Figure 19: Illustration of enriched node sets Sf and Sc for a quadratic NURBS mesh. The thick red line denotes the
crack.

where Bstd is the standard B and Benr is the enriched B matrix:

 
 (ΦI ),x ΨI + ΦI (ΨI ),x 0 
Benr
 
I =
 0 (ΦI ),y ΨI + ΦI (ΨI ),y .
 (65)
 
(ΦI ),y ΨI + ΦI (ΨI ),y (ΦI ),x ΨI + ΦI (ΨI ),x

ΨI may represent either the Heaviside function H or the branch functions Bα . The unknown vector u contains both
displacements and enriched dofs. This extended IGAFEM can be implemented within an available IGAFEM code with
little modification following the ideas given in the meshless review and computer implementation aspects paper [115].
Fictitious control points are added to handle additional dofs a and b. We now present a way in which to select enriched
nodes that reuse most of the tools present in an existing XFEM code.

Selection of enriched control points We use the approximate Q4 mesh used for visualization as discussed in
Section 4.5 for selection of enriched control points. The level set values of the crack at the vertices of this mesh are
then computed. Based on these level sets, elements cut by the crack and elements containing the crack tip can be
determined [127]. For example, element ABCD in Fig. (19) is cut by the crack. In a FEM context, its four nodes
are then enriched using the Heaviside function. In an isogeometric framework, however, the control points associated
to this element are enriched. Listing 13 details the Matlab
R
implementation of this process. Note that this listing

is taken directly from our XFEM code [115] without any modification and thus the proposed technique is considered
simpler than that adopted in [72]. We emphasize that the crack geometry is defined in the physical space to keep the

51
usual XFEM notation.

Listing 13: Selection of enriched nodes.


e n r i c h n o d e = zeros ( noCtrPts , 1 ) ;
c o u n t1 = 0 ;
c o u n t2 = 0 ;
f o r i e l = 1 : numelem
sctr = elementV ( i e l , : ) ;
sctrIGA = e l e m e n t ( i e l , : ) ;
phi = l s ( s c t r , 1 ) ; % normal l e v e l s e t
psi = l s ( sctr , 2 ) ; % tangent l e v e l s et
i f ( max( p h i )∗min( p h i ) < 0 )
i f max( p s i ) < 0
c o u n t1 = c o u n t1 + 1 ; % one s p l i t e l e m e n t
s p l i t e l e m ( c o u n t1 ) = i e l ;
e n r i c h n o d e ( sctrIGA ) = 1;
e l s e i f max( p s i )∗min( p s i ) < 0
c o u n t2 = c o u n t2 + 1 ; % one t i p e l e m e n t
t i p e l e m ( c o u n t2 ) = i e l ;
e n r i c h n o d e ( sctrIGA ) = 2;
end
end
end
s p l i t n o d e s = find ( e n r i c h n o d e == 1 ) ;
tip nodes = find ( e n r i c h n o d e == 2 ) ;

Remark 5.1. Note that for simple geometries as those tackled in this paper, the use of level sets is certainly not
necessary. More generally, describing open surfaces (cracks) with level sets requires two level sets functions that, for
crack growth simulations, must be reinitialised for stability (this decreases accuracy) and reorthogonalised every few
time steps. This is particularly cumbersome and probably explains along with the difficulties in dealing intersecting
and branching cracks the recent trend of research efforts in the area of phase field models of fracture, see e.g., [128, 74],
the thick level set method [129].

Crack visualization We have H(x+ ) − H(x− ) = 2 and B1 (x+ ) − B1 (x− ) = 2 r, therefore the displacement jump

52
at a point x on the crack face is given by

X √ X
[[u]](x) = 2 ΦJ (x)aJ + 2 r ΦK (x)b1K . (66)
J∈Sc K∈Sf

Note that the other branch functions Bα , α = 2, 3, 4 are continuous functions and thus do not contribute to the
displacement jump.

crack

(a) (b)
Figure 20: Crack visualization in XIGA: (a) build a mesh that is compatible to the crack by introducing double nodes
along the crack (square nodes) and (b) assign the displacement jumps to these new nodes. Note that the square nodes
in the tip element are used only for compatibility purposes. Exact mode I displacements are imposed on the bottom,
right and top edge using the Lagrange multiplier method while Neumann BCs from the exact stress field are enforced
on the left edge. We refer to [115] for a detailed description of this standard problem.

Figure 20 illustrates the idea for crack visualization with the script crackedMeshNURBS.m providing imple-
mentation details. The contour plots of the displacement and stress field of a mode I cracked sample are given in Fig.
(21). Note that the stresses at points on the crack are simply set to zero (traction-free cracks) and the stresses of the
new nodes of the tip element are interpolated from the values of the four nodes of this Q4 element.

Remark 5.2. As is the case for XFEM, integration over elements cut by the cracks usually requires subdivision of
the elements into integration subcells. We refer to [130] for a recent discussion on this issue. In addition to this
popular technique, a simple integration rule is also provided–elements crossed by the crack and tip-enriched elements
are numerically integrated using a regular Gauss-Legendre quadrature with a large number of Gauss points as done in

53
Figure 21: Contour plots on a cracked mesh: (a) vertical displacement and (b) normal stress in the vertical direction.

[131].

6. Bézier extraction

As can be seen from the previous presentation incorporating NURBS as new shape functions in existing FE codes
is not a trivial task particularly for commercial FE codes. As pointed out by the authors in [132, 52], Bézier extraction

provides a tool to facilitate the incorporation of NURBS and even T-splines in to any FE codes. Implementing IGA
using the Bézier extraction has the following advantages especially when T-splines are employed

• An FE code capable of handling extraction operators can easily incorporate both NURBS and T-splines;

• It allows an analyst to perform T-splines FEA without needing to understand the complex details of T-splines
technology;

• Using Bézier extraction, the NURBS/T-splines meshes contain elements having the same basis (the so-called
Bernstein polynomials) defined on the parent domain as standard Lagrange finite elements.

• Simplify the parallelization of IGA code because neighbouring elements have in common nodes locating on the

element edges.

• It is faster than an IGA implementation without using the extraction operator (in our code the Bernstein poly-
nomials are pre-computed at integration points of a single element).

54
The idea is based on the fact that any B-splines basis can be written as a linear combination of Bernstein polynomials.
Mathematically,

Ne (ξ) = Ce B(ξ) (67)

where Ce denotes the elemental Bézier extraction operator and B are the Bernstein polynomials which are defined on
the parent element [−1, 1] × [1, 1].

In this section, we present in detail how to implement IGA using Bézier extraction for both 2D and 3D problems.
The implementation can be found in folder bezier-extraction. Using the knots, the elemental (local) Bézier extrac-
tion operators can be computed using the file bezierExtraction2D.m for 2D and bezierExtraction3D.m for 3D
problems. Listing 14 gives the implementation of the former. After having the extractor which is a sparse matrix, there
is no need to use knots and standard algorithms (find span for example) of NURBS to compute the shape functions.
Listing 15 gives a part of the assembly process for a 2D IGA code that uses the Bézier extraction technique. In order to
compute the external force resulting from a traction being applied on an edge of a B-splines/NURBS/T-splines curve,
one also needs the Bézier extraction operators along each parametric direction.

Listing 14: Computation of 2D Bézier extraction operators.


1 function [ C, Cxi , Cet ] = b e z i e r E x t r a c t i o n 2 D ( uknot , vknot , p , q )
2 % Bezier extraction operators f o r x i and e t a
3 % nb1 : number o f e l e m e n t s a l o n g x i d i r e c t i o n
4 % nb2 : number o f e l e m e n t s a l o n g e t a d i r e c t i o n
5 [ Cxi , nb1 ] = b e z i e r E x t r a c t i o n ( uknot , p ) ;
6 [ Cet , nb2 ] = b e z i e r E x t r a c t i o n ( vknot , q ) ;
7 % For B s p l i n e s /NURBS, th e e l e m e n t B e z i e r e x t r a c t i o n operator i s square .
8 s i z e 1 = s i z e ( Cxi ( : , : , 1 ) , 1 ) ;
9 s i z e 2 = s i z e ( Cet ( : , : , 1 ) , 1 ) ;
10 % Bezier extraction operators f o r th e whole mesh
11 % a s th e t e n s o r p r o d u c t o f Cxi and Cet
12 C = zeros ( s i z e 1 ∗ s i z e 2 , s i z e 1 ∗ s i z e 2 , nb1 ∗ nb2 ) ;
13

14 f o r e t a =1: nb2
15 f o r x i =1: nb1

55
16 e = ( e ta −1)∗ nb1 + x i ;
17 f o r row =1: s i z e 2
18 i r d = ( row −1)∗ s i z e 1 + 1 ;
19 jrd = row ∗ s i z e 1 ;
20 f o r c o l =1: s i z e 2
21 i c d = ( c o l −1)∗ s i z e 1 + 1 ;
22 jcd = col ∗ size1 ;
23 C( i r d : j r d , i c d : j c d , e ) = Cet ( row , c o l , e t a ) ∗ Cxi ( : , : , x i ) ;
24 end
25 end
26 end
27 end

Listing 15: Assembly of stiffness matrix-IGA with Bezier extraction operators.


1 % pre−compute B e r n s t e i n p o l y n o m i a l s
2 shapes = zeros ( noGpEle , n o B a s i s ) ;
3 derivs = zeros ( noGpEle , n o B a s i s , 2 ) ;
4

5 f o r gp =1: s i z e (W, 1 )
6 [ s h a p e s ( gp , : ) d e r i v s ( gp , : , : ) ] = getShapeG ra d Be rn ste in2 D ( p , q ,Q( gp , 1 ) ,Q( gp , 2 ) ) ;
7 end
8 f o r e =1: noElems % Loop o v e r e l e m e n t s
9 sctr = element ( e , : ) ; % element s c a t t e r v e c to r
10 Ce = C( : , : , e ) ; % e l e m e n t e x t r a c t i o n op .
11 we = diag ( w e i g h t s ( s c t r , : ) ) ; % e l e m e n t w e i g h t s
12 pts = controlPts ( sctr , : ) ; % e l e m e n t nodes
13 Wb = Ce ’ ∗ w e i g h t s ( s c t r , : ) ; % element B e z i e r weights
14 f o r gp =1: s i z e (W, 1 ) % l o o p o v e r Gauss p o i n t s
15 wt = W( gp ) ;
16 % r e t r i e v e B e r n s t e i n b a s i s and d e r i v a t i v e s a t GP gp
17 Be = s h a p e s ( gp , : ) ’ ;
18 dBedxi = reshape ( d e r i v s ( gp , : , : ) , n o B a s i s , 2 ) ;
19

20 %% B e z i e r w e i g h t f u n c t i o n s ( denomenator o f NURBS)

56
21 wb = dot ( Be ,Wb) ;
22 dwbdxi ( 1 ) = dot ( dBedxi ( : , 1 ) ,Wb) ;
23 dwbdxi ( 2 ) = dot ( dBedxi ( : , 2 ) ,Wb) ;
24 %% Shape f u n c t i o n and d e r i v a t i v e s
25 R =we∗Ce∗Be/wb ;
26 dRdxi ( : , 1 ) = we∗Ce ∗ ( dBedxi ( : , 1 ) / wb−dwbdxi ( 1 ) ∗ Be / (wb∗wb ) ) ;
27 dRdxi ( : , 2 ) = we∗Ce ∗ ( dBedxi ( : , 2 ) / wb−dwbdxi ( 2 ) ∗ Be / (wb∗wb ) ) ;
28

29 %% J a c o b i a n m a tr i x
30 d x d x i = p ts ’ ∗ dRdxi ; d x i d x=inv ( d x d x i ) ; dRdx=dRdxi ∗ d x i d x ;
31 d e tJ = det ( d x d x i ) ;
32 % and B m a tr i x ( u s e dRdx ) , K m a tr i x a s u s u a l

6.1. Bernstein functions and Bézier extraction

The univariate Bernstein basis functions of order p are defined over the biunit interval [−1, 1] as

 
1  p p−(i−1)
Bi,p (ξ) = p   (1 − ξ) (1 + ξ)i−1 , (68)

2 i−1
   
p p p!
where   is the binomial coefficient   = (i−1)!(p+1−i)! , 1 ≤ i ≤ p + 1. We emphasize that, in CAD
   
i−1 i−1
Bernstein polynomials are defined on interval [0, 1]. However, in a finite element setting, the biunit interval [−1, 1],
where the Gauss quadrature is defined, is preferable. The Bernstein basis functions for p = 1, 2, 3 and 4 are plotted in
Fig.(22). Note that for p = 1, the Bernstein basis resembles the linear Lagrange basis.
The first derivative of the Bernstein basis is defined in terms of low order basis as follows

∂Bi,p (ξ) 1
= p [Bi−1,p−1 (ξ) − Bi,p−1 (ξ)] . (69)
∂ξ 2

And the second derivative is therefore given by

2
Bi,p (ξ) 1
= p(p − 1) [Bi−2,p−2 − 2Bi−1,p−2 + Bi,p−2 ] . (70)
∂ξ 2 4

57
1 1
p=1 p=2
0.8 0.8
1 3
0.6 1 2 0.6 2
0.4 0.4

0.2 0.2

0 0
−1 −0.6 −0.2 0.2 0.6 1 −1 −0.6 −0.2 0.2 0.6 1 ξ
ξ

1 1
p=3 p=4
0.8 0.8
1 4 1 5
0.6 0.6
2 3 2 4
3
0.4 0.4

0.2 0.2

0 0
−1 −0.6 −0.2 0.2 0.6 1ξ −1 −0.6 −0.2 0.2 0.6 1 ξ

Figure 22: Bernstein basis functions for polynomial degree p = 1, 2, 3, 4.

58
The univariate Bernstein basis and its first derivatives are implemented in getShapeGradBernstein.m in folder
nurbs-util. The univariate Bernstein basis, its first and second derivatives are implemented in getShapeGrad2Bernstein.m
The bivariate Bernstein basis and its first derivatives are implemented in getShapeGradBernstein2D.m and get-
ShapeGrad2Bernstein2D.m computes the basis, first and second derivatives. Trivariate Bernstein polynomials are
implemented in getShapeGrads3D.m. Note that for 3D cases, only the first derivatives are currently provided.

6.1.1. Evaluation of the basis and its derivatives

For ease of computer implementation we provide expressions for evaluating the shape functions and theire first

and second derivatives in the case of bi-variate NURBS implemented using the Bézier extraction method. The shape
functions for element e read

We Ne (ξ) We Ce Be (ξ)
Re (ξ) = = , (71)
W (ξ) W (ξ)

where We denotes the diagonal matrix of weights and W (ξ) = wb · Be . The Bézier weights are given by wb = CT w.
The derivatives of the shape functions with respect to ξ are given by

Be,ξ Be W,ξ
 
Re,ξ (ξ) =W C e e
− / (72)
W W2

And the second derivatives read

Be,ξξ 2Be,ξ W,ξ Be W,ξξ 2Be (W,ξ )2


 
Re,ξξ = We Ce − − + , (73)
W W2 W2 W3

Be,ξη Be,ξ W,η Be,η W,ξ Be W,ξη 2Be W,ξ W,η


 
Re,ξη =W Ce e
− − − + . (74)
W W2 W2 W2 W3

6.2. T-splines surfaces

Thanks to the implementation of IGA using the Bézier extraction operators, MIGFEM is able to perform FEA on
T-splines geometries. Firstly, users have to build T-splines geometries using Rhino3d, then use the T-splines plugin,
see [133] to create the so-called ’*.iga’ files that are ready to be used in an IGA code. We reuse the script of GeoPDEs
[105] that reads the ’*.iga’ files. This file contains all information that an IGAFEM code needs–element connectivity,

59
nodal coordinates, weights and the Bézier extraction operators. We refer to [52] for a description of Bézier extraction
for T-splines. Comparing to the implementation of NURBS-based IGA (using Bézier extraction), as given in Listing 15,
the implementation of Tsplines-based IGA is almost identical. The major difference lies in the data structure used to
store the elemental Bézier extraction operators C and the element connectivity, which should be generalised (in Matlab
cell data structures can be used instead of matrix). This is because in T-splines, the number of non-zero basis function
varies from element to element. Furthermore, in unstructured T-spline meshes, elements can have orders which should

be taken into account. We refer to file igaSquareTspline.m for an implementation of unstructured Tspline meshes.

6.3. Post-processing

When one implements IGA using the Bézier extraction operators, the post-processing described in Section 4.5 can
no longer be used because no information on the knots is stored. This is particularly true for T-splines with T-junctions.
In what follows, some straightforward post-processing techniques that work for NURBS/T-splines are discussed.
For stresses and strains which are Gauss point (GP) quantities, one can use a discrete visualization technique listed
in Listing 16. Listing 17 presents a method that requires a triangulation of the Gauss points in the physical coordinate
system. The triangulation provides a mesh whose vertices are the GPs. Thus, available visualization for FEM (e.g.,
line 4 in Listing 17) can be readily reused. The drawback of this triangulation technique is that sometimes one has to
remove undesired triangles which locate outside the physical domain. Note that this difficulty also appears in methods
relying on implicit boundaries such as the structured XFEM method, see e.g., [79, 80].
Yet another simple visualization technique is used to produce plots shown in Fig.(23c,d). This is the technique used
in the GeoPDEs package [105]. In this technique, GPs for each element make a structured mesh of Q4 elements (the
discussion is restricted to 2D for simplicity). Due to the structure of the GPs, the connectivity of the GP mesh for
each NURBS element can be easily constructed. The visualization mesh consists of meshes of each element and since

there are no GPs locating on the common edge between two neighbouring elements, there are gaps in the visualization
mesh (see Fig.(23c)). In order to reuse this gap, for each NURBS element, 10 × 10 points (we call them visualization
points, VPs) can be used for visualization (for numerical integration, the standard (p + 1) × (q + 1) Gaussian rule is
used).

Listing 16: Discrete visualization technique.


1 % x d e n o t e s th e Gauss p o i n t s i n th e p h y s i c a l domain

60
2 % sigma ( : , 2 ) : s i g m a { yy } a t a l l GPs
3 figure
4 s c a t t e r ( x ( : , 1 ) , x ( : , 2 ) , 8 0 , sigma ( : , 2 ) , ’ full ’ ) ;
5 axis ( ’ equal ’ ) ;
6 colorbar

Listing 17: Finite element visualization using a triangulation of the Gauss points.
1 % x d e n o t e s th e Gauss p o i n t s i n th e p h y s i c a l domain
2 t r i = delaunay ( x ) ;
3 figure
4 p l o t f i e l d ( x , t r i , ’ T3 ’ , sigma ( : , 2 ) ) ;
5 axis ( ’ equal ’ ) ;
6 colorbar ( ’ vert ’ ) ;

Yet another method is to extrapolate the quantities at GPs (stresses and strains) to the Bézier control points, see
Fig. 24. Next, each Bézier element is divided into n×n sub-elements (n denotes the Bernstein degree). Lastly, standard
FEM visualization methods can be employed on the mesh consisting of those sub-elements. The file igaPlateCircu-
larHoleTspline.m implements all these techniques (except the last one which uses sub-elements).

7. Structural mechanics

Thanks to the high order continuity provided by NURBS/T-splines, the implementation of rotation-free thin beam/-
plate/shell elements becomes direct and simple. In this section, we are going to present the implementation of a
rotation-free IGA Kirchhoff plate formulation. For simplicity only isotropic elastic plates are considered.
The element stiffness matrix is defined as

Z
Ke = BT
e DBe dΩ, (75)
Ωe

61
Sigma XX

2.5 2.5
3.5 3.5

3 2 3 2

2.5 2.5
1.5 1.5
2

Y
2
1.5 1
1.5 1
1
1 0.5
0.5 0.5
0.5
0
0 0 1 2 3 4
0 1 2 3 4 X
(a) Discrete visualization (b) Domain visualization with triangles

(c) Domain visualization with rectangles (d) Unconnected sub-elements

Figure 23: Simple visualization techniques available in MIGFEM: (a) discrete visualization, (b) triangulation of GPs
and (c,d) visualization of T-splines (in Paraview) using structured mesh made of VPs.

62
control points (u) Bézier points

Gauss points (σ, ǫ)

Figure 24: IGA visualization using the Bézier control mesh. The stresses (strains) at Gauss points are extrapolated
to the Bézier control points. The displacements at NURBS/T-splines control points are mapped to the Bézier control
points. Lastly, standard visualization techniques can be applied to the Bézier control mesh which is simply a mesh of
quadrilateral elements in 2D.

where the constitutive matrix D reads

 
1 ν 0
Eh3

 
D= ν 1 0 , (76)
12(1 − ν 2 ) 



0 0 0.5(1 − ν)

where h denotes the plate thickness and the element displacement-curvature matrix B is given by

 
 R1,xx R2,xx · · · Rn,xx 
 
Be = 
 R1,yy R2,yy ,
· · · Rn,yy  (77)
 
2R1,xy 2R2,xy · · · 2Rn,xy

where n denotes the number of basis functions of element e.

7.1. Boundary conditions

For clamped BCs one needs to fix the rotations and the nodal unknowns are, however, only the tranverse displace-
ments w. To fix the rotation of a boundary, we simple fix two row of control points at the boundary [20], see Fig.(25).

63
Figure 25: Enforcing BCs for a fully clamped plate: simply fixing the deflections of two rows of control points around
the clamped boundary. Note that the set of CPs next to the boundary CPs are not artificially added to impose the
rotations. They are simply the CPs defining the geometry of the plate.

7.2. Symmetry boundary conditions

Figure 26 illustrates the use of symmetry boundary conditions when only 1/4 of the plate is modelled. Along the
symmetry lines, the rotation should be zero which can be enforced by constraining the deflection (w) of two rows of
control points along these lines together. These contraints can be implemented using a simple penalty technique as
shown in Listing 18.
coupled nodes

sym

fix
sym

fix
Figure 26: A fully clamped square plate: 1/4 model is analyzied using appropriate symmetry BCs. Along the symmetry
lines, the rotation is fixed which can be achieved by enforcing the deflection of two rows of control points that define
the tangent of the plate to have the same value.

64
Listing 18: Enforcing symmetry BCs.
w = 1 e7 ;
p e n a l t y S t i f f n e s s = w∗ [ 1 −1;−1 1 ] ;

f o r i =1: length ( topNodes )


sctr = [ topNodes ( i ) nextToTopNodes ( i ) ] ;

K( s c t r , s c t r ) = K( s c t r , s c t r ) + p e n a l t y S t i f f n e s s ;
end
% th e same f o r th e l e f t two rows

For completeness, we give the implementation of Kirchhoff plate elements in Listing 19. Note that we have skipped
codes that are common with IGA code for 2D continua.

Listing 19: Computation of stiffness matrix for the Kirchhoff plate.


1 f o r gp =1: s i z e (W, 1 )
2 pt = Q( gp , : ) ;
3 wt = W( gp ) ;
4 % shape f u n c t i o n s , f i r s t and s e c o n d d e r i v a t i v e s w . r . t n a t u r a l c o o r d s
5 [R dRdxi dRdeta dR2dxi dR2det dR2dxe]=NURBS2DBasis2ndDers ( [ Xi ; Eta ] , p , q , uKnot , vKnot , w e i g h ts ’ ) ;
6 % compute th e j a c o b i a n o f p h y s i c a l and p a r a m e te r domain mapping
7 % then th e d e r i v a t i v e w . r . t s p a t i a l p h y s i c a l c o o r d i n a t e s
8 jacob = [ dRdxi ; dRdeta ] ∗ p t s ; % 2 x2 m a tr i x
9 j a c o b 2 = [ dR2dxi ; dR2det ; dR2dxe ] ∗ p t s ; % 3 x2 m a tr i x
10

11 J1 = det ( j a c o b ) ;
12 dxdxi = jacob ( 1 , 1 ) ; dydxi = jacob ( 1 , 2 ) ;
13 dxdet = j a c o b ( 2 , 1 ) ; dydet = j a c o b ( 2 , 2 ) ;
14 j33 = [ d x d x i ˆ2 d y d x i ˆ2 2∗ d x d x i ∗ d y d x i ;
15 dxdet ˆ2 dydet ˆ2 2∗ dxdet ∗ dydet ;
16 d x d x i ∗ dxdet d y d x i ∗ dydet d x d x i ∗ dydet+dxdet ∗ d y d x i ] ;
17 % J a c o b i a n i n v e r s e and s p a t i a l 1 s t and 2nd d e r i v a t i v e s
18 invJacob = inv ( j a c o b ) ;
19 dRdx = i n v J a c o b ∗ [ dRdxi ; dRdeta ] ;

65
20 dR2dx = inv ( j 3 3 ) ∗ ( [ dR2dxi ; dR2det ; dR2dxe]− j a c o b 2 ∗dRdx ) ;
21 % B m a tr i x
22 B = dR2dx ;
23 B( 3 , : ) = B( 3 , : ) ∗ 2 ;
24 % compute e l e m e n t a r y s t i f f n e s s m a tr i x and
25 K( s c t r , s c t r ) = K( s c t r , s c t r ) + B’ ∗ C ∗ B ∗ J1 ∗ J2 ∗ wt ;
26 end

8. Verification examples

In this section, numerical examples in linear elasticity and linear elastic fracture mechanics in 2D and 3D are

presented with the purpose to serve as a set of verification examples for MIGFEM. They include the Timoshenko beam
under bending, an infinite plate with a circular hole under constant in-plane tension, a plate with a center inclusion,
an edge cracked plate in tension and a three-dimensional mode I fracture problem. Unless otherwise stated, standard
direct imposition of Dirichlet BCs is used. Units are standard International System (SI) units.

8.1. Two and three dimensional solid mechanics

8.1.1. Infinite plate with a circular hole

The next problem considered is that of an infinite plate with a circular hole in the centre under constant in-plane
tension at infinity as shown in Fig. (27) where, due to symmetry, only a quarter of the plate is modeled. The plate
dimension is taken to be L × L and the circular hole has a radius R. The exact stress field in the plate is given by

R2 3 R4
 
3
σxx (r, θ) = 1 − cos 2θ + cos 4θ + cos 4θ (78a)
r2 2 2 r4

R2 3 R4
 
1
σyy (r, θ) = − 2 cos 2θ − cos 4θ − cos 4θ (78b)
r 2 2 r4

R2 3 R4
 
1
σxy (r, θ) = − sin 2θ + sin 4θ + sin 4θ, (78c)
r2 2 2 r4

66
where r, θ are the usual polar coordinates centered at the center of the hole.
y
Exact traction

E D

Symmetry
E = 1000
Exact traction

ν = 0.3

L
R = 1
L = 4
C

R
θ
A B x

Symmetry
r

Figure 27: Infinite plate with a circular hole under constant in-plane tension: quarter model. Boundary conditions
T T
include: uy = 0 (AB), ux = 0 (CD), t = (−σxx , −σxy ) (AE), t = (σxy , σyy ) (ED).

The material properties are specified as E = 103 , Poisson’s ratio ν = 0.3 and the geometry is such that L = 4,
R = 1. A plane stress condition is assumed. The problem is solved with quadratic NURBS meshes such as those
shown in Fig. (28). The control points for the coarsest mesh can be found in [3] or file plateHoleCkData.m. Figure
29, generated in Paraview, illustrates the contour plot of numerical σxx . Note that the stress concentration at point
(R, 3π/2) is well captured and a smooth stress field is obtained throughout.

Remark 8.1. Using the visualization technique described in Section 4.5 for this problem, a note should be made on the
evaluation of the stress field at the top left corner where there are two coincident control points. This causes a singular
Jacobian matrix. Therefore at this corner, the stresses at a point slightly shifted from the original position are used.

8.1.2. Pinched cylinder

In order to demonstrate the performance of the 3D IGA implementation, we consider the pinched cylinder problem

as shown in Fig. (30). Note that we discretize the shell with solid NURBS elements. Due to symmetry, only 1/8 of

67
Figure 28: Plate with a hole: coarse mesh of 2 bi-quadratic elements (left) and refined mesh (right).

Figure 29: Plate with a hole: distribution of numerical σxx obtained with a 32 × 16 quadratic mesh having 4488 dofs.

68
the model is analyzed. A tri-quadratic NURBS mesh (p = q = r = 2) was used for the computation. Details can be
found in the file igaPinchedCylinder.m. Figure 31 shows the mesh and the contour plot of the displacement in the
point load direction. Post-processing is done in Paraview and we refer to Section 4.5 for details. We recognise that the
problem under consideration is a shell like structure that would be more accurately modelled using appropriate shell
elements, but the example is merely intended to illustrate the ability of the method to analyse 3D geometries.

Figure 30: Pinched cylinder. Problem description and data.

Figure 31: Pinched cylinder: (a) mesh of one octant of the cylinder and (b) contour plot of the displacement in the
direction of the point load.

69
8.2. Two and three dimensional fracture mechanics

8.2.1. Edge cracked plate in tension

A plate of dimension b × 2h is loaded by a tensile stress σ = 1.0 along the top edge and bottom edge as shown
in Fig. (32). In the computation, the displacement along the y-axis is fixed at the bottom edge and the bottom left

corner is fixed in both x and y directions. The material parameters are E = 103 and ν = 0.3. A plane strain condition
is assumed. The reference mode I stress intensity factor (SIF) for this problem is given in [134] and is calculated as

a √
KI = F σ πa, (79)
b

where a is the crack length, b is the plate width, and F (a/b) is an empirical function. For a/b ≤ 0.6, function F is
given by

a a  a 2  a 3  a 4
F = 1.12 − 0.23 + 10.55 − 21.72 + 30.39 . (80)
b b b b b

In the present implementation, this problem is solved using both XFEM and an extended isogeometric formulation.
The SIF is computed using an interaction integral. We refer to [70] for details.
σ
h

a
h

σ
Figure 32: Edge cracked plate in tension: geometry and loading.

We first verify the implementation of the XIGA code by comparing the XIGA result with the XFEM result for

70
the case of a = 0.45, b = 1 and h = 1. The XFEM and XIGA meshes are given in Fig. (33). Both meshes have
the same uniform distribution of nodes. For the XFEM mesh, bilinear Q4 elements are used. For the XIGA mesh,
cubic (p = q = 3) B-spline basis functions are adopted. Figure 34 shows the contour plots of the vertical displacement
obtained with XFEM and XIGA.

(a) XFEM mesh (Q4) (b) XIGA mesh (cubic (c) XIGA mesh, enriched nodes
Bsplines)

Figure 33: Edge cracked plate: XFEM and XIGA meshes. Both have the same number of displacement dofs of 1296.
The thick line denotes the crack. Square nodes denote tip enriched nodes whereas star nodes represent Heaviside
enriched nodes.

We now consider the computation of the mode I SIF for a crack of length a = 0.3. The reference SIF for this
problem is KIref = 1.6118. Both a linear and a cubic B-spline basis are used for three different meshes. The results are
given in Table 1. It should be emphasized that in the computation of the interaction integral, we use bilinear Lagrange
shape functions i.e., shape functions of Q4 elements to compute the derivatives of the weight function. This guarantees
that the weight function takes a value of unity on an open set containing the crack tip and vanishes on an outer contour
as shown in Fig. (35).

71
(a) XFEM (b) XIGA

Figure 34: Edge cracked plate: uy contour plots on deformed configuration (enlargement factor of 30 used).

Figure 35: Distribution of weight function used in the computation of the interaction integral. Four-noded quadrilateral
elements with bilinear Lagrange shape functions are used to interpolate the weight function.

mesh disp. dofs KI (linear) Error (%) KI (cubic) Error (%)


9 × 18 324 1.4997 6.96 1.5560 3.46
18 × 36 1296 1.5823 1.83 1.6150 0.20
36 × 72 5184 1.5968 0.93 1.6117 0.01

Table 1: Edge cracked plate: SIFs results. The reference SIF is KIref = 1.6118. Note that linear NURBS are equivalent
to the conventional bilinear finite elements.

72
8.2.2. Three-dimensional mode I fracture problem

This example aims to show the capability of MIGFEM for solving three-dimensional (3D) fracture problems. For
3D cracks, the polar coordinates in the branch functions given in Eq. (63) are defined in terms of the level sets as [135]

 
p ϕ(ξ, η, ζ)
r= ϕ(ξ, η, ζ)2 + ψ(ξ, η, ζ)2 , θ = atan , (81)
ψ(ξ, η, ζ)

where the level set field Φ = (ϕ, ψ) is interpolated as

X
Φ(ξ, η, ζ) = φI (ξ, η, ζ)ΦI . (82)
I

We refer to [135] for details concerning the derivatives of the branch functions with respect to the parametric coordinates
(ξ, η, ζ).
The mode I 3D fracture problem we are solving is given in Fig. (36). The exact displacement field is given by

2(1 + υ) KI √
 
θ 2 θ
ux (r, θ) = √ r cos 2 − 2υ − cos
2π E 2 2

uy (r, θ) = 0 (83)
2(1 + υ) KI √
 
θ 2 θ
uz (r, θ) = √ r sin 2 − 2υ − cos ,
2π E 2 2


where KI = σ πa is the stress intensity factor, υ is Poisson’s ratio and E is Young’s modulus. In our example, a = 100
2
mm; E = 107 N/mm , υ = 0.3, σ = 104 N/mm2 . On the bottom, right and top surfaces, essential BCs taken from Eq.
(83) are imposed using the penalty method. A penalty parameter of 1e10 was used. We note that this problem can
be more effectively solved with two-dimensional elements. This example however aims at presenting how 3D extended
IGA can be implemented. Furthermore, it also illustrates how Dirichlet BCs are enforced on surfaces rather than the

usual case of line boundaries. To this end, a two-dimensional NURBS mesh for a given surface is generated from the
set of control points that define this surface (see the file surfaceMesh.m).
The problem is first solved using a linear NURBS basis. A mesh of 9 × 9 × 1 elements is used. The mesh, enriched
nodes and comparison of the numerical deformed configuration against the exact profile are given in Fig. (37). Next,

73
10
z

y
x

10

Figure 36: Three-dimensional mode I fracture problem: infinite plate with a center planar crack. The plate thickness
is 2, the crack length is 5 and the crack width is 2. The crack is located in the mid-plane of the plate.

a mesh of 7 × 7 × 2 elements is used where, in the through-thickness direction, there are two linear elements (q = 1)
and for the two other directions, a quadratic basis (p = r = 2) is used. The result is given in Fig. (38) and we note a
good qualitative agreement between Figs. (37) and (38). We did not perform a SIF computation for this problem as
3D SIF computation is not yet implemented at present.

8.3. Structural mechanics

We consider the pull out of an open-ended cylindrical shell, see Fig. (39), as one of the most common benchmarks
for geometrically nonlinear thin shell problems [136, 137]. Due to symmetry only 1/8 of the model is studied. The 1/8
model can be exactly described using one single quadratic-linear NURBS surface as shown in Fig.(40). Refined meshes
are then obtained from this initial mesh by using the k-refinement. The analysis was performed using a mesh of 8 × 8
bi-quartic NURBS elements (144 nodes). The enforcement of symmetry BCs is achieved by constraining two row of
control points as shown in the same figure. These constraints–the so-called multipoint linear homogeneous constraints
are handled using the master-slave method [138] for the penalty method as described in Section 7.2 could endanger

the convergence of the Newton-Raphson solver. Note that for this particular nonlinear problem, of which the M file is
igaGNLFreeEndCylinderShell.m, the analysis was performed with a C++ implementation [139].
We adopt the Kirchhoff-Love thin shell model, see e.g., [140, 137] for details that involves only displacement dofs.

74
Figure 37: Three-dimensional mode I fracture problem: mesh of linear NURBS elements and enriched control points
(left); numerical deformed configuration (magnification factor of 40) superimposed on the exact deformed configuration
(right).

Figure 38: Three-dimensional mode I fracture problem: mesh of quadratic NURBS elements and enriched control points
(left); numerical deformed configuration (magnification factor of 40) superimposed on the exact deformed configuration
(right).

75
The maximum applied load 0.25Pmax is applied in 80 equal increments and for each increment the full Newton-Raphson
method is used to solve for the displacements. Figure 41 shows the deformed configuration of the shell and in Fig.(42)
the load versus the z-displacement at point A is plotted together with the result reported in [136].

Figure 39: The open-end cylindrical shell subjected to radial pulling forces: problem setup.

uy = 0

sym (uy = 0, zero rotation)


sym (uz = 0, zero rotation)

P/4
sym (ux = 0, zero rotation)

ux = 0 uz = 0

uI uI1
free

Figure 40: Open ended cylindrical shell: 1/8 of the model with one bi-quadratic NURBS surface. The control points
and weights are given in file freeEndsGNLCylinderShellData.m. For symmetry edges, in order to satisfy the
symmetry condition i.e., zero rotation, we constraint two rows of control points in the sense that the displacements of
the control points right next to the control points locating on the symmetry edges (uI1 ) matches uI .

76
Figure 41: The open-ended cylindrical shell subjected to radial pulling forces: deformed shape without scaling.

40
IGA
35 reference

30

25
P x 1000

20

15

10

0
0 0.5 1 1.5 2 2.5 3
displacement u

Figure 42: The open-ended cylindrical shell subjected to radial pulling forces: load-displacement responses.

9. Conclusion

We presented a Matlab
R
implementation for one, two and three-dimensional isogeometric finite element analysis
for solid and structural mechanics. This paper is addressed to students or researchers who wish to learn the concepts
of IGA in a clear and concise manner and is especially suited to those with solid mechanics applications in mind.
NURBS are used throughout, where the underlying construction of the basis functions is detailed along with asso-
ciated refinement algorithms essential for numerical analysis. Differences with conventional FE implementations are

77
made clear with the use of Matlab
R
source code to illustrate isogeometric FE concepts explicitly. In addition, the
implementation of an isogeometric XFEM formulation for both two-dimensional and three-dimensional problems is
described allowing for simple linear elastic fracture analysis to be performed directly from CAD data. The benefits
of isogeometric analysis are made evident. Although not presented, the code supports multi-patch analysis in which
compatibility between connecting patches has to be enforced. Geometrical nonlinearities for solid elements under the
Total Lagrange framework are provided as well. In addition, PUM enrichment for holes and inclusions is provided

along with implementation of the least squares method for imposing essential boundary conditions. Mass matrices are
implemented for almost every elements and popular time integration schemes such as Newmark and central difference
explicit are available so that transient analysis on CAD objects can be performed. The code is available for download
from https://sourceforge.net/projects/cmcodes/ for Linux and Mac OS machines. A Windows version can be
found at http://www.softpedia.com/get/Science-CAD/igafem.shtml.
The preliminary concepts and implementation details of isogeometric analysis have been described, but many
challenges remain in the field. These include the creation of suitable volume discretisations from given CAD boundary
representations, efficient integration schemes and suitable error estimators.

Acknowledgements

The authors would like to acknowledge the partial financial support of the Framework Programme 7 Initial Training
Network Funding under grant number 289361 “Integrating Numerical Simulation and Geometric Design Technology”.

Stéphane Bordas also thanks partial funding for his time provided by 1) the EPSRC under grant EP/G042705/1
Increased Reliability for Industrially Relevant Automatic Crack Growth Simulation with the eXtended Finite Element
Method and 2) the European Research Council Starting Independent Research Grant (ERC Stg grant agreement No.
279578) entitled “Towards real time multiscale simulation of cutting in non-linear materials with applications to surgical
simulation and computer guided surgery”. The first author would like to express his gratitude towards Professor L.J.
Sluys at Delft University of Technology, The Netherlands for his support to VPN during the PhD period and the
Framework Programme 7 Initial Training Network Funding.

78
References

[1] L. A. Piegl and W. Tiller. The NURBS Book. Springer, 1996.

[2] D. F. Rogers. An Introduction to NURBS with Historical Perspective. Academic Press, 2001.

[3] T.J.R. Hughes, J.A. Cottrell, and Y. Bazilevs. Isogeometric analysis: CAD, finite elements, NURBS, exact
geometry and mesh refinement. Computer Methods in Applied Mechanics and Engineering, 194(39-41):4135–
4195, 2005.

[4] J. A. Cottrell, T. J.R. Hughes, and Y. Bazilevs. Isogeometric Analysis: Toward Integration of CAD and FEA.
Wiley, 2009.

[5] P. Kagan, A. Fischer, and P. Z. Bar-Yoseph. New B-Spline Finite Element approach for geometrical design and
mechanical analysis. International Journal for Numerical Methods in Engineering, 41(3):435–458, 1998.

[6] P. Kagan and A. Fischer. Integrated mechanically based CAE system using B-Spline finite elements. Computer-
Aided Design, 32(8–9):539 – 552, 2000.

[7] F. Cirak, M. Ortiz, and P. Schröder. Subdivision surfaces: a new paradigm for thin-shell finite-element analysis.
International Journal for Numerical Methods in Engineering, 47(12):2039–2072, 2000.

[8] İ. Temizer, P. Wriggers, and T.J.R. Hughes. Contact treatment in isogeometric analysis with NURBS. Computer
Methods in Applied Mechanics and Engineering, 200(9-12):1100–1112, 2011.

[9] L. Jia. Isogeometric contact analysis: Geometric basis and formulation for frictionless contact. Computer Methods
in Applied Mechanics and Engineering, 200(5-8):726–741, 2011.

[10] İ. Temizer, P. Wriggers, and T.J.R. Hughes. Three-Dimensional Mortar-Based frictional contact treatment in
isogeometric analysis with NURBS. Computer Methods in Applied Mechanics and Engineering, 209–212:115–128,
2012.

[11] L. De Lorenzis, İ. Temizer, P. Wriggers, and G. Zavarise. A large deformation frictional contact formulation using
NURBS-bases isogeometric analysis. International Journal for Numerical Methods in Engineering, 87(13):1278–
1300, 2011.

79
[12] M.E. Matzen, T. Cichosz, and M. Bischoff. A point to segment contact formulation for isogeometric, NURBS
based finite elements. Computer Methods in Applied Mechanics and Engineering, 255:27 – 39, 2013.

[13] W. A. Wall, M. A. Frenzel, and C. Cyron. Isogeometric structural shape optimization. Computer Methods in
Applied Mechanics and Engineering, 197(33-40):2976–2988, 2008.

[14] N. D. Manh, A. Evgrafov, A. R. Gersborg, and J. Gravesen. Isogeometric shape optimization of vibrating
membranes. Computer Methods in Applied Mechanics and Engineering, 200(13-16):1343–1353, 2011.

[15] X. Qian and O. Sigmund. Isogeometric shape optimization of photonic crystals via Coons patches. Computer
Methods in Applied Mechanics and Engineering, 200(25-28):2237–2255, 2011.

[16] X. Qian. Full analytical sensitivities in NURBS based isogeometric shape optimization. Computer Methods in
Applied Mechanics and Engineering, 199(29-32):2059–2071, 2010.

[17] R.N. Simpson, S.P.A. Bordas, J. Trevelyan, and T. Rabczuk. A two-dimensional isogeometric boundary element
method for elastostatic analysis. Computer Methods in Applied Mechanics and Engineering, 209–212:87–100,
2012.

[18] M.A. Scott, R.N. Simpson, J.A. Evans, S. Lipton, S.P.A. Bordas, T.J.R. Hughes, and T.W. Sederberg. Isoge-
ometric boundary element analysis using unstructured T-splines. Computer Methods in Applied Mechanics and
Engineering, 254:197 – 221, 2013.

[19] D.J. Benson, Y. Bazilevs, M.C. Hsu, and T.J.R. Hughes. Isogeometric shell analysis: The Reissner–Mindlin shell.
Computer Methods in Applied Mechanics and Engineering, 199(5-8):276–289, 2010.

[20] J. Kiendl, K.-U. Bletzinger, J. Linhard, and R. Wüchner. Isogeometric shell analysis with Kirchhoff-Love elements.
Computer Methods in Applied Mechanics and Engineering, 198(49-52):3902–3914, 2009.

[21] D.J. Benson, Y. Bazilevs, M.-C. Hsu, and T.J.R. Hughes. A large deformation, rotation-free, isogeometric shell.
Computer Methods in Applied Mechanics and Engineering, 200(13-16):1367–1378, 2011.

[22] L. Beirão da Veiga, A. Buffa, C. Lovadina, M. Martinelli, and G. Sangalli. An isogeometric method for the

80
Reissner-Mindlin plate bending problem. Computer Methods in Applied Mechanics and Engineering, 209–212:45–
53, 2012.

[23] T. K. Uhm and S. K. Youn. T-spline finite element method for the analysis of shell structures. International
Journal for Numerical Methods in Engineering, 80(4):507–536, 2009.

[24] R. Echter, B. Oesterle, and M. Bischoff. A hierarchic family of isogeometric shell finite elements. Computer
Methods in Applied Mechanics and Engineering, 254:170 – 180, 2013.

[25] D.J. Benson, S. Hartmann, Y. Bazilevs, M.-C. Hsu, and T.J.R. Hughes. Blended isogeometric shells. Computer
Methods in Applied Mechanics and Engineering, 255:133 – 146, 2013.

[26] J. Kiendl, Y. Bazilevs, M.-C. Hsu, R. Wüchner, and K.-U. Bletzinger. The bending strip method for isogeometric
analysis of Kirchhoff-Love shell structures comprised of multiple patches. Computer Methods in Applied Mechanics
and Engineering, 199(37-40):2403–2416, 2010.

[27] Lu J. Circular element: Isogeometric elements of smooth boundary. Computer Methods in Applied Mechanics
and Engineering, 198(30-32):2391–2402, 2009.

[28] J. Lu and X. Zhou. Cylindrical element: Isogeometric model of continuum rod. Computer Methods in Applied
Mechanics and Engineering, 200(1-4):233–241, 2011.

[29] H. Gomez, T.J.R. Hughes, X. Nogueira, and V. M. Calo. Isogeometric analysis of the isothermal Navier-Stokes-
Korteweg equations. Computer Methods in Applied Mechanics and Engineering, 199(25-28):1828–1840, 2010.

[30] P. N. Nielsen, A. R. Gersborg, J. Gravesen, and N. L. Pedersen. Discretizations in isogeometric analysis of


Navier-Stokes flow. Computer Methods in Applied Mechanics and Engineering, 200(45-46):3242–3253, 2011.

[31] Y. Bazilevs and I. Akkerman. Large eddy simulation of turbulent Taylor-Couette flow using isogeometric analysis
and the residual-based variational multiscale method. Journal of Computational Physics, 229(9):3402–3414, 2010.

[32] Y. Bazilevs, V. M. Calo, T. J. R. Hughes, and Y. Zhang. Isogeometric fluid-structure interaction: theory,
algorithms, and computations. Computational Mechanics, 43:3–37, 2008.

81
[33] Y. Bazilevs, J.R. Gohean, T.J.R. Hughes, R.D. Moser, and Y. Zhang. Patient-specific isogeometric fluid-structure
interaction analysis of thoracic aortic blood flow due to implantation of the Jarvik 2000 left ventricular assist
device. Computer Methods in Applied Mechanics and Engineering, 198(45-46):3534–3550, 2009.

[34] H. Gómez, V. M. Calo, Y. Bazilevs, and T.J.R. Hughes. Isogeometric analysis of the Cahn-Hilliard phase-field
model. Computer Methods in Applied Mechanics and Engineering, 197(49-50):4333–4352, 2008.

[35] C. V. Verhoosel, M. A. Scott, T. J. R. Hughes, and R. de Borst. An isogeometric analysis approach to gradient
damage models. International Journal for Numerical Methods in Engineering, 86(1):115–134, 2011.

[36] P. Fischer, M. Klassen, J. Mergheim, P. Steinmann, and R. Müller. Isogeometric analysis of 2D gradient elasticity.
Computational Mechanics, 47:325–334, 2010.

[37] A. Masud and R. Kannan. B-splines and NURBS based finite element methods for Kohn-Sham equations.
Computer Methods in Applied Mechanics and Engineering, 241-244:112 – 127, 2012.

[38] J.A. Cottrell, A. Reali, Y. Bazilevs, and T.J.R. Hughes. Isogeometric analysis of structural vibrations. Computer
Methods in Applied Mechanics and Engineering, 195(41-43):5257–5296, 2006.

[39] T.J.R. Hughes, A. Reali, and G. Sangalli. Duality and unified analysis of discrete approximations in structural
dynamics and wave propagation: Comparison of p-method finite elements with k-method NURBS. Computer
Methods in Applied Mechanics and Engineering, 197(49–50):4104 – 4124, 2008.

[40] C. H. Thai, H. Nguyen-Xuan, N. Nguyen-Thanh, T-H. Le, T. Nguyen-Thoi, and T. Rabczuk. Static, free vibration,
and buckling analysis of laminated composite Reissner-Mindlin plates using NURBS-based isogeometric approach.
International Journal for Numerical Methods in Engineering, 91(6), 2012.

[41] D. Wang, W. Liu, and H. Zhang. Novel higher order mass matrices for isogeometric structural vibration analysis.
Computer Methods in Applied Mechanics and Engineering, pages –, 2013.

[42] J. A. Evans, Y. Bazilevs, I. Babuška, and T.J.R. Hughes. n-Widths, sup-infs, and optimality ratios for the

k-version of the isogeometric finite element method. Computer Methods in Applied Mechanics and Engineering,
198(21-26):1726–1741, 2009.

82
[43] A. Shaw and D. Roy. Nurbs-based parametric mesh-free methods. Computer Methods in Applied Mechanics and
Engineering, 197(17–18):1541 – 1567, 2008.

[44] Hyun-Jung Kim and Sung-Kie Youn. Spline-based meshfree method. International Journal for Numerical Methods
in Engineering, 92(9):802–834, 2012.

[45] D. Großmann, B. Jüttler, H. Schlusnus, J. Barner, and Anh-Vu Vuong. Isogeometric simulation of turbine blades
for aircraft engines. Computer Aided Geometric Design, 29(7):519 – 531, 2012.

[46] Thomas Elguedj, Julien Réthoré, and Aurélien Buteri. Isogeometric analysis for strain field measurements.
Computer Methods in Applied Mechanics and Engineering, 200(1-4):40–56, 2011.

[47] T. W. Sederberg, J. Zheng, A. Bakenov, and A. Nasri. T-splines and T-NURCCs. ACM Transactions on Graphics,
22:477–484, 2003.

[48] A. Buffa, D. Cho, and G. Sangalli. Linear independence of the T-spline blending functions associated with some
particular T-meshes. Computer Methods in Applied Mechanics and Engineering, 1437-1445:199, 2010.

[49] M.A. Scott, X. Li, T.W. Sederberg, and T.J.R. Hughes. Local refinement of analysis suitable T-splines. Computer

Methods in Applied Mechanics and Engineering, 213-216:206–222, 2012.

[50] Y. Bazilevs, V.M. Calo, J.A. Cottrell, J.A. Evans, T.J.R. Hughes, S. Lipton, M.A. Scott, and T.W. Sederberg.
Isogeometric analysis using T-splines. Computer Methods in Applied Mechanics and Engineering, 199(5-8):229–
263, 2010.

[51] M. R. Dörfel, B. Jüttler, and B. Simeon. Adaptive isogeometric analysis by local h-refinement with T-splines.
Computer Methods in Applied Mechanics and Engineering, 199(5-8):264–275, 2010.

[52] M. A. Scott, M. J. Borden, C. V. Verhoosel, T. W. Sederberg, and T. J. R. Hughes. Isogeometric finite ele-
ment data structures based on Bézier extraction of T-splines. International Journal for Numerical Methods in
Engineering, 88(2):126–156, 2011.

[53] H. Wang, Y. He, X. Li, X. Gu, and H. Qin. Polycube splines. Computer-Aided Design, 40:721–733, 2008.

83
[54] J. Deng, F. Chen, X. Li, C. Hu, W. Tong, Z. Yang, and Y. Feng. Polynomial splines over hierarchical T-meshes.
Graphical Models, 70:76–86, 2008.

[55] T. Dokken and V. Skytt. Locally refined splines. In Proceedings of IV European Conference On Computational
Mechanics. Solids, Structures and Coupled Problems in Engineering, Paris, France, 16-21 May 2010.

[56] N. Nguyen-Thanh, H. Nguyen-Xuan, S.P.A. Bordas, and T. Rabczuk. Isogeometric analysis using polynomial
splines over hierarchical T-meshes for two-dimensional elastic solids. Computer Methods in Applied Mechanics
and Engineering, 200(21-22):1892–1908, 2011.

[57] N. Nguyen-Thanh, J. Kiendl, H. Nguyen-Xuan, R. Wüchner, K.U. Bletzinger, Y. Bazilevs, and T. Rabczuk.
Rotation free isogeometric thin shell analysis using PHT-splines. Computer Methods in Applied Mechanics and
Engineering, 200(47-48):3410–3424, 2011.

[58] A.-V. Vuong, C. Giannelli, B. Jüttler, and B. Simeon. A hierarchical approach to adaptive local refinement in

isogeometric analysis. Computer Methods in Applied Mechanics and Engineering, 200(49-52):3554–3567, 2011.

[59] D. Schillinger, L. Dedé, M. A. Scott, J. A. Evans, M. J. Borden, E. Rank, and T. J. R. Hughes. An Isogeo-
metric Design-through-analysis Methodology based on Adaptive Hierarchical Refinement of NURBS, Immersed
Boundary Methods, and T-spline CAD Surfaces. Computer Methods in Applied Mechanics and Engineering,
242-252:116–150, 2012.

[60] P.B. Bornemann and F. Cirak. A subdivision-based implementation of the hierarchical b-spline finite element
method. Computer Methods in Applied Mechanics and Engineering, 253:584 – 598, 2013.

[61] H. Speleers, C. Manni, F. Pelosi, and M. L. Sampoli. Isogeometric analysis with Powell-Sabin splines for advection-
diffusion-reaction problems. Computer Methods in Applied Mechanics and Engineering, 221–222:132 – 148, 2012.

[62] S. K. Kleiss, B. Jüttler, and W. Zulehner. Enhancing isogeometric analysis by a finite element-based local
refinement strategy. Computer Methods in Applied Mechanics and Engineering, 213–216:168 – 182, 2012.

[63] D. Burkhart, B. Hamann, and G. Umlauf. Iso-geometric Finite Element Analysis Based on Catmull-Clark :
subdivision Solids. Computer Graphics Forum, 29(5):1575–1584, 2010.

84
[64] A. Wawrzinek, K. Hildebrandt, and K. Polthier. Koiter’s thin shells on catmull-clark limit surfaces. In Proceedings
of the Vision, Modeling, and Visualization Workshop, Berlin, Germany, 4-6 October 2011.

[65] Hyun-Jung Kim, Yu-Deok Seo, and Sung-Kie Youn. Isogeometric analysis with trimming technique for problems
of arbitrary complex topology. Computer Methods in Applied Mechanics and Engineering, 199(45-48):2796–2812,
2010.

[66] R. Sevilla, S. Fernández-Méndez, and A. Huerta. 3D NURBS-enhanced finite element method (NEFEM). Inter-
national Journal for Numerical Methods in Engineering, 88(2):103–125, 2011.

[67] R. Sevilla, S. Fernández-Méndez, and A. Huerta. NURBS-enhanced finite element method (NEFEM). Interna-
tional Journal for Numerical Methods in Engineering, 76(1):56–83, 2008.

[68] R. Schmidt, R. Wuchner, and K.U. Bletzinger. Isogeometric analysis of trimmed NURBS geometries. Computer
Methods in Applied Mechanics and Engineering, 241–244:93 – 111, 2012.

[69] C. V. Verhoosel, M. A. Scott, R. de Borst, and T. J. R. Hughes. An isogeometric approach to cohesive zone
modeling. International Journal for Numerical Methods in Engineering, 87(15):336–360, 2011.

[70] N. Moës, J. Dolbow, and T. Belytschko. A finite element method for crack growth without remeshing. Interna-
tional Journal for Numerical Methods in Engineering, 46(1):131–150, 1999.

[71] E. De Luycker, D. J. Benson, T. Belytschko, Y. Bazilevs, and M. C. Hsu. X-FEM in isogeometric analysis for
linear fracture mechanics. International Journal for Numerical Methods in Engineering, 87(6):541–565, 2011.

[72] S. S. Ghorashi, N. Valizadeh, and S. Mohammadi. Extended isogeometric analysis for simulation of stationary
and propagating cracks. International Journal for Numerical Methods in Engineering, 2012. In Press.

[73] A. Tambat and G. Subbarayan. Isogeometric enriched field approximations. Computer Methods in Applied
Mechanics and Engineering, 245–246:1 – 21, 2012.

[74] M. J. Borden, C. V. Verhoosel, M. A. Scott, T. J.R. Hughes, and C. M. Landis. A phase-field description of
dynamic brittle fracture. Computer Methods in Applied Mechanics and Engineering, 217–220:77 – 95, 2012.

85
[75] V. P. Nguyen and H. Nguyen-Xuan. High-order B-splines based finite elements for delamination analysis of
laminated composites. Composite Structures, 102:261–275, 2013.

[76] E. Cervera and J. Trevelyan. Evolutionary structural optimisation based on boundary representation of NURBS.

Part I: 2D algorithms. Computers and Structures, 83:1902–1916, 2005.

[77] R.A.K. Sanches, P.B. Bornemann, and F. Cirak. Immersed B-spline (i-spline) finite element method for geomet-
rically complex domains. Computer Methods in Applied Mechanics and Engineering, 200(13–16):1432 – 1445,
2011.

[78] E. Rank, M. Ruess, S. Kollmannsberger, D. Schillinger, and A. Düster. Geometric modeling, isogeometric analysis
and the finite cell method. Computer Methods in Applied Mechanics and Engineering, 249–252(0):104 – 115, 2012.

[79] M. Moumnassi, S. Belouettar, E. Béchet, S.P.A. Bordas, D. Quoirin, and M. Potier-Ferry. Finite element analysis
on implicitly defined domains: An accurate representation based on arbitrary parametric surfaces. Computer
Methods in Applied Mechanics and Engineering, 200(5–8):774 – 796, 2011.

[80] G. Legrain. A nurbs enhanced extended finite element approach for unfitted cad analysis. Computational Me-
chanics, pages 1–17, 2013.

[81] F. Auricchio, L. da Veiga Beirão, A. Buffa, C. Lovadina, A. Reali, and G. Sangalli. A fully locking-free isogeometric
approach for plane linear elasticity problems: A stream function formulation. Computer Methods in Applied
Mechanics and Engineering, 197(1-4):160–172, 2007.

[82] T. Elguedj, Y. Bazilevs, V.M. Calo, and T.J.R. Hughes. B-bar and f-bar projection methods for nearly incom-
pressible linear and non-linear elasticity and plasticity using higher-order NURBS elements. Computer Methods
in Applied Mechanics and Engineering, 197(33-40):2732–2762, 2008.

[83] R. Echter and M. Bischoff. Numerical efficiency, locking and unlocking of NURBS finite elements. Computer
Methods in Applied Mechanics and Engineering, 199(5–8):374 – 382, 2010.

[84] T. Elguedj, Y. Bazilevs, V.M. Calo, and T.J.R. Hughes. F-bar projection method for finite deformation elasticity
and plasticity using nurbs based isogeometric analysis. International Journal of Material Forming, 1(1):1091–
1094, 2008.

86
[85] Rui P. R. Cardoso and J. M. A. Cesar de Sa. The enhanced assumed strain method for the isogeometric analysis
of nearly incompressible deformation of solids. International Journal for Numerical Methods in Engineering,
92(1):56–78, 2012.

[86] R. L. Taylor. Isogeometric analysis of nearly incompressible solids. International Journal for Numerical Methods
in Engineering, 87(1-5):273–288, 2011.

[87] S. Lipton, J.A. Evans, Y. Bazilevs, T. Elguedj, and T.J.R. Hughes. Robustness of isogeometric structural
discretizations under severe mesh distortion. Computer Methods in Applied Mechanics and Engineering, 199(5–
8):357 – 373, 2010.

[88] N. Collier, D. Pardo, L. Dalcin, M. Paszynski, and V.M. Calo. The cost of continuity: A study of the performance
of isogeometric finite elements using direct solvers. Computer Methods in Applied Mechanics and Engineering,
213–216:353 – 361, 2012.

[89] F. Auricchio, L. Da Veiga, T.J.R. Hughes, A. Reali, and G. Sangalli. Isogeometric collocation methods. Mathe-
matical Models and Methods in Applied Sciences, 20(11):2075–2107, 2010.

[90] F. Auricchio, L. Beiro da Veiga, T.J.R. Hughes, A. Reali, and G. Sangalli. Isogeometric collocation for elastostatics
and explicit dynamics. Computer Methods in Applied Mechanics and Engineering, 249–252:2 – 14, 2012.

[91] T. Takacs and B. Jüttler. Existence of stiffness matrix integrals for singularly parameterized domains in isogeo-
metric analysis. Computer Methods in Applied Mechanics and Engineering, 200(49-52):3568–3582, 2011.

[92] Gang Xu, Bernard Mourrain, Régis Duvigneau, and André Galligo. Parameterization of computational domain
in isogeometric analysis: Methods and comparison. Computer Methods in Applied Mechanics and Engineering,
200(23-24):2021–2031, 2011.

[93] E. Cohen, T. Martin, R.M. Kirby, T. Lyche, and R.F. Riesenfeld. Analysis-aware modeling: Understanding quality
considerations in modeling for isogeometric analysis. Computer Methods in Applied Mechanics and Engineering,
199(5-8):334–356, 2010.

87
[94] R. Schmidt, J. Kiendl, K.-U. Bletzinger, and R. Wüchner. Realization of an integrated structural design pro-
cess: analysis-suitable geometric modelling and isogeometric analysis. Computing and Visualization in Science,
13(7):315–330, 2010.

[95] Xianlian Zhou and Jia Lu. Nurbs-based galerkin method and application to skeletal muscle modeling. In
Proceedings of the 2005 ACM symposium on Solid and physical modeling, SPM ’05, pages 71–78, New York, NY,
USA, 2005. ACM.

[96] Y. Zhang, Y. Bazilevs, S. Goswami, C. L. Bajaj, and T.J.R. Hughes. Patient-specific vascular NURBS modeling
for isogeometric analysis of blood flow. Computer Methods in Applied Mechanics and Engineering, 196(29-
30):2943–2959, 2007.

[97] Y. Zhang, W. Wang, and T.J.R. Hughes. Solid T-spline construction from boundary representations for genus-zero
geometry. Computer Methods in Applied Mechanics and Engineering, 249–252:185 – 197, 2012.

[98] Y. Zhang, W. Wang, and T.J.R. Hughes. Conformal solid T-spline construction from boundary T-spline repre-
sentations. Computational Mechanics, pages 1–9, 2012.

[99] T. Martin, E. Cohen, and R. M. Kirby. Volumetric parameterization and trivariate B-spline fitting using harmonic
functions. Computer Aided Geometric Design, 26(6):648–664, 2009.

[100] M. Aigner, C. Heinrich, B. Jüttler, E. Pilgerstorfer, B. Simeon, and A.-V. Vuong. Swept volume parameterization
for isogeometric analysis. In E.R. Hancock, R.R. Martin, and M.A. Sabin, editors, Mathematics of Surfaces XIII,
volume 5654 of Lecture Notes in Computer Science, pages 19–44. Springer Berlin Heidelberg, 2009.

[101] J.M. Escobar, J.M. Cascn, E. Rodrguez, and R. Montenegro. A new approach to solid modeling with trivariate T-
splines based on mesh optimization. Computer Methods in Applied Mechanics and Engineering, 200(45-46):3210–
3222, 2011.

[102] M.J. Peake, J. Trevelyan, and G. Coates. Extended isogeometric boundary element method (xibem) for two-
dimensional helmholtz problems. Computer Methods in Applied Mechanics and Engineering, 259:93 – 102, 2013.

[103] R.N. Simpson, S.P.A. Bordas, H. Lian, and J. Trevelyan. An isogeometric boundary element method for elasto-
static analysis: 2D implementation aspects. Computers & Structures, 118:2 – 12, 2013.

88
[104] A.-V. Vuong, Ch. Heinrich, and B. Simeon. ISOGAT: a 2D tutorial MATLAB code for Isogeometric Analysis.
Computer Aided Geometric Design, 27(8):644–655, 2010.

[105] C. de Falco, A. Reali, and R. Vázquez. GeoPDEs: a research tool for Isogeometric Analysis of PDEs. Advances
in Engineering Software, 42(12):1020–1034, 2011.

[106] D. Rypl and B. Patzák. From the finite element analysis to the isogeometric analysis in an object oriented
computing environment. Advances in Engineering Software, 44:116–125, 2012.

[107] D. J. Benson, Y. Bazilevs, E. De Luycker, M.-C. Hsu, M. Scott, T. J. R. Hughes, and T. Belytschko. A generalized
finite element formulation for arbitrary basis functions: From isogeometric analysis to XFEM. International
Journal for Numerical Methods in Engineering, 83(6):765–785, 2010.

[108] R.L. Taylor. A finite element analysis program, programmer manual. http://www.ce.berkeley.edu/rlt/feap/,
2001.

[109] L. Dalcin. PetIGA: A framework for high performance Isogeometric Analysis (using Petsc).
https://bitbucket.org/dalcinl/petiga, 2011.

[110] A. Ratnani and E. Sonnendrucker. Isogeometric analysis in reduced magnetohydrodynamics. Computational


Science & Discovery, 5(014007), 2012.

[111] A. Ratnani. Pigasus, Isogeometric Analysis simulations in Python. INRIA report, 2012.

[112] Rhino. CAD modeling and design toolkit. www.rhino3d.com.

[113] B. Nayroles, G. Touzot, and P. Villon. Generalizing the finite element method: Diffuse approximation and diffuse
elements. Computational Mechanics, 10(5):307–318, 1992.

[114] T. Belytschko, Y. Y. Lu, and L. Gu. Element-free galerkin methods. International Journal for Numerical Methods
in Engineering, 37(2):229–256, 1994.

[115] V. P. Nguyen, T. Rabczuk, S. Bordas, and M. Duflot. Meshless methods: A review and computer implementation
aspects. Mathematics and Computers in Simulation, 79(3):763–813, 2008.

89
[116] T.J.R. Hughes, A. Reali, and G. Sangalli. Efficient quadrature for NURBS-based isogeometric analysis. Computer
Methods in Applied Mechanics and Engineering, 199(5-8):301–313, 2010.

[117] F. Auricchio, F. Calabro, T.J.R. Hughes, A. Reali, and G. Sangalli. A simple algorithm for obtaining nearly
optimal quadrature rules for NURBS-based isogeometric analysis. Computer Methods in Applied Mechanics and
Engineering, 249–252:15 – 27, 2012.

[118] J. Chessa. Programming the finite element method with matlab. Northwestern University,
http://www.tam.northwestern.edu/jfc795/Matlab/, 2002.

[119] D. Wang and J. Xuan. An improved NURBS-based isogeometric analysis with enhanced treatment of essential
boundary conditions. Computer Methods in Applied Mechanics and Engineering, 199(37-40):2425–2436, 2010.

[120] T. Rabczuk, R. Gracie, J. H. Song, and T. Belytschko. Immersed particle method for fluid-structure interaction.
International Journal for Numerical Methods in Engineering, 81(1):48–71, 2010.

[121] A. Embar, J. Dolbow, and I. Harari. Imposing dirichlet boundary conditions with nitsche’s method and
splinebased finite elements. International Journal for Numerical Methods in Engineering, 83(7):877–898, 2010.

[122] T. Belytschko, Y. Y. Lu, and L. Gu. Element-free Galerkin methods. International Journal for Numerical
Methods in Engineering, 37:229–256, 1994.

[123] A. Henderson. ParaView Guide, A Parallel Visualization Application. Kitware Inc., 2007.

[124] T. P. Fries and T. Belytschko. The extended/generalized finite element method: An overview of the method and
its applications. International Journal for Numerical Methods in Engineering, 84(3):253–304, 2010.

[125] Stéphane Bordas, Phu Vinh Nguyen, Cyrille Dunant, Amor Guidoum, and Hung Nguyen-Dang. An extended
finite element library. International Journal for Numerical Methods in Engineering, 71(6):703–732, 2007.

[126] P. Laborde, J. Pommier, Y. Renard, and M. Salaun. High order extended finite element method for cracked
domains. International Journal for Numerical Methods in Engineering, 190(47):6183–6200, 2004.

90
[127] N. Sukumar, D. L. Chopp, N. Moës, and T. Belytschko. Modelling holes and inclusions by level sets in the
extended finite element method. Computer Methods in Applied Mechanics and Engineering, 190:6183–6200,
2000.

[128] C. Miehe, F. Welschinger, and M. Hofacker. Thermodynamically consistent phase-field models of fracture: Varia-
tional principles and multi-field FE implementations. International Journal for Numerical Methods in Engineer-
ing, 83(10):1273–1311, 2010.

[129] N. Moës, C. Stolz, P.-E. Bernard, and N. Chevaugeon. A level set based model for damage growth: The thick
level set approach. International Journal for Numerical Methods in Engineering, 86(3):358–380, 2011.

[130] S. Natarajan, D. R. Mahapatra, and S. P. A. Bordas. Integrating strong and weak discontinuities without inte-
gration subcells and example applications in an XFEM/GFEM framework. International Journal for Numerical
Methods in Engineering, 83(3):269–294, 2010.

[131] T. Elguedj, A. Gravouil, and A. Combescure. Appropriate extended functions for x-fem simulation of plastic
fracture mechanics. Computer Methods in Applied Mechanics and Engineering, 195(7–8):501 – 515, 2006.

[132] M. J. Borden, M. A. Scott, J. A. Evans, and T. J. R. Hughes. Isogeometric finite element data structures based on
Bézier extraction of NURBS. International Journal for Numerical Methods in Engineering, 87(15):15–47, 2011.

[133] M.A. Scott, T.J.R. Hughes, T.W. Sederberg, and M.T. Sederberg. An integrated approach to engineering design
and analysis using the Autodesk T-spline plugin for Rhino3d. Advances in Engineering Softwares, 2013.

[134] H. P. Tada, P. C. Paris, and G. R. Irwin. The Stress Analysis of Cracks Handbook. Del Research Corporation,
St. Louis, MO, 1985.

[135] J. Shi, D. Chopp, J. Lua, N. Sukumar, and T. Belytschko. Abaqus implementation of extended finite element
method using a level set representation of three-dimensional fatigue crack growth and life predictions. Engineering
Fracture Mechanics, 77:2840–2863, 2010.

[136] K.Y. Sze, X.H. Liu, and S.H. Lo. Popular benchmark problems for geometric nonlinear analysis of shells. Finite
Elements in Analysis and Design, 40(11):1551 – 1569, 2004.

91
[137] D. Millán, A. Rosolen, and M. Arroyo. Nonlinear manifold learning for meshfree finite deformation thin-shell
analysis. International Journal for Numerical Methods in Engineering, 93(7):685–713, 2013.

[138] C. A. Felippa. Introduction to Finite Element Methods. Multifreedom constraints II (lecture notes).
http://www.colorado.edu/engineering/CAS/courses.d/IFEM.d/, 2001.

[139] E. J. Lingen and M. Stroeven. Jem/Jive-a C++ numerical toolkit for solving partial differential equations.
http://www.habanera.nl/.

[140] T.D. Nguyen and G. N. Wells. Geometrically nonlinear formulation for thin shells without rotation degrees of
freedom. Computer Methods in Applied Mechanics and Engineering, 197(33–40):2778–2788, 2008.

92

View publication stats

You might also like