Skip to content

Commit 845c84c

Browse files
committed
Merge remote-tracking branch 'firemodels/master'
2 parents 6bed3a2 + 497eb12 commit 845c84c

File tree

80 files changed

+1285
-990
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1285
-990
lines changed

.github/workflows/Line_Endings.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
# Steps represent a sequence of tasks that will be executed as part of the job
2222
steps:
2323
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
24-
- uses: actions/checkout@v4
24+
- uses: actions/checkout@v5
2525

2626
- name: Check for CRLF line endings
2727
run: |

.github/workflows/cmake.yml

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
sudo apt-get -y update
9595
sudo apt-get -y install libopenmpi-dev openmpi-bin
9696
97-
- uses: actions/checkout@v4
97+
- uses: actions/checkout@v5
9898
- run: git config --global --add safe.directory /__w/fds/fds
9999

100100
- name: set linux-gnu compiler
@@ -109,9 +109,9 @@ jobs:
109109
if: startsWith(matrix.compiler_mpi, 'intel_')
110110
shell: bash
111111
run: |
112-
echo "CC=mpiicx" >> $GITHUB_ENV
113-
echo "CXX=mpiicx" >> $GITHUB_ENV
114-
echo "FC=mpiifx" >> $GITHUB_ENV
112+
echo "CC=icx" >> $GITHUB_ENV
113+
echo "CXX=icpx" >> $GITHUB_ENV
114+
echo "FC=ifx" >> $GITHUB_ENV
115115
116116
- name: build fds
117117
if: endsWith(matrix.compiler_mpi, '_intelmpi')
@@ -148,7 +148,6 @@ jobs:
148148
ctest --test-dir builddir -j --output-on-failure -V
149149
150150
cmake-osx:
151-
if: false
152151
# Set the name of this build, variable depending on the OS
153152
name: ${{ matrix.os }} ${{ matrix.compiler_mpi }} openmp=${{ matrix.openmp }} ${{ matrix.build_type }}
154153
strategy:
@@ -157,7 +156,7 @@ jobs:
157156
# and build configurations
158157
matrix:
159158
os:
160-
- macos-latest
159+
- macos-14
161160
compiler_mpi:
162161
- "gnu_openmpi"
163162
openmp:
@@ -169,10 +168,10 @@ jobs:
169168
runs-on: ${{ matrix.os }}
170169
steps:
171170
- name: Checkout code
172-
uses: actions/checkout@v4
171+
uses: actions/checkout@v5
173172

174173
- name: install openmpi
175-
run: brew install open-mpi
174+
run: brew install gcc@15 open-mpi
176175

177176
- name: set macos gcc
178177
if: startsWith(matrix.compiler_mpi, 'gnu_')
@@ -181,6 +180,8 @@ jobs:
181180
echo "CC=gcc-15" >> $GITHUB_ENV
182181
echo "CXX=g++-15" >> $GITHUB_ENV
183182
echo "FC=gfortran-15" >> $GITHUB_ENV
183+
echo "OMPI_CC=gcc-15" >> $GITHUB_ENV
184+
echo "OMPI_CXX=g++-15" >> $GITHUB_ENV
184185
echo "OMPI_FC=gfortran-15" >> $GITHUB_ENV
185186
brew install glew gd zlib json-c
186187
@@ -189,9 +190,11 @@ jobs:
189190
shell: bash
190191
run: |
191192
echo "CC=icx" >> $GITHUB_ENV
192-
echo "CXX=icx" >> $GITHUB_ENV
193-
echo "FC=mpiifx" >> $GITHUB_ENV
194-
echo "OMPI_FC=mpiifx" >> $GITHUB_ENV
193+
echo "CXX=icpx" >> $GITHUB_ENV
194+
echo "FC=ifx" >> $GITHUB_ENV
195+
echo "OMPI_CC=icx" >> $GITHUB_ENV
196+
echo "OMPI_CXX=icpx" >> $GITHUB_ENV
197+
echo "OMPI_FC=ifx" >> $GITHUB_ENV
195198
196199
- name: Build
197200
if: startsWith(matrix.compiler_mpi, 'gnu_')
@@ -221,7 +224,7 @@ jobs:
221224
cmake-windows:
222225
# build on windows using ifort with intelmpi and mkl based on
223226
# https://github.com/oneapi-src/oneapi-ci
224-
if: false
227+
225228
name: windows ${{matrix.compiler}} intelmpi openmp=${{ matrix.openmp }} ${{ matrix.build_type }}
226229
runs-on: [windows-latest]
227230
strategy:
@@ -243,7 +246,7 @@ jobs:
243246
shell: cmd
244247

