199
INTER-UNIVERSITY COOPERATION PROGRAM SPONSORED BY BELGIAN GOVERNMENT AND REALIZED BY UNIVERSITY OF LIEGE --------------------------------------------------- E E M M M M C C European Master in Engineering Science of Mechanics of Constructions AN OBJECT ORIENTED APPROACH TO THE EXTENDED FINITE ELEMENT METHOD WITH APPLICATIONS TO FRACTURE MECHANICS presented at Hochiminh City University of Technology by NGUYEN VINH PHU November 2005

EMMC - iMechanica

  • Upload
    others

  • View
    41

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EMMC - iMechanica

INTER-UNIVERSITY COOPERATION PROGRAM SPONSORED BY BELGIAN GOVERNMENT AND REALIZED BY UNIVERSITY OF LIEGE ---------------------------------------------------

EEMMMMCC

European Master in Engineering Science of Mechanics of Constructions

AN OBJECT ORIENTED APPROACH TO THE EXTENDED FINITE ELEMENT METHOD

WITH APPLICATIONS TO FRACTURE MECHANICS

presented at

Hochiminh City University of Technology

by

NGUYEN VINH PHU

November 2005

Page 2: EMMC - iMechanica

INTER-UNIVERSITY COOPERATION PROGRAM SPONSORED BY BELGIAN GOVERNMENT AND REALIZED BY UNIVERSITY OF LIEGE ---------------------------------------------------

EEMMMMCC

European Master in Engineering Science of Mechanics of Constructions

AN OBJECT ORIENTED APPROACH TO THE EXTENDED FINITE ELEMENT METHOD

WITH APPLICATIONS TO FRACTURE MECHANICS

presented at

Hochiminh City University of Technology

by

NGUYEN VINH PHU

November 2005

Page 3: EMMC - iMechanica

ABSTRACT

An Object-Oriented approach to the Extended Finite ElementMethod with Applications to Fracture Mechanics

Nguyen Vinh Phu

The eXtended Finite Element Method (X-FEM) is used to simulate the crack

growth without remeshing. A C++ library for X-FEM is implemented which

allows an easy extension for further development of the method.

In X-FEM, the standard FE approximation space is enriched with specially

tailored functions to help capture the challenging features of a problem. Enrich-

ment functions may be discontinuous (to model discontinuities in the field), their

derivatives can be discontinuous (to model kinks in the field), or they can be cho-

sen to incorporate a known characteristic of the solution (such as the square root

singularity of linear elastic fracture mechanics).

Object oriented programming languages have been shown as robust tools to de-

velop a variety of applications and the finite element methods are not exceptions.

The major advantage of adopting an object oriented approach is that the program

expansion is more simple and natural, as new implementations have little impact

on the existing code. Thus, the reuse of code is maximized. Moreover, compared

to the classical, structured programming, the use of object-oriented programming

leads to a closer integration between theory and computer implementation. Object

oriented programming is particularly useful in the development of large and com-

plex programs, as the finite element schemes that should handle different element

Page 4: EMMC - iMechanica

types, constitutive models, analysis algorithms and, for X-FEM, enrichment items

(cracks, material interfaces, holes), enrichment functions etc..

Applications to linear elastic fracture mechanics, single static crack as well as

crack growth are presented and demonstrated with several numerical examples.

Page 5: EMMC - iMechanica

ACKNOWLEDGEMENTS

I wish to express my sincere gratitude to my advisor, Professor Nguyen Dang

Hung, for his constant support, useful directions to us, students of EMMC. I feel

very fortunate and proud to have been one of his students.

A few lines are too short to make a complete account of my deep appreciation

for my second but major advisor, Stephane Bordas. I wish to first thank him for

accepted me as his first student, for his trust and constant encouragements, which

have been essential ingredients in the construction of this thesis. It has been a

profound pleasure to work with him during the last four months and I wish that

this could last never-ending.

I thanks all the professors here at EMMC program who have dispensed won-

derful lessons to me. I am thinking especially about Professors Nguyen Dang Hung

for advanced solid mechanics and fracture mechanics, Patrick Dular for the finite

element method, Pierre Beckers for computer graphics, Bui Cong Thanh for opti-

mization of structures, Le Dinh Tuan for dynamics of constructions and Chu Quoc

Thang for theory of plate and shell.

Although I started interacting with Dr. Raphael Bonnaz late in the course of

this work, he has been attainable and responsive since I started working on the

simulation of crack growth. His nice idea on crack update helped my work much

improved. His code for post processing is really useful. It is a pleasure for me to

know and work with him.

I thanks my former colleagues, Tran Duc Han who noticed me the X-FEM

which became my thesis later. Phan Hong Quang for his warmth to what I asked

Page 6: EMMC - iMechanica

him and Chau Dinh Thanh, who checked the schedule of this thesis.

Without friends, my life would not be the same.

I thanks to Pham My, Truong Quang Tri, Le Bui Hong Phong, Dao Duy Luu

for their external friendship to me. Especial thanks to my sister, Hoang Thi Kim

Anh, who has been always beside me at the most difficult moments in my life.

I also would like to thank my new friend, Cyrille Dunant, who was so patient

with my stupid questions, to share his expertise in the C++ programming lan-

guage. His nice code on Delaunay triangulation, computational geometry helped

me a lots. I am infinitely grateful for what he did and hope to be given a chance

to repay him one day.

I special thanks to my family, my Parent, my Mother, Sister for all their emo-

tional support and encouragement all along my studies. Finally, I dedicate this

work to my parents.

Page 7: EMMC - iMechanica

To my parents

Page 8: EMMC - iMechanica

Contents

Abstract i

Acknowledgments iii

Contents vi

List of Figures ix

List of Tables xii

1 Introduction 11.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Central Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Fracture mechanics and the eXtended Finite Element Method 52.1 Computational fracture mechanics . . . . . . . . . . . . . . . . . . . 5

2.1.1 Crack tip fields in LEFM . . . . . . . . . . . . . . . . . . . . 52.1.2 Fatigue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.3 Crack growth in a linear elastic solid . . . . . . . . . . . . . 112.1.4 Contour integrals and their domain representations in two-

dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2 Modeling cracks with the eXtended Finite Element Method . . . . . 19

2.2.1 Governing equations . . . . . . . . . . . . . . . . . . . . . . 192.2.2 Variational formulation or Weak form . . . . . . . . . . . . . 202.2.3 Extended finite element approximation . . . . . . . . . . . . 222.2.4 Discretized equilibrium equations . . . . . . . . . . . . . . . 302.2.5 Element integration . . . . . . . . . . . . . . . . . . . . . . . 322.2.6 Mesh geometry interaction . . . . . . . . . . . . . . . . . . . 342.2.7 Crack growth simulation . . . . . . . . . . . . . . . . . . . . 37

2.3 Improvement of the rate of convergence of the X-FEM . . . . . . . 41

Page 9: EMMC - iMechanica

2.3.1 X-FEM with a fixed enrichment area . . . . . . . . . . . . . 432.3.2 High order extended finite element method . . . . . . . . . . 432.3.3 X-FEM - a local partition of unity enriched finite element

method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.4 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3 Object oriented enriched finite element implementation 543.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2 Object-oriented programming . . . . . . . . . . . . . . . . . . . . . 553.3 Object-oriented enriched finite element implementation . . . . . . . 59

3.3.1 Additional classes used to describe an enriched finite elementproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.3.2 Modification of standard finite element classes . . . . . . . . 743.4 Extension to new problems . . . . . . . . . . . . . . . . . . . . . . . 813.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4 Numerical examples 864.1 Static crack problems . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4.1.1 Infinite plate . . . . . . . . . . . . . . . . . . . . . . . . . . 874.1.2 Edge crack in tension . . . . . . . . . . . . . . . . . . . . . 904.1.3 Edge crack under shear stress . . . . . . . . . . . . . . . . 994.1.4 Center-crack in tension . . . . . . . . . . . . . . . . . . . . 1084.1.5 Inclined crack in tension . . . . . . . . . . . . . . . . . . . 1134.1.6 Curved crack in an infinite plate . . . . . . . . . . . . . . . 1194.1.7 Cracks emanating from circular hole in infinite plate . . . . 119

4.2 Crack growth problems . . . . . . . . . . . . . . . . . . . . . . . . . 1254.2.1 Growth of an edge crack in tension . . . . . . . . . . . . . . 1254.2.2 Inclined crack in tension . . . . . . . . . . . . . . . . . . . . 1274.2.3 Double cantilever beam . . . . . . . . . . . . . . . . . . . . . 1274.2.4 Crack growth from a fillet . . . . . . . . . . . . . . . . . . . 133

4.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5 Conclusions and future work 1385.1 Summary on the completed work . . . . . . . . . . . . . . . . . . . 1385.2 Possible lines of future work . . . . . . . . . . . . . . . . . . . . . . 139

References 143

A The class hierarchy 149

Page 10: EMMC - iMechanica

B The data file of OpenXFEM++ and some Matlab routines 152B.1 The data file of OpenXFEM++ . . . . . . . . . . . . . . . . . . . . 152

B.1.1 Section EnrichmentItem . . . . . . . . . . . . . . . . . . . . . 154B.1.2 Section EnrichmentFunction . . . . . . . . . . . . . . . . . . . 155B.1.3 Section GeometryEntity . . . . . . . . . . . . . . . . . . . . . 156B.1.4 Section CrackGrowthDirectionLaw . . . . . . . . . . . . . . . 156B.1.5 Section CrackGrowthIncrementLaw . . . . . . . . . . . . . . . 157

B.2 How to build the input data file . . . . . . . . . . . . . . . . . . . . 157B.3 Some Matlab routines used to get the data file . . . . . . . . . . . . 157

B.3.1 The Matlab M file msh2mlab.m . . . . . . . . . . . . . . . . 157B.3.2 The Matlab M file MakeFemObjDataFile.m . . . . . . . . . 161

C Some details on the X-FEM 168C.1 Derivation of the discretized equations . . . . . . . . . . . . . . . . 168C.2 Derivatives of near tip enrichment functions . . . . . . . . . . . . . 172C.3 Stress intensity factors computation using I integral . . . . . . . . . 174C.4 Numerical integration . . . . . . . . . . . . . . . . . . . . . . . . . . 181C.5 Maximum hoop stress criterion . . . . . . . . . . . . . . . . . . . . 183

Page 11: EMMC - iMechanica

List of Figures

2.1 Modes of crack tip deformation . . . . . . . . . . . . . . . . . . . . 62.2 Polar coordinate system associated with a crack tip . . . . . . . . . 82.3 Paris fatigue crack growth, schematic representation . . . . . . . . . 122.4 Domain used for computation of mixed mode stress intensity factors

in two dimensional space . . . . . . . . . . . . . . . . . . . . . . . . 182.5 Body with a crack . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.6 Selection of enriched nodes for 2D crack problem . . . . . . . . . . 252.7 2D view of near tip asymptotic functions . . . . . . . . . . . . . . . 262.8 Coordinate configuration for crack tip enrichment function . . . . . 272.9 Effects of crack near edge . . . . . . . . . . . . . . . . . . . . . . . 282.10 Area criterion for selection of H(x) enriched nodes . . . . . . . . . 292.11 Subdomains used in integration on polygon . . . . . . . . . . . . . . 332.12 Sub-triangles used in numerical integration . . . . . . . . . . . . . . 332.13 Neighbors of finite element and of node . . . . . . . . . . . . . . . 362.14 Discrete representation of crack segments . . . . . . . . . . . . . . . 382.15 The X-FEM flowchart for crack growth simulation . . . . . . . . . . 402.16 Elements (shaded) used to find new interacted elements . . . . . . . 412.17 Elements whose status is changed after a crack grows . . . . . . . . 422.18 Another scheme for selection of enriched nodes for 2D crack problem 442.19 Enriched nodes for quadratic XFEM . . . . . . . . . . . . . . . . . 452.20 Typical domain discretization in X-FEM . . . . . . . . . . . . . . . 472.21 1D example of blending elements . . . . . . . . . . . . . . . . . . . 49

3.1 Example of a function object . . . . . . . . . . . . . . . . . . . . . . 583.2 The interface of class EnrichmentItem . . . . . . . . . . . . . . . 613.3 The inheritance tree of class EnrichmentItem . . . . . . . . . . . 623.4 C++ header file of a 2D crack interior . . . . . . . . . . . . . . . . 633.5 C++ header file of a 2D crack tip . . . . . . . . . . . . . . . . . . . 643.6 Computation of the interaction integral . . . . . . . . . . . . . . . . 653.7 Interface of class EnrichmentFunction . . . . . . . . . . . . . . . 66

Page 12: EMMC - iMechanica

3.8 The inheritance tree of class EnrichmentFunction . . . . . . . . . 683.9 Computation of Gauss points for split elements . . . . . . . . . . . 693.10 Method setEnrichedNodes of derived class SplitElementDetect . 723.11 Added data and methods for class Domain to account for discon-

tinuities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.12 Method solveFractureMechanicsProblemAt(TimeStep* stepN) . . . . 753.13 Method ComputeBmatrixAt(GaussPoint*) . . . . . . . . . . . . . . 773.14 The unchanged method computeTangentStiffnessMatrix() . . . . . . 773.15 Method giveStiffnessMatrix() of class Element . . . . . . . . . . . 783.16 Method resolveConflictsInEnrichment() of class Node . . . . . . . 793.17 A template functor . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.18 Method computeNumberOfDofs () of class Node . . . . . . . . . . 823.19 Interface of class AuxiliaryField . . . . . . . . . . . . . . . . . . . 84

4.1 Infinite cracked plate . . . . . . . . . . . . . . . . . . . . . . . . . . 894.2 Gauss points used for integrating the weak form . . . . . . . . . . . 914.3 Comparison of the deformed mesh. . . . . . . . . . . . . . . . . . . 924.4 Domain used for the J integral computation . . . . . . . . . . . . . 934.5 X-FEM with fixed enrichment area, X-FEM-f.a . . . . . . . . . . . 934.6 Normalized KI versus J-integral radius rd. . . . . . . . . . . . . . . 944.7 The von Mises stress contours. . . . . . . . . . . . . . . . . . . . . . 954.8 Edge-cracked plate in tension . . . . . . . . . . . . . . . . . . . . . 964.9 Fixed enrichment area scheme. Circled nodes are enriched with

H(x) whereas squared nodes are enriched by the branch functions. . 984.10 SIFs of various crack lengths. . . . . . . . . . . . . . . . . . . . . . 994.11 Convergence of KI of edge cracked plate in tension. . . . . . . . . . 1004.12 Geometry and load of the shear edge crack problem . . . . . . . . . 1014.13 Finite element meshes used for shear edge crack problem. . . . . . . 1024.14 Convergence of KI of shear edge crack . . . . . . . . . . . . . . . . 1044.15 Uniform Q4 finite element meshes used for shear edge crack problem.1054.16 Gauss points used for Q4 elements . . . . . . . . . . . . . . . . . . 1064.17 Geometry and loads of a center-cracked plate in tension . . . . . . . 1094.18 Finite element meshes for the center crack problem . . . . . . . . . 1104.19 Convergence of KI of center cracked plate in tension . . . . . . . . 1124.20 Inclined crack in tension . . . . . . . . . . . . . . . . . . . . . . . . 1134.21 Coarse structured mesh of 1520 elements for inclined crack problem 1144.22 The J integral domain contains the tip-element . . . . . . . . . . . 1174.23 KI and KII vs. β for a plate with an angle center crack . . . . . . . 1184.24 Convergence of SIFs of inclined crack in tension . . . . . . . . . . . 1184.25 Curved crack in an infinite plate in tension . . . . . . . . . . . . . 120

Page 13: EMMC - iMechanica

4.26 Discretization of the plate with curved crack . . . . . . . . . . . . . 1214.27 Symmetric double crack at a circular hole in an infinite plate . . . . 1224.28 Cracks emanating from circular hole . . . . . . . . . . . . . . . . . 1234.29 Deformed configuration of cracks-hole problem . . . . . . . . . . . . 1244.30 Zoom of the stress σxx and von Mises stress contours near the hole. 1244.31 Propagation of an edge crack intension . . . . . . . . . . . . . . . . 1264.32 Inclined crack in tension . . . . . . . . . . . . . . . . . . . . . . . . 1284.33 Propagation of an inclined crack in tension . . . . . . . . . . . . . 1294.34 Geometry-loads of a double cantilever beam speciment . . . . . . . 1294.35 Fixed structured mesh used for the crack growth simulation of a DCB1304.36 Curvilinear crack growth in double cantilever beam specimen . . . . 1304.37 Parametric study of simulated crack paths in double cantilever beam

specimen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324.38 Experimental configuration for crack growth from a fillet . . . . . . 1334.39 Fixed unstructured mesh used for the crack growth simulation . . . 1344.40 Comparison between various numerical methods . . . . . . . . . . 135

C.1 Global and local coordinate systems . . . . . . . . . . . . . . . . . . 177C.2 Elements used in the interaction integral computation . . . . . . . . 180C.3 Weight functions q on the elements . . . . . . . . . . . . . . . . . . 181

Page 14: EMMC - iMechanica

List of Tables

4.1 Normalized KI values for various domain sizes. . . . . . . . . . . . . 904.2 Normalized KI values for various discretizations and domain sizes. . 974.3 Normalized KI values for domain sizes using normal enrichment and

