Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -9915,6 +9915,12 @@ \subsubsection{Area Integral}
\ee
where $dA$ depends on the coordinates you specify for \ct{XB}. Note that this statistic is only appropriate for gas phase quantities, in particular those whose units involve \unit{\per\meter^2}. For example, the quantity \ct{'MASS FLUX X'} along with \ct{SPEC_ID='my gas'} is an appropriate output quantity if you want to know the mass flux of the gas species that you have named \ct{'my gas'} through an area normal to the $x$ direction. Note also that you must specify an area to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes.

\subsubsection{Volume}

This feature is usually used in conjunction with \ct{SPATIAL_STATISTIC='VOLUME INTEGRAL'} above (use two separate \ct{DEVC} lines, each with the same \ct{QUANTITY}). When performing precise mass and energy balances, it is useful to know exactly the volume of gas present in the region of interest. Using \ct{SPATIAL_STATISTIC='VOLUME'} produces the discrete analog of
\be \int \; \d V \ee
where $dV$ depends on the coordinates you specify for \ct{XB}.

\subsubsection{Area}

This feature is usually used in conjunction with \ct{SPATIAL_STATISTIC='AREA INTEGRAL'} above (use two separate \ct{DEVC} lines, each with the same \ct{QUANTITY}). When performing precise mass and energy balances, it is useful to know exactly the area of \ct{VENT} or \ct{SURF} of interest. Note that this may differ slightly from what is specified in the input file due to grid snapping for Cartesian geometries or due to the approximations used to represent curvilinear geometries. Using \ct{SPATIAL_STATISTIC='AREA'} produces the discrete analog of
Expand Down
16 changes: 16 additions & 0 deletions Manuals/FDS_Validation_Guide/Plume_Chapter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1174,6 +1174,22 @@ \section{Flame Tilt}
\end{figure}


\clearpage

\section{Fireball Diameter}
\label{Fireball Diameter}

A fireball is caused by a sudden, violent rupture of a container containing volatile liquids or gases, typically under high pressure. Figure~\ref{Fireball_Diameter_Scatterplot} summarizes comparisons of the measured and predicted maximum horizontal fireball diameter of several sets of experiments.

\begin{figure}[!h]
\begin{center}
\includegraphics[height=4.in]{SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Diameter}
\end{center}
\caption[Summary of fireball diameter predictions]
{Summary of measured and predicted maximum fireball diameter.}
\label{Fireball_Diameter_Scatterplot}
\end{figure}


\clearpage

Expand Down
Empty file.
65 changes: 65 additions & 0 deletions Manuals/FDS_Validation_Guide/Species_Chapter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1869,8 +1869,73 @@ \subsection{NIST Pool Fires}
\label{NIST_Pool_Fires_Propane_50kW}
\end{figure}


\clearpage

\subsection{Utiskul Compartment}

\begin{figure}[p]
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_1} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_1} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_Pressure} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_Heat_Flux} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_O2} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_CO2} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_CO} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_MLR}
\end{tabular*}
\caption[Summary of Utiskul Compartment, Test 1]{Summary of Utiskul Compartment, Test 1.}
\label{Utiskul_1}
\end{figure}

\begin{figure}[p]
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_2} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_2} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_Pressure} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_Heat_Flux} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_O2} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_CO2} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_CO} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_MLR}
\end{tabular*}
\caption[Summary of Utiskul Compartment, Test 2]{Summary of Utiskul Compartment, Test 2.}
\label{Utiskul_2}
\end{figure}

\begin{figure}[p]
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_3} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_3} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_Pressure} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_Heat_Flux} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_O2} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_CO2} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_CO} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_MLR}
\end{tabular*}
\caption[Summary of Utiskul Compartment, Test 3]{Summary of Utiskul Compartment, Test 3.}
\label{Utiskul_3}
\end{figure}

\begin{figure}[p]
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_4} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_4} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_Pressure} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_Heat_Flux} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_O2} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_CO2} \\
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_CO} &
\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_MLR}
\end{tabular*}
\caption[Summary of Utiskul Compartment, Test 4]{Summary of Utiskul Compartment, Test 4.}
\label{Utiskul_4}
\end{figure}


\clearpage

\subsection{Summary, Products of Incomplete Combustion}
\label{Carbon Monoxide Concentration}
Expand Down
20 changes: 17 additions & 3 deletions Source/dump.f90
Original file line number Diff line number Diff line change
Expand Up @@ -8105,15 +8105,27 @@ SUBROUTINE UPDATE_DEVICES_1(T,DT,NM)
SUBROUTINE SELECT_SPATIAL_STATISTIC(OPT_LP_INDEX,OPT_CUT_FACE_INDEX)

INTEGER, OPTIONAL :: OPT_LP_INDEX,OPT_CUT_FACE_INDEX
REAL(EB) :: PWT,AREA
REAL(EB) :: PWT,AREA,R1,R2,VOLUME
INTEGER :: ICF,JCF,NFACE

PWT = 1._EB
IF (PRESENT(OPT_LP_INDEX)) PWT = LAGRANGIAN_PARTICLE(OPT_LP_INDEX)%PWT