245248
steps:
246-
- uses: actions/checkout@v4
249+
- uses: actions/checkout@v5
247250

248251
# install oneapi components from web installer based on
249252
# oneapi-ci/scripts/install_windows.bat

.github/workflows/linux.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
mkl
4040
prune: false
4141

42-
- uses: actions/checkout@v4
42+
- uses: actions/checkout@v5
4343

4444
- name: build fds debug
4545
run: |
@@ -74,7 +74,7 @@ jobs:
7474
7575
prune: false
7676

77-
- uses: actions/checkout@v4
77+
- uses: actions/checkout@v5
7878
- name: build fds debug
7979
run: |
8080
source /opt/intel/oneapi/setvars.sh
@@ -96,7 +96,7 @@ jobs:
9696
runs-on: [ubuntu-latest]
9797

9898
steps:
99-
- uses: actions/checkout@v4
99+
- uses: actions/checkout@v5
100100

101101
- uses: actions/setup-python@v5
102102
with:

.github/workflows/osx.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ jobs:
2828
# debug build on osx using gfortran with openmpi
2929

3030
name: osx gnu openmpi
31-
runs-on: [macos-latest]
31+
runs-on: [macos-14]
3232
defaults:
3333
run:
3434
shell: bash
3535

3636
steps:
37-
- uses: actions/checkout@v4
37+
- uses: actions/checkout@v5
3838
- name: install openmpi
3939
run: |
40-
brew install open-mpi
40+
brew install gcc@15 open-mpi
4141
echo "OMPI_FC=gfortran-15" >> $GITHUB_ENV
4242
4343
- name: build fds debug

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
shell: cmd
4545

4646
steps:
47-
- uses: actions/checkout@v4
47+
- uses: actions/checkout@v5
4848

4949
# install oneapi components from web installer based on
5050
# oneapi-ci/scripts/install_windows.bat

