Skip to content

Commit 3a253d7

Browse files
committed
FireX: Merge with firemodels/master
2 parents 2b6e139 + 497eb12 commit 3a253d7

29 files changed

+612
-791
lines changed

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,13 @@ Verification/Timing_Benchmarks/t*.fds
104104
CMakeUserPresets.json
105105
Build/cmakeb/
106106
.vscode/
107+
108+
# Anything stored in your repo with UNTRACKED in its directory name
109+
# will not be wiped out if you do `git clean -dXf` (note capital X!)
110+
111+
# Ignore any directory that has "UNTRACKED" in its name, recursively
112+
*UNTRACKED*/
113+
114+
# Ignore everything under such directories
115+
*UNTRACKED*/**
116+

Manuals/FDS_Technical_Reference_Guide/Mass_Chapter.tex

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,12 @@ \subsection{Flux Limiters}
9898
\hline
9999
Central Difference & 1 \\
100100
Godunov & 0 \\
101-
MINMOD & $\max(0,\min(1,r))$ \\
102101
Superbee \cite{Roe:1986} (LES default) & $\max(0,\min(2r,1),\min(r,2))$ \\
103102
CHARM \cite{Zhou:1995} (DNS default) & $s(3s+1)/(s+1)^2$; $s=1/r$ \\
104-
MP5 \cite{Suresh:1997} & see below
105103
\end{tabular}
106104
\end{center}
107105
\end{table}
108-
\noindent For the Central Difference, Godunov, MINMOD, and Superbee limiters, the scalar face value is found from
106+
\noindent For the Central Difference, Godunov, and Superbee limiters, the scalar face value is found from
109107
\begin{equation}
110108
\label{eqn_flux_limiter}
111109
\overline{\phi}^{\rm FL}_{i+1/2} = \left\{ \begin{array}{lcll} \phi_i &+& B(r) \,\frac{1}{2} \,\delta \phi_{\rm loc} & \mbox{if} \quad u_i>0 \vspace{0.2 cm}\\
@@ -117,35 +115,30 @@ \subsection{Flux Limiters}
117115
\overline{\phi}^{\rm FL}_{i+1/2} = \left\{ \begin{array}{lcll} \phi_i &+& B(r) \,\frac{1}{2} \,\delta \phi_{\rm up} & \mbox{if} \quad u_i>0 \vspace{0.2 cm}\\
118116
\phi_{i+1} &-& B(r) \,\frac{1}{2} \,\delta \phi_{\rm up} & \mbox{if} \quad u_i<0 \end{array} \right.
119117
\end{equation}
120-
The MP5 scheme of Suresh and Huynh \cite{Suresh:1997} is based on the keen observation that three points cannot distinguish between extrema and discontinuities. The functional form of the limiter is not as simple as the three-point schemes described above, so we refer the reader to the original paper or the FDS source code for details. But the basic idea behind the method is to use a five-point stencil, three upwind and two downwind, to reconstruct the cell face value, considering both accuracy and monotonicity-preserving constraints. An additional benefit of the MP5 scheme is that it was designed specifically with strong stability-preserving (SSP) Runge-Kutta time discretizations in mind. The predictor-corrector scheme used by FDS is similar to the second-order SSP scheme described in \cite{Gottlieb:2001}.
121118

122119

123120
\subsubsection{Notes on Implementation}
124121

125122
In practice, we set $r=0$ initially and only compute $r$ if the denominator is not zero. Note that for $\delta \phi_{loc}=0$, it does not matter which limiter is used: all the limiters yield the same scalar face value. For CHARM, we set both $r=0$ and $B=0$ initially and only compute $B$ if $r>0$ (this requires data variations to have the same sign). Otherwise, CHARM reduces to Godunov's scheme.
126123

127-
The Central Difference, Godunov, and MINMOD limiters are included for completeness, debugging, and educational purposes. These schemes have little utility for typical FDS applications.
124+
The Central Difference and Godunov limiters are included for completeness, debugging, and educational purposes. These schemes have little utility for typical FDS applications.
128125

129-
\subsubsection{Dealing with Variable Molecular Weights}
126+
% \subsubsection{Dealing with Variable Molecular Weights}
130127

131-
Maintaining isothermal flow requires
132-
\begin{equation}
133-
T = \frac{\overline{W} \bar{p}}{\rho R} = \frac{\bar{p}}{R \rho \sum_\alpha \frac{Z_\alpha}{W_\alpha}} = \frac{\bar{p}}{R \sum_\alpha \frac{\rho Z_\alpha}{W_\alpha}}
134-
\end{equation}
135-
to be constant and uniform at all cells and faces. Therefore, with $\bar{p}$ and $R$ constant and uniform, we must maintain
136-
\begin{equation}
137-
\label{eq:rho_mw}
138-
\sum_\alpha \frac{(\rho Z_\alpha)}{W_\alpha} = \frac{\rho}{\overline{W}}
139-
\end{equation}
128+
%% leave this here for a moment as a reminder to write up the constant limiter coefficient method we are now using.
140129

141-
The above condition is automatically satisfied in the cases of using Godunov or Central differencing or in the case of binary flow (two species). However, if we apply a second-order flux limiter, such as Superbee or CHARM, independently to each species in a multi-component (three or more species) flow with variable molecular weights, then this condition is easily violated.
130+
% Maintaining isothermal flow requires
131+
% \begin{equation}
132+
% T = \frac{\overline{W} \bar{p}}{\rho R} = \frac{\bar{p}}{R \rho \sum_\alpha \frac{Z_\alpha}{W_\alpha}} = \frac{\bar{p}}{R \sum_\alpha \frac{\rho Z_\alpha}{W_\alpha}}
133+
% \end{equation}
134+
% to be constant and uniform at all cells and faces. Therefore, with $\bar{p}$ and $R$ constant and uniform, we must maintain
135+
% \begin{equation}
136+
% \label{eq:rho_mw}
137+
% \sum_\alpha \frac{(\rho Z_\alpha)}{W_\alpha} = \frac{\rho}{\overline{W}}
138+
% \end{equation}
139+
140+
% The above condition is automatically satisfied in the cases of using Godunov or Central differencing or in the case of binary flow (two species). However, if we apply a second-order flux limiter, such as Superbee or CHARM, independently to each species in a multi-component (three or more species) flow with variable molecular weights, then this condition is easily violated.
142141

143-
To handle this situation, in LES mode, FDS will apply a correction to the most abundant species locally. We first compute the flux-limited face values of the mass density over the mixture-average molecular weight. Then we compute flux-limited face values of the species densities. Finally, the error in Eq.~(\ref{eq:rho_mw}) is absorbed into the most abundant species locally,
144-
\begin{equation}
145-
\label{eq:rhoZ_cor}
146-
\overline{\rho Z_\alpha}^{\rm COR} = W_\alpha \left( \overline{\left\{\frac{\rho}{\overline{W}}\right\}}^{\rm FL} - \sum_{\beta \ne \alpha} \frac{\overline{\{\rho Z_\beta\}}^{\rm FL}}{W_\beta} \right)
147-
\end{equation}
148-
where $\alpha$ is the most abundant species on the face.
149142

150143
\subsection{Time Splitting for Mass Source Terms}
151144
\label{sec_time_splitting}

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9123,7 +9123,7 @@ \subsection{Heat Transfer Constraint}
91239123
\section{Flux Limiters}
91249124
\label{info:flux_limiters}
91259125

9126-
FDS employs \emph{total variation diminishing} (TVD) schemes for scalar transport. The default for VLES (FDS default \ct{SIMULATION_MODE}) is Superbee \cite{Roe:1986}, so chosen because this scheme does the best job preserving the scalar variance in highly turbulent flows with coarse grid resolution. The default scheme for DNS and LES is CHARM \cite{Zhou:1995} because the gradient steepening used in Superbee forces a stair step pattern at high resolution, while CHARM is convergent. A few other schemes (including Godunov and central differencing) are included for completeness; more details can be found in the Tech Guide \cite{FDS_Tech_Guide}. Table \ref{tab:flux_limiters} below shows the character strings which may be used to invoke the various limiter schemes.
9126+
FDS employs \emph{total variation diminishing} (TVD) schemes for scalar transport. The default for VLES (FDS default \ct{SIMULATION_MODE}) is Superbee \cite{Roe:1986}, so chosen because this scheme does the best job preserving the scalar variance in highly turbulent flows with coarse grid resolution. The default scheme for DNS and LES is CHARM \cite{Zhou:1995} because the gradient steepening used in Superbee forces a stair step pattern at high resolution, while CHARM is convergent. Godunov and central differencing are included for completeness; more details can be found in the Tech Guide \cite{FDS_Tech_Guide}. Table \ref{tab:flux_limiters} below shows the character strings which may be used to invoke the various limiter schemes.
91279127

91289128
\begin{lstlisting}
91299129
&MISC FLUX_LIMITER='GODUNOV' / ! invoke Godunov (first-order upwind scheme)
@@ -9140,9 +9140,7 @@ \section{Flux Limiters}
91409140
Central differencing & \ct{'CENTRAL'} \\
91419141
Godunov & \ct{'GODUNOV'} \\
91429142
Superbee (VLES, SVLES default) & \ct{'SUPERBEE'} \\
9143-
MINMOD & \ct{'MINMOD'} \\
91449143
CHARM (DNS, LES default) & \ct{'CHARM'} \\
9145-
MP5 & \ct{'MP5'} \\ \hline
91469144
\end{tabular}
91479145
\end{table}
91489146

@@ -11916,7 +11914,7 @@ \chapter{Alphabetical List of Input Parameters}
1191611914
% ignorenamelistkw: /ISOF/DEBUG
1191711915
% ignorenamelistkw: /MISC/PERIODIC_TEST, /MISC/POSITIVE_ERROR_TEST, /MISC/PROFILING, /MISC/RADIATION
1191811916
% ignorenamelistkw: /MISC/STRATIFICATION, /MISC/SUPPRESSION, /MISC/UVW_FILE, /MISC/TENSOR_DIFFUSIVITY
11919-
% ignorenamelistkw: /MISC/CC_IBM, /MISC/CCVOL_LINK, /MISC/TEST_NEW_CHAR_MODEL, /MISC/FLUX_LIMITER_MW_CORRECTION
11917+
% ignorenamelistkw: /MISC/CC_IBM, /MISC/CCVOL_LINK, /MISC/TEST_NEW_CHAR_MODEL, /MISC/PR, /MISC/SC
1192011918
% ignorenamelistkw: /PART/DEBUG, /PART/EMBER_SNAG_FACTOR
1192111919
% ignorenamelistkw: /PRES/WRITE_PARCSRPCG_MATRIX
1192211920
% ignorenamelistkw: /REAC/C, /REAC/H, /REAC/O, /REAC/N, /REAC/FORMULA

Manuals/FDS_Verification_Guide/FDS_Verification_Guide.tex

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -893,16 +893,15 @@ \subsection{Solid Body Rotation Velocity Field (\texorpdfstring{\ct{soborot}}{so
893893
\label{fig_soborot_square_wave}
894894
\end{figure}
895895

896-
For the cosine wave initial condition the derivatives of the scalar field are continuous. Therefore, we see ${\cal O}(\delta x^2)$ convergence of the CHARM and MP5 schemes, as shown in Fig.~\ref{fig_soborot_cos_wave}. Superbee shows smaller error at coarse resolution, but the gradient steepening degenerates its accuracy at higher resolutions---hence CHARM is selected for LES and DNS.
896+
For the cosine wave initial condition the derivatives of the scalar field are continuous. Therefore, we see ${\cal O}(\delta x^2)$ convergence of the CHARM scheme, as shown in Fig.~\ref{fig_soborot_cos_wave}. Superbee shows smaller error at coarse resolution, but the gradient steepening degenerates its accuracy at higher resolutions---hence CHARM is selected for LES and DNS.
897897

898898
\begin{figure}[ht]
899899
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
900900
\includegraphics[height=2.2in]{SCRIPT_FIGURES/soborot_superbee_cos_wave} &
901901
\includegraphics[height=2.2in]{SCRIPT_FIGURES/soborot_charm_cos_wave} \\
902-
\includegraphics[height=2.2in]{SCRIPT_FIGURES/soborot_mp5_cos_wave} &
903-
\includegraphics[height=2.2in]{SCRIPT_FIGURES/soborot_cos_wave_error}
902+
\includegraphics[height=2.2in]{SCRIPT_FIGURES/soborot_cos_wave_error} &
904903
\end{tabular*}
905-
\caption[Solid body rotation cosine wave convergence]{Solid body rotation cosine wave solution convergence. Scalar fields along upper-left diagonal for Superbee (upper-left), CHARM (upper-right), and MP5 (lower-left). (Lower-right) L2 Error.}
904+
\caption[Solid body rotation cosine wave convergence]{Solid body rotation cosine wave solution convergence. Scalar fields along upper-left diagonal for Superbee (upper-left) and CHARM (upper-right). (Lower-left) L2 Error.}
906905
\label{fig_soborot_cos_wave}
907906
\end{figure}
908907

@@ -1425,13 +1424,12 @@ \subsection{Temperature Bounds for Large Differences in Molecular Weight (\texor
14251424
\subsection{Temperature Lower Bound in a Fire Simulation (\texorpdfstring{\ct{tmp_lower_limit}}{tmp\_lower\_limit})}
14261425
\label{tmp_lower_limit}
14271426

1428-
A 2-D methane-air diffusion flame calculation is run three different ways to check that the temperature does not fall below the ambient (20~$^\circ$C). The results are shown in Fig.~\ref{tmp_lower_limit_fig}. The upper left plot shows the global minimum temperature for the case where the reaction stoichiometry is specified explicitly. The upper right plot is for the case where the initial time step is lowered to 0.001~s. The lower plot is for the case where the simple chemistry model is used.
1427+
A 2-D methane-air diffusion flame calculation is run three different ways to check that the temperature does not fall below the ambient (20~$^\circ$C). The results are shown in Fig.~\ref{tmp_lower_limit_fig}. The left plot shows the global minimum temperature for the case where the reaction stoichiometry is specified explicitly. Theright plot is for the case where the simple chemistry model is used.
14291428

14301429
\begin{figure}[!ht]
14311430
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
14321431
\includegraphics[height=2.2in]{SCRIPT_FIGURES/tmp_lower_limit_default} &
1433-
\includegraphics[height=2.2in]{SCRIPT_FIGURES/tmp_lower_limit_dt_p001} \\
1434-
\multicolumn{2}{c}{\includegraphics[height=2.2in]{SCRIPT_FIGURES/tmp_lower_limit_simple}}
1432+
\includegraphics[height=2.2in]{SCRIPT_FIGURES/tmp_lower_limit_simple}
14351433
\end{tabular*}
14361434
\caption[Results of the \ct{tmp_lower_limit} cases]{Results of the \ct{tmp_lower_limit} cases.}
14371435
\label{tmp_lower_limit_fig}

Source/cons.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ MODULE GLOBAL_CONSTANTS
291291
LOGICAL :: WROTE_SMOKE3D=.FALSE. !< Flag indicating if a Smoke3D file was written during primary out
292292
LOGICAL :: WROTE_BNDF=.FALSE. !< Flag indicating if a BNDF file was written during primary out
293293
LOGICAL :: WROTE_PART=.FALSE. !< Flag indicating if a PART file was written during primary out
294-
LOGICAL :: FLUX_LIMITER_MW_CORRECTION=.FALSE. !< Flag for MW correction ensure consistent equation of state at face
294+
LOGICAL :: FLUX_LIMITER_SINGLE_COEF=.TRUE. !< Flag to base flux coefficients off of a single worst-case scalar gradient
295295
LOGICAL :: STORE_FIRE_ARRIVAL=.FALSE. !< Flag for tracking arrival of spreading fire front over a surface
296296
LOGICAL :: STORE_FIRE_RESIDENCE=.FALSE. !< Flag for tracking residence time of spreading fire front over a surface
297297
LOGICAL :: STORE_LS_SPREAD_RATE=.FALSE. !< Flag for outputting local level set spread rate magnitude

0 commit comments

Comments
 (0)