fixed enrichment area . . . . . . . . . . . . . . . . . . . . . . . . . . 974.4 Convergence of SIF of an edge crack plate in tension . . . . . . . . 1004.5 Normalized SIFs for shear edge crack . . . . . . . . . . . . . . . . . 1034.6 SIFs results of an edge crack plate under shear. . . . . . . . . . . . 1044.7 Normalized SIFs of shear edge crack with Q4 elements . . . . . . . 1084.8 Normalized SIFs for center cracked plate in tension (structured mesh)1094.9 Normalized SIFs for center cracked plate in tension (unstructured

mesh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.10 Center cracked plate using the fixed enrichment area (renr = 3hlocal) 1114.11 SIFs convergence of the center cracked plate . . . . . . . . . . . . . 1124.12 Normalized SIFs for the inclined crack problem . . . . . . . . . . . 1164.13 Convergence of SIFs for a plate with an angle center crack . . . . . 1164.14 Stress intensity factors of curved crack problem . . . . . . . . . . . 1204.15 Stress intensity factors of cracks emanating from hole problem. . . . 1234.16 SIFs and evolution of crack tips for the edge crack . . . . . . . . . . 125

Page 15: EMMC - iMechanica

1

Chapter 1

Introduction

1.1 Motivation

Finite element methods have been widely used since their appearance in the early

1960s. This popularity is due to their ability to deal with numerous problems and

due to their robustness. The method has been used with great success in areas

such as solid mechanics, fluid mechanics, heat transfer, electromagnetism, etc. In

spite of this success, there are several areas where current finite element methods

are less than ideal.

Due to the fact that standard finite element methods are based on piecewise

differentiable polynomial approximations, they are not well suited to problems with

discontinuous and/or singular solutions. Typically, finite element methods require

significant mesh refinement or meshes which conform with these features to get

accurate results. These features occur in problems including fracture mechanics,

contact, composites, etc. In response to this deficiency of standard finite element

methods, extended finite elements have been developed.

With enriched approximation spaces, X-FEM is able to reproduce the prob-

Page 16: EMMC - iMechanica

1.1. Motivation 2

lematic features, i.e., discontinuities and the singularities, and dramatically im-

proved results are obtained. Recently, the partition of unity approach (Melenk

and Babuska, 1996; Duarte and Oden, 1996) offered a systematic methodology to

incorporate arbitrary functions into the finite element approximation space.

Since its first appearance (Moes, Dolbow, and Belytschko, 1999) the eXtended

Finite Element Method (X-FEM) has been successfully applied to numerous solid

mechanics problems such as 2-dimensional static and crack growth problems (Suku-

mar and Prevost, 2003), extension to 3-dimensional was presented in Sukumar et

al. (2003). The XFEM has also been used to model computational phenomena in

areas such as fluids mechanics, phase transformations (Chessa et al., 2002), mate-

rial science and biofilm growth (Bordas, 2003; S. Bordas and Chopp, 2005) among

others.

The application of object-oriented concepts to finite element programming has

been receiving great attention over the last years (Mackerle, 2000). The major

advantage of adopting an object oriented approach is that the program expansion

is more simple and natural, as new implementations have little impact on the ex-

isting code. Thus, the reuse of code is maximized. Moreover, compared to the

classical, structured programming, the use of object-oriented programming leads

to a closer integration between theory and computer implementation. Object ori-

ented programming is particularly useful in the development of large and complex

programs, as finite element codes that are meant to handle different element types,

constitutive models, and analysis algorithms.

Page 17: EMMC - iMechanica

1.2. Central Idea 3

1.2 Central Idea

The central idea of this thesis is the implementation of a flexible C++ library,

named OpenXFEM++, for the X-FEM. This library was built based on the

FEMOBJ (Zimmermann, Pelerin, and Bomme, 1992), an object oriented finite

element package for static and dynamic nonlinear applications. The current code

is used to solve a variety of problems in Linear Elastic Fracture Mechanics including

the computation of fracture parameters and the simulation of crack growth. With

the object-oriented approach, OpenXFEM++ is an extendable, easy-to-maintain

computer code and new problems can be added without major obstacles. The

C++ code has been compiled with Microsoft Visual Studio.NET 2003. Work is in

progress for the porting of the code to g++.

1.3 Outline

An outline of the remainder of this thesis is as follows. In Chapter 2, after an

overview of computational fracture mechanics, the X-FEM is examined in detail.

The enriched approximation space is first presented. The definition and selection

of enriched nodes are then stated. To exactly integrate the weak form (including

discontinuous functions), elements split by the discontinuities need to be parti-

tioned. Mesh geometry interaction, one of the main tasks of the X-FEM, is also

presented. The final section of chapter 2 presents methods to increase the rate of

convergence of the X-FEM. Chapter 3 introduces the proposed C++ implementa-

tion of the X-FEM. The most salient features of object-oriented programming are

first quickly reviewed, then the design of the classes is explained. The extension to

acer
下划线
acer
下划线
acer
下划线
Page 18: EMMC - iMechanica

1.3. Outline 4

new problems is presented in Section 3.4 Numerical examples are given in Chapter

4. Conclusions and future work are stated in Chapter 5. The class hierarchy of the

OpenXFEM++ is provided in Appendix A. The data file and some preprocessing

Matlab routines, are given in Appendix B. The derivation of the discretized equa-

tions, the derivatives of the near tip enrichment functions and the auxiliary fields

used in the interaction integral to compute the SIFs are presented in Appendix C.

Page 19: EMMC - iMechanica

5

Chapter 2

Fracture mechanics and theeXtended Finite Element Method

2.1 Computational fracture mechanics

2.1.1 Crack tip fields in LEFM

In this section, a brief description of relevant aspects of linear elastic fracture

mechanics is given (almost shifted from (Bordas, 2003). First, cracks are defined

mathematically and the concept of loading mode is presented. Then, the crack tip

fields are presented and commented upon. Solutions of the equilibrium equations

are given and commented upon.

Mathematically, a crack is understood as a traction-free (unless otherwise

stated) line of discontinuity in two dimensions and a traction-free surface of dis-

continuity, which needs not be planar, in three-dimensions.

Cracks may be loaded in three independent ways, as shown in Figure 2.1:

• Opening mode (mode I )

• Sliding or shearing mode (mode II )

Page 20: EMMC - iMechanica

2.1. Computational fracture mechanics 6

• Tearing mode (mode III )

Figure 2.1: Modes of crack tip deformation

Crack tip stress, strain and displacement fields may be represented as a linear

combination of those for each individual mode.

Via suitable stress functions (Kanninen and Popelar, 1985), one may develop

expressions for each of the three modes of deformation presented above. For each

loading mode, the magnitude of the stress field is defined by a scalar coefficient

called the stress intensity factor. There is one stress intensity factor for each

loading mode that will be referred to as KI , KII and KIII for modes I, II and

III respectively. A crack is said to be loaded in mixed-mode when more than one

stress intensity factor is necessary to represent the crack tip fields.

In a Cartesian coordinate system linked to the body Ω, and using a polar

coordinate system linked to the crack tip, as shown in Figure 2.2, the full set of

stress and displacement fields at any point P = x = (r, θ) ∈ Ω, under plane strain

(Timoshenko and Goodier, 1970; Kanninen and Popelar, 1985) are as follows:

• Mode I

Page 21: EMMC - iMechanica

2.1. Computational fracture mechanics 7

u(r, θ) =KI

µ

√r

2πcos

θ

2

(1− 2υ + sin2 θ

2

)

v(r, θ) =KI

µ

√r

2πsin

θ

2

(2− 2υ − cos2 θ

2

)

w(r, θ) = 0

(2.1)

σxx(r, θ) =KI√2πr

cosθ

2

(1− sin

θ

2sin

2

)

σyy(r, θ) =KI√2πr

cosθ

2

(1 + sin

θ

2sin

2

)

σzz(r, θ) = ν (σxx + σyy)

σxy(r, θ) =KI√2πr

sinθ

2cos

θ

2cos

2

σxz(r, θ) = σyz(r, θ) = 0

(2.2)

where KI is the mode I stress intensity factor, defined by

KI = (2πr)12 lim

r→0σyy(r, 0) (2.3)

• Mode II

u(r, θ) =KII

µ

√r

2πsin

θ

2

(2− 2υ + cos2 θ

2

)

v(r, θ) =KII

µ

√r

2πcos

θ

2

(−1 + 2υ + sin2 θ

2

)

w(r, θ) = 0

(2.4)

Page 22: EMMC - iMechanica

2.1. Computational fracture mechanics 8

Figure 2.2: Polar coordinate system associated with a crack tip

σxx(r, θ) = − KII√2πr

sinθ

2

(2 + cos

θ

2cos

2

)

σyy(r, θ) =KII√2πr

sinθ

2cos

θ

2cos

2

σzz(r, θ) = ν (σxx + σyy)

σxy(r, θ) =KII√2πr

cosθ

2

(1− sin

θ

2sin

2

)

σxz(r, θ) = σyz(r, θ) = 0

(2.5)

where KII is the mode II stress intensity factor, defined by

KII = (2πr)12 lim

r→0σxy(r, 0) (2.6)

In all the expressions above, E is Young’s modulus, ν is Poisson’s ratio and µ is the

shear modulus of elasticity. To obtain the plane stress (Timoshenko and Goodier,

1970) expressions for the displacement and stress fields from the expressions above,

σzz should be set to zero and Poisson’s ratio ν should be everywhere replaced by

ν/(1 + ν).

Page 23: EMMC - iMechanica

2.1. Computational fracture mechanics 9

• Mode III

u(r, θ) = 0

v(r, θ) = 0

w(r, θ) =KIII

µ

√2r

πsin

θ

2

(2.7)

σxx(r, θ) = 0

σyy(r, θ) = 0

σzz(r, θ) = 0

σxy(r, θ) = 0

σxz(r, θ) = − KIII√2πr

sinθ

2

σyz(r, θ) =KIII√2πr

cosθ

2

(2.8)

where µ is the shear modulus of elasticity and KIII is the mode III stress intensity

factor, defined by

KIII = (2πr)12 lim

r→0σzy(r, 0) (2.9)

In the above, the stress fields are square root singular (i.e., the stresses vary as r−1/2

in the vicinity of the crack tip) and the stress intensity factors may be regarded

as the amplitudes of the singular stress fields. Stress intensity factors carry the

unit of stress times square root of length. The standard units are MPa√

m in the

metric system and ksi√

in in the english (imperial) system.

Page 24: EMMC - iMechanica

2.1. Computational fracture mechanics 10

2.1.2 Fatigue

By characterizing sub-critical crack growth using linear elastic fracture mechanics

parameters, it is possible to predict crack growth rates under cyclic loading, and

hence the number of cycles required for a crack to extend from some initial length

to a predetermined length of interest to the designer. Paris and Erdogan (1963)

proposed a law for fatigue crack growth relating the increment in crack advance

da to the increment in number of cycles dN and the stress intensity factor range

∆K

da

dN= C (∆K)m (2.10)

where C and m are material constants, determined experimentally by standard

fatigue tests and ∆K = Kmax −Kmin is the stress intensity factor range.

There are three regions characterizing fatigue crack growth in typical alloys, as

depicted in Figure 2.3. Region A begins with a threshold value of stress intensity,

∆Kthreshold below which crack propagation does not occur and continues until

the slope of the curve becomes constant. ∆Kthreshold may be associated with the

attainment of a sufficient level of activity in the crack tip region.

Region B represents the zone in which the relationship between ln dadN

and

ln ∆K is linear and in this region, fatigue crack growth is governed by the Paris

law. The life of many cracked engineering structures may be considered solely in

this range once allowance has been made for the minimum crack length employed,

which is normally related to the limitations of a particular inspection technique

or design code requirements. For instance, the parameter that is controllable in

practical situations is the inspection interval, i.e., the time interval between two

Page 25: EMMC - iMechanica

2.1. Computational fracture mechanics 11

successive non-destructive evaluations of the structure of interest.

Region C exhibits a steep slope, where a small increment in the stress intensity

factor range ∆K leads to a large increment in crack advance per cycle da/dN .

The material behavior in this region is complicated by the possible attainment

of plastic zone dimensions which are large compared with specimen dimensions,

ductile tearing and values of Kmax that approach fracture toughness (Barsoum,

1977).

To obtain an extension of Paris’ law for mixed-mode loading, simply replace

the stress intensity factor range ∆K by an equivalent stress intensity factor range

∆Ke. One possible expression for the equivalent stress intensity factor is

∆Ke =√

∆K2I + ∆K2

II + ∆K2III (2.11)

2.1.3 Crack growth in a linear elastic solid

In this report, when the term crack growth or crack propagation is employed, it

shall be to refer to quasi-static crack growth, in which inertia (acceleration) effects

are neglected. In this quasi-static approach, the body is assumed in equilibrium

at all times.

In addition to a criterion for crack extension, modelling crack growth neces-

sitates the determination of the crack growth direction. Among the criteria for

determining this growth direction, the following are commonly used:

1. The maximum energy release rate criterion (Nuismer, 1975).

2. The maximum circumferential stress (hoop stress) criterion or the maximum

Page 26: EMMC - iMechanica

2.1. Computational fracture mechanics 12

Figure 2.3: Paris fatigue crack growth, schematic representation: the Paris regioncorresponds to the portion of the curve that is almost linear.

Page 27: EMMC - iMechanica

2.1. Computational fracture mechanics 13

principal stress criterion (Erdogan and Sih, 1963).

3. The minimum strain energy density criterion (Sih, 1973).

4. The zero KII criterion.

All the crack growth simulations shown in this thesis use the maximum hoop

stress criterion, which states that the crack will propagate from its tip in a direction

θ = θc such that the circumferential stress σθθ is maximum. The usual polar

coordinate system related to the crack tip is used to describe the crack propagation

direction, as shown in Figure 2.2.

Since σθθ is a principal stress in the direction of crack propagation, the crack

will propagate in the direction such that the shear stress is zero. Setting the

shear stress to zero in the expression for the asymptotic fields of elastic fracture

mechanics then allows the determination of the value of the crack propagation

angle as

θc = 2 arctan

1

4

KI

KII

− sign(KII)

√(KI

KII

)2

+ 8

(2.12)

where the sign function takes the value +1 when its argument is positive and the

value −1 when its argument is negative, zero being assumed a positive number.

The derivation of this equation is given in Appendix C.

Page 28: EMMC - iMechanica

2.1. Computational fracture mechanics 14

2.1.4 Contour integrals and their

domain representations in two-dimensions

Among the numerical methods for calculating fracture parameters, boundary inte-

gral methods (Forth and Keat, 1996; Sladek et al., 2000) and the domain integral

method (Shih et al., 1986; Nikishkov and Atluri, 1987; Moran and Shih, 1987) have

proved adequate tools. In this work, the domain integral method, in conjunction

with interaction energy integrals, is used to determine mixed-mode stress intensity

factors. In the interaction energy integral method, auxiliary fields are introduced

and superimposed onto the actual fields satisfying the boundary value problem.

By suitably selecting these auxiliary fields, a relationship can be found between

the mixed-mode stress intensity factors and the interaction energy integrals. These

integrals can be represented in so-called domain forms and evaluated in a post-

processing step, once the solution to the boundary value problem is known.

The energy release rate for general mixed-mode problems in two dimensions

can be written:

J =1

E ′(K2

I + K2II

)(2.13)

where E ′ is defined as

E ′ =

E

1− ν2for plane strain

E for plane stress(2.14)

Consider a crack in two dimensions. This crack is represented by a line-segment and

a local orthogonal, Cartesian crack tip coordinate system (e1, e2) is constructed.

Page 29: EMMC - iMechanica

2.1. Computational fracture mechanics 15

Let Γ be a contour encompassing the crack tip and n be the unit normal to the

contour Γ, oriented as shown in Figure 2.4. The contour integral J is defined as

(Rice, 1968)

J =

Γ

[Wdx2 − Ti

∂ui

∂x1

]=

Γ

[Wδ1j − σij

∂ui

∂x1

]njdΓ (2.15)

where Ti = σijnj is the traction on the contour Γ.

Two states of a cracked body are considered. State 1, (σ(1)ij , ε

(1)ij , u

(1)i ), corre-

sponds to the present state and state 2, (σ(2)ij , ε

(2)ij , u

(2)i ), is an auxiliary state. The

J-integral for the sum of the two states is

J (1+2) =

Γ

[1

2(σ

(1)ij + σ

(2)ij )(ε

(1)ij + ε

(2)ij )δ1j − (σ

(1)ij + σ

(2)ij )

∂(u(1)i + u

(2)i )

∂x1

]njdΓ

(2.16)

Expanding and rearranging terms gives

J (1+2) = J (1) + J (2) + I(1+2) (2.17)

where I(1+2) is called the interaction integral for states 1 and 2

I(1+2) =

Γ

[W (1,2)δ1j − σ

(1)ij

∂u(2)i

∂x1

− σ(2)ij

∂u(1)i

∂x1

]njdΓ (2.18)

where W (1,2) is the interaction strain energy

W (1,2) = σ(1)ij ε

(2)ij = σ

(2)ij ε

(1)ij (2.19)

Page 30: EMMC - iMechanica

2.1. Computational fracture mechanics 16

Writing equation (2.13) for the combined states gives

J (1,2) = J (1) + J (2) +2

E ′ (K(1)I K

(2)I + K

(2)II K

(1)II ) (2.20)

Equating (2.17) and (2.20) leads to the following relationship

I(1+2) =2

E ′ (K(1)I K

(2)I + K

(2)II K

(1)II ) (2.21)

Making suitable choice of state 2 as the pure mode I asymptotic fields with K(2)I =

1, K(2)II = 0, gives the mode I SIF in terms of the interaction integral

K(1)I =

E ′

2I(1,ModeI) (2.22)

Similarly, choose state 2 as the pure mode II asymptotic fields with K(2)II =

1, K(2)I = 0, gives the mode II SIF in terms of the interaction integral

K(1)II =

E ′

2I(1,ModeII) (2.23)

The contour integral (2.18) is not well suited for its numerical evaluation. It

is useful, therefore, to recast this integral into an equivalent domain form by mul-

tiplying the integrand with a sufficiently smooth weighting function q(x) which

takes a value of unity on an open set containing the crack tip and vanishes on an

outer prescribed contour C0.

Page 31: EMMC - iMechanica

2.1. Computational fracture mechanics 17

The interaction integral for states 1 and 2 can be written (see Figure 2.4):

I(1,2) = limΓ→0

Γ∪C0∪C+∪C−

[W (1,2)δ1j − σ

(1)ij

∂u(2)i

∂x1

− σ(2)ij

∂u(1)i

∂x1

]qmjds

(2.24)

In Figure 2.4, let the contour C be the union of the curves Γ, C0, C+ and C−

and let mj be the outward normal to the domain A.

Note that the boundary of the domain A is ∂A = C = Γ∪C0 ∪C+ ∪C−. The

outward normal mj to the domain A is:

m =

−n on Γ

+n on C0 ∪ C+ ∪ C−(2.25)

From (2.24), and using the result in (2.25), and the divergence theorem the inter-

action integral can be simplified

I(1,2) =

A

[−W (1,2)δ1j + σ

(1)ij

∂u(2)i

∂x1

+ σ(2)ij

∂u(1)i

∂x1

]∂q

∂xj

dA (2.26)

It is critical to note that, in order to derive equation (2.24), the crack faces

are assumed straight and traction-free. This remark shall be kept in mind when

assessing the accuracy of the code in computing stress intensity factors at the

tips of a circular-arc crack in Section 4.1. Other domain integrals were developed

for curved cracks in 2D. See for example (M. Lorentzon, 2000), in which a path-

independent integral is derived for non-straight cracks.

Page 32: EMMC - iMechanica

2.1. Computational fracture mechanics 18

Figure 2.4: Domain used for computation of mixed mode stress intensity factorsin two dimensional space

Page 33: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 19

2.2 Modeling cracks with the eXtended Finite

Element Method

2.2.1 Governing equations

In this section, the governing equations of elastostatics with internal boundaries

are briefly reviewed and an associated weak form is given. Consider a domain Ω,

bounded by Γ. The boundary is partitioned into three sets: Γu, Γt and Γc as shown

in Figure 2.5. Displacements are prescribed on Γu, tractions are prescribed on Γt

and all the Γc are assumed to be a traction free surface.

Figure 2.5: Body with a crack

Page 34: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 20

The equilibrium conditions and boundary conditions for this problem are

∇ · σ + b = 0 in Ω (2.27)

σ · n = t on Γt (2.28)

σ · n = 0 on Γc (2.29)

u = u on Γu (2.30)

where σ is the Cauchy stress tensor, u is the displacement field, b is the body

force per unit volume and n is the unit outward normal. It is assumed that

displacements remain small and the kinematics equations consist of the strain-

displacement relation:

ε = ε(u) = ∇su (2.31)

where ∇s (·) is the symmetric part of the gradient operator. The constitutive

relation for the elastic material under consideration is given by Hooke’s law

σ = C : ε (2.32)

2.2.2 Variational formulation or Weak form

Let the space of admissible displacement fields (trial function space) be defined by

Page 35: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 21

U = u ∈ S|u = u on Γu andu discontinuous on Γc (2.33)

Babuska and Rosenzweig (1972) and Grisvard (1985) discuss in detail the choice of

the space of admissible displacements S when the body contains internal boundaries

or re-entrant corners. Similarly, the test function space may be defined as

U0 = v ∈ S|v = 0 on Γu andv discontinuous on Γc (2.34)

A weak formulation of the equilibrium equations is given by

Find u ∈ U | ∀v ∈ U0,

Ω

σ(u) : ε(v)dΩ =

Ω

b · vdΓ +

Γt

t · vdΓ (2.35)

or, using the constitutive relation,

Find u ∈ U | ∀v ∈ U0,

Ω

ε(u) : C : ε(v)dΩ =

Ω

b · vdΓ +

Γt

t · vdΓ (2.36)

Define the bilinear form B

∀u ∈ U,∀v ∈ U0, B(u,v) =

Ω

ε(u) : C : ε(v)dΩ (2.37)

and the linear form L

∀v ∈ U0,L(v) =

Ω

b · vdΓ +

Γt

t · vdΓ (2.38)

Page 36: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 22

With these notations, the above can be rewritten

Find u ∈ U | ∀v ∈ U0, B(u,v) = L(v) (2.39)

This convenient notation will be used in Appendix C to derive the discretized

equations for the eXtended Finite Element Method.

2.2.3 Extended finite element approximation

The basic idea of the X-FEM is to enrich a classical finite element space with some

additional functions. These functions are built as the product of global enrichment

functions with some finite element shape functions.

Consider a point x that lies inside a finite element e. Denote the element’s nodal

set as Ne = n1, n2, ..., nme, where me is the number of nodes of element e. The

enriched displacement approximation for a vector-valued function uh : Rd → Rd

assumes the form

uh(x) =∑

I∈Ne

NI(x)uI +∑

J∈Nenr

Nj(x)Ψ(x)aJ (2.40)

where the nodal set Nenr is the set of nodes whose support is intersected by the

domain Ωg associated with a geometric entity such as a hole, or crack surface and

Ne is the set of nodes that are not enriched. NI and NJ are finite element shape

functions. Mathematically,

Nenr = nJ : nJ ∈ Ne|ωJ ∩ Ωenr 6= O (2.41)

Page 37: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 23

In the above equation, ωJ = supp(nJ) is the support of the nodal shape function

NJ(x), which consists of the union of all elements with nJ as one of its vertices;

and Ωenr is the domain associated with a geometric entity such as a hole, or crack

surface. The choice of the function Ψ: x 7→ Ψ(x) depends on the geometric entity

under consideration.

To retain the interpolation property of the approximation, i.e., uh(xI) = uI ,

the following modification is often made

uh(x) =∑

I∈Ne

NI(x)uI +∑

J∈Nenr

NJ(x)(Ψ(x)−Ψ(xJ))aJ (2.42)

Note that from (2.42) the enriched part of the approximation vanishes at the nodes.

In the particular instance of 2D crack modeling, the enriched displacement

approximation is written as (Moes, Dolbow, and Belytschko, 1999)

uh(x) =∑

I∈N

NI(x)uI +∑

J∈Ndisc

NJ(x)HJ(x)aJ +∑

K∈Nasympt

NK(x)4∑

α=1

BαK(x)bαK

(2.43)

where N is the set of conventional (not enriched) nodes, Ndisc is the set of nodes

enriched with discontinuous enrichement and Nasympt the set of nodes enriched

with asymptotic enrichment.

The determination of Ndisc and Nasympt is done according to the following rules

(see Figure 2.6):

• Ndisc is the set of nodes whose support is entirely split by the crack,

• Nasympt is the set of nodes which contain the crack tip in the support of their

shape functions.

Page 38: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 24

H is the modified Heaviside step function and the functions B span the space of

the asymptotic crack tip fields. The uI ’s are the unknown standard displacement

degrees of freedom associated with node I, the aJ ’s are the unknown enrichment

coefficients associated with the discontinuous enrichment function HJ active on

node J and defined by

HJ(x) = H(x)−H(xJ) (2.44)

H(x) is the modified Heaviside step function which takes on the value +1 above

the crack and −1 below the crack:

H(x) =

+1 if (x− x∗).n ≥ 0

−1 otherwise(2.45)

where x is a sample point, x∗ (lies on the crack) is the closest point projection of

x, and n is the unit outward normal to the crack at x∗.

Finally, bαK are additional, enrichment degrees of freedom associated with the

enrichment function BαK active at node K and defined by

BαK(x) = Bα(x)−Bα(xK) (2.46)

The crack tip enrichment functions in isotropic elasticity Bα are –obtained from

the asymptotic displacement fields.

B ≡ [B1, B2, B3, B4] =

[√r sin

θ

2,√

r cosθ

2,√

r sinθ

2cos θ,

√r cos

θ

2cos θ

](2.47)

Page 39: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 25

Figure 2.6: Selection of enriched nodes for 2D crack problem. Circled nodes areenriched by the step function whereas the squared nodes are enriched by the cracktip functions. (a) on a structured mesh; (b) on an unstructured mesh.

Page 40: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 26

Here, r and θ are polar coordinates in the local crack tip coordinate system as

shown in Figure 2.8. Note that the first function in the above equation is discon-

tinuous across the crack as shown in Figure 2.7. It represents the discontinuity near

the tip, while the other three functions are added to get accurate result with rela-

tively coarse meshes. It is not clear from known numerical examples with X-FEM

whether adding higher order terms in the asymptotic expansion of the near-tip

fields significantly contributes to further enhancement of the solution. Also, as

shall be seen in the numerical examples, the choice of the set of nodes to be en-

riched with the asymptotic near-tip fields has a non-negligeable influence on the

results.

Figure 2.7: 2D view of near tip asymptotic functions

Page 41: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 27

Note that, in equation (2.43), two types of shape functions are used, NI to

interpolate the standard displacement field and NJ multiplied with the enrichment

functions to form the enriched shape functions.

Figure 2.8: Coordinate configuration for crack tip enrichment function

We have defined the set of nodes that are enriched by the Heaviside function

as the set of nodes whose support is completely cut by the crack. A direct use of

this definition could lead to an ill-conditioned stiffness matrix. Consider Figure

2.9 which illustrates a crack cutting through finite elements. In Figure 2.9(a),

nodes a and b are enriched by H function as usual whereas nodes c and d are

not enriched since their supports are not cut by the crack. In Figure 2.9(b), a

direct application of the support criterion leads to the enrichment of nodes c and

d. Hence, the regular and enriched shape functions at these nodes will only differ

in the very thin band of width ε, leading to ill-conditioned system matrix because

Page 42: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 28

(a)

(b)

Figure 2.9: Effects of crack near edge: (a) crack aligned with a mesh. The nodesa and b are enriched and the nodes c and d are not enriched; and (b) crack almostaligned with a mesh. Nodes c and d should not be enriched to avoid singularstiffness matrix.

Page 43: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 29

the resulting basis functions are almost identical. Therefore, nodes c and d should

not be enriched by H function. The criterion for selection of H enriched nodes, as

given in (Dolbow, 1999), relies on the following considerations. For a certain node,

the area of its support denoted by Aω is computed. The part of its support’s area

above, Aabω and below, Abe

ω the crack, are computed (see Figure 2.10). Then, the

following ratios are calculated

rab =Aab

ω

(2.48a)

rbe =Abe

ω

(2.48b)

If either of the above ratios are below a specified tolerance, the node is no longer

enriched with H. In practice, a tolerance of 10−4 is used.

Figure 2.10: Area criterion for selection of H(x) enriched nodes

Page 44: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 30

2.2.4 Discretized equilibrium equations

By substituting the displacement approximation (2.43) into the strain definition

(2.31), we arrive at the following expression for the approximated strain:

εh = Bu =[Bu

I BaJ Bb1

K Bb2K Bb3

K Bb4K

]

uI

aJ

b1K

b2K

b3K

b4K

(2.49)

where B is the discretized symmetric gradient of the extended shape functions. Its

components are

BuI =

NI ,x 0

0 NI ,y

NI ,y NI ,x

(2.50)

BaJ =

(NJ(H −H(xJ))),x 0

0 (NJ(H −H(xJ))),y

(NJ(H −H(xJ))),y (NJ(H −H(xJ))),x

(2.51)

BblK |l=1,2,3,4=

(NK(BlK −Bl

K(xK))),x 0

0 (NK(BlK −Bl

K(xK))),y

(NK(BlK −Bl

K(xK))),y (NK(BlK −Bl

K(xK))),x

(2.52)

Page 45: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 31

Substituting the displacement (2.43) and the strain (2.49) into the weak form

(2.36), the standard discrete system of equations is obtained:

Ku = f ext (2.53)

where f ext is the vector of external nodal forces and K is the stiffness matrix:

K =

Ωh

BTCBdΩ (2.54)

The expression of the external forces vector f ext is as follows

f ext = fuI ; fa

J ; fb1K ; fb2

K ; fb3K ; fb4

K (2.55)

with

fuI =

Γt

NItdΓ +

Ω

NIbdΩ (2.56)

faJ =

Γt

NJ(H −H(xJ))tdΓ +

Ω

NJ(H −H(xJ))bdΩ (2.57)

f blK |l=1,2,3,4=

Γt

NK(BlK −Bl

K(xK)))tdΓ +

Ω

NK(BlK −Bl

K(xK)))bdΩ (2.58)

Page 46: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 32

2.2.5 Element integration

In the derivation of the weak form, the divergence theorem is used to lower the

continuity requirements on the trial functions. The divergence theorem is only

applicable on a domain on which ui sufficiently regular, i.e., ui must not contain

discontinuities or singularities, and hence the crack surface must be an internal

boundary of the domain of integration. For example, for element ABCD in Fig-

ure 2.11, it is necessary to divide this element into two sub-domains ABGFE and

EFGCD and do the integration on these two sub-domains. The design and devel-

opment of quadrature rules over arbitrary polygons has not yet reached a mature

stage. Therefore, instead of performing the integration over polygonal domains,

it these domains are partitioned into sub-triangles, see Figure 2.11. To get accu-

rate results, in the sub-triangles, high order Gauss quadrature rule must be used.

In this thesis, 13 Gauss points are used in each sub-triangle. It is worthwhile to

note that researchers have come up with singular numerical integration techniques

(Laborde, Pommier, Renard, and Salaun, 2004).

The numerical integration procedure for elements cut by the crack is as follow

1. Build the Delaunay triangulation to get the sub-triangles

2. For each sub-triangle, the coordinates and weights of 13 Gauss points are

computed and then converted into the parent coordinate system of the orig-

inal element.

Details are given in Appendix C.

Page 47: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 33

Figure 2.11: Subdomains used in integration on polygon

Figure 2.12: Sub-triangles used in numerical integration

Page 48: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 34

2.2.6 Mesh geometry interaction

In the X-FEM, the discontinuities are not explicitly meshed but represented im-

plicitly by enriching some nodes with appropriate enrichment functions. Therefore,

one of the first tasks is to determine the finite elements that intersect the discon-

tinuities.

The X-FEM usually has been used in conjunction with the Level Set Method,

a technique introduced by Osher and Sethian (1988) to solve a variety of applied

mechanics problems: crack growth in 2D (Stolarska et al., 2001) and 3D planar

cracks (Sukumar et al., 2000; Sukumar et al., 2003) and Chopp and Sukumar (2003)

where the problem of multiple planar cracks is examined. The hybrid method was

also recently employed for non-planar crack growth (Moes et al., 2002; Gravouil

et al., 2002), and in other fields of physics: solidification problems (Chessa et al.,

2002; Ji et al., 2002; Merle and Dolbow, 2002), multi-phase flow (Chessa and

Belytschko, 2003a; Chessa and Belytschko, 2003b) and chemically-induced swelling

of hydrogels (Dolbow et al., 2003) and biofilm growth (Bordas, 2003; S. Bordas and

Chopp, 2005). However, it was chosen for the work of this thesis to represent the

crack by standard geometrical predicates –points, segments, polylines, etc.. In the

following, the computational geometry techniques developed to find out elements

interacting the crack, and updating the enriched nodes are discussed in detail. The

interested reader can refer to Sukumar and Prevost 2003 for a similar presentation

of these computational geometry issues.

In the current implementation, the orientation test is used to determine the

nodal enrichment for a query point x. For a query point x ≡ (x,y), we consider

the triangle with vertices (x1,x2,x), where x1 ≡ (x1,y1) and x2 ≡ (x2,y2) are

Page 49: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 35

coordinates that define one crack segment. Twice the signed area of this triangle

is evaluated:

∆ = (x1 − x)(y2 − y)− (x2 − x)(y1 − y) (2.59)

x is above the crack if ∆ > ε, below the crack if ∆ < −ε and is on the crack

otherwise. In the code, a tolerance ε = 10−6 was used.

