Next:
0. License
Contents
Index
FLASH User's Guide
Version 4.7.1
July 2023 (last updated December 2, 2023)
Flash Center for Computational Science
University of Rochester
0
. License
0
.
1
Acknowledgments in Publication
0
.
2
Full License Agreement
Contents
1
. Introduction
1
.
1
What's New in FLASH4
1
.
2
External Contributions
1
.
3
Known Issues in This Release
1
.
4
About the User's Guide
I
. Getting Started
2
. Quick Start
2
.
1
System requirements
2
.
2
Unpacking and configuring FLASH for quick start
2
.
3
Alternative Configuration With a Docker Image
2
.
4
Running FLASH
3
. Setting Up New Problems
3
.
1
Creating a
Config
file
3
.
2
Creating a
Makefile
3
.
3
Creating a
Simulation_data.F90
3
.
4
Creating a
Simulation_init.F90
3
.
5
Creating a
Simulation_initBlock.F90
3
.
6
Creating a
Simulation_freeUserArrays.F90
3
.
7
The runtime parameter file (
flash.par
)
3
.
8
Running your simulation
II
. The FLASH Software System
4
. Overview of FLASH architecture
4
.
1
FLASH Inheritance
4
.
2
Unit Architecture
4
.
2
.
1
Stub Implementations
4
.
2
.
2
Subunits
4
.
2
.
3
Unit Data Modules,
_init
, and
_finalize
routines
4
.
2
.
4
Private Routines: kernels and helpers
4
.
3
Unit Test Framework
5
. The FLASH configuration script (
setup
)
5
.
1
Setup Arguments
5
.
2
Comprehensive List of Setup Arguments
5
.
3
Using Shortcuts
5
.
4
Setup Variables and Preprocessing
Config
Files
5
.
5
Config
Files
5
.
5
.
1
Configuration file syntax
5
.
5
.
2
Configuration directives
5
.
6
Creating a Site-specific
Makefile
5
.
7
Files Created During the
setup
Process
5
.
7
.
1
Informational files
5
.
7
.
2
Code generated by the
setup
call
5
.
7
.
3
Makefiles generated by
setup
5
.
8
Setup a hybrid MPI+OpenMP FLASH application
5
.
9
Setup a FLASH+Chombo application
5
.
9
.
1
Overview
5
.
9
.
2
Build procedure
6
. The
Flash.h
file
6
.
1
UNK
,
FACE(XYZ)
Dimensions
6
.
2
Property Variables, Species and Mass Scalars
6
.
3
Fluxes
6
.
4
Scratch Vars
6
.
5
Fluid Variables Example
6
.
6
Particles
6
.
6
.
1
Particles Types
6
.
6
.
2
Particles Properties
6
.
7
Non-Replicated Variable Arrays
6
.
7
.
1
Per-Array Macros
6
.
7
.
2
Array Partitioning Macros
6
.
7
.
3
Example
6
.
8
Other Preprocessor Symbols
III
. Driver Unit
7
. Driver Unit
7
.
1
Driver Routines
7
.
1
.
1
Driver_initFlash
7
.
1
.
2
Driver_evolveFlash
7
.
1
.
3
Driver_finalizeFlash
7
.
1
.
4
Driver accessor functions
7
.
1
.
5
Time Step Limiting
IV
. Infrastructure Units
8
. Grid Unit
8
.
1
Overview
8
.
2
GridMain
Data Structures
8
.
3
Computational Domain
8
.
4
Boundary Conditions
8
.
4
.
1
Boundary Condition Types
8
.
4
.
2
Boundary Conditions at Obstacles
8
.
4
.
3
Implementing Boundary Conditions
8
.
5
Uniform Grid
8
.
5
.
1
FIXEDBLOCKSIZE Mode
8
.
5
.
2
NONFIXEDBLOCKSIZE mode
8
.
6
Adaptive Mesh Refinement (AMR) Grid with Paramesh
8
.
6
.
1
Additional Data Structures
8
.
6
.
2
Grid Interpolation
8
.
6
.
3
Refinement
8
.
7
Chombo
8
.
7
.
1
Using Chombo in a UG configuration
8
.
7
.
2
Using Chombo in an AMR configuration
8
.
8
GridMain Usage
8
.
9
GridParticles
8
.
9
.
1
GridParticlesMove
8
.
9
.
2
GridParticlesMapToMesh
8
.
10
GridSolvers
8
.
10
.
1
Pfft
8
.
10
.
2
Poisson equation
8
.
10
.
3
Using the Poisson solvers
8
.
10
.
4
HYPRE
8
.
11
Grid Geometry
8
.
11
.
1
Understanding 1D, 2D, Curvilinear
8
.
11
.
2
Choosing a Geometry
8
.
11
.
3
Geometry Information in Code
8
.
11
.
4
Available Geometries
8
.
11
.
5
Conservative Prolongation/Restriction on Non-Cartesian Grids
8
.
12
Unit Test
9
. IO Unit
9
.
1
IO Implementations
9
.
2
Output Files
9
.
2
.
1
Checkpoint files - Restarting a Simulation
9
.
2
.
2
Plotfiles
9
.
2
.
3
Particle files
9
.
2
.
4
Integrated Grid Quantities - flash.dat
9
.
2
.
5
General Runtime Parameters
9
.
3
Restarts and Runtime Parameters
9
.
4
Output Scalars
9
.
5
Output User-defined Arrays
9
.
6
Output Scratch Variables
9
.
7
Face-Centered Data
9
.
8
Output Filenames
9
.
9
Output Formats
9
.
9
.
1
HDF5
9
.
9
.
2
Parallel-NetCDF
9
.
9
.
3
Direct IO
9
.
9
.
4
Output Side Effects
9
.
10
Working with Output Files
9
.
11
Unit Test
9
.
12
Chombo
9
.
13
Derived data type I/O
10
. Runtime Parameters Unit
10
.
1
Defining Runtime Parameters
10
.
2
Identifying Valid Runtime Parameters
10
.
3
Routine Descriptions
10
.
4
Example Usage
11
. Multispecies Unit
11
.
1
Defining Species
11
.
2
Initializing Species Information in
Simulation_initSpecies
11
.
3
Specifying Constituent Elements of a Species
11
.
4
Alternative Method for Defining Species
11
.
5
Routine Descriptions
11
.
6
Example Usage
11
.
7
Unit Test
12
. Physical Constants Unit
12
.
1
Available Constants and Units
12
.
2
Applicable Runtime Parameters
12
.
3
Routine Descriptions
12
.
4
Unit Test
V
. Physics Units
13
. 3T Capabilities for Simulation of HEDP Experiments
14
. Hydrodynamics Units
14
.
1
Gas hydrodynamics
14
.
1
.
1
Usage
14
.
1
.
2
The piecewise-parabolic method (PPM)
14
.
1
.
3
The unsplit hydro solver
14
.
1
.
4
The Volume-of-Fluid Solver
14
.
1
.
5
Multitemperature extension for Hydro
14
.
1
.
6
Chombo compatible Hydro
14
.
2
Relativistic hydrodynamics (RHD)
14
.
2
.
1
Overview
14
.
2
.
2
Equations
14
.
2
.
3
Relativistic Equation of State
14
.
2
.
4
Additional Runtime Parameter
14
.
3
Magnetohydrodynamics (MHD)
14
.
3
.
1
Description
14
.
3
.
2
Usage
14
.
3
.
3
Algorithm: The Unsplit Staggered Mesh Solver
14
.
3
.
4
Algorithm: The Eight-wave Solver
14
.
3
.
5
Extended MHD
14
.
4
Radiation-Flux-Limiter Aware Hydrodynamics
15
. Incompressible Navier-Stokes Unit
16
. Equation of State Unit
16
.
1
Introduction
16
.
2
Gamma Law and Multigamma
16
.
2
.
1
Ideal Gamma Law for Relativistic Hydrodynamics
16
.
3
Helmholtz
16
.
4
Multitemperature extension for Eos
16
.
4
.
1
Gamma
16
.
4
.
2
Multigamma
16
.
4
.
3
Tabulated
16
.
4
.
4
Multitype
16
.
5
MultiFluid
16
.
6
Usage
16
.
6
.
1
Initialization
16
.
6
.
2
Runtime Parameters
16
.
6
.
3
Direct and Wrapped Calls
16
.
7
Unit Test
17
. Local Source Terms
17
.
1
Burn Unit
17
.
1
.
1
Algorithms
17
.
1
.
2
Reaction networks
17
.
1
.
3
Detecting shocks
17
.
1
.
4
Energy generation rates and reaction rates
17
.
1
.
5
Temperature-based timestep limiting
17
.
2
Ionization Unit
17
.
2
.
1
Algorithms
17
.
2
.
2
Usage
17
.
3
Stir Unit
17
.
3
.
1
Stir Unit: Generate Implementation
17
.
3
.
2
Stir Unit: FromFile Implementation
17
.
3
.
3
Using the StirFromFile Unit
17
.
3
.
4
Stirring Unit Test
17
.
4
Energy Deposition Unit
17
.
4
.
1
Ray Tracing in the Geometric Optics Limit
17
.
4
.
2
Laser Power Deposition
17
.
4
.
3
Laser Energy Density
17
.
4
.
4
Algorithmic Implementations of the Ray Tracing
17
.
4
.
5
Setting up the Laser Pulse
17
.
4
.
6
Setting up the Laser Beam
17
.
4
.
7
Setting up the Rays
17
.
4
.
8
3D Laser Ray Tracing in 2D Cylindrical Symmetry
17
.
4
.
9
Ray Tracing in 3D Cylindrical Domains
17
.
4
.
10
Synchronous and Asynchronous Ray Tracing
17
.
4
.
11
Usage
17
.
4
.
12
Unit Tests for 3D/2D Cartesian Domain Geometries
17
.
4
.
13
Unit Tests for 3D Cylindrical Domain Geometries
17
.
5
Heatexchange
17
.
5
.
1
Spitzer Heat Exchange
17
.
5
.
2
LeeMore Heat Exchange
17
.
6
Flame
17
.
6
.
1
Reaction-Diffusion Forms
17
.
6
.
2
Unit Structure
17
.
7
Turbulence Measurement
17
.
8
Circuit
17
.
8
.
1
Constant
17
.
8
.
2
FileInput
17
.
8
.
3
McBride
17
.
8
.
4
CESZAR
18
. Diffusive Terms
18
.
1
Diffuse Unit
18
.
1
.
1
Diffuse Flux-Based implementations
18
.
1
.
2
General Implicit Diffusion Solver
18
.
1
.
3
Flux Limiters
18
.
1
.
4
Isotropic Thermal Diffusion
18
.
1
.
5
Anisotropic Thermal Diffusion
18
.
1
.
6
Magnetic Diffusion
19
. Gravity Unit
19
.
1
Introduction
19
.
2
Externally Applied Fields
19
.
2
.
1
Constant Gravitational Field
19
.
2
.
2
Plane-parallel Gravitational field
19
.
2
.
3
Gravitational Field of a Point Mass
19
.
2
.
4
User-Defined Gravitational Field
19
.
3
Self-gravity
19
.
3
.
1
Coupling Gravity with Hydrodynamics
19
.
3
.
2
Tree Gravity
19
.
4
Usage
19
.
4
.
1
Tree Gravity Unit Usage
19
.
5
Unit Tests
20
. Particles Unit
20
.
1
Time Integration
20
.
1
.
1
Active Particles (Massive)
20
.
1
.
2
Charged Particles - Hybrid PIC
20
.
1
.
3
Passive Particles
20
.
2
Mesh/Particle Mapping
20
.
2
.
1
Quadratic Mesh Mapping
20
.
2
.
2
Cloud in Cell Mapping
20
.
3
Using the Particles Unit
20
.
3
.
1
Particles Runtime Parameters
20
.
3
.
2
Particle Attributes
20
.
3
.
3
Particle I/O
20
.
3
.
4
Unit Tests
20
.
4
Sink Particles
20
.
4
.
1
Basics of Sink Particles
20
.
4
.
2
Using the Sink Particle Unit
20
.
4
.
3
The Sink Particle Method
20
.
4
.
4
Sink Particle Unit Test
21
. Cosmology Unit
21
.
1
Algorithms and Equations
21
.
2
Using the Cosmology unit
21
.
3
Unit Test
22
. Material Properties Units
22
.
1
Thermal Conductivity
22
.
1
.
1
Anisotropic Thermal Conductivity
22
.
2
Magnetic Resistivity
22
.
2
.
1
Constant resistivity
22
.
2
.
2
Spitzer HighZ resistivity
22
.
2
.
3
DaviesWen resistivity
22
.
2
.
4
Vacuum resistivity
22
.
3
Viscosity
22
.
3
.
1
Constant Viscosity
22
.
3
.
2
Spitzer Viscosity
22
.
4
Thermoelectric Coefficients
22
.
4
.
1
Constant thermoelectric coefficients
22
.
4
.
2
DaviesWen thermoelectric coefficients
22
.
5
Opacity
22
.
5
.
1
Constant Implementation
22
.
5
.
2
Constcm2g Implementation
22
.
5
.
3
BremsstrahlungAndThomson Implementation
22
.
5
.
4
OPAL Implementation
22
.
5
.
5
Multispecies Implementation
22
.
5
.
6
The IONMIX EOS/Opacity Format
22
.
6
Mass Diffusivity
23
. Physics Utilities
23
.
1
PlasmaState
24
. Radiative Transfer Unit
24
.
1
Multigroup Diffusion
24
.
1
.
1
Using Multigroup Radiation Diffusion
24
.
1
.
2
Using Mesh Replication with MGD
24
.
1
.
3
Specifying Initial Conditions
24
.
1
.
4
Altering the Radiation Spectrum
VI
. Monitor Units
25
. Logfile Unit
25
.
1
Meta Data
25
.
2
Runtime Parameters, Physical Constants, and Multispecies Data
25
.
3
Accessor Functions and Timestep Data
25
.
4
Performance Data
25
.
5
Example Usage
26
. Timer and Profiler Units
26
.
1
Timers
26
.
1
.
1
MPINative
26
.
1
.
2
Tau
26
.
2
Profiler
VII
. Diagnostic Units
27
. Proton Imaging Unit
27
.
0
.
1
Proton Deflection by Lorentz Force
27
.
0
.
2
Setting up the Proton Beam
27
.
0
.
3
Creating the Protons
27
.
0
.
4
Setting up the Detector Screens
27
.
0
.
5
Time Resolved Proton Imaging
27
.
0
.
6
Usage
27
.
0
.
7
Unit Test
28
. Proton Emission Unit
28
.
0
.
1
Proton Generation
28
.
0
.
2
Proton Detector Screens
28
.
0
.
3
Proton Emission Boxes
28
.
0
.
4
Usage
29
. Thomson Scattering Unit
29
.
1
Thomson Scattering including Ray Tracing and Deflection
29
.
1
.
1
Identifying the Interaction Region
29
.
1
.
2
Assembling the Thomson Scattering Spectra
29
.
1
.
3
Usage
29
.
2
Simple Thomson Scattering without Ray Tracing
29
.
2
.
1
Ray Tracing in the Geometric Optics Limit
29
.
2
.
2
Laser Power Deposition
29
.
2
.
3
Laser Energy Density
29
.
2
.
4
Algorithmic Implementations of the Ray Tracing
29
.
2
.
5
Setting up the Probe Laser Pulse
29
.
2
.
6
Setting up the Laser Beam
29
.
2
.
7
Creating the Rays
29
.
2
.
8
Setting up the Detectors
29
.
2
.
9
Usage
29
.
2
.
10
Example Setup
30
. X-ray Imaging Unit
30
.
0
.
1
X-ray Paths through Domain
30
.
0
.
2
Creating and Tracing the X-rays
30
.
0
.
3
Setting up and Recording on the X-ray Detector Screens
30
.
0
.
4
Usage
30
.
0
.
5
Unit Test
VIII
. Numerical Tools Units
31
. Interpolate Unit
31
.
1
Introduction
31
.
2
Piecewise Cubic Interpolation
31
.
3
Usage
32
. Roots Unit
32
.
1
Introduction
32
.
2
Roots of Quadratic Polynomials
32
.
3
Roots of Cubic Polynomials
32
.
4
Roots of Quartic Polynomials
32
.
5
Usage
32
.
6
Unit Tests
32
.
6
.
1
Quadratic Polynomials Root Test
32
.
6
.
2
Cubic Polynomials Root Test
32
.
6
.
3
Quartic Polynomials Root Test
33
. RungeKutta Unit
33
.
1
Introduction
33
.
2
Runge Kutta Integration
33
.
3
Usage
33
.
4
Unit Tests
33
.
4
.
1
Runge Kutta FLASH Test for a 2D Elliptical Path
33
.
4
.
2
Runge Kutta FLASH Test for Binomial Homogeneous Higher Order ODE
IX
. Simulation Units
34
. The Supplied Test Problems
34
.
1
Hydrodynamics Test Problems
34
.
1
.
1
Sod Shock-Tube
34
.
1
.
2
Variants of the Sod Problem in Curvilinear Geometries
34
.
1
.
3
Interacting Blast-Wave
Blast2
34
.
1
.
4
Sedov Explosion
34
.
1
.
5
Isentropic Vortex
34
.
1
.
6
The double Mach reflection problem
34
.
1
.
7
Wind Tunnel With a Step
34
.
1
.
8
The Shu-Osher problem
34
.
1
.
9
Driven Turbulence
StirTurb
34
.
1
.
10
Relativistic Sod Shock-Tube
34
.
1
.
11
Relativistic Two-dimensional Riemann
34
.
1
.
12
Flow Interactions with Stationary Rigid Body
34
.
2
Magnetohydrodynamics Test Problems
34
.
2
.
1
Brio-Wu MHD Shock Tube
34
.
2
.
2
Orszag-Tang MHD Vortex
34
.
2
.
3
Magnetized Accretion Torus
34
.
2
.
4
Magnetized Noh Z-pinch
34
.
2
.
5
MHD Rotor
34
.
2
.
6
MHD Current Sheet
34
.
2
.
7
Field Loop
34
.
2
.
8
3D MHD Blast
34
.
3
Gravity Test Problems
34
.
3
.
1
Jeans Instability
34
.
3
.
2
Homologous Dust Collapse
34
.
3
.
3
Huang-Greengard Poisson Test
34
.
3
.
4
MacLaurin
34
.
4
Particles Test Problems
34
.
4
.
1
Two-particle
Orbit
34
.
4
.
2
Zel'dovich Pancake
34
.
4
.
3
Modified Huang-Greengard Poisson Test
34
.
5
Burn Test Problem
34
.
5
.
1
Cellular Nuclear Burning
34
.
6
RadTrans Test Problems
34
.
6
.
1
Infinite Medium, Energy Equilibration
34
.
6
.
2
Radiation Step Test
34
.
7
Other Test Problems
34
.
7
.
1
The non-equilibrium ionization test problem
34
.
7
.
2
The Delta-Function Heat Conduction Problem
34
.
7
.
3
The HydroStatic Test Problem
34
.
7
.
4
Hybrid-PIC Test Problems
34
.
7
.
5
Full-physics Laser Driven Simulation
34
.
7
.
6
Laser Driven Simulation with Thomson Scattering Diagnostics
34
.
7
.
7
Z-pinch Simulation
34
.
8
3T Shock Simulations
34
.
8
.
1
Shafranov Shock
34
.
8
.
2
Non-Equilibrium Radiative Shock
34
.
8
.
3
Blast Wave with Thermal Conduction
34
.
9
Matter+Radiation Simulations
34
.
9
.
1
Radiation-Inhibited Bondi Accretion
34
.
9
.
2
Radiation Blast Wave
34
.
9
.
3
1D Supernova
X
. Tools
35
. VisIt
36
. Serial FLASH Output Comparison Utility (
sfocu
)
36
.
1
Building
sfocu
36
.
2
Using
sfocu
37
. Drift
37
.
1
Introduction
37
.
2
Enabling drift
37
.
3
Typical workflow
37
.
4
Caveats and Annoyances
38
. FLASH IDL Routines (
fidlr3.0
)
38
.
1
Installing and Running
fidlr3.0
38
.
1
.
1
Setting Up
fidlr3.0
Environment Variables
38
.
1
.
2
Running IDL
38
.
2
xflash3
: A Widget Interface to Plotting FLASH Datasets
38
.
2
.
1
File Menu
38
.
2
.
2
Defaults Menu
38
.
2
.
3
Colormap Menu
38
.
2
.
4
X/Y plot count Menu
38
.
2
.
5
Plotting options available from the GUI
38
.
2
.
6
Plotting buttons
38
.
3
Comparing two datasets
39
. convertspec3d
39
.
1
Installation
39
.
2
Usage
XI
. Going Further with FLASH
40
. Adding new solvers
41
. Porting FLASH to other machines
41
.
1
Writing a
Makefile.h
42
. Multithreaded FLASH
42
.
1
Overview
42
.
2
Threading strategies
42
.
3
Running multithreaded FLASH
42
.
3
.
1
OpenMP variables
42
.
3
.
2
FLASH variables
42
.
3
.
3
FLASH constants
42
.
4
Verifying correctness
42
.
5
Performance results
42
.
5
.
1
Multipole solver
42
.
5
.
2
Helmholtz EOS
42
.
5
.
3
Sedov
42
.
5
.
4
LaserSlab
42
.
6
Conclusion
Back Matter
References
Index
About this document ...