User login


You are here

The eXtended Finite Element Method (XFEM)

phunguyen's picture


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.


Free Tags: 

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.


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.  

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  ( 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


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, 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. 


Thanks for your interest in these codes, I am happy that we finally got communicating through regular email and that you found these codes useful.

 Do not hesitate to get back to me, I strongly believe in sharing codes to facilitate work, and will be happy to help you, you can also visit computational_mechanics_discussion    on google group,

Dr Stephane Bordas

Dear Stephane,

could you please give a link to the mentioned google group. I can't find it. Thank you.


By the way, I tried to download the openXFEM++ from your homepage, but it doesn't work. 


Best regards from Munich/Germany 

Martin J. Gross



I have started exploring area of meshfree methods for my Ph.D.

Can you cite the source or reference to get one dimensional simple problems solved using any meshfree methods and their matlab codes?

Sachin Daxini







Any application of XFEM to capture compressible flow shocks?

Any suggestions will be appreciated.

Dear vinh phu nguyen

 Could XFEM be used to couple fluid flow simulation, such as in hydraulic fracturing process? Thanks.


phunguyen's picture

Dear Liu,

Here is the link where you can find everything related to XFEM including nearly complete literature.

Hope that it was a bit of help.

From what I know, there are works on using xfem for modelling fractured porous media. So the answer to your question would be yes.




r.k's picture

Hey All.

I' m M.S of petroleum engineering.

i want to simulate the cracks interactions(a propagating crack and a pre-existing crack).

But the XFEM in ABAQUS has some limitations that doesn't let me do such simulation!

I'd like to know if anyone knows any kind of subroutines(i.e cracks interactions or crack propagation related subroutines) for this kind of simulation.

Besides,that would be my pleasure to know any suggestion,idea or guidlines for my problem.


phunguyen's picture


Maybe it's too late now to reply. Anyway...

Does the preexisting crack and the propagating crack cut each other eventually? As you might know, XFEM can model arbitrary number of non-intersecting cracks well. For intersecting cracks, see the paper of Daux et al for a special enrichment strategy or Angelo Simone et al. 

Thanks for such a wonderful topic!

Here I want to know if XFEM is suitable to simulate the discontinuity interface of soil materials,such as the interface of a slipping slope.

Any advice or comment is appreciated.

phunguyen's picture

I guess across a slip plane, the tangent displcament is discontinuous while the normal disp is continuous.

 XFEM is able to model this kind of discontinuity. You should google this cause someone might have done this already.



I wonder if XFEM can effectively treat  compression loading which is normal to the crack direction (assumed to be happen). When I simulate this problem with tensile loading using ABAQUS, it's OK. However, when applying compression loading, discontinuity occurs in elements where enrichments are defined.


Sincerely yours,

Sangyul Ha


phunguyen's picture

Hi Sangyul,

Of course xfem can be used for such problems. As long as there are discontinuities, enrichment can be adopted to model those discontinuities independently of the mesh. If I remember correctly there are some reseachers simulating shear band (a plate in compression) with XFEM.

If the loading is compressive and perpendicular to the crack as you mentioned, the crack then should be closed. I do not know in Abaqus which constitutive law did you use for the crack.

Note that I have no experience about cracks in compressive loading. Above are just my thoughts.



I have the same problem, I think in pression, abaqus won't activate the enrichments.

pooya.saniei's picture


I am a M.Sc. Student in aerospace and my final project is on crack propagation in thin curved plates by means of Exteneded Finite Element Method(XFEM).

I write the code of XFEM by Fortran. But I have problem in precision of my outputs(like Displacement) around crack.

I want to know if there is some ways to solve the problem. how can i decrease my error to 1%. I have about 5-30% error around crack.


Reza Talemi's picture

thanks peopleeeeeeeeee

VIT University, Vellore

khalid_info's picture

I used the method of XFEM in Abaqus
I want to trace the crack chemain a reference (o, x, y), how to find the cords of the crack in each iteration??
how to calculate the stress intensity factor during crack propagation in abaqus6.11.?
I essey several times but it does not work.
many thanks


Is there anybody who can provide me with educational materials related to ANSYS or Abaqus, analysis using XFEM (especially for solution of multiphase flows). I want to learn how to use Xfem in these kind of softwares. Thank you!   

hi everyone my name is sarah

i am new to abaqus.i wonder if
anyone can help me. i made a crack propagation model in 2D.unfortunately
the crack wasn`t propagated. Only there was a separation between the
two surfaces where the crack line is in between. How can i make the
crack tip propagates through the line drawn?


Subscribe to Comments for "The eXtended Finite Element Method (XFEM)"

Recent comments

More comments


Subscribe to Syndicate