To detect whether an element e is completely cut by the crack, equation (2.59)

is used for all nodes of e. If the number of nodes which locate above or below the

crack is different from the total number of nodes of e, then e is cut by the crack.

In order to find out if an element e contains the crack tip or not, equation

(2.59) is used for every edges of e.

Normally, a fracture mechanics problem solved by the X-FEM consists of a

fixed underlying finite element mesh and cracks approximated as connected sets of

straight line segments. To find out elements (convex polygons) cut by the cracks

(line segments) and elements containing the tips (2D points), firstly, we loop on

all elements and detect sets of elements denoted by AΓ cut by each crack. Then,

each crack will find out elements containing its tips by looping on set AΓ and

using the aforementioned geometry predicates. Obviously, for multiple cracks and

a very fined mesh, the mesh geometry interaction procedure using the previous

way is computationally costly. To improve this, a good mesh database should

be used and AOMD (Algorithm Oriented Mesh Database) (Remacle, Karamete,

and Shephard, 2000) is a promising choice. In the results presented in sections

on numerical experiments, the paradigm of Dunant et al. (2005) is used, and

the mesher is incorporated into the solver, so as to best leverage the information

needed to construct the mesh at solve time.

Page 50: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 36

Figure 2.13: Neighbors of finite elements (a) and of a node(b)

Page 51: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 37

The computation of the interaction integral requires a set of finite elements cut

by a contour line –usually a circle centered at the crack tip, for convenience. To

this end, neighboring elements (see Figure 2.13) of the tip element are detected.

For each neighboring element, say e, it is checked whether this element is cut

by the circle. If so, the same operation is repeated for the elements neighboring

e. The neighbors of an element are built from the supports of its nodes. If the

elements are stored in a tree (Delaunay tree for a triangular mesh, Quad tree for

a quadrangular mesh, octree for a 3D hexahedral mesh), the interaction between

the circle and the mesh is much less costly, as shown in Dunant et al. (2005).

2.2.7 Crack growth simulation

This section introduces the quasi-static crack growth simulation in 2D domains

using the X-FEM. Since the crack is described independently of the mesh, no

remeshing is needed at each stage of crack advance.

In the present formulation, the crack is represented as a connected set of straight

line segments as shown in Figure 2.14. It is necessary to compute the propagation

angle θc and increment length ∆a for the new segment. The propagation angle θc

is determined by (see Section 2.1.3)

θc = 2 arctan

1

4

KI

KII

− sign(KII)

√(KI

KII

)2

+ 8

(2.60)

If KII = 0 then θc = 0 (pure mode I) and by noting that if KII > 0, the crack

growth angle θc < 0, and if KII < 0 then, θc > 0, a more efficient expression for θc

Page 52: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 38

Figure 2.14: Discrete representation of crack segments

Page 53: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 39

is implemented (Suo, 2002):

θc = 2 arctan

[−2KII/KI

1 +√

1 + 8(KII/KI)2

](2.61)

The increment crack length can be defined by Paris law or set in advance. In

this thesis, the latter way was chosen.

The procedure to simulate the crack growth with the X-FEM is summarized in

Figure 2.15. Initially, a relatively coarse mesh is used to obtain a rough estimate

of the overall crack path. We then refine the mesh in the vicinity of the crack path

and use a smaller crack increment 4a to obtain a converged solution.

In the following, some issues concerning the efficient implementation of crack

growth simulations are discussed. When the crack grows, some nodes change their

enrichment status, for instance, from being tip-enriched to being enriched with the

step function; some non-enriched nodes become enriched as shown in Figure 2.16.

To quickly find out these nodes, a circle centered at the old tip with a radius 4a

is built. Elements belonging to this circle (shaded elements in Figure 2.16) are

found. Finally, by looping on these elements and detecting those that intersect the

crack advance line segment yields the newly enriched nodes.

It is not efficient to recompute the stiffness matrices of all elements at each time

step. Therefore, a set of elements denoted by A (hashed elements in Figure 2.17)

is built. As one could see in this figure, set A is composed of nodal supports of

new enriched nodes. Elements belonging to this set must recompute the following:

• Gauss points used to compute the stiffness matrices

• Stiffness matrix

Page 54: EMMC - iMechanica

2.2. Modeling cracks with the eXtended Finite Element Method 40

Figure 2.15: The X-FEM flowchart for crack growth simulation

Page 55: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 41

• Location array (scatter array) used to do the assembly

Another possibility for the assembly is to use the static condensation technique.

Since the standard degree of freedoms (DOFs) are fixed, we can keep them and

condense all those DOFs onto enriched DOFs. It is just a proposal and requires

further work to make sure it makes sense. Another possibility would consist in

condensing the enriched dofs onto the standard dofs locally, in each finite element.

Figure 2.16: Elements (shaded) used to find new interacted elements

2.3 Improvement of the rate of convergence of

the X-FEM

Although the X-FEM ensures a lower error than the classical finite element meth-

ods, the rate of convergence is not improved when the mesh parameter h is going to

Page 56: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 42

Figure 2.17: Elements whose status is changed after a crack grows

Page 57: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 43

zero because of the presence of a singularity. This rate is lower than it is expected

with classical finite element method for a smooth problem as pointed out in Stazi

et al. 2003. In order to obtain the optimal accuracy, some methods have been

proposed such as X-FEM with a fixed enrichment area, high order X-FEM and the

construction of blending elements.

2.3.1 X-FEM with a fixed enrichment area

The usual enrichment scheme is to enrich only nodes of tip-elements. Consequently,

the support of the enriched functions vanishes when h goes to zero. An alternative

strategy, introduced in Laborde et al. 2004, consists in enriching a fixed area

around the crack tip independently of h. Defining a circle C(x0, R) with predefined

radius r whose center is the crack tip x0. Then any node belonging to this circle

is enriched with the crack tip functions (see Figure 2.18). The same enrichment

scheme is to enrich a layer of elements around the tip-element.

The new enriched approximation is written as

uh(x) =∑

I∈N

NI(x)uI +∑

J∈Ndisc

NJ(x)HJ(x)aJ +∑

K∈I(R)

NK(x)4∑

α=1

BαK(x)bαK

(2.62)

where the nodal set I(R) contains nodes locating inside the circle C(x0, R).

2.3.2 High order extended finite element method

It is well known that high order elements provide improved accuracy for sufficiently

smooth problems. Due to higher rate of convergence, the decreased susceptibility

to locking, and the ability to model curved boundaries, quadratic elements have

Page 58: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 44

(a) (b)

Figure 2.18: Another scheme for selection of enriched nodes for 2D crack problem.Circled nodes are enriched by the step function whereas the squared nodes areenriched by the crack tip functions.

been elements of choice for most static and quasi-static problems. And X-FEM

is not an exception. In Stazi et al. 2003, the high order enriched finite element

method was presented and used to solve multiple crack problems with great success.

This section aims at introducing this useful extension of the X-FEM.

For ease of reading, the extended finite element approximation is reintroduced

uh(x) =∑

I∈N

NI(x)uI +∑

J∈Ndisc

NJ(x)HJ(x)aJ +∑

K∈Nasympt

NK(x)4∑

α=1

BαK(x)bαK

(2.63)

where the shape functions NI are quadratic whereas NJ , NK , shape functions that

construct the enriched part of the approximation, are chosen to be linear shape

functions. The reason for this choice was explained in Chessa et al. (2003), which

Page 59: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 45

is recalled in the next section. Note that, with quadratic elements, and if the finite

element shape functions are used to model the crack geometry –using the level

set method for instance– the curved cracks can be modeled more efficiently and

accurately than with linear XFEM. The enriched nodes for unstructured quadratic

triangular mesh is given in Figure 2.19.

Figure 2.19: Enriched nodes for quadratic XFEM. Circled nodes are enriched bythe step function whereas the squared nodes are enriched by the crack tip functions.

Page 60: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 46

2.3.3 X-FEM - a local partition of unity enriched finite

element method

The finite element shape functions form a partition of unity

∑I∈N

NI(x) = 1 (2.64)

It follows from the above that for an arbitrary function Ψ(x), the following satisfies

∑I∈N

NI(x)Ψ(x) = Ψ(x) (2.65)

Therefore any function Ψ can be reproduced by a set of functions NIΨ. This is

the key property of enriched finite element methods based on a partition of unity.

Although one could enrich the entire domain, only a sub-domain is usually en-

riched since the features need to be modeled local – for instance, a crack compared

to the plate containing it. Moreover, keeping enrichment local permits keeping

the matrix banded. This is why X-FEM can be considered as a local partition of

unity enriched finite element method. A partitioning of a typical domain into its

non-enriched sub-domains and enriched sub-domains is shown in Figure 2.20.

In this local enrichment scheme, three types of elements are distinguished. The

first types are the classical finite elements, those in which none of its nodes are

enriched, these elements are grouped in Ωstd. The second type are fully enriched

elements, i.e., all of its nodes are enriched. These elements are denoted as Ωenr.

The third type of elements, called partially-enriched elements, are those for which

only some –but not all– of the nodes are enriched. These elements form the Ωblnd

Page 61: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 47

sub-domain.

Figure 2.20: Typical discretization illustrating enriched domain, Ωenr, transitiondomain, Ωblnd, as well as enriched nodes(filled nodes).

Let uI = 0 and aJ = 1 in the enriched finite element approximation (2.40), we

have

uh(x) =∑

J∈Nenr

NJ(x)Ψ(x) = Ψ(x) ∀x ∈ Ωenr

NJ(x)Ψ(x) 6= Ψ(x) ∀x ∈ Ωblnd

NJ(x)Ψ(x) = 0 ∀x ∈ Ωstd

(2.66)

Therefore the approximation can reproduce the enrichment in Ωenr and it vanishes

in Ωstd. However, in the blending domain, it consists of the product of a subset of

the enriched shape functions NJ and the enrichment function Ψ so this enrichment

Page 62: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 48

function cannot be reproduced. The blending elements or transition elements lead

to a lower convergence rate for enriched finite element methods compared to stan-

dard finite element methods. The following example, extracted from Chessa et al.

(2003), show why this is the case.

Note that relatively simple cures for this problem have been developed in

(Chessa et al., 2003).

Consider a one dimensional mesh as shown in Figure 2.21 with a discontinuity

in the derivative in element 0 as shown. The enrichment function is the ramp

function (Sukumar et al., 2001)

Ψ(x) = xH(x) (2.67)

where H is the Heaviside step function. This enrichment adds a discontinuity in the

gradient of the approximation at x = 0 (Sukumar, Chopp, Moes, and Belytschko,

2001). Linear shape functions are used for both the standard approximation and

the partition of unity. Let element 0 be the fully enriched element and element 1

be the blending element to the right.

The approximation of element 1 is given by

uh(x) =2∑

I=1

NI(x) + N1(x)(xH(x)− x1H(x1))q1 (2.68)

uh(ξ) = u1(1− ξ) + u2ξ + q1ξh(1− ξ) (2.69)

where

ξ =x− x1

h(2.70)

Page 63: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 49

Figure 2.21: A 1D example of how a locally enriched finite element method failsto be able to reproduce a linear field. The desired piecewise linear field is shownin (b) and the enriched part (dotted line), standard part (dashed line), and thetotal (solid line) approximation are shown in (c). The discretization is shown in(a), where the enriched nodes denoted by filled circles, the two blending elementsare filled and the fully enriched element is hashed (Chessa, Wang, and Belytschko,2003).

Page 64: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 50

and h is the length of element 1.

Let the finite element interpolation to the solution be given by uint and denote

the error in the interpolation by ∆, we have

∆ ≡ u− uint (2.71)

The maximum error occurs at the point x where

∆,x|x ≡ d

dx∆(x) = 0 (2.72)

Then a Taylor expansion about x gives

∆(x) = ∆(x) + ∆,x|x(x− x) +1

2∆,xx|x(x− x)2 + O(h3) (2.73)

or

∆(x) = ∆(x) +1

2∆,xx|x(x− x)2 (2.74)

If we let x = x1, then ∆(x1) = 0 since uint is the finite element interpolation of u,

i.e., uint(xI) = u(xI). Therefore, from (2.74) we obtain

∆(x) = −1

2∆,xx|x(x− x)2 (2.75)

Since from (2.69)

∆(x) = u,xx +2q1

h(2.76)

Page 65: EMMC - iMechanica

2.3. Improvement of the rate of convergence of the X-FEM 51

and since

1

2(x− x1)

2 ≤ 1

8h2 (2.77)

it follows that

∆(x) ≤ 1

8h2max(u,xx +

2q1

h) (2.78)

The last term, 2q1/h, does not appear for standard finite elements. It increases

the interpolation error in the blending elements from order h2 to h. Although

this occurs in only few elements, the effect is to reduce the rate of convergence

of the entire approximation. The reason for this is that the partition of unity

property (completeness) of the approximation is not verified in the whole domain.

Therefore, the theoretical rate of convergence cannot be attained.

When the enrichment is a polynomial of order n, i.e., ξn, then for n > 1 the

interpolation error in the blending elements is increased even further. If we go

through the same steps as before, we find that

∆(x) ≤ 1

8h2max(u,xx +

2q1

hn) (2.79)

At this time, we can understand why in the quadratic X-FEM formulation, the

partition of unity shape functions have been chosen as linear. To get improved rate

of convergence, Chessa proposed the enhanced strain formulation for the blending

elements. By properly choosing an enhanced strain field, we can eliminate the

unwanted terms in the enriched approximation. More details on this method can

be found in Chessa (2002) and Chessa, Wang, and Belytschko (2003).

Page 66: EMMC - iMechanica

2.4. Conclusions 52

2.4 Conclusions

The first part of this chapter presented the basics of fracture mechanics and showed

how domain form of interaction energy integrals can be used, in the context of

Linear Elastic Fracture Mechanics, to compute numerical fracture parameters for

cracks in 2D.

This chapter focuses on the presentation of the application of the X-FEM to

linear elastic fracture mechanics. Essential tasks in the X-FEM include the choice

of enrichment functions, how to find out enriched nodes and how to deal with the

integration of non-polynomial and discontinuous functions.

In the context of LEFM, the enrichment functions can be easily found –derived

from the asymptotic displacement fields. However, for ductile materials, the LEFM

is no longer correct and the Elasto-Plastic Fracture Mechanics (EPFM) should be

used. In this case, it is not straightforward to find out which enrichments are to be

used. Bordas (2001) propose a technique where the asymptotic fields obtained from

the Hutchinson-Rice-Rosengren (HRR) fields of elastic-plastic Ramberg-Osgood

materials enrich the standard approximation. However, it is pointed out that

only the radial dependence of the asymptotic expansion of the near-tip fields are

known analytically and that the angular variation of the fields can be computed

numerically by a one-dimensional finite element method.

Mesh-geometry interaction is a major part of the X-FEM. The geometry of the

discontinuities can be represented by standard geometry (as done in this thesis)

or by the level sets. Recently, the vector level set was proposed (Ventura, Xu,

and Belytschko, 2001), for crack growth problems, as a simpler alternative to

the standard level set method since no hyperbolic conservation law needs to be

Page 67: EMMC - iMechanica

2.4. Conclusions 53

solved in the vector level set method. Indeed, hyperbolic conservation laws lead to

instabilities when discretized using Galerkin methods and require those methods to

be stabilized. In addition, representing cracks requires using two orthogonal level

set functions. As they evolve, these two functions need to be re-orthogonolized

and re-initialized to signed-distance functions (Bordas, 2003; Moes, Gravouil, and

Belytschko, 2002; Gravouil, Moes, and Belytschko, 2002).

Numerical integration of the weak form in the X-FEM is an interesting research

topic. The frequently used approach is that elements split by the discontinuities

are partitioned into subtriangles and instead of performing the integration on the

element, each subtriangle is given a large number of standard integration points.

This method, although effective, may not be the most practical nor the most

efficient for problems with non-linear material laws as pointed out in (Dolbow,

1999). The difficulty involved in the discontinuous Gauss quadrature emanates

from the singularity at the crack tip. To remove this singularity, some methods

have been developed recently such as the polar integration (Laborde et al., 2004)

or the singular mapping (Bechet, Minnebo, Moes, and Burgardt, 2005).

It is emphasized that, thanks to asymptotic enrichment, accurate results, say

SIFs, areobtained with coarse meshes, remeshing is not necessary to model crack

growth, a certain level of refinement is needed to get exact crack trajectory. The

X-FEM combined with an automatic remeshing algorithm around the crack tip is

a promising tool for complex crack simulations, especially in 3D, but is still an

open question.

Page 68: EMMC - iMechanica

54

Chapter 3

Object oriented enriched finiteelement implementation

3.1 Introduction

Numerical methods play an important role to solve a variety of problems from

those in academic environment to complex industrial ones. Powered with develop-

ments in computer softwares and hardware, domains of problems has been greatly

extended to a level where analysis of a vast variety of challenging problems are

successfully handled. To this end, software development becomes a critical issue

to manage this demand. Conventional development approaches follow procedural

techniques driven by Fortran or C programming languages. However, this tech-

nique requires high manageability costs with increasing complexity of engineering

problems. Frequent code duplications, high couplings between modules, loose con-

trol on data security, severe penalties in global code management efforts and lack of

flexibility for integrating new modules are among shortcomings of these techniques.

An alternative solution to overcome these problems is object-oriented program-

ming (OOP) that has been gaining popularity in the computational mechanics.

Page 69: EMMC - iMechanica

3.2. Object-oriented programming 55

Forde BWR (1990) laid out essential abstractions for the applications of finite el-

ement analysis, Archer(1999) have been showed the advantages of object-oriented

finite element analysis.

The goal of the thesis is to implement a reusable enriched FE code in which

the addition of new enrichment functions, for instance, is seamless. It should be

possible for a future developer to very simply add a new problem to the list of

problems that can be solved by the code.

The outline of the remainder of this chapter is as follows. Section 3.2 briefly

introduces the basic of the object oriented programming. The next section, Section

3.3 presents, in detail, the implementation of the X-FEM using an object oriented

approach. The necessary classes to be added for incorporating concepts of the

X-FEM into an available FE package is stated together with the modification of

original FE classes. This section also points out that the extension of the code, to

add new formulations, is not a major obstacle. At the end of the chapter, some

conclusions are given.

3.2 Object-oriented programming

Abstraction and Encapsulation

One of the most important characteristics of OOP is abstraction. A typical

abstraction for the finite element applications in solid mechanics can be nodes,

elements, loads, materials and nonlinear solution algorithms. Another important

merit of object modeling is encapsulation that provides a strict control on data.

Access to data is restricted to certain objects so that data management is provided

at the level of objects, not at the level of global definitions which are mostly em-

acer
下划线
Page 70: EMMC - iMechanica

3.2. Object-oriented programming 56

ployed in the procedural methods. This restrictive but efficient approach provides

a data security and stable coding environment.

Inheritance

One of the most compelling features about C++ is code reuse. There are

often two ways to accomplish this. The first is quite straightforward : we simply

create objetcs of the existing class inside the new class. This is called composition

because the new class is composed of objetcs of existing classes. For instance, a

finite element object (an instance of class Element) stores its integration points

(instances of class GaussPoint).

Another key feature of OOP is the possibility to create a new class of objects

as a specialization of an existing class. This is called inheritance. For instance, a

class for four-noded quadrilateral elements (Q4) would derive from the (so called

’base’) Element class. The Q4 class (derived class) would share with the Element

class its protected data members (for instance the array holding the list of nodes).

The derived class specializes the base class in so far as it may implement methods

(tasks) existing in the base class differently from this base class. More importantly,

the derived class may be able to perform tasks that the base class cannot (such as

computing the Jacobian matrix of the element).

Polymorphism

Polymorphism is the ability of the same pointer can be used to manipulate

objects of several different forms. A programmer may declare a pointer that can

validly point to any object from a set of classes in an inheritance tree. Using that

pointer, all such objects can be manipulated equivalently without the knowledge of

their particular class. Polymorphism is implemented in C++ with virtual functions

acer
下划线
acer
下划线
acer
下划线
Page 71: EMMC - iMechanica

3.2. Object-oriented programming 57

(declared with virtual keyword).

In fracture mechanics applications of X-FEM for instance, if a node is enriched

by the Heaviside function and its support is split by the crack (object of class

EnrichmentItem) into two parts whose areas are too small then this node should

not be enriched anymore so that the resulting matrix is not singular. This is

reflected in the following code

void Domain :: resolveLinearDependencyForEnrichment()

for(i = 1 ; i <= this -> giveNumberOfEnrichmentItems() ; i++)

this -> giveEnrichmentItem(i) -> resolveLinearDependency() ;

We just defined the method resolveLinearDependency() as pure virtual method

in the base class EnrichmentItem and only class CrackInterior implements this

method.

Template

Inheritance provides a way to reuse object code. The template feature in C++

provides a way to reuse source code. A typical example on template, more precisely,

function template is the one that returns the maximum of two values:

template <typename T>

inline T const& max (T const& a, T const&b)

return a < b ? b : a;

This template defines a family of functions that returns the maximum of two

values of arbitrary types which can be compared using the operator < .

Generic programming and STL

acer
下划线
Page 72: EMMC - iMechanica

3.2. Object-oriented programming 58

One reason for the success of C++ is that, today a large number of libraries

is available which greatly facilitate code development because they offer reliable

and well-proven components. A particularly carefully constructed library is the

Standard Template Library (STL), which has been developed at Hewlett-Packard

by Alexander Stephanov, Meng Lee, and their colleagues.

The emphasis of the STL is on data structures for containers, and the algo-

rithms that work with them. A good reference on STL is the book written by

Ulrich Breymann (Breymann, 2002).

In the present implementation, we made extensive use of the STL containers

(vector, list, valarray, map, etc.), along with their associated iterators and algo-

rithms. More importantly, we devised the so-called “function objects” or “func-

tors”. Functors are objects which behave like functions but have all the properties

of objects. They can be generated, passed as arguments, or have their state modi-

fied. The change of state allows a flexible application which, with functions, would

be only possible via additional parameters. Functors are especially useful to be

used with the STL algorithms. As an illustration, we gave here one example ex-

tracted from Breymann (2002) : Considering a sequence of numbers, the first odd

number is sought, with the criterion odd checked by means of the functor in Figure

3.1 :

class odd

public:

bool operator()(int x)return x % 2;

;

Figure 3.1: Example of a function object

acer
下划线
acer
下划线
acer
下划线
acer
下划线
acer
下划线
Page 73: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 59

A sequence of numbers is stored as std::vector<int> v. Then, to find the first

odd number, just use the STL algorithm find if :

std::vector<int>:const_iterator it =

std::find_if(v.begin(),v.end(),odd())

A great reference on C++ is the book “The C++ Programming Language”

(Stroustrup, 2002).

3.3 Object-oriented enriched finite element im-

plementation

The process of object-oriented design involves two main steps. First, the key con-

cepts in the application world need to be isolated. Second, those concepts should

be transformed into classes, i.e., building blocks that can be used to formulate

a problem in the application world. The problem at hand requires handling en-

richment of the standard Finite Element Method with a priori knowledge about

the solution to the boundary value problem. Some of the key concepts involved

in the X-FEM are enrichment items (crack, hole, inclusion, material interface,

biofilm, solid-fluid interface etc.), enrichment functions (Heaviside function and

branch functions etc.) and geometry entities (polylines, points, circles etc.) which

will be implemented through the classes EnrichmentItem, EnrichmentFunc-

tion and GeometryEntity, respectively. Numerical integration needs special

attention for enriched elements (Moes, Dolbow, and Belytschko, 1999). This is

handled through the IntegrationRule class. To have a flexible way for selec-

tion of enriched nodes (classical way or fixed enrichment area, see Section 2.3.1),

the class EnrichmentDetector was designed. The crack growth law is imple-

acer
下划线
acer
下划线
acer
下划线
acer
下划线
Page 74: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 60

mented through class CrackGrowthDirectionLaw and its derived class Max-

HoopStress whereas the rules determining the crack advance length is designed

with class CrackGrowthIncrementLaw and its derived classes FixedIncre-

ment and ParisLaw.

Besides these classes, some of the existing FE classes such as Domain, Ele-

ment, Node also needed modifications. The modification of such classes as well

as the implementation of new ones are mentioned in detail next.

3.3.1 Additional classes used to describe an enriched finiteelement problem

Enrichment items

A general X-FEM problem may hold a number of features such as cracks, holes,

material interfaces, sliding interfaces, contact interfaces, fluid-solid interfaces etc..

In our implementation, those features will be objects of class EnrichmentItem.

Such an object holds its geometry, an object of class GeometryEntity described

in Section 3.3.1, used to check whether the enrichment item interacts with a given

element, its enrichment functions, object of class EnrichmentFunction, used to

model it. The interface of the EnrichmentItem class is given in Figure 3.2.

In the present implementation, three derived classes of the base class Enrich-

mentItem were designed as shown in Figure 3.3. A 2D crack with two tips is

modeled by an object of class CrackInterior (see Figure 3.4) and two objects of

class CrackTip (see Figure 3.5). A CrackInterior object holds its tips thought

the data member myTips. The method treatMeshGeoInteractionForMyTips is used

to find elements containing these tips.

Some important data members of class CrackTip are presented. The mem-

acer
下划线
acer
下划线
acer
下划线
acer
下划线
acer
下划线
Page 75: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 61

class EnrichmentItem : public FEMComponent public:

EnrichmentItem(int,Domain*);

virtual ~EnrichmentItem();

void getGeometry();

vector< EnrichmentFunction* >* giveEnrFuncVector();

bool interactsWith(Element*);

