I work in the field of Finite Element Methods, specifically, developing algorithms to speed up the computational time in structural mechanics problems. Till now I have been developing my code in Octave/Fortran and testing out my algorithms on small/simple problems (number of degrees of freedom less than 1000). Now I want to test out the algorithms on relatively large problems (number of degrees of freedom > 10000). To implement my algorithms, I need access to the system matrices: Mass, tangent Stiffness, Damping matrices, so that I can construct my reduced order model.

I would like to know which opensource FEA software (e.g., Calculix, Elmer, Tahoe or any other software) allows easy access and exchange of such information.

  • 1
    $\begingroup$ Thank you for your reply. I will look at the finite element libraries that you have mentioned and also look at Tim Davis's sparse matrix collection. On reading your side remark I did realize that I had made a typo (missed a 0) in my original posting. $\endgroup$ Commented Mar 15, 2017 at 12:48

1 Answer 1


All of the major finite element libraries (such as libMesh; FEniCS; or the project I run, deal.II) provide you with ready access to the system matrix and or any other matrices you need. They typically also have tutorials and examples from a wide variety of areas (e.g., structures, fluids, etc) that you can use to generate examples.

Maybe a simpler first step, however, is to take a look at Tim Davis's collection of matrices: http://www.cise.ufl.edu/research/sparse/matrices/list_by_id.html . These contain examples from a number of areas and you can search the collection for specific examples.

I'm going to end on a side remark: "relatively large problems" would today have far more than the 10,000 degrees of freedom you quote in your post. I would say that everything under 100,000 is small today, and everything over 1,000,000 is large if you think of solving things on a single computer.

  • 3
    $\begingroup$ I would like to add to the previous answers that modern algorithm development must generally take into account the parallelism aspect. For instance, if you develop a method that is 2x as fast on a serial computer, but that leads to great communication cost and is slower when run in a distributed environment, it is much less interesting. Like Wolfgang mentioned, less than 100 000 DOF means relatively small problems that can generally be run on a desktop computers easily... $\endgroup$
    – BlaB
    Commented Mar 14, 2017 at 13:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.