.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/Bibliography/FDS_general.bib

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2996,6 +2996,15 @@ @ARTICLE{Icove:JNAFE2021
29962996
note = {\href{https://doi.org/10.51501/jotnafe.v38i1.167}{https://doi.org/10.51501/jotnafe.v38i1.167}}
29972997
}
29982998

2999+
@BOOK{Idelchik:1,
3000+
author = {I.E. Idelchik},
3001+
title = {Handbook of Hydraulic Resistance},
3002+
edition = {3rd},
3003+
publisher = {CRC Press},
3004+
address = {Boca Raton, Florida},
3005+
year = {1994}
3006+
}
3007+
29993008
@INPROCEEDINGS{Ierardi:1,
30003009
author = {Ierardi, J.A. and Barnett, J.R.},
30013010
title = {{A Quantitative Method for Calibrating CFD Model Calculations}},

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: 4 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

@@ -11912,7 +11910,7 @@ \chapter{Alphabetical List of Input Parameters}
1191211910
% ignorenamelistkw: /ISOF/DEBUG
1191311911
% ignorenamelistkw: /MISC/PERIODIC_TEST, /MISC/POSITIVE_ERROR_TEST, /MISC/PROFILING, /MISC/RADIATION
1191411912
% ignorenamelistkw: /MISC/STRATIFICATION, /MISC/SUPPRESSION, /MISC/UVW_FILE, /MISC/TENSOR_DIFFUSIVITY
11915-
% ignorenamelistkw: /MISC/CC_IBM, /MISC/CCVOL_LINK, /MISC/TEST_NEW_CHAR_MODEL, /MISC/FLUX_LIMITER_MW_CORRECTION
11913+
% ignorenamelistkw: /MISC/CC_IBM, /MISC/CCVOL_LINK, /MISC/TEST_NEW_CHAR_MODEL, /MISC/PR, /MISC/SC
1191611914
% ignorenamelistkw: /PART/DEBUG, /PART/EMBER_SNAG_FACTOR
1191711915
% ignorenamelistkw: /PRES/WRITE_PARCSRPCG_MATRIX
1191811916
% ignorenamelistkw: /REAC/C, /REAC/H, /REAC/O, /REAC/N, /REAC/FORMULA
@@ -14255,6 +14253,7 @@ \chapter{Error Codes}
1425514253
446 \> \ct{SURF REFERENCE_THICKNESS values must increase for each} \> Section~\ref{info:scaled_burning} \\
1425614254
\> \ct{new group of REFERENCE_HEAT_FLUX.} \\
1425714255
447 \> \ct{RAMP ... used with REFERENCE_HEAT_FLUX must start at T = 0.} \> Section~\ref{info:scaled_burning} \\
14256+
448 \> \ct{PROF ... MATL_ID ... not a part of surface type ...} \> Section~\ref{info:solidoutputquantities} \\
1425814257
\> \> \\
1425914258
501 \> \ct{No ID provided ...} \> Section~\ref{info:HVAC} \\
1426014259
502 \> \ct{Invalid TYPE_ID provided ...} \> Section~\ref{info:HVAC} \\
@@ -14491,6 +14490,7 @@ \chapter{Error Codes}
1449114490
951 \> \ct{PROF ... requires an orientation index, IOR.} \> Section~\ref{info:PROF} \\
1449214491
952 \> \ct{PROF ... is not valid.} \> Section~\ref{info:PROF} \\
1449314492
953 \> \ct{PROF ... requires a PART_ID.} \> Section~\ref{info:PROF} \\
14493+
954 \> \ct{PROF ... MATL_ID ... not found.} \> Section~\ref{info:PROF} \\
1449414494
\> \> \\
1449514495
961 \> \ct{CELL_CENTERED not allowed with AGL_SLICE.} \> Section~\ref{info:complex_terrain} \\
1449614496
962 \> \ct{BNDF ... CPUA_Z, MPUA_Z, and AMPUA_Z require liquid droplets.} \> Section~\ref{bucket_test_1} \\

Manuals/FDS_Validation_Guide/Heat_Flux_Chapter.tex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -822,18 +822,18 @@ \subsection{TUS Facade Experiments}
822822
\put(0.91,3.765){\circle{0.05}}
823823
\end{picture}
824824
\end{minipage}
825-
\caption[JIA A 1310 Facade, position of heat flux gauges]{Positions of the heat flux gauges on the exterior wall of the JIS~A~1310 experiments. The wall is 1.82~m wide and 4.095~m tall. The window is 0.91~m wide by 0.91 tall and 0.455~m above the floor.}
825+
\caption[JIS Facade, position of heat flux gauges]{Positions of the heat flux gauges on the exterior wall of the JIS~A~1310 experiments. The wall is 1.82~m wide and 4.095~m tall. The window is 0.91~m wide by 0.91 tall and 0.455~m above the floor.}
826826
\label{JIS_Facade_HF_Positions}
827827
\end{figure}
828828

829829
\newpage
830830

831831
\begin{figure}[p]
832832
\centering
833-
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_A_1310_HF_600_kW} \\
834-
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_A_1310_HF_750_kW} \\
835-
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_A_1310_HF_900_kW}
836-
\caption[JIS A 1310 Facade, heat flux]{JIS A 1310 Facade, heat flux. The Height refers to the distance above the top of the window.}
833+
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_facade_HF_600_kW} \\
834+
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_facade_HF_750_kW} \\
835+
\includegraphics[height=2.15in]{SCRIPT_FIGURES/TUS_Facade/JIS_facade_HF_900_kW}
836+
\caption[JIS Facade, heat flux]{JIS Facade, heat flux. The Height refers to the distance above the top of the window.}
837837
\label{JIS_Facade_Heat_Flux}
838838
\end{figure}
839839

0 commit comments

Comments
 (0)