virtual void treatEnrichment();

EnrichmentDetector* defineMyEnrDetector();

EnrichmentDetector* giveMyEnrDetector();

GeometryEntity* giveMyGeo();

vector<Element*>* giveElementsInteracWithMe();

void setListOfInteractedElements(Element*);

EnrichmentItem* typed () ;

EnrichmentItem* ofType (char*) ;

virtual void resolveLinearDependency()

virtual void updateYourGeometry();

virtual void updateEnrichment();

protected:

GeometryEntity* myGeometry;

vector<EnrichmentFunction*>* myEnrichFns ;

EnrichmentDetector* myEnrDetector;

vector<Element*>* interactedElements ;

;

Figure 3.2: The interface of class EnrichmentItem

acer
下划线
Page 76: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 62

Figure 3.3: The inheritance tree of class EnrichmentItem

Page 77: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 63

class CrackInterior : public EnrichmentItem

public:

CrackInterior(int,Domain*);

~CrackInterior();

void getMyTips();

std::vector<CrackTip*> giveMyTips();

void treatMeshGeoInteractionForMyTips() ;

void resolveLinearDependency();

void updateEnrichment();

void updateMyGeometry();

private:

std::vector<CrackTip*> myTips;

;

Figure 3.4: C++ header file of a 2D crack interior

Page 78: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 64

class CrackTip : public EnrichmentItem

public:

CrackTip(int,Domain*);

~CrackTip();

void computeSIFs(TimeStep* stepN);

void computeK_eq(TimeStep* stepN);

std::list<Element*> buildIntegrationDomain();

std::valarray<double> computeInteractionIntegral(TimeStep* stepN);

bool giveState()const return isActive;

void kill()isActive = false;

void crackTypeInitialization();

void crackTypeUpdate();

std::vector<Material*>* giveMatArray();

Mu::Segment* giveTipSegment();

FloatArray* computeLocalCoordOf(Mu::Point* p);

double giveRadiusOfDomainIntegration();

double giveEnrichRadius();

void resolveLinearDependency()

void updateMyGeometry();

Mu::Circle* DefineDomainForUpdatedEnrichment();

std::list<Element*> defineUpdatedElements();

void updateEnrichment();

void setMyAssociatedCrackInterior(CrackInterior* crInt);

private:

CrackType tipID;

FieldType field;

std::vector<Material*>* matArray;

double K_i,K_ii,K_eq ;

Mu::Segment* tipSegment ;

bool isActive;

CrackInterior* myAssociatedCrackInterior ;

Mu::Circle* makeBall();

;

Figure 3.5: C++ header file of a 2D crack tip

Page 79: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 65

ber myAssociatedCrackInterior stores the associated crack interior of this tip. A

CrackTip object uses this member to update the geometry, the list of interacted

elements of its associated crack interior. The stress intensity factors ( of mode I,

mode II and the equivalent SIF) are stored in K i, K ii, K eq .

For crack growth problems and especially multiple crack growth problems, a

crack tip could be no longer a tip (not an object of class CrackTip anymore)

whenever it reaches a free boundary or another crack. To do this, the member bool

isActive was implemented. Initially, this member is set to true. After the crack

grows, its tips’s positions are checked and if these tips touch one free boundary,

for instance, their isActive are set to false.

The key method of class CrackTip is the one to compute the interaction inte-

gral, computeInteractionIntegral(TimeStep*). The pseudo code is given in Figure

3.6.

valarray<double> CrackTip::computeInteractionIntegral(TimeStep* stepN)

detection of the elements on which we integrate

loop over these elements

loop over Gauss points

computation of displacement, stress, strain in local coordinates

computation of the auxiliary fields

computation of I1 and I2

end of loop on GPs

end of loop on elements

Figure 3.6: Computation of the interaction integral

Page 80: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 66

Enrichment functions

This class implements specific functions holding a priori knowledge about the solu-

tion (branch functions for linear elastic fracture mechanics) or particular functions

used to model the discontinuities (Heaviside function for displacement discontinu-

ity and ramp function for strain discontinuity).

class EnrichmentFunction : public FEMComponent public:

EnrichmentFunction(Domain*,int);

~EnrichmentFunction();

virtual double EvaluateYourSelfAt(Mu::Point*)return NULL;

virtual FloatArray* EvaluateYourGradAt(Mu::Point*)return NULL;

void setMyEnrichmentItem(EnrichmentItem*);

void findActiveEnrichmentItem(EnrichmentItem*);

EnrichmentFunction* typed();

EnrichmentFunction* ofType(char*);

char* giveClassName (char* s)

return strcpy(s,"EnrichmentFunction");

protected:

int number;

std::vector<EnrichmentItem*> *myEnrItems;

EnrichmentItem *activeEnrItem;

;

Figure 3.7: Interface of class EnrichmentFunction

An object of class EnrichmentFunction should know how to evaluate itself

(EvaluateYourSelfAt(Point*)) and its gradient (EvaluateYourGradAt(Point*)) at

a given point in space. It can do this through the geometry and the nature of the

enrichment item with which it is associated. A crack tip, for instance, knows which

Page 81: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 67

coordinate system to use to compute the asymptotic enrichment functions through

its geometry. If several instances of the same enrichment item are to be modelled

in the same problem (for instance, multiple cracks problem), it can happen that

some nodes be enriched with two identical enrichment functions, belonging to two

different enrichment items. Consequently, we chose to tell each enrichment item

know which enrichment function it is associated with, and vice versa. Therefore, an

object of class EnrichmentFunction must hold a list of objects of Enrichmen-

tItem being modeled by this enrichment function. The member data myEnrItems

( see Figure 3.7) was designed for this purpose. The enrichment functions are being

computed for which EnrichmentItem? To answer this question, we designed the

member data activeEnrItem.

The EnrichmentFunction class serves as an interface to the code, because it

specifies all methods that should be implemented by an enrichment function, but

actually implements none of them (abstract class). This is a safe method to make

sure a new programmer will implement all required methods, since this check is

made at compile time.

An example of a derived class (i.e., specialized forms of enrichment functions), is

the class HomoElastCrackAsymp, which specializes into the computation of the

asymptotic crack tip fields for an homogeneous linear elastic material. For a future

programmer to add enrichment functions for, say, a Neo-Hookean material, it is

sufficient to implement a HomoNeoHookeanCrackAsym class, which will differ

from the HomoElastCrackAsymp class, by the implementation of its evaluation

methods.

acer
下划线
acer
下划线
Page 82: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 68

Figure 3.8: The inheritance tree of class EnrichmentFunction

Page 83: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 69

Numerical integration

For split elements, to exactly integrate the weak form, we need to partition the

element into subelements, to avoid ill-conditioning of the resulting system of equa-

tions. The task of class SplitGaussLegendreQuadrature lies in finding the

coordinates and weights of the quadrature points to be used to integrate the weak-

form accurately. First, the intersection points of the element edges with the geom-

etry of the enrichment item are computed. Then, they are fed into a Delaunay

mesher together with the element’s nodes. Finally, for each sub-element, the Gauss

points are obtained, and their coordinates are transformed into the parent coordi-

nate system of the split element. The pseudo code is given in Figure 3.9.

void SplitGaussLegendreQuadrature::SetUpPointsOn2dDomain(Element* e)

get the subtriangles of e

loop on these triangles

get the Gauss points for each subtriangle

convert these Gauss points into the parent coordinate system

of e

Figure 3.9: Computation of Gauss points for split elements

In order to make seamless the addition of new integration techniques, this class

is derived from an interface abstract class: IntegrationRule.

Geometry handling

In our implementation, geometries can be handled a number of ways (Standard,

Level Set, Vector Level Set). Similarly, the update of the geometry can easily be

chosen. The X-FEM is naturally coupled with the level set method (Stolarska,

Page 84: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 70

Chopp, Moes, and Belytschko, 2001; Sukumar, Chopp, Moes, and Belytschko,

2001) and, more recently, the vector level set was proposed, for crack growth prob-

lems, as a simpler alternative to the standard level set method. Standard geometry

handling for the EnrichmentItem is also possible, and used in the numerical ex-

amples, along with a Tree structure to manage both geometrical entities and finite

elements.

Each EnrichmentItem knows its geometry as an object of class Geome-

tryEntity, say myGeo. Through myGeo, the enrichment item knows whether it

interacts with an element. In turn, myGeo, through its GeometryDescription

member, knows how to perform this interaction. This piece of code is given as

follows:

bool GeometryEntity :: interactsWith(Element* e)

return this->giveMyGeoDescription()->interactsWith(e,this);

For example, for a CrackInterior represented by standard geometry (line

segments), the usual geometry predicates are used as in (Sukumar and Prevost,

2003) to check the intersection between an element and the crack.

Classes specific to the enriched nodes detection

It was shown (Laborde et al., 2004; Bechet et al., 2005) that, for linear elastic

fracture mechanics problems, enriching several layers of elements around the crack

tip increases the rate of convergence of the X-FEM and also improves the accuracy

in the computation of the Stress Intensity Factors. Therefore, a flexible X-FEM

code should allow the user to decide the criterion based on which enriched nodes

are selected. Inclusion in a ball of radius r centered at the crack tip is a possible

acer
下划线
acer
下划线
Page 85: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 71

criterion. Alternatively, the programmer/user may decide to enrich a specified

number of layers of elements around the tip element.

Similarly, only nodes belonging to an element split by a discontinuity should be

enriched with the Heaviside function, while, for biofilm problems (Bordas, 2003),

elements within the biofilm, and below a given distance from the biofilm/water

interface often need to be asymptotically enriched in order to track the boundary

layer.

The abstract class EnrichmentDetector and its derived classes serve the

purpose of making the selection of enriched nodes flexible. Abstract class Enrich-

mentDetector is designed with only one pure virtual method as follows :

class EnrichmentDetector

public:

virtual void setEnrichedNodes(EnrichmentItem *enrItem)=0;

;

It is obvious that we can not have objects of class EnrichmentDetector since

a general EnrichmentDetector does not know how to select enriched nodes.

That’s why we designed this class as an abstract class. Therefore, its derived classes

must implement the method setEnrichedNodes(EnrichmentItem*). For example,

the code to enrich nodes belong to split elements is given in Figure 3.10.

For linear elements, just enrich all of its nodes. However, for high order el-

ements, say quadratic triangular elements, the choice of which nodes should be

enriched depends on the partition of unity shape functions to be used. If linear

PUM shape functions are used, then just enrich the three corner nodes, not enrich

the three midside nodes. This is what is implemented in method setEnrichment-

ForMyNodes(EnrichmentItem *enrItem) of class Tri6 as follows

acer
下划线
Page 86: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 72

void SplitElementDetect :: setEnrichedNodes(EnrichmentItem *enrItem)

if(! (typeid(*enrItem) == typeid(CrackInterior*)) )

assert(false);

vector<Element*>* elemList = enrItem->giveElementsInteractWithMe();

for(size_t i = 0 ; i < elemList->size() ; i++)

(*elemList)[i]->setEnrichmentForMyNodes(enrItem) ;

Figure 3.10: Method setEnrichedNodes of derived class SplitElementDetect

void Tri6_U::setEnrichmentForMyNodes(EnrichmentItem *enrItem)

size_t intOrder =

this->giveXFEInterpolation()->giveInterpolationOrder();

if(intOrder == 1) // just enrich three corner nodes

for(size_t i = 0 ; i < 3 ; i++)

this->giveNode(i+1)->isEnrichedWith(enrItem) ;

else // enrich all nodes

for(size_t i = 0 ; i < numberOfNodes ; i++)

this->giveNode(i+1)->isEnrichedWith(enrItem) ;

acer
下划线
Page 87: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 73

class Domain

private :

List* enrichmentFunctionList ;

List* enrichmentItemList ;

List* geoEntityList ;

size_t numberOfEnrichmentFunctions ;

size_t numberOfEnrichmentItems ;

size_t numberOfGeoEntities ;

bool isFEM ;

bool isXFEM ;

CrackGrowthDirectionLaw* directionLaw ;

CrackGrowthIncrementLaw* incrementLaw ;

public :

EnrichmentItem* giveEnrichmentItem(int n);

EnrichmentFunction* giveEnrichmentFunction(int n)

GeometryEntity* giveGeoEntity(int n) ;

void solveFractureMechanicsProblem ();

void solveFractureMechanicsProblemAt(TimeStep*);

void treatMeshGeoInteractionPhase1();

void treatMeshGeoInteractionPhase2();

void treatEnrichment() ;

void resolveLinearDependencyForEnrichment();

std::map<Node*,std::vector<Element*> > buildNodalSupports();

std::map<Node*,std::vector<Element*> > giveNodalSupports();

;

Figure 3.11: Added data and methods for class Domain to account for disconti-nuities

Page 88: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 74

3.3.2 Modification of standard finite element classes

Class Domain

The domain (Zimmermann, Pelerin, and Bomme, 1992) can be considered as the

main object that contains all the problem’s components: list of nodes, elements,

materials, loads,. . . It serves as a link between the components needed to describe

the physical and numerical problem. To account for the discontinuities, the fol-

lowing data members and methods were added as shown in Figure 3.11.

The main method of this class is the solution procedure solveFractureMechanic-

sProblemAt(TimeStep* stepN) as shown in Figure 3.12. Given the aforementioned

classes of objects, solving an enriched finite element problem now reduces to han-

dling the mesh geometry interaction to find out elements that interact with the

EnrichmentItems and enrich the corresponding nodes with the approriate En-

richmentFunctions. If there are conflicts, those are resolved by the method

resolveLinearDependencyForEnrichment(). Finally, the Domain object asks its

NLSolver object to Solve() the problem using the appropriate scheme (Zimmer-

mann, Pelerin, and Bomme, 1992).

Class Element

The data members that were added for the Element class include the following:

FEInterpolation* standardFEInterpolation used as interpolation functions

for classical finite approximation.

FEInterpolation* enrichmentFEInterpolation This is finite interpolation used

to approximate the enriched fields. It was shown that using higher order

acer
波浪线
Page 89: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 75

void Domain :: solveFractureMechanicsProblemAt(TimeStep* stepN)

if (unknownArray)

delete unknownArray;

this -> treatMeshGeoInteractionPhase1();

this -> treatMeshGeoInteractionPhase2();

this -> treatEnrichment();

this -> resolveConflictsInEnrichment();

this -> resolveLinearDependencyForEnrichment();

unknownArray = this -> giveNLSolver() -> Solve();

this -> terminate(stepN) ;

Figure 3.12: Method solveFractureMechanicsProblemAt(TimeStep* stepN)

shape functions for this approximation decrease the error, but make the con-

vergence rate erratic, because of the loss of the reproducing condition in

partially enriched elements (Laborde, Pommier, Renard, and Salaun, 2004;

Chessa, Wang, and Belytschko, 2003). The current code uses the linear

interpolation.

std::list<EnrichmentItem*>* enrichmentItemListOfElem Every Enrich-

mentItem objects interacting with a given element are stored in this list.

Element e will use this list to do the partitioning for numerical integration.

bool isUpdated a marker to indicate whether a given element should recompute

its stiffness matrix when the EnrichmentItem evolves in time.

New methods are added :

Page 90: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 76

bool isEnriched();

void isEnrichedWith(EnrichmentItem *enrItem);

void treatGeoMeshInteraction();

virtual void setEnrichmentForMyNodes(EnrichmentItem*)

virtual FEInterpolation* giveFEInterpolation()return NULL;

virtual FEInterpolation* giveXFEInterpolation()return NULL;

void setUpIntegrationRule();

virtual vector<DelaunayTriangle*>* PartitionMySelf()return NULL;

virtual GaussPoint** setGaussQuadForJ_Integral()return NULL;

void setStateOfElement()isUpdated = true ;

bool isUpdatedElement()return isUpdated ;

The method isEnriched() consists in looping over the receiver’s nodes (the

current instance of the Element object), if at least one node is enriched, then the

element is enriched. The Element needs to know if it is enriched or not to correctly

compute the B matrix (equation (3.1)) and use the appropriate integration rule.

When an element is enriched by an EnrichmentItem then the method isEn-

richedWith(EnrichmentItem *enrItem) inserts enrItem into its enrichmentItem-

ListOfElem.

The definition of the elemental stiffness matrix Ke writes

Ke =

e

BT DBdVe (3.1)

To compute the stiffness matrix for both enriched and non-enriched elements,

the method computeBMatrixAt(Gausspoint *gp) was modified as shown in Figure

3.13. The first advantage of this approach is that the code to compute the stiffness

matrix of any element (enriched or not) is unchanged as shown in Figure 3.14.

Secondly, a node can be enriched with any number of enrichment functions. For

Page 91: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 77

instance, an element may be split by a crack and also contain the tip of another

crack. In this case, the nodes of this element are enriched by both the step function

(of the first crack) and the crack asymptotic functions (of the second one).

FloatMatrix* Element :: ComputeBmatrixAt(GaussPoint *aGausspoint)

Compute the standard part of B matrix, called Bu

If this element is not enriched, return Bu and stop.

Otherwise, loop on nodes, if node is enriched then

Loop on enrichment items of this node, say enrItem

Each enrItem knows which enrichment functions should be used.

Loop on these enrichment functions and calculate their

contribution to B matrix.

The final result is B = [Bu Ba]

Figure 3.13: Method ComputeBmatrixAt(GaussPoint*)

FloatMatrix* Element :: computeTangentStiffnessMatrix()

double K = 0.0 ;

for_each Gauss point, gp, in the GaussPointArray

compute the B matrix using this->ComputeBmatrixAt(gp)

compute the transpose of B, BT

compute the constitutive matrix D

compute dV = detJ*t (t is the thickness of the element)

K += BT*D*B*dV ;

end for

Figure 3.14: The unchanged method computeTangentStiffnessMatrix()

To do the element partitioning for finding Gauss points for split and tip el-

ements, method PartitionMySelf() is implemented. It is a pure virtual method,

therefore, its derived classes such as TriU, QuadU, and Tri6 have their own

implementation.

Page 92: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 78

Since the Gauss points used for the computation of the interaction integral

are different from those used in the stiffness matrices computation, the method

setGaussQuadForJIntegral() was designed. It is a pure virtual method since each

element type requires different Gauss points.

It is obvious that when EnrichmentItem objects change, for example, when

cracks grow, only some nodes and elements around the crack tip change status. The

rest of the elements are unchanged so it is not efficient to recompute their stiffness

matrices. To solve this problem, the data member isUpdated is implemented.

Initially, this member is set to false, after the crack growth, if a given element is

detected to be changed then its isUpdated is set to true. Thanks to this its stiffness

matrix is not recomputed as reflected in the method giveStiffnessMatrix() as given

in Figure 3.15.

FloatMatrix* Element :: giveStiffnessMatrix ()

if (! stiffnessMatrix)

this -> computeTangentStiffnessMatrix() ;

else if(isUpdated)

this -> computeTangentStiffnessMatrix() ;

return stiffnessMatrix ;

Figure 3.15: Method giveStiffnessMatrix() of class Element

Class Node

To handle nodal enrichment, the following data members are added to this class

int isEnriched a marker to differentiate non-enriched and enriched nodes.

Page 93: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 79

list<EnrichmentItem*>* enrichmentItemListOfNode This is the list of all

EnrichmentItem objects acting on the node.

and here are added methods

void isEnrichedWith(EnrichmentItem* enrItem);

void resolveConflictsInEnrichment();

void resolveLinearDependency(EnrichmentItem*);

int getIsEnriched()return isEnriched;

list<EnrichmentItem*>* giveEnrItemListOfNode();

A node should not be enriched with both the Heaviside function and branch

functions. Therefore, whenever the data member enrichmentItemListOfNode con-

tains objects of both classes CrackInteiror and CrackTip, one should remove

object of CrackInteiror so that this node is just enriched with branch functions.

This is performed by method resolveConflictsInEnrichment() as given in Figure

3.16.

void Node :: resolveConflictsInEnrichment()

list<EnrichmentItem*> ::iterator iter1,iter2;

iter1 = find_if(enrichmentItemListOfNode->begin(),

enrichmentItemListOfNode->end(),IsType<CrackTip,EnrichmentItem>());

iter2 = find_if(enrichmentItemListOfNode->begin(),

enrichmentItemListOfNode->end(),IsType<CrackInterior,EnrichmentItem>());

if (iter1 != enrichmentItemListOfNode->end() &&

iter2 != enrichmentItemListOfNode->end())

enrichmentItemListOfNode->remove(*iter2);

Figure 3.16: Method resolveConflictsInEnrichment() of class Node

acer
插入文本
acer
插入文本
假设派生类中如果有一个函数和父类是一样的. 当你在派生类调用这个函数的时候你怎么知道到底是调用了父类还是自己本类的呢? 用了域运算符就是调用了父类,不用就是调用自己本类.
acer
插入文本
Page 94: EMMC - iMechanica

3.3. Object-oriented enriched finite element implementation 80

template<class U,class V>

class IsType

public:

bool operator ()(V* t)

return (typeid(*t)==typeid(U))? true:false ;

;

Figure 3.17: A template functor

One can see that this method is simple and efficient thanks to the STL al-

gorithm find if and the functor IsType which implemented as shown in Figure

3.17.

For any node enriched by the Heaviside function H(x), its support is fully cut

into two disjoint pieces by the crack. If for a certain node nI , one of the two pieces

is very small compared to the other, then the function H is almost a constant over

the support, leading to an ill-conditioned stiffness matrix (Moes et al., 1999). In

this case, node nI should no longer be enriched with function H. This is exactly

what is performed by method resolveLinearDependency(EnrichmentItem*).

With enriched finite elements, the number and nature of the degrees of freedoms

(dof information) associated with a node may vary from node to node and in

addition, evolve with time. Therefore, the way to compute the number of DOFs

and the location of Dofs in the global matrix must be modified. Below are modified

classes and added classes implemented for this purpose :

size_t computeNumberOfDofs () ;

size_t giveNumberOfTrueDofs () ;

size_t giveNumberOfDofs () ;

acer
下划线
acer
下划线
Page 95: EMMC - iMechanica

3.4. Extension to new problems 81

IntArray* giveStandardLocationArray () ;

IntArray* giveEnrichedLocationArray () ;

For plane elasticity problems, the number of DOFs, nDOF , of any node is

determined by

nDOF = 2 + 2nenr (3.2)

where nenr is the number of enrichment functions used to enrich this node. nenr

is the sum of enrichment functions of every enrichment items acting on this node.

The piece of code to compute nDOF is given in Figure 3.18

3.4 Extension to new problems

This section explains how to extend the current code to include new problems. It

shows that this task can be carried out very easily. Here, assume that we want to

solve interfacial crack problems. First, the asymptotic functions associated with

this problem need to be added (Sukumar, Huang, Prevost, and Suo, 2003). To

do so, it suffices to build a new class called BiMaterialElastCrackAsymp in

which the near tip asymptotic functions for interfacial cracks are implemented.

It is emphasized that this new class is completely similar to class HomoElast-

CrackAsymp.

Finally, to compute the SIFs, we need to implement the auxiliary fields used

in the domain integral computations. Here, there are two possibilities : (1) use

inheritance, i.e., one would implement an abstract class, say AuxiliaryFields, with

pure virtual methods to compute the components of any auxiliary field and two

derived classes, one for homogeneous crack and one for interfacial crack. This ap-

Page 96: EMMC - iMechanica

3.4. Extension to new problems 82

size_t Node :: computeNumberOfDofs ()

numberOfDofs = this->readInteger("nDofs") ;

if ( isEnriched == 0 )

return numberOfDofs ;

size_t enrichedDofs = 0 ;

list<EnrichmentItem*>* enrItemList=this->giveEnrItemListOfNode();

list<EnrichmentItem*>::iterator iter ;

vector<EnrichmentFunction*>* enrFnVector ;

for(iter=enrItemList->begin();iter != enrItemList->end();iter++)

enrFnVector = (*iter)->giveEnrFuncVector();

enrichedDofs += 2 * enrFnVector->size();

numberOfDofs += enrichedDofs ;

return numberOfDofs ;

Figure 3.18: Method computeNumberOfDofs () of class Node

Page 97: EMMC - iMechanica

3.4. Extension to new problems 83

proach is simple but code is duplicated; (2) use the template technique. Following

this way, one only needs to implement a so-called template class. Below is what

should be implemented for the inheritance approach:

An abstract class for any auxiliary field:

class AuxiliaryField

virtual void ComputeComponentsOfAuxField(CrackTip* tip, Mu::Point* p,

FloatMatrix& AuxGradDisp,FloatArray& AuxEps,FloatArray&AuxStress)

;

A derived class, a specialization of class AuxiliaryField, for example, one for

homogeneous crack :

class HomoCrackAuxiliaryField

void ComputeComponentsOfAuxField(CrackTip* tip, Mu::Point* p,

FloatMatrix& AuxGradDisp,FloatArray& AuxEps,FloatArray&AuxStress);

;

Now, if we would like to solve interfacial crack, the following class should simply

be added:

class InterfacialCrackAuxiliaryField

void ComputeComponentsOfAuxField(CrackTip* tip, Mu::Point* p,

FloatMatrix& AuxGradDisp,FloatArray& AuxEps,FloatArray&AuxStress);

;

In the current implementation, we chose the template approach as given in

Figure 3.19 :

Then, when we need the auxiliary field of homogeneous crack (plane strain

condition), the following declaration suffices:

AuxiliaryField<Material,NullMaterial,PlaneStrain> *auxFieldHomo

= new AuxiliaryField<Material,NullMaterial,PlaneStrain>();

acer
下划线
Page 98: EMMC - iMechanica

3.4. Extension to new problems 84

template<class M1, class M2, const FieldType field=PlaneStrain>

class AuxiliaryField

public:

AuxiliaryField();

virtual ~AuxiliaryField();

void ComputeComponentsOfAuxField(CrackTip*,Point*,ModeType,

FloatMatrix&,FloatArray&,FloatArray&);

void ComputeComponentsOfOneMat(CrackTip* tip,Point*,ModeType,

FloatMatrix&,FloatArray&,FloatArray&);

void ComputeComponentsOfBiMat(CrackTip* tip,Point*,ModeType,

FloatMatrix&,FloatArray&,FloatArray&);

protected:

M1 *material1;

M2 *material2;

size_t giveNumberOfMaterials() const

return (size_t)(typeid(M2) != typeid(NullMaterial))+1 ;

;

Figure 3.19: Interface of class AuxiliaryField

Page 99: EMMC - iMechanica

3.5. Conclusions 85

If the auxiliary field of bimaterial crack are needed, then one declares as follows

AuxiliaryField<Material,Material,PlaneStrain> *auxFieldBiMat

= new AuxiliaryField<Material,Material,PlaneStrain>();

3.5 Conclusions

An object-oriented approach to enriched finite element methods was presented.

Issues pertaining to the modification of classic finite element classes as well as

the implementation of new classes were addressed. Based on this approach, a

C++ package for enriched finite elements has been implemented and used to solve

numerous fracture problems illustrated in Chapter 4. This package serves as a

starting package for further development of the X-FEM.

Page 100: EMMC - iMechanica

86

Chapter 4

Numerical examples

This chapter is composed of two parts. The first part presents numerical results of

the computation of the stress intensity factors (SIFs) for numerous two dimensional

linear elastic fracture mechanics benchmark problems. The convergence of SIFs

with mesh refinement as well as the influence of some of parameters involved in this

computation are also studied. The second part introduces the numerical examples

of crack growth simulation. The unstructured triangle meshes used in this thesis

are obtained with the program Gmsh (Remacle and Geuzaine, 1998) whereas the

cross triangle meshes and rectangular meshes are created by Matlab utilities from

Northwestern university. Although the stress analysis is performed with the C++

code, the post processing, for instance, displacement and stress plot is done with

Matlab.

4.1 Static crack problems

In all of the following examples, plane strain conditions are assumed through out.

The calculation of the stress intensity factors is performed with the domain form

acer
下划线
acer
下划线
Page 101: EMMC - iMechanica

4.1. Static crack problems 87

of the interaction integral as detailed in Section 2.1.4.

4.1.1 Infinite plate

Consider an infinite plate containing a straight crack of length 2a and loaded by

a remote uniform stress field σ. Along ABCD the closed form solution in terms of

polar coordinates in a reference frame (r, θ) centered at the crack tip is:

ux =2(1 + υ)√

KI

E

√r cos

θ

2

(2− 2υ − cos2 θ

2

)

uy =2(1 + υ)√

KI

E

√r sin

θ

2

(2− 2υ − cos2 θ

2

) (4.1)

where KI = σ√

πa is the stress intensity factor, υ is Poisson’s ratio and E is Young

modulus. ABCD is a square of 10 × 10 mm2, a = 100 mm; E = 107N/mm2, υ =

0.3, σ = 104N/mm2.

The geometry and finite element mesh of domain ABCD are shown in Figure

4.1. This structured triangle mesh consists of 324 elements and as one can see, the

crack geometry is not aligned with the mesh. Displacement of nodes on bottom,

right and top edges are prescribed by equation (4.1).

The Gauss quadrature for X-FEM with three-noded triangular elements is as

follows, see Figure 4.2

• Non-enriched elements : one Gauss point (GP)

• Partially tip enriched elements : thirteen Gauss points

• Partially step enriched elements : three Gauss points

Page 102: EMMC - iMechanica

4.1. Static crack problems 88

• Split and tip elements : thirteen GPs for each sub-triangle

For the computation of the interaction integral, seven Gauss points are used

for elements not cut by the crack. Elements cut by the crack are partitioned into

sub-triangles for which seven Gauss points are used (see Figure 4.4).

The deformed configuration of the plate is plotted and compared with the exact

solution as shown in Figure 4.3.

The stress intensity factors are computed using the domain form of the interac-

tion integral (see Appendix C for details). The domain size is characterized by the

local mesh spacing at the crack tip hlocal : rd = rkhlocal with rk is a scalar multiple

and hlocal is the square root of the area of the tip element. The normalized stress

intensity factors for various domain sizes are given in Table 4.1. From this result,

we observe that if the domain size is small, i.e., rk ≤ 2, then the corresponding

SIFs are incorrect. This is due to the singularity at the crack tip. When the do-

main size is big enough, rk > 2, the effect of the singularity is small, the J integral

are independent of the domain contour.

In the following, the X-FEM with fixed enrichment area scheme, see Section

2.3.1, is also studied with the purpose of finding the reasonable J-integral radius

rd for a given enrichment radius renr. The numerical model is a structured mesh of

324 elements. The enrichment radius is renr = 3hlocal ' 1.8. Any node within the

circle centered at the crack tip and radius equal to renr is enriched by the branch

functions (see Figure 4.5). The mode I SIF was computed with various rd. From

Figure 4.6, one can observe that, to get good results, the domain radius rd should

be chosen equal or greater than the enrichment radius renr.

The von Mises stress contour is plotted in Figure 4.7. To get this relatively

Page 103: EMMC - iMechanica

4.1. Static crack problems 89

(a)

A B

CD

(b)

Figure 4.1: Infinite cracked plate under remote tension: (a) Geometry and loads; (b) discretization around the crack tip, nodes labeled with a circle are enrichedwith the step function and nodes indicated with a square are enriched with thebranch functions.

Page 104: EMMC - iMechanica

4.1. Static crack problems 90

smooth stress contour, the very refined mesh of 28000 elements was used.

rd/hlocal 1.5 2.0 2.5 3.0 3.5 4.0 4.5KI/K

exac 0.9601 1.0085 1.0040 0.9943 0.9933 0.9934 0.9938

Table 4.1: Normalized KI values for various domain sizes.

4.1.2 Edge crack in tension

A plate of dimension 1×2 is loaded by a tension σ = 1.0 psi over the top edge and

bottom edge as shown in Figure 4.8. The displacement along the y-axis is fixed at

the bottom right corner, and the plate is clamped at the bottom left corner. The

material parameters are 103 psi for Young’s modulus and 0.3 for Poisson’s ratio.

The reference mode I SIF as given in Tada, Paris, and Irwin (1973) is:

KI = F(a

b

)σ√

πa (4.2)

where a is the crack length, b is the plate width, and F(

ab

)is an empirical function.

For a/b ≤ 0.6, the function F is:

F

(a

b

)= 1.12− 0.231

(a

b

)+ 10.55

(a

b

)2

− 21.72

(a

b

)3

+ 30.39

(a

b

)4

(4.3)

with a = 0.45, the reference stress intensity factor is 2.8766.

The stress intensity factor is computed for various discretizations and domain

sizes and tabulated in Table 4.2. One can conclude, based on this table, that the

SIFs are independent of the choice of the domain size rd > 2hlocal, where hlocal is

the crack tip element size. Although the obtained SIFs are relatively good with

Page 105: EMMC - iMechanica

4.1. Static crack problems 91

(a)

(b)

Figure 4.2: Gauss points used in the numerical computation of the stiffness matri-ces

Page 106: EMMC - iMechanica

4.1. Static crack problems 92

2 4 6 8 10

−4

−2

0

2

4

6

8

10

12

14

XFEM deformed configuration

2 4 6 8 10

−4

−2

0

2

4

6

8

10

12

14

Exact deformed configuration

Figure 4.3: Comparison of the deformed mesh.

Page 107: EMMC - iMechanica

4.1. Static crack problems 93

Crack Tip

Figure 4.4: Elements used to compute the interaction integral (rd = 3hlocal). Thestars are Gauss points to numerically compute the integral.

Crack tip

Figure 4.5: X-FEM with fixed enrichment area, X-FEM-f.a. Enrichment radius isrenr = 3hlocal.

Page 108: EMMC - iMechanica

4.1. Static crack problems 94

0.5 1 1.5 2 2.5 3 3.50.93

0.94

0.95

0.96

0.97

0.98

0.99

1

J integral radius rd

Nor

mal

ized

KI

Figure 4.6: Normalized KI versus J-integral radius rd.

Page 109: EMMC - iMechanica

4.1. Static crack problems 95

Figure 4.7: The von Mises stress contours.

Page 110: EMMC - iMechanica

4.1. Static crack problems 96

(a)

(b) (c)

Figure 4.8: Edge-cracked plate in tension: (a) Geometry and loads; (b) finiteelement mesh; and (c) zoom on the crack area; note that only nodes of tip-elementare enriched with the branch functions.

Page 111: EMMC - iMechanica

4.1. Static crack problems 97

such coarse meshes, it can be seen that the accuracy is not good irrespective of the

fineness of the mesh. Blending elements (see Section 2.3.3) contribute to decreasing

the rate of convergence.

Table 4.2: Normalized KI values for various discretizations and domain sizes.

MeshNum. rd/hlocal

elements 1.5 2.0 2.5 3.0 3.5 4.0 4.5Mesh1 608 0.9659 0.9427 0.9422 0.9395 0.9399 0.9428 0.9412Mesh2 2808 0.9642 0.9668 0.9748 0.9688 0.9671 0.9672 0.9689Mesh3 5664 1.0212 1.0286 0.9854 0.9844 0.9784 0.9798 0.9820

The X-FEM using fixed enrichment area is examined with the purpose of finding

the optimal J-integral radius rd for a given enrichment radius renr. The finite

element mesh used is a structured triangular mesh consisting of 680 elements and

the enrichment radius renr = 0.2. All nodes belonging to the circle centered at the

crack tip with radius renr are enriched with the branch functions, see Figure 4.9.

The normalized stress intensity factors are computed for various J integral radii

rd. Table 4.3 shows again that the J integral radius rd should be chosen equal or

greater than the enrichment radius renr to get good SIFs.

Table 4.3: Normalized KI values for domain sizes using normal enrichment andfixed enrichment area .

rd/hlocal 1.5 2.0 2.5 3.0 3.5 4.0 4.5rd 0.0860 0.1434 0.1721 0.2008 0.2294 0.2868 0.3155

X-FEM 0.9649 0.9427 0.9369 0.9395 0.9366 0.9411 0.9401X-FEM-f.a. 0.8788 0.9525 0.9745 0.9746 0.9739 0.9561 0.9560

The stress intensity factors for various crack lengths are computed using nor-

mal enrichment and fixed enrichment area. It is emphasized that only one mesh

Page 112: EMMC - iMechanica

4.1. Static crack problems 98

Figure 4.9: Fixed enrichment area scheme. Circled nodes are enriched with H(x)whereas squared nodes are enriched by the branch functions.

(structured triangular mesh of 2802 elements) is used for all crack lengths. The

enrichment domain is the circular patch of radius renr = 3 × hlocal = 0.1. The

domain sizes for the J integral computation are rd/hlocal = 5.0, and 3.5 for normal

enrichment and fixed area enrichment, respectively. Figure 4.10 shows good agree-

ment between the numerical solution and the reference solution, especially results

obtained with the X-FEM using fixed enrichment area.

To check the convergence of the X-FEM, the stress intensity factors are com-

puted for various structured meshes. The standard enrichment scheme was used

(only the nodes of the tip-element are enriched with the branch functions). The

domain size is rd = 3hlocal for all meshes. The result is given in Table 4.4 and also

plotted in Figure 4.11. From this figure, one could observe that, although the re-

sult is converged, the convergence rate is very slow when the mesh is fine. It is due

to the blending elements (partially enriched elements), see Section 2.3.3. Another

possible reason is that the domain size used to compute the SIFs is proportional to

Page 113: EMMC - iMechanica

4.1. Static crack problems 99

0.2 0.25 0.3 0.35 0.4 0.451

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

Crack length a

KI

X−FEMX−FEM−f.a.Exact

Figure 4.10: SIFs of various crack lengths.

tip-element’s size hlocal which makes it small for very refined meshes. To improve

the rate of convergence, we could use one of the following methods : high order

elements (not yet implemented) ; the X-FEM with fixed enrichment area (refer to

Laborde et al. (2004), Bechet et al. (2005)); the domain size should be fixed for all

meshes. In this way, the enriched area is independent of the mesh size during mesh

refinement, which improves the convergence rate, as is also shown in S. Bordas and

Chopp (2005).

4.1.3 Edge crack under shear stress

A plate is clamped on the bottom edge and loaded by a shear traction τ = 1.0 psi

over the top edge as shown in Figure 4.12. The material parameters are 3×107psi

for Young’s modulus and 0.25 for Poisson’s ratio. The reference mixed mode stress

Page 114: EMMC - iMechanica

4.1. Static crack problems 100

Table 4.4: Convergence of SIF of an edge crack plate in tension

Num. nodes KI KexactKI −Kexact

Kexact

(%)

332 2.7026 2.8766 6.04881462 2.7869 2.8766 3.11832916 2.8317 2.8766 1.56096186 2.8545 2.8766 0.76728080 2.8568 2.8766 0.690111546 2.8642 2.8766 0.4328

0 2000 4000 6000 8000 10000 120000

1

2

3

4

5

6

7

number of nodes

rela

tive

erro

r of

KI (

%)

Figure 4.11: Convergence of KI of edge cracked plate in tension.

Page 115: EMMC - iMechanica

4.1. Static crack problems 101

intensity factors as given in J Yau, and Corten (1980) are:

KI = 34.0 psi√

in

KII = 4.55 psi√

in

(4.4)

Figure 4.12: Geometry and load of the shear edge crack problem

In this example, the effects of the mesh refinement, the domain independence of

Page 116: EMMC - iMechanica

4.1. Static crack problems 102

(a) Structured mesh (b) Unstructured mesh

(c) Structured mesh, zoom oncrack area

(d) Unstructured mesh, zoom oncrack area

Figure 4.13: Finite element meshes used for shear edge crack problem.

Page 117: EMMC - iMechanica

4.1. Static crack problems 103

the J integral, and fixed enrichment area scheme are studied on the mixed mode

SIFs. Firstly, the domain independence of the J integral computation is studied

with both structured mesh and unstructured mesh. The structured mesh consists

of 3280 triangle elements, while unstructured mesh consists of 4379 elements as

shown in Figure 4.13. In the table of result which follows, these meshes are denoted

by struct and unstr. From Table 4.5, one can easily see the independence of the

SIFs with respect to the domain contours used.

Table 4.5: Normalized SIFs F1 = KI/34 and F2 = KII/4.55 for various meshesand domain sizes.

MeshNormalized rd/hlocal

SIFs 1.5 2.0 2.5 3.0 3.5 4.0

structF1 0.9900 0.9900 0.9645 0.9641 0.9664 0.9592F2 1.0076 1.0076 0.9815 0.9796 0.9788 0.9850

unstrF1 1.0053 0.9856 0.9844 0.9768 0.9788 0.9767F2 0.9504 1.0336 1.0176 1.0096 0.9933 0.9919

The convergence of the stress intensity factors is studied for this example. The

stress intensity factors are computed for various structured meshes with a domain

size of rd = 3hlocal. The result is tabulated in Table 4.6 and also illustrated in

Figure 4.14. From this figure, one can, one more time, observe that, although the

result is converged, the convergence rate is very slow when the mesh is fine.

This example is solved again but with uniform Q41 meshes as shown in Figure

4.15. The purpose is: (1) to present the Gauss quadrature rules used for rectangu-

lar Q4 mesh and (2) to analyze the influence of the location of the crack tip with

respect to the mesh on the values of the computed SIFs.

The Gauss quadrature for X-FEM with Q4 elements is as follow, see Figure

1four-noded quadrilateral elements

Page 118: EMMC - iMechanica

4.1. Static crack problems 104

Table 4.6: SIFs results of an edge crack plate under shear.

Num. KIKI − 34

34(%) KII

KII − 4.55

4.55(%)

elements352 28.6171 15.83 4.3005 5.481176 31.5152 7.31 4.3992 3.313280 32.7794 3.59 4.4572 2.046936 34.0952 0.28 4.5837 0.7410736 34.0272 0.08 4.5559 0.1320032 33.9251 0.22 4.5180 0.70

0 2000 4000 6000 8000 10000 120000

2

4

6

8

10

12

14

16

number of nodes

rela

tive

erro

r of

KI (

%)

Figure 4.14: Convergence of KI of shear edge crack

Page 119: EMMC - iMechanica

4.1. Static crack problems 105

(a) Tip falls within ele-ment (27x48)

(b) Tip touches elementedge (28x48)

(c) zoom on crack area for left mesh (d) zoom on crack area for right mesh

Figure 4.15: Uniform Q4 finite element meshes used for shear edge crack problem.

Page 120: EMMC - iMechanica

4.1. Static crack problems 106

Tip

sub−triangle

(a) Tip touches element edge

Tip

(b) Tip falls within element

Figure 4.16: Gauss points used for Q4 elements : (a) Tip element is partitionedinto four sub-triangles; and (b) Tip element is decomposed into five sub-triangles.For split elements, four sub-triangles are built and 13 GPs were used for eachsub-triangle.

Page 121: EMMC - iMechanica

4.1. Static crack problems 107

4.16 :

• Non-enriched elements : standard 2× 2 Gauss points (GP)

• Partially tip enriched elements : 3× 3 Gauss points

• Partially step enriched elements : 2× 2 Gauss points

• Split elements : thirteen GPs for each sub-triangle, the total number of GP

is 13× 4 = 42

• Tip elements : if the tip falls within an element, five sub-triangles are built

and thirteen GPs used for each sub-triangle. Therefore, the total number

of GP is 13 × 5 = 65. If the tip touches an element edge, then, to have

enough GPs for the numerical integration, this element is partitioned into

four triangles (the center of element is used in the Delaunay triangulation).

The total GPs are 13× 4 = 42.

For the computation of the interaction integral, 3 × 3 Gauss quadrature rule is

used for elements not cut by the crack. Split elements are decomposed into 4

sub-triangles in which 13 GPs are used. The stress intensity factors are computed

for various discretizations. The domain size is rd = 3hlocal for all meshes. The

results are given in Table 4.7 allow us conclude that the X-FEM is robust, i.e., the

location of the crack tip with respect to the mesh (here we examined two cases,

the tip falls within element and the tip touches element edge) has no considerable

impact on the results.

Probably, similar results could be obtained for a crack aligned with element

edges. Our present implementation does not allow the crack to be aligned with

Page 122: EMMC - iMechanica

4.1. Static crack problems 108

Table 4.7: Normalized SIFs of shear edge crack with Q4 elements

mesh F1 F2

28 x 48 0.9734 0.991527 x 48 0.9942 0.993948 x 96 0.9894 0.992947 x 96 0.9981 0.9967

element edges. This is a limitation of the code and will be improved in the near

future.

4.1.4 Center-crack in tension

Considering a finite plate with a center crack in tension. The geometry of the plate

is described in Figure 4.17. The analitycal stress intensity factors for this problem

are:

KI = σ

√(πasec

(πa

2w

))KII = 0 (4.5)

where a is the half crack length and w = W/2 is the half width of the plate, and

σ is the tensile load applied at the top of the plate.

In Figure 4.18, the structured and unstructured meshes used for the analysis

are illustrated. The symmetry was not taken into account to verify the same

behavior of two crack tips. The SIFs obtained with structured meshes of 836,

3572, and 10800 elements are tabulated in Table 4.8 and the SIFs computed with

unstructured meshes are given in Table 4.9. It is important to mention that the

difference between the stress intensity factors computed at the two crack tips is

below 0.5%.

The next part of this example is about the fixed enrichment area. Both

Page 123: EMMC - iMechanica

4.1. Static crack problems 109

Figure 4.17: Geometry and loads of a center-cracked plate in tension

Table 4.8: Normalized SIFs for center cracked plate in tension (structured mesh)

Num. rd/hlocal

elements 1.5 2.0 2.5 3.0 3.5 4.0

836tip1 1.0759 1.0520 1.0611 1.0686 1.0874 1.1292tip2 1.0759 1.0520 1.0611 1.0686 1.0874 1.1292

3572 tip1 1.0110 0.9770 0.9907 0.9907 0.9922 0.986810800 tip1 0.9736 1.0003 0.9980 0.9976 0.9973 0.9940

Page 124: EMMC - iMechanica

4.1. Static crack problems 110

(a) (b)

(c)

Figure 4.18: Finite element meshes for the center-cracked plate in tension: (a)Structured mesh ; (b) Unstructured mesh and (c) unstructured mesh (vicinity ofthe crack)

Page 125: EMMC - iMechanica

4.1. Static crack problems 111

Table 4.9: Normalized SIFs for center cracked plate in tension (unstructured mesh)

Num. rd/hlocal

elements 1.5 2.0 2.5 3.0 3.5 4.0

906tip1 0.9754 0.9826 0.9826 0.9782 0.9754 0.9777tip2 1.0286 0.9857 0.9834 0.9837 0.9810 0.9830

3314tip1 1.0108 0.9977 0.9927 0.9930 0.9902 0.9908tip2 1.0107 0.9983 0.9944 0.9888 0.9909 0.9927

11218tip1 1.0161 1.0138 0.9945 0.9948 0.9968 0.9957tip2 1.0047 1.0046 0.9952 0.9906 0.9926 0.9942

structured and unstructured meshes are investigated. The enrichment radius is

renr = 3hlocal. From Table 4.10, one more time, we observe that to get good SIFs,

the domain radius rd should be chosen equal or greater than the enrichment radius

renr.

The convergence of the stress intensity factors is examined with unstructured

meshes. The normal enrichment scheme was used. The domain size is rd = 3hlocal

for all meshes. The result is tabulated in Table 4.11 and also illustrated in Figure

4.19. From this figure, one can observe that, although the result is converged, the

convergence rate is very slow when the mesh is fine.

Table 4.10: Center cracked plate using the fixed enrichment area (renr = 3hlocal)

MeshNum. rd/hlocal

elements 1.5 2.0 2.5 3.0 3.5struct 3572 0.9493 0.9926 1.0042 1.0042 0.9998

unstr 3314tip1 0.9575 0.9754 0.9968 1.0085 1.0042tip2 0.9702 0.9766 0.9976 1.0058 1.0008

Page 126: EMMC - iMechanica

4.1. Static crack problems 112

Table 4.11: SIFs convergence of the center cracked plate

Num. Kexact crack tipsnodes tip1 tip2

KIKI−Kexact

Kexact(%) KI

KI−Kexact

Kexact(%)

198 0.9220 0.9783 5.60 0.9783 6.11488 0.9220 0.9019 2.18 0.9070 1.63579 0.9220 0.9101 1.29 0.9085 1.461713 0.9220 0.9156 0.69 0.9116 1.132555 0.9220 0.9146 0.80 0.9145 0.815716 0.9220 0.9172 0.52 0.9134 0.9310005 0.9220 0.9207 0.14 0.9207 0.16

0 2000 4000 6000 8000 10000 120000

1

2

3

4

5

6

number of nodes

rela

tive

erro

r of

KI (

%)

Figure 4.19: Convergence of KI of center cracked plate in tension

Page 127: EMMC - iMechanica

4.1. Static crack problems 113

4.1.5 Inclined crack in tension

To illustrate the versatility and effectiveness of the X-FEM, stress intensity factors

are calculated for a plate with an angled center crack shown in Figure 4.20. The

plate is subjected to a far field uniaxial stress as shown. In this example, KI and

KII are obtained as a function of the crack angle β for a structured triangular

mesh. It is emphasized that the same mesh shown in Figure 4.21, is used for all

angles considered.

Figure 4.20: Inclined crack in tension

In this example, the plate dimensions are taken to be W = 10 in. with a half

crack length of a = 0.5 in. As the plate dimensions are large in comparison to

Page 128: EMMC - iMechanica

4.1. Static crack problems 114

(a) The fixed mesh used for all angles β

(b) Enriched nodes for β = 45o

Figure 4.21: Coarse structured mesh of 1520 elements for inclined crack problem

Page 129: EMMC - iMechanica

4.1. Static crack problems 115

the crack length, the numerical solution can be compared to the solution for an

infinite plate. For the load shown, the exact stress intensity factors are given by

(Sih et al.,1962)

KI = σ√

πa cos2 β, KII = σ√

πa sin β cos β (4.6)

Numerical results for the SIFs are obtained for β = 15o, 30o, 45o, 60o, 70o, and

domain independence of the J integral computation is also studied. In Table 4.12,

the normalized SIFs are compared to the exact solution. Excellent agreement

between the numerical solution and the exact solution is obtained. However, also

from this table, one can observe that with rd/hlocal = 3.0 and 3.5, the obtained

SIFs are not good. The reason for this is that the domain size is big enough to

include the tip-element as shown in Figure 4.22.

The SIFs are also computed for other angles with the domain size used in the

interaction integral computation is rd = 2.5hlocal and plotted in Figure 4.23. The

result shows excellent agreement with the exact solution for the entire range of β.

The convergence of the stress intensity factors is examined with structured

meshes for β = 45o. The standard enrichment scheme was used and the domain

size was rd = 3hlocal for all meshes. The result is given in Table 4.13 and also

illustrated in Figure 4.24. Again, one can notice that the convergence rate is very

slow. The reason for this is most likely the fact that the area of the enrichment

zone decreases with mesh size.

Page 130: EMMC - iMechanica

4.1. Static crack problems 116

Table 4.12: Normalized SIFs for the inclined crack problem