AREA = B1%AREA
IF (TWO_D) AREA = AREA/DY(BC%JJG)
IF (CYLINDRICAL) AREA = AREA*2._EB*PI
IF (TWO_D) THEN
AREA = AREA/DY(BC%JJG)
VOLUME = DX(BC%IIG)*DZ(BC%KKG)
ELSEIF(CYLINDRICAL) THEN
R1 = R(BC%IIG-1)
R2 = R(BC%IIG)
AREA = AREA*2._EB*PI
VOLUME = PI*(R2**2-R1**2)*DZ(BC%KKG)
ELSE
VOLUME = DX(BC%IIG)*DY(BC%JJG)*DZ(BC%KKG)
IF (CC_IBM) THEN
IF (CCVAR(BC%IIG,BC%JJG,BC%KKG,CC_IDCF) > 0) VOLUME = VOLUME * CUT_CELL(CCVAR(BC%IIG,BC%JJG,BC%KKG,CC_IDCC))%ALPHA_CC
ENDIF
ENDIF

IF (PRESENT(OPT_CUT_FACE_INDEX)) THEN
ICF = OPT_CUT_FACE_INDEX
Expand Down Expand Up @@ -8153,6 +8165,8 @@ SUBROUTINE SELECT_SPATIAL_STATISTIC(OPT_LP_INDEX,OPT_CUT_FACE_INDEX)
SDV%VALUE_1 = SDV%VALUE_1 + AREA*PWT
CASE('SUM')
SDV%VALUE_1 = SDV%VALUE_1 + VALUE
CASE('VOLUME')
SDV%VALUE_1 = SDV%VALUE_1 + VOLUME
END SELECT
ENDIF

Expand Down
52 changes: 49 additions & 3 deletions Source/turb.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1692,15 +1692,16 @@ SUBROUTINE SYNTHETIC_TURBULENCE(DT,T)

USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP
USE PHYSICAL_FUNCTIONS, ONLY: GET_WIND_AT_HEIGHT
USE MPI_F08

REAL(EB), INTENT(IN) :: DT,T
INTEGER :: NE,NV,NT,II,JJ,KK,NM
INTEGER :: IN,IA,IC
INTEGER :: IN,IA,IC,IERR
TYPE(VENTS_TYPE), POINTER :: VT
TYPE(SURFACE_TYPE), POINTER :: SF
REAL(EB) :: RAMP_T,TSI,SIGMA_MAX,ADV_VEL(3),SGN,UW,VW,WW,U1,V1,W1
REAL(EB) :: U_ADD,V_ADD,W_ADD
REAL(EB), ALLOCATABLE :: VENT_VEL(:,:)
REAL(EB) :: U_ADD,V_ADD,W_ADD,U_MEAN
REAL(EB), ALLOCATABLE :: VENT_VEL(:,:),VENT_MEAN_SUM(:),VENT_MEAN_CNT(:)
LOGICAL, ALLOCATABLE :: VENT_VEL_SET(:)

! Reference:
Expand Down Expand Up @@ -1860,6 +1861,51 @@ SUBROUTINE SYNTHETIC_TURBULENCE(DT,T)
ENDDO VENT_APPLY_LOOP
ENDDO MESH_APPLY_LOOP

! Subtract the vent mean of the normal component so fluctuations do not
! change volume flow. Must be global over TOTAL_INDEX (all mesh sections)
! to avod jumps at mesh interfaces
ALLOCATE(VENT_MEAN_SUM(N_VENT_TOTAL),SOURCE=0._EB)
ALLOCATE(VENT_MEAN_CNT(N_VENT_TOTAL),SOURCE=0._EB)
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
CALL POINT_TO_MESH(NM)
DO NV=1,N_VENT
VT => VENTS(NV)
IF (VT%N_EDDY==0) CYCLE
NT = VT%TOTAL_INDEX
SELECT CASE (ABS(VT%IOR))
CASE(1)
VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%U_EDDY)
VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%U_EDDY),EB)
CASE(2)
VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%V_EDDY)
VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%V_EDDY),EB)
CASE(3)
VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%W_EDDY)
VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%W_EDDY),EB)
END SELECT
ENDDO
ENDDO
IF (N_MPI_PROCESSES>1) THEN
CALL MPI_ALLREDUCE(MPI_IN_PLACE,VENT_MEAN_SUM,N_VENT_TOTAL,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
CALL MPI_ALLREDUCE(MPI_IN_PLACE,VENT_MEAN_CNT,N_VENT_TOTAL,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR)
ENDIF
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
CALL POINT_TO_MESH(NM)
DO NV=1,N_VENT
VT => VENTS(NV)
IF (VT%N_EDDY==0) CYCLE
NT = VT%TOTAL_INDEX
IF (VENT_MEAN_CNT(NT)<=TWO_EPSILON_EB) CYCLE
U_MEAN = VENT_MEAN_SUM(NT)/VENT_MEAN_CNT(NT)
SELECT CASE (ABS(VT%IOR))
CASE(1); VT%U_EDDY = VT%U_EDDY - U_MEAN
CASE(2); VT%V_EDDY = VT%V_EDDY - U_MEAN
CASE(3); VT%W_EDDY = VT%W_EDDY - U_MEAN
END SELECT
ENDDO
ENDDO
DEALLOCATE(VENT_MEAN_SUM,VENT_MEAN_CNT)

END SUBROUTINE SYNTHETIC_TURBULENCE


Expand Down
Loading
Loading