Skip to content

mohd-afeef-badri/psd

UB24.04 UB24.04-OpenMPI MacOs MacOs-26-openmpi

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:

  • FreeFEM for finite element discretization,
  • PETSc for scalable linear algebra and preconditioning.

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.

Features

  • 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

🔧 Installation

Refer to the installation guide here.

📚 Tutorials

Explore tutorials for different physics modules:

Quick Start: Typical Workflow of a PSD Simulation

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 1

Step 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 -nw

if you complied a sequential PSD version

PSD_Solve_Seq Main.edp -v 0 -nw
  • In the parallel command $N is an int value, i.e., number of processes that you want to use for performing the simulation in parallel.
  • Additional flag -wg may 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.

markdownimage


Contributing & Community

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.

About

Massively parallel FEM solvers for soil/structure/soild dynamics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •