PSD (Parallel finite element Solver for continuum Dynamics) is a high-performance finite element solver for solid mechanics applications. Designed for large-scale simulations, PSD is capable of solving problems with billions of unknowns in both static and dynamic regimes, with support for linear and nonlinear models.
At its core, PSD uses:
It supports advanced material and fracture models, including hybrid phase-field fracture mechanics, and leverages the generalized-α time integration scheme, enabling seamless use of Newmark-β, central difference, or Hilber-Hughes-Taylor (HHT) methods.
PSD’s parallel capabilities are based on a domain decomposition approach using vectorial finite elements. It demonstrates quasi-optimal scalability and has been successfully tested on up to 24,000 cores, solving problems with over 5 billion unknowns.
A sequential version of the solver is also available and does not require PETSc.
- 2D and 3D simulations
- Static solid mechanics
- Transient solid dynamics
- Hybrid phase-field fracture mechanics
- Linear and nonlinear material behaviors, including elastoplasticity with strain hardening
- High-performance parallel computing
- Generalized-α time integration
- Native support for:
.mesh(MEDIT).msh(Gmsh).med(SALOME)
- Output support:
.pvd,.vtk,.vtu(ParaView)- ASCII trace files for physical quantities
Refer to the installation guide here.
Explore tutorials for different physics modules:
PSD is a TUI (terminal user interface) based finite element solver. Parallel or sequential PSD simulations can run on Linux platforms. Command line options (flags) which user enters are used to control the PSD solver. In order to make your choice of physics, model, mesh, etc., command line options need to be typed right into the bash.
A typical PSD simulation is performed in three steps.
Step 1: Setting up the solver
Its time to set up the PSD solver. Open the terminal window at the location of the solver, i.e., $HOME/PSD/Solver. Then run the following command in the terminal.
PSD_PreProcess [Options-PSD]Via the command line options you will embed the physics within the solver. This step generates a bunch of .edp files which are native to FreeFEM and additionally prints out instructions on what to do next. You then need to open and edit couple of these files via your favourite text editor, which could be vim, gedit ,Notepad++, etc. To facilitate the edit process for your will have to go through the instructions printed on the terminal.
For example to generate a sequential 2D elasticity solver for a problem with body force and one Dirichlet border use
PSD_PreProcess -dimension 2 -bodyforceconditions 1 -dirichletconditions 1Step 2: Launching the solver
Now you are all set to run your simulation. To do so you will need to do the run the following in the terminal:
if you complied a parallel PSD version
PSD_Solve -np $N Main.edp -v 0 -nwif you complied a sequential PSD version
PSD_Solve_Seq Main.edp -v 0 -nw- In the parallel command $N is an
intvalue, i.e., number of processes that you want to use for performing the simulation in parallel. - Additional flag
-wgmay be required while launching the solver, this is in case debug mode is on.
Step 3: Result visualization Final step is to have a look at the results of the simulation. PSD can provides output results in the form of plots, finite element fields of interest, etc. ParaView's pvd, vtu, and pvtu files are used for postprocessing (see figure below). ASCII data files that to trace certain quantities of interest like reaction forces, kinetic energies, etc can also be outputted.
We welcome contributions to PSD! To ensure a smooth collaboration and maintain the high standards required for parallel FEM solvers, please follow these guidelines:
- Contributing: Please read and follow CONTRIBUTING.md in order to contribute to PSD.
- Community: We follow the CODE_OF_CONDUCT.md to ensure a welcoming and professional environment for all researchers and developers.
- Issues: If you find a bug or have a feature request, please open an entry in the Issue Tracker.

