The PLUTO Code

Code Version: 4.4-patch2 (Jun 2021)

PLUTO is a freely-distributed software for the numerical solution of mixed hyperbolic/parabolic systems of partial differential equations (conservation laws) targeting high Mach number flows in astrophysical plasma dynamics. The code is designed with a modular and flexible structure whereby different numerical algorithms can be separately combined to solve systems of conservation laws using the finite volume or finite difference approach based on Godunov-type schemes.

The code is written in the C programming language while the AMR interface also requires also C++.

PLUTO is a highly portable software and can run from a single workstation up to several thousands processors using the Message Passing Interface (MPI) to achieve highly scalable parallel performance.

The software is developed at the Dipartimento di Fisica, Torino University in a joint collaboration with INAF, Osservatorio Astronomico di Torino and currently under the support of the  SPACE Center of Excellence.


Code Overview

At present, PLUTO can solve different systems of conservation laws in 1, 2 or 3 dimensions using Cartesian, cylindrical or spherical coordinates. The four basic physics modules are

  • Classical hydrodynamics (Euler or Navier-Stokes equations, HD);
  • Magnetohydrodynamics (MHD);
  • Special Relativistic hydrodynamics (RHD);
  • Special Relativistic MHD (RMHD);
  • Resistive Relativistic MHD (ResRMHD)
  • Radiation Relativistic Hydrodynamics (RadRMHD)

On top of these, different physical processes or additional modules may be enabled:

  • Non ideal dissipative processes:   Viscosity / Thermal conduction / Resistivity; 
  • Optically thin radiative losses including atomic / molecular cooling;
  • Ionization / recombination chemical reaction network;
  • Different equations of state: Isothermal / Ideal / Synge / general non-constant gamma-law;
  • Fixed gravity; 
  • Shearing box equations;

The current release adds Particles support, Hall MHD, forced turbulence and RK-Legendre time stepping for parabolic problems. 

Equations are discretized and solved on a structured mesh that can be either static or adaptive. The AMR interface relies on the Chombo library for parallel calculations over block-structured, adaptively refined grids. PLUTO supports finite volume computations in different coordinate systems, including  Cartesian / Cylindrical Axisymmetric / Polar / Spherical coordinates.

Additional External Modules

- Self Gravity (New !) module developed by A. Mandal may be downloaded here


Available numerical methods.

Modularity applies not only to the type of equations being solved but also to the capability of enabling different numerical algorithms to be employed and combined in different contexts and different components. 

PLUTO solves the fluid equations by means of shock-capturing Godunov-type methods adopting a conservative discretization based on finite volume or finite difference methods. In this formulation interface fluxes are computed by solving a Riemann problem between left and right interface states. A typical time step cycle consists of a i) an explicit time-marching algorithm, ii) a piece-wise reconstruction scheme, iii) a Riemann solver.

For each step, different options can be indipendently selected from:

  • Time stepping: RK time stepping / Characteristic Tracing / MUSCL-Hancock for hyperbolic PDE;  Super-Time-Stepping / RK-Legendre to speed-up explicit time-stepping for parabolic terms, FARGO scheme for orbital advection of (magnetized) shear flows
  • Reconstruction: 2nd-order slope-limited TVD, PPM, WENO and MP5
  • Riemann Solvers: two-Shocks, Roe, HLLD, HLLC, HLL and Lax-Friedrichs;

In addition, MHD and relativistic MHD are evolved by selecting different strategies to enforce the divergence-free condition, including Constrained transport (CT) / hyperbolic divergence cleaning / Powell's 8 wave formulation.

Please refer to the documentation page for more information.


Terms of use.

PLUTO is distributed freely under the GNU general public license. Codes development and support requires a great deal of work and for this reason we expect PLUTO to be referenced and acknowledged by authors who use it for their publications. Co-authorship may be solicited for those publications demanding considerable additional support and/or changes to the code.


Method Papers.

  • 4th-Order Finite Volume method paper: "A 4th-order accurate finite volume method for ideal classical and special relativistic MHD based on pointwise reconstructions", Berta et al., JCoPh (2024) 49912701B
  • Self-Gravity method paper: "A self-gravity module for the PLUTO code.", A. Mandal, D. Mukherjee, A. Mignone, ApJS (2023)  268, 40
  • Upwind Constrained Transport method paper: “Systematic construction of upwind constrained transport schemes for MHD”,  A. Mignone, L. Del Zanna, JCoPh (2021) 42409748M
  • Dust Particles method paper: “A Particle Module for the PLUTO Code. III. Dust”,  A. Mignone, M. Flock & B. Vaidya, ApJS (2019) 244, 38M
  • Resistive Relativistic MHD method paper: “A constrained transport method for the solution of the resistive relativistic MHD equations”,  Mignone et al., MNRAS (2019) 486, 4252M
  • Lagrangian Particles method paper: “A Particle Module for the PLUTO Code. II. Hybrid Framework for Modeling Nonthermal Emission from Relativistic Magnetized Flows”, Vaidya et al., ApJ (2018) 865, 144V
  • MHD-PIC method paper: “A Particle Module for the PLUTO Code. I. An Implementation of the MHD-PIC Equations”, Mignone et al., ApJ (2018) 859, 13M
  • Finite Difference method paper: “High-order conservative finite difference GLM-MHD schemes for cell-centered MHD”, Mignone et al., JCoPh (2010) 229, 5896M
  • Orbital Advection method paper: “A conservative orbital advection scheme for simulations of magnetized shear flows with the PLUTO code”, Mignone et al., A&A (2012) 545A, 152M
  • Adaptive mesh refinement method paper: "The PLUTO Code for Adaptive Mesh Computations in Astrophysical Fluid Dynamics”, Mignone et al, ApJS (2012) 198, 7
  • Static grid (original) method paper: "PLUTO: A Numerical Code for Computational Astrophysics”, Mignone et al., ApJS (2007) 170, Issue 1, pp. 228-242


© PLUTO Team - 2024