Project Definition


XC is a finite element structural analysis program that works as a Python module. 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)

  • Empower structural engineers.
  • Make easier to adopt an "design by analysis approach".
  • Reduce frustration disorders and carpal tunnel syndrome caused by mouse addiction (it's a joke of course) ;-).

These are the targets we want to meet

  • Provide a high-quality tool for doing structural analysis.
  • Become popular in the structural engineering community.
  • Promote knowledge sharing inside the community.
  • Show the possibilities of open source model of development

This is how our organization will gain.

  • Learning and sharing knowledge with structural engineers worldwide.
  • Obtaining support from the community.
  • Making "big goals" affordable by means of collaboration.


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

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.
  • Finally, the material models were modified to support prescribed strains, making it possible to solve problems involving thermal and rheological actions.