The eXtended Finite Element Method (XFEM)

Hello,

The aim of this writting is to give a brief introduction to the eXtended Finite Element Method (XFEM) and investigation of its practical applications.

Firstly introduced in 1999 by the work of Black and Belytschko, XFEM is a local partition of unity (PUM) enriched finite element method. By local, it means that only a region near the discontinuties such as cracks, holes, material interfaces are enriched. The most important concept in this method is "enrichment" which means that the displacement approximation is enriched (incorporated) by additional problem-specific functions. For example, for crack modelling, the Heaviside function is used to enrich nodes whose support cut by the crack face whereas the near tip asymptotic functions are used to model the crack tip singularity (nodes whose support containes the tip are enriched).

From its appearance, XFEM has been used to model several applied mechanics problems. Quasi static crack propagation in 2D and 3D were introduced by the work of Dolbow, Sukumar, Moes; branched and intersecting cracks by Daux et al(2000); dynamic fracture was studied by Belytschko's group and Alain Combescure's group. The later group also have introduced many interesting results in confined plastic fracture mechanics.

Computer implementation aspects of new proposed methods always make the method itself apparent. In this context, one can cite the work of Sukumar and Prevost on Fortran implementation and the work of Bordas and Nguyen on object-oriented programming which was published recently on IJNME.

All of the previous work are about homogeneous materials. For heterogeneous materials in the XFEM framework, the paper of Sukumar on polycristall structure, Dolbow on functionally graded material and one of Moes are the only work (to the author's knowledge) in this field.

XFEM allows the discontinuties not align with the finite element mesh, then crack propagation simulation without remeshing. However, the numerical integration of elements cut by the discontinuity require special treatment. The most commonly adopted method is to divide element into subdomains on two sides of the line of discontinuty. This method is flexible but not appropriate for history-dependent material where the projection of variables from old Gauss points to new ones are inevitable. In order to replace this method, Giulio Ventura proposed one method without element decomposition into subdomains. However, until now, this method is limited to elements completely cut by discontinuity.

Due to enrichment, in the XFEM, additional degrees of freedom are introduced which can make the implementation of XFEM into available commercial FE code difficult. Recently Belytschko and colloborators proposed a new method without additional d.o.fs by using the moving least square. However, it is obvious that MLS shape functions are very heavy computational, which makes this method not so much attractive (am I wrong? :-)).

Beside the original XFEM version, many instances have been introduced such as the cohesive segment method of Wells where only the Heaviside is adopted to enrich the displacement field.

Another interesting topic involved in the development of the XFEM is the method used to represent the geometry of discontinuties (noting that they are not meshed in XFEM). It is the Level Set Method (LSM) which have been proved to be the most reliable method. Problem is that, often, LSM is used over the uniform Cartesian grid while the finite element mesh is usualy unstructured mesh. Therefore, one could use a structured grid for the level sets and unstructured mesh for mechanical fields. It is in fact the work of Duddu and Bordas in the biofilm application. However, to me, many details have not been introduced and 3D application is still of interest.

I believe that there are still many XFEM's application which are not cited here. It is only due to limited knowledge of the author. I hope that we can cite all application of XFEM to access its strength as well as its limits.

Thanks.


XFEM

I am a PhD student in Department of Mechanical Engineering of University of Aveiro, Portugal.

I studied papers on XFEM methods and I am trying to implement XFEM in my finite element code to enrich the asymptotic near tip crack field, but I am having a difficulty.

I constructed the strain-displacement matrix in the FEM method, then we have Kuu, Kua and Kaa stiffness matrices. My problem is that I want to invert Kaa to perform static condensation of the enriched degrees of freedom and I cannot invert Kaa because a lot of eigenvalues of this matrix are zero. I cannot find any bug in my implementation. Did you experienced similar problems with your implementation or did you perform enrichment in a different way?
If you could help me, I would appreciate it very much!Sofia.


John E. Dolbow's picture

re: XFEM

Sofia,

We typically do not attempt to statically condense out the enriched degrees of freedom with the X-FEM.   One simply solves for all of the degrees of freedom (classical plus enriched) at once.  


Marco A. Fdz's picture

XFEM- Matrix of extended shape functions derivatives

Hello,   I am interesting on the implementation of XFEM for fracture problems, especially for quasi-static crack growth analysis.  (Currently)I have been reading all around the X-FEM (papers published, programs, etc), also I am exploring the XFEM matlab code developed by Nguyen Vinh Phu and Dr. Stephane Bordas  (http://people.civil.gla.ac.uk/~bordas). However some basic queries regarding the evaluation of enriched shape functions and how to form the associated matrix of extended shape functions derivatives [B], launch me to consult your help. I noticed that in some earlier publications, the evaluation of each enrichment function is performed only at simple sample points (i.e. gauss points) w.r.t  the crack, and in others like in your job it is performed on two different points at the same time (i.e. gauss point and the node to enrich) also w.r.t. the crack.

For the last, Why did you do a subtraction of both evaluations?  Are there specific reasons?,  and what can you recommend me?  I know that my question could be very obviously, but as soon as I noticed, the doubt arise.

To be more explicit for example in the former, the following about the build of matrix [B] is reported as: for a H(x)  enrichment type                     Bia     =[(Ni*H),x    0

                                                                                   0     (Ni*H),y

                                                                                (Ni*H),y (Ni*H),x]

  for a B(x) enrichment type                        Bibalpha=[(Ni*PHIa),x       0

                                                                               0     (Ni*PHIa),y

                                                                                (Ni*PHIa),y  (Ni*PHIa),x]

 And in your code a subtraction between the evaluation of two different points are done,

for a H(x)  enrichment type                        Bia    = [(Ni*(H-H(xi))),x                  0

                                                                                 0           (Ni*(H-H(xi))),y

                                                                         (Ni*(H-H(xi))),y (Ni*(H-H(xi))),x]

  for a B(x) enrichment type                         Bbalpha= [(Ni*(PHIa-PHIa(xk))),x    0                                                                                     0                  (Ni*(PHIa-PHIa(xk))),y                                                                         (Ni*(PHIa-PHIa(xk))),y (Ni*(PHIa-PHIa(xk))),x] ___________________________________________________________________

Thanks in advance for your support.  Marco


XFEM Matlab code

Hello,

I am doing MS in Civil Engineering Dept. in the Indian Institute of Science, Bangalore.

My problem involves crack propagation under fatigue loading, for which I am going to implement the XFEM method.

For that I was trying to download the Extended FEM Matlab code from http://people.civil.gla.ac.uk/~bordas/phu.html, but was unable to download.

I am studying all the XFEM related papers, to start coding the method, I thought it would be easier if I go through a code for a basic XFEM problem.

If anybody has the code, please send it to me at aditya[at]civil[dot]iisc[dot]ernet[dot]in

Thank You.