|
| 1 | + |
| 2 | +\section{Introduction}\label{sec:Intro} |
| 3 | + |
| 4 | +Flexi\cite{flexigeneral} is a transient, multi-dimensional fluid dynamics simulation code framework using both the discontinuous Galerkin method and Finite Volume method for discretizing the equations of mass, momentum, and energy conservation. The equations include conservation of mass, momentum, and energy and allows for linear or nonlinear, compressible, viscous or inviscid flows, and RANS turbulence modeling\cite{flexiles}. Full documentation and code is available at \url{github.com/flexi-framework/flexi}. The currently implemented features of Flexi include (\textit{c.f.,} Section 2.3 of the Flexi Project Documentation as compiled from the flexi-framework github site and given in the \textbf{references directory}): |
| 5 | + |
| 6 | +\begin{itemize} |
| 7 | + \item Equation systems: |
| 8 | + \begin{itemize} |
| 9 | + \item compressible Euler equations |
| 10 | + \item compressible Navier-Stokes equations |
| 11 | + \item linear scalar advection and diffusion |
| 12 | + \end{itemize} |
| 13 | + \item Space discretization: DGSEM method: |
| 14 | + \begin{itemize} |
| 15 | + \item Legendre Gauss |
| 16 | + \item Legendre Gauss Lobatto |
| 17 | + \end{itemize} |
| 18 | + \item Time discretization - explicit Runge-Kutta methods: |
| 19 | + \begin{itemize} |
| 20 | + \item standard RK methods |
| 21 | + \item low storage RK methods |
| 22 | + \item strong stability preserving RK methods |
| 23 | + \end{itemize} |
| 24 | + \item Two- or three-dimensional domains |
| 25 | + \item Riemann solvers: |
| 26 | + \begin{itemize} |
| 27 | + \item local Lax-Friedrichs |
| 28 | + \item HLL |
| 29 | + \item HLLC |
| 30 | + \item Roe-Pike |
| 31 | + \end{itemize} |
| 32 | + \item Curved Meshes |
| 33 | + \item Nonconforming Meshes via mortar interfaces |
| 34 | + \item Shock capturing |
| 35 | + \begin{itemize} |
| 36 | + \item Employing finite volume subcells by either |
| 37 | + \begin{itemize} |
| 38 | + \item switching to finite volume subcells |
| 39 | + \item blending the finite volume operator |
| 40 | + \end{itemize} |
| 41 | + \item Several shock indicators available |
| 42 | + \end{itemize} |
| 43 | + \item Boundary conditions |
| 44 | + \begin{itemize} |
| 45 | + \item Various subsonic inflow and outflow conditions |
| 46 | + \item exact boundaries (Dirichlet) |
| 47 | + \item periodic boundaries |
| 48 | + \item slip wall (Euler wall) |
| 49 | + \item non-slip walls (Navier-Stokes wall) |
| 50 | + \item adiabatic |
| 51 | + \item isothermal |
| 52 | + \end{itemize} |
| 53 | + \item Splitform discontinuous Galerkin schemes |
| 54 | +\end{itemize} |
| 55 | + |
| 56 | +The focus of the results presented here is running Flexi on classic Riemann problems in one- and two-dimensions. These include the Sod[\cite{sod1,sod2}] problem, the LeBlanc problem, the Einfeldt problem (also known as the 1-2-3 problem)\cite{einfeldt}, and the two-dimensional Sedov\cite{Sedov} and Hui\cite{Hui} problems. These problems are well documented and some have exact mathematical solutions so that the Flexi results may be compared to these solutions. Those without exact solutions will be compared to relevant published results. In presenting results no attempt has been made to determine the set of Flexi's many available parameters and their values for optimal results. |
| 57 | + |
| 58 | +Although Flexi is a general viscous thermo-fluid dynamics code, this report focuses on Riemann problems and so has been setup to solve the following equation system for the dependent variables density, momentum, and energy $F_i(x, y, z) = [\rho, m_i, E]$ in conservative form: |
| 59 | + |
| 60 | +\begin{eqnarray} |
| 61 | + \partial_{,t} \rho + \partial_{,i} \left( m_i \right) & = & 0, \\ |
| 62 | + \partial_{,t} m_i + \partial_{,j} \left( (m_i*m_j/\rho) + P \delta_{ij}) \right) & = & 0, \\ |
| 63 | + \partial_{,t} E + \partial_{,i} \left( (m_i/\rho)(E + P) \right) & = & 0 |
| 64 | +\end{eqnarray} |
| 65 | +\noindent where $\rho$ is the density, $m_i = \rho v_i$ is the momentum vector ($v_i$ the velocity vector), and the total energy per unit volume, $E = \rho u + \rho v_i v_i/2$, where $u$ is the specific internal energy and $\delta_{ij}$ is the Kronecker delta function. The current Flexi release has only an ideal gas equation of state so that $P = (\gamma - 1) \rho u$, where $\gamma = C_p/C_v$ is the ideal gas ratio of specific heats. |
| 66 | + |
| 67 | + |
| 68 | +\begin{table}[h!] |
| 69 | + \begin{center} |
| 70 | + \caption{Conserved and Primitive Variable names used in Flexi for a \texorpdfstring{$\gamma$}-Law Ideal gas where \texorpdfstring{$R$} is the gas constant.} |
| 71 | + \label{tab:flexiVars} |
| 72 | + \begin{tabular}{|c|c|c|} \hline |
| 73 | + \textbf{Physical Symbol} & \parbox{0.3\linewidth}{\centering \textbf{Conserved Variable}} & \parbox{0.3\linewidth}{\centering \textbf{Primitive Variable}} \\ \hline |
| 74 | + $\rho$ & Density & \\ |
| 75 | + $m_x = \rho v_x$ & MomentumX & \\ |
| 76 | + $m_y = \rho v_y$ & MomentumY & \\ |
| 77 | + $m_z = \rho v_z$ & MomentumZ & \\ |
| 78 | + $E_{sd} = \rho u + \rho V^2/2$ & EnergyStagnationDensity & \\ |
| 79 | + $v_x = M_x / \rho$ & & VelocityX \\ |
| 80 | + $v_y = M_y / \rho$ & & VelocityY \\ |
| 81 | + $v_z = M_z / \rho$ & & VelocityZ \\ |
| 82 | + $E_s = E_{sd}/\rho = u + V^2/2 $ & & EnergyStagnation \\ |
| 83 | + $h = u + P/\rho$ & & EnthalpyStagnation \\ |
| 84 | + $s = R \left[ \frac{\ln(T)}{\gamma-1} - \ln(\rho) \right]$ & & Entropy \\ |
| 85 | + $P = (\gamma - 1) \rho u$ & & Pressure \\ |
| 86 | + $T = P/(\rho R) $ & & Temperature \\ |
| 87 | + $V = \sqrt{v_i v_i}$ & & VelocityMagnitude \\ |
| 88 | + $C = \sqrt{\gamma P/\rho}$ & & VelocitySound \\ |
| 89 | + $ Ma = V/C$ & & Mach \\ |
| 90 | + $T_0 = T \left[ 1+\frac{\gamma - 1}{2} Ma^2 \right]$ |
| 91 | + & & TotalTemperature \\ |
| 92 | + $P_0 = P \left[1+\frac{\gamma-1}{2} Ma^2 \right]^{\frac{\gamma}{\gamma-1}} $ |
| 93 | + & &TotalPressure \\ |
| 94 | + $\frac{\partial P}{\partial t}$ & & PressureTimeDeriv \\ \hline |
| 95 | + \end{tabular} |
| 96 | + \end{center} |
| 97 | +\end{table} |
| 98 | + |
| 99 | +\noindent The primitive variables listed in Table \ref{tab:flexiVars} are calculated from the Flexi conserved variables whose names as listed may be used in post processing as described in \ref{sec:posti} to call out desired quantities to be written into the solution files. |
| 100 | + |
| 101 | +When comparing Flexi results with an available exact solution, the average $L_2$-norm of the difference, $\bar{\epsilon}$, will be used where |
| 102 | + |
| 103 | +\begin{eqnarray}\label{eq:error} |
| 104 | + \Delta_i & = & f_i - f_{{\mathrm{exact}}_i} \\ |
| 105 | + \bar{\epsilon}(\Delta_i) & = & \frac{1}{N} \sqrt{ \Delta_i \Delta_i} \label{eq:avgerr} |
| 106 | +\end{eqnarray} |
| 107 | +\noindent where $f$ and $f_{\mathrm{exact}}$ are vectors of the Flexi and exact variables of length $N$ being examined. |
0 commit comments