Skip to content
A CFD solver for multi-component compressible flow with application to high-explosive detonation, explosive safety and air blast
C C++ Shell Objective-C
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
applications Added reading of impulse, maxPressure, and maxImpulse fields for rest… Nov 1, 2019
media Delete .DS_Store Oct 22, 2019
src PRJ: Removed unused libraries for adaptiveFvMesh Nov 3, 2019
svgs updating readme Oct 22, 2019
tutorials/twoChargeDetonation
validation Updated updated blastwall case to 4 cores as default, added publicati… Nov 1, 2019
.gitignore
Allwclean
Allwmake
COPYING DEV: Initial commit of source code Oct 30, 2019
INPUT.md added MABS25 paper to list of publications Nov 1, 2019
README.md
blastFoam_User_Guide.pdf added blastFoam user guide Oct 30, 2019

README.md

blastFoam

blastFoam is a solver for multi-component compressible flow with application to high-explosive detonation, explosive safety and airblast. blastFoam is developed by Synthetik Applied Technologies.

Disclaimer

This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM$\textregistered$ and OpenCFD$\textregistered$ trade marks.

What is blastFoam?

blastFoam is a solver for multi-component compressible flow with application to high-explosive detonation, explosive safety and airblast. The blastFoam solver uses OpenFOAM technology, and is in no way approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM$\textregistered$ and OpenCFD$\textregistered$ trade marks (see Disclaimer above).

How to use blastFoam

Several validation and tutorial cases are included in the repository, and are documented in the blastFoam User Guide.

Installation

  1. Install OpenFOAM from source or via binary/package installation from here (blastFoam works with OF version 7).

  2. Clone the blastFoam repository

git clone https://github.com/synthetik-technologies/blastfoam.git
  1. Run the ./Allwmake script to compile and install blastFoam
cd blastfoam
./Allwmake
  1. Test your installation by running the tutorial and validation cases

Questions and Availability

If you find any bugs, please let us know in the issues section of the repository. If you want to get in touch: info@synthetik-technologies.com

blastFoam is also available on the Texas Advanced Computing Center https://www.tacc.utexas.edu (TACC)

Citation

If you use this code for your work or research, please use this citation:

blastFoam: An OpenFOAM Solver for Compressible Multi-Fluid Flow with Application to High-Explosive Detonation. Synthetik Applied Technologies, LLC., 2019.

BiBTex:

@software{blastfoam,
	title = {{blastFoam}: A Solver for Compressible Multi-Fluid Flow with Application to High-Explosive Detonation},
	url = {https://github.com/synthetik-technologies/blastfoam},
	publisher = {Synthetik Applied Technologies, {LLC}.},
	date = {2019-10-22}
}

User Guide

To cite the blastFoam User Guide.:

J. Heylmun, P. Vonk, and T. Brewer, “blastFoam User Guide.” Synthetik Applied Technologies, LLC., 30-Oct-2019.

BiBTex:

@misc{heylmun_blastfoamguide_2019,
	title = {{blastFoam version 2.0} {User} {Guide} },
	url = {https://github.com/synthetik-technologies/blastfoam},
	language = {English},
	publisher = {Synthetik Applied Technologies, LLC.},
	author = {Heylmun, Jeffrey and Vonk, Peter and Brewer, Timothy},
	month = oct,
	year = {2019}
}

blastFoam Publications:

Journals/Conferences

  1. T. Brewer, J. Heylmun, and P. Vonk, “Employment of the Open-source Airblast Solver blastFoam to Support the Super Heavy Improvised Explosive Loading Demonstration (SHIELD) Test Program,” presented at the ISIEMS, USA, 2019.
  2. D. Stephens, P. Vonk, and T. Brewer, “Validation of Open-source Airblast Solver (blastFoam) in an Urban Environment,” presented at the MABS 25, Hague, Netherlands, 2018.
  3. P. Vonk, “A New OpenFOAM Solver for Compressible Multi-Fluid Flow with Application to High-Explosive Detonation,” presented at the OpenFOAM Users Conference, Cologne, Germany, 2016.
  4. P. Vonk, T. Brewer, “A New OpenFOAM Solver for Compressible Multi-Fluid Flow with Application to High-Explosive Detonation and Extended Validation,” presented at the OpenFOAM Users Conference, USA, 2016.

Features

blastFoam currently supports the following features:

  • An arbitrary number of phases/EOS's
  • JLW equation of state with constant, linear, and "Miller" afterburn models
  • Multiple example and tutorial cases
  • Automatic mesh refinement (AMR)
  • Single and multi-point detonation
  • High-order (1st, 2nd, 3rd and 4th order in time; 2nd and 3rd order spatial)
  • HLLC, AUSM+, Kurganov, Tadmor flux schemes
  • Parallel (MPI)
  • Compatible with all of OpenFOAM's standard mesh generation, pre- and post-processing utilities

Equations of State

blastFoam includes the following equations of state:

  • Jones Wilkens Lee (JWL) (with afterburn)
  • Ideal Gas
  • Stiffened Gas
  • Cochran-Chan
  • Tait
  • Van der Waals

Verification and Validation

blastFoam has been validated against known solutions to standard gas dynamics problems, and against data from physical tests. Validation cases are included with example/tutorial cases as part of the solver source code.

Validation/Example: Internal Detonation

Reference:

Joachim, Charles E., Gordon W. McMahon, Christo V. Lunderman, and Sharon B. Garner. 1999. “Airblast Effects Research: Small-Scale Experiments and Calculations.” DTIC Document.

Validation against experimental and simulated (CTH) data as reported in Joachim et. al.; see the paper for an explanation of scaling.

Joachim validation case (scaled)

Validation/Example: Blast Loads Behind Vertical Walls

Reference:

M. E. Beyer, “Blast Loads Behind Vertical Walls,” Naval Civil Engineering Laboratory, Port Hueneme, CA, USA, AD-A181 274, 1986.

Blast Wall Case

Validation/Example: Multi-Component Flow Verification

Reference:

Zheng, H. W., C. Shu, Y. T. Chew, and N. Qin. “A Solution Adaptive Simulation of Compressible Multi-Fluid Flows with General Equation of State.” International Journal for Numerical Methods in Fluids 67, no. 5 (2011): 616–637.

Verification and validation results as compared to those published by Zheng et. al.; HLLC flux shown.

Verification plots compared with Zheng

Governing Equations

The evolution of a two phase, compressible, and inviscid mixture can be defined by a set of coupled evolution equations for mass, momentum, and energy.

$$
    \partial_t \mathbf{U} + \nabla \cdot \mathbf{F} = \mathbf{S}
$$

$$
    \mathbf{U} = 
        \left( \begin{array}{c}
           \alpha_1 \\
           \alpha_1 \rho_1 \\
           \alpha_2 \rho2 \\
           \rho \mathbf{u} \\
           \rho E
        \end{array} \right)
    \mathbf{F} = 
        \left( \begin{array}{c}
           \alpha_1 \mathbf{u} \\
           \alpha_1 \rho_1 \mathbf{u} \\
           \alpha_2 \rho_2 \mathbf{u} \\
           \rho \mathbf{u} \otimes \mathbf{u} + p \mathbf{I}\\
           (\rho E + p) \mathbf{u}
        \end{array} \right)
    \mathbf{S} = 
        \left( \begin{array}{c}
           \alpha_1 \nabla \cdot \mathbf{u} \\
           0 \\
           0 \\
           0 \\
           0
        \end{array} \right)
$$

where $\rho$ is the mixture density, $\mathbf{u}$ the mixture velocity, $E$ the total energy, $p$ the pressure, and $rho_i$ and $\alpha_i$ are the density and volume fraction of each phase.

$$
    \alpha_2 = 1 - \alpha_1
$$

$$
    \rho = \sum_i \alpha_i \rho_i
$$

$$
    \rho E = \rho e + \frac{1}{2}\rho |\mathbf{u}|^2
$$

$$
    \rho e = \sum_i \alpha_i \rho_i e_i
$$

The pressure will be defined using a specified equation of state where the mixture internal energy, densities, and volume fraction are used to calculate the total pressure. The equations of state will be used in the Mie-Gruneisen form.

$$
    p_i(\rho_i, e_i, \rho) = (\Gamma(\rho_i) - 1) \rho_i e_i - \Pi(\rho_i)
$$

Equations of State

The mixture pressure is defined using the Mie-Gruneisen from using

$$
    p = \frac{\rho e}{\sum_i \alpha_i \xi_i} - \frac{\sum_i \alpha_i \xi_i \Pi_i}{\sum_i \alpha_i \xi_i}
$$

where

$$
    \xi_i(\rho_i) = \frac{1}{\Gamma_i - 1}
$$

and $\Pi_i$ is dependent on the equation of state.

The speed of sound within a give phase is give by

$$
    c_i = \sqrt{\frac{\sum_i y_i \xi_i c_i^2}{\sum_i \xi_i}}
$$

with

$$
    y_i = \frac{\alpha_i \rho_i}{\rho}
$$

$$
    c_i^2 = \frac{h_i - \delta_i}{\xi_i}
$$

$$
    h_i = \frac{\Gamma_i p + \Pi_i}{(\Gamma_i - 1)\rho_i}
$$

and $\delta_i$ is again dependent on the equation of state.

Generalized van der Waals gas

For a gas described by the generalized van der Waals equation of state, the pressure is defined as

$$
    p_i = \frac{\gamma_i - 1}{1 - b_i \rho_i}(\rho_i e_i + a_i \rho_i^2) - (a_i \rho_i^2 + c_i) 
$$

where $a_i$, $b_i$, $c_i$, and $\gamma_i$ are material parameters. Writing the above equation in M.G. form, we obtain

$$
    \Gamma_i = \frac{\gamma_i - 1}{1 - b_i \rho_i} + 1 
$$

$$
    \Pi_i = 
        \left[1 - \frac{\gamma_i - 1}{1 - b_i \rho_i}\right] a_i \rho_i^2 
      + \left[\frac{\gamma_i - 1}{1 - b_i \rho_i} + 1\right] c_i 
$$

and

$$
    \delta_i = 
      - b_i \frac{p_i + a_i \rho_i^2}{\gamma_i - 1}
      + \left( \frac{1 - b_i \rho_i}{\gamma - 1} - 1 \right) 2 a_i \rho_i 
$$

Tait's equation of state

For a material obeying the Tait EOS, the pressure is defined as

$$
    p_i = (\gamma_i - 1) \rho_i e_i - \gamma_i (b_i - a_i)
$$

where $a_i$, $b_i$, and $\gamma_i$ are material properties. In M.G. form, we have

$$
    \Gamma_i = \gamma_i 
$$

$$
    \Pi_i = \gamma_i (b_i - a_i) 
$$

and

$$
    \delta_i = 0 
$$

Stiffened gas

For a material obeying the stiffened EOS, the pressure is defined as

$$
    p_i = (\gamma_i - 1) \rho_i e_i - \gamma_i a_i 
$$

where $a_i$ and $\gamma_i$ are material properties, and

$$
    \Gamma_i = \gamma_i 
$$

$$
    \Pi_i = \gamma_i a_i 
$$

$$
    \delta_i = 0 
$$

Jones Wilkins Lee (JWL)

The more complicated JWL EOS is often used to define energetic materials, and has a reference pressure given by

$$
    p_{ref,i} = A_i e^{-\frac{R_{1,i} \rho_{0,i}}{\rho_i}}
        + B_i e^{-\frac{R_{2,i} \rho_{0,i}}{\rho_i}}
$$

$A_i$, $B_i$, $R_{1,i}$, $R_{2,i}$, $\rho_{0,i}$, and $\Gamma_{0,i}$ are the material properties. The functions of the EOS are given by

$$
    \Gamma_i = \Gamma_{0,i} + 1 
$$

$$
    \Pi_i = 
        \Gamma_{0,i} \rho_i 
        \left(
            \frac{A_i}{R_{1,i} \rho_{0,i}} e^{-\frac{R_{1,i} \rho_{0,i}}{\rho_i}}
          + \frac{B_i}{R_{2,i} \rho_{0,i}} e^{-\frac{R_{2,i} \rho_{0,i}}{\rho_i}}
          + e_{0,i}
        \right)
      - p_{ref,i} 
$$

and

$$
    \delta_i =& \\
          &A_i e^{-\frac{R_{1,i} \rho_{0,i}}{\rho_i}}
            \left[
                \Gamma_{0,i}
                \left(
                    \frac{1}{R_{1,i} \rho_{0,i}} 
                  + \frac{1}{\rho_i}
                \right)
              - \frac{R_{1,i} \rho_{0,i}}{\rho_i^2}
            \right] \frac{1}{\Gamma_{0,i}} \\
          +&B_i e^{-\frac{R_{2,i} \rho_{0,i}}{\rho_i}}
            \left[
                \Gamma_{0,i}
                \left(
                    \frac{1}{R_{2,i} \rho_{0,i}} 
                  + \frac{1}{\rho_i}
                \right)
              - \frac{R_{2,i} \rho_{0,i}}{\rho_i^2}
            \right] \frac{1}{\Gamma_{0,i}} \\
          +&e_{0,i} 
$$

$e_0$ is anther material parameter which denotes a reference energy state.

Cochran Chan

The Cochran Chan EOS can be used to describe solid material, and has a reference pressure given by

$$
    p_{ref,i} = A_i \left(\frac{\rho_{0,i}}{\rho_i}\right)^{1 - \mathcal{E}_{1,i}}
        - B_i \left(\frac{\rho_{0,i}}{\rho_i}\right)^{1 - \mathcal{E}_{2,i}}
$$

$A_i$, $B_i$, $\mathcal{E}_{1,i}$, $\mathcal{E}_{2,i}$, $\rho_{0,i}$, and $\Gamma_{0,i}$ are the material properties. The functions of the EOS are given by

$$
    \Gamma_i = \Gamma_{0,i} + 1
$$

$$
    \Pi_i = 
        \Gamma_{0,i} \rho_i 
        \left(
          - \frac{A_i}{(\mathcal{E}_{1,i} - 1) \rho_{0,i}} 
            \left(\frac{\rho_{0,i}}{\rho_i}\right)^{1 - \mathcal{E}_{1,i}}
          + \frac{B_i}{(\mathcal{E}_{2,i} - 1) \rho_{0,i}} 
            \left(\frac{\rho_{0,i}}{\rho_i}\right)^{1 - \mathcal{E}_{2,i}}
          + e_{0,i}
        \right)
      - p_{ref,i}
$$

$$
    \delta_i =& \\
          &\frac{A_i}{\mathcal{E}_{1,i}}
            \left[
                \mathcal{E}_{1,i} 
                \left(\frac{\rho_{0,i}}{\rho_i}\right)^{-\mathcal{E}_{1,i}}
                \frac{\mathcal{E}_{1,i} - \Gamma_{0,i} - 1}{\rho_i}
              + \frac{\Gamma_{0,i}}{\rho_{0,i}}
            \right] \frac{1}{\Gamma_{0,i}} \\
          +&\frac{B_i}{\mathcal{E}_{2,i}}
            \left[
                \mathcal{E}_{2,i} 
                \left(\frac{\rho_{0,i}}{\rho_i}\right)^{-\mathcal{E}_{2,i}}
                \frac{\mathcal{E}_{2,i} - \Gamma_{0,i} - 1}{\rho_i}
              + \frac{\Gamma_{0,i}}{\rho_{0,i}}
            \right] \frac{1}{\Gamma_{0,i}} \\
          +&e_{0,i} 
$$

where again, $e_0$ is a material parameter which denotes a reference energy state.

You can’t perform that action at this time.