β SIFs ExactX-FEM

rd/hlocal = 1.5 2.0 2.5 3.0 3.5

15o

KI

σ√

πa0.9330 0.9313 0.9316 0.9312 0.9791 0.9882

KII

σ√

πa0.2500 0.2760 0.2512 0.2489 0.2607 0.2613

30o

KI

σ√

πa0.7500 0.7232 0.7486 0.7484 0.7787 0.7770

KII

σ√

πa0.4330 0.4028 0.4413 0.4413 0.4455 0.4427

45o

KI

σ√

πa0.5000 0.4836 0.4897 0.5010 0.5159 0.5132

KII

σ√

πa0.5000 0.4767 0.5009 0.5022 0.5132 0.5108

60o

KI

σ√

πa0.2500 0.2000 0.2581 0.2549 0.2582 0.2596

KII

σ√

πa0.4330 0.3783 0.4406 0.4366 0.4563 0.4547

75o

KI

σ√

πa0.0670 0.0589 0.0673 0.0690 0.0692 0.0689

KII

σ√

πa0.2500 0.2115 0.2526 0.2535 0.2565 0.2560

Table 4.13: Convergence of SIFs for a plate with an angle center crack

Num. nodes KIKI −Kexact

Kexact

% KIIKII −Kexact

Kexact

%

338 0.7288 16.29 0.7384 17.82578 0.6657 6.22 0.6701 6.931250 0.6242 0.40 0.6209 0.932178 0.6315 0.76 0.6262 0.083042 0.6238 0.46 0.6154 1.806050 0.6308 0.65 0.6250 0.278450 0.6299 0.51 0.6241 0.4111250 0.6282 0.24 0.6258 0.14

Page 131: EMMC - iMechanica

4.1. Static crack problems 117

Tip2

Tip1

Figure 4.22: The J integral domain contains the tip-element gave incorrect SIFsdue to the singular nature of the tip

Page 132: EMMC - iMechanica

4.1. Static crack problems 118

0 10 20 30 40 50 60 70 80 900

0.2

0.4

0.6

0.8

1

1.2

1.4

β

K1,

K2

K1 XFEMK1 ExactK2 XFEMK2 Exact

Figure 4.23: KI and KII vs. β for a plate with an angle center crack

0 2000 4000 6000 8000 10000 120000

2

4

6

8

10

12

14

16

18

number of nodes

rela

tive

erro

r of

SIF

s (%

)

KI

KII

Figure 4.24: Convergence of SIFs of inclined crack in tension

Page 133: EMMC - iMechanica

4.1. Static crack problems 119

4.1.6 Curved crack in an infinite plate

A curved crack in an infinite plate is considered. A finite plate model with a large

edge length to crack length ratio (> 10) was used as shown in Figure 4.25. The

analytical stress intensity factors, as given in Gdoutos (1979), are:

KI =σ

2

√πR sin β

[[1− sin2(β/2) cos2(β/2)] cos(β/2))

1 + sin2(β/2)+ cos(3β/2)

]

KII =σ

2

√πR sin β

[[1− sin2(β/2) cos2(β/2)] sin(β/2))

1 + sin2(β/2)+ sin(3β/2)

] (4.7)

where R is the radius of the circular arc and 2β is the subtended angle of the arc.

The computations were run for R = 4.25 and β = 28.0725o. The reference stress

intensity factors are then KI = 2.0146 and KII = 1.1116.

In order to capture the curvature of the crack, a relatively fine mesh (Figure

4.26a) was used together with the division of the crack into several line segments.

Here, the crack is represented by a polyline of 20 segments (see Figure 4.26b).

The stress intensity factors are computed for various domain sizes and given

in Table 4.14. One can observe that the SIFs are not independent to the domain

used. This is not surprise since the J integral is path-independent only for straight

cracks. The use of appropriate path-independent integrals for curved (circular arc-

shaped) cracks (M. Lorentzon, 2000) is required to attain domain independence in

the SIF computations.

4.1.7 Cracks emanating from circular hole in infinite plate

As a last example, considering a symmetric double crack at a circular hole of radius

r = 2 in the middle of an infinite plate as shown in Figure 4.27. The reference

Page 134: EMMC - iMechanica

4.1. Static crack problems 120

Figure 4.25: Curved crack in an infinite plate in tension

rd/hlocal KIError on KI KII

Error on KII Error on Keq

(%) (%) (%)1.5 2.0876 3.62 1.0882 2.10 4.182.0 2.0656 2.54 1.1039 0.69 2.632.5 2.0650 2.50 1.1090 0.24 2.513.0 2.0529 1.90 1.1510 3.54 4.023.5 2.0443 1.48 1.1808 6.22 6.394.0 2.0122 0.12 1.2516 12.59 12.594.5 2.0100 0.23 1.2545 12.85 12.855.0 2.0000 0.72 1.2769 14.87 14.895.5 1.9893 1.26 1.2917 16.20 16.256.0 1.9883 1.30 1.2976 16.73 16.78

Table 4.14: Stress intensity factors of curved crack problem

Page 135: EMMC - iMechanica

4.1. Static crack problems 121

(a)

(b)

Figure 4.26: Discretization of the plate: (a) Uniform mesh consisting of 9900elements; and (b) Zoom around crack area

Page 136: EMMC - iMechanica

4.1. Static crack problems 122

solution used here is given in (Abdel-Rahman Ragab, 1999):

KI =

(r

a+ 1

)1/2

σ√

πa with a > 0.12r (4.8)

for a = 1 and with the above data, the reference mode I stress intensity factor

is KI = 3.06998. Note that the expression given by equation (4.8) is just an

approximation.

Figure 4.27: Symmetric double crack at a circular hole in an infinite plate

The traction boundary conditions are applied on the bottom and top edges

and the plate is adequately restrained to preserve the symmetry of the problem

while avoiding rigid body motion. The domain size used to compute the SIFs is

Page 137: EMMC - iMechanica

4.1. Static crack problems 123

rd = 5 ∗ hlocal. The result given in Table 4.15 shows the same behavior of the two

crack tips. The obtained SIF is not good (relative error about 5%). The result

will be improved with finer mesh.

(a) (b)

Figure 4.28: Cracks emanating from circular hole: (a) Unstructured mesh consist-ing of 10216 elements; and (b) zoom on the crack area

Table 4.15: Stress intensity factors of cracks emanating from hole problem.

Num. Kexact crack tipsnodes tip1 tip2

KIKI−Kexact

Kexact(%) KI

KI−Kexact

Kexact(%)

5212 3.0699 3.2472 5.76 3.2521 5.94

Page 138: EMMC - iMechanica

4.1. Static crack problems 124

(a) (b)

Figure 4.29: Deformed configuration of cracks-hole problem

sigmaxx

0

5

10

15

20

25

30

35

40

45

50

(a)

Equivalent von Mises stress

10

20

30

40

50

60

70

80

(b)

Figure 4.30: Zoom of the stress σxx and von Mises stress contours near the hole.

Page 139: EMMC - iMechanica

4.2. Crack growth problems 125

4.2 Crack growth problems

This section will illustrate the main advantage of the X-FEM over other numerical

methods for crack growth simulations. This is the ability to model crack growth

without remeshing. Examples given here are only quasi-static crack growth prob-

lems. However, note that it is not a limitation of the X-FEM. Dynamic crack

growth with X-FEM was studied in Chen and Belytschko 2003. It is also empha-

sized that the current implementation does not allow cracks to intersect as they

grow. Again, it is not a drawback of the X-FEM. Multiple crack growth simulation

using X-FEM which allows intersecting cracks was examined in the work of Budyn

(2004).

4.2.1 Growth of an edge crack in tension

As the first example on numerical simulation of crack growth, considering the edge

cracked plate in tension (see Section 4.1.2). All information is identical to that

example except for the initial crack length, which is now 0.22.

The plate is modeled by a structured triangular mesh consisting of 2808 ele-

ments. The crack growth direction is computed from the stress intensity factors

in according to the maximum hoop stress criteria. In each step, the crack grows a

distance of 0.15. The example is run for a total of four steps.

Step Tip position KI Exact SIF Error (%)1 (0.22,1.0) 1.1557 1.1803 2.082 (0.37,1.0) 2.0539 2.1000 2.193 (0.52,1.0) 3.7474 3.8607 2.934 (0.67,1.0) 7.5327 7.6784 1.90

Table 4.16: SIFs and evolution of crack tips for the edge crack

Page 140: EMMC - iMechanica

4.2. Crack growth problems 126

(a) (b)

Figure 4.31: Propagation of an edge crack in tension: (a) Initial crack ; and (b)crack path after four steps.

Page 141: EMMC - iMechanica

4.2. Crack growth problems 127

4.2.2 Inclined crack in tension

The static analysis of an angled center crack in an infinite plate was considered in

Section 4.1. The geometry and loads are given again for convenience (see Figure

4.32). For the computation, β was chosen to be 45o, the structured mesh consisting

of 1520 elements (see Figure 4.33(a)). The domain size used to compute the

interaction integral is rd = 2.5hlocal. The example is run for a total of four steps.

The crack increment length for each step is 0.38. We can see in Figure 4.33(b)

that the crack grows at both tips symmetrically towards the preferential growth

direction, mode I. Similar results were obtained in Stolarska, Chopp, Moes, and

Belytschko (2001). Note that these good results were obtained for the very coarse

mesh of Figure 4.33, featuring only two elements along the crack length, which is

quite remarkable.

4.2.3 Double cantilever beam

In Figure 4.34, a double cantilever beam (DCB) is illustrated. The specimen

dimensions are 6 × 2, and the initial pre-crack with length of a = 2.05 is placed

slightly above the mid-plane of the beam. The material properties are taken to

be E = 100, and ν = 0.3, the load P is taken to be 1. By symmetry, a crack on

the mid-plane of the plate is under pure mode I, and it would propagate straight

ahead. However, this crack path is unstable, small perturbations in either loading

or crack geometry trigger curvilinear crack growth.

Quasi-static crack growth is governed by the maximum hoop stress criterion,

and the crack growth increment is ∆a = 0.15. In Figure 4.36, a representative

Page 142: EMMC - iMechanica

4.2. Crack growth problems 128

Figure 4.32: Inclined crack in tension

Page 143: EMMC - iMechanica

4.2. Crack growth problems 129

(a) (b)

Figure 4.33: Propagation of an inclined crack in tension: (a) Initial crack; and (b)crack path after four steps.

simulated crack growth for 11 steps is shown. The specimen was discretized by

a structured mesh consisting of 1200 elements (see Figure 4.35). The SIFs are

computed with domain size taken to be of rd = 2.5hlocal. The simulated crack

path qualitatively agrees with published results, for example, ones of (Belytschko

and Black, 1999).

Figure 4.34: Geometry-loads of a double cantilever beam speciment

Page 144: EMMC - iMechanica

4.2. Crack growth problems 130

(a)

Crack

(b)

Figure 4.35: Fixed structured mesh used for the crack growth simulation of a DCB:(a) overall view ; (b) zoom on the crack area (the crack is placed slightly abovethe mid-plane of the beam)

Figure 4.36: Curvilinear crack growth in double cantilever beam specimen

Page 145: EMMC - iMechanica

4.2. Crack growth problems 131

Parameters which effect the accuracy of the simulated crack path are (1) mesh

refinement; (2) the domain size rd = rkhlocal; and (3) the crack growth increment

∆a. A series of computations were performed to study these effects. The numerical

results are illustrated in Figure 4.37. In Figure 4.37a, crack growth paths obtained

with four different crack growth increments are presented (1200 elements, hlocal =

0.1). From this figure, it is observed that to get a converged crack path, the crack

increment length should be between about half the element size hlocal and one and

half times the element size, i.e., 0.5hlocal < ∆a < 1.5hlocal. It is obvious that the

crack increment length should be smaller than an upper limit (1.5hlocal) since we

are modeling a curve by straight segments. Accuracy is improved by using smaller

∆a’s. However, if the crack increment is too small compared to the element size,

multiple changes in the direction of the crack path may occur. In addition, the

element partitioning for numerical integration also becomes time consuming.

As pointed out in the example of the curved crack problem, the J integral is not

path-independent for curved cracks. Therefore, the domain size rd also effects the

simulated crack path. This effect is shown in Figure 4.37(b). Although the effect

of the domain size is small, the adoption of appropriate path-independent integrals

for curved cracks is necessary for improvements in the crack growth capabilities of

the X-FEM.

The influence of mesh refinement on the simulated crack path is examined using

four different meshes. Results shown in Figure 4.37c allow us to conclude that, for

a sufficiently refined mesh, the crack path is not mesh-sensitive.

Page 146: EMMC - iMechanica

4.2. Crack growth problems 132

∆ a = 0.075∆ a = 0.15∆ a = 0.20∆ a = 0.25

(a)

rk = 2.0

rk = 2.5

rk = 3.0

rk = 3.5

(b)

1.8 2 2.2 2.4 2.6 2.8 3 3.20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1 324 elements896 elements1200 elements4800 elements

(c)

Figure 4.37: Parametric study of simulated crack paths in double cantilever beamspecimen: (a) influence of crack growth increment ∆a (1200 elements, rk = 2.5);(b) influence of domain radius (1200 elements, ∆a = 0.15); and (c) influence ofmesh refinement(rk = 2.5, ∆a = 0.15)

Page 147: EMMC - iMechanica

4.2. Crack growth problems 133

4.2.4 Crack growth from a fillet

This example shows the propagation of a crack from a fillet in a structural member.

The configuration to be studied is taken from experimental work found in (Sumi,

Yang, and Wang, 1995) and shown in Figure 4.38. The purpose of this example

is to investigate the effect of the thickness of the lower I-beam on crack growth.

Only limiting cases for the bottom I-beam of a rigid constraint (very thick beam)

and flexible constraint (very thin beam) are examined.

Figure 4.38: Experimental configuration for crack growth from a fillet, taken from(Dolbow, 1999)

The structure is loaded with a traction of P = 20kN , and the initial crack

length is taken to be of a = 5mm. The computational domain is outlined by

dashed lines. This domain is discretized with 7108 three-noded triangular elements

Page 148: EMMC - iMechanica

4.2. Crack growth problems 134

(see Figure 4.39). The effects of the thickness are incorporated into the problem

through the Dirichlet boundary conditions. For a rigid I-beam, the displacement

in the vertical direction is fixed on the entire bottom edge. A flexible beam is

idealized by fixing the vertical displacement at only both endpoints of the bottom

edge. For both sets of boundary conditions, an additional degree of freedom is

fixed to prevent rigid body motions.

Figure 4.39: Fixed unstructured mesh used for the crack growth simulation

Crack growth is simulated for a total of 12 steps, with a constant crack incre-

ment length of 5mm for each step. Figure 4.39 shows the mesh in the vicinity of

the fillet and compares the crack paths for the cases of a thick I-beam and (up-

per crack) and thin I-beam (lower crack). The results are consistent with both

experimental (Sumi, Yang, and Wang, 1995) and previous numerical results us-

ing the EFG method (Fleming M. and Belytschko, 1997) and remeshing method

(Bouchard, Bay, and Chastel, 2003) (see Figure 4.41).

The examples presented here are just a few of many applications which could

be solved using the OpenXFEM++ code. Interested reader could refer to Nguyen

Page 149: EMMC - iMechanica

4.2. Crack growth problems 135

Figure 4.40: Zoom of crack paths for the case of a thick (top crack) and thin(bottom crack) I-beam.

Page 150: EMMC - iMechanica

4.2. Crack growth problems 136

Figure 4.41: Comparison between various numerical methods

Page 151: EMMC - iMechanica

4.3. Conclusions 137

et al. (2005) for more interesting crack growth problems with full treatment on

crack propagation modeling issues using the X-FEM.

4.3 Conclusions

This section presented the stress analysis of various benchmark fracture mechanics

problems using the eXtended Finite Element Method. Accurate stress intensity

factor computations (mode I and mixed-mode) were obtained for problems such

as infinite cracked plate, edge cracked plate, center cracked plate and inclined

cracked plate under uniaxial tension. Excellent domain independence in the SIF

computations was realized for straight crack problems. For curved crack problems,

a fine mesh, and an appropriate choice of domain size and crack representation

leads to good SIFs. The convergence of the method was also verified. One can

observe that, although good results were obtained with relatively coarse meshes,

the rate of convergence cam be slow. This is due to the fact that, in our convergence

studies, the enrichment radius was decreasing linearly with the mesh size.

The crack growth capabilities of the X-FEM were demonstrated through crack

growth simulations in the edge cracked plate, angled center cracked plate, double

cantilever beam specimen and crack growth from a fillet. Through these examples,

the major advantage of the X-FEM has been pointed out: crack growth simulation

without remeshing. To improve the capabilities of crack propagation simulation

of the X-FEM, two things could be explored, namely (1) the crack could be repre-

sented smoothly, i.e., not by straight segments as in the present implementation;

and (2) an appropriate path-independent integral for curved cracks should be used.

Page 152: EMMC - iMechanica

4.3. Conclusions 138

To smoothly approximate the crack, the level set method combined with high order

X-FEM has been shown to be a very efficient method (Stazi et al., 2003). The crack

growth law chosen to be implemented in the present code is the maximum hoop

stress (Erdogan and Sih, 1963) simply because it is easy to implement. It would be

interesting to compare with other criteria as in Bouchard, Bay, and Chastel 2003.

Also, the crack growth increment could valuably be made a dynamic vari-

able/parameter of the problem. For instance, the local crack tip element length

could be chosen. If the mesh were refined in the vicinity of the most critical areas

of the structures, the computational cost would be decreased, and unnecessary

growth steps avoided.

Moreover, it is obvious that coupling the X-FEM with a local remeshing tech-

nique based on some a-posteriori error estimate would allow for improved crack

paths.

acer
下划线
acer
下划线
Page 153: EMMC - iMechanica

139

Chapter 5

Conclusions and future work

5.1 Summary on the completed work

In the context of the linear elastic fracture mechanics, the enriched finite element

method, named eXtended Finite Element Method (X-FEM), was presented. The

OpenXFEM++, an flexible object oriented C++ library for X-FEM, has been

developed. The method has been successfully applied to static crack, quasi-static

crack growth problems.

To model the crack in LEFM, the classical displacement-based finite element

approximation is enriched with the discontinuous function and the linear elastic

asymptotic near-tip fields. The cracks are represented independently of the under-

lying mesh which makes the pre-processing step easier and especially, no remeshing

is required when cracks grow.

In order to build an extendable code in which new problem formulations can be

easily added, the object oriented approach was chosen. The implementation of key

classes such as EnrichmentItem, EnrichmentFunction, GeometryEntity,

IntegrationRule, EnrichmentDetector was presented. In addition, the mod-

acer
下划线
Page 154: EMMC - iMechanica

5.2. Possible lines of future work 140

ifications to the classical finite element classes such as Domain, Element, Node

were also stated. This thesis pointed out that, with the object oriented approach,

new techniques in X-FEM, for instance, new numerical integration methods, can

be incorporated without major obstacles.

The advantages and drawbacks of the code are given as follow. A major ad-

vantage of the code is that it allows problems with arbitrary enrichment items ;

the addition of new enrichment functions is easy and straightforward. Another

strength of the code is that one can use normal enrichment scheme or fixed enrich-

ment area scheme just by adjusting the input file. Although the code just works for

linear finite elements, high order X-FEM is not so difficult to implement since the

six-noded triangle element has been implemented. Some limitations of the present

implementation are : (1) the crack is represented by pure geometry not by level

sets (note that for 2D cracks it is not necessary to use level set) ; (2) the code does

not allow the cracks align with the element edge and (3) the detection of elements

intersecting with cracks is not efficient for very fined mesh.

5.2 Possible lines of future work

This thesis could be considered as a start step in the long way to learn and apply

the X-FEM to real applications. Much efforts need be done to reach this purpose,

and the followings are some of issues necessary to research.

The method has been developed here in two dimensions, and a more challenging

project would be to extend to three dimensions. Although this should not pose

major obstacles, some issues still needed to be carefully investigated:

acer
下划线
acer
下划线
acer
下划线
acer
下划线
Page 155: EMMC - iMechanica

5.2. Possible lines of future work 141

Geometry description of cracks For 3D cracks, it is obvious that the Level

Set Method(LSM) should be used. The level sets are updated by solving the

hyperbolic partial differential equations which made LSM not best suited

to complex 3D cracks. Therefore, the vector level set method developed in

(Ventura, Xu, and Belytschko, 2001) should be used since the update of the

vector level set field involves only a few geometric equations.

Plane stress and/or plane strain In all published works on 3D cracks analysis

using the X-FEM, either plane stress or plane strain condition is assumed

for the entire crack front. This is not completely true since for crack front

near the free surface, the condition is plane stress while for crack front in the

solid body, the plane strain should be used.

A key advantage of the FEM over the Boundary Element Method (BEM) is the

ability to model nonlinear material laws. The application of the X-FEM to ductile

fracture is therefore an area of considerable promise. In (Legrain, Moes, and

Verron, 2005), the X-FEM for large strain hyperelastic fracture mechanics was

developed.

Numerical integration is indeed an ongoing research topic. The method used

in this thesis requires the partition of elements interacted with the crack into

sub-triangles, then in each sub-triangle a high order Gauss quadrature must be

employed. This method, obviously , increases the computational cost a lot. The

need of a better quadrature scheme is clear. Authors in (Bechet, Minnebo, Moes,

and Burgardt, 2005) developed a very promise quadrature scheme for asymptotic

functions. Stephane Bordas proposed the transformation of the domain integral to

contour integral based on divergence theorem. This is nice idea to be exploited.

acer
下划线
Page 156: EMMC - iMechanica

5.2. Possible lines of future work 142

The X-FEM with fixed enrichment area is proved to give better results. How-

ever, what the value of enrichment radius should be is still an opening question.

To answer this question, an error estimator should be implemented. After getting

the solution at the first step, the error is estimated, then the updated value of

enrichment radius as well as the new mesh size are given (by the error estimator).

The mesh is refined automatically and the new enrichment radius is used to detect

enriched nodes. So, the better result is obtained.

Multiple cracks modeling is another interesting area where the X-FEM was

successfully applied (Budyn, 2004). However this code was written in Matlab which

makes further development very difficult. An object-oriented implementation for

multiple cracks using X-FEM is really an interesting subject.

It has been shown that it is blending elements which made the rate of con-

vergence of the X-FEM low. Therefore, incorporation of appropriate blending

elements into the present code should be done in the near future.

Concerning the computer implementation, there are a lot of improvements need

to be done, as cited below, to make OpenXFEM++ more efficient :

Better mesh database will do the mesh geometry interaction more efficient and

quickly. The task of incorporating AOMD (the Algorithm Oriented Mesh

Database) (Remacle et al., 2000) into the present code is essentially necessary.

Pre-processing The current way to build the input file is indeed a drawback of

the code (just a temporary solution). Additional work should be done to

make the pre-processing step better.

Post-processing Graphic functions of Matlab are great but plotting stress, dis-

acer
下划线
Page 157: EMMC - iMechanica

5.2. Possible lines of future work 143

placement field directly in the C++ code is, of course, more convenient.

Open GL could be a choice.

Available useful C++ libraries useful libraries available on the web which should

be used such as the Matrix Template Library (MTL), developed at Notre

Dame university, which will improve the numerical computation on matri-

ces.

acer
下划线
Page 158: EMMC - iMechanica

144

References

Abdel-Rahman Ragab, S. E. B. (1999). Engineering solid mechanics: Funda-mentals and Applications. CRC Press.

Babuska, I. and M. Rosenzweig (1972). A finite element scheme for domainswith corners. Numer. Math. 20, 1—21.

Barsoum, R. S. (1977). Triangular quarter-point elements as elastic andperfectly-plastic crack tip elements. International Journal for NumericalMethods in Engineering 11, 85–98.

Bechet, E., H. Minnebo, N. Moes, and B. Burgardt (2005). Improved implemen-tation and robustness study of the x-fem for stress analysis around cracks.International Journal for Numerical Methods in Engineering .

Belytschko, T. and T. Black (1999). Elastic crack growth in finite elementswith minimal remeshing. International Journal for Numerical Methods inEngineering 45 (5), 601–620.

Bordas, S. (2001, November). An extended finite element method for elastic andelastic-plastic cracks in complex components.

Bordas, S. (2003, December). Extended Finite Element and level set methods withapplications to growth of cracks and biofilms. Ph. D. thesis, NorthwesternUniversity.

Bouchard, P., F. Bay, and Y. Chastel (2003). Numerical crack modeling of crackpropogation:automatic remeshing and comparison of different criteria. Com-puter methods in applied mechanics and engineering .

Breymann, U. (2002). Designing Components with the C++ STL, a New Ap-proach to Programming (third ed.). Addison Wesley.

Page 159: EMMC - iMechanica

REFERENCES 145

Budyn, E. (2004, June). Multiple Crack Growth by the eXtended Finite ElementMethod. Ph. D. thesis, Northwestern University.

Chen, H. and T. Belytschko (2003). An enriched finite element method for elas-todynamic crack propagation. International Journal for Numerical Methodsin Engineering . accepted for publication.

Chessa, J. (2002, December). The Extended Finite Element Method for Free Sur-face and Two Phase Flow Problems. Ph. D. thesis, Northwestern University.

Chessa, J. and T. Belytschko (2003a). An enriched finite element method foraxisymmetric two-phase flow with surface tension. Journal of ComputationalPhysics . submitted.

Chessa, J. and T. Belytschko (2003b). The extended finite element method fortwo-phase fluids. ASME Journal of Applied Mechanics 70 (1), 10–17.

Chessa, J., P. Smolinski, and T. Belytschko (2002). The extended finite ele-ment method (x-fem) for solidification problems. International Journal ofNumerical Methods in Engineering 53, 1957–1977.

Chessa, J., H. Wang, and T. Belytschko (2003). On the construction of blendingelements for local partition of unity enriched finite elements. InternationalJournal of Numerical Methods in Engineering 57, 1015–1038.

Chopp, D. L. and N. Sukumar (2003). Fatigue crack propagation of multi-ple coplanar cracks with the coupled extended finite element/fast marchingmethod. International Journal of Engineering Science 41 (8), 845–869.

Dolbow, J. E. (1999, July). An Extended Finite Element Method with Discontin-uous Enrichment for Applied Mechanics. Ph. D. thesis, Northwestern Uni-versity.

Dolbow, J. E., E. Fried, and H. Ji (2003). Chemically induced swelling of hy-drogels. Mechanics and Physics of Solids . in press.

Duarte, C. A. and J. Oden (1996). An h-p adaptive method using clouds. CompMeth Appl Mech Eng 139, 237—262.

Dunant, C., S. Bordas, P. Nguyen, A. Guidoum, and H. Nguyen-Dang (2005).Architecture trade-offs of including a mesher in an object-oriented extendedfinite element code. Computational Mechanics . in preparation.

acer
下划线
Page 160: EMMC - iMechanica

REFERENCES 146

Erdogan, F. and G. Sih (1963). On the crack extension in plates under planeloading and transverse shear. Journal of Basic Engineering 85, 519–527.

Fleming M., Y.A. Chu, B. M. and T. Belytschko (1997). Enriched element freegalerkin methods for singular fields. IJNME 40, 1483—1504.

Forde BWR, Foschi RO, S. S. (1990). Object-oriented finite element analysis.Computers and Structures 6, 1—15.

Forth, S. and W. Keat (1996). Three-dimensional nonplanar fracture modelusing the surface integral method. International Journal of Fracture 77, 243–262.

Gdoutos, E. (1979). Fracture mechanics. Boston:Kluver Academics Publisher.

Gravouil, A., N. Moes, and T. Belytschko (2002). Non-planar 3d crack growthby the extended finite element and level sets. part II: level set update. Inter-national Journal for Numerical Methods in Engineering 53, 2569–2586.

Grisvard, P. (1985). Elliptic Problems in Nonsmooth Domains. Boston: PitmanPublishing, Inc.

Ji, H., D. Chopp, and J. E. Dolbow (2002). A hybrid extended finite element /level set method for modeling phase transformations. International Journalfor Numerical Methods in Engineering 54 (8), 1209–1233.

Kanninen, M. and C. Popelar (1985). Advanced fracture mechanics, VolumeOxford Engineering Science Series. Oxford University Press.

Laborde, P., J. Pommier, Y. Renard, and M. Salaun (2004). High order ex-tended finite element method for cracked domains. International Journal forNumerical Methods in Engineering 190 (47), 6183—6200.

Legrain, G., N. Moes, and E. Verron (2005). Stress analysis around the cracktips in finite strain problems using the extended finite element method. In-ternational Journal for Numerical Methods in Engineering 63, 290—314.

M. Lorentzon, K. E. (2000). A path independent integral for the crack extensionforce of the circular arc crack. International Journal of Fracture 66, 423—439.

Page 161: EMMC - iMechanica

REFERENCES 147

Mackerle, J. (2000). Object-oriented techniques in fem and bem, a bibliography(1996-1999). Finite Elements in Analysis and Design 36, 189—196.

Melenk, J. M. and I. Babuska (1996). The partition of unity finite elementmethod: Basic theory and applications. Computer Methods in Applied Me-chanics and Engineering 139, 289–314.

Merle, R. and J. Dolbow (2002). Solving thermal and phase change problemswith the extended finite element method. Computational Mechanics 28 (5),339–350.

Moes, N., J. Dolbow, and T. Belytschko (1999). A finite element method forcrack growth without remeshing. International Journal for Numerical Meth-ods in Engineering 46, 131–150.

Moes, N., A. Gravouil, and T. Belytschko (2002). Non-planar 3d crack growthby the extended finite element and level sets. part I: Mechanical model.International Journal for Numerical Methods in Engineering 53, 2549–2568.

Moran, B. and C. F. Shih (1987). Crack tip and associated domain integralsfrom momentum and energy balance. Engineering Fracture Mechanics 127,615–642.

Nguyen, P., S. Bordas, C. Dunant, H. Nguyen-Dang, and G. A. (2005). Anobject-oriented extended finite element library, part ii. numerical applicationsin fracture mechanics. IJNME . submitted.

Nikishkov, G. P. and S. N. Atluri (1987). Calculation of fracture mechanics pa-rameters for an arbitrary three-dimensional crack by the ‘equivalent domainintegral’ method. International Journ Numer Meth. Engng 24, 851—867.

Nuismer, R. (1975). An energy release rate criterion for mixed mode fracture.International Journal of Fracture 11, 245–250.

Osher, S. and J. A. Sethian (1988, November). Fronts propagating withcurvature-dependent speed: Algorithms based on Hamilton-Jacobi formu-lations. Journal of Computational Physics 79 (1), 12–49.

Paris, P. and F. Erdogan (December 1963). A critical analysis of crack prop-agation laws. Journal of Basic Engineering, Transactions of the AmericanSociety of Mechanical Engineers , 528–534.

acer
下划线
acer
下划线
Page 162: EMMC - iMechanica

REFERENCES 148

Remacle, J.-F. and C. Geuzaine (1998). Gmsh finite element mesh generator.Available at http://www.montefiore.ulg.ac.be/geuzaine/gmsh.html.

Remacle, J.-F., B. K. Karamete, and M. Shephard (2000, October). Algorithmoriented mesh database. In Ninth International Meshing Roundtable, New-port Beach,California, pp. 349—359.

Rice, J. R. (1968). A path independent integral and the approximate analysis ofstrain concentration by notches and cracks. Journal of Applied Mechanics ,379—386.

S. Bordas, R. Duddu, B. M. and D. Chopp (2005). Extended finite elementmethod for biofilm growth. International Journal for Numerical Methods inEngineering . submitted.

Shih, C. F., B. Moran, and T. Nakamura (1986). Energy release rate alonga three-dimensional crack front in a thermally stressed body. InternationalJournal of Fracture 30, 79–102.

Sih, G. C. (1973). Energy-density concept in fracture mechanics. EngineeringFracture Mechanics 5, 1037–1040.

Sladek, J., V. Sladek, and S. N. Atluri (Jan 2000). Local boundary integral equa-tion (lbie) method for solving problems of elasticity with nonhomogeneousmaterial properties. Computational Mechanics 24 (6), 456—462. .

Stazi, F., E. Budyn, J. Chessa, and T. Belytschko (2003). An extended finiteelement method with higher-order elements for crack problems with curva-ture. International Journal for Numerical Methods in Engineering . acceptedfor publication.

Stolarska, M., D. L. Chopp, N. Moes, and T. Belytschko (2001). Modelling crackgrowth by level sets and the extended finite element method. InternationalJournal for Numerical Methods in Engineering 51 (8), 943–960.

Stroustrup, B. (2002). The C++ Programming Language (third ed.). AddisonWesley.

Sukumar, N., D. Chopp, N. Moes, and T. Belytschko (2001). Modeling holes andinclusions by level sets in the extended finite element method. InternationalJournal for Numerical Methods in Engineering 190 (47), 6183—6200.

Page 163: EMMC - iMechanica

REFERENCES 149

Sukumar, N., D. L. Chopp, and B. Moran (2003). Extended finite elementmethod and fast marching method for three-dimensional fatigue crack prop-agation. Engineering Fracture Mechanics 70 (1), 29—48.

Sukumar, N., Z. Y. Huang, J.-H. Prevost, and Z. Suo (June 2003). Partition ofunity enrichment for bimaterial interface cracks. International Journal forNumerical Methods in Engineering . accepted for publication.

Sukumar, N., N. Moes, T. Belytschko, and B. Moran (2000). Extended Finite El-ement Method for three-dimensional crack modelling. International Journalfor Numerical Methods in Engineering 48 (11), 1549–1570.

Sukumar, N. and J.-H. Prevost (August 2003). Modeling quasi-static crackgrowth with the extended finite element method. part i: Computer imple-mentation. International Journal of Solids and Structures . Accepted for pub-lication.

Sumi, Y., C. Yang, and Z. Wang (1995). Morphological aspects of fatigue crackpropagation. Part II - effects of stress biaxiality and welding residual stresses.Technical report, Department of Naval Architecture and Ocean Engineering,Yokohama National University, Japan.

Timoshenko and Goodier (1970). Theory of Elasticity. McGraw-Hill.

Ventura, G., J. X. Xu, and T. Belytschko (June, 2001). Level set crack propaga-tion modelling in the element-free galerkin method. In European Conferenceon Computational Mechanics.

Zimmermann, T., Y. D. Pelerin, and P. Bomme (1992). Object oriented finiteelement programming: I. governing principles. Comp. Meth. in Applied Mech.and Engrg. 93 (8), 291–303.

Page 164: EMMC - iMechanica

150

Appendix A

The class hierarchy

This appendix introduces the class hierarchy of the OpenXFEM++ library. Classes

in bold font are new ones, while the classes in italic font are classes of FEMOBJ

which are modified to include the XFEM.

AuxiliaryFieldsDictionaryDofDomainFEInterpolation

FEInterpolation2dFEI2dQuadLinFEI2dTriLin

IntegrationRuleSplitGaussQuadratureStandardGaussQuadrature

FEMComponentCrackGrowthIncrementLaw

ParisLawFixedIncrement

CrackGrowthDirectionLawMaxHoopStressMaxEnergyReleaseRate

Page 165: EMMC - iMechanica

151

ElementQuadUTriUTri6

EnrichmentFunctionDiscontinuousFunctionAsymptoticFunction

CrackAsymptoticHomogElastCrackAsympBiMaterialElastCrackAsymp

EnrichmentItemCrackInteriorCrackTipHoleMaterialInterface

GeometryDescriptionLevelSetDescriptionVectorLevelSetDescriptionStandardDescription

GeometryEntityCirclePiecewiseLinearVertex

LoadBodyLoad

DeadWeightBoundaryConditionInitialConditionNodalLoad

LoadTimeFunctionConstantFunctionPeakFunctionPiecewiseLinFunction

MaterialElasticMaterialVonMisesMaterialVonMisesMaterialHNullMaterial

NLSolverConstantStiffness

Page 166: EMMC - iMechanica

152

ModNewtonRapsonNewtonRapson

NodeTimeIntegrationScheme

NewmarkStatic

TimeStepFileReaderFloatArray

ColumnGaussPointIntArrayLHS

SkyLineLinearSystemListMathUtilMatrix

FloatMatrixDiagonalMatrix

PolynomialMatrixPairPolynomial

PolynomialXY

Page 167: EMMC - iMechanica

153

Appendix B

The data file of OpenXFEM++

and some Matlab routines

This appendix presents the data file of the OpenXFEM++ package. After a short

introduction of the format of this file, steps to build automatically this input file

for a finite element problem is given. At the end of this appendix, the Matlab

routines to be used are given.

B.1 The data file of OpenXFEM++

Below is the typical data file for a finite element problem with discontinuities

(cracks).

TimeIntegrationScheme1 class Static ***

Page 168: EMMC - iMechanica

B.1. The data file of OpenXFEM++ 154

Material 11 E 3.e7 n 0.25 ***

Element 2341 class T3U mat 1 nodes 1 3 4 *2 class T3U mat 1 nodes 10 33 41 ***

Node 12341 coord 2 0.0 0.0 nDofs 2 bcOnDof1 1 bcOnDof2 1 *2 coord 2 2.0 0.0 nDofs 2 bcOnDof1 1 bcOnDof2 1 ***

Load 21 class BoundaryCondition loadTimeFunction 1 conditions 1 d 0. *2 class NodalLoad loadTimeFunction 2 components 2 4000. 0. *

**EnrichmentItem 31 class CrackInterior myTips 2 2 3 geometry 1EnrichmentFunctions 1 1 enrichScheme 3*2 class CrackTip Type HomoElast Mat 1 geometry 2 EnrichmentFuncs 4 2 3 4 5enrichScheme 1 domainIntRadius 2.5*3 class CrackTip TypeHomoElast Mat 1 geometry 2 EnrichmentFuncs 4 2 3 4 5enrichScheme 1 domainIntRadius 2.5***

GeometryEntity 31 class PiecewiseLinear numOfVertices 2 vertices 2 3 geoDescription 1*2 class Vertex coord 2 0.75 3.0 *3 class Vertex coord 2 1.25 3.0 ***

EnrichmentFunction 51 class DiscontinuousField *2 class HomoElastCrackAsymp1 *3 class HomoElastCrackAsymp2 *4 class HomoElastCrackAsymp3 *5 class HomoElastCrackAsymp4 ***

Page 169: EMMC - iMechanica

B.1. The data file of OpenXFEM++ 155

CrackGrowthDirectionLaw1 class MaxHoopStress ***

CrackGrowthIncrementLaw1 class FixedIncrement delta 0.2 ***

For the complete discussion on the sections concerning FEM such as Element,Node, Material, Load, LoadTimeFunction, TimeStep, TimeIntegrationScheme,please refer to the documents of FEMOBJ which are available at www.zace.com.Here, only sections on XFEM are presented as follows.

B.1.1 Section EnrichmentItem

- Keyword line :EnrichmentItem n

n : number of enrichment itemsCrackInterior- Data line :n class CrackInterior myTips tips tip1 tip2 geometry geoID EnrichmentFunctions1 funcID enrichScheme enrID *

n : EnrichmentItem numbertips : number of crack tipstip1 : the first crack tip numbertip2 : the second crack tip numbergeoID : geometry numberfuncID : enrichment function numberenrID : enrichment detector number (see remark below)

- Example:1 class CrackInterior myTips 2 2 3 geometry 1 EnrichmentFunctions 1 1 enrich-Scheme 3 * -Remark: The only value that can be assigned to enrID is 3, i.e., allnodes of any element split by the CrackInterior will be enriched by the Heavisidefunction.CrackTip- Data line :n class CrackTip Type tipType Mat mat geometry geoID EnrichmentFunctions m

Page 170: EMMC - iMechanica

B.1. The data file of OpenXFEM++ 156

f1 f2 f3 f4 enrichScheme enrID domainIntRadius r *

n : EnrichmentItem numbertipType : type of the crack tipmat : material numbergeoID : geometry numberm : total number of enrichment functionsfi : the ith enrichment function numberenrID : enrichment detector number(see remark below)r : radius of the integration domain used to compute SIFs

- Example:3 class CrackTip Type HomoElast Mat 1 geometry 2 EnrichmentFuncs 4 2 3 4 5enrichScheme 1 domainIntRadius 2.000 *-Remark : We can assign 1 or 2 to enrID. If enrID = 1, all nodes of a givenelement containing the crack tip will be enriched by the asymptotic functions. IfenrID = 2, any node belongs to the circle of radius r centered at the crack tipwill be tip-enriched nodes. In this case, the data line of CrackTip becomes:3 class CrackTip Type HomoElast Mat 1 geometry 2 EnrichmentFuncs 4 2 3 4 5enrichScheme 3 enrichRadius 2.0 domainIntRadius 2.0 *

B.1.2 Section EnrichmentFunction

- Keyword line :EnrichmentFunction n

n : number of enrichment functionsDiscontinuousField- Data line :n class DiscontinuousField *HomoElastCrackAsymp1- Data line :n class HomoElastCrackAsymp1 *

Page 171: EMMC - iMechanica

B.1. The data file of OpenXFEM++ 157

B.1.3 Section GeometryEntity

- Keyword line :GeometryEntity n

n : number of geometry entitiesPiecewiseLinear- Data line :n class PiecewiseLinear numOfVertices m vertices v1 v2 geoDescription geoDesID *

n : PiecewiseLinear numberm : number of verticesvi : the ith vertex numbergeoDesID : the description of the PiecewiseLinear(see remark below)

- Example:1 class PiecewiseLinear numOfVertices 2 vertices 2 3 geoDescription 1 *-Remark: The possible values of geoDesID are 1 (standard description), 2 (levelset description) and 3 (vector level set description). However, in current imple-mentation, only standard description was coded.Vertex- Data line :n class Vertex coord nsd x y *

n : Vertex numbernsd : number of space dimensionx : x coordinate of the Vertexy : y coordinate of the Vertex

- Example:2 class Vertex coord 2 0.75 3.0 *

B.1.4 Section CrackGrowthDirectionLaw

MaxHoopStressIt means that the crack growth angle is computed by the maximum hoop stresscriterion.

Page 172: EMMC - iMechanica

B.2. How to build the input data file 158

B.1.5 Section CrackGrowthIncrementLaw

FixedIncrement- Data line :n class FixedIncrement delta ∆ *

n : CrackGrowthIncrementLaw number∆ : crack increment length

B.2 How to build the input data file

The procedure to have a input file of correct format required by the OpenXFEM++is as follows

1. Generation of the finite element meshTo build the geometry model and then the mesh of problem at hand, theprogram Gmsh was used. The output file extension is .msh.

2. Read the above .msh file to get nodes and elementsThis is done by using the Matlab M file msh2mlab.m.

3. Finally, make the data file for OpenXFEM++ using the Matlab routineMakeFemObjDataFile.m.

B.3 Some Matlab routines used to get the data

file

B.3.1 The Matlab M file msh2mlab.m

This useful routine is written by Jack Chessa at Northwestern University, USA.

function [node,element,elemType]=msh2mlab(meshFile)% function [node,connectivities,elemType]=msh2mlab(’meshFile’)% This file reads in a mesh file from gmsh and returns the appropirate input% data structures for a matlab finite element code.%% ’meshFile’ - is the file name of the *.msh file ( includeing *.msh )%% node - is an nodal coordinate matrix ( Nx3, where N is the number of nodes )%

acer
波浪线
acer
波浪线
Page 173: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 159

% connectivities - is a cell array of connetivitiy matricies for each% zone defined in the *.msh ( or *.geo ) file%% elemType - is a vector of strings that tell what type of element is in% each zone ( we assume that only one type of element is% defined for each zone )%% Example:% plate.msh is a mesh file with three zones. Zone 1 is the mesh of% the domain interior, zone 2 is a mesh of the traction boundary% and zone 6 is a mesh of the displacement boundary the code to% process this file would be%% [node,conns,elemType]=msh2mlab(’plate.msh’);% domain=conns1;% tracBndy=conns2;% dispBndy=conns6;% dispBndyNodes=unique(dispBndy);

% open the filemeshPath=’’; %’/home/jack/Meshes/’;fid=fopen([meshPath,meshFile],’r’);% define mesh data structurespts=[]; seg=; zon=; node=[]; element=;

%* README: The ’msh’ file format is the native output file format for% Gmsh. The file is divided in several sections (enclosed in $KEY and% $ENDKEY pairs). Two fields are important: $NOD/$ENDNOD defines the% nodes and $ELM/$ENDELM defines the elements.%% The syntax is as follows:%% $NOD% number-of-nodes% node-number x-coord y-coord z-coord% ...% $ENDNOD%% $ELM% number-of-elements% elm-number elm-type elm-region unused number-of-nodes node-numbers% ...

Page 174: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 160

% $ENDELM%% All the syntactic variables stand for integers except x-coord,% y-coord and z-coord which stand for floating point values. The% elm-type value defines the geometrical type for the element:%% elm-type:%% 1 Line (2 nodes, 1 edge).% 2 Triangle (3 nodes, 3 edges).% 3 Quadrangle (4 nodes, 4 edges).% 4 Tetrahedron (4 nodes, 6 edges, 4 facets).% 5 Hexahedron (8 nodes, 12 edges, 6 facets).% 6 Prism (6 nodes, 9 edges, 5 facets).% 7 Pyramid (5 nodes, 8 edges, 5 facets).% 15 Point (1 node).%% The elm-region value is the number of the physical entity to which% the element belongs.zoneID=0;% read sectionswhile 1line=fgetl(fid); % read lineif ~isstr(line), break, end % check if EOFswitch line % find secitoncase ’$PTS’n=str2num(fgetl(fid));pts=zeros(n,6);

for i=1:npts(i,:)=str2num(fgetl(fid));

end

case ’$SEG’n=str2num(fgetl(fid));

for i=1:nsegi=str2num(fgetl(fid));

end

case ’$ZON’n=str2num(fgetl(fid));

Page 175: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 161

for i=1:nzoni=str2num(fgetl(fid));

end

zoneID=ones(length(zon),1);for i=1:length(zon);zoneID(i)=zoni(1);elementzoneID(i)=[];elemTypei=’??’;

end

case ’$NOD’numnode=str2num(fgetl(fid));node=zeros(numnode,3);

for i=1:numnodenodeline=str2num(fgetl(fid));node(nodeline(1),:)=nodeline(2:4);

end

case ’$NOE’numnode=str2num(fgetl(fid));node=zeros(numnode,3);

for i=1:numnodenodeline=str2num(fgetl(fid));node(nodeline(1),:)=nodeline(2:4);

end

case ’$ELM’n=str2num(fgetl(fid));

for i=1:ntemp=str2num(fgetl(fid)); % get elementinZone=temp(3); % find zone element is inz=find(ismember(zoneID,inZone));

if ( isempty(z) ) % zone is not yet definedzoneID=[zoneID;inZone];z=size(zoneID,1);elemTypezoneID(z)=’??’;

Page 176: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 162

elementzoneID(z)=[];end

if isempty(elementz) % first element inZone so set typeswitch temp(2)case 1

elemTypezoneID(z)=’L2’;case 2

elemTypezoneID(z)=’T3’;case 3

elemTypezoneID(z)=’Q4’;case 4

elemTypezoneID(z)=’H4’;case 5

elemTypezoneID(z)=’B8’;case 6

elemTypezoneID(z)=’P6’;case 15

elemTypezoneID(z)=’P1’;otherwise

elemTypezoneID(z)=’??’;end

end% add element to that zoneelementzoneID(z)=[elementzoneID(z);temp(6:5+temp(5))];

endotherwise% skip line

endend

fclose(fid);

B.3.2 The Matlab M file MakeFemObjDataFile.m

% =======================================================================% The original version is written by Stephane Bordas% Modified by Nguyen Vinh Phu 2005.05.26 for XFEM% EMMC IX, Hochiminh University of Technology, Vietnam% =======================================================================

Page 177: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 163

% *************************************************************************% ****** GEOMETRY and MESH ******% *************************************************************************% For Gmsh, see Jean Francois Remacle et al.

% GMSH FILE PARPMETERSgmshFileName = ’griffith.msh’; % name of gmsh input filebotBoundaryID = 20; % displacement boundarytopBoundaryID = 21; % traction boundaryinteriorID = 22; % interiorID interior of the plate

% READ GMSH FILE

[node,elements,elemType] = msh2mlab(gmshFileName);[node,elements] = remove_free_nodes(node,elements);

% GET NODE AND CONNECTIVITY MATRICES FOR INTERIORnode = node(:,1:2); % a nodal coordinate matrixelement = elementsinteriorID;% connectivity matrix

% compute total number of nodes and elementsnumelem = size(element,1);numnode = size(node,1);

% GET NODE AND CONNECTIVITY MATRICES FOR BCsdispEdge = elementsbotBoundaryID; % connectivity matrix for bottom edgetopEdge = elementstopBoundaryID ; % connectivity matrix for top edge

% GET NODES ON DIRICHLET BOUNDARY AND ESSENTIAL BOUNDARYfixedNodes=unique(dispEdge);loadedNodes=unique(topEdge);

% CHECK FOR BAD JACOBIANSelement=tricheck(node,element,1);

% Recognize element type automaticallyswitch size(element,2)case 2elt_type = ’L2’case 3elt_type = ’T3’case 6

Page 178: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 164

elt_type = ’T6’case 4elt_type = ’Q4’otherwiseerror(’Unknown element type found in mesh’);

end

% *************************************************************************% ******* MATERIAL CONSTANT *******% *************************************************************************

E = 3.e7 ; % Young modulusnu = 0.25; % Poisson ratio

% BOUNDARY CONDITIONSdispval = 0.0 ; % value of fixed displacement

% LOADINGsigma = 1.0 ; % the far field stress acting on top edge, along Y directionnodalLoadValue = sigma * Width ; % nodal load = sigma * width

% -------------------------------------------------------------------------% WRITE THE INPUT FILE follows format of FEMOBJ% For more info on FEMOBJ, see www.zace.com% -------------------------------------------------------------------------outFileName = ’D:\MASTERTHESIS\Inputfiles\HomoCracks\griffith.inp’;outfid = fopen(outFileName,’w’);

% -----------------------------------% MATERIAL% -----------------------------------fprintf(outfid,’Material 1 \n’);fprintf(outfid,’1 class ElasticMaterial E %15.14f n %15.14f t 1.0 *\n’,E,nu);fprintf(outfid,’**\n\n’);% ---------------------------------------% TIME INTEGRATION% ---------------------------------------fprintf(outfid,’TimeIntegrationScheme *\n’);fprintf(outfid,’1 class Static *\n’);fprintf(outfid,’**\n\n’);

% ------------------------------------------------------------------------

acer
波浪线
Page 179: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 165

% LOAD SECTION (includes Dirichlet conditions)% Example :% Load 2% 1 class BoundaryCondition loadTimeFunction 1 conditions 1 d 0. *% 2 class NodalLoad loadTimeFunction 2 components 2 4000. 0.*% **% ------------------------------------------------------------------------

fprintf(outfid,’Load %d \n’,2);fprintf(outfid,’%d class BoundaryCondition loadTimeFunction 1 conditions 1d %15.14f *\n’,1,dispval);fprintf(outfid,’%d class NodalLoad loadTimeFunction 2 components 2%15.14f %15.14f * \n’,2,0,nodalLoadValue);fprintf(outfid,’**\n\n’);

% ------------------------------------------------------------------------% LOADTIME FUNCTIONS% ------------------------------------------------------------------------

fprintf(outfid,’LoadTimeFunction 1 \n’);fprintf(outfid,’1 class ConstantFunction f(t) %f *\n’,1);fprintf(outfid,’**\n\n’);

% ------------------------------------------------------------------------% NODE SECTION% Example :% Node 1234% 1 coord 2 0.0 0.0 nDofs 2 bcOnDof1 1 loads 1 *% 2 ...% ------------------------------------------------------------------------fprintf(outfid,’Node %d \n’,numnode);nodei = 0;for i=1:numnodenodei = nodei +1 ;fprintf(outfid,[’%d nDofs 2 coord 2 %15.14f %15.14f’],nodei,node(i,1),node(i,2));if (ismember(i,fixedNodes))

fprintf(outfid,’ bcOnDof1 %d’,1); % two Dofs are fixedfprintf(outfid,’ bcOnDof2 %d’,1);

endif (ismember(i,loadedNodes))

fprintf(outfid,’ loads 1 2 %d’); % supported nodal loadsend

Page 180: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 166

fprintf(outfid,’ *’);fprintf(outfid,’ \n’);

end fprintf(outfid,’**\n\n’);% --------------------------------------------------------------------------% ELEMENT SECTION% Example :% Element 2356% 1 class T3U mat 1 nodes 1 3 56 *% 2 class T3U mat 1 nodes 12 34 56 *% ...% --------------------------------------------------------------------------

fprintf(outfid,’Element %d \n’,numelem);for i=1:numelem

nume = nume+1;fprintf(outfid,’%d class T3U nodes %d %d %d mat 1 ’,nume,...

element(i,1),element(i,2),element(i,3));fprintf(outfid,’ *’);fprintf(outfid,’ \n’);

endfprintf(outfid,’**\n\n’);

% -------------------------------------------------------------------% ENRICHMENT ITEM SECTION% Example : for one Griffith crack,i.e.,one CrackInterior and two CrackTip% EnrichmentItem 3% 1 class CrackInterior geometry 1 EnrichmentFunctions 1 1 enrichScheme 3*% 2 class CrackTip Type HomoElast Mat 1 geometry 2% EnrichmentFuncs 4 2 3 4 5 enrichScheme 1 enrichRadius 2.5*% 3 class CrackTip Type HomoElast Mat 1 geometry 3% EnrichmentFuncs 4 2 3 4 5 enrichScheme 1 enrichRadius 2.5*% **% -------------------------------------------------------------------numOfEnrItem = 3;enrichScheme = 1 ; % standard enrichment => no need enrichRadiusenrichRadius = 3 ; % radius of enrichmentdomainIntRadius = 2 ;

fprintf(outfid,’EnrichmentItem %d \n’,numOfEnrItem);

fprintf(outfid,’%d class CrackInterior geometry 1 EnrichmentFunctions 1 1enrichScheme 3’,1);

Page 181: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 167

fprintf(outfid,’ *’); fprintf(outfid,’ \n’);

if (enrichScheme == 1)fprintf(outfid,’%d class CrackTip Type HomoElast Mat 1 geometry 2EnrichmentFuncs 4 2 3 4 5 enrichScheme %d domainIntRadius %5.3f’,2,enrichScheme,domainIntRadius);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);fprintf(outfid,’%d class CrackTip Type HomoElast Mat 1 geometry 3EnrichmentFuncs 4 2 3 4 5 enrichScheme %d domainIntRadius %5.3f’,3,enrichScheme,domainIntRadius);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);

elsefprintf(outfid,’%d class CrackTip Type HomoElast Mat 1 geometry 2EnrichmentFuncs 4 2 3 4 5 enrichScheme %d enrichRadius %5.3fdomainIntRadius %5.3f ’,3,enrichScheme,enrichRadius,domainIntRadius);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);fprintf(outfid,’%d class CrackTip Type HomoElast Mat 1 geometry 3EnrichmentFuncs 4 2 3 4 5 enrichScheme %d enrichRadius %5.3fdomainIntRadius %5.3f ’,3, enrichScheme,enrichRadius,domainIntRadius);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);

endfprintf(outfid,’**\n\n’);% --------------------------------------------------------------------% GEOMETRY ENTITY SECTION% Example :%% GeometryEntity 3% 1 class PiecewiseLinear numOfVertices 2 vertices 2 3 geoDescription 1 *% 2 class Vertex coord 0.75 3.0 *% 3 class Vertex coord 1.25 3.0 *% **% --------------------------------------------------------------------numOfGeoEntity = 3;fprintf(outfid,’GeometryEntity %d \n’,numOfEnrItem);

fprintf(outfid,’%d class PiecewiseLinear numOfVertices 2 2 3 ...geoDescription 1’,1);fprintf(outfid,’ *’);fprintf(outfid,’ \n’);fprintf(outfid,’%d class Vertex coord 2 0.75 3.0 geoDescription 1’,2);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);fprintf(outfid,’%d class Vertex coord 2 1.25 3.0 geoDescription 1’,3);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);

Page 182: EMMC - iMechanica

B.3. Some Matlab routines used to get the data file 168

fprintf(outfid,’**\n\n’);% ---------------------------------------------------------------------% ENRICHMENT FUNCTION SECTION% Example : enrichment functions for cracks% (Heavide function + 4 asymp functions)%% EnrichmentFunction 5% 1 class DiscontinuousField *% 2 class HomoElastCrackAsymp1 *% 3 class HomoElastCrackAsymp2 *% 4 class HomoElastCrackAsymp3 *% 5 clas HomoElastCrackAsymp4 *% **% ---------------------------------------------------------------------fprintf(outfid,’EnrichmentFunction %d \n’,numOfEnrFunc);

fprintf(outfid,’%d class DiscontinuousField ’,1);fprintf(outfid,’*’);fprintf(outfid,’\n’);for i = 1:4

fprintf(outfid,[’%d class HomoElastCrackAsymp’ num2str(i) ],1+i);fprintf(outfid,’ *’); fprintf(outfid,’ \n’);

end fprintf(outfid,’**\n\n’);% -----------------------------------% NLSOLVER% -----------------------------------fprintf(outfid,’NLSolver *\n’); fprintf(outfid,’1 classNewtonRaphson n 100 t 1e-5 c 1 *\n’); fprintf(outfid,’**\n\n’);% -----------------------------------% TIME STEP% -----------------------------------fprintf(outfid,’TimeStep 1 \n’); fprintf(outfid,’1 dt 1.0 *\n’);fprintf(outfid,’**\n\n’);% -----------------------------------% CLOSE FILE% -----------------------------------fclose(outfid);

It is obvious that the way to get the data file is just semi-automatic. It is a

good exercise on C++ to implement these routines directly in OpenXFEM++.

Page 183: EMMC - iMechanica

169

Appendix C

Some details on the X-FEM

C.1 Derivation of the discretized equations

Linear space, Y A set Y is a linear (or vector) space if

∀v1, v2 ∈ Y, v1 + v2 ∈ Y

∀α ∈ R, ∀v ∈ Y, αv ∈ Y

Linear forms, L(v)

L : Y︸︷︷︸input

→ R︸︷︷︸output

L(αv1 + v2) = αL(v1) + L(v2)

∀α ∈ R, ∀v1, v2 ∈ Y

Bilinear forms, B(u,v) is a bilinear form or operator if

Page 184: EMMC - iMechanica

C.1. Derivation of the discretized equations 170

B(u,v) is a linear form in u for fixed v,

B(u,v) is a linear form in v for fixed u

B(u,v) is a symmetric bilinear form if B(u,v) = B(v,u).

The weak formulation of the equilibrium equation is give by (2.2.2)

Find u ∈ U | ∀v ∈ U0, B(u,v) = L(v) (C.1)

The enriched finite element approximation is reintroduced (2.40)

uh(x) =∑

I,nI∈Ne

NI(x)uI +∑

J,nJ∈Nenr

NJ(x)Φ(x)aJ (C.2)

The equation (2.36) is equivalent to find (uI , aJ) : ∀(vK ,bL), the following equation

is satisfied

B

( ∑I

nI∈Ne

NIuI +∑

JnJ∈Nenr

NJΦaJ ,∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL

)=

= L(∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL)

(C.3)

Due to the linearity of L, we have

L(∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL) =∑K

nK∈Ne

vKL(NK) +∑

LnL∈Nenr

bLL(NLΦ) (C.4)

Page 185: EMMC - iMechanica

C.1. Derivation of the discretized equations 171

Since B(u,v) is a bilinear form

B(uh, vh) = B

( ∑I

nI∈Ne

NIuI +∑

JnJ∈Nenr

NJΦaJ ,∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL

)

= B

( ∑I

nI∈Ne

NIuI ,∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL

)+

+ B

( ∑J

nJ∈Nenr

NJΦaJ ,∑K

nK∈Ne

NKvK +∑

LnL∈Nenr

NLΦbL

)

= B

( ∑I

nI∈Ne

NIuI ,∑K

nK∈Ne

NKvK

)+ B

( ∑I

nI∈Ne

NIuI ,∑

LnL∈Nenr

NLΦbL

)+

+ B

( ∑J

nJ∈Nenr

NJΦaJ ,∑K

nK∈Ne

NKvK

)+ B

( ∑J

nJ∈Nenr

NJΦaJ ,∑

LnL∈Nenr

NLΦbL

)

=∑

InI∈Ne

∑K

nK∈Ne

uIvKB(NI , NK) +∑

InI∈Ne

∑L

nL∈Nenr

uIbLB(NI , NLΦ)+

+∑

JnJ∈Nenr

∑K

nK∈Ne

aJvKB(NJ , NKΦ) +∑

JnI∈Nenr

∑L

nK∈Nenr

aJbLB(NJΦ, NLΦ)

(C.5)

Defining the following matrices

KuuIK = B(NI , NK) (C.6a)

KueIL = B(NI , NKΦ) (C.6b)

KeuJK = B(NJ , NKΦ) (C.6c)

KeeJL = B(NJΦ, NJΦ) (C.6d)

Page 186: EMMC - iMechanica

C.1. Derivation of the discretized equations 172

B(uh, vh) can be rewritten

∑I

nI∈Ne

∑K

nK∈Ne

KuuIKuIvK+

∑I

nI∈Ne

∑L

nL∈Nenr

KueJKuIbL+

∑J

nJ∈Ne

∑L

nL∈Nenr

KeuJKaJvK+

∑J

nJ∈Nenr

∑L

nL∈Nenr

KeeJLaJbL

(C.7)

Also having

B(uh, vh) =∑K

nK∈Ne

vKL(NK) +∑

LnL∈Nenr

bLL(NLΦ) (C.8)

∑I

nI∈Ne

KuuIKuI +

∑J

nJ∈Nenr

KeuJKaJ +

∑I

nI∈Ne

KeuLIuI +

∑J

nJ∈Nenr

KeeJLaJ = L(NK) + L(NLΦ)

(C.9)

Under matrix form

K · u = f ext ⇔

Kuu Kua

Kau Kaa

u

a

=

f extu

f exta

(C.10)

where

f extu = L(NI) =

Γt

NItdΓ +

Ω

NIbdΩ (C.11)

f exta = L(NJΦ) =

Γt

NJΦtdΓ +

Ω

NJΦbdΩ (C.12)

Page 187: EMMC - iMechanica

C.2. Derivatives of near tip enrichment functions 173

C.2 Derivatives of near tip enrichment functions

To compute the stiffness matrices for elements enriched by the near tip asymptotic

functions Φα, the following expression is about to determined

(NiΦα),x = (Ni),xΦα + Ni(Φα),x (C.13a)

(NiΦα),y = (Ni),yΦα + Ni(Φα),y (C.13b)

where Φα,x and Φα,y are the derivatives of Φα with respect to the global Cartesian

coordinate system. These derivatives are, at first, found in the local crack tip

coordinate system (x1, x2) and a vector transformation is used to obtain them

with respect to the global Cartesian coordinate system (x, y).

The derivatives of Φα with respect to (w.r.t) the local crack tip coordinate

system (x1, x2) are given

(Φα),x1 = (Φα),rr,x1 + (Φα),θθ,x1 (C.14a)

(Φα),x2 = (Φα),rr,x2 + (Φα),θθ,x2 (C.14b)

The near tip enrichment functions are recalled for ease of reading

Φα(r, θ) =

√r sin

θ

2,√

r cosθ

2,√

r sinθ

2sin θ,

√r cos

θ

2sin θ

(C.15)

The derivatives of Φα with respect to the polar coordinate (r, θ)

(Φ1),r =1

2√

rsin

θ

2, (Φ1),θ =

√r

2cos

θ

2(C.16a)

Page 188: EMMC - iMechanica

C.2. Derivatives of near tip enrichment functions 174

(Φ2),r =1

2√

rcos

θ

2, (Φ2),θ = −

√r

2sin

θ

2(C.16b)

(Φ3),r =1

2√

rsin

θ

2sin θ, (Φ3),θ =

√r(

1

2cos

θ

2sin θ + sin

θ

2cos θ) (C.16c)

(Φ4),r =1

2√

rcos

θ

2sin θ, (Φ4),θ =

√r(−1

2sin

θ

2sin θ + cos

θ

2cos θ) (C.16d)

The derivatives of r, θ with respect to (x1, x2) are as follows

r,x1 = cos(θ), r,x2 = sin θ (C.17a)

θ,x1 = − sin θ/r, θ,x2 = cos θ/r (C.17b)

Finally, we have the derivatives of Φα with respect to the local crack tip system

(Φ1),x1 = − 1

2√

rsin

θ

2(C.18a)

(Φ1),x2 =1

2√

rcos

θ

2(C.18b)

(Φ2),x1 =1

2√

rcos

θ

2(C.19a)

(Φ2),x2 =1

2√

rsin

θ

2(C.19b)

(Φ3),x1 = − 1

2√

rsin

2sin θ (C.20a)

(Φ3),x2 =1

2√

r(sin

θ

2+ sin

2cos θ) (C.20b)

Page 189: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 175

(Φ4),x1 = − 1

2√

rcos

2sin θ (C.21a)

(Φ4),x2 =1

2√

r(cos

θ

2+ cos

2cos θ) (C.21b)

Using a vector transformation, the derivatives of near tip enrichment functions

with respect to the global coordinate system are given by

(Φα),x = (Φα),x1 cos(α)− (Φα),x2 sin(α) (C.22a)

(Φα),y = (Φα),x1 sin(α) + (Φα),x2 cos(α) (C.22b)

where α is the inclination angle of the crack w.r.t the x axe of the global coordinate

system (see Figure C.1).

C.3 Stress intensity factors computation using

the interaction integral

This section presents, in great details, the computation of the stress intensity

factors using the domain form of the interaction integral.

The interaction integral for states 1 and 2 is recalled for convenience

I(1,2) =2

E∗ (K(1)I K

(2)I + K

(1)II K

(2)II ) (C.23)

To compute KI , we choose state 2 as the pure Mode I (K(2)II = 0) with K

(2)I = 1,

Page 190: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 176

hence :

KI =E∗

2I(1,ModeI) (C.24)

The domain form of the interaction integral is recalled (equation (2.26))

I(1,2) =

Γ

(1)ij

∂u(2)i

∂x1

− σ(2)ij

∂u(1)i

∂x1

−W (1,2)δ1j

]∂q

∂xj

dA (C.25)

where W (1,2) is the interaction strain energy

W (1,2) = σ(1)ij ε

(2)ij (C.26)

After the solution of the boundary value problem, we obtained the stress and

displacement fields of state 1, i.e., σ(1)ij , u

(1)i and the spatial derivatives of the

displacement field in the global Cartesian coordinate system u(1)i,x , and u

(1)i,y . These

terms need to be transformed to the local crack tip coordinate system by using an

appropriate vector transformation.

The derivatives of the displacement field with respect to x1, x2 is given as

u(1)1,x1

u(1)1,x2

u(1)2,x1

u(1)2,x2

=

cos α sin α

− sin α cos α

u(1)1,x u

(1)1,y

u(1)2,x u

(1)2,y

cos α − sin α

sin α cos α

(C.27)

where α is the inclination angle between the local crack tip coordinate system and

the global coordinate system, see Figure C.1.

The stress of state (1) in the local crack tip coordinate system is as follows

Page 191: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 177

σx1x1 =σxx + σyy

2+

(σxx − σyy

2

)cos(2α) + τxy sin(2α)

σy1y1 =σxx + σyy

2−

(σxx − σyy

2

)cos(2α)− τxy sin(2α)

σx1y1 = τxy cos(2α)−(

σxx − σyy

2

)sin(2α)

(C.28)

With the isoparametric element formulation, the distribution of weighting func-

tion within elements can be determined by the usual finite element interpolation

q =m∑

i=1

Niqi (C.29)

Hence,

∂q

∂x=

m∑i=1

∂Ni

∂xqi (C.30)

A vector transformation is then used to convert ∂q/∂x to the local crack tip coor-

dinate system ∂q/∂xj

q,x1 = q,x cos(α) + q,y sin(α)

q,x2 = −q,x sin(α) + q,y cos(α)

(C.31)

In the following, the displacement, stress and strain field of the auxiliary field are

computed. Since we chose the state 2 as the pure mode I with K1 = 1, then we

have

Page 192: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 178

Figure C.1: Global and local coordinate systems

u(2)i =

ux

uy

=

1

√r

cos(θ/2)

[κ− 1 + 2 sin2(θ/2)

]sin(θ/2)

[κ + 1− 2 cos2(θ/2)

]

=1

√r

cos(θ/2) [κ− cos(θ)]sin(θ/2) [κ− cos(θ)]

(C.32)

where κ and µ are material constants given as follows

µ =E

2(1 + ν); κ =

3− 4ν plane strain

3− ν

1 + νplane stress

(C.33)

Letting

A =1

2µ; B =

√r

f1 = cos(θ/2) [κ− cos(θ)]

f2 = sin(θ/2) [κ− cos(θ)]

(C.34)

Page 193: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 179

The strain components of state 2 are

ε(2)ij =

1

2(u

(2)i,j + u

(2)j,i ) (C.35)

The derivatives of the displacement fields are

u(2)1,1 = A(Bf1,1 +

f1r,1

4πB) (C.36a)

u(2)1,2 = A(Bf1,2 +

f1r,2

4πB) (C.36b)

u(2)2,1 = A(Bf2,1 +

f2r,1

4πB) (C.36c)

u(2)2,2 = A(Bf2,2 +

f2r,2

4πB) (C.36d)

Since r,1 = cos(θ), r,2 = sin(θ), θ,1 = − sin(θ)/r, and θ,2 = cos(θ)/r, by using the

chain rule, we can write the derivatives of f1, f2 as follows

f1,1 = f1,θθ,1; f1,2 = f1,θθ,2 (C.37a)

f2,1 = f2,θθ,1; f2,2 = f2,θθ,2 (C.37b)

f1,θ = −κ

2sin

θ

2+

1

2sin

θ

2cos θ + cos

θ

2sin θ (C.38a)

f2,θ =κ

2cos

θ

2− 1

2cos

θ

2cos θ − sin

θ

2sin θ (C.38b)

The stress field of Mode I is given by

Page 194: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 180

σ(2)xx =

1√2πr

cosθ

2

(1− sin

θ

2sin

2

)

σ(2)yy =

1√2πr

cosθ

2

(1 + sin

θ

2sin

2

)

σ(2)xy =

1√2πr

cosθ

2sin

θ

2cos

2

(C.39)

All terms in equation (C.25) were calculated, it is ready to compute numerically

this interaction integral.

I(1,2) =∑

elementsinA

P∑p=1

(1)ij

∂u(2)i

∂x1

− σ(2)ij

∂u(1)i

∂x1

−W (1,2)δ1j

]∂q

∂xj

wpdetJ (C.40)

where all terms of the state 2 are functions of variables r, θ. Therefore, it is neces-

sary to compute the coordinates of Gauss points in the local crack tip coordinate

system. For a Gauss point with coordinate (r, s), its global coordinates are defined

by

x =∑

Ni(r, s)xi

y =∑

Ni(r, s)yi

(C.41)

From this global coordinate, it is easy to compute the local coordinate in the local

crack tip coordinate system, (xloc, yloc). Then, (r, θ) of this Gauss point is

Page 195: EMMC - iMechanica

C.3. Stress intensity factors computation using I integral 181

r =√

x2loc + y2

loc

θ = tan−1 yloc

xloc

(C.42)

For the numerical evaluation of the above integral, the domain A is set from the

collection of elements which intersect with the circle centered at the crack tip and

having predefined radius rd = rkhlocal with rk is a scalar multiple and hlocal is the

square root of the area of tip element. Figure C.2 shows a typical set of elements

for the domain A. The value of weight function q at nodes are also plotted.

Crack

(a) Elements selected about thecrack tip

Crack

(b) Gauss points used to numeri-cally perform the I integral

Figure C.2: Elements used in the interaction integral computation

In the same manner, in order to compute KII , we choose state 2 as the pure

Mode II (K(2)I = 0) with K

(2)II = 1, hence :

KII =E∗

2I(1,ModeII) (C.43)

Page 196: EMMC - iMechanica

C.4. Numerical integration 182

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Figure C.3: Weight functions q on the elements

The computation of the interaction integral is implemented as method Crack-

Tip::computeInteractionIntegral(TimeStep* stepN), see file cracttip.cpp, while the

terms of the auxiliary fields are implemented in class AuxiliaryField (auxiliary-

field.cpp).

C.4 Numerical integration

As indicated in Section 2.2.5, elements split by the crack or contain the crack

tip require special treatment for the integration. Instead of doing the numerical

integration on the element, say e, we partition this element into sub-triangles and

perform the integration on these sub-triangles.

A finite element(parent) is denoted by eq, whereas e∆q is used for a sub-triangle(child)

that belongs to eq. The coordinates of nodes of e∆q are defined as x

∆q

i .

For each Gauss point ξ∆q ∈ e∆

q , the finite interpolation gives its global coordi-

Page 197: EMMC - iMechanica

C.4. Numerical integration 183

nate

x =3∑

i=1

Ni(ξ∆q )x

∆q

i (C.44)

where Ni is the shape functions of the three-noded triangular elements, which are

given here for convenience

N1 = 1− ξ − η

N2 = ξ

N3 = η

(C.45)

Now since the degrees of freedom are defined on the parent element, say the three-

noded triangular element, the local coordinate ξ∆ is required. To this end, an

inverse map from global to local coordinate system is performed.

x =3∑

i=1

Ni(ξ∆)x∆

i (C.46)

where x is computed from equation (C.44) and x∆i are coordinates of three nodes

of eq.

In explicit form, equation (C.46) is written as

x = (1− ξ − η)x1 + ξx2 + ηx3

y = (1− ξ − η)y1 + ξy2 + ηy3

(C.47)

Page 198: EMMC - iMechanica

C.5. Maximum hoop stress criterion 184

or

(x2 − x1)ξ + (x3 − x1)η = x− x1

(y2 − y1)ξ + (y3 − y1)η = y − y1

(C.48)

From equation (C.48), it is easy to compute the coordinates ξ, η of Gauss point

defined in the local coordinate system of eq. This Gauss point will be used to

evaluate the shape functions, enrichment functions.

All of this was implemented in method Global2Local of class FEI2dTriLin.

If the quadrilateral elements or high order elements are used, then the equation

(C.46) is a non-linear system which should be solved using the Newton-Raphson

method.

C.5 Maximum hoop stress criterion

In this section, the maximum hoop stress criterion is presented in detail. This

criterion states that the crack will propagate from its tip in the direction θc where

the circumferential stress σθθ is maximum. Under general mixed mode loadings,

the asymptotic near tip circumferential and shear stress take the form

σθθ

σrθ

=

1

4

KI√2πr

3 cos(θ/2) + cos(3θ/2)sin(θ/2) + sin(3θ/2)

+1

4

KII√2πr

−3 sin(θ/2)− 3 sin(3θ/2)cos(θ/2) + 3 cos(3θ/2)

(C.49)

The circumferential stress in the direction of crack growth is a principal stress.

Therefore, the critical angle θc defining the radial direction of propagation can be

Page 199: EMMC - iMechanica

C.5. Maximum hoop stress criterion 185

determined by setting the shear stress σrθ in equation (C.49) to zero. After some

trigonometrical manipulations, the following expression is obtained

1√2πr

cos(θ

2)

[1

2KI sin(θ) +

1

2KII(3 cos(θ)− 1)

]= 0 (C.50)

This leads to the equation defining the angle of crack propagation θc in the tip

coordinate system

KI sin(θc) + KII(3 cos(θc)− 1) = 0 (C.51)

By using t = tan(θc/2), and solving an quadratic equation, we obtain

θc = 2 arctan

1

4

KI

KII

±√(

KI

KII

)2

+ 8

(C.52)

If KII = 0 then θc = 0 (pure mode I) and by noting that if KII > 0, the crack

growth angle θc < 0, and if KII < 0 then, θc > 0, a more efficient expression for θc

is implemented (Suo,2002):

θc = 2 arctan

[−2KII/KI

1 +√

1 + 8(KII/KI)2

](C.53)