XC software

XC is a Free Open Source Finite Element program, aimed directly at civil structural engineering. The program can solve various types of problems, from simple linear analysis to complex nonlinear simulations. It has a library of finite elements which can be used to modeling various geometries and multiple materials for use in various areas of structural analysis.

The purpose (mission) is to develop a robust structural analysis tool, which is owned by the community, and allows the users to improve and adapt it for their own needs. It's all about developing tools that allow us to keep going forward (much in the sense of designing for strength, economy and beauty) instead of repeating the same old solutions but in a faster way.


How?... allowing to merge the code with other software libraries: machine learning, neural networks, 3D modeling, material libraries, computation fluid dynamics,...

The program is based on Python ( script language), Opensees (analysis kernel), CGAL (computational geometry), VTK and matplotlib (for the graphics stuff) and LaTeX for text output.

«Someone said that, when the French climber Lionel Terray was asked about his reason to climb a mountain, he simply said “because it was there”. Something similar happened with the development of this program. I began the study of the finite element method after studying the analytic solutions to elastic problems (so limited) and I became greatly interested in their use in structural problems. This, coupled with my love for computer science, made me decide to develop a finite element program that would be useful to calculate structures and could be modified and expanded in any way the user wanted.
First I wrote a Pascal version of the program which only worked with bar-type elements. Then I wrote a C++ version “from scratch” that was never able to solve any nontrivial problem. Finally, I discovered the possibilities offered by the calculation core of Opensees and decided to modify it to be suitable for an “industrial environment” (as opposed to academic use)».
Luis C. Pérez Tato.

To achieve this objective, several significant modifications to the original code were required:
  • - Python language was adopted to expose C++ classes to the user. This way the user can take advantage from the enormous amount of scientific and technical libraries developed in Python.
  • - The Python interface makes possible to interpret a sentence like “get the ratio between the vertical displacement of the node closest to the center of the beam and the total span of the beam”.
  • - We added algorithms to enable mesh generation allowing the modeler to create structured grids from the description of geometry by means of points, lines, surfaces and solids.
  • - Graphics were generated using the VTK library. The Python interface makes possible to obtain the results produced by the calculation without having to extract them from predefined listings.
  • Utilities for the construction and calculation of design load combinations prescribed by the building codes (EHE, ACI 318, EAE, Eurocodes, etc.) were implemented to facilitate the verification of design requirements.
  • - The ability to activate and deactivate elements was introduced to enable the analysis of structures built in phases, geotechnical problems, and the strengthening of existing structures.
  • - Macros were written to verify the structure and its elements according to the criteria prescribed by building codes (e.g. axial and bending capacity, shear reinforcement).
  • - The code was changed to link with “standard” linear algebra libraries (e.g. BLAS, Arpack, LAPACK, SuperLU), eliminating the need to include in the program “ad-hoc” versions of these libraries.
  • - The material models were modified to support prescribed strains, making it possible to solve problems involving thermal and rheological actions.

For more information about the XC software project take a look at:

You can read more about XC in these articles: