I'm fooling around with the decision on how to build a multiphysics simulation for too long now (also several questions in this forum). First, I thought it would be possible/necessary to write most of it from scratch and by combining various libraries. (I did this in Matlab and Python to get familiar with the model, so I basically have an idea how to do it.) Now I learned more about more integrated platforms, for example Trilinos and PETSc. Then I learn about MOOSE that pretty much claims to be the jack of all trades. And probably a dozen other platforms.

For me as an unexperienced PhD student, it seems to be almost impossible to do an educated decision about which platform to use. So I really, really need the help of the community.


  • Multiphysics and nonlinear equations
  • Various regions with different physics and internal boundaries to each other
  • Very large simulations on many computing nodes
  • In these days it's probably mandatory to leverage GPUs.
  • Geometry will be generated programmatically and it would be very convenient to have an integrated mesher that can generate meshes from parametrically defined geometries (signed distance functions for example).
  • Can be integrated into own software
  • Liberal license, like BSD or (L)GPL

If you started such a project right now, what FEM platform would you count on?

  • 3
    $\begingroup$ Or you can write your own code on top of PETSc. The most complex part of an FE code is parallel assembly & solve, and PETSc takes care of both. $\endgroup$ – stali May 24 '16 at 19:30
  • 2
    $\begingroup$ Deal.II (dealii.org), if compiled with appropriate 3rd-party libraries (PETSc, etc), would probably do what you're interested in. The library does seem to restrict you to quad/hex elements, so you'll have to determine if that meets your requirements. The owner of the library is active on this site and can likely be more specific about each of your requirements, as I have only used it for very basic things. $\endgroup$ – Tyler Olsen May 24 '16 at 19:31
  • 2
    $\begingroup$ Perhaps not a useful answer, but I would not start such a project! Your first four requirements are quite challenging, especially for an 'unexperienced PhD student'. Perhaps you can think of ways to simplify the problem, for example by decoupling the physics, time scales and spatial scales? $\endgroup$ – Jannis Teunissen May 24 '16 at 22:37
  • $\begingroup$ @JannisTeunissen: As I said in my post, I already wrote most of the simulation from scratch for a single processor to get familiar with the model and with FEM. So I feel in the position to do it, but the enormous number of existing libraries and frameworks makes a choice extremely difficult. $\endgroup$ – Michael May 24 '16 at 22:48
  • $\begingroup$ @Michael : The fact that you are comfortable with your simulation in a single processor does not mean that the implementation in parallel will be easy. Migrating your program from sequential to parallel can be very cumbersome, especially in you haven't thought about parallel implementation before writing your code in sequential. Sometimes you need to re-write your code from scratch just to prepare parallel communication between processors. The is even more complicated if your intention is to code in GPU without knowing about the basic in parallel communication. $\endgroup$ – Coriolis May 25 '16 at 7:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.