diff --git a/Manuals/FDS_User_Guide/FDS_User_Guide.tex b/Manuals/FDS_User_Guide/FDS_User_Guide.tex index ac9cd639e66..0cdb9f2e758 100644 --- a/Manuals/FDS_User_Guide/FDS_User_Guide.tex +++ b/Manuals/FDS_User_Guide/FDS_User_Guide.tex @@ -425,9 +425,6 @@ \subsubsection{What is MPI?} MPI and OpenMP can be used together. For example, 4 MPI processes can be assigned to 4 different computers, and each MPI process can be supported by, say, 8 OpenMP threads, assuming each computer has 8 cores. Most of the speed up is achieved by the MPI. For a reasonably fast network, you can expect 4 MPI processes to speed up the computation time by a factor of about 0.9 times 4. The OpenMP can provide an extra factor up to about 2, regardless of the number of cores used beyond about 4. - -\newpage - \section{Launching an FDS Job} \label{info:launching} @@ -570,9 +567,6 @@ \subsection{Running Very Large Jobs} \item Do a strong scaling study for your particular case. That is, run the job a fixed number of time steps with the least number of meshes that can fit within the machine's memory. Then divide the mesh by factors of 2, 4, or 8 until reaching a point where the increased number of meshes/processes does not provide a significant speed up. \end{enumerate} - -\newpage - \section{Efficiency of Multi-Process Simulations} At the end of a calculation, FDS prints out a file called \ct{CHID_cpu.csv} that records the amount of CPU time that each MPI process spends in the major routines. For example, the column header \ct{VELO} stands for all the subroutines related to computing the flow velocity; \ct{MASS} stands for all the subroutines related to computing the species mass fractions and density. The column header \ct{MAIN} represents all of the CPU time that is not explicitly accounted for; that is, time spend in the main control loop. Ideally, this ought to be a few percent of the overall CPU time usage. @@ -609,10 +603,6 @@ \subsection{OpenMP Efficiency} \end{figure} - - -\newpage - \section{Monitoring Progress} \label{info:monitoring_progress} @@ -736,7 +726,7 @@ \section{Namelist Formatting} The parameters in the input file can be integers, reals, character strings, or logical parameters. A logical parameter (outside of Fortran known as boolean parameter) is either \ct{T} (for True) or \ct{F} (for False)\footnote{The values of \ct{.TRUE.} and \ct{.FALSE.} can also be used}. The periods following numbers (e.g. \ct{10.}) are a convention for specifying a real as opposed to an integer (\ct{10.} is equivalent to \ct{10.0}). Character strings that are listed in this User's Guide must be copied exactly as written -- the code is case sensitive and underscores {\em do} matter. The maximum length of most character input parameters is 60. Depending on your operating system, it may matter that integers are specified as integers (e.g. \ct{10} and not \ct{10.}). Most of the input parameters are simply real or integer scalars, like \ct{DT=0.02}, but sometimes the inputs are -multidimensional arrays. For example, when describing a particular solid surface, you need to express the mass fractions of multiple materials that are to be found in multiple layers. The input array \ct{MATL_MASS_FRACTION(IL,IC)} is intended to convey to FDS the mass fraction of component \ct{IC} of layer \ct{IL}. For example, if the mass fraction of the second material of the third layer is 0.5, then write +multidimensional arrays. For example, when describing a particular solid surface, you need to express the mass fractions of multiple materials that are to be found in multiple layers. The input array \linebreak[4]\ct{MATL_MASS_FRACTION(IL,IC)} is intended to convey to FDS the mass fraction of component \ct{IC} of layer \ct{IL}. For example, if the mass fraction of the second material of the third layer is 0.5, then write \begin{lstlisting} MATL_MASS_FRACTION(3,2)=0.5 \end{lstlisting} @@ -879,12 +869,12 @@ \section{Protecting Old Cases} \section{Stopping and Restarting Calculations (\ct{.restart})} \label{info:restart} -An important \ct{MISC} parameter is called \ct{RESTART}. Normally, a simulation consists of a sequence of events starting from ambient conditions. However, there are occasions when you might want to stop a calculation, make a few limited adjustments, and then restart the calculation from that point in time. To do this, first bring the calculation to a halt gracefully by creating a file called \ct{CHID.stop} in the directory where the output files are located. Remember that FDS is case-sensitive. The file name must be exactly the same as the \ct{CHID} and `stop' should be lower case. If you have a \ct{CATF} line in your input, you will need to use \ct{CHID_cat.stop}. FDS checks for the existence of this file at each time step, and if it finds it, gracefully shuts down the calculation after first creating a file (or files in the case of a multiple mesh job) called \ct{CHID.restart} (or \ct{CHID_nn.restart}). To restart a job, the file(s) \ct{CHID.restart} should exist in the working directory, and the phrase \ct{RESTART=T} needs to be added to the \ct{MISC} line of the input data file. For example, suppose that the job whose \ct{CHID} is ``plume'' is halted by creating a dummy file called \ct{plume.stop} in the directory where all the output files are being created. To restart this job from where it left off you will need to delete the file \ct{plume.stop} so that FDS does not immediately stop the calculation and add \ct{RESTART=T} to the \ct{MISC} line of the input file \ct{plume.fds}, or whatever you have chosen to name the input file. The existence of a restart file with the same \ct{CHID} as the original job tells FDS to continue saving the new data in the same files as the old\footnote{By default, when a job is restarted, the spreadsheet output files will be appended at the time the job was restarted, not the time the job was stopped. If you want the output files to be appended without clipping off any existing data, even though some duplicate output will be left over, then set \ct{CLIP_RESTART_FILES} to \ct{F} on the \ct{DUMP} line.}. If \ct{RESTART_CHID} is also specified on the \ct{MISC} line, then FDS will look for old output files tagged with this string instead of using the specified \ct{CHID} on the \ct{HEAD} line. In this case, the new output files will be tagged with \ct{CHID}, and the old output files will not be altered. When running the restarted job, the diagnostic output of the restarted job is appended to output files from the original job. +An important \ct{MISC} parameter is called \ct{RESTART}. Normally, a simulation consists of a sequence of events starting from ambient conditions. However, there are occasions when you might want to stop a calculation, make a few limited adjustments, and then restart the calculation from that point in time. To do this, first bring the calculation to a halt gracefully by creating a file called \ct{CHID.stop} in the directory where the output files are located. Remember that FDS is case-sensitive. The file name must be exactly the same as the \ct{CHID} and `stop' should be lower case. If you have a \ct{CATF} line in your input, you will need to use \linebreak[4]\ct{CHID_cat.stop}. FDS checks for the existence of this file at each time step, and if it finds it, gracefully shuts down the calculation after first creating a file (or files in the case of a multiple mesh job) called \ct{CHID.restart} (or \ct{CHID_nn.restart}). To restart a job, the file(s) \ct{CHID.restart} should exist in the working directory, and the phrase \ct{RESTART=T} needs to be added to the \ct{MISC} line of the input data file. For example, suppose that the job whose \ct{CHID} is ``plume'' is halted by creating a dummy file called \ct{plume.stop} in the directory where all the output files are being created. To restart this job from where it left off you will need to delete the file \ct{plume.stop} so that FDS does not immediately stop the calculation and add \ct{RESTART=T} to the \ct{MISC} line of the input file \ct{plume.fds}, or whatever you have chosen to name the input file. The existence of a restart file with the same \ct{CHID} as the original job tells FDS to continue saving the new data in the same files as the old\footnote{By default, when a job is restarted, the spreadsheet output files will be appended at the time the job was restarted, not the time the job was stopped. If you want the output files to be appended without clipping off any existing data, even though some duplicate output will be left over, then set \ct{CLIP_RESTART_FILES} to \ct{F} on the \ct{DUMP} line.}. If \ct{RESTART_CHID} is also specified on the \ct{MISC} line, then FDS will look for old output files tagged with this string instead of using the specified \ct{CHID} on the \ct{HEAD} line. In this case, the new output files will be tagged with \ct{CHID}, and the old output files will not be altered. When running the restarted job, the diagnostic output of the restarted job is appended to output files from the original job. There may be times when you want to save restart files periodically during a run as insurance against power outages or system crashes. If this is the case, at the start of the original run set \ct{DT_RESTART=50.} on the \ct{DUMP} line to save restart files every 50~s, for example. The default for \ct{DT_RESTART} is 1000000, meaning no restart files are created unless you gracefully stop a job by creating a dummy file called \ct{CHID.stop}. The control function feature (see Sec.~\ref{info:CTRL}) can be used to stop a calculation or dump a restart file when the computation reaches some measurable condition such as the first sprinkler activation. Each new set of restart files will overwrite the old files. -Between job stops and restarts, major changes cannot be made in the calculation like adding or removing vents and obstructions. The changes are limited to those parameters that do not cause changes in the size of runtime arrays. For example, changing the output frequency of data sent to the heat release rate (\ct{*_hrr.csv}) would be permitted by setting the new frequency on the \ct{DUMP} line (see Table \ref{tbl:DUMP} for a complete list of output frequencies). If no frequency is set on the new run, the frequency from the previous run is maintained. However, this is not true of \ct{DT_RESTART}; if no \ct{DT_RESTART} is present for the new run, then no restart files will be written (this prevents overwrites of old restart files). An example that would not be allowed is adding an additional material layer to a \ct{SURF} input. Doing this would would change the array storage required for the surface, and the data needed by FDS would not be present in the restart files. +Between job stops and restarts, major changes cannot be made in the calculation like adding or removing vents and obstructions. The changes are limited to those parameters that do not cause changes in the size of runtime arrays. For example, changing the output frequency of data sent to the heat release rate \linebreak[4](\ct{*_hrr.csv}) would be permitted by setting the new frequency on the \ct{DUMP} line (see Table \ref{tbl:DUMP} for a complete list of output frequencies). If no frequency is set on the new run, the frequency from the previous run is maintained. However, this is not true of \ct{DT_RESTART}; if no \ct{DT_RESTART} is present for the new run, then no restart files will be written (this prevents overwrites of old restart files). An example that would not be allowed is adding an additional material layer to a \ct{SURF} input. Doing this would would change the array storage required for the surface, and the data needed by FDS would not be present in the restart files. Since the restart capability has been used infrequently by the developers, it should be considered a fragile construct. Examine the output to ensure that no sudden or unexpected events occur during the stop and restart. @@ -908,9 +898,6 @@ \section{Naming the Job} \item \ct{TITLE} is a string of 255 characters or less that describes the simulation. It is simply a descriptive text that is passed to various output files. \end{description} - -\newpage - \section{Simulation Time} \label{info:TIME} @@ -976,7 +963,7 @@ \subsection{Steady-State Applications} Occasionally, there are applications in which only the steady-state solution (in a time-averaged sense) is desired. In a time-dependent code such as FDS, reaching steady-state requires that the simulation be run long enough that a steady-state flow field and gas temperature field develops and that steady-state temperature profiles develop in solid surfaces. Developing steady-state temperature profiles can take a long time as the surface must be heated up in-depth. This can make the cost of the calculation prohibitive. Given steady-state boundary conditions, the time it takes a surface to -heat up is proportional to its specific heat. Therefore, under steady conditions, this time can be accelerated by reducing the specific heat. So that the \ct{SPECIFIC_HEAT} inputs on \ct{MATL} +heat up is proportional to its specific heat. Therefore, under steady conditions, this time can be accelerated by reducing the specific heat. So that the \linebreak[4]\ct{SPECIFIC_HEAT} inputs on \ct{MATL} can remain the same but still provide a means to reduce the heating time of a surface, the \ct{MISC} input of \ct{TIME_SHRINK_FACTOR} can be used. The \ct{SPECIFIC_HEAT} inputs on \ct{MATL} are reduced by this factor. For a \ct{TIME_SHRINK_FACTOR} of 10, the specific heats of the various materials is reduced by a factor of 10. This speeds up the heating of solid materials roughly by a factor of 10. An example of an application where this parameter is handy is a validation experiment where a steady heat source @@ -986,8 +973,6 @@ \subsection{Steady-State Applications} Note that when \ct{TIME_SHRINK_FACTOR} is used a device with \ct{QUANTITY='TIME'} or a device or control function with a \ct{DELAY} will have those values adjusted by the value of \ct{TIME_SHRINK_FACTOR}. For example if a 10~s \ct{DELAY} is specified for a \ct{CTRL} input with a \ct{TIME_SHRINK_FACTOR} of 10, then FDS will adjust the \ct{DELAY} to 1~s. However, use of time based device or control functions that change the simulation implies a non-steady scenario where the use of \ct{TIME_SHRINK_FACTOR} may no longer be appropriate. -\newpage - \section{Computational Meshes} \label{info:MESH} @@ -1123,7 +1108,7 @@ \subsection{Mesh Alignment} The following rules of thumb should also be followed when setting up a multiple mesh calculation: \begin{itemize} -\item When running multi-mesh calculations you need to closely monitor \ct{VELOCITY_ERROR} at mesh interfaces, which is reported in the \ct{CHID.out} file. Check that you are not consistently hitting the \ct{MAX_PRESSURE_ITERATIONS}, which defaults to 10. If you are, then this indicates a potential problem and you may consider increasing this value to 20 or even 100 in some cases. Velocity errors are proportional to mass loss errors. If your errors are too large for your application, you may need to tighten the \ct{VELOCITY_TOLERANCE} or else consider using a different pressure solver, see Sec.~\ref{pressure_solver}. +\item When running multi-mesh calculations you need to closely monitor \ct{VELOCITY_ERROR} at mesh interfaces, which is reported in the \ct{CHID.out} file. Check that you are not consistently hitting the \linebreak[4]\ct{MAX_PRESSURE_ITERATIONS}, which defaults to 10. If you are, then this indicates a potential problem and you may consider increasing this value to 20 or even 100 in some cases. Velocity errors are proportional to mass loss errors. If your errors are too large for your application, you may need to tighten the \ct{VELOCITY_TOLERANCE} or else consider using a different pressure solver, see Sec.~\ref{pressure_solver}. \item In general, there is little advantage to overlapping meshes because information is only exchanged at exterior boundaries. This means that a mesh that is completely embedded within another receives information at its exterior boundary, but the larger mesh receives no information from the mesh embedded within. Essentially, the larger, usually coarser, mesh is doing its own simulation of the scenario and is not affected by the smaller, usually finer, mesh embedded within it. Details within the fine mesh, especially related to fire growth and spread, may not be picked up by the coarse mesh. In such cases, it is preferable to isolate the detailed fire behavior within one mesh, and position coarser meshes at the exterior boundary of the fine mesh. Then the fine and coarse meshes mutually exchange information. \item Be careful when using the shortcut convention of declaring an entire face of the domain to be an \ct{OPEN} vent. Every mesh takes on this attribute. See Sec.~\ref{info:VENT} for more details. \item If a planar obstruction is close to where two meshes abut, make sure that each mesh ``sees'' the obstruction. If the obstruction is even a millimeter outside of one of the meshes, that mesh does not account for it, in which case information is not transferred properly between meshes. @@ -1242,8 +1227,6 @@ \section{Specifying Boundary Conditions} If only this boundary condition is needed, there is no need to add any \ct{SURF} lines to the input file. If additional boundary conditions are desired, they are to be listed one boundary condition at a time. Each \ct{SURF} line consists of an identification string \ct{ID='...'} to allow references to it by an obstruction or vent. Thus, on each \ct{OBST} and \ct{VENT} line that are to be described below, the character string \ct{SURF_ID='...'} indicates the \ct{ID} of the \ct{SURF} line containing the desired boundary condition parameters. If a particular \ct{SURF} line is to be applied as the default boundary condition, set \ct{DEFAULT=T} on the \ct{SURF} line. -\newpage - \section{Creating Rectilinear Obstructions} \label{info:OBST} @@ -1274,7 +1257,7 @@ \subsection{Thin Obstructions} An obstruction that is relatively thin compared to the gas phase numerical grid spacing is approximated as an infinitely thin sheet. These obstructions, like window panes, form a flow and (partial) radiation barrier, but if the numerical mesh is coarse relative to its thickness, the obstruction might be unnecessarily large if it is assumed to be one layer of mesh cells thick. Smokeview renders this obstruction as a thin sheet, but it is allowed to have thermally-thick boundary conditions. -This obstruction has the drawback that it is not possible to specify a normal velocity component on its surface. A thin sheet obstruction can only have one velocity vector on its face, thus a gas cannot be injected or extracted reliably from a thin obstruction because whatever is pushed from one side is necessarily pulled from the other. If you want to create a simple fan, for example, the obstruction should be specified to be at least one mesh cell thick. To prevent FDS from allowing thin sheet obstructions, set \ct{THICKEN_OBSTRUCTIONS=T} on the \ct{MISC} line, or \ct{THICKEN=T} on each \ct{OBST} line for which the thin sheet assumption is not allowed. +This obstruction has the drawback that it is not possible to specify a normal velocity component on its surface. A thin sheet obstruction can only have one velocity vector on its face, thus a gas cannot be injected or extracted reliably from a thin obstruction because whatever is pushed from one side is necessarily pulled from the other. If you want to create a simple fan, for example, the obstruction should be specified to be at least one mesh cell thick. To prevent FDS from allowing thin sheet obstructions, set \linebreak[4]\ct{THICKEN_OBSTRUCTIONS=T} on the \ct{MISC} line, or \ct{THICKEN=T} on each \ct{OBST} line for which the thin sheet assumption is not allowed. Another drawback occurs when using the default FFT-based pressure solver. Thin obstructions are more prone to errors in the normal velocity at the obstruction. If thin obstructions see large pressure gradients across the obstruction or are impacted by high normal velocities, then tighter tolerances for the FFT-based solver or the use of another pressure solver may be warranted. For details see the discussion in Sec.~\ref{pressure_solver}. @@ -1365,8 +1348,6 @@ \subsection{Preventing Obstruction Removal or Hole Punching} \ifcompgeom -\newpage - \section{Creating Unstructured Geometry (Beta)} \label{info:GEOM} @@ -1554,7 +1535,7 @@ \subsubsection{Spheres} \subsubsection{Cylinders} \label{info:GEOM_cyls} -A \ct{GEOM} namelist defining a cylinder geometry with centroid at \ct{CYLINDER_ORIGIN} $= (0,0,0)$, axis \ct{CYLINDER_AXIS} $= (1.,0,0)$, length \ct{CYLINDER_LENGTH} $= 2.$ and radius \ct{CYLINDER_RADIUS} $= 0.5$ is specified by +A \ct{GEOM} namelist defining a cylinder geometry with centroid at \ct{CYLINDER_ORIGIN} $= (0,0,0)$, axis \linebreak[4]\ct{CYLINDER_AXIS} $= (1.,0,0)$, length \ct{CYLINDER_LENGTH} $= 2.$ and radius \ct{CYLINDER_RADIUS} $= 0.5$ is specified by \begin{lstlisting} &GEOM ID='cylinder', SURF_ID='S1', @@ -1565,7 +1546,7 @@ \subsubsection{Cylinders} CYLINDER_NSEG_AXIS=6, CYLINDER_NSEG_THETA=48 / \end{lstlisting} -where the cylinder is discretized using 6 segments along its axis (\ct{CYLINDER_NSEG_AXIS}) and 48 segments across its circumference (\ct{CYLINDER_NSEG_THETA}). The keyword \ct{SURF_ID} can be replaced by \ct{SURF_IDS='S1','S2','S3'}, where the strings \ct{'S1','S2','S3'} correspond to the surface IDs of top, sides and bottom surfaces respectively. +where the cylinder is discretized using 6 segments along its axis (\ct{CYLINDER_NSEG_AXIS}) and 48 segments across its circumference (\ct{CYLINDER_NSEG_THETA}). The keyword \ct{SURF_ID} can be replaced by \linebreak[4]\ct{SURF_IDS='S1','S2','S3'}, where the strings \ct{'S1','S2','S3'} correspond to the surface IDs of top, sides and bottom surfaces respectively. \subsubsection{2D Terrain Elevations} @@ -1591,7 +1572,7 @@ \subsubsection{2D Terrain Elevations} \ct{ivals}\ elevation values for the ymax position again from xmin to xmax. There are then \ct{jvals}\ rows and \ct{ivals}\ columns of elevation data. The optional fields \ct{EXTEND_TERRAIN} and \ct{ZVAL_HORIZON} are used in the following form. If the computational domain is set larger than the \ct{XB} defined terrain patch, such that it contains the terrain completely, setting \ct{EXTEND_TERRAIN=T} allows for the terrain to be extended to the domain boundaries. This can be helpful when trying to reduce boundary effects on a calculation. -If, additionally, the real number \ct{ZVAL_HORIZON} is set on the \ct{GEOM} line, this elevation will be used on the domain boundaries when extending the domain. +If, additionally, the real number \linebreak[4]\ct{ZVAL_HORIZON} is set on the \ct{GEOM} line, this elevation will be used on the domain boundaries when extending the domain. As with the blocks and spheres, FDS uses the information provided by these keywords to construct vertices and triangular faces. The bottom elevation of the geometry (used only for visualization purposes in Smokeview) may be set with the parameter \ct{ZMIN}. @@ -1645,7 +1626,7 @@ \subsection{Binary Geometry Files} \label{subsec:readbin} In cases where geometries have very large numbers of nodes and surface triangles, greater setup time efficiency can be achieved by reading this data from an FDS produced binary file. This binary file can be obtained running the case in setup only mode (\ct{T_END=0.0}). -Consider the chair geometry defined in the previous section. When a geometry is read by FDS, the \ct{XYZ} and face connectivity data \ct{FACES} is automatically written into a binary file with name \ct{CHID_GEOM_ID.bingeom} on the run directory (here, \ct{GEOM_ID='chair'}). If an \ct{ID} is not provided, the name of the binary file will be \ct{CHID_N_GEOM.bingeom}, where \ct{N_GEOM} is the number defining the order of appearance of the geometry line on the FDS input file. To help keep geometry files organized, you may specify a \ct{BINGEOM_DIR} on the \ct{DUMP} line, in which case the binary files will be written to \ct{BINGEOM_DIR/CHID_GEOM_ID.bingeom}. +Consider the chair geometry defined in the previous section. When a geometry is read by FDS, the \ct{XYZ} and face connectivity data \ct{FACES} is automatically written into a binary file with name \ct{CHID_GEOM_ID.bingeom} on the run directory (here, \linebreak[4]\ct{GEOM_ID='chair'}). If an \ct{ID} is not provided, the name of the binary file will be \ct{CHID_N_GEOM.bingeom}, where \ct{N_GEOM} is the number defining the order of appearance of the geometry line on the FDS input file. To help keep geometry files organized, you may specify a \ct{BINGEOM_DIR} on the \ct{DUMP} line, in which case the binary files will be written to \ct{BINGEOM_DIR/CHID_GEOM_ID.bingeom}. Then, supposing the case ID is \ct{CHID='DiningRoom'}, the next time the case is run, the geometry line can be modified to: \begin{lstlisting} @@ -1707,7 +1688,6 @@ \subsection{The Big Picture, Run Time, and Accuracy} \fi -\newpage \section{Applying Surface Properties} \label{info:VENT} @@ -1821,9 +1801,6 @@ \subsection{Trouble-Shooting Vents} If an error message appears requesting that the orientation of a vent should be specified, first check to make sure that the vent is a plane; that is, that two of its six coordinates are the same. If the vent is a plane, then the orientation is usually determined automatically. However, if the \ct{VENT} is attached to a thin obstruction; that is, an obstruction that is zero cells thick, then you must specify an orientation index, \ct{IOR}, to indicate in which of the two normal directions the \ct{VENT} faces. If the normal direction of the \ct{VENT} is in the positive $x$ direction, for example, set \ct{IOR=1}. If the normal direction is in the negative $x$ direction, set \ct{IOR=-1}. For the $y$ or $z$ direction, use the number $\pm 2$ or $\pm 3$, respectively. Setting \ct{IOR} may sometimes solve the problem, but there are situations where it is not possible to automatically detect the vent orientation or that the vent is completely detached from a solid surface, in which case you should rework the \ct{VENT} parameters. -\newpage - - \section{Coloring Obstructions, Geometry, Vents, Surfaces, and Meshes} Assigning objects a meaningful color or pattern is useful when visualizing the results of a simulation. There are two ways to do this in FDS. Either assign a single color, or assign a texture map, which is an image of your choosing. @@ -1899,12 +1876,13 @@ \subsection{Texture Maps} In addition to the various ways of prescribing the color of various objects within the computational domain, there is also a way of pasting images onto the obstructions for the purpose of making the Smokeview images more realistic. This technique is known as ``texture mapping.'' For example, to apply a wood paneling image to a wall, add to the \ct{SURF} line defining the physical properties of the paneling the line: \begin{lstlisting} - &SURF ID='wood paneling',..., TEXTURE_MAP='paneling.jpg', TEXTURE_WIDTH=1., - TEXTURE_HEIGHT=2. / + &SURF ID='wood paneling',..., TEXTURE_MAP='paneling.jpg', + TEXTURE_WIDTH=1., TEXTURE_HEIGHT=2. / \end{lstlisting} Assuming that a JPEG file called \ct{paneling.jpg} exists in the working directory, Smokeview will load and display the image wherever the paneling is used. PNG images may also be used for texture maps. Note that the image does not appear when Smokeview is first invoked. It is an option controlled by the \ct{Show/Hide} menu. The parameters \ct{TEXTURE_WIDTH} and \ct{TEXTURE_HEIGHT} are the physical dimensions of the image. In this case, the JPEG image is of a 1~m wide by 2~m high piece of paneling. Smokeview replicates the image as often as necessary to make it appear that the paneling is applied where desired. Consider carefully how the image repeats itself when applied in a scene. If the image has no obvious pattern, there is no problem with the image being repeated. If the image has an obvious direction, the real triplet \ct{TEXTURE_ORIGIN} should be added to the \ct{VENT} or \ct{OBST} line to which a texture map should be applied. For example, \begin{lstlisting} - &OBST XB=1.,2.,3.,4.,5.,7., SURF_ID='wood paneling', TEXTURE_ORIGIN=1.,3.,5. / + &OBST XB=1.,2.,3.,4.,5.,7., SURF_ID='wood paneling', + TEXTURE_ORIGIN=1.,3.,5. / \end{lstlisting} applies paneling to an obstruction whose dimensions are 1~m by 1~m by 2~m, such that the image of the paneling is positioned at the point (1,3,5). The default value of \ct{TEXTURE_ORIGIN} is (0,0,0), and the global default can be changed by added a \ct{TEXTURE_ORIGIN} statement to the \ct{MISC} line. @@ -1917,7 +1895,7 @@ \subsection{Texture Maps} TEXTURE_MAPPING='SPHERICAL'/ &MOVE ID='SPHERE_ROT', AXIS=0.,0.,1., ROTATION_ANGLE=270. / &GEOM ID='sphere1',SURF_ID='surf1',SPHERE_RADIUS=0.5, - N_LAT=25,N_LONG=50,SPHERE_ORIGIN=0.0,0.0,0.0,MOVE_ID='SPHERE_ROT' + N_LAT=25,N_LONG=50,SPHERE_ORIGIN=0.0,0.0,0.0,MOVE_ID='SPHERE_ROT'/ \end{lstlisting} \begin{figure}[ht] @@ -1934,14 +1912,13 @@ \subsection{Texture Maps} -\newpage - \section{Repeated Objects: The \texorpdfstring{{\tt MULT}}{MULT} Namelist Group (Table \ref{tbl:MULT})} \label{info:MULT} Sometimes obstructions, holes and vents are repeated over and over in the input file. This can be tedious to create and make the input file hard to read. However, if a particular set of objects repeats itself in a regular pattern, you can use a utility known as a multiplier. If you want to repeat an obstruction, for example, create a line in the input file as follows: \begin{lstlisting} - &MULT ID='m1', DX=1.2, DY=2.4, I_LOWER=-2, I_UPPER=3, J_LOWER=0, J_UPPER=5 / + &MULT ID='m1', DX=1.2, DY=2.4, I_LOWER=-2, I_UPPER=3, J_LOWER=0, + J_UPPER=5 / &OBST XB=x1,x2,y1,y2,z1,z2, MULT_ID='m1' / \end{lstlisting} This has the effect of making an array of obstructions according to the following formulae: @@ -1969,10 +1946,14 @@ \section{Repeated Objects: The \texorpdfstring{{\tt MULT}}{MULT} Namelist Group &HEAD CHID='pyramid', TITLE='Simple demo of multiplier function' / &MESH IJK=100,100,100, XB=0.0,1.0,0.0,1.0,0.0,1.0 / &TIME T_END=0. / - &MULT ID='south', DXB=0.01,-.01,0.01,0.01,0.01,0.01, N_LOWER=0, N_UPPER=39 / - &MULT ID='north', DXB=0.01,-.01,-.01,-.01,0.01,0.01, N_LOWER=0, N_UPPER=39 / - &MULT ID='east', DXB=-.01,-.01,0.01,-.01,0.01,0.01, N_LOWER=0, N_UPPER=39 / - &MULT ID='west', DXB=0.01,0.01,0.01,-.01,0.01,0.01, N_LOWER=0, N_UPPER=39 / + &MULT ID='south', DXB=0.01,-.01,0.01,0.01,0.01,0.01, N_LOWER=0, + N_UPPER=39 / + &MULT ID='north', DXB=0.01,-.01,-.01,-.01,0.01,0.01, N_LOWER=0, + N_UPPER=39 / + &MULT ID='east', DXB=-.01,-.01,0.01,-.01,0.01,0.01, N_LOWER=0, + N_UPPER=39 / + &MULT ID='west', DXB=0.01,0.01,0.01,-.01,0.01,0.01, N_LOWER=0, + N_UPPER=39 / &OBST XB=0.10,0.90,0.10,0.11,0.10,0.11, MULT_ID='south', COLOR='RED' / &OBST XB=0.10,0.90,0.89,0.90,0.10,0.11, MULT_ID='north', COLOR='BLUE' / &OBST XB=0.10,0.11,0.11,0.89,0.10,0.11, MULT_ID='west', COLOR='GREEN' / @@ -2001,8 +1982,10 @@ \subsection{Using \ct{MULT} for Mesh Refinement} DX=1.0,I_LOWER=0,I_LOWER_SKIP=1,I_UPPER_SKIP=2,I_UPPER=3, DZ=1.0,K_LOWER=0,K_LOWER_SKIP=1,K_UPPER_SKIP=2,K_UPPER=3 / - &MESH IJK=8,1,8, XB=0.0,1.0,-0.5,0.5,0.0,1.0, MULT_ID='interior fine mesh array' / - &MESH IJK=4,1,4, XB=0.0,1.0,-0.5,0.5,0.0,1.0, MULT_ID='exterior coarse mesh array' / + &MESH IJK=8,1,8, XB=0.0,1.0,-0.5,0.5,0.0,1.0, + MULT_ID='interior fine mesh array' / + &MESH IJK=4,1,4, XB=0.0,1.0,-0.5,0.5,0.0,1.0, + MULT_ID='exterior coarse mesh array' / \end{lstlisting} \vskip2\baselineskip @@ -2091,7 +2074,8 @@ \subsection{Using \ct{MULT} to make shapes out of obstructions} \begin{lstlisting} &MESH IJK=50,50,50, XB=-0.125,0.125,-0.125,0.125,-0.125,0.125/ &SURF ID='shape', COLOR='ORANGE'/ - &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, I_UPPER=41,J_UPPER=41,K_UPPER=41/ + &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, + I_UPPER=41,J_UPPER=41,K_UPPER=41/ &OBST XB=-0.105,-0.100,-0.105,-0.100,-0.105,-0.100 MULT_ID='cube array' SURF_ID='shape' @@ -2109,7 +2093,8 @@ \subsection{Using \ct{MULT} to make shapes out of obstructions} A word of caution about precise area adjustments: Changing the \ct{ORIENTATION} from the default (0,0,1) or using \ct{SHAPE} with multiple meshes voids the area adjustment algorithm. As a result, FDS cannot achieve the exact mass flux out of the surface as prescribed by the \ct{SURF} line and the precise area given by the geometry parameters for the \ct{SHAPE} on the \ct{OBST} line. The mass flux FDS generates will be determined by \ct{SURF} line and the size of the grid cells the \ct{OBST} snaps to. If either reorientation or a multiple mesh calculation is required, first run a sample case to see what total flow rate the surface is achieving (usually found in the \ct{CHID_hrr.csv} file). Then manually adjust your mass flux (or \ct{HRRPUA}) on the appropriate \ct{SURF} line. \begin{lstlisting} &SURF ID='shape', COLOR='DARK GRAY'/ - &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, I_UPPER=41,J_UPPER=41,K_UPPER=41/ + &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, + I_UPPER=41,J_UPPER=41,K_UPPER=41/ &OBST XB=-0.105,-0.100,-0.105,-0.100,-0.105,-0.100 MULT_ID='cube array' SURF_ID='shape' @@ -2149,7 +2134,8 @@ \subsection{Using \ct{MULT} to make shapes out of obstructions} A simple example is shown Fig~\ref{fig:obst_rotbox}. \begin{lstlisting} &SURF ID='shape', COLOR='GRAY'/ - &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, I_UPPER=41,J_UPPER=41,K_UPPER=41/ + &MULT ID='cube array', DX=0.005,DY=0.005,DZ=0.005, + I_UPPER=41,J_UPPER=41,K_UPPER=41/ &OBST XB=-0.105,-0.100,-0.105,-0.100,-0.105,-0.100 MULT_ID='cube array' SURF_ID='shape' @@ -2199,7 +2185,7 @@ \subsection{Specified Solid Surface Temperature} Typically, the surface temperature of a solid boundary is predicted by FDS using thermal properties specified via the \ct{MATL} namelist group, which are in turn invoked by the \ct{SURF} entry via -the character string \ct{MATL_ID}. However, the input \ct{TMP_FRONT}, the surface temperature in units of \unit{\degreeCelsius}, can be used to specify a fixed temperature boundary condition: +the character string \linebreak[4]\ct{MATL_ID}. However, the input \ct{TMP_FRONT}, the surface temperature in units of \unit{\degreeCelsius}, can be used to specify a fixed temperature boundary condition: \begin{lstlisting} &SURF ID='HOT WALL', COLOR='RED', TMP_FRONT=200. / \end{lstlisting} @@ -2264,18 +2250,18 @@ \subsubsection{Default Convective Heat Transfer Model} \subsubsection{Output for Convective Heat Transfer Regime} \label{info:convection_regime} -It may be useful to visualize which convective heat transfer correlation is being exercised to compute the heat transfer coefficient. This can be accomplished by using the solid phase output quantity \ct{'CONVECTIVE HEAT TRANSFER REGIME'} on \ct{BNDF} or \ct{DEVC}. For wall surfaces (the output is not available for particles), the regime is mapped to an integer value, \ct{1 = NATURAL}, \ct{2 = FORCED}, \ct{3 = IMPACT}, \ct{4 = RESOLVED}, which is color coded for boundary visualization. +It may be useful to visualize which convective heat transfer correlation is being exercised to compute the heat transfer coefficient. This can be accomplished by using the solid phase output quantity \linebreak[4]\ct{'CONVECTIVE HEAT TRANSFER REGIME'} on \ct{BNDF} or \ct{DEVC}. For wall surfaces (the output is not available for particles), the regime is mapped to an integer value, \ct{1 = NATURAL}, \ct{2 = FORCED}, \ct{3 = IMPACT}, \ct{4 = RESOLVED}, which is color coded for boundary visualization. \subsubsection{Specified Convective Heat Transfer Coefficient} -To specify the convective heat transfer coefficient, set it to a constant using \ct{HEAT_TRANSFER_COEFFICIENT} on the \ct{SURF} line in units of \unit{W/(m^2.K)} with optional time dependent ramp using \ct{RAMP_HEAT_TRANSFER_COEFFICIENT}. If the back side of the solid obstruction faces the exterior of the computational domain and the solid conducts heat, the heat transfer coefficient of the back side may be specified using \ct{HEAT_TRANSFER_COEFFICIENT_BACK} with optional time dependent ramp ramp using \ct{RAMP_HEAT_TRANSFER_COEFFICIENT_BACK}. This back side condition is appropriate for a \ct{SURF} line with \ct{BACKING='VOID'} or if the solid obstruction backs to the exterior of the computational domain. +To specify the convective heat transfer coefficient, set it to a constant using \ct{HEAT_TRANSFER_COEFFICIENT} on the \ct{SURF} line in units of \unit{W/(m^2.K)} with optional time dependent ramp using \linebreak[4]\ct{RAMP_HEAT_TRANSFER_COEFFICIENT}. If the back side of the solid obstruction faces the exterior of the computational domain and the solid conducts heat, the heat transfer coefficient of the back side may be specified using \ct{HEAT_TRANSFER_COEFFICIENT_BACK} with optional time dependent ramp ramp using \ct{RAMP_HEAT_TRANSFER_COEFFICIENT_BACK}. This back side condition is appropriate for a \ct{SURF} line with \ct{BACKING='VOID'} or if the solid obstruction backs to the exterior of the computational domain. \subsubsection{Impinging Jet Heat Transfer Model} \label{info:impinging_jet} The forced convection heat transfer correlations generally apply to flow parallel to a surface. When the flow is an impinging jet (normal and toward the surface) then the tangential components of velocity are not well resolved at the impingement point; consequently, a fictitiously low value of heat transfer coefficient will be predicted if special consideration is not given to the surface. If the surface may be subject to an impinging jet or stagnation point flow (in fire, usually this pertains to ceilings above a fire source), consider using impinging jet heat transfer model, applied on \ct{SURF} using \ct{HEAT_TRANSFER_MODEL='IMPINGING JET'}. -The impinging jet model is an extension of the user-specified $h$ that allows you to specify a Gaussian radial profile parameterized by a center point, \ct{XYZ(1:3)}, a width in meters (m), \ct{HEAT_TRANSFER_COEFFICIENT_SIGMA}, and the peak value, $h_0$, using \ct{HEAT_TRANSFER_COEFFICIENT}, all on the \ct{SURF} line. You may determine these parameters using correlations in \cite{Incropera:1}, for example. Take note that the correlations usually give the average heat transfer coefficient over an area, $\bar{h}$. It can be shown that the ratio of the peak to average for a Gaussian profile over area $A=\pi \sigma^2$ is $h_0/\bar{h} \approx 1.3$. An example \ct{SURF} line is given below. +The impinging jet model is an extension of the user-specified $h$ that allows you to specify a Gaussian radial profile parameterized by a center point, \ct{XYZ(1:3)}, a width in meters (m), \linebreak[4]\ct{HEAT_TRANSFER_COEFFICIENT_SIGMA}, and the peak value, $h_0$, using \ct{HEAT_TRANSFER_COEFFICIENT}, all on the \ct{SURF} line. You may determine these parameters using correlations in \cite{Incropera:1}, for example. Take note that the correlations usually give the average heat transfer coefficient over an area, $\bar{h}$. It can be shown that the ratio of the peak to average for a Gaussian profile over area $A=\pi \sigma^2$ is $h_0/\bar{h} \approx 1.3$. An example \ct{SURF} line is given below. \begin{lstlisting} &SURF ID='WALL', HEAT_TRANSFER_MODEL='IMPINGING JET', XYZ=0,0,1, HEAT_TRANSFER_COEFFICIENT=50, HEAT_TRANSFER_COEFFICIENT_SIGMA=0.5 / \end{lstlisting} @@ -2303,14 +2289,14 @@ \subsubsection{Blowing Heat Transfer} \subsubsection{Specifying the Heat Flux at a Solid Surface} \label{info:net_and_convective_heat_flux} -Instead of altering the convective heat transfer coefficient, a fixed heat flux may be specified directly. Two methods are available to do this. The first is to specify a \ct{NET_HEAT_FLUX} in units of \unit{kW/m^2}. When this is specified FDS will compute the surface temperature required to ensure that the combined radiative and convective heat flux from the surface is equal to the \ct{NET_HEAT_FLUX}. The second method is to specify the \ct{CONVECTIVE_HEAT_FLUX}, in units of \unit{kW/m^2}. The radiative flux is then determined based on the \ct{EMISSIVITY} on the \ct{SURF} line and the wall temperature needed to get the desired \ct{CONVECTIVE_HEAT_FLUX}. Setting the \ct{EMISSIVITY} to zero will result in there being only a convective heat flux from a surface. If \ct{NET_HEAT_FLUX} or \ct{CONVECTIVE_HEAT_FLUX} is positive, the wall heats up the surrounding gases. If \ct{NET_HEAT_FLUX} or \ct{CONVECTIVE_HEAT_FLUX} is negative, the wall cools the surrounding gases. You cannot specify \ct{TMP_FRONT} with \ct{NET_HEAT_FLUX} since \ct{NET_HEAT_FLUX} combines radiative and convective flux, and FDS must compute the wall temperature to get the desired flux. Specifying \ct{TMP_FRONT} and \ct{CONVECTIVE_HEAT_FLUX} will result in FDS using the gas temperature adjacent to a wall cell to set the convection heat transfer coefficient to achieve the desired \ct{CONVECTIVE_HEAT_FLUX} for that wall cell. If a droplet lands surface with a specified heat flux, no heat transfer will be predicted between the droplet and the surface. This is because the high heat transfer rates associated with droplets can lead to nonsensical wall temperatures when trying to enforce the specific flux which are then likely to result in runtime errors or numerical instabilities. +Instead of altering the convective heat transfer coefficient, a fixed heat flux may be specified directly. Two methods are available to do this. The first is to specify a \ct{NET_HEAT_FLUX} in units of \unit{kW/m^2}. When this is specified FDS will compute the surface temperature required to ensure that the combined radiative and convective heat flux from the surface is equal to the \ct{NET_HEAT_FLUX}. The second method is to specify the \ct{CONVECTIVE_HEAT_FLUX}, in units of \unit{kW/m^2}. The radiative flux is then determined based on the \ct{EMISSIVITY} on the \ct{SURF} line and the wall temperature needed to get the desired \linebreak[4]\ct{CONVECTIVE_HEAT_FLUX}. Setting the \ct{EMISSIVITY} to zero will result in there being only a convective heat flux from a surface. If \ct{NET_HEAT_FLUX} or \ct{CONVECTIVE_HEAT_FLUX} is positive, the wall heats up the surrounding gases. If \ct{NET_HEAT_FLUX} or \ct{CONVECTIVE_HEAT_FLUX} is negative, the wall cools the surrounding gases. You cannot specify \ct{TMP_FRONT} with \ct{NET_HEAT_FLUX} since \ct{NET_HEAT_FLUX} combines radiative and convective flux, and FDS must compute the wall temperature to get the desired flux. Specifying \ct{TMP_FRONT} and \ct{CONVECTIVE_HEAT_FLUX} will result in FDS using the gas temperature adjacent to a wall cell to set the convection heat transfer coefficient to achieve the desired \ct{CONVECTIVE_HEAT_FLUX} for that wall cell. If a droplet lands surface with a specified heat flux, no heat transfer will be predicted between the droplet and the surface. This is because the high heat transfer rates associated with droplets can lead to nonsensical wall temperatures when trying to enforce the specific flux which are then likely to result in runtime errors or numerical instabilities. The \ct{SURF} parameters \ct{NET_HEAT_FLUX} and \ct{CONVECTIVE_HEAT_FLUX} will not work with a \ct{MATL_ID}. When 1D heat conduction into the solid is considered, you can specify an \ct{EXTERNAL_FLUX} as discussed in Sec.~\ref{info:simulating_the_cone_calorimeter}, which \emph{supplements} the net surface heat flux. But in certain situations (usually for verification tests), you may want to directly control the incident radiative heat flux to the surface. To do this, you can use \ct{EXTERNAL_FLUX} and add \ct{SKIP_INRAD=T} on the \ct{SURF} line. The incoming radiation to the surface is then \emph{replaced} by the specified \ct{EXTERNAL_FLUX}. \subsection{Adiabatic Surfaces} \label{info:adiabatic} -A common boundary condition for diagnostic simulations is to force all surfaces to be perfectly insulated, that is, there is no net heat transfer (radiative and convective) from the gas to the solid. For these cases, specify \ct{ADIABATIC=T} on the \ct{SURF} line. FDS will compute a wall temperature so that the sum of the convective and radiative heat flux is zero. Specifying a surface to be \ct{ADIABATIC} is equivalent to \ct{NET_HEAT_FLUX=0} and \ct{EMISSIVITY=1}. In such cases, it is also common to initialize the gas and surface temperatures for the purpose of measuring the heat absorbed or generated by objects within the domain, for example: +A common boundary condition for diagnostic simulations is to force all surfaces to be perfectly insulated, that is, there is no net heat transfer (radiative and convective) from the gas to the solid. For these cases, specify \ct{ADIABATIC=T} on the \ct{SURF} line. FDS will compute a wall temperature so that the sum of the convective and radiative heat flux is zero. Specifying a surface to be \ct{ADIABATIC} is equivalent to \linebreak[4]\ct{NET_HEAT_FLUX=0} and \ct{EMISSIVITY=1}. In such cases, it is also common to initialize the gas and surface temperatures for the purpose of measuring the heat absorbed or generated by objects within the domain, for example: \begin{lstlisting} &INIT XB=..., TEMPERATURE=2000. / &SURF ID='...', ADIABATIC=T, TMP_FRONT_INITIAL=2000. / @@ -2319,9 +2305,6 @@ \subsection{Adiabatic Surfaces} Also note that no solid surface is truly adiabatic; thus, the specification of an adiabatic boundary condition should be used for diagnostic purposes only. Actual fire simulations can develop numerical instabilities if \ct{ADIABATIC} surfaces are used because the wall temperature and radiation fields are not updated simultaneously. If a droplet lands on an \ct{ADIABATIC} surface, no heat transfer will be predicted between the droplet and the surface. This is because the high heat transfer rates associated with droplets can lead to nonsensical wall temperatures when trying to enforce the adiabatic condition which are then likely to result in runtime errors or numerical instabilities. - -\newpage - \section{One-Dimensional Heat Conduction in Solids} \label{info:MATL} @@ -2375,7 +2358,7 @@ \subsection{Thermal Properties} \label{info:thermal_properties} -For any solid material, specify its thermal \ct{CONDUCTIVITY} (\unit{W/(m.K)}), \ct{DENSITY} (\unit{kg/m^3}), \ct{SPECIFIC_HEAT} (\unit{kJ/(kg.K)}), and \ct{EMISSIVITY}\footnote{The values of \ct{EMISSIVITY} that are specified on the various \ct{MATL} lines that define that material components of the solid are used to compute an effective emissivity for the front and back surfaces. However, if you specify an \ct{EMISSIVITY} or \ct{EMISSIVITY_BACK} on the \ct{SURF} line, these values will then take precedence.} (0.9 by default). Both \ct{CONDUCTIVITY} and \ct{SPECIFIC_HEAT} can be functions of temperature using \ct{CONDUCTIVITY_RAMP} and \ct{SPECIFIC_HEAT_RAMP} respectively. \ct{DENSITY} and \ct{EMISSIVITY} cannot. Temperature-dependence is specified using the \ct{RAMP} convention. As an example, consider Marinite, a wall material suitable for high temperature applications: +For any solid material, specify its thermal \ct{CONDUCTIVITY} (\unit{W/(m.K)}), \ct{DENSITY} (\unit{kg/m^3}), \linebreak[4]\ct{SPECIFIC_HEAT} (\unit{kJ/(kg.K)}), and \ct{EMISSIVITY}\footnote{The values of \ct{EMISSIVITY} that are specified on the various \ct{MATL} lines that define that material components of the solid are used to compute an effective emissivity for the front and back surfaces. However, if you specify an \ct{EMISSIVITY} or \ct{EMISSIVITY_BACK} on the \ct{SURF} line, these values will then take precedence.} (0.9 by default). Both \ct{CONDUCTIVITY} and \ct{SPECIFIC_HEAT} can be functions of temperature using \ct{CONDUCTIVITY_RAMP} and \ct{SPECIFIC_HEAT_RAMP} respectively. \ct{DENSITY} and \ct{EMISSIVITY} cannot. Temperature-dependence is specified using the \ct{RAMP} convention. As an example, consider Marinite, a wall material suitable for high temperature applications: \begin{lstlisting} &MATL ID = 'MARINITE' EMISSIVITY = 0.8 @@ -2402,13 +2385,13 @@ \subsection{Back Side Boundary Conditions} There are several options for defining the back surface boundary condition of a thermally-thick obstruction. The default, \ct{BACKING='EXPOSED'} on the \ct{SURF} line, assumes that the back side is exposed to the thermal environment behind the solid. FDS calculates the heat transfer through the solid into the space behind the wall and vice versa. This heat conduction calculation in the solid is based on the \ct{THICKNESS} of the material layers specified on the \ct{SURF} line, not the dimension of the \ct{OBST} or other solid to which the \ct{SURF} is applied. For example, when modeling a steel plate that is 5~mm thick, if the \ct{OBST} is approximated as a zero-cell thick sheet because 5~mm is less than half the grid dimension of 5~cm, then FDS will still compute the heat transfer through a 5~mm thick plate of steel. If a \ct{SURF} with \ct{BACKING='EXPOSED'} is applied to the surface of a solid whose dimension in the normal direction is at least one gas phase grid cell length greater than \ct{THICKNESS}, FDS will then ignore \ct{BACKING='EXPOSED'} and apply \ct{BACKING='VOID'} instead. This latter boundary condition is described below. -If a \ct{VENT} is applied to a thermally-thick obstruction with 3-D heat conduction, the \ct{SURF_ID} associated with this \ct{VENT} must describe a thermally-thick, 3-D solid as well; that is, the \ct{SURF} line must have a \ct{MATL_ID} and \ct{HT3D=T}. +If a \ct{VENT} is applied to a thermally-thick obstruction with 3-D heat conduction, the \ct{SURF_ID} associated with this \ct{VENT} must describe a thermally-thick, 3-D solid as well; that is, the \ct{SURF} line must have a \linebreak[4]\ct{MATL_ID} and \ct{HT3D=T}. An alternative back side boundary condition, \ct{BACKING='INSULATED'}, assumes that the solid backs up to a perfectly insulated material, in which case there is no heat transfer to or from the back side. Use of this condition means specifying properties of the inner insulating material is not necessary because it is assumed to be perfectly insulated. The initial back side temperature can be set with \ct{TMP_BACK}. -If the wall is assumed to always back up to the ambient, then the attribute \ct{BACKING='VOID'} should be set. You can also set the back side exposing gas temperature to be something other than ambient using \ct{TMP_GAS_BACK}. A \ct{RAMP} for \ct{TMP_GAS_BACK} can be specified with \ct{RAMP_TMP_GAS_BACK}. The backside heat transfer coefficient is computed using a natural convection correlation (see the FDS Tech Guide \cite{FDS_Math_Guide}). Similarly, you can set the front side gas temperature using \ct{TMP_GAS_FRONT} and ramp \ct{RAMP_TMP_GAS_FRONT}. This is useful mainly for diagnostic cases where you want to control the exposing temperature. +If the wall is assumed to always back up to the ambient, then the attribute \ct{BACKING='VOID'} should be set. You can also set the back side exposing gas temperature to be something other than ambient using \ct{TMP_GAS_BACK}. A \ct{RAMP} for \ct{TMP_GAS_BACK} can be specified with \ct{RAMP_TMP_GAS_BACK}. The backside heat transfer coefficient is computed using a natural convection correlation (see the FDS Tech Guide \cite{FDS_Math_Guide}). Similarly, you can set the front side gas temperature using \ct{TMP_GAS_FRONT} and ramp \linebreak[4]\ct{RAMP_TMP_GAS_FRONT}. This is useful mainly for diagnostic cases where you want to control the exposing temperature. The back side emissivity of the surface can be controlled by specifying \ct{EMISSIVITY_BACK} on the \ct{SURF} line. If not specified, the back side emissivity will be calculated during the simulations as a mass-weighted sum of the \ct{MATL} emissivities. @@ -2422,26 +2405,26 @@ \subsection{Walls with Different Materials Front and Back} If an \ct{OBST} does not border the edge of the computational domain, FDS calculates the heat transfer through the specified solid \ct{THICKNESS} using the gas phase temperature and heat flux on the front and back sides for boundary conditions. A redundant calculation is performed on the opposite side of the obstruction. The first layer listed is applied to the exposed front face and the last layer to the opposite face. Take, for example, a \ct{SURF} line that is applied to a solid \ct{OBST}. On the $-x$ side of the \ct{OBST}, layer~1 is \ct{MATERIAL A}, layer~2 is \ct{MATERIAL B}, and layer~3 is \ct{MATERIAL A}. On the $+x$ side the \ct{SURF} is applied in the same manner. \begin{lstlisting} - &SURF ID = 'SYMMETRIC' + &SURF ID = 'SYMMETRIC' BACKING = 'EXPOSED' MATL_ID(1:3,1) = 'MATERIAL A','MATERIAL B','MATERIAL A' THICKNESS(1:3) = 0.1,0.2,0.1 / \end{lstlisting} Now consider the \ct{SURF} definition below. On the $-x$ side of the \ct{OBST}, layer~1 is \ct{MATERIAL A}, layer~2 is \ct{MATERIAL B}, and layer~3 is \ct{MATERIAL C}. On the $+x$ side, the \ct{SURF} is applied in the same manner, layer~1 is \ct{MATERIAL A}, layer~2 is \ct{MATERIAL B}, and layer~3 is \ct{MATERIAL C}. This means that both sides of the \ct{OBST} will compute heat transfer assuming \ct{MATERIAL A} is the first layer but this is not possible. \begin{lstlisting} - &SURF ID = 'NON-SYMMETRIC' + &SURF ID = 'NON-SYMMETRIC' BACKING = 'EXPOSED' MATL_ID(1:3,1) = 'MATERIAL A','MATERIAL B','MATERIAL C' THICKNESS(1:3) = 0.1,0.2,0.1 / \end{lstlisting} Care is needed when specifying multiple layers. If the layering is symmetric, the same \ct{SURF} line can be applied to both sides. However, if the layering is not symmetric, two separate \ct{SURF} lines must be created and applied one to each side. For example, a hollow box column that is made of steel and covered on the outside by a layer of insulation material and a layer of plastic on top of the insulation material, would have to be described with two \ct{SURF} lines like the following: \begin{lstlisting} - &SURF ID = 'COLUMN EXTERIOR' + &SURF ID = 'COLUMN EXTERIOR' BACKING = 'EXPOSED' MATL_ID(1:3,1) = 'PLASTIC','INSULATION','STEEL' THICKNESS(1:3) = 0.002,0.036,0.0063 / - &SURF ID = 'COLUMN INTERIOR' + &SURF ID = 'COLUMN INTERIOR' BACKING = 'EXPOSED' MATL_ID(1:3,1) = 'STEEL','INSULATION','PLASTIC' THICKNESS(1:3) = 0.0063,0.036,0.002 / @@ -2460,7 +2443,7 @@ \subsection{Specified Internal Heat Source} The internal source term for each layer of the surface is specified using \ct{INTERNAL_HEAT_SOURCE} on the \ct{SURF} line. Its units are \unit{kW/m^3} and the default value is zero. An optional time ramp can be specified for each layer's heat source using \ct{RAMP_IHS}. In the example below, the cylindrical surface describing a cable consists of an outer plastic layer and inner core of metal. The metal core is heated with a power of 300~\unit{kW/m^3}. \begin{lstlisting} - &SURF ID = 'Cable' + &SURF ID = 'Cable' THICKNESS = 0.002,0.008 MATL_ID(1,1) = 'PLASTIC' MATL_ID(2,1) = 'METAL' @@ -2495,9 +2478,9 @@ \subsection{Solid Phase Numerical Gridding Issues} \item[Make the node spacing more uniform] inside the material by setting \ct{STRETCH_FACTOR(NL)=1.} on the \ct{SURF} line, where \ct{NL} designates a particular layer. This will generate a perfectly uniform mesh. Values between 1 and 2 give different levels of stretching. The default value of 2 indicates that the second cell is twice as thick as the first, the third is twice the second, and so on until the mid-depth of the layer is reached, at which point the cells shrink following the same pattern. \item[Make the mesh cells smaller] by setting \ct{CELL_SIZE_FACTOR(NL)} less than 1, where \ct{NL} designates a particular layer. For example, a value of 0.5 makes the mesh cells in the layer half the size. \item[Specify the desired cell size] by specifying \ct{CELL_SIZE(NL)} directly, where \ct{NL} designates a particular layer. This parameter over-rides \ct{STRETCH_FACTOR} and \ct{CELL_SIZE_FACTOR}. - \item[Improve the time resolution] by setting \ct{WALL_INCREMENT=1} on the \ct{TIME} line. This forces the solid phase solution to be updated every time step instead of the default every 2 time steps. If this is still not sufficient, you can direct that FDS use smaller time steps to update the solid phase heat conduction calculation than that used by the gas phase solver. This can be done specifically for a selected surface (\ct{SURF}) type using the parameter \ct{TIME_STEP_FACTOR}. Its default value is 10, meaning that the solid phase time step for that particular \ct{SURF} type can be sub-divided by {\em at most} a factor of 10. The decision to sub-divide the time step is based on the criterion that the internal temperature of the solid should not change by more than \ct{DELTA_TMP_MAX} \unit{\degreeCelsius} during that sub-step. The default value of \ct{DELTA_TMP_MAX} is 10 \unit{\degreeCelsius}, and this is also a \ct{SURF} parameter. You can choose \ct{QUANTITY='SUBSTEPS'} on either a \ct{DEVC} or \ct{BNDF} output line to see how many sub-steps are being used by a particular surface cell or the entire domain, respectively. You can also ask FDS to use a solid phase time step that obeys the Fourier number constraint, $\mathrm{Fo}=\delta t \alpha/\delta x^2=1$; this is done by setting \ct{CHECK_FO=T} on \ct{MISC}. + \item[Improve the time resolution] by setting \ct{WALL_INCREMENT=1} on the \ct{TIME} line. This forces the solid phase solution to be updated every time step instead of the default every 2 time steps. If this is still not sufficient, you can direct that FDS use smaller time steps to update the solid phase heat conduction calculation than that used by the gas phase solver. This can be done specifically for a selected surface (\ct{SURF}) type using the parameter \ct{TIME_STEP_FACTOR}. Its default value is 10, meaning that the solid phase time step for that particular \ct{SURF} type can be sub-divided by {\em at most} a factor of 10. The decision to sub-divide the time step is based on the criterion that the internal temperature of the solid should not change by more than \ct{DELTA_TMP_MAX} \unit{\degreeCelsius} during that sub-step. The default value of \ct{DELTA_TMP_MAX} is 25 \unit{\degreeCelsius}, and this is also a \ct{SURF} parameter. You can choose \ct{QUANTITY='SUBSTEPS'} on either a \ct{DEVC} or \ct{BNDF} output line to see how many sub-steps are being used by a particular surface cell or the entire domain, respectively. You can also ask FDS to use a solid phase time step that obeys the Fourier number constraint, $\mathrm{Fo}=\delta t \alpha/\delta x^2=1$; this is done by setting \ct{CHECK_FO=T} on \ct{MISC}. \item[Limit the number of cells in any layer] by setting \ct{N_LAYER_CELLS_MAX(NL)} (default 1000), where \ct{NL} designates a particular layer. Reducing this value does not necessarily improve accuracy, but it does save computing time. However, rarely does the solid phase require this many cells. The output file \ct{CHID.out} contains the coordinates of the solid phase nodes. - \item[Change when a wall cell is renoded] by setting \ct{REMESH_RATIO} on the \ct{SURF} line and/or \ct{REAC_RATE_DELTA} on the \ct{MATL} line. If nodes changes size during pyrolysis, FDS will try and renode layers with changing cell size to optimize the number of nodes. This renoding process is costly if it is done frequently. The parameter \ct{REMESH_RATIO} sets the fractional change in the size of a wall cell before FDS will check for renoding. For example, with the default value of 0.25, FDS will not attempt the first renode of a wall cell that is initially all 0.1~m nodes unless one node has either increased to 0.125~m or decreased to 0.075~m. A second potential challenge with renoding occurs when there are large cell-to-cell temperature differences inside a pyrolyzing layer. Renoding will combine cells causing changes in temperature. If there is a large enough temperature difference, this can cause large swings in the pyrolysis rate. The parameter \ct{REAC_RATE_DELTA}, default value of 0.15, sets the fractional change in the pyrolysis rate for a material that is considered acceptable. If renoding of a layer could cause a temperature change large enough to achieve that change in pyrolysis rate, then FDS will not renode that layer. + \item[Change when a wall cell is renoded] by setting \ct{REMESH_RATIO} on the \ct{SURF} line and/or \linebreak[4]\ct{REAC_RATE_DELTA} on the \ct{MATL} line. If nodes changes size during pyrolysis, FDS will try and renode layers with changing cell size to optimize the number of nodes. This renoding process is costly if it is done frequently. The parameter \ct{REMESH_RATIO} sets the fractional change in the size of a wall cell before FDS will check for renoding. For example, with the default value of 0.25, FDS will not attempt the first renode of a wall cell that is initially all 0.1~m nodes unless one node has either increased to 0.125~m or decreased to 0.075~m. A second potential challenge with renoding occurs when there are large cell-to-cell temperature differences inside a pyrolyzing layer. Renoding will combine cells causing changes in temperature. If there is a large enough temperature difference, this can cause large swings in the pyrolysis rate. The parameter \ct{REAC_RATE_DELTA}, default value of 0.15, sets the fractional change in the pyrolysis rate for a material that is considered acceptable. If renoding of a layer could cause a temperature change large enough to achieve that change in pyrolysis rate, then FDS will not renode that layer. \item[Make a very thin solid layer disappear] by specifying a lower bound on it thickness or mass. If all the material components react and leave no solid residue, the thickness of the solid will shrink to zero. Each of the shrinking layers will vanish from the computation when its thickness gets smaller than a prescribed limiting value. This value can be set on the \ct{SURF} line using \ct{MINIMUM_LAYER_THICKNESS(N)}, where \ct{N} is the index of the layer. If you do not specify a layer index, the value shall be applied to all layers. The default value is \qty{1e-6}{\meter} or 0.1 times the specified \ct{THICKNESS}, whichever is less. Alternatively, you can specify \ct{MINIMUM_LAYER_MASS_FRACTION(N)}, the fraction of the layer mass below which the layer is removed. \end{description} When all the material of a shrinking surface is consumed but \ct{BURN_AWAY} is not prescribed, the surface temperature is set to \ct{TMP_GAS_BACK}, the convective heat flux to zero, and the burning rate to zero. @@ -2514,11 +2497,6 @@ \subsection{Specified Front and Back Surface Temperature} \end{lstlisting} This line fixes the front temperature of a 1~cm thick plate to 500~\unit{\degreeCelsius} and its back side to 20~\unit{\degreeCelsius}. You do not need to specify the temperature of both surfaces. If the back side of the obstruction is exposed, you will need to assign another \ct{SURF} to the back with the opposite boundary conditions. The front and back temperatures can be respectively varied with time using the ramps \ct{RAMP_T} and \ct{RAMP_TMP_BACK}. - - -\newpage - - \section{3-D Heat Conduction} \label{info:ht3d} \label{ht3d_demo} @@ -2537,7 +2515,7 @@ \subsection{Basics} &OBST XB=..., SURF_ID='STEEL SLAB', MATL_ID='STEEL', CELL_SIZE=0.003 / &MATL ID='STEEL', DENSITY=7500, SPECIFIC_HEAT=0.5, CONDUCTIVITY=50 / \end{lstlisting} -Parameters that are used to control the solid phase gridding are preferably given on the \ct{OBST} line instead of the \ct{SURF} line. In this example, the \ct{MATL_ID} is specified on the \ct{OBST} line. You can specify a uniformly-spaced grid using the parameter \ct{CELL_SIZE} (m) or you can stretch the grid using the parameters \ct{STRETCH_FACTOR} and \ct{CELL_SIZE_FACTOR}. You can also limit the number of grid cells using \ct{N_LAYER_CELLS_MAX}. These parameters are explained in Sec.~\ref{info:solid_phase_stability}, but when specified on an \ct{OBST} line, these parameters are scalars and refer to the single layer formed by that particular obstruction. If these parameters are not specified on the \ct{OBST} line, they will be taken from the first layer specified on the \ct{SURF} line, and if not specified there, they will take on the default values listed in Sec.~\ref{info:solid_phase_stability}. +Parameters that are used to control the solid phase gridding are preferably given on the \ct{OBST} line instead of the \ct{SURF} line. In this example, the \ct{MATL_ID} is specified on the \ct{OBST} line. You can specify a uniformly-spaced grid using the parameter \ct{CELL_SIZE} (m) or you can stretch the grid using the parameters \linebreak[4]\ct{STRETCH_FACTOR} and \ct{CELL_SIZE_FACTOR}. You can also limit the number of grid cells using \linebreak[4]\ct{N_LAYER_CELLS_MAX}. These parameters are explained in Sec.~\ref{info:solid_phase_stability}, but when specified on an \ct{OBST} line, these parameters are scalars and refer to the single layer formed by that particular obstruction. If these parameters are not specified on the \ct{OBST} line, they will be taken from the first layer specified on the \ct{SURF} line, and if not specified there, they will take on the default values listed in Sec.~\ref{info:solid_phase_stability}. An appropriate \ct{CELL_SIZE}, $\delta$, for 3-D heat conduction is based on the material thermal diffusivity, $\alpha=k/(\rho \, c)$: \be @@ -2578,23 +2556,27 @@ \subsubsection{Example: Steel Assembly} \end{figure} The integral on the left hand side of Eq.~(\ref{ebalance}) is evaluated in FDS using the device line: \begin{lstlisting} - &DEVC ID='...', XB=..., QUANTITY='NET HEAT FLUX', SURF_ID='STEEL SLAB' - SPATIAL_STATISTIC='SURFACE INTEGRAL', TEMPORAL_STATISTIC='TIME INTEGRAL' / + &DEVC ID='...', XB=..., QUANTITY='NET HEAT FLUX', + SURF_ID='STEEL SLAB', SPATIAL_STATISTIC='SURFACE INTEGRAL', + TEMPORAL_STATISTIC='TIME INTEGRAL' / \end{lstlisting} The volume enclosed by \ct{XB} encompasses the entire assembly. The integral on the right is evaluated by: \begin{lstlisting} &DEVC ID='...', XB=..., QUANTITY='WALL ENTHALPY', IOR=3, SURF_ID='STEEL SLAB' SPATIAL_STATISTIC='SURFACE INTEGRAL', RELATIVE=T, CONVERSION_FACTOR=10000 / \end{lstlisting} -The quantity \ct{'WALL ENTHALPY'} is the total energy within the volume carved out by a wall cell from front to back. This is why the \ct{IOR} is included because the integration need only be carried out for upward facing wall cells. Also, because the unit associated with this quantity is kJ rather than \unit{kJ/m^2}, the \ct{CONVERSION_FACTOR} is needed to cancel out the area of each wall cell (0.01~m by 0.01~m) after the summation. The parameter \ct{RELATIVE=T} means that only the change in enthalpy is desired. +The quantity \ct{'WALL ENTHALPY'} is the total energy within the volume carved out by a wall cell from front to back. This is why the \ct{IOR} is included because the integration need only be carried out for upward facing wall cells. Also, because the unit associated with this quantity is kJ rather than \unit{kJ/m^2}, the \linebreak[4]\ct{CONVERSION_FACTOR} is needed to cancel out the area of each wall cell (0.01~m by 0.01~m) after the summation. The parameter \ct{RELATIVE=T} means that only the change in enthalpy is desired. \subsubsection{Example: Unprotected Structural Steel} Structural steel members like I-beams are difficult to model for two reasons. First, the underlying grid must be reasonably well-resolved to capture the cross-sectional shape, and second, the lateral heat transfer can be important. At best, I-beams are typically modeled as a collection of thin (i.e. zero cell thick) obstructions representing the web and flanges. \begin{lstlisting} - &OBST XB=0.12,1.88,0.51,0.53,0.21,0.79, SURF_ID='STEEL SLAB', MATL_ID='STEEL'/ - &OBST XB=0.12,1.88,0.41,0.63,0.76,0.79, SURF_ID='STEEL SLAB', MATL_ID='STEEL'/ - &OBST XB=0.12,1.88,0.41,0.63,0.21,0.24, SURF_ID='STEEL SLAB', MATL_ID='STEEL'/ + &OBST XB=0.12,1.88,0.51,0.53,0.21,0.79, SURF_ID='STEEL SLAB', + MATL_ID='STEEL'/ + &OBST XB=0.12,1.88,0.41,0.63,0.76,0.79, SURF_ID='STEEL SLAB', + MATL_ID='STEEL'/ + &OBST XB=0.12,1.88,0.41,0.63,0.21,0.24, SURF_ID='STEEL SLAB', + MATL_ID='STEEL'/ &SURF ID='STEEL SLAB', HT3D=T, COLOR='BLACK', CELL_SIZE=0.1 / \end{lstlisting} @@ -2624,7 +2606,8 @@ \subsection{Surface Linings} On the other hand, if the solid is made up of obstructions that are not thin plates, lining materials displace volume of the underling solid. For example, the following lines of input define a single obstruction made of steel that is lined with two layers of insulation made up of three different components: \begin{lstlisting} - &OBST XB=-0.20, 0.20,-0.20, 0.20,-0.05, 0.05, SURF_ID='SLAB', MATL_ID='STEEL' / + &OBST XB=-0.20, 0.20,-0.20, 0.20,-0.05, 0.05, SURF_ID='SLAB', + MATL_ID='STEEL' / &SURF ID='SLAB', HT3D=T, COLOR='BEIGE', THICKNESS=0.003,0.002, MATL_ID(1,1:2)='STUFF A','STUFF B', MATL_MASS_FRACTION(1,1:2)=0.3,0.7, MATL_ID(2,1:2)='STUFF B','STUFF C', MATL_MASS_FRACTION(2,1:2)=0.2,0.8 / @@ -2655,11 +2638,16 @@ \subsection{Working with Thin Plates} &MATL ID='steel', SPECIFIC_HEAT=0.515, CONDUCTIVITY=16.2, DENSITY=7900 / &SURF ID='paint', COLOR='BLACK', EMISSIVITY=0.95, HT3D=T / &SURF ID='no paint', COLOR='SILVER', EMISSIVITY=0.33, HT3D=T / - &OBST XB=0.00,1.20,0.00,0.0031,0.00,1.20, MATL_ID='steel', SURF_ID='no paint' / - &VENT XB=0.00,0.05,0.0000,0.0000,0.00,0.05, SURF_ID='paint', MULT_ID='M', IOR=-2 / - &VENT XB=0.00,0.05,0.0031,0.0031,0.00,0.05, SURF_ID='paint', MULT_ID='M', IOR= 2 / - &VENT XB=0.05,0.10,0.0000,0.0000,0.05,0.10, SURF_ID='paint', MULT_ID='M', IOR=-2 / - &VENT XB=0.05,0.10,0.0031,0.0031,0.05,0.10, SURF_ID='paint', MULT_ID='M', IOR= 2 / + &OBST XB=0.00,1.20,0.00,0.0031,0.00,1.20, MATL_ID='steel', + SURF_ID='no paint' / + &VENT XB=0.00,0.05,0.0000,0.0000,0.00,0.05, SURF_ID='paint', + MULT_ID='M', IOR=-2 / + &VENT XB=0.00,0.05,0.0031,0.0031,0.00,0.05, SURF_ID='paint', + MULT_ID='M', IOR= 2 / + &VENT XB=0.05,0.10,0.0000,0.0000,0.05,0.10, SURF_ID='paint', + MULT_ID='M', IOR=-2 / + &VENT XB=0.05,0.10,0.0031,0.0031,0.05,0.10, SURF_ID='paint', + MULT_ID='M', IOR= 2 / &MULT ID='M', DX=0.10, DZ=0.10, I_UPPER=11, K_UPPER=11 / \end{lstlisting} There is a single thin \ct{OBST}struction that is 3.1~mm thick and 1.2~m long and 1.2~m wide. The gas phase grid size is 25~mm, much larger than the plate thickness. From the standpoint of the gas phase fluid solver, this plate is just a barrier and has no thickness. However, its thickness of 3.1~mm is taken into account by the 3-D heat conduction solver. The plate is assigned a \ct{MATL_ID} of \ct{'steel'} and it is also given a default set of surface properties using the \ct{SURF_ID='no paint'}. This \ct{SURF_ID} invokes the 3-D solver and it assigns a color and an \ct{EMISSIVITY} of 0.33. If no \ct{EMISSIVITY} had been assigned, it would have taken on that of \ct{'steel'} which in this case would have taken the default value of 0.9. The \ct{VENT} lines apply a checkerboard pattern of ``black'' or high emissivity squares onto the plate. Figure~\ref{fig:checkerboard} displays an image of the simulation along with a plot showing a comparison of internal enthalpy and net heat flux. @@ -2778,12 +2766,12 @@ \subsection{Thermally-Thick Solids that Burn at a Specified Rate} Real objects, like furnishings, office equipment, and so on, are often difficult to describe via the \ct{SURF} and \ct{MATL} parameters. Sometimes the only information about a given object is its bulk thermal properties, its ``ignition'' temperature, and its subsequent burning rate as a function of time from ignition. For this situation, add lines similar to the following: \begin{lstlisting} - &MATL ID = 'stuff' + &MATL ID = 'stuff' CONDUCTIVITY = 0.1 SPECIFIC_HEAT = 1.0 DENSITY = 900.0 / - &SURF ID = 'my surface' + &SURF ID = 'my surface' COLOR = 'GREEN' MATL_ID = 'stuff' HRRPUA = 1000. @@ -2826,7 +2814,7 @@ \subsection{Scaling Pyrolysis (SPyro) Model: Scaled Burning Rate from Cone Data} \item \ct{REFERENCE_THICKNESS} Specifies the thickness of the sample in the experiment. If not specified, FDS will assume the experiment was at the same \ct{THICKNESS(1)} defined on the \ct{SURF} line. Note that this is just the combustible portion of the sample and not any insulation or other inert backing materials. (Default \ct{THICKNESS(1)}) \end{itemize} -Data from up to ten experiments can be specified by specifying arrays for \ct{REFERENCE_HEAT_FLUX}, \ct{RAMP_Q}, and \ct{REFERENCE_THICKNESS}. If data from multiple experiments are provided, FDS will interpolate between experimental data when incident heat fluxes are within the range of tested data. Values for \ct{REFERENCE_HEAT_FLUX} and \ct{REFERENCE_THICKNESS} must be grouped by increasing thickness with increasing flux in each group of thicknesses. Typically, when samples are acquired for cone testing there are slight differences in thickness due to manufacturing or sample preparation. If, within a group of tests, the \ct{REFERENCE_HEAT_FLUX} values are intended to be applied to the same thickness, then \ct{REFERENCE_THICKNESS} should be specified as the same, nominal value. +Data from up to ten experiments can be specified by specifying arrays for \ct{REFERENCE_HEAT_FLUX}, \ct{RAMP_Q}, and \ct{REFERENCE_THICKNESS}. If data from multiple experiments are provided, FDS will interpolate between experimental data when incident heat fluxes are within the range of tested data. Values for \ct{REFERENCE_HEAT_FLUX} and \ct{REFERENCE_THICKNESS} must be grouped by increasing thickness with increasing flux in each group of thicknesses. Typically, when samples are acquired for cone testing there are slight differences in thickness due to manufacturing or sample preparation. If, within a group of tests, the \ct{REFERENCE_HEAT_FLUX} values are intended to be applied to the same thickness, then \linebreak[4]\ct{REFERENCE_THICKNESS} should be specified as the same, nominal value. %Multiple-layer samples may require special consideration. If the sample thickness tested is the same as the sample thickness modeled, then there is no need to set \ct{REFERENCE_THICKNESS} and the model will correctly scale. If the sample tested is different than the sample model, then set \ct{REFERENCE_THICKNESS} to relatively scale \ct{THICKNESS(1)}. For example, the test data is from a two-layer sample where the combustible mass density of each layer (density times thickness times one minus the char fraction) is 5~\unit{kg/m^2} and the FDS simulation is 5~\unit{kg/m^2} and 10~\unit{kg/m^2}. The FDS model has 50~\% more combustible mass. If \ct{THICKNESS(1)} for the simulation is 1 cm, then setting \ct{REFERENCE_THICKNESS} to 0.67~cm would represent that the FDS model has 50~\% more combustible mass than the test. @@ -2835,7 +2823,7 @@ \subsection{Scaling Pyrolysis (SPyro) Model: Scaled Burning Rate from Cone Data} \begin{itemize} \item \ct{MAXIMUM_SCALING_HEAT_FLUX} The upper limit on the predicted heat flux used to scale the test data (Default 1500 \unit{kW/m^2}). \item \ct{MINIMUM_SCALING_HEAT_FLUX} By default the model does not set a lower limit on the predicted heat flux used to scale the test data. Setting a lower bound to the flux used for scaling may help the model predictions in some cases such as weakly burning sources on coarse grids which may have poorly resolved heat feedback (Default 0 \unit{kW/m^2}). - \item \ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} The instantaneous heat feedback in FDS can vary greatly from time step to time step. In an actual fire the burning rate is tied to the sample temperature, and thermal inertia means the burning rate changes more slowly than then instantaneous flux. This natural smoothing can be approximated by setting a smoothing window using \ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} in s (Default 1~s). + \item \ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} The instantaneous heat feedback in FDS can vary greatly from time step to time step. In an actual fire the burning rate is tied to the sample temperature, and thermal inertia means the burning rate changes more slowly than then instantaneous flux. This natural smoothing can be approximated by setting a smoothing window using \linebreak[4]\ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} in s (Default 1~s). \end{itemize} The example, \ct{spyro_cone_demo.fds}, demonstrating the scaling behavior is shown in Fig.~\ref{fig:spyro_cone_demo}. In this example there is a material with cone test data at 25, 50, and 75~\unit{kW/m^2}. Using just the 50~\unit{kW/m^2}, the sample is exposed to fluxes of 25, 50, and 75~\unit{kW/m^2}. It can be seen that at 25~\unit{kW/m^2} the test data is stretched out in time by a factor of 2 with a reduction in burning rate of a factor of 2. Similarly at 75~\unit{kW/m^2}, the curve is collapsed by 50~\% with the burning rate increased by 50~\%. The 50~\unit{kW/m^2} simply returns the test data curve. A fourth surface is modeled that uses the 25 and 75~\unit{kW/m^2} with the sample exposed to a flux of 50~\unit{kW/m^2}. The resulting burning rate is an average of the 25 and 75~ \unit{kW/m^2} test data. Both extrapolation and interpolation do not perfectly reproduce the test data; however, they do capture the general behavior in terms of burning duration, peak burning rate, and time of peak. @@ -2848,8 +2836,6 @@ \subsection{Scaling Pyrolysis (SPyro) Model: Scaled Burning Rate from Cone Data} \end{figure} -\newpage - \section{Complex Pyrolysis Models} \label{info:solid_pyrolysis} @@ -2864,15 +2850,15 @@ \subsection{Reaction Mechanism} A solid surface in FDS may consist of multiple layers with multiple material components per layer. The material components are described via \ct{MATL} lines and are specified on the \ct{SURF} line that describes the structure of the solid. Each \ct{MATL} can undergo several reactions that may occur at different temperatures. It may not undergo any -- it may just heat up. However, if it is to change form via one or more reactions, designate the number of reactions with the integer \ct{N_REACTIONS}. \ct{N_REACTIONS} {\em must} be set or else FDS will ignore all parameters associated with reactions. Note that experimental evidence of multiple reactions does not imply that a single material is undergoing multiple reactions, but rather that multiple material components are undergoing individual reactions at distinct temperatures. Currently, the maximum number of reactions for each material is 10 and the chain of consecutive reactions may contain up to 20 steps. -For a given material, the $j$th reaction can produce other solid materials whose names are designated with \linebreak[4] \ct{MATL_ID(i,j)}, gas species whose names are designated with \ct{SPEC_ID(i,j)}, and particles whose particle classes are are designated with \ct{PART_ID(i,j)}. For these inputs, the index, $i$, runs from 1 to the number of materials, gaseous species, or particle classes being produced. This index does {\em not} correspond to the order in which the \ct{MATL} or \ct{SPEC} lines are listed in the input file. For a given reaction, the relative amounts of solid, gaseous, or particle products are input to FDS via the {\em yields}: \ct{NU_MATL(i,j)}, \ct{NU_SPEC(i,j)}, and \ct{NU_PART(i,j)}, respectively. The yields are all zero by default. If \ct{NU_MATL(i,j)} is non-zero, then you {\em must} indicate what the solid residue is via \ct{MATL_ID(i,j)}, the \ct{ID} of another \ct{MATL} that is also listed in the input file. If \ct{NU_SPEC(i,j)} is non-zero, then you {\em must} indicate what the gas species is via \ct{SPEC_ID(i,j)}, the \ct{ID} of another \ct{SPEC} that is also listed in the input file. If \ct{NU_PART(i,j)} is non-zero, then you {\em must} indicate what the particle class is via \ct{PART_ID(i,j)}, the \ct{ID} of another \ct{PART} that is also listed in the input file. If particles are specified, the insertion rate and number of particles is controlled via the particle inputs on the \ct{SURF} containing the material. Ideally, the sum of the yields should add to 1, meaning that the mass of the reactant is conserved. However, there are instances when it is convenient to have the yields that sum to less than one. For example, the spalling or ablation of concrete can be described as a ``reaction'' that consumes energy but does not produce any ``product'' because the concrete is assumed to have either fallen off the surface in chunks or pulverized powder. The concrete's mass is not conserved {\em in the model} because it has essentially disappeared from that particular surface. Producing more mass (yields more than 1) will result in an error message. Note that \ct{NU_SPEC(i,j)} can be less than zero as would occur during char oxidation where solid char reacts with oxygen. +For a given material, the $j$th reaction can produce other solid materials whose names are designated with \linebreak[4] \ct{MATL_ID(i,j)}, gas species whose names are designated with \ct{SPEC_ID(i,j)}, and particles whose particle classes are are designated with \ct{PART_ID(i,j)}. For these inputs, the index, $i$, runs from 1 to the number of materials, gaseous species, or particle classes being produced. This index does {\em not} correspond to the order in which the \ct{MATL} or \ct{SPEC} lines are listed in the input file. For a given reaction, the relative amounts of solid, gaseous, or particle products are input to FDS via the {\em yields}: \ct{NU_MATL(i,j)}, \linebreak[4]\ct{NU_SPEC(i,j)}, and \ct{NU_PART(i,j)}, respectively. The yields are all zero by default. If \ct{NU_MATL(i,j)} is non-zero, then you {\em must} indicate what the solid residue is via \ct{MATL_ID(i,j)}, the \ct{ID} of another \ct{MATL} that is also listed in the input file. If \ct{NU_SPEC(i,j)} is non-zero, then you {\em must} indicate what the gas species is via \linebreak[4]\ct{SPEC_ID(i,j)}, the \ct{ID} of another \ct{SPEC} that is also listed in the input file. If \ct{NU_PART(i,j)} is non-zero, then you {\em must} indicate what the particle class is via \ct{PART_ID(i,j)}, the \ct{ID} of another \ct{PART} that is also listed in the input file. If particles are specified, the insertion rate and number of particles is controlled via the particle inputs on the \ct{SURF} containing the material. Ideally, the sum of the yields should add to 1, meaning that the mass of the reactant is conserved. However, there are instances when it is convenient to have the yields that sum to less than one. For example, the spalling or ablation of concrete can be described as a ``reaction'' that consumes energy but does not produce any ``product'' because the concrete is assumed to have either fallen off the surface in chunks or pulverized powder. The concrete's mass is not conserved {\em in the model} because it has essentially disappeared from that particular surface. Producing more mass (yields more than 1) will result in an error message. Note that \ct{NU_SPEC(i,j)} can be less than zero as would occur during char oxidation where solid char reacts with oxygen. -It is often convenient when there are multiple materials that are pyrolyzing in a model, to represent the pyrolyzates using some average gas species. For consistency, the \ct{HEAT_OF_COMBUSTION(i,j)} can also be specified for each species, $i$, in each reaction, $j$. These values are used only if the corresponding heats of combustion for the gaseous species are greater than zero. Note that \ct{HEAT_OF_COMBUSTION(i,j)} discussed here is not necessarily the same as the \ct{HEAT_OF_COMBUSTION} of the surrogate \ct{FUEL} used for gas phase combustion (e.g., \ct{'PROPANE'}). When the heats of combustion differ, the mass flux of the surrogate \ct{FUEL} in the gas phase is adjusted so that the correct heat release rate is attained. The \ct{HEAT_OF_COMBUSTION} is the energy released per unit mass of fuel gas that mixes with oxygen and combusts. This has nothing to do with the pyrolysis process. Specifying the \ct{HEAT_OF_COMBUSTION} for each material ensures that the fuel vapors from different materials combust to produce the proper amount of energy. The mass loss rate of fuel gases is automatically adjusted so that the effective mass loss rate multiplied by the gas phase heat of combustion for the average fuel species produces the expected heat release rate. This adjustment uses the value of \ct{HOC_COMPLETE}, see Sec.~\ref{info:hoc_complete}, on the \ct{REAC} line. If, for example, the \ct{HOC_COMPLETE} specified on the \ct{REAC} line is twice that specified on the \ct{MATL} line, the mass of contained within wall cell will be decremented by that determined by the pyrolysis model, but the mass added to gas phase would be reduced by 50~\%. A different value of heat of combustion can be specified for each species, $i$, in each reaction, $j$, via the parameter \ct{HEAT_OF_COMBUSTION(i,j)}. +It is often convenient when there are multiple materials that are pyrolyzing in a model, to represent the pyrolyzates using some average gas species. For consistency, the \ct{HEAT_OF_COMBUSTION(i,j)} can also be specified for each species, $i$, in each reaction, $j$. These values are used only if the corresponding heats of combustion for the gaseous species are greater than zero. Note that \ct{HEAT_OF_COMBUSTION(i,j)} discussed here is not necessarily the same as the \ct{HEAT_OF_COMBUSTION} of the surrogate \ct{FUEL} used for gas phase combustion (e.g., \ct{'PROPANE'}). When the heats of combustion differ, the mass flux of the surrogate \ct{FUEL} in the gas phase is adjusted so that the correct heat release rate is attained. The \linebreak[4]\ct{HEAT_OF_COMBUSTION} is the energy released per unit mass of fuel gas that mixes with oxygen and combusts. This has nothing to do with the pyrolysis process. Specifying the \ct{HEAT_OF_COMBUSTION} for each material ensures that the fuel vapors from different materials combust to produce the proper amount of energy. The mass loss rate of fuel gases is automatically adjusted so that the effective mass loss rate multiplied by the gas phase heat of combustion for the average fuel species produces the expected heat release rate. This adjustment uses the value of \ct{HOC_COMPLETE}, see Sec.~\ref{info:hoc_complete}, on the \ct{REAC} line. If, for example, the \ct{HOC_COMPLETE} specified on the \ct{REAC} line is twice that specified on the \ct{MATL} line, the mass of contained within wall cell will be decremented by that determined by the pyrolysis model, but the mass added to gas phase would be reduced by 50~\%. A different value of heat of combustion can be specified for each species, $i$, in each reaction, $j$, via the parameter \ct{HEAT_OF_COMBUSTION(i,j)}. In the example below, a reaction for the pyrolysis of wood is defined. In the reaction, 82~\% of the mass of wood is converted to gaseous \ct{'PYROLYZATE'} and 18~\% is converted to solid \ct{'CHAR'}. The yet undefined input parameters are discussed in Sec.~\ref{info:reaction_rates}. \begin{lstlisting} &SPEC ID = 'PYROLYZATE', MW=53.6 / - &MATL ID = 'WOOD' + &MATL ID = 'WOOD' EMISSIVITY = 0.9 CONDUCTIVITY = 0.2 SPECIFIC_HEAT = 1.3 @@ -2932,7 +2918,7 @@ \subsection{Reaction Rates} \be X_{\rm O_2}(x) = X_{\rm O_2,f}\exp(-x/L_{\rm g}) \ee -where $L_{\rm g}$ is the gas diffusion length scale and $X_{\rm O_2,f}$ is computed to satisfy simultaneous mass transfer and solid phase reaction rates (see FDS Tech Guide \cite{FDS_Math_Guide}). $n_{{\rm O_2},ij}$ is prescribed under the name \ct{N_O2(j)} on the \ct{MATL} line of the $i$th material. It is zero by default. $L_{\rm g}$ is prescribed under the name \ct{GAS_DIFFUSION_DEPTH(j)}, and it is 0.001 m by default. The heat release rate per unit area associated with oxidation reactions can be output using the solid phase \ct{QUANTITY} called \ct{'OXIDATIVE HRRPUA'}. This is an integral in depth of the contributions from all reactions and all materials for a given solid surface. +where $L_{\rm g}$ is the gas diffusion length scale and $X_{\rm O_2,f}$ is computed to satisfy simultaneous mass transfer and solid phase reaction rates (see FDS Tech Guide \cite{FDS_Math_Guide}). $n_{{\rm O_2},ij}$ is prescribed under the name \ct{N_O2(j)} on the \ct{MATL} line of the $i$th material. It is zero by default. $L_{\rm g}$ is prescribed under the name \linebreak[4]\ct{GAS_DIFFUSION_DEPTH(j)}, and it is 0.001 m by default. The heat release rate per unit area associated with oxidation reactions can be output using the solid phase \ct{QUANTITY} called \ct{'OXIDATIVE HRRPUA'}. This is an integral in depth of the contributions from all reactions and all materials for a given solid surface. You set the maximum allowable value of reaction rate, $r_{ij}$ by specifying \ct{MAX_REACTION_RATE(j)} in \unit{kg/(m^3.s)}. @@ -2980,7 +2966,7 @@ \subsubsection{Estimating Kinetic Parameters} When in doubt about the values of these various parameters, just specify the \ct{REFERENCE_TEMPERATURE}. Note that FDS will automatically calculate $A$ and $E$ using the above formulae. Do not specify $A$ and $E$ if you specify the \linebreak[3] \ct{REFERENCE_TEMPERATURE}, and do not specify \ct{PYROLYSIS_RANGE} if you specify \ct{REFERENCE_RATE}. For the material decomposition shown in Fig.~\ref{pyrolysis}, the \ct{MATL} would have the form: \begin{lstlisting} - &MATL ID = 'My Fuel' + &MATL ID = 'My Fuel' ... N_REACTIONS = 1 SPEC_ID(1,1) = '...' @@ -2998,7 +2984,7 @@ \subsubsection{Example: Modeling Upholstered Furnishings} The example input file called \ct{Fires/couch.fds} demonstrates a simple way to model upholstered furniture. Modeling a couch requires a simplification of its structure and materials. At the very least, we want the upholstery to be modeled as a layer of fabric covering polyurethane foam. The thermal properties of each are needed, along with estimates of the ``reference'' temperatures as described above. The foam might be described as follows: \begin{lstlisting} - &MATL ID = 'FOAM' + &MATL ID = 'FOAM' SPECIFIC_HEAT = 1.0 CONDUCTIVITY = 0.1 DENSITY = 40.0 @@ -3022,7 +3008,6 @@ \subsubsection{Example: Modeling Upholstered Furnishings} \label{couch_fig} \end{figure} -\FloatBarrier \subsection{Shrinking and Swelling materials} \label{info:shrink_swell} @@ -3079,7 +3064,7 @@ \subsection{Multiple Solid Phase Reactions} The plot in Fig.~\ref{pyrolysis_2} contains two sets of curves. The solid curves represent the solution of the set of equations computed using a numerical ODE solver, and the underlying dashed curves are a ``fit'' of the solution using FDS. The \ct{MATL} line for the solid material contains the following three parameters that define its decomposition: \begin{lstlisting} - &MATL ID = '...' + &MATL ID = '...' ... REFERENCE_TEMPERATURE = 300. PYROLYSIS_RANGE = 100. @@ -3104,11 +3089,11 @@ \subsection{Liquid Fuels} The properties of a liquid fuel are given on the \ct{MATL} line: \begin{lstlisting} - &REAC FUEL = 'ETHANOL' + &REAC FUEL = 'ETHANOL' CO_YIELD = 0.001 SOOT_YIELD = 0.008 / - &MATL ID = 'ETHANOL LIQUID' + &MATL ID = 'ETHANOL LIQUID' EMISSIVITY = 1. NU_SPEC = 1. SPEC_ID = 'ETHANOL' @@ -3119,12 +3104,12 @@ \subsection{Liquid Fuels} ABSORPTION_COEFFICIENT = 1140 BOILING_TEMPERATURE = 78.5 / - &SURF ID = 'ETHANOL POOL' + &SURF ID = 'ETHANOL POOL' COLOR = 'YELLOW' MATL_ID = 'ETHANOL LIQUID' THICKNESS = 0.1 / \end{lstlisting} -The inclusion of \ct{BOILING_TEMPERATURE} on the \ct{MATL} line tells FDS to use its liquid pyrolysis model. It also automatically sets \ct{N_REACTIONS=1}, that is, the only ``reaction'' is the phase change from liquid to gaseous fuel. Thus, \ct{HEAT_OF_REACTION} in this case is the latent heat of vaporization at the boiling temperature. The thermal conductivity, density and specific heat are used to compute the loss of heat into the liquid via conduction using the same one-dimensional heat transfer equation that is used for solids. Obviously, the convection of the liquid is important, but is not considered in the model. The \ct{ABSORPTION_COEFFICIENT} denotes the absorption in depth of thermal radiation into the liquid. Liquids do not just absorb radiation at the surface, but rather over a thin layer near the surface. Its effect on the burning rate can be significant. +The inclusion of \ct{BOILING_TEMPERATURE} on the \ct{MATL} line tells FDS to use its liquid pyrolysis model. It also automatically sets \ct{N_REACTIONS=1}, that is, the only ``reaction'' is the phase change from liquid to gaseous fuel. Thus, \ct{HEAT_OF_REACTION} in this case is the latent heat of vaporization at the boiling temperature. The thermal conductivity, density and specific heat are used to compute the loss of heat into the liquid via conduction using the same one-dimensional heat transfer equation that is used for solids. Obviously, the convection of the liquid is important, but is not considered in the model. The \linebreak[4]\ct{ABSORPTION_COEFFICIENT} denotes the absorption in depth of thermal radiation into the liquid. Liquids do not just absorb radiation at the surface, but rather over a thin layer near the surface. Its effect on the burning rate can be significant. In this example, \ct{'ETHANOL'} is a {\em known} species; that is, it is listed in Appendix~\ref{info:predefined_species}. For this reason, only its CO and soot yield need to be specified. If the species is not known, then you must furnish additional information. Sec.~\ref{user_defined_gas_species_props} contains details, but in brief, only the molecular weight of the gas species is of relevance for the liquid pool evaporation model. If the liquid has multiple components, like gasoline or kerosene, individual \ct{MATL} line can be provided for each component. A single gas phase fuel species can still be used by having each \ct{MATL} line contain the same \ct{SPEC_ID}. If this is the case, provide the liquid component molecular weights, \ct{MW}, with units of g/mol on the \ct{MATL} lines. These unique molecular weights are used when computing the evaporation rates of the individual liquid components. @@ -3151,8 +3136,8 @@ \subsubsection{Liquid Mixtures} \begin{lstlisting} &SPEC ID='WATER VAPOR' / &REAC FUEL='N-HEXANE' / - &SURF ID = 'POOL' - COLOR = 'YELLOW' + &SURF ID ='POOL' + COLOR ='YELLOW' MATL_ID(1,1:6) = 'HEXANE','HEPTANE','OCTANE','DECANE','BENZENE','WATER' MATL_MASS_FRACTION(1,1:6) = 0.521,0.054,0.063,0.023,0.200,0.139 THICKNESS = 0.002 / @@ -3223,7 +3208,7 @@ \subsection{Solid Fuels that can Burn Away} \item The heat conduction into an \ct{OBST} that can \ct{BURN_AWAY} is limited to 1-D. On the \ct{SURF} line, specify the \ct{THICKNESS} to be approximately that of a single cell, and also set \ct{BACKING='VOID'}. It is assumed that the solid is relatively well-insulated and that the in-depth temperature profile drops off relatively quickly at the surface. When a cell is removed, the newly exposed surface is initially at ambient temperature but heats up quickly at the surface. \item If the volume of the obstruction changes because it has to conform to the uniform mesh, FDS does {\em not} adjust the burning rate to account for this as it does with various quantities associated with areas, like \ct{HRRPUA}. \item A parameter called \ct{BULK_DENSITY} (\unit{kg/m^3}) can be specified on the \ct{OBST} line to designate the {\em combustible} mass of the solid object. The calculation uses the user-specified object dimensions, not those of the mesh-adjusted object. This parameter over-rides all other parameters with which a combustible mass would be calculated. Note that without a \ct{BULK_DENSITY} specified, the total amount of mass burned will depend upon the grid resolution. The use of the \ct{BULK_DENSITY} parameter ensures a specific fuel mass per unit volume that is independent of the grid resolution. Note that in the event that the solid phase reaction involves the production of solid residue (like char or ash), the \ct{BULK_DENSITY} refers to the mass of the solid that is converted to gas upon reaction. You can visualize the decrease in the bulk density of a burning solid using the output quantity \ct{'BULK DENSITY'} with a slice (\ct{SLCF}) or device (\ct{DEVC}). - \item If \ct{BURN_AWAY} is prescribed on a \ct{SURF} line, that single \ct{SURF_ID} should be applied to the entire \ct{OBST}, not to specific faces, because it is unclear how to remove solid obstructions that have different \ct{SURF_ID}s on different faces. An exception to this rule is where a \ct{BULK_DENSITY} is applied to the \ct{OBST}, in which case the \ct{OBST} will disappear when the mass of fuel designated by \ct{BULK_DENSITY} is consumed rather than that of any particular face. + \item If \ct{BURN_AWAY} is prescribed on a \ct{SURF} line, that single \ct{SURF_ID} should be applied to the entire \ct{OBST}, not to specific faces, because it is unclear how to remove solid obstructions that have different \linebreak[4]\ct{SURF_ID}s on different faces. An exception to this rule is where a \ct{BULK_DENSITY} is applied to the \ct{OBST}, in which case the \ct{OBST} will disappear when the mass of fuel designated by \ct{BULK_DENSITY} is consumed rather than that of any particular face. \item By default, newly exposed surfaces take on the same \ct{SURF_ID} that has been applied to the original obstruction. However, you can specify an optional \ct{SURF_ID_INTERIOR} on the \ct{OBST} line to define surface properties of newly exposed surfaces. For example, an upholstered cushion might have a surface layer of fabric whereas a newly exposed grid cell within the cushion will not. \item To compensate for the inaccurate obstruction area, an additional parameter \ct{AREA_MULTIPLIER} can be added on the \ct{SURF} line. It will multiply all mass and energy fluxes with a user-specified factor. Check that the \ct{BURN_AWAY} works as expected if these two features are combined. \item The mass of the object is based on the densities of all material components (\ct{MATL}), but it is only consumed by mass fluxes of the {\em known} species. If the sum of the gaseous yields is less than one, it will take longer to consume the mass. @@ -3340,9 +3325,9 @@ \subsection{Simulating the Cone Calorimeter} \item Create \ct{SPEC} lines to list any gas species created in the pyrolysis process. A \ct{REAC} line is not needed, as there is no gas phase combustion allowed. \item On the \ct{TIME} line, set \ct{WALL_INCREMENT=1} to force FDS to update the solid phase every time step (normally it does this every other time step), and set \ct{DT} to a value that is appropriate for the solid phase calculation. Since there is no gas phase calculation that will limit the time step, it is best to control this yourself. \item Generate \ct{MATL} lines, plus a single \ct{SURF} line, as you normally would, except add \ct{EXTERNAL_FLUX} to the \ct{SURF} line. This is simply a ``virtual'' source that heats the solid. Think of this as a perfect radiant panel or conical heating unit. You can control the \ct{EXTERNAL_FLUX} using either \ct{TAU_EF} or \ct{RAMP_EF}. This is useful if you want to ramp up the heat flux following ignition to account for the additional radiation from the flame. See Sec.~\ref{info:RAMP_Time} for more details about ramps. Note that if you want the \ct{EXTERNAL_FLUX} to {\em replace} all other sources of radiation at the surface, set \ct{SKIP_INRAD=T} on the \ct{SURF} line along with \ct{EXTERNAL_FLUX}. - \item On the \ct{SURF} line, set a gas temperature, \ct{TMP_GAS_FRONT} (\unit{\degreeCelsius}), and optionally a \linebreak[4]\ct{HEAT_TRANSFER_COEFFICIENT} (\unit{W/(m^2.K)}), allowing you to control the convective heat flux from gas to surface and vice versa. Similar to \ct{EXTERNAL_FLUX}, \ct{RAMP_TMP_GAS_FRONT} and \ct{RAMP_HEAT_TRANSFER_COEFFICIENT} can be set to account for pre- vs. post-ignition conditions. + \item On the \ct{SURF} line, set a gas temperature, \ct{TMP_GAS_FRONT} (\unit{\degreeCelsius}), and optionally a \linebreak[4]\ct{HEAT_TRANSFER_COEFFICIENT} (\unit{W/(m^2.K)}), allowing you to control the convective heat flux from gas to surface and vice versa. Similar to \ct{EXTERNAL_FLUX}, \ct{RAMP_TMP_GAS_FRONT} and \linebreak[4]\ct{RAMP_HEAT_TRANSFER_COEFFICIENT} can be set to account for pre- vs. post-ignition conditions. \item Assign the \ct{SURF_ID} to a \ct{VENT} that spans at least one grid cell. - \item Add solid phase output devices to the solid surface, like \ct{'WALL TEMPERATURE'}, \ct{'TOTAL HEAT FLUX'}, \ct{'GAUGE HEAT FLUX'}, and \ct{'WALL THICKNESS'}. Use these to track the condition of the solid as a function of time. The generation rate of the various gases is output via the quantity \ct{'MASS FLUX'} along with the appropriate \ct{SPEC_ID}. Do not specify the quantity \ct{'BURNING RATE'} because FDS assumes that this is specific for fuel gas, and in this exercise there is no fuel gas. + \item Add solid phase output devices to the solid surface, like \ct{'WALL TEMPERATURE'}, \linebreak[4]\ct{'TOTAL HEAT FLUX'}, \ct{'GAUGE HEAT FLUX'}, and \ct{'WALL THICKNESS'}. Use these to track the condition of the solid as a function of time. The generation rate of the various gases is output via the quantity \ct{'MASS FLUX'} along with the appropriate \ct{SPEC_ID}. Do not specify the quantity \linebreak[4]\ct{'BURNING RATE'} because FDS assumes that this is specific for fuel gas, and in this exercise there is no fuel gas. \end{enumerate} Compare your results to measurements made in a bench-scale device, like the cone calorimeter. Keep in mind, however, that the calculation and the experiment are not necessarily perfectly matched. The calculation is designed to eliminate uncertainties related to convection, combustion, and apparatus-specific phenomena. Below is an FDS input file that demonstrates how you can test a candidate pyrolysis model by running very short calculations. The simulation only involves the solid phase model. Essentially, the gas phase calculation is shut off except for the imposition of a 50~\unit{kW/m^2} ``external'' heat flux. The solid in this example is a 8.5~mm thick slab of PMMA. For more details, see the FDS Validation Guide under the heading ``FAA Polymers.'' \begin{lstlisting} @@ -3407,7 +3392,7 @@ \subsection{Simulating Bench-scale Measurements like the TGA, DSC, and MCC} \ee where $\rho_{\rm s}$ is the initial sample density, $c_{\rm s}$ is the initial sample specific heat, $\delta$ is the initial sample thickness which is assumed to be \qty{1e-5}{\meter}, and $h$ is the heat transfer coefficient, assumed to be 100~\unit{W/(m^2.K)}. The time step can be over-ridden via the parameter \ct{TGA_DT} on the \ct{SURF} line. The output spacing for temperature can be set with \ct{TGA_DUMP} on the \ct{SURF} line. -The \ct{TGA}, \ct{MCC} or \ct{DSC/STA} output can be multiplied by \ct{X_CONVERSION_FACTOR}, where \ct{X} is \ct{TGA}, \ct{MCC}, or \ct{DSC}, respectively. For example, the \ct{DSC} output assumes that an endothermic reaction is represented by a positive peak, and an exothermic reaction by a negative peak. To flip this around, set \ct{DSC_CONVERSION_FACTOR=-1}. +The \ct{TGA}, \ct{MCC} or \ct{DSC/STA} output can be multiplied by \ct{X_CONVERSION_FACTOR}, where \ct{X} is \ct{TGA}, \ct{MCC}, or \ct{DSC}, respectively. For example, the \ct{DSC} output assumes that an endothermic reaction is represented by a positive peak, and an exothermic reaction by a negative peak. To flip this around, set \linebreak[4]\ct{DSC_CONVERSION_FACTOR=-1}. Details of the output quantities are discussed in Sec.~\ref{info:thermal_analysis_outputs}. Further details on these measurement techniques and how to interpret them are found in the FDS Verification Guide~\cite{FDS_Verification_Guide}. @@ -3676,9 +3661,6 @@ \subsection{Random Mass Flux Variation} &BNDF QUANTITY='MASS FLUX', CELL_CENTERED=T / \end{lstlisting} - -\newpage - \section{HVAC Systems} \label{info:HVAC} @@ -3743,7 +3725,7 @@ \subsection{HVAC Duct Parameters} \item \ct{NODE_ID} gives the \ct{ID}s of the nodes on either end of the duct segment. Positive velocity in a duct is defined as flow from the first node to second node. \item \ct{PERIMETER} in m is used along with \ct{AREA} to specify a duct with non-circular cross-section. The \ct{DIAMETER} will be computed as the hydraulic diameter. \item \ct{RAMP_LOSS} If specified this \ct{RAMP} is a multiplier for the \ct{LOSS}. - \item \ct{REVERSE} is a logical parameter that when \ct{T} indicates that the specified \ct{FAN_ID} blows from the second node to the first. \ct{REVERSE} has no effect on \ct{VOLUME_FLOW} or \ct{MASS_FLOW} as a duct input. If \ct{VOLUME_FLOW} or \ct{MASS_FLOW} is specified for a duct and the reverse flow direction is needed, change the sign of the input to negative. + \item \ct{REVERSE} is a logical parameter that when \ct{T} indicates that the specified \ct{FAN_ID} blows from the second node to the first. \ct{REVERSE} has no effect on \ct{VOLUME_FLOW} or \ct{MASS_FLOW} as a duct input. If \linebreak[4]\ct{VOLUME_FLOW} or \ct{MASS_FLOW} is specified for a duct and the reverse flow direction is needed, change the sign of the input to negative. \item \ct{ROUGHNESS} is the absolute roughness in m of the duct that is used to compute the friction factor for the duct. If \ct{ROUGHNESS} is not set, the HVAC solver will not compute the friction factor and the wall friction will be zero - if this is the case you may want to account for wall friction losses in \ct{LOSS}. "Perfectly smooth" ducts and pipes still have wall losses and therefore setting \ct{ROUGHNESS} to zero will tell the HVAC solver to compute the minimum friction factor (which is non-zero) - this is not the same as leaving \ct{ROUGHNESS} unset. \item \ct{ROUND} flag indicating a round duct. The default value is \ct{T}. \item \ct{SQUARE} flag indicating a square duct. @@ -3799,8 +3781,8 @@ \subsection{HVAC Node Parameters} \begin{lstlisting} &HVAC TYPE_ID='NODE', ID='tee', DUCT_ID='duct 1','duct 2',..'duct n', LOSS=lossarray, XYZ=x,y,z / - &HVAC TYPE_ID='NODE', ID='FDS connection', DUCT_ID='duct 1', VENT_ID='vent', - LOSS=enter,exit / + &HVAC TYPE_ID='NODE', ID='FDS connection', DUCT_ID='duct 1', + VENT_ID='vent',LOSS=enter,exit / &HVAC TYPE_ID='NODE', ID='ambient', DUCT_ID='duct 1', LOSS=enter,exit, XYZ=x,y,z, AMBIENT=T / \end{lstlisting} @@ -3928,8 +3910,8 @@ \subsection{HVAC Filter Parameters} &SPEC ID='PARTICULATE',MW=28.,MASS_FRACTION_0=0.001,SPECIFIC_HEAT=1./ &HVAC TYPE_ID='NODE',ID='FILTER',DUCT_ID='DUCT1','DUCT2',XYZ(3)=0.55, FILTER_ID='FILTER'/ - &HVAC TYPE_ID='FILTER',ID='FILTER',CLEAN_LOSS=1.,SPEC_ID='PARTICULATE',EFFICIENCY=1., - LOSS=7732.446,LOADING_MULTIPLIER=1./ + &HVAC TYPE_ID='FILTER',ID='FILTER',CLEAN_LOSS=1., + SPEC_ID='PARTICULATE',EFFICIENCY=1.,LOSS=7732.446,LOADING_MULTIPLIER=1./ \end{lstlisting} Note that a filter input refers to a class of filters and that multiple ducts can reference the same filter definition. @@ -3946,10 +3928,10 @@ \subsection{HVAC Aircoil Parameters} \begin{itemize} \item \ct{COOLANT_MASS_FLOW} is the flow rate of the working fluid in kg/s. \item \ct{COOLANT_SPECIFIC_HEAT} is the specific heat in \unit{kJ/(kg.K)} of the working fluid. - \item \ct{COOLANT_TEMPERATURE} is the inlet temperature of the working fluid in \unit{\degreeCelsius}. + \item \ct{COOLANT_TEMPERATURE} is the inlet temperature of the working fluid in \unit{\degreeCelsius} with a default value of \ct{TMPA}. \item \ct{EFFICIENCY} is the heat exchanger efficiency, $\eta$, from 0 to 1. A value of 1 indicates the exit temperatures on both sides of the heat exchanger will be equal. \item \ct{FIXED_Q} specifies a constant heat exchange rate in kw. A negative value indicates heat removal from the duct. The heat exchange rate can be controlled by either \ct{RAMP_ID} or by \ct{TAU_AC}. - \item \ct{TAU_AC} defines a tanh (\ct{TAU_AC}>0) or t$^2$ ramp (\ct{TAU_AC}<0) for the aircoil. This is applied to the \ct{FIXED_Q} of the aircoil. Alternatively, a \ct{RAMP_ID} can be given. + \item \ct{TAU_AC} defines a tanh (\ct{TAU_AC}>0) or t$^2$ ramp (\ct{TAU_AC}<0) for the aircoil. This is applied to the \linebreak[4]\ct{FIXED_Q} of the aircoil. Alternatively, a \ct{RAMP_ID} can be given. \end{itemize} Note that either \ct{FIXED_Q} or the set \ct{COOLANT_SPECIFIC_HEAT} ($c_{p,{\rm fluid}}$), \ct{COOLANT_MASS_FLOW} ($\dm_{\rm fluid}$), \linebreak[4]\ct{COOLANT_TEMPERATURE} ($T_{\rm fluid,in}$), and \ct{EFFICIENCY} ($\eta$) should be specified. In the latter case, the heat exchange is computed as a two step process. First, the outlet temperature, $T_{\rm fluid,out}$, is determined assuming 100~\% efficient (i.e., both fluids exit at the same temperature): \be @@ -3991,7 +3973,7 @@ \subsection{HVAC Mass Transport} If you are using \ct{DEVC}s to output spatially-integrated statistics as per Sec.~\ref{info:statistics} (such as \ct{VOLUME MEAN}, \ct{VOLUME INTEGRAL} or \ct{MASS INTEGRAL}) then be aware that, even if the integration volume bound by \ct{XB} encapsulates the spatial location of a duct, the quantity in the duct will not be recorded by the \ct{DEVC}. For example, if there is 1~\unit{\m^3} of species~\num{1} initialized in an upstream FDS compartment which is transported to a downstream FDS compartment via an HVAC network with a total volume greater than 1~\unit{m^3}, the value of total mass of species~\num{1} output by a \ct{DEVC} recording the \ct{VOLUME INTEGRAL} of \ct{DENSITY} will reduce to zero during the time for which it is in the HVAC network domain. -By default, cells in a mass transport duct are initialized to ambient values. A duct can be initialized a duct to other values by specifying \ct{NODE_ID} on \ct{INIT} plus \ct{TEMPERATURE} and/or \ct{SPEC_ID} plus \ct{VOLUME_FRACTION} or \ct{MASS_FRACTION}. The values in the duct will then be set by linear interpolation of the values at the duct nodes. +By default, cells in a mass transport duct are initialized to ambient values. A duct can be initialized a duct to other values by specifying \ct{NODE_ID} on \ct{INIT} plus \ct{TEMPERATURE} and/or \ct{SPEC_ID} plus \linebreak[4]\ct{VOLUME_FRACTION} or \ct{MASS_FRACTION}. The values in the duct will then be set by linear interpolation of the values at the duct nodes. \subsection{Specified Flow vs. Unspecified Flow} \label{info:hvacspecified} @@ -4044,8 +4026,6 @@ \subsection{HVAC and Unstructured Geometry} \end{lstlisting} Here the use of \ct{GEOM2=T} indicates that \ct{VENT2_ID} is a \ct{NODE_ID} on \ct{SURF}. -\newpage - \section{Sealed Compartments, Leakage, and Void Spaces} \label{info:ZONE} @@ -4172,7 +4152,7 @@ \subsubsection{Localized Leakage} &VENT XB=..., SURF_ID='SURF 2', ID='VENT 2' / &HVAC ID='LEAK1', TYPE_ID='LEAK', VENT_ID='VENT 1', VENT2_ID='VENT 2', AREA=0.001 / \end{lstlisting} -specify a 0.001 \unit{m^2} leak between the \ct{VENT}s named \ct{'VENT 1'} and \ct{'VENT 2'}. If the leakage path is to outside of the domain, set \ct{VENT2_ID='AMBIENT'}, in which case the second node will be assigned the name of the first with \ct{'AMB'} added, e.g. \ct{'VENT 1 AMB'}. Each \ct{VENT} must be given an explicit \ct{SURF_ID}. Wall heat transfer will be computed based upon the specified \ct{SURF_ID}. Following are some rules and practices regarding localized leakage: +specify a 0.001 \unit{m^2} leak between the \ct{VENT}s named \ct{'VENT 1'} and \ct{'VENT 2'}. If the leakage path is to outside of the domain, set \ct{VENT2_ID='AMBIENT'}, in which case the second node will be assigned the name of the first with \ct{'AMB'} added, e.g. \ct{'VENT 1 AMB'}. Each \ct{VENT} must be given an explicit \linebreak[4]\ct{SURF_ID}. Wall heat transfer will be computed based upon the specified \ct{SURF_ID}. Following are some rules and practices regarding localized leakage: \begin{itemize} \item The \ct{SURF_ID} for a \ct{VENT} with localized leakage is {\em not} \ct{'HVAC'}. Each \ct{VENT} must be given an explicit \ct{SURF_ID}. \item Each \ct{VENT} must lie in one pressure zone; however, it may span more than one \ct{MESH}. @@ -4285,7 +4265,7 @@ \subsubsection{Parabolic} \be \frac{\d p}{\d t} = \frac{\gamma \, \dot{V}}{V} \, p \quad \Longrightarrow \quad p(t) - p_0 = p_0 \left( {\rm e}^{\frac{\gamma \, \dot{V}}{V} \, t} - 1 \right) \ee -where the ratio of specific heats, $\gamma=1.4$, volume flow rate, $\dot{V}=1$~\unit{m^3/s}, volume, $V=4000$~\unit{m^3}, and ambient pressure, $p_0=101325$~Pa. Note that to obtain this simple result, FDS was run with the option \ct{CONSTANT_SPECIFIC_HEAT_RATIO=T}. +where the ratio of specific heats, $\gamma=1.4$, volume flow rate, $\dot{V}=1$~\unit{m^3/s}, volume, $V=4000$~\unit{m^3}, and ambient pressure, $p_0=101325$~Pa. Note that to obtain this simple result, FDS was run with the option \linebreak[4]\ct{CONSTANT_SPECIFIC_HEAT_RATIO=T}. \begin{figure}[ht] \centering \includegraphics[width=3.2in]{SCRIPT_FIGURES/parabolic_profile} @@ -4299,7 +4279,7 @@ \subsubsection{Parabolic} \subsubsection{Boundary Layer (Circular Vent)} \label{info:VEL_BULK} -\ct{PROFILE='BOUNDARY LAYER'} may be used for circular vents created using \ct{RADIUS}. By adding \ct{VEL_BULK} on the \ct{SURF} line together with \ct{VEL}, FDS will produce a plug flow core profile, with max velocity given by \ct{VEL}, and a quadratic profile in the boundary layer. The form of the profile is illustrated in Fig.~\ref{fig:bl_profile} for a circular vent. The functional form of the velocity profile (here taken a vertical profile) is +\ct{PROFILE='BOUNDARY LAYER'} may be used for circular vents created using \ct{RADIUS}. By adding \linebreak[4]\ct{VEL_BULK} on the \ct{SURF} line together with \ct{VEL}, FDS will produce a plug flow core profile, with max velocity given by \ct{VEL}, and a quadratic profile in the boundary layer. The form of the profile is illustrated in Fig.~\ref{fig:bl_profile} for a circular vent. The functional form of the velocity profile (here taken a vertical profile) is \begin{equation} w(r) = \left\{ \begin{array}{ll} w_{\unit{max}} & \quad \mbox{if} \quad r \le R-\delta \\ w_{\unit{max}}\left(1 - \left(\frac{r-(R-\delta)}{\delta}\right)^2\right) & \quad \mbox{if} \quad R-\delta < r \le R \end{array} \right. \end{equation} @@ -4550,7 +4530,7 @@ \subsubsection{Specifying Humidity} \subsection{Pre-Defined Gas and Liquid Properties} \label{gas_species_props} -Over 300 gases and liquids have properties tabulated within FDS. They are listed in Appendix~\ref{info:predefined_species}. The physical properties of these species are known and do not need to be specified. When using one of these species you need only specify the correct \ct{ID} and provide, if needed, \ct{MASS_FRACTION_0} and/or \ct{LUMPED_COMPONENT_ONLY}. FDS will use pre-compiled data to compute the various thermo-physical properties. +Over 300 gases and liquids have properties tabulated within FDS. They are listed in Appendix~\ref{info:predefined_species}. The physical properties of these species are known and do not need to be specified. When using one of these species you need only specify the correct \ct{ID} and provide, if needed, \ct{MASS_FRACTION_0} and/or \linebreak[4]\ct{LUMPED_COMPONENT_ONLY}. FDS will use pre-compiled data to compute the various thermo-physical properties. \subsection{User-Defined Gas and Liquid Properties} \label{user_defined_gas_species_props} @@ -4576,7 +4556,6 @@ \subsubsection{Specifying a Chemical Formula} &SPEC ID='ETHYLENE GLYCOL', C=2, H=6, O=2/ \end{lstlisting} - \subsubsection{Conductivity} \label{info:CONDUCTIVITY} @@ -4616,7 +4595,7 @@ \subsubsection{Enthalpy} \ee where $c_p$ is the \ct{SPECIFIC_HEAT} (\unit{kJ/(kg.K)}) with optional temperature dependence using \ct{RAMP_CP}. The value of $h(T_{\rm ref})$ can be specified in two ways. The first is to specify \ct{REFERENCE_TEMPERATURE}, $T_{\rm ref}$ (\unit{\degreeCelsius}) and the value of the enthalpy at that temperature using \ct{REFERENCE_ENTHALPY}, $h(T_{\rm ref})$ (kJ/kg). The second is to specify the \ct{ENTHALPY_OF_FORMATION} in kJ/mol. For this input $T_{\rm ref}$ is taken as the \linebreak[4] \ct{H_F_REFERENCE_TEMPERATURE} on the \ct{MISC} line. The default value of either reference temperature is 25~\unit{\degreeCelsius}. -If no input for $h(T_{\rm ref})$ is provided, then FDS will assume that the enthalpy at 0~K is 0~kJ/kg, i.e. if a constant \ct{SPECIFIC_HEAT} is given, then \ct{REFERENCE_ENTHALPY} will be set to $h(T_{\rm ref})=c_p T_{\rm ref}$. For \ct{RAMP_CP}, the \ct{RAMP} will be integrated from 0~K to $T_{\rm ref}$. +If no input for $h(T_{\rm ref})$ is provided, then FDS will assume that the enthalpy at 0~K is 0~kJ/kg, i.e. if a constant \ct{SPECIFIC_HEAT} is given, then \ct{REFERENCE_ENTHALPY} will be set to $h(T_{\rm ref})=c_p T_{\rm ref}$. For \linebreak[4]\ct{RAMP_CP}, the \ct{RAMP} will be integrated from 0~K to $T_{\rm ref}$. If no input for specific specific heat is provided, then the specific heat of the gas will be calculated from its molecular weight using the relation: \be @@ -4624,7 +4603,7 @@ \subsubsection{Enthalpy} \ee The ratio of specific heats, \ct{GAMMA}, is 1.4 by default and can be changed on the \ct{MISC} line. If you want all the gas specific heats to follow this relation, set \ct{CONSTANT_SPECIFIC_HEAT_RATIO=T} on the \ct{MISC} line. For high molecular weight species, use of the default gamma will result in very low values of the specific heat. This can cause issues with temperature in regions with high fuel mass fractions and can cause issues with the \ct{EXTINCTION 2} extinction model. For high molecular weight species it is recommended that the specific heat be defined. If the FDS is determining the specific heat using \ct{GAMMA}, then it is recommended that you check the \ct{CHID.out} file and verify that reasonable specific heat values have been created. -Note that species used in chemical reactions must either be predefined or have an explicitly defined $h(T_{\rm ref})$. The exception is the species defined as \ct{FUEL} on the \ct{REAC} input as long as a \ct{HEAT_OF_COMBUSTION} is defined or the reaction is a simple chemistry reaction where \ct{EPUMO2} applies. Specifying either \ct{SPECIFIC_HEAT} or \ct{RAMP_CP} is considered to have explicitly defined $h(T_{\rm ref})$. If you still wish to use the default \ct{EPUMO2} or 13,100~kJ/kg, then you will need to explicitly define it on the \ct{REAC} input. +Note that species used in chemical reactions must either be predefined or have an explicitly defined $h(T_{\rm ref})$. The exception is the species defined as \ct{FUEL} on the \ct{REAC} input as long as a \ct{HEAT_OF_COMBUSTION} is defined or the reaction is a simple chemistry reaction where \ct{EPUMO2} applies. Specifying either \linebreak[4]\ct{SPECIFIC_HEAT} or \ct{RAMP_CP} is considered to have explicitly defined $h(T_{\rm ref})$. If you still wish to use the default \ct{EPUMO2} or 13,100~kJ/kg, then you will need to explicitly define it on the \ct{REAC} input. The thermodynamic properties (specific heat, enthalpy, entropy, and other derived properties) of a species can also be specified using NASA polynomials, as shown below. Two sets of \ct{POLYNOMIAL_COEFF} are specified: the first set is valid for the temperature range of 200 K to 1000 K, and the second set is valid for the temperature range of 1000 K to 5000 K, as indicated by the \ct{POLYNOMIAL_TEMP} parameter. In general, detailed mechanisms (see Section \ref{info:detailedChemMech}) specify species properties using NASA polynomials. \begin{lstlisting} @@ -4758,9 +4737,11 @@ \subsection{Two Gas Species with the Same Properties} \subsection{Soot} \label{info:SOOT} -The predefined species of \ct{SOOT'} is defined with with \ct{FORMULA='C'}. To specify soot that contains other atoms, use \ct{FORMULA}. If new thermo-physical properties are not specified, define the \ct{FORMULA} to keep the molecular weight near 12~g/mol, i.e \ct{FORMULA='C0.85H1.7'} rather than \ct{FORMULA='C10H20'}. - -\newpage +The predefined species of \ct{SOOT'} is defined with with \ct{FORMULA='C'}. To specify soot that contains other elements, use \ct{FORMULA}. For example, the following would redefine \ct{SOOT} to include a 10\,\% hydrogen atom fraction. +\begin{lstlisting} + &SPEC ID='SOOT', FORMULA='C0.9H0.1'/ +\end{lstlisting} +If new thermo-physical properties are not specified, define the \ct{FORMULA} to keep the molecular weight near 12~g/mol, i.e \ct{FORMULA='C0.85H1.7'} rather than \ct{FORMULA='C10H20'}. The inputs \ct{C},\ct{H},\ct{O}, and \ct{N} can also be used if those are the only elements present. When using simple chemistry add \ct{LUMPED_COMPONENT_ONLY=T} if you are not using any of the aerosol behaviors in FDS. \section{Specifying Lumped Species (Mixtures of Primitive Species)} \label{info:lumped} @@ -4772,7 +4753,7 @@ \section{Specifying Lumped Species (Mixtures of Primitive Species)} \subsubsection{Example 1: All primitive species} \begin{lstlisting} - &SPEC ID='NITROGEN', BACKGROUND=T / Note: The background must be defined first. + &SPEC ID='NITROGEN', BACKGROUND=T / Note: The background must be first. &SPEC ID='OXYGEN', MASS_FRACTION_0=0.23054 / &SPEC ID='WATER VAPOR', MASS_FRACTION_0=0.00626 / &SPEC ID='CARBON DIOXIDE', MASS_FRACTION_0=0.00046 / @@ -4853,7 +4834,7 @@ \subsection{Simple Chemistry Parameters} \nu_{\COTWO} \; \mathrm{CO_2} + \nu_{\HTWOO} \; \mathrm{H_2O} + \nu_{\CO} \; \mathrm{CO} + \nu_{\rm S} \; \mathrm{Soot} + \nu_{\HCN} \; \mathrm{HCN} + \nu_{\NTWO} \; \mathrm{N_2} \ee -You need only specify the chemical formula of the fuel along with the yields of CO ($y_{\CO}$), soot ($y_{\rm S}$), and HCN ($y_{\HCN}$) and the volume fraction of hydrogen in the soot ($X_\Hy$). FDS will use that information and calculate the stoichiometric coefficients automatically as follows where $W$ is the molecular weight and F indicates the fuel species: +You need only specify the chemical formula of the fuel along with the yields of CO ($y_{\CO}$), soot ($y_{\rm S}$), and HCN ($y_{\HCN}$) and the volume fraction of hydrogen in the soot ($X_\Hy$). The chemical formula and the soot hydrogen fraction, if a non-zero value is desired, are defined using \ct{SPEC}, see~\ref{info:FORMULA}. FDS will use that information and calculate the stoichiometric coefficients automatically as follows where $W$ is the molecular weight and F indicates the fuel species: \begin{eqnarray*} \nu_{\OTWO} &=& \nu_{\COTWO} + \frac{\nu_{\CO}}{2} + \frac{\nu_{\HTWOO}}{2} - \frac{\hbox{z}}{2} \\ \nu_{\COTWO} &=& \hbox{x} - \nu_{\CO} - \nu_{\HCN} - (1-X_\Hy) \, \nu_{\rm S} \\ @@ -4882,9 +4863,9 @@ \subsection{Simple Chemistry Parameters} \begin{lstlisting} &REAC FUEL = 'METHANE' / \end{lstlisting} -In this case, there is no need for a \ct{FORMULA} or atom count because the \ct{FUEL} is listed in Appendix~\ref{info:predefined_species}. It is assumed that the soot and CO yields are zero. FDS will compute the yields of product species and the heat of combustion based upon predefined values. +In this case, there is no need for a \ct{SPEC} because the \ct{FUEL} is listed in Appendix~\ref{info:predefined_species}. It is assumed that the soot and CO yields are zero. FDS will compute the yields of product species and the heat of combustion based upon predefined values. \begin{lstlisting} - &REAC FUEL = 'PROPANE' + &REAC FUEL = 'PROPANE' SOOT_YIELD = 0.01 CO_YIELD = 0.02 HEAT_OF_COMBUSTION = 46460. / @@ -4892,10 +4873,10 @@ \subsection{Simple Chemistry Parameters} In this case, the fuel species is again predefined. However, here the heat of combustion is specified explicitly rather than calculated. Additionally, minor species yields have been specified with the soot yield specified as 0.01 and the CO yield specified as 0.02. See Sec.~\ref{info:heat_of_combustion} for more details on the heat of combustion. \begin{lstlisting} - &SPEC ID = 'MY FUEL' + &SPEC ID = 'MY FUEL' FORMULA = 'C3H8O3N4'/ - &REAC FUEL = 'MY FUEL' + &REAC FUEL = 'MY FUEL' HEAT_OF_COMBUSTION = 46124. / \end{lstlisting} In this case, the fuel is not predefined. Therefore, either the \ct{FORMULA} or the atom counts (\ct{C},\ct{H},\ct{O}, and \ct{N}) must be defined on \ct{SPEC}, see Sec.~\ref{info:FORMULA}. \footnote{Prior to FDS 6.8.0 the typical approach to define an unknown fuel was to use the inputs \ct{C},\ct{H},\ct{O}, and \ct{N} on \ct{REAC}. Now the preferred approach is to use \ct{SPEC} to encourage you to think about what other species properties should be defined.} In this case, the heat of combustion is known and specified; however, if it weren't FDS would compute it using \ct{EPUMO2} and the fuel chemistry. Note that simple chemistry can also be used for cases where the fuel is a lumped species so long as the defining primitive species contain only C, H, N, and O atoms. An example can be found in Section \ref{info:Complex_Fuel}. @@ -4913,7 +4894,8 @@ \subsubsection{Option 1: Specify Enthalpy of Formation} You can specify unknown enthalpies on the \ct{SPEC} line in units of kJ/mol: \begin{lstlisting} - &SPEC ID = 'GLUCOSE', FORMULA = 'C62H12O6', ENTHALPY_OF_FORMATION=-1.297E3 / + &SPEC ID = 'GLUCOSE', FORMULA = 'C62H12O6', + ENTHALPY_OF_FORMATION=-1.297E3 / \end{lstlisting} Note FDS will also use \ct{REFERENCE_ENTHALPY}, \ct{SPECIFIC_HEAT}, or \ct{RAMP_CP} to define the enthalpy of formation as discussed in Section~\ref{info:Enthalpy}. @@ -4928,7 +4910,7 @@ \subsubsection{Option 3: Specify Heat of Combustion Based on Oxygen Consumption \Delta h \approx \frac{\nu_{\OTWO} \, W_{\OTWO} } { \nu_{\rm F} \, W_{\rm F} } \; \; \hbox{\ct{EPUMO2}} \quad \quad \hbox{kJ/kg} \label{EPUMO2} \end{equation} -The quantity \ct{EPUMO2} (kJ/kg) is the amount of energy released per unit mass of oxygen consumed. Its default is 13,100~kJ/kg. Typically, a chemical reaction is balanced by setting the stoichiometric coefficient of the fuel $\nu_{\rm F}$ to 1. In FDS, the stoichiometric coefficients of the chemical reaction are normalized by the stoichiometric coefficient of the fuel, effectively setting $\nu_{\rm F}$ to 1. Note that if both \ct{EPUMO2} and \ct{HEAT_OF_COMBUSTION} are specified that FDS will ignore the value for \ct{EPUMO2}. Note that the assumed value of \ct{EPUMO2} will not be used if Option 1 has been used. If you with to keep using the default value, add \ct{EPUMO2=13100} to the \ct{REAC} line. +The quantity \ct{EPUMO2} (kJ/kg) is the amount of energy released per unit mass of oxygen consumed. Its default is 13,100~kJ/kg. Typically, a chemical reaction is balanced by setting the stoichiometric coefficient of the fuel $\nu_{\rm F}$ to 1. In FDS, the stoichiometric coefficients of the chemical reaction are normalized by the stoichiometric coefficient of the fuel, effectively setting $\nu_{\rm F}$ to 1. Note that if both \ct{EPUMO2} and \ct{HEAT_OF_COMBUSTION} are specified that FDS will ignore the value for \ct{EPUMO2}. Note that the assumed value of \ct{EPUMO2} will not be used if Option 1 has been used. To force the use of \ct{EPUMO2} in this case, add \ct{EPUMO2=13100} to the \ct{REAC} line. \subsubsection{Additional Notes on the Heat of Combustion} If heats of reaction have been specified on the \ct{MATL} lines and the heats of combustion of the materials differ from that specified by the governing gas phase reaction, then add a \ct{HEAT_OF_COMBUSTION} (kJ/kg) to the \ct{MATL} line. In a realistic fire scenarios, there may be many fuel gases generated by the various burning objects in the building. Specify the stoichiometry of the predominant reaction via the \ct{REAC} namelist group. If the stoichiometry of the burning material differs from the global reaction, the \ct{HEAT_OF_COMBUSTION} is used to ensure that an equivalent amount of fuel is injected into the flow domain from the burning object. @@ -4967,7 +4949,8 @@ \subsection{Two-Step Simple Chemistry} \end{eqnarray} The simple version of the input file specifies the combustion parameters as follows: \begin{lstlisting} - &REAC FUEL='PROPANE', SOOT_YIELD=0., CO_YIELD=0., N_SIMPLE_CHEMISTRY_REACTIONS=2, FUEL_C_TO_CO_FRACTION=0.6667 / + &REAC FUEL='PROPANE', SOOT_YIELD=0., CO_YIELD=0., + N_SIMPLE_CHEMISTRY_REACTIONS=2, FUEL_C_TO_CO_FRACTION=0.6667 / \end{lstlisting} For simplicity in setting up the complex form of the input file, the post-flame Soot (C) and CO yields are set to zero. Within the flame envelop, Soot and CO are to be generated following the specified \linebreak[4]\ct{FUEL_C_TO_CO_FRACTION} by which 2 of the 3 carbon atoms in the fuel molecule make up CO, and 1 carbon atom forms. To check that the two formulations are the same, Fig.~\ref{fig:propane_flame_2reac} displays the heat release and radiative heat release rates for the first few seconds of simulation. \begin{figure}[!ht] @@ -5018,13 +5001,13 @@ \subsection{Turbulent Combustion} \subsection{Flame Extinction} \label{info:extinction} -Modeling suppression of a fire due to the introduction of a suppression agent like CO$_2$ or water mist, or due to the exhaustion of oxygen within a closed compartment is challenging because the relevant physical mechanisms typically occur at subgrid-scale. Flames are extinguished due to lowered temperatures and dilution of the fuel or oxygen supply. There are two flame extinction models in FDS that determine whether or not combustion is viable based on the cell temperature and the oxygen and fuel concentrations. In brief, for combustion to occur there must be sufficient oxygen and fuel to raise the cell temperature from its current value to a {\em critical flame temperature} (CFT). The CFT is based on the {\em oxygen index (OI)} concept discussed in Beyler's chapter in the SFPE Handbook~\cite{SFPE:Beyler}. The oxygen index is the volume fraction of oxygen in the oxidizer stream when extinguishment occurs. The adiabatic flame temperature\footnote{If you want to know the actual adiabatic flame temperature for each of your specified reactions, add \ct{COMPUTE_ADIABATIC_FLAME_TEMPERATURE=T} to the \ct{COMB} line. The result is written to the file called \ct{CHID.out}.} of a stoichiometric mixture of fuel and oxygen at this limiting oxygen concentration, $T_{\rm OI}$, is taken as the CFT. Values for the CFT ($T_{\rm OI}$) are listed in Table~\ref{tab:CFT}. Both extinction models make use of the CFT. +Modeling suppression of a fire due to the introduction of a suppression agent like CO$_2$ or water mist, or due to the exhaustion of oxygen within a closed compartment is challenging because the relevant physical mechanisms typically occur at subgrid-scale. Flames are extinguished due to lowered temperatures and dilution of the fuel or oxygen supply. There are two flame extinction models in FDS that determine whether or not combustion is viable based on the cell temperature and the oxygen and fuel concentrations. In brief, for combustion to occur there must be sufficient oxygen and fuel to raise the cell temperature from its current value to a {\em critical flame temperature} (CFT). The CFT is based on the {\em oxygen index (OI)} concept discussed in Beyler's chapter in the SFPE Handbook~\cite{SFPE:Beyler}. The oxygen index is the volume fraction of oxygen in the oxidizer stream when extinguishment occurs. The adiabatic flame temperature\footnote{If you want to know the actual adiabatic flame temperature for each of your specified reactions, add \linebreak[4]\ct{COMPUTE_ADIABATIC_FLAME_TEMPERATURE=T} to the \ct{COMB} line. The result is written to the file called \ct{CHID.out}.} of a stoichiometric mixture of fuel and oxygen at this limiting oxygen concentration, $T_{\rm OI}$, is taken as the CFT. Values for the CFT ($T_{\rm OI}$) are listed in Table~\ref{tab:CFT}. Both extinction models make use of the CFT. -The \ct{EXTINCTION_MODEL} is specified on the \ct{COMB} line\footnote{To eliminate any gas phase suppression, set \ct{SUPPRESSION=F} on the \ct{COMB} line.}. \ct{'EXTINCTION 1'} is the default for Very Large Eddy Simulation (VLES) and for Simple Very Large Eddy Simulation (SVLES) mode, whereas \ct{'EXTINCTION 2'} is used for DNS and LES. The difference between the two models is that for \ct{'EXTINCTION 1'}, only the cell temperature and oxygen concentration are considered because detailed thermo-physical gas species properties are not invoked, as they are in the \ct{'EXTINCTION 2'} model. Generally speaking, \ct{'EXTINCTION 2'} requires a relatively fine grid because it computes a local flame temperature. +The \ct{EXTINCTION_MODEL} is specified on the \ct{COMB} line\footnote{To eliminate any gas phase suppression, set \ct{SUPPRESSION=F} on the \ct{COMB} line.}. \ct{'EXTINCTION 1'} is the default for Very Large Eddy Simulation (VLES) and for Simple Very Large Eddy Simulation (SVLES) mode, whereas \ct{'EXTINCTION 2'} is used for DNS and LES. The difference between the two models is that for \linebreak[4]\ct{'EXTINCTION 1'}, only the cell temperature and oxygen concentration are considered because detailed thermo-physical gas species properties are not invoked, as they are in the \ct{'EXTINCTION 2'} model. Generally speaking, \ct{'EXTINCTION 2'} requires a relatively fine grid because it computes a local flame temperature. \subsubsection{Extinction Model 1} -The \ct{'EXTINCTION 1'} model is summarized by the left hand plot of Fig.~\ref{fig:extinct}, which indicates the ranges of cell temperature and oxygen concentration where combustion is viable. This model is meant to be used for simulations where the grid cells are relatively large and flames cannot be resolved. In particular, this means that above approximately 600~\unit{\degreeCelsius}, no flame extinction is assumed unless the oxygen concentration drops to zero. There are a few parameters associated with this model. First, the \ct{LOWER_OXYGEN_LIMIT}, which is sometimes referred to as the {\em lower oxygen index}, is the oxygen volume fraction at the left end of the solid line in Fig.~\ref{fig:extinct}. Values for various fuels are given in Table~\ref{tab:CFT}. Second, above the \ct{FREE_BURN_TEMPERATURE}, whose default value is 600~\unit{\degreeCelsius}, combustion is not suppressed. The default value is a typical indicator of flashover. Finally, the \ct{CRITICAL_FLAME_TEMPERATURE} establishes the point of intersection of the sloped line and the $x$ axis. Values for various fuels are listed in Table~\ref{tab:CFT}, but given the simplicity of this model, the default value is recommended. +The \ct{'EXTINCTION 1'} model is summarized by the left hand plot of Fig.~\ref{fig:extinct}, which indicates the ranges of cell temperature and oxygen concentration where combustion is viable. This model is meant to be used for simulations where the grid cells are relatively large and flames cannot be resolved. In particular, this means that above approximately 600~\unit{\degreeCelsius}, no flame extinction is assumed unless the oxygen concentration drops to zero. Three parameters are associated with this model. First is the \ct{LOWER_OXYGEN_LIMIT}, which is sometimes referred to as the {\em lower oxygen index}, is the oxygen volume fraction at the left end of the solid line in Fig.~\ref{fig:extinct}. Values for various fuels are given in Table~\ref{tab:CFT}. Second is the \ct{FREE_BURN_TEMPERATURE} above which combustion is not suppressed. The default value is 600~\unit{\degreeCelsius}, a typical indicator of flashover. Finally, the \ct{CRITICAL_FLAME_TEMPERATURE} establishes the point of intersection of the sloped line and the $x$ axis. Values for various fuels are listed in Table~\ref{tab:CFT}, but given the simplicity of this model, the default value is recommended. \subsubsection{Extinction Model 2} @@ -5095,7 +5078,7 @@ \subsubsection{Extinction Model Verification} \subsection{Piloted Ignition} \label{info:ignition} -By default, FDS employs either the \ct{'EXTINCTION 1'} or \ct{'EXTINCTION 2'} model to determine if combustion is viable. If local extinction occurs, the unburned fuel gas can re-ignite if it mixes with sufficient oxygen elsewhere in the domain, even if this re-ignition might not happen in reality because the temperature might be too low to sustain combustion. To prevent spurious re-ignition from happening, you can set the \ct{AUTO_IGNITION_TEMPERATURE} on the \ct{REAC} line, in \unit{\degreeCelsius}, below which combustion will not occur. The AIT for some fuels may be found in Beyler's chapter of the SFPE Handbook~\cite{SFPE:Beyler}. The default AIT is -273\unit{\degreeCelsius}, meaning that fuel and oxygen will burn when mixed providing that either of the extinction models allows combustion to occur. +By default, FDS employs either the \ct{'EXTINCTION 1'} or \ct{'EXTINCTION 2'} model to determine if combustion is viable. If local extinction occurs, the unburned fuel gas can re-ignite if it mixes with sufficient oxygen elsewhere in the domain, even if this re-ignition might not happen in reality because the temperature might be too low to sustain combustion. To prevent spurious re-ignition from happening, you can set the \ct{AUTO_IGNITION_TEMPERATURE} on the \ct{REAC} line, in \unit{\degreeCelsius}, below which combustion will not occur. The AIT for some fuels may be found in Beyler's chapter of the SFPE Handbook~\cite{SFPE:Beyler}. The default AIT is -273.15\unit{\degreeCelsius}, meaning that fuel and oxygen will burn when mixed providing that either of the extinction models allows combustion to occur. The value of AIT may need to be lowered for cases where the grid size is greater than 10~cm. The purpose of AIT is simply to prevent fuel and oxygen from spontaneously igniting, which is the default behavior of FDS. If an AIT is specified, then you must also specify some form of heat/ignition source must be present to start the fire; or you can specify the real sextuplet \ct{AIT_EXCLUSION_ZONE} on the \ct{REAC} line to designate a volume in which ignition occurs spontaneously even when the AIT is enforced everywhere else. Multiple exclusion zones can be specified as follows: \begin{lstlisting} @@ -5114,7 +5097,8 @@ \subsection{Piloted Ignition} \begin{lstlisting} &REAC FUEL='METHANE', AUTO_IGNITION_TEMPERATURE=540 / &PROP ID='spark', SPARK=T / - &DEVC ID='spark-1', XYZ=..., QUANTITY='TIME', SETPOINT=10, PROP_ID='spark' / + &DEVC ID='spark-1', XYZ=..., QUANTITY='TIME', SETPOINT=10, + PROP_ID='spark' / \end{lstlisting} In this case, methane and air will not combust unless the grid cell temperature exceeds 540~\unit{\degreeCelsius}. However, within the grid cell containing the specified point \ct{XYZ}, a ``spark'' is generated at 10~s which effectively causes the AIT to go to 0~K and ignition of fuel and air is allowed, assuming a suitable amount of fuel and air is present. @@ -5127,8 +5111,6 @@ \subsection{Local Quenching (AIT per ZONE)} AIT_EXCLUSION_ZONE(1:6,2)=..., AIT_EXCLUSION_ZONE_TEMPERATURE(2)=3000./ \end{lstlisting} -\newpage - \section{Complex Stoichiometry} \label{info:REAC_Diagnostics} @@ -5243,8 +5225,8 @@ \subsection{Complex Fuel Molecules} \end{lstlisting} Since this is not a simple chemistry problem, either the enthalpy of formation of PVC or the heat of combustion of the reaction should be specified. In this case, the heat of combustion for PVC is taken from the SFPE Handbook~\cite{SFPE:Tewarson}. \begin{lstlisting} - &REAC FUEL='PVC', HEAT_OF_COMBUSTION=16400, SPEC_ID_NU='PVC','AIR','PRODUCTS', - NU=-1,-1,1 / + &REAC FUEL='PVC', HEAT_OF_COMBUSTION=16400, + SPEC_ID_NU='PVC','AIR','PRODUCTS', NU=-1,-1,1 / \end{lstlisting} Note that the sign of \ct{NU} corresponds to whether that species is consumed (-) or produced (+). Also note that the values for \ct{NU} reflect the composition of the species as defined on the \ct{SPEC} lines. If, for example, the PVC \ct{SPEC} was defined as \ct{CH1.5Cl0.5}, then the \ct{REAC} would require \ct{NU=-2,-1,1}. Figure~\ref{pvc_combustion_fig} displays the mass fractions of the product species for the sample case \ct{PVC_Combustion} which is a sealed box filled with an initial \ct{PVC} mass fraction of 22.9~\% \ct{PVC} and the remainder air \ct{AIR} (see Sec.~\ref{info:init_species}). A fixed turbulent mixing time (\ct{FIXED_MIXED_TIME}) of 0.1~s is used for this example only because the reactants are initially mixed within a chamber with no imposed flow. Normally, this parameter is not necessary. @@ -5405,15 +5387,12 @@ \subsection{Using the \ct{EQUATION} input parameter} \end{itemize} For example, if the reaction defines the complete combustion of methane using primitive species, then the following would be equivalent: \begin{lstlisting} - &REAC FUEL='METHANE', EQUATION ='METHANE+2*OXYGEN=CARBON DIOXIDE+2*WATER VAPOR' / + &REAC FUEL='METHANE', + EQUATION ='METHANE+2*OXYGEN=CARBON DIOXIDE+2*WATER VAPOR' / &REAC FUEL='METHANE', EQUATION ='CH4+2*O2=CO2+2*H2O' / &REAC FUEL='METHANE', EQUATION ='METHANE+2*O2=CO2+2*H2O' / \end{lstlisting} - - -\newpage - \section{Finite Rate Combustion} \label{info:finite} @@ -5522,11 +5501,17 @@ \subsection{Finite Rate Chemistry using a Detailed Chemical Mechanism } \item Ensure that the chemistry reactions file, thermodynamic properties file, and transport properties file are available in Chemkin format. \item Use the following Cantera \cite{cantera:2023} command to convert these three files to a YAML file \begin{lstlisting} - ck2yaml --input= --thermo= --transport= --output= + ck2yaml --input= + --thermo= + --transport= + --output= \end{lstlisting} \item Using the utility Python script \ct{Utilities/Python/scripts/cantera_yaml_2_fds.py} from the \ct{firemodels/fds} GitHub repository, convert the output.yaml file to an FDS-formatted chemical mechanism file. Refer to the comments in the Python script for detailed usage. \begin{lstlisting} - python Utilities/Python/scripts/cantera_yaml_2_fds.py --yaml_file output.yaml --background background_species --spec_file spec_filename --fds_prop prop_flag --radcal radcal_flag --mf0_file mf0_filename > output.fds + python Utilities/Python/scripts/cantera_yaml_2_fds.py + --yaml_file output.yaml --background background_species + --spec_file spec_filename --fds_prop prop_flag --radcal radcal_flag + --mf0_file mf0_filename > output.fds \end{lstlisting} \begin{itemize} \item \ct{output.yaml} is the name of the YAML file being converted to FDS inputs. @@ -5670,11 +5655,11 @@ \subsection{Example Case: Soot Deposition from a Propane Flame} Note that the stoichiometric coefficient for soot ensures that the mass of soot produced is 0.0544 times the mass of fuel consumed. This example uses the lumped species formulation to minimize the number of scalar transport equations that need to be solved. Note that for soot to deposit it must be explicitly tracked by defining \ct{AEROSOL=T} on the \ct{SPEC} line. \begin{lstlisting} &SPEC ID = 'PROPANE' / - &SPEC ID = 'OXYGEN', LUMPED_COMPONENT_ONLY = T / - &SPEC ID = 'NITROGEN', LUMPED_COMPONENT_ONLY = T / - &SPEC ID = 'WATER VAPOR', LUMPED_COMPONENT_ONLY = T / - &SPEC ID = 'CARBON DIOXIDE', LUMPED_COMPONENT_ONLY = T / - &SPEC ID = 'SOOT', AEROSOL = T, MEAN_DIAMETER=1.E-6 / + &SPEC ID = 'OXYGEN', LUMPED_COMPONENT_ONLY = T / + &SPEC ID = 'NITROGEN', LUMPED_COMPONENT_ONLY = T / + &SPEC ID = 'WATER VAPOR', LUMPED_COMPONENT_ONLY = T / + &SPEC ID = 'CARBON DIOXIDE', LUMPED_COMPONENT_ONLY = T / + &SPEC ID = 'SOOT', AEROSOL = T, MEAN_DIAMETER=1.E-6 / \end{lstlisting} If Eq.~(\ref{eq:PROPANE_depo}) is properly balanced, you can directly use the stoichiometric coefficients of the primitive species to define the lumped species: @@ -5758,7 +5743,7 @@ \section{Aerosol Scrubbing} \section{Vapor Condensation} \label{info:condensation} -If a species with liquid properties, e.g., \ct{WATER VAPOR}, is defined with \ct{AEROSOL=T}, then FDS will predict condensation for that species. FDS creates a second species called \ct{ID_COND}. For example if the species is \ct{WATER VAPOR}, then the second species will be called \ct{WATER VAPOR_COND}. This second species will be an aerosol species that tracks the condensed phase. The particle diameter for the condensed vapor is given by \ct{MEAN_DIAMETER}, the condensed species specific heat will use the \ct{SPECIFIC_HEAT_LIQUID} values, and the particle density will use \ct{DENSITY_LIQUID} rather than \ct{DENSITY_SOLID}. The initial mass fraction of condensed phase can be defined with \ct{MASS_FRACTION_COND_0}. Radiative properties should be assigned using \ct{REAL_REFRACTIVE_INDEX} and \ct{COMPLEX_REFRACTIVE_INDEX} unless the species is either \ct{WATER VAPOR} or a predefined fuel species (these are the organic fuels listed in Table~\ref{tab:CFT} that have liquid properties predefined, see Table~\ref{tab:common_gas_species} or Table~\ref{tab:gas_species}). For example, the input below defines \ct{WATER VAPOR} as a condensable species wldlanith an initial vapor mass fraction of 0.1 and an initial condensate mass fraction of 0.05. +If a species with liquid properties, e.g., \ct{WATER VAPOR}, is defined with \ct{AEROSOL=T}, then FDS will predict condensation for that species. FDS creates a second species called \ct{ID_COND}. For example if the species is \ct{WATER VAPOR}, then the second species will be called \ct{WATER VAPOR_COND}. This second species will be an aerosol species that tracks the condensed phase. The particle diameter for the condensed vapor is given by \ct{MEAN_DIAMETER}, the condensed species specific heat will use the \ct{SPECIFIC_HEAT_LIQUID} values, and the particle density will use \ct{DENSITY_LIQUID} rather than \ct{DENSITY_SOLID}. The initial mass fraction of condensed phase can be defined with \ct{MASS_FRACTION_COND_0}. Radiative properties should be assigned using \ct{REAL_REFRACTIVE_INDEX} and \ct{COMPLEX_REFRACTIVE_INDEX} unless the species is either \ct{WATER VAPOR} or a predefined fuel species (these are the organic fuels listed in Table~\ref{tab:CFT} that have liquid properties predefined, see Table~\ref{tab:common_gas_species} or Table~\ref{tab:gas_species}). For example, the input below defines \linebreak[4]\ct{WATER VAPOR} as a condensable species wldlanith an initial vapor mass fraction of 0.1 and an initial condensate mass fraction of 0.05. The condensation routine requires the presence of nucleation sites to start the condensation process. If condensed gas is already present, the number of condensate particles is used. Otherwise, FDS assumes a background concentration of fine aerosols (pollen, bacterial spores, etc.). The default values is 10,000,000 nucleation sites per cubic meter. This value can be changed by setting \ct{NUCLEATION_SITES} on \ct{MISC}. \begin{lstlisting} @@ -5779,7 +5764,7 @@ \section{Basic Radiation Parameters: The \texorpdfstring{{\tt RADI}}{RADI} Namel \ct{RADI} is the namelist group that contains parameters related to the radiation solver. There can be only one \ct{RADI} line in the input file. -An important quantity in fire science is the fraction of the fire's heat release rate released in the form of thermal radiation, commonly referred to as the {\em radiative fraction}, symbolically denoted $\chi_{\rm r}$. It is a function of the fire size, flame temperature, and the chemical composition of the fuel and combustion products. The flame temperature, as opposed to the average cell temperature, is not reliably calculated in a large scale fire simulation because the flame sheet is not well-resolved on a relatively coarse numerical grid. Thus, the source term in the radiation transport equation (RTE), because of its $T^4$ dependence, cannot be reliably calculated. As a practical alternative, the parameter \ct{RADIATIVE_FRACTION} on the \ct{REAC} line allows you to set a lower bound on the fraction of the total energy due to combustion that is released in the form of thermal radiation, i.e. \ct{RADIATIVE_FRACTION} only applies to gas cells with combustion and not to gas in a hot upper layer where the cell temperature can reliably be used in the RTE. By default, the \ct{RADIATIVE_FRACTION} is set to a specific value that is based on the reaction's \ct{FUEL} for an LES calculation, and it is set to zero for DNS, in which case the amount of energy radiated by the fire is predicted rather than prescribed. Table~\ref{tab:chi_r} lists the default radiative fraction for some common pure fuels. Many of these values are based on measurements performed on relatively small flames by Tewarson~\cite{SFPE:Tewarson}. These values may change with increasing fire size; thus, the measurements cited by Beyler~\cite{Beyler2:SFPE} may be more appropriate for larger fires. If in doubt, select the value that is appropriate for your fire. There is no single value of radiative fraction for a given fuel. +An important quantity in fire science is the fraction of the fire's heat release rate released in the form of thermal radiation, commonly referred to as the {\em radiative fraction}, symbolically denoted $\chi_{\rm r}$. It is a function of the fire size, flame temperature, and the chemical composition of the fuel and combustion products. The flame temperature, as opposed to the average cell temperature, is not reliably calculated in a large scale fire simulation because the flame sheet is not well-resolved on a relatively coarse numerical grid. Thus, the source term in the radiation transport equation (RTE), because of its $T^4$ dependence, cannot be reliably calculated. As a practical alternative, the parameter \ct{RADIATIVE_FRACTION} on the \ct{REAC} line allows you to set a lower bound on the fraction of the total energy due to combustion that is released in the form of thermal radiation, i.e. \ct{RADIATIVE_FRACTION} only applies to gas cells with combustion and not to gas in a hot upper layer where the cell temperature can reliably be used in the RTE. By default, the \linebreak[4]\ct{RADIATIVE_FRACTION} is set to a specific value that is based on the reaction's \ct{FUEL} for an LES calculation, and it is set to zero for DNS, in which case the amount of energy radiated by the fire is predicted rather than prescribed. Table~\ref{tab:chi_r} lists the default radiative fraction for some common pure fuels. Many of these values are based on measurements performed on relatively small flames by Tewarson~\cite{SFPE:Tewarson}. These values may change with increasing fire size; thus, the measurements cited by Beyler~\cite{Beyler2:SFPE} may be more appropriate for larger fires. If in doubt, select the value that is appropriate for your fire. There is no single value of radiative fraction for a given fuel. \vspace{\baselineskip} @@ -5840,7 +5825,7 @@ \subsection{Radiation Option 2. Optically-Thin Limit; Specified Radiative Fracti The correction factor that is applied to the RTE source term in the region defined by Eq.~(\ref{clip}) by default is bound between \ct{C_MIN} and \ct{C_MAX} (default 0.1 and 100). You can change the default behavior of the correction as follows. First, you can force the RTE source term to be modified in all grid cells by changing the 1 in Eq.~(\ref{clip}) to -1 via \ct{QR_CLIP} on the \ct{RADI} line, in which case the solver will apply the radiative fraction to the entire domain, not just the cells where combustion occurs. This will essentially force the net radiative loss from the entire domain to obey the \ct{RADIATIVE_FRACTION}. Second, you can specify that the \ct{RADIATIVE_FRACTION} serves only as a {\em minimum} value by changing the lower limit of the correction factor, \ct{C_MIN}, from its default value of 0.1 to 1.0 on the \ct{RADI} line. This change recognizes the fact that a fire's radiative fraction might change over the course of a simulation, where it initially exhibits the specified \ct{RADIATIVE_FRACTION} but this might changes as the fire grows larger and engulfs a significant fraction of the compartment. -The time-varying correction factor can be output using a device with the \ct{QUANTITY} called \ct{'RTE SOURCE CORRECTION FACTOR'}. Since this is a global value, the position of the device does not matter. +The time-varying correction factor can be output using a device with the \ct{QUANTITY} called \linebreak[4]\ct{'RTE SOURCE CORRECTION FACTOR'}. Since this is a global value, the position of the device does not matter. \subsection[Radiation Option 4. Optically-Thick; Unspecified Radiative Fraction]{Radiation Option 4. Optically-Thick; Unspecified Radiative Fraction (DNS Default)} @@ -5850,7 +5835,7 @@ \subsection{Radiation Option 2. Optically-Thin Limit; Specified Radiative Fracti \section{Spatial and Temporal Resolution of the Radiation Transport Solver} \label{info:RADI_Resolution} -There are several ways to improve the spatial and temporal accuracy of the discrete radiation transport equation (RTE), but each typically increases the computation time. The spatial accuracy can be improved by increasing the number of angles from the default 100 with the integer parameter \ct{NUMBER_RADIATION_ANGLES}. A good way to determine if you need better spatial resolution is to add slice (\ct{SLCF}) files of the quantity \ct{'INTEGRATED INTENSITY'}. Typically, you see high values of this quantity near sources of heat, and these values decrease farther away. Ideally, you should see a somewhat smooth and circular pattern far from the heat source, but because of the finite number of solid angles along which the radiation intensity is tracked, you will see in the far field a star-like pattern that is not physical. If there are no important ``targets'' far from the heat source, this nonphysical pattern can be ignored, but if there are important targets, then increase the number of angles until you see a relatively smooth pattern over the region of interest. +There are several ways to improve the spatial and temporal accuracy of the discrete radiation transport equation (RTE), but each typically increases the computation time. The spatial accuracy can be improved by using the integer parameter \ct{NUMBER_RADIATION_ANGLES} to increase the number of angles from the default of 100. A good way to determine if you need better spatial resolution is to add slice (\ct{SLCF}) files of the quantity \ct{'INTEGRATED INTENSITY'}. Typically, you see high values of this quantity near sources of heat, and these values decrease farther away. Ideally, you should see a somewhat smooth and circular pattern far from the heat source, but because of the finite number of solid angles along which the radiation intensity is tracked, you will see in the far field a star-like pattern that is not physical. If there are no important ``targets'' far from the heat source, this nonphysical pattern can be ignored, but if there are important targets, then increase the number of angles until you see a relatively smooth pattern over the region of interest. The requirements for accurate angular resolution have been studied by Kim and Trouv\'{e} \cite{KimYJ_Trouve:FSJ2023}. They suggest the number of solid angles needed for accurate resolution (${\rm NRA}_{\rm critical}$) to a target at a separation distance, $H$, with emission source surface area, $S$, is given by \be @@ -5885,6 +5870,10 @@ \subsubsection{Path Length} For a given gas temperature and species composition, RadCal computes a single effective absorption coefficient that is independent of wavelength. To calculate this coefficient, a user-specified \ct{PATH_LENGTH} (m) is needed. Its default value is 0.1~m. The choice of \ct{PATH_LENGTH} can be based on the physical size of the fire, the compartment, or the overall computational domain, depending on the application. The default value has been chosen to capture accurately radiation heat transfer in and around the fire itself. A useful ``rule of thumb'' for this length scale is $4V/A$, where $V$ is the volume of the region of interest and $A$ is the encompassing surface area. This region might be the volume occupied by the fire itself or a flashed-over compartment. Alternatively, if the application involves calculating the heat flux to distant targets, a more appropriate \ct{PATH_LENGTH} might be the distance from the fire to the target. A sensitivity analysis should be done in any case to determine how the chosen \ct{PATH_LENGTH} affects the predicted values. +\subsubsection{Radiation temperature} + +The effective absorption coefficient depends on two terms: the absorption (or transmission) of incident radiation through a gas layer, and the emission of the gas layer itself. The calculation of the transmission term assumes that the spectral distribution of the incident (incoming) radiation has the form of Planck function, which depends on the assumed temperature of the radiation source. In RadCal, this temperature is assigned to a {\em wall temperature}. As the temperature of the radiation source, incident in any given location of the domain, cannot be known, it must be assumed. This assumed radiation temperature can be specified using \ct{RADTMP} input. Normally, it should correspond to the effective radiation temperature of flames. The default value is 900~\unit{\degreeCelsius}. + \subsubsection{Fuel Species} \label{info:RadCal_fuelspecies} @@ -5912,11 +5901,11 @@ \section{Radiative Absorption and Scattering by Particles} \label{info:RADI_Two_Phase} -The absorption and scattering of thermal radiation by Lagrangian particles is included in the radiation transport equation. The radiative properties can be given by specifying the components of the material refractive index on the corresponding \ct{PART} line, using keywords \ct{REAL_REFRACTIVE_INDEX} and \ct{COMPLEX_REFRACTIVE_INDEX}. Alternatively, wavelength dependent values of these two quantities can be tabulated in a \ct{TABLE} and called using the \ct{RADIATIVE_PROPERTY_TABLE}. More details can be found in Sec.~\ref{radiative_part_props}. +The absorption and scattering of thermal radiation by Lagrangian particles is included in the radiation transport equation. The radiative properties can be given by specifying the components of the material refractive index on the corresponding \ct{PART} line, using keywords \ct{REAL_REFRACTIVE_INDEX} and \linebreak[4]\ct{COMPLEX_REFRACTIVE_INDEX}. Alternatively, wavelength dependent values of these two quantities can be tabulated in a \ct{TABLE} and called using the \ct{RADIATIVE_PROPERTY_TABLE}. More details can be found in Sec.~\ref{radiative_part_props}. The radiative properties of the water and fuel particles (droplets) are determined automatically. For fuel, the properties of heptane are assumed. The heptane values can be overridden by specifying them on the \ct{PART} line. -Other parameters affecting the computations of particle-radiation interaction are listed here. \ct{RADTMP} is the assumed radiative source temperature. It is used in the spectral weighting during the computation of the mean scattering and absorption cross sections. The default is 900~\unit{\degreeCelsius}. \ct{NMIEANG} is the number of angles in the numerical integration of the Mie-phase function. Increasing \ct{NMIEANG} improves the accuracy of the radiative properties of water droplets. The cost of the better accuracy is seen in the initialization phase, not during the actual simulation. The default value for \ct{NMIEANG} is 15. For each class of particles, the Mie coefficients are calculated for a wide range of droplet diameters to ensure that the all possible runtime situations can be covered. To speed up the initialization phase, the range of diameters can be limited by parameters \ct{MIE_MINIMUM_DIAMETER} and \ct{MIE_MAXIMUM_DIAMETER}. Also, the size of the Mie coefficient tables can be specified using \ct{MIE_NDG} parameter. +Other parameters affecting the computations of particle-radiation interaction are listed here. \ct{RADTMP} is the assumed radiative source temperature. It is used in the spectral weighting during the computation of the mean scattering and absorption cross sections. The default is 900~\unit{\degreeCelsius}. \ct{NMIEANG} is the number of angles in the numerical integration of the Mie-phase function. Increasing \ct{NMIEANG} improves the accuracy of the radiative properties of water droplets. The cost of the better accuracy is seen in the initialization phase, not during the actual simulation. The default value for \ct{NMIEANG} is 15. For each class of particles, the Mie coefficients are calculated for a wide range of droplet diameters to ensure that the all possible runtime situations can be covered. To speed up the initialization phase, the range of diameters can be limited by parameters \linebreak[4]\ct{MIE_MINIMUM_DIAMETER} and \ct{MIE_MAXIMUM_DIAMETER}. Also, the size of the Mie coefficient tables can be specified using \ct{MIE_NDG} parameter. @@ -6030,7 +6019,7 @@ \subsection{Thermal Properties} The properties you need to supply for a liquid droplet depend on whether or not the \ct{SPEC_ID} is listed in Appendix~\ref{info:predefined_species}, and if the column labeled ``Liquid'' is checked with a ``Y'', meaning that its liquid properties are known. The following sub-sections provide instructions on what to do in various instances. Note that the \ct{INITIAL_TEMPERATURE} (\unit{\degreeCelsius}) of the liquid droplets is specified on the \ct{PART} line. Its default value is the overall ambient temperature of the simulation, \ct{TMPA}, from the \ct{MISC} line. -Heat transfer and evaporation from liquid droplets to the gas uses correlations for the heat and mass transfer coefficients. These can instead be respectively specified using \linebreak[4]\ct{HEAT_TRANSFER_COEFFICIENT_GAS} and \ct{MASS_TRANSFER_COEFFICIENT} on the \ct{PART} line. +Heat transfer and evaporation from liquid droplets to the gas uses correlations for the heat and mass transfer coefficients. Fixed values for the coefficients can be respectively specified on the \ct{PART} line using \ct{HEAT_TRANSFER_COEFFICIENT_GAS} and \ct{MASS_TRANSFER_COEFFICIENT}. \subsubsection{Known Liquid/Gas Species} @@ -6118,14 +6107,14 @@ \subsubsection{Fuel Liquid/Gas Species} \subsection{Radiative Properties} \label{radiative_part_props} -The radiative properties of water and fuel droplets are determined automatically. For fuel, the properties of heptane are assumed. For other types of particles, the radiative properties can be given by specifying the components of the material refractive index on the corresponding \ct{PART} line, using keywords \ct{REAL_REFRACTIVE_INDEX} and \ct{COMPLEX_REFRACTIVE_INDEX}. Alternatively, wavelength dependent values of these two quantities can be specified using a spectral property table (\ct{TABL}) whose \ct{ID} is indicated on the \ct{PART} line via \ct{RADIATIVE_PROPERTY_TABLE}. Each row of a spectral property table contains three real numbers input using \ct{TABLE_DATA}: wavelength ($\mu$m), and the real and complex components of the refractive index. The real part of the refractive index should be a positive number. If it is greater than 10, the particles are treated as perfectly reflecting spheres. The complex part should be a non-negative number. Values less than $10^{-6}$ are treated as non-absorbing. Below is an example of the use of the spectral property table, listing the properties at wavelengths 1, 5 and 10 $\mu$m. +The radiative properties of water and fuel droplets are determined automatically. For fuel, the properties of heptane are assumed. For other types of particles, the radiative properties can be given by specifying the components of the material refractive index on the corresponding \ct{PART} line, using keywords \linebreak[4]\ct{REAL_REFRACTIVE_INDEX} and \ct{COMPLEX_REFRACTIVE_INDEX}. Alternatively, wavelength dependent values of these two quantities can be specified using a spectral property table (\ct{TABL}) whose \ct{ID} is indicated on the \ct{PART} line via \ct{RADIATIVE_PROPERTY_TABLE}. Each row of a spectral property table contains three real numbers input using \ct{TABLE_DATA}: wavelength ($\mu$m), and the real and complex components of the refractive index. The real part of the refractive index should be a positive number. If it is greater than 10, the particles are treated as perfectly reflecting spheres. The complex part should be a non-negative number. Values less than $10^{-6}$ are treated as non-absorbing. Below is an example of the use of the spectral property table, listing the properties at wavelengths 1, 5 and 10 $\mu$m. \begin{lstlisting} &PART ID='my particles',..., RADIATIVE_PROPERTY_TABLE='radtab' / &TABL ID='radtab', TABLE_DATA= 1.0,1.33,0.0001 / &TABL ID='radtab', TABLE_DATA= 5.0,1.33,0.002 / &TABL ID='radtab', TABLE_DATA=10.0,1.33,0.001 / \end{lstlisting} -For calculating the absorption of thermal radiation by particles, FDS uses a running average of particle temperature and density. The \ct{RUNNING_AVERAGE_FACTOR} is set on the \ct{PART} line, and its default value is 0.95 for liquid droplets and 0 for solid particles. The value of 0 indicates that no running average is used. Similarly, the parameter \ct{RUNNING_AVERAGE_FACTOR_WALL}, also set on the \ct{PART} line, controls the running average of droplet or particle mass on solid surfaces. Its defaults are the same as for \ct{RUNNING_AVERAGE_FACTOR}. +For calculating the absorption of thermal radiation by particles, FDS uses a running average of particle temperature and density. The \ct{RUNNING_AVERAGE_FACTOR} is set on the \ct{PART} line, and its default value is 0.5 for liquid droplets and 0 for solid particles. The value of 0 indicates that no running average is used. Similarly, the parameter \ct{RUNNING_AVERAGE_FACTOR_WALL}, also set on the \ct{PART} line, controls the running average of droplet or particle mass on solid surfaces. Its default value is 0.95 for liquid droplets and 0 for solid particles. \subsection{Size Distribution} @@ -6167,7 +6156,7 @@ \subsection{Size Distribution} \end{lstlisting} Note that the \ct{RAMP} variable \ct{T} indicates the diameter and is given in micrometers. The fourth plot in Fig.~\ref{droplet_distributions_fig} is an example of where the CNF is specified and the CVF is calculated from it. It is essentially the reverse of what is shown in the first plot, where the CVF is specified and the CNF is calculated from it. -As droplets are created in the simulation, their diameters are randomly chosen based on the given distribution. To avoid very small particle weights, the built-in distributions are clipped at the cumulative fractions of \ct{CNF_CUTOFF} and (1 - \ct{CNF_CUTOFF}). Note that \ct{CNF_CUTOFF} is set on the \ct{MISC} line. The default value of \ct{CNF_CUTOFF} is 0.005. You can prevent excessively large droplets from being chosen by specifying a \ct{MAXIMUM_DIAMETER}, which is assigned an extremely large value by default. The lower end of the size distribution is set using \ct{MINIMUM_DIAMETER} whose default value is 0.005 times the value of \ct{DIAMETER}. If a \ct{CNF_RAMP_ID} is given, then the default value of \ct{MINIMUM_DIAMETER} is set as the diameter of the ramp corresponding to \ct{CNF_CUTOFF}. Note that an extremely small \ct{MINIMUM_DIAMETER} might result in numerical issues if the weighted droplet mass of the \ct{MINIMUM_DIAMETER} approaches the numerical precision of the gas mass in a cell. A warning will be written if there is a very low value (<0.01~$\mu$m) of \ct{MINIMUM_DIAMETER}. Droplets are removed when their diameter decreases below \ct{KILL_DIAMETER}. For a \ct{MONODISPERSE} distribution, \ct{KILL_DIAMETER} is set to 0.5~\% of the mass of the droplet at its initial \ct{DIAMETER}. Otherwise droplets are removed when the droplet mass is 0.5~\% of the mass of the \ct{MINIMUM_DIAMETER}. The droplet diameter range is divided into a series of bins\footnote{By default, the range of particle sizes is divided into six bins, and the sampled particles are divided among these bins. This ensures that a reasonable number of particles are assigned to the entire spectrum of sizes. To change the default number of bins, set \ct{N_STRATA} on the \ct{PART} line.}. +As droplets are created in the simulation, their diameters are randomly chosen based on the given distribution. To avoid very small particle weights, the built-in distributions are clipped at the cumulative fractions of \ct{CNF_CUTOFF} and (1 - \ct{CNF_CUTOFF}). Note that \ct{CNF_CUTOFF} is set on the \ct{MISC} line. The default value of \ct{CNF_CUTOFF} is 0.005. You can prevent excessively large droplets from being chosen by specifying a \ct{MAXIMUM_DIAMETER}, which is assigned an extremely large value by default. The lower end of the size distribution is set using \ct{MINIMUM_DIAMETER} whose default value is 0.005 times the value of \ct{DIAMETER}. If a \ct{CNF_RAMP_ID} is given, then the default value of \ct{MINIMUM_DIAMETER} is set as the diameter of the ramp corresponding to \ct{CNF_CUTOFF}. Note that an extremely small \ct{MINIMUM_DIAMETER} might result in numerical issues if the weighted droplet mass of the \ct{MINIMUM_DIAMETER} approaches the numerical precision of the gas mass in a cell. A warning will be written if there is a very low value (<0.01~$\mu$m) of \ct{MINIMUM_DIAMETER}. Droplets are removed when their diameter decreases below \ct{KILL_DIAMETER}. For a \ct{MONODISPERSE} distribution, \ct{KILL_DIAMETER} is set to 0.5~\% of the mass of the droplet at its initial \ct{DIAMETER}. Otherwise droplets are removed when the droplet mass is 0.5~\% of the mass of the \linebreak[4]\ct{MINIMUM_DIAMETER}. The droplet diameter range is divided into a series of bins\footnote{By default, the range of particle sizes is divided into six bins, and the sampled particles are divided among these bins. This ensures that a reasonable number of particles are assigned to the entire spectrum of sizes. To change the default number of bins, set \ct{N_STRATA} on the \ct{PART} line.}. To prevent FDS from generating a distribution of droplets altogether, set \ct{MONODISPERSE} to \ct{T} on the \ct{PART} line, in which case every droplet will be assigned the same \ct{DIAMETER}. @@ -6183,14 +6172,15 @@ \subsection{Primary Breakup} Using \ct{DENSE_VOLUME_FRACTION} for wake reduction may not provide enough drag reduction for a fire hose stream. To accommodate this scenario, FDS introduces a ``primary breakup'' method. If \ct{PRIMARY_} \ct{BREAKUP_LENGTH} is set on the \ct{PART} line, then until a particle travels that distance its drag coefficient is multiplied by \ct{PRIMARY_BREAKUP_DRAG_REDUCTION_FACTOR}, also set on \ct{PART}, and typically a small value, even zero. In this way, the particle stream behaves like a hose stream prior to instability. The parameters are empirical and the model should be tuned for a specific hose nozzle, see \cite{Theobald:1981}, for example. \begin{lstlisting} - &PART ID='hose stream',..., PRIMARY_BREAKUP_LENGTH=10, PRIMARY_BREAKUP_DRAG_REDUCTION_FACTOR=0 / + &PART ID='hose stream',..., PRIMARY_BREAKUP_LENGTH=10, + PRIMARY_BREAKUP_DRAG_REDUCTION_FACTOR=0 / \end{lstlisting} \subsection{Secondary Breakup} \label{info:secondary_breakup} If \ct{BREAKUP=T} is set on the \ct{PART} line, particles may undergo secondary breakup. -In this case you should also specify the \ct{SURFACE_TENSION} (N/m) of the liquid and the resulting ratio of the median volumetric diameter, $D_{\rm v,0.5}$, \ct{BREAKUP_RATIO}. Its default is 3/7. Optionally, a new post-breakup distribution can be specified using \ct{BREAKUP_DISTRIBUTION}, \ct{BREAKUP_GAMMA_D}, and \ct{BREAKUP_SIGMA_D} or \ct{BREAKUP_CNF_RAMP_ID}. These parameters are defined the same as those in sec.~\ref{info:particle_size} but instead apply after breakup. +In this case you should also specify the \ct{SURFACE_TENSION} (N/m) of the liquid and the resulting ratio of the median volumetric diameter, $D_{\rm v,0.5}$, \ct{BREAKUP_RATIO}. Its default is 3/7. Optionally, a new post-breakup distribution can be specified using \ct{BREAKUP_CNF_RAMP_ID} or \ct{BREAKUP_DISTRIBUTION}, \ct{BREAKUP_GAMMA_D}, and \linebreak[4]\ct{BREAKUP_SIGMA_D}. These parameters are defined the same as those in sec.~\ref{info:particle_size} but instead apply after breakup. \subsection{Warning Messages Related to Droplets} @@ -6203,8 +6193,6 @@ \subsection{Warning Messages Related to Droplets} This means that during the temperature update of a particular grid cell in Mesh~5, the droplet whose index is 3245 caused the cell gas temperature (\ct{TMP_G}) to change too rapidly. If you only see a few of these messages, it is not a problem given how many droplets and time steps there are. However, if you see these messages persistently, you might want to increase the \ct{PARTICLES_PER_SECOND} to reduce the likelihood that a single droplet will make such a dramatic change in a single time step. -\newpage - \section{Solid Particles} \label{info:PART_SURF} @@ -6221,7 +6209,8 @@ \subsection{Basic Geometry and Boundary Conditions} &PART ID='spheres', SURF_ID='HOT', STATIC=T, PROP_ID='ball' / &SURF ID='HOT', TMP_FRONT=500., RADIUS=0.005, GEOMETRY='SPHERICAL' / &PROP ID='ball', SMOKEVIEW_ID='SPHERE', SMOKEVIEW_PARAMETERS(1)='D=0.01' / - &INIT PART_ID='spheres', XB=0.25,0.75,0.25,0.75,0.25,0.75, N_PARTICLES=10 / + &INIT PART_ID='spheres', XB=0.25,0.75,0.25,0.75,0.25,0.75, + N_PARTICLES=10 / \end{lstlisting} The \ct{PART} line establishes the class of particles. In this case, the presence of a \ct{SURF_ID} indicates that the particles are solids with the properties given by the \ct{SURF} line \ct{'HOT'}. \ct{STATIC} is a logical parameter whose default is \ct{F} that indicates if the particles are stationary. The \ct{PROP_ID} references a \ct{PROP} (property) line that just tells Smokeview that the particles are to be drawn as spheres of diameter 0.01~m. See Sec.~\ref{info:SMOKEVIEW_PART} for details and options. The \ct{INIT} line randomly fills the given volume with 10 of these hot spheres. See Sec.~\ref{info:initial_droplets} for details. @@ -6332,12 +6321,12 @@ \subsection{Gas Generating Particles} &PART ID='tube', SAMPLING_FACTOR=1, SURF_ID='tube bc', STATIC=T / &PART ID='ball', SAMPLING_FACTOR=1, SURF_ID='ball bc', STATIC=T / - &SURF ID='plate bc', THICKNESS=0.001, LENGTH=0.05, WIDTH=0.05, SPEC_ID(1)='ARGON', - MASS_FLUX(1)=0.1, TAU_MF(1)=0.001 / + &SURF ID='plate bc', THICKNESS=0.001, LENGTH=0.05, WIDTH=0.05, + SPEC_ID(1)='ARGON', MASS_FLUX(1)=0.1, TAU_MF(1)=0.001 / &SURF ID='tube bc', GEOMETRY='CYLINDRICAL', LENGTH=0.05, RADIUS=0.01, SPEC_ID(1)='SULFUR DIOXIDE', MASS_FLUX(1)=0.1, TAU_MF(1)=0.001 / - &SURF ID='ball bc', GEOMETRY='SPHERICAL', RADIUS=0.01, SPEC_ID(1)='HELIUM', - MASS_FLUX(1)=0.1, TAU_MF(1)=0.001 / + &SURF ID='ball bc', GEOMETRY='SPHERICAL', RADIUS=0.01, + SPEC_ID(1)='HELIUM', MASS_FLUX(1)=0.1, TAU_MF(1)=0.001 / \end{lstlisting} In this case, there is no calculation of heat conduction in depth. Only the surface area is important. For the plate, the surface area is twice the length times the width. For the cylinder, the area is twice the radius times $\pi$ times the length. For the sphere, the area is $4\pi$ times the radius squared. Figure~\ref{surf_mass_part_specified_fig} displays the output of the test case called \ct{surf_mass_part_specified.fds}, demonstrating that the production rate of the gases is as expected. @@ -6359,12 +6348,13 @@ \subsection{Porous Media} \begin{lstlisting} &SURF ID='LIGAMENT', MATL_ID='ALUMINUM ALLOY', THICKNESS=7.3E-5, GEOMETRY='CYLINDRICAL', HEAT_TRANSFER_COEFFICIENT=10. / - &MATL ID='ALUMINUM ALLOY', DENSITY=2690., CONDUCTIVITY=218., SPECIFIC_HEAT=0.9 / + &MATL ID='ALUMINUM ALLOY', DENSITY=2690., CONDUCTIVITY=218., + SPECIFIC_HEAT=0.9 / &PART ID='FOAM', DRAG_LAW='POROUS MEDIA', SURF_ID='LIGAMENT', POROUS_VOLUME_FRACTION=0.12, STATIC=T, DRAG_COEFFICIENT=0.1,0.1,0.1, PERMEABILITY=1.0E-7,1.E-7,1.E-7 / - &INIT XB=1.010,1.095,0.0,0.5,0.0,0.5, N_PARTICLES_PER_CELL=1, CELL_CENTERED=T, - PART_ID='FOAM' / + &INIT XB=1.010,1.095,0.0,0.5,0.0,0.5, N_PARTICLES_PER_CELL=1, + CELL_CENTERED=T, PART_ID='FOAM' / \end{lstlisting} The basic geometry of the foam ligaments is defined with the \ct{SURF} line. It is assumed that the ligaments are made of an aluminum alloy whose properties are given on the \ct{MATL} line. The radius of the assumed cylindrical ligament is indicated by the \ct{THICKNESS}. Note that the \ct{LENGTH} of the cylinder which is normally required on the \ct{SURF} line is computed automatically so that the volume fraction of the grid cell occupied by the foam, specified by \ct{POROUS_VOLUME_FRACTION} on the \ct{PART} line, is achieved. In a sense, the foam is modeled by a long cylinder chopped up into small pieces and represented by a single particle in each grid cell. The \ct{SURF} inputs of \ct{POROUS_VOLUME_FRACTION} and \ct{THICKNESS} do not directly effect the drag calculation. They are used to define the surface area for computing heat transfer between the gas and the porous media. @@ -6428,7 +6418,8 @@ \subsection{Electrical Cables} GEOMETRY='CYLINDRICAL' / &PART ID='Cable Segment', SURF_ID='cylinder', ORIENTATION=0,0,1, STATIC=T / - &INIT ID='Cable', XB=0.01,0.01,0.,0.,0.,0., N_PARTICLES=1, PART_ID='Cable Segment' / + &INIT ID='Cable', XB=0.01,0.01,0.,0.,0.,0., N_PARTICLES=1, + PART_ID='Cable Segment' / &DEVC ID='Cable Temp', INIT_ID='Cable', QUANTITY='INSIDE WALL TEMPERATURE', DEPTH=0.0015 / \end{lstlisting} @@ -6488,7 +6479,7 @@ \subsubsection{Particles specified using an ember generation height} If you specify an \ct{EMBER_GENERATION_HEIGHT} (m), particles are assumed to represent embers (or firebrands) and are only generated at surfaces that are actively burning (non-zero fuel mass flux). The height parameter dictates the vertical offset distance from the burning surface at which particles are produced. This is important in cases where the vertical fuel structure may not be resolved, such as level set fire spread (Sec.~\ref{info:level_set}), but the height of ember production plays a role in the lofting potential. If a single number is provided for the \ct{EMBER_GENERATION_HEIGHT}, all particles are generated at that offset distance. If two numbers are provided, particles are randomly generated within the specified offset range, following a uniform distribution. For example, if \ct{EMBER_GENERATION_HEIGHT=0.0,1.0} then particles will be produced anywhere up to 1.0~m above the burning surface. -The rate of ember production can then be set using the method described previously. A number flux can be set using \ct{DT_INSERT} and \ct{NPPC}, and these particles can be weighted to match a specified \ct{PARTICLE_MASS_FLUX}. It is recommended to set \ct{VEL_PART=0.0} when modeling ember generation in this way, so that particles start from rest and are naturally lofted by the surrounding flow. +The rate of ember production can then be set using the method described previously. A number flux can be set using \ct{DT_INSERT} and \ct{NPPC}, and these particles can be weighted to match a specified \linebreak[4]\ct{PARTICLE_MASS_FLUX}. It is recommended to set \ct{VEL_PART=0.0} when modeling ember generation in this way, so that particles start from rest and are naturally lofted by the surrounding flow. \subsubsection{Particles specified using a surface density} @@ -6502,21 +6493,22 @@ \subsubsection{Particles specified during pyrolysis} \subsection{Particles or Droplets Introduced at a Sprinkler or Nozzle} \label{info:sprinkler_droplets} -A sprinkler or nozzle is added to the simulation using a \ct{PROP} line to describe the features of the device and a \ct{DEVC} line to position and orient the device within the computational domain. \ct{PARTICLES_PER_SECOND} is the number of droplets inserted every second per active sprinkler or nozzle (Default 5000). It is listed on the \ct{PROP} line that includes other properties of the sprinkler or nozzle. Note that this parameter only affects sprinklers and nozzles. Changing this parameter does {\em not} change the flow rate, but rather the number of droplets used to represent the flow. In some simulations, it is a good idea to increase the \ct{PARTICLES_PER_SECOND} beyond its default so that the particle/droplet mass is distributed more uniformly inside the domain. If this parameter is too small, it can lead to a non-physical evaporation pattern, sometimes even to the point of causing a numerical instability. If you encounter a numerical instability shortly after the activation of a sprinkler or nozzle, consider increasing \ct{PARTICLES_PER_SECOND} to produce a smoother evaporation pattern that is more realistic. Keep in mind that for a real sprinkler or nozzle, there are many more droplets created per second than the number that can be simulated. +A sprinkler or nozzle is added to the simulation using a \ct{PROP} line to describe the features of the device and a \ct{DEVC} line to position and orient the device within the computational domain. \ct{PARTICLES_PER_SECOND} is the number of droplets inserted every second per active sprinkler or nozzle (Default 5000). It is listed on the \ct{PROP} line that includes other properties of the sprinkler or nozzle. Note that this parameter only affects sprinklers and nozzles. Changing this parameter does {\em not} change the flow rate, but rather the number of droplets used to represent the flow. In some simulations, it is a good idea to increase the \linebreak[4]\ct{PARTICLES_PER_SECOND} beyond its default so that the particle/droplet mass is distributed more uniformly inside the domain. If this parameter is too small, it can lead to a non-physical evaporation pattern, sometimes even to the point of causing a numerical instability. If you encounter a numerical instability shortly after the activation of a sprinkler or nozzle, consider increasing \ct{PARTICLES_PER_SECOND} to produce a smoother evaporation pattern that is more realistic. Keep in mind that for a real sprinkler or nozzle, there are many more droplets created per second than the number that can be simulated. -The \ct{PARTICLE_VELOCITY} specified on the \ct{PROP} line indicates the initial velocity of the droplets/particles. If this value is relatively large, FDS computes the trajectory of the droplet/particle by taking sub-steps of the gas phase time step to ensure that the droplet/particle does not traverse more than a single grid cell within a sub-time step. A stricter limit on the time step is given by the parameter \ct{PARTICLE_CFL} on the \ct{MISC} line which is set to \ct{F} by default (see Section \ref{info:PART_Stability}). If \ct{T} the gas phase time step is limited by the particle CFL. Normally, it is not necessary to restrict the gas phase time step to account for fast droplets/particles---the sub-time stepping is usually adequate. +The \ct{PARTICLE_VELOCITY} specified on the \ct{PROP} line indicates the initial velocity of the \linebreak[4]droplets/particles. If this value is relatively large, FDS computes the trajectory of the droplet/particle by taking sub-steps of the gas phase time step to ensure that the droplet/particle does not traverse more than a single grid cell within a sub-time step. A stricter limit on the time step is given by the parameter \ct{PARTICLE_CFL} on the \ct{MISC} line which is set to \ct{F} by default (see Section \ref{info:PART_Stability}). If \ct{T} the gas phase time step is limited by the particle CFL. Normally, it is not necessary to restrict the gas phase time step to account for fast droplets/particles---the sub-time stepping is usually adequate. \subsection{Particles or Droplets Introduced within a Volume} \label{info:initial_droplets} -Sometimes it is convenient to introduce Lagrangian particles within a particular region of the domain. To do this, use an \ct{INIT} line which contains the \ct{PART_ID} for the type of particle to be inserted. Particles specified via an \ct{INIT} line can represent a number of different kinds of subgrid-scale objects. The particles can be massless tracers or they can be solid or liquid particles with mass. If not massless, specify \ct{MASS_PER_VOLUME} in units of \unit{kg/m^3}. Do not confuse this parameter with \ct{DENSITY}, explained in the next section. For example, water has a \ct{DENSITY} of 1000~\unit{kg/m^3}, whereas a liter of water broken up into droplets and spread over a cubic meter has a \ct{MASS_PER_VOLUME} of 1~\unit{kg/m^3}. The number of Lagrangian particles inserted is controlled by the parameter \ct{N_PARTICLES}. +Sometimes it is convenient to introduce Lagrangian particles within a particular region of the domain. To do this, use an \ct{INIT} line which contains the \ct{PART_ID} for the type of particle to be inserted. Particles specified via an \ct{INIT} line can represent a number of different kinds of subgrid-scale objects. The particles can be massless tracers or they can be solid or liquid particles with mass. If not massless, specify \linebreak[4]\ct{MASS_PER_VOLUME} in units of \unit{kg/m^3}. Do not confuse this parameter with \ct{DENSITY}, explained in the next section. For example, water has a \ct{DENSITY} of 1000~\unit{kg/m^3}, whereas a liter of water broken up into droplets and spread over a cubic meter has a \ct{MASS_PER_VOLUME} of 1~\unit{kg/m^3}. The number of Lagrangian particles inserted is controlled by the parameter \ct{N_PARTICLES}. \subsubsection{Randomly Distributed Particles within a Specified Volume} The parameter \ct{N_PARTICLES} on the \ct{INIT} line indicates the number of particles to insert within a specified region of the domain. This region can take on a number of shapes, depending on the parameter \ct{SHAPE}: \ct{'BLOCK'} (default), \ct{'CYLINDER'}, \ct{'CONE'}, \ct{'LINE'}, \ct{'RING'}. For \ct{'BLOCK'}, \ct{'CONE'}, and \ct{'RING'} the particle positions are randomly distributed by default. For \ct{'RING'} you can position the particles uniformly by setting \ct{UNIFORM=T} on the \ct{INIT} line. By default, the region is a rectangular \ct{'BLOCK'} designated with the real sextuplet \ct{XB}. The format for \ct{XB} is the same as that used on the \ct{OBST} line. \begin{lstlisting} - &INIT PART_ID='my particles', XB=..., N_PARTICLES=..., MASS_PER_VOLUME=... / + &INIT PART_ID='my particles', XB=..., N_PARTICLES=..., + MASS_PER_VOLUME=... / \end{lstlisting} Note that the volume of the specified region is calculated according to the \ct{SHAPE} dimensions, regardless of whether there are solid obstructions within this region. Note also that in most applications, the number of particles, \ct{N_PARTICLES}, is somewhat arbitrary but should be chosen to provide at least a few particles per grid cell. FDS will then automatically assign a weighting factor to each particle to ensure that the \ct{MASS_PER_VOLUME} is achieved. In some applications, on the other hand, it may be important to specify the number of particles. For example, if using particles to model the burning of electrical cables, you may want to specify how many cables are actually burning. The \ct{MASS_PER_VOLUME} can be ramped up and down in time using the ramp function \ct{RAMP_PART} on the \ct{INIT} line. @@ -6539,9 +6531,9 @@ \subsubsection{Randomly Distributed Particles within a Specified Volume} CELL_CENTERED=T, MASS_PER_VOLUME=2.0 / \end{lstlisting} -Note that in this example, exactly one particle is specified per grid cell, positioned exactly in the center of the cell. The number of actual pine needles this single particle represents depends on the specified \ct{MASS_PER_VOLUME} and the mass of an individual cylindrical particle. That information would be provided by the \ct{SURF} line \ct{'needles'}. +Note that in this example, exactly one particle is specified per grid cell, positioned exactly in the center of the cell. The number of actual pine needles this single particle represents depends on the specified \linebreak[4]\ct{MASS_PER_VOLUME} and the mass of an individual cylindrical particle. That information would be provided by the \ct{SURF} line \ct{'needles'}. -Additionally, for \ct{'CONE'} and \ct{'CYLINDER'} shapes it is possible to specify an \ct{INNER_RADIUS}. This will remove a concentric volume with the specified inner radius, leaving a conical or cylindrical shell. This can be useful if a tree crown has foliage concentrated toward the exterior of the volume. Note that the \ct{MASS_PER_VOLUME} will be applied only to the occupied volume of the shell, thus the total mass of the tree crown will decrease when specifying an \ct{INNER_RADIUS} for a fixed \ct{MASS_PER_VOLUME}. Examples of different crown geometries can be found in the \ct{tree_shapes.fds} verification case in the \ct{fds/Verification/WUI/} directory. +Additionally, for \ct{'CONE'} and \ct{'CYLINDER'} shapes it is possible to specify an \ct{INNER_RADIUS}. This will remove a concentric volume with the specified inner radius, leaving a conical or cylindrical shell. This can be useful if a tree crown has foliage concentrated toward the exterior of the volume. Note that the \linebreak[4]\ct{MASS_PER_VOLUME} will be applied only to the occupied volume of the shell, thus the total mass of the tree crown will decrease when specifying an \ct{INNER_RADIUS} for a fixed \ct{MASS_PER_VOLUME}. Examples of different crown geometries can be found in the \ct{tree_shapes.fds} verification case in the \ct{fds/Verification/WUI/} directory. \subsubsection{Specifying a Fixed Number of Particles per Grid Cell} @@ -6566,7 +6558,7 @@ \subsubsection{Single Particle Insertion} &INIT N_PARTICLES=1, XYZ=..., UVW=..., DIAMETER=200., DT_INSERT=0.05, PART_ID='drops', DEVC_ID='nozzle' / \end{lstlisting} -Note that the \ct{DIAMETER} ($\mu$m) on the \ct{INIT} line is only valid for liquid droplets. It over-rides the \ct{DIAMETER} on the \ct{PART} line labeled \ct{'drops'}. A simple test case that demonstrates this functionality is called \ct{bucket_test_3}, in which water droplets are launched in different directions from a common point. Their size, velocity, insertion frequency, and mass flux are varied, and a check is made that water mass is conserved (see Fig.~\ref{bucket_test_3_fig}). +Note that the \ct{DIAMETER} ($\mu$m) on the \ct{INIT} line is only valid for liquid droplets. It over-rides the \ct{DIAMETER} on the \ct{PART} line labeled \ct{'drops'}. A simple test case that demonstrates this functionality is called \linebreak[4]\ct{bucket_test_3}, in which water droplets are launched in different directions from a common point. Their size, velocity, insertion frequency, and mass flux are varied, and a check is made that water mass is conserved (see Fig.~\ref{bucket_test_3_fig}). \begin{figure}[ht] \centering @@ -6577,7 +6569,7 @@ \subsubsection{Single Particle Insertion} \subsubsection{Periodic Insertion of Particles within a Specified Volume} -If you want to introduce particles within a given region periodically in time and not just initially, set \ct{DT_INSERT} on the \ct{INIT} line to a positive value indicating the time increment (s) for insertion. The parameter \ct{N_PARTICLES} now indicates the number of droplets/particles inserted every \ct{DT_INSERT} seconds. If the droplets/particles have mass, use \ct{MASS_PER_TIME} (kg/s) instead of \ct{MASS_PER_VOLUME} to indicate how much mass is to be introduced per second. This parameter can be ramped up and down in time using the ramp function \ct{RAMP_PART} on the \ct{INIT} line. +If you want to introduce particles within a given region periodically in time and not just initially, set \linebreak[4]\ct{DT_INSERT} on the \ct{INIT} line to a positive value indicating the time increment (s) for insertion. The parameter \ct{N_PARTICLES} now indicates the number of droplets/particles inserted every \ct{DT_INSERT} seconds. If the droplets/particles have mass, use \ct{MASS_PER_TIME} (kg/s) instead of \ct{MASS_PER_VOLUME} to indicate how much mass is to be introduced per second. This parameter can be ramped up and down in time using the ramp function \ct{RAMP_PART} on the \ct{INIT} line. If you want to delay the insertion of droplets, you can use either a \ct{DEVC_ID} or a \ct{CTRL_ID} on the \ct{INIT} line to name the controlling device. See Sec.~\ref{info:basic_control} for more information on controlling devices. @@ -6587,7 +6579,7 @@ \subsubsection{Controlled Particle Movement} Particles can either be static, massless tracers (go with the flow), massive droplets or thermally thick solids (experience drag), or have its position controlled by a \ct{PATH_RAMP}. A scenario where this might be useful is when you have a heat or mass source that changes position in time. Or, you might want a \ct{DEVC} measurement location to change with time; the \ct{DEVC} can be linked to a particle through an \ct{INIT} line with a \ct{PATH_RAMP}, as we will discuss next. -The \ct{INIT} parameter \ct{PATH_RAMP(1:3)} is a list of three character strings for the ramp IDs associated with the $x$, $y$, and $z$ positions of a particle. We use the volume insert method for the particle, with \ct{N_PARTICLES=1}. An example may be found in the verification case \ct{part_path_ramp_jog.fds} in the \ct{fds/Verification/Miscellaneous/} directory. The output of the example is shown in Fig.~\ref{fig:part_path_ramp_jog}. The basics that are needed to implement the path ramp are the following: +The \ct{INIT} parameter \ct{PATH_RAMP(1:3)} is a list of three character strings for the ramp IDs associated with the $x$, $y$, and $z$ positions of a particle. We use the volume insert method for the particle, with \linebreak[4]\ct{N_PARTICLES=1}. An example may be found in the verification case \ct{part_path_ramp_jog.fds} in the \ct{fds/Verification/Miscellaneous/} directory. The output of the example is shown in Fig.~\ref{fig:part_path_ramp_jog}. The basics that are needed to implement the path ramp are the following: \begin{lstlisting} &RAMP ID='PART RAMP X', T=0, F=0/ start position at X=0 m at Time=0 s &RAMP ID='PART RAMP X', T=10, F=5/ move linearly to X=5 m at Time=10 s @@ -6633,8 +6625,6 @@ \subsection{Controlled Particle Orientation} \label{fig:part_orientation_ramp} \end{figure} -\newpage - \section{Particle Removal} \label{info:particle_removal} @@ -6664,7 +6654,7 @@ \subsection{Droplet Movement on Solid Surfaces} When a liquid droplet hits a solid surface, it transfers heat over the area of the cross section of a hemisphere of equal volume. When enough liquid pools on the surface to form a layer, the area governing heat transfer is based on the film, not the individual droplet. The diameter of the droplet, once a film layer is formed, is not important because it is assumed to mix with other droplets forming the film. However, when the droplet leaves the solid surface in the form of a ``drip,'' it reforms into a droplet, and its new diameter can be specified via \ct{SURFACE_DIAMETER} on the \ct{PART} line in units of $\mu$m. -The heat transfer between the solid surface and the liquid film layer makes use of an empirical turbulent heat transfer correlation that is a function of the properties of the liquid and the user-specified \ct{HORIZONTAL_VELOCITY} or \ct{VERTICAL_VELOCITY}. Details can be found in the FDS Technical Reference Guide chapter, ``Lagrangian Particles,'' section ``Heating and Evaporation of Liquid Droplets.'' Alternatively, you may specify a constant value on the \ct{PART} line, \ct{HEAT_TRANSFER_COEFFICIENT_SOLID}, in units of \unit{W/m^2.K}. +The heat transfer between the solid surface and the liquid film layer makes use of an empirical turbulent heat transfer correlation that is a function of the properties of the liquid and the user-specified \linebreak[4]\ct{HORIZONTAL_VELOCITY} or \ct{VERTICAL_VELOCITY}. Details can be found in the FDS Technical Reference Guide chapter, ``Lagrangian Particles,'' section ``Heating and Evaporation of Liquid Droplets.'' Alternatively, you may specify a constant value on the \ct{PART} line, \ct{HEAT_TRANSFER_COEFFICIENT_SOLID}, in units of \unit{W/m^2.K}. There are some applications, like the suppression of racked storage commodity fires, where it is useful to allow water droplets to move horizontally along the underside of a solid object. It is difficult to model this phenomenon precisely because it involves surface tension, surface porosity and absorption, and complicated geometry. However, a way to capture some of the effect is to set \ct{ALLOW_UNDERSIDE_PARTICLES=T} on the \ct{SURF} line(s). It is normally \ct{F}. Also, note that when droplets hit obstructions, the vertical direction is assumed to coincide with the $z$ axis, regardless of any change to the gravity vector, \ct{GVEC}. To stop particles or droplets from ``sticking'' to surfaces, set \ct{ALLOW_SURFACE_PARTICLES=F} on the \ct{SURF} line. @@ -6901,12 +6891,6 @@ \subsubsection{Example} \label{wind_example_fig_2} \end{figure} - - - - -\newpage - \section{Wind Method 3: Advanced Meteorological Concepts} \label{info:atmospheric_forces} @@ -7402,9 +7386,6 @@ \subsection{Examples} \label{char_oxidation_2_fig} \end{figure} - -\newpage - \section{Lagrangian Particle Model} \label{info:vegetation} \label{pine_needles} @@ -7492,17 +7473,18 @@ \subsection{Trees} A coniferous tree (e.g. pine, spruce, fir) can be represented in FDS as a collection of Lagrangian particles as follows: \begin{lstlisting} - &PART ID='needles', DRAG_COEFFICIENT=2.8, SURF_ID='needle surface', STATIC=T, - COLOR='FOREST GREEN' / + &PART ID='needles', DRAG_COEFFICIENT=2.8, SURF_ID='needle surface', + STATIC=T, COLOR='FOREST GREEN' / &INIT ID='needles', PART_ID='needles', XYZ=..., CROWN_BASE_WIDTH=3.2, - CROWN_BASE_HEIGHT=0.2, TREE_HEIGHT=2, SHAPE='CONE', N_PARTICLES_PER_CELL=1, - MASS_PER_VOLUME=10., DRY=T / + CROWN_BASE_HEIGHT=0.2, TREE_HEIGHT=2, SHAPE='CONE', + N_PARTICLES_PER_CELL=1, MASS_PER_VOLUME=10., DRY=T / \end{lstlisting} These lines create a collection of particles in the shape of a cone. The dimensions of the cone are specified via the parameters \ct{CROWN_BASE_WIDTH}, the diameter of the base of the cone (m); \ct{CROWN_BASE_HEIGHT}, the distance (m) from the ground to the base of the cone, \ct{TREE_HEIGHT}, the height (m) of the tree from ground to tip; and the position triplet, \ct{XYZ}, of the trunk at the ground. Note that in this example, exactly one particle is specified per grid cell with a random position within the cell. The number of actual pine needles this single particle represents depends on the specified (dry) \ct{MASS_PER_VOLUME}. Additional details on specifying different standard tree crown geometries can be found in Section~\ref{info:initial_droplets}. A handy way to introduce many trees into a simulation is by way of a \ct{SURF} line as follows: \begin{lstlisting} - &SURF ID='forest',..., INIT_IDS(1:2)='needles','branches', INIT_PER_AREA=0.1 / + &SURF ID='forest',..., INIT_IDS(1:2)='needles','branches', + INIT_PER_AREA=0.1 / \end{lstlisting} This line indicates that solid boundaries with the surface properties given by \ct{'forest'} shall have 1 tree per 10~\unit{m^2}, as indicated by the parameter \ct{INIT_PER_AREA}. The trees may consist of more than one type of particle, as indicated by the array \ct{INIT_IDS}. Note that this construct is designed for trees and is only invoked on upward-facing horizontal boundaries. Also note that the coordinates \ct{XYZ} on the \ct{INIT} line should be \ct{0,0,0} so that the trees are correctly positioned. @@ -7512,7 +7494,8 @@ \subsection{Bulk Density Input Files} In some cases, the user may have access to detailed 3-dimensional spatial information on the distribution of vegetation bulk density, or \ct{MASS_PER_VOLUME}, within a tree crown or a forest canopy. These data may be available in a voxelized (gridded) format and are increasingly common with the advancement of both remote sensing techniques (e.g. lidar) and tools for modeling forest canopy structure. It is possible to directly import such bulk density data by specifying a \ct{BULK_DENSITY_FILE} on the \ct{INIT} line. Each file should specify the bulk density values for the type of vegetation defined by the \ct{PART_ID} and \ct{SURF_ID} associated with the particular \ct{INIT} line. For example, one file may specify the spatial distribution of foliage, another for branches, and so on: \begin{lstlisting} - &INIT ID='insert', PART_ID='foliage part', BULK_DENSITY_FILE='canopy_foliage.bdf'/ + &INIT ID='insert', PART_ID='foliage part', + BULK_DENSITY_FILE='canopy_foliage.bdf'/ \end{lstlisting} For a full example, see the \ct{bulk_density_file.fds} test cases in the \ct{WUI} directory of the verification suite. Bulk density data are assumed to be provided on a dry-mass basis. \ct{DRY=T} is set automatically and moisture mass is added following the specification of the associated \ct{SURF} (see Sec.~\ref{pine_needles} for detail). @@ -7531,9 +7514,9 @@ \subsection{Bulk Density Input Files} \end{lstlisting} The sextuplet \ct{VXMIN,VXMAX,VYMIN,VYMAX,VZMIN,VZMAX} gives the bounds (upper and lower voxel faces) of the entire vegetation containing volume. This is used to determine whether a specific mesh contains any of the vegetation. The triplet \ct{VDX,VDY,VDZ} gives the spatial resolution of the input data and \ct{NVOX} is the total number of voxels which actually contain vegetation. The coordinates of each voxel center are given by \ct{VCX,VCY,VCZ} and the bulk density by \ct{MASS_PER_VOLUME}. Third-party tools to create vegetation inputs are in development. However, an example python script for creating a custom \ct{BULK_DENSITY_FILE} can be found in the cad GitHub repository, \ct{firemodels/cad}. -FDS creates a \ct{BLOCK} shaped \ct{INIT} line for each voxel. In this way, it is possible to change the FDS resolution and meshing without needing to create a new \ct{BULK_DENSITY_FILE}. By default, if a \ct{BULK_DENSITY_FILE} is specified FDS will input vegetation with \ct{N_PARTICLES_PER_CELL = 1} to minimize memory usage. However, if an FDS grid cell intersects multiple vegetation voxels (for example, due to misalignment between FDS and voxel resolution), more than one particle will be added to the cell. The input mass will be conserved; this will simply increase memory usage. It is recommended to provide a \ct{BULK_DENSITY_FILE} with the same resolution as your simulation if possible. +FDS creates a \ct{BLOCK} shaped \ct{INIT} line for each voxel. In this way, it is possible to change the FDS resolution and meshing without needing to create a new \ct{BULK_DENSITY_FILE}. By default, if a \linebreak[4]\ct{BULK_DENSITY_FILE} is specified FDS will input vegetation with \ct{N_PARTICLES_PER_CELL = 1} to minimize memory usage. However, if an FDS grid cell intersects multiple vegetation voxels (for example, due to misalignment between FDS and voxel resolution), more than one particle will be added to the cell. The input mass will be conserved; this will simply increase memory usage. It is recommended to provide a \ct{BULK_DENSITY_FILE} with the same resolution as your simulation if possible. -Additionally, the \ct{BULK_DENSITY_FILE} can be scaled using a \ct{BULK_DENSITY_FACTOR}. The value of this input, also provided on the \ct{INIT} line, will multiply by all \ct{MASS_PER_VOLUME} values in the \ct{BULK_DENSITY_FILE} when they are read in. This allows quick adjustment of the overall canopy density without having to regenerate new binary files. It can also be used to re-apply the same \ct{BULK_DENSITY_FILE} for different classes of particles, such as foliage and branches, which may have the same spatial distribution of material but different proportions of bulk density. +Additionally, the \ct{BULK_DENSITY_FILE} can be scaled using a \ct{BULK_DENSITY_FACTOR}. The value of this input, also provided on the \ct{INIT} line, will multiply by all \ct{MASS_PER_VOLUME} values in the \linebreak[4]\ct{BULK_DENSITY_FILE} when they are read in. This allows quick adjustment of the overall canopy density without having to regenerate new binary files. It can also be used to re-apply the same \linebreak[4]\ct{BULK_DENSITY_FILE} for different classes of particles, such as foliage and branches, which may have the same spatial distribution of material but different proportions of bulk density. \subsection{Firebrands} \label{info:firebrands} @@ -7559,7 +7542,8 @@ \subsection{Ember Generation From Particles} Although in its early stages of development, a rudimentary ember generation algorithm is available for use in FDS. Lagrangian particle classes may be tagged as ``ember particles'' and thus subject to lofting by a drag force. Two parameters control the point at which a given particle becomes an ember. First is the density threshold, controlled by the parameter \ct{EMBER_DENSITY_THRESHOLD} on the \ct{PART} line. As a vegetative particle burns and converts to char its density decreases from that of a woody material with a density of 500-1000 \unit{kg/m^3} to char with a density of 50-100 \unit{kg/m^3}. As the wood turns to char its structural integrity diminishes and the drag forces may rip the vegetative element apart. While the phenomenon of course depends on the force exerted by the gas flow around the particle, we use a velocity threshold as a surrogate to the drag force, since this is more intuitive. The threshold is controlled by \ct{EMBER_VELOCITY_THRESHOLD} on \ct{PART}. The \ct{EMBER_PARTICLE} tag should only be applied to particle classes that are initially \ct{STATIC}. A typical example is given below. \begin{lstlisting} - &PART ID='small branches', STATIC=T, EMBER_PARTICLE=T, EMBER_DENSITY_THRESHOLD=75., EMBER_VELOCITY_THRESHOLD=3.0 + &PART ID='small branches', STATIC=T, EMBER_PARTICLE=T, + EMBER_DENSITY_THRESHOLD=75., EMBER_VELOCITY_THRESHOLD=3.0 \end{lstlisting} \paragraph{Ember Removal} @@ -7680,15 +7664,10 @@ \subsection{Vegetation Convective Heating} \label{ground_vegetation_conv_fig} \end{figure} - -\newpage - - - \section{Level Set Model for Wildland Fire Spread} \label{info:level_set} -For simulations of wildland fires spanning large areas that cannot be gridded finely enough to predict fire spread using a physics-based model, there is an empirical model built into FDS based on level sets~\cite{Bova:IJWF2015}. The methodology reproduces in an Eulerian framework the approach used in the Lagrangian-based fire front-tracking model FARSITE~\cite{Finney:FARSITE}. This approach makes use of the Rothermel-Albini~\cite{Rothermel:1972,Albini:1976} surface fire spread rate formulae and the assumption that a surface fire spreading from a point under certain wind, slope and vegetation conditions does so with an ellipse-shaped\footnote{There are other formulations of the level set method besides an elliptical fire front. The parameter \ct{LEVEL_SET_ELLIPSE=T} on the \ct{MISC} line is a placeholder until other methods are implemented.} fire front with, for a given wind speed, a fixed length-to-breadth ratio~\cite{Richards:1990}. +For simulations of wildland fires spanning large areas that cannot be gridded finely enough to predict fire spread using a physics-based model, there is an empirical model built into FDS based on level sets~\cite{Bova:IJWF2015}. The methodology reproduces in an Eulerian framework the approach used in the Lagrangian-based fire front-tracking model FARSITE~\cite{Finney:FARSITE}. This approach makes use of the Rothermel-Albini~\cite{Rothermel:1972,Albini:1976} surface fire spread rate formulae and the assumption that a surface fire spreading from a point under certain wind, slope and vegetation conditions does so with an ellipse-shaped\footnote{There are other formulations of the level set method besides an elliptical fire front. The parameter \linebreak[4]\ct{LEVEL_SET_ELLIPSE=T} on the \ct{MISC} line is a placeholder until other methods are implemented.} fire front with, for a given wind speed, a fixed length-to-breadth ratio~\cite{Richards:1990}. To invoke the level set feature, you {\em must} set \ct{LEVEL_SET_MODE} on the \ct{MISC} line to be either 1, 2, 3 or 4: \begin{itemize} @@ -7718,6 +7697,8 @@ \section{Level Set Model for Wildland Fire Spread} The 13 fuel models can be modified by specifying a different fuel layer height (\ct{VEG_LSET_HT}), fuel load (\ct{VEG_LSET_SURF_LOAD}), and/or fuel packing ratio (\ct{VEG_LSET_BETA}). The modified properties will replace those in Table~\ref{tbl:Rothermel} in the calculation of spread rate following Rothermel-Albini~\cite{Rothermel:1972,Albini:1976}. Note that setting \ct{VEG_LSET_SURF_LOAD} gives the total fuel load and the amount in different size or dead/live categories will be adjusted to maintain the distribution in the original fuel model. +The $x$ and $y$ components of the predicted spread velocity can be ouptut using the quantities of \ct{U_LS} and \ct{V_LS}. + \paragraph{Surface Option 2} In this second option, you create your own custom fuel type as follows: @@ -7786,7 +7767,7 @@ \subsection{Custom Wind Speed Function} \end{lstlisting} Here, the variable \ct{Z} represents the reference wind speed in m/s and \ct{F} is the value of $\phi_W$. In this example the spread rate increases linearly with wind speed between 0~m/s and 10~m/s, but any functional form can be represented in a piecwise manner using the \ct{RAMP}. -The second complication is determining the appropriate mid-flame wind speed. In the default formulation the wind is taken from a reference height of 6.1~m (based on a standard weather station measurement height of 20~ft). This is then re-scaled to an assumed mid-flame height (one fuel-bed height above the fuel) using an assumed logarithmic profile of the wind. This is the so-called wind adjustment factor~\cite{Andrews:2012,Bova:IJWF2015}. However, these assumptions may begin to break down, for example, when the wind profile is not logarithmic. Therefore, it is possible to specify a reference wind height via \ct{VEG_LSET_WIND_HEIGHT} on the \ct{SURF} line. The wind sampled at this height will be directly used in the $\phi_{\rm W}$ function, without any adjustment, whether using the default model or a custom \ct{RAMP}. Note that it is possible to include an adjustment factor when using \ct{VEG_LSET_WIND_HEIGHT} by implicitly including this factor when specifying a \ct{VEG_LSET_WIND_RAMP}. +The second complication is determining the appropriate mid-flame wind speed. In the default formulation the wind is taken from a reference height of 6.1~m (based on a standard weather station measurement height of 20~ft). This is then re-scaled to an assumed mid-flame height (one fuel-bed height above the fuel) using an assumed logarithmic profile of the wind. This is the so-called wind adjustment factor~\cite{Andrews:2012,Bova:IJWF2015}. However, these assumptions may begin to break down, for example, when the wind profile is not logarithmic. Therefore, it is possible to specify a reference wind height via \ct{VEG_LSET_WIND_HEIGHT} on the \ct{SURF} line. The wind sampled at this height will be directly used in the $\phi_{\rm W}$ function, without any adjustment, whether using the default model or a custom \ct{RAMP}. Note that it is possible to include an adjustment factor when using \ct{VEG_LSET_WIND_HEIGHT} by implicitly including this factor when specifying a \linebreak[4]\ct{VEG_LSET_WIND_RAMP}. @@ -7836,12 +7817,12 @@ \subsection{Ember Generation From Surfaces} It is possible to make a burning surface create Lagrangian particles to represent embers by specifying an \ct{EMBER_YIELD} (kg/kg) on the \ct{SURF} line. As this yield requires a burning surface it was developed to be used with \ct{LEVEL_SET_MODE=4}, however, it can also be applied to the Boundary Fuel Model. A \ct{PART_ID} also needs to be specified to provide the properties of the generated embers. Currently, the ember yield is associated with the mass available to burn in the gas phase and does not account for char yield. For example, a fuel load of 1~\unit{kg/m^2} with a char yield of 0.2 and an ember yield of 0.05 would produce 0.2~\unit{kg/m^2} of char, 0.04~\unit{kg/m^2} of embers, and 0.76~\unit{kg/m^2} of fuel vapor. -In many cases, it is not necessary or even practical to track every single ember and a single Lagrangian particle can be used to represent the mass of many embers. This can be accomplished by setting \ct{EMBER_TRACKING_RATIO} on the \ct{SURF} line. If not specified, the default value is 100. You can also specify an \ct{EMBER_GENERATION_HEIGHT} (m) to dictate the vertical offset distance from the burning surface at which particles are produced. This is important in cases where the vertical fuel structure may not be resolved but the height of ember production plays a role in the lofting potential. If a single number is provided for the \ct{EMBER_GENERATION_HEIGHT}, all particles are generated at that offset distance. If two numbers are provided, particles are randomly generated within the specified offset range following a uniform distribution. For example, if \ct{EMBER_GENERATION_HEIGHT=0.0,1.0} then particles will be produced anywhere up to 1.0~m above the burning surface. Finally, it is recommended to set \ct{VEL_PART=0.0} on the \ct{SURF} line when modeling ember generation so that particles start from rest and are naturally lofted by the surrounding flow. +In many cases, it is not necessary or even practical to track every single ember and a single Lagrangian particle can be used to represent the mass of many embers. This can be accomplished by setting \linebreak[4]\ct{EMBER_TRACKING_RATIO} on the \ct{SURF} line. If not specified, the default value is 100. You can also specify an \ct{EMBER_GENERATION_HEIGHT} (m) to dictate the vertical offset distance from the burning surface at which particles are produced. This is important in cases where the vertical fuel structure may not be resolved but the height of ember production plays a role in the lofting potential. If a single number is provided for the \ct{EMBER_GENERATION_HEIGHT}, all particles are generated at that offset distance. If two numbers are provided, particles are randomly generated within the specified offset range following a uniform distribution. For example, if \ct{EMBER_GENERATION_HEIGHT=0.0,1.0} then particles will be produced anywhere up to 1.0~m above the burning surface. Finally, it is recommended to set \ct{VEL_PART=0.0} on the \ct{SURF} line when modeling ember generation so that particles start from rest and are naturally lofted by the surrounding flow. \subsection{Ember Ignition} \label{info:Ember_Ignition} -When running a Level Set case, if an airborne ember lands on the ground, there is a chance that it might ignite a new fire. To model this behavior if you are using the level set approach for fire spread, specify the parameter \ct{EMBER_IGNITION_POWER_MEAN} on the \ct{SURF} line describing the ground level vegetation. The ember power, in units of kW, is the net radiative and convective energy generated by the ember. The \ct{EMBER_IGNITION_POWER_MEAN} is the mean value of a normal distribution of ignition propensity; that is, there is a 50~\% likelihood that an ember with this power will ignite the surface vegetation. A typical value for the mean is on the order of 0.01~kW (10~W), depending on the ground vegetation. You can also specify the standard deviation of the distribution, \ct{EMBER_IGNITION_POWER_SIGMA}, whose default value is 0.001~kW. The best functional form for ignition probability, and ember ignition itself, is an ongoing topic of research. Therefore, it may be useful to treat this as more of a binary threshold (i.e. a use a small standard deviation). Further, a Lagrangian particle may represent more than one ember. Therefore, the particle weighting factor is used to convert the probability of ignition from a single ember to the probability of at least one ignition from the total number of embers represented. The occurrence of ignition will be tested for each time step that a particle is lying on the ground. If ignition occurs, the particle will be removed from the simulation. +When running a Level Set case, if an airborne ember lands on the ground, there is a chance that it might ignite a new fire. To model this behavior if you are using the level set approach for fire spread, specify the parameter \ct{EMBER_IGNITION_POWER_MEAN} on the \ct{SURF} line describing the ground level vegetation. The ember power, in units of kW, is the net radiative and convective energy generated by the ember. The \linebreak[4]\ct{EMBER_IGNITION_POWER_MEAN} is the mean value of a normal distribution of ignition propensity; that is, there is a 50~\% likelihood that an ember with this power will ignite the surface vegetation. A typical value for the mean is on the order of 0.01~kW (10~W), depending on the ground vegetation. You can also specify the standard deviation of the distribution, \ct{EMBER_IGNITION_POWER_SIGMA}, whose default value is 0.001~kW. The best functional form for ignition probability, and ember ignition itself, is an ongoing topic of research. Therefore, it may be useful to treat this as more of a binary threshold (i.e. a use a small standard deviation). Further, a Lagrangian particle may represent more than one ember. Therefore, the particle weighting factor is used to convert the probability of ignition from a single ember to the probability of at least one ignition from the total number of embers represented. The occurrence of ignition will be tested for each time step that a particle is lying on the ground. If ignition occurs, the particle will be removed from the simulation. \subsection{Wildfire Spread over Realistic Terrain using QGIS} @@ -7920,7 +7901,7 @@ \section{Device Location and Orientation} \section{Device Output} \label{info:out:DEVC} -Each device has a \ct{QUANTITY} associated with it. The time history of each \ct{DEVC} \ct{QUANTITY} is output to a comma-delimited ASCII file called \ct{CHID_devc.csv} (see Sec.~\ref{out:DEVC} for output file format). This file can be imported into most spreadsheet software packages. Most spreadsheet programs limit the number of columns to some number (for example the 2003 version Microsoft Excel had a 256 column limit). As a default, FDS places no limit on the amount of columns in a comma-separated value (.csv) file. If your spreadsheet application allows fewer columns than the number of \ct{DEVC} or \ct{CTRL} in your input file then set \ct{COLUMN_DUMP_LIMIT} equal to \ct{T} on the \ct{DUMP} line. Use \ct{DEVC_COLUMN_LIMIT} and \linebreak[4]\ct{CTRL_COLUMN_LIMIT} to indicate the limit of columns in the device and control output files. Their default values are 254. If more devices or controls are present than the limit, then multiple output files will be written. The file name will have a number appended to it. For example, if two device file are required, they will be named \ct{CHID_1_devc.csv} and \ct{CHID_2_devc.csv}. +Each device has a \ct{QUANTITY} associated with it. The time history of each \ct{DEVC} \ct{QUANTITY} is output to a comma-delimited ASCII file called \ct{CHID_devc.csv} (see Sec.~\ref{out:DEVC} for output file format). This file can be imported into most spreadsheet software packages. Most spreadsheet programs limit the number of columns to some number (for example the 2003 version Microsoft Excel had a 256 column limit). As a default, FDS places no limit on the amount of columns in a comma-separated value (.csv) file. If your spreadsheet application allows fewer columns than the number of \ct{DEVC} or \ct{CTRL} in your input file then set \linebreak[4]\ct{COLUMN_DUMP_LIMIT} equal to \ct{T} on the \ct{DUMP} line. Use \ct{DEVC_COLUMN_LIMIT} and \linebreak[4]\ct{CTRL_COLUMN_LIMIT} to indicate the limit of columns in the device and control output files. Their default values are 254. If more devices or controls are present than the limit, then multiple output files will be written. The file name will have a number appended to it. For example, if two device file are required, they will be named \ct{CHID_1_devc.csv} and \ct{CHID_2_devc.csv}. The \ct{DEVC} output is written to a file every \ct{DT_DEVC} seconds or at discrete times indicated by \linebreak[4]\ct{RAMP_DEVC}, both of which are specified on the \ct{DUMP} line. By default, the output \ct{QUANTITY} is time-averaged between printouts. To prevent this and get the instantaneous value, add \ct{TIME_AVERAGED=F} to the \ct{DEVC} line. @@ -7949,9 +7930,10 @@ \subsection{Sprinklers} \begin{lstlisting} &SPEC ID='WATER VAPOR' / &PART ID='my droplets', DIAMETER=1000., SPEC_ID='WATER VAPOR' / - &PROP ID='K-11', QUANTITY='SPRINKLER LINK TEMPERATURE', RTI=148., C_FACTOR=0.7, - ACTIVATION_TEMPERATURE=74., OFFSET=0.10, PART_ID='my droplets', FLOW_RATE=189.3, - PARTICLE_VELOCITY=10., SPRAY_ANGLE=30.,80., SMOKEVIEW_ID='sprinkler_upright' / + &PROP ID='K-11', QUANTITY='SPRINKLER LINK TEMPERATURE', RTI=148., + C_FACTOR=0.7, ACTIVATION_TEMPERATURE=74., OFFSET=0.10, + PART_ID='my droplets', FLOW_RATE=189.3, PARTICLE_VELOCITY=10., + SPRAY_ANGLE=30.,80., SMOKEVIEW_ID='sprinkler_upright' / &DEVC ID='Spr-1', XYZ=22.8,19.7,7.4, PROP_ID='K-11' / &DEVC ID='Spr-2', XYZ=22.8,22.7,7.4, PROP_ID='K-11' / \end{lstlisting} @@ -7962,7 +7944,7 @@ \subsection{Sprinklers} \item \ct{ACTIVATION_TEMPERATURE} in units of \unit{\degreeCelsius}. (Default 74~\unit{\degreeCelsius}) \item \ct{INITIAL_TEMPERATURE} of the link in units of \unit{\degreeCelsius}. (Default \ct{TMPA}) \item \ct{FLOW_RATE} in units of L/min. This parameter is only appropriate for liquid droplets. An alternative is to provide the \ct{K_FACTOR} ($K$) in units of \unit{L/(min.bar\tothe{1/2})} and the \ct{OPERATING_PRESSURE}, the gauge pressure ($p$) at the sprinkler, in units of bar. The flow rate is then given by $K \sqrt{p}$. Note that 1~bar is equivalent to 14.5~psi, 1~gpm (gal/min) is equivalent to 3.785~L/min, 1~\unit{gpm/psi\tothe{1/2}} is equivalent to 14.41~\unit{L/(min.bar\tothe{1/2})}. - \item \ct{MASS_FLOW_RATE} in units of kg/s. This parameter can be used instead of \ct{FLOW_RATE} for liquid droplets, but it must be used for solid particles. If \ct{MASS_FLOW_RATE} is specified, the \ct{PARTICLE_VELOCITY} must also be specified. + \item \ct{MASS_FLOW_RATE} in units of kg/s. This parameter can be used instead of \ct{FLOW_RATE} for liquid droplets, but it must be used for solid particles. If \ct{MASS_FLOW_RATE} is specified, the \linebreak[4]\ct{PARTICLE_VELOCITY} must also be specified. \item \ct{OFFSET} Radius (m) of a sphere surrounding the sprinkler where the water droplets are initially placed in the simulation (Default 0.05~m). It is assumed that beyond the \ct{OFFSET} the droplets have completely broken up and are transported independently of each other. The entire spray pattern of the sprinkler need not lie within one mesh, but the volume immediately surrounding the sprinkler itself must lie in one mesh. For very small droplets, consider setting offset to be at least one grid cell away from the sprinkler. \item \ct{PARTICLE_VELOCITY} Initial droplet velocity. (Default 0~m/s) \item \ct{ORIFICE_DIAMETER} Diameter of the nozzle orifice in m (default 0~m). This input provides an alternative way to set droplet velocity by giving values for \ct{FLOW_RATE} and \ct{ORIFICE_DIAMETER}, in which case the droplet velocity is computed by dividing the flow rate by the orifice area. Use this method if you do not have any information about droplet velocity. However, quite often you must fine-tune the \ct{PARTICLE_VELOCITY} in order to reproduce a particular spray profile. The \ct{ORIFICE_DIAMETER} is not used if either \ct{PARTICLE_VELOCITY} or \ct{SPRAY_PATTERN_TABLE} is specified. @@ -8055,10 +8037,10 @@ \subsubsection{Varying Pipe Pressure} For some simulations there may be groups of independent sprinklers or nozzles. For example one might have one set of nozzles for a fuel spray and a second set for water spray. In this case the flow of water would not be impacted by how many fuel spray nozzles are open. To have the \ct{PRESSURE_RAMP} only count a subset of sprinklers or nozzles, the keyword \ct{PIPE_INDEX} can be used on the \ct{DEVC} line. For example: \begin{lstlisting} - &DEVC ID='Spr_1', XYZ=2.00,2.00,8.00, PROP_ID='My nozzle', PIPE_INDEX=1 / - &DEVC ID='Spr_2', XYZ=1.00,1.00,8.00, PROP_ID='My nozzle', PIPE_INDEX=1 / - &DEVC ID='Fuel_1', XYZ=2.00,2.00,1.00, PROP_ID='Fuel Spray', PIPE_INDEX=2 / - &DEVC ID='Fuel_2', XYZ=1.00,1.00,1.00, PROP_ID='Fuel Spray', PIPE_INDEX=2 / + &DEVC ID='Spr_1', XYZ=2.0,2.0,8.0, PROP_ID='My nozzle', PIPE_INDEX=1 / + &DEVC ID='Spr_2', XYZ=1.0,1.0,8.0, PROP_ID='My nozzle', PIPE_INDEX=1 / + &DEVC ID='Fuel_1', XYZ=2.0,2.0,1.0, PROP_ID='Fuel Spray', PIPE_INDEX=2 / + &DEVC ID='Fuel_2', XYZ=1.0,1.0,1.0, PROP_ID='Fuel Spray', PIPE_INDEX=2 / \end{lstlisting} These lines indicate that the fuel spray nozzles are a separate pipe network from the water sprinklers. With these inputs, a \ct{PRESSURE_RAMP} for the water sprinklers would not count any active fuel spray nozzles. See the example case \ct{flow_rate_2} in the Verification Guide for further details on the use of \ct{PIPE_INDEX}. @@ -8087,8 +8069,9 @@ \subsubsection{Example Case: Setting the Flow Rate of a Nozzle} \ee where $n$ is the number of open nozzles. The corresponding nozzle and pressure ramp definitions are \begin{lstlisting} - &PROP ID='Head', OFFSET=0.10, PART_ID='water drops', K_FACTOR=2.5, OPERATING_PRESSURE=1., - PRESSURE_RAMP='PR', PARTICLE_VELOCITY=2., SPRAY_ANGLE= 0.,60. / + &PROP ID='Head', OFFSET=0.10, PART_ID='water drops', K_FACTOR=2.5, + OPERATING_PRESSURE=1., PRESSURE_RAMP='PR', PARTICLE_VELOCITY=2., + SPRAY_ANGLE= 0.,60. / &RAMP ID='PR', T= 1., F=16. / &RAMP ID='PR', T= 2., F=4. / @@ -8127,7 +8110,8 @@ \subsection{Heat Detectors} \ct{QUANTITY='LINK TEMPERATURE'} defines a heat detector. This uses the same activation algorithm as a sprinkler without water spray cooling effects or pipe conduction (\ct{C_FACTOR}) effects. \begin{lstlisting} &DEVC ID='HD_66', PROP_ID='Acme Heat', XYZ=2.3,4.6,3.4 / - &PROP ID='Acme Heat', QUANTITY='LINK TEMPERATURE', RTI=132., ACTIVATION_TEMPERATURE=74. / + &PROP ID='Acme Heat', QUANTITY='LINK TEMPERATURE', RTI=132., + ACTIVATION_TEMPERATURE=74. / \end{lstlisting} Like a sprinkler, \ct{RTI} is the Response Time Index in units of $\sqrt{\unit{m.s}}$. \ct{ACTIVATION_TEMPERATURE} is the link activation temperature in degrees Celsius (Default 74~\unit{\degreeCelsius}). \ct{INITIAL_TEMPERATURE} is the initial temperature of the link in units of \unit{\degreeCelsius} (Default \ct{TMPA}). @@ -8182,10 +8166,12 @@ \subsubsection{Defining Smoke} Suppose, however, that you want to define your own ``smoke'' and that you want to specify its production rate independently of the HRR (or even in lieu of an actual fire, like a smoldering source). You might also want to define a mass extinction coefficient for the smoke and an assumed molecular weight (as it will be tracked like a gas species). Finally, you also want to visualize the smoke using the \ct{SMOKE3D} feature in Smokeview (Sec.~\ref{info:SMOKE3D}). Use the following lines: \begin{lstlisting} &SPEC ID='MY SMOKE', MW=29., MASS_EXTINCTION_COEFFICIENT=8700. / - &SURF ID='SMOLDER', TMP_FRONT=1000., MASS_FLUX(1)=0.0001, SPEC_ID='MY SMOKE', COLOR='RED' / + &SURF ID='SMOLDER', TMP_FRONT=1000., MASS_FLUX(1)=0.0001, + SPEC_ID='MY SMOKE', COLOR='RED' / &VENT XB=0.6,1.0,0.3,0.7,0.0,0.0, SURF_ID='SMOLDER' / - &PROP ID='Acme Smoke', QUANTITY='CHAMBER OBSCURATION', SPEC_ID='MY SMOKE' / + &PROP ID='Acme Smoke', QUANTITY='CHAMBER OBSCURATION', + SPEC_ID='MY SMOKE' / &DEVC XYZ=1.00,0.50,0.95, PROP_ID='Acme Smoke', ID='smoke_1' / &SM3D QUANTITY='DENSITY', SPEC_ID='MY SMOKE' / @@ -8238,13 +8224,13 @@ \subsection{Aspiration Detection Systems} An aspiration detection system groups together a series of smoke measurement devices. An aspiration system consists of a sampling pipe network that draws air from multiple locations to a central point where an obscuration measurement is made. To define such a system in FDS, you must provide the sampling locations, sampling flow rates, the transport time from each sampling location to the central measurement location, and if an alarm output is desired, the overall obscuration \ct{SETPOINT}. One or more \ct{DEVC} inputs are used to specify details of the sampling locations, and one additional input is used to specify the central detector: \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='soot1', DEVC_ID='asp1', - FLOWRATE=0.1, DELAY=20 / - &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='soot2', DEVC_ID='asp1', - FLOWRATE=0.2, DELAY=10 / + &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='soot1', + DEVC_ID='asp1', FLOWRATE=0.1, DELAY=20 / + &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='soot2', + DEVC_ID='asp1', FLOWRATE=0.2, DELAY=10 / ... - &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='sootN', DEVC_ID='asp1', - FLOWRATE=0.3, DELAY=30 / + &DEVC XYZ=..., QUANTITY='DENSITY', SPEC_ID='SOOT', ID='sootN', + DEVC_ID='asp1', FLOWRATE=0.3, DELAY=30 / &DEVC XYZ=..., QUANTITY='ASPIRATION', ID='asp1', BYPASS_FLOWRATE=0.4, SETPOINT=0.02 / \end{lstlisting} @@ -8292,7 +8278,7 @@ \section{Basic Control Logic} The following parameters dictate how a device will control something: \begin{itemize} \item \ct{SETPOINT} is the value of the device at which its state changes. For a detection type of device (e.g., heat or smoke) this value is taken from the device's \ct{PROP} inputs and need not be specified on the \ct{DEVC} line. - \item \ct{TRIP_DIRECTION} is an integer that determines how the \ct{SETPOINT} is evaluated. If \ct{TRIP_DIRECTION}>0, the device will change from its \ct{INITIAL_STATE} when the value of the device is greater than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is less than the \ct{SETPOINT}. \ct{TRIP_DIRECTION}<0 has the opposite behavior. The device will change from its \ct{INITIAL_STATE} when the value of the device is less than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is greater than the \ct{SETPOINT}. The default value is +1. + \item \ct{TRIP_DIRECTION} is an integer that determines how the \ct{SETPOINT} is evaluated. If \ct{TRIP_DIRECTION}>0, the device will change from its \ct{INITIAL_STATE} when the value of the device is greater than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is less than the \ct{SETPOINT}. \linebreak[4]\ct{TRIP_DIRECTION}<0 has the opposite behavior. The device will change from its \ct{INITIAL_STATE} when the value of the device is less than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is greater than the \ct{SETPOINT}. The default value is +1. \item \ct{LATCH} determines how many times the state of a device can change. If it is set to \ct{T} the device will only change state once. The default value is \ct{T}. \item \ct{INITIAL_STATE} defines the initial state of the device. The default value is \ct{F}. For example, if an obstruction associated with the device is to disappear, set \ct{INITIAL_STATE=T}. \end{itemize} @@ -8303,7 +8289,7 @@ \section{Basic Control Logic} \begin{lstlisting} &DEVC XYZ=1.2,3.4,5.6, ID='my clock', QUANTITY='TIME', SETPOINT=30. / \end{lstlisting} -Anything associated with the device via the parameter, \ct{DEVC_ID='my clock'}, will change its state at 30~s. For example, if the text were added to an \ct{OBST} line, that obstruction would change from its \ct{INITIAL_STATE} of \ct{F} to \ct{T} after 30~s. In other words, it would be created at 30~s instead of at the start of the simulation. This is a simple way to open a door or window. +Anything associated with the device via the parameter, \ct{DEVC_ID='my clock'}, will change its state at 30~s. For example, if the text were added to an \ct{OBST} line, that obstruction would change from its \linebreak[4]\ct{INITIAL_STATE} of \ct{F} to \ct{T} after 30~s. In other words, it would be created at 30~s instead of at the start of the simulation. This is a simple way to open a door or window. When using a \ct{DEVC} output to control FDS, the instantaneous value of the \ct{DEVC} is used. For some \ct{QUANTITY} types, such as \ct{TEMPERATURE}, this output can be very noisy. To prevent a spurious spike from causing a state change of the \ct{DEVC} you can specify the parameter \ct{SMOOTHING_FACTOR} ($\alpha$). This is a parameter that can vary between 0 and 1. It performs an exponential smoothing of the \ct{DEVC} output as follows: \be @@ -8342,13 +8328,13 @@ \subsection{Creating and Removing Obstructions} &HOLE XB=0.7,0.8,0.7,0.8,0.0,0.1, COLOR='BLACK', DEVC_ID='timer6' / &HOLE XB=0.7,0.8,0.2,0.3,0.0,0.1, COLOR='GRAY 50', DEVC_ID='timer7' / - &DEVC XYZ=..., ID='timer1', SETPOINT=1., QUANTITY='TIME', INITIAL_STATE=F / - &DEVC XYZ=..., ID='timer2', SETPOINT=2., QUANTITY='TIME', INITIAL_STATE=T / - &DEVC XYZ=..., ID='timer3', SETPOINT=3., QUANTITY='TIME', INITIAL_STATE=F / - &DEVC XYZ=..., ID='timer4', SETPOINT=4., QUANTITY='TIME', INITIAL_STATE=T / - &DEVC XYZ=..., ID='timer5', SETPOINT=5., QUANTITY='TIME', INITIAL_STATE=F / - &DEVC XYZ=..., ID='timer6', SETPOINT=6., QUANTITY='TIME', INITIAL_STATE=T / - &DEVC XYZ=..., ID='timer7', SETPOINT=6., QUANTITY='TIME', INITIAL_STATE=F / + &DEVC XYZ=..., ID='timer1', SETPOINT=1, QUANTITY='TIME', INITIAL_STATE=F / + &DEVC XYZ=..., ID='timer2', SETPOINT=2, QUANTITY='TIME', INITIAL_STATE=T / + &DEVC XYZ=..., ID='timer3', SETPOINT=3, QUANTITY='TIME', INITIAL_STATE=F / + &DEVC XYZ=..., ID='timer4', SETPOINT=4, QUANTITY='TIME', INITIAL_STATE=T / + &DEVC XYZ=..., ID='timer5', SETPOINT=5, QUANTITY='TIME', INITIAL_STATE=F / + &DEVC XYZ=..., ID='timer6', SETPOINT=6, QUANTITY='TIME', INITIAL_STATE=T / + &DEVC XYZ=..., ID='timer7', SETPOINT=6, QUANTITY='TIME', INITIAL_STATE=F / \end{lstlisting} At the start of the simulation, the purple obstruction is present with a red block embedded in it. This red block is actually a \ct{HOLE} whose initial state is \ct{F}, i.e., the hole is filled. Also at the start of the simulation, there is a pink obstruction that is visible. At 1~s the red block disappears. At 2~s the empty hole in the purple obstruction is filled with a green block. This hole was initially true, i.e. empty. The blue obstruction appears at 3~s because its initial state is false, meaning that it does not exist initially. The pink obstruction disappears at 4~s because its initial state is true and this state changes at 4~s. At 5~s a yellow obstruction appears with one empty hole and one embedded gray block. At 6~s the gray block disappears because it is a hole that was initially false and therefore was filled with the gray block when its parent obstruction (yellow) was created. Also at 6~s the hole originally present in the yellow obstruction is filled with a black block because it was a hole that was initially empty and then filled when its \ct{DEVC} changed state. {\em You should always try a simple example first before embarking on a complicated creation/removal scheme for obstructions and holes.} @@ -8387,7 +8373,7 @@ \section{Advanced Control Functions: The \texorpdfstring{{\tt CTRL}}{CTRL} Namel \item \ct{FUNCTION_TYPE} is the type of control function. The possible types are shown in Table~\ref{tab:funcvalues}. \item \ct{INPUT_ID} is a list of \ct{DEVC} or \ct{CTRL} \ct{ID}s that are the inputs to the control function. Up to forty inputs can be specified. If a \ct{DEVC} or \ct{CTRL} is being used as an \ct{INPUT_ID} for a control function, then it must have a unique \ct{ID} over both devices and control functions. Additionally, a control function cannot be used as an input for itself. \item \ct{SETPOINT} is(are) the value(s) of the control function at which its state changes. This is only appropriate for control functions that return numerical values. - \item \ct{TRIP_DIRECTION} is an integer that controls when the control function changes state. If \ct{TRIP_DIRECTION}>0, the control function will change from its \ct{INITIAL_STATE} when the value of the control function is greater than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is less than the \ct{SETPOINT}. \ct{TRIP_DIRECTION}<0 has the opposite behavior. The control function will change from its \ct{INITIAL_STATE} when the value of the control function is less than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is greater than the \ct{SETPOINT}. The default value is +1. + \item \ct{TRIP_DIRECTION} is an integer that controls when the control function changes state. If \linebreak[4]\ct{TRIP_DIRECTION}>0, the control function will change from its \ct{INITIAL_STATE} when the value of the control function is greater than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is less than the \ct{SETPOINT}. \ct{TRIP_DIRECTION}<0 has the opposite behavior. The control function will change from its \ct{INITIAL_STATE} when the value of the control function is less than the \ct{SETPOINT} and be equal to the \ct{INITIAL_STATE} when the value is greater than the \ct{SETPOINT}. The default value is +1. \item \ct{LATCH} determines how many times the state of the control function can change. If it is set to \ct{T} the control function will only change state once. The default value is \ct{T}. \item \ct{INITIAL_STATE} defines the initial state of the control function. The default value is \ct{F}. For example, if an obstruction associated with the control function is to disappear, set \ct{INITIAL_STATE=T}. \end{itemize} @@ -8435,9 +8421,9 @@ \section{Advanced Control Functions: The \texorpdfstring{{\tt CTRL}}{CTRL} Namel If you want a \ct{DEVC} to operate based on the logical state of a \ct{CTRL}, set \ct{QUANTITY='CONTROL'} and set the \ct{CTRL_ID} to the \ct{ID} of the control function. The numerical output in the \ct{CHID_devc.csv} file will be zero when the logical state is \ct{F} and 1 when the logical state is \ct{T}. -The output value of a numerical control function is defined by a \ct{DEVC} line with \ct{QUANTITY='CONTROL VALUE'} and \ct{CTRL_ID} set equal to the \ct{ID} of the control function. You can then use \ct{SETPOINT} to have the \ct{DEVC} operate at a particular output value of the control function. This output cannot be used for a purely logical control function whose only output is a logical state such as \ct{ANY} or \ct{DEADBAND}. For \ct{CUSTOM} the output will be the value of the \ct{RAMP} function, and for \ct{TIME_DELAY} the value will be the evaluated delay. +The output value of a numerical control function is defined by a \ct{DEVC} line with \ct{QUANTITY=} \ct{'CONTROL VALUE'} and \ct{CTRL_ID} set equal to the \ct{ID} of the control function. You can then use \ct{SETPOINT} to have the \ct{DEVC} operate at a particular output value of the control function. This output cannot be used for a purely logical control function whose only output is a logical state such as \ct{ANY} or \ct{DEADBAND}. For \ct{CUSTOM} the output will be the value of the \ct{RAMP} function, and for \ct{TIME_DELAY} the value will be the evaluated delay. -The outputs \ct{QUANTITY='CONTROL'} and \ct{QUANTITY='CONTROL VALUE'} have the default of \ct{TEMPORAL_STATISTIC='INSTANT VALUE'}. +The outputs \ct{QUANTITY='CONTROL'} and \ct{QUANTITY='CONTROL VALUE'} have the default of \linebreak[4]\ct{TEMPORAL_STATISTIC='INSTANT VALUE'}. The time dependent logical state of each \ct{CTRL} is written to the \ct{CHID_ctrl.csv} log file, see Sec.~\ref{out:CTRL}. Each state change of a \ct{CTRL} or \ct{DEVC} with a \ct{SETPOINT} is recorded to the \ct{CHID_devc_ctrl_log.csv} log file, see Sec.~\ref{out:DEVC_CTRL_log}. @@ -8465,34 +8451,35 @@ \subsection{Control Functions: \texorpdfstring{{\tt ANY}}{ANY}, \texorpdfstring{ \end{lstlisting} The control functions \ct{AT_LEAST} and \ct{ONLY} are generalizations of \ct{ANY} and \ct{ALL}. For example, \begin{lstlisting} - &CTRL ID='SD', FUNCTION_TYPE='AT_LEAST', N=3, INPUT_ID='SD_1','SD_2','SD_3','SD_4' / + &CTRL ID='SD', FUNCTION_TYPE='AT_LEAST', N=3, INPUT_ID='SD_1','SD_2', + SD_3','SD_4' / \end{lstlisting} changes the state from \ct{F} to \ct{T} when \underline{at least} 3 detectors activate. Note that in this example, and the example below, the parameter \ct{N} is used to specify the number of activated devices required for the conditions of the control function to be satisfied. The control function, \begin{lstlisting} - &CTRL ID='SD', FUNCTION_TYPE='ONLY', N=3, INPUT_ID='SD_1','SD_2','SD_3','SD_4' / + &CTRL ID='SD', FUNCTION_TYPE='ONLY', N=3, INPUT_ID='SD_1','SD_2', + 'SD_3','SD_4' / \end{lstlisting} changes the state from \ct{F} to \ct{T} when 3, and \underline{only} 3, detectors activate. - \subsection{Control Function: \texorpdfstring{{\tt TIME\_DELAY}}{TIME\_DELAY}} \label{info:TIME_DELAY} The \ct{TIME_DELAY} control function starts a timer of length \ct{DELAY} when its input changes state. When the timer expires, the \ct{TIME_DELAY} control function will change state. Note, that the timer starts at each change in state of the input; therefore, if the input changes state a second time before the first timer ends, the timer will get reset. This function enables FDS to model time delays between when a device activates and when some other action occurs, like in a dry pipe sprinkler system. \begin{lstlisting} - &DEVC XYZ=2,2,3, PROP_ID='Acme Sprinkler_link', QUANTITY='LINK TEMPERATURE', - ID='Spk_29_link' / - &DEVC XYZ=2,2,3, PROP_ID='Acme Sprinkler', QUANTITY='CONTROL', ID='Spk_29', - CTRL_ID='dry pipe' / + &DEVC XYZ=2,2,3, PROP_ID='Acme Sprinkler_link', + QUANTITY='LINK TEMPERATURE', ID='Spk_29_link' / + &DEVC XYZ=2,2,3, PROP_ID='Acme Sprinkler', QUANTITY='CONTROL', + ID='Spk_29', CTRL_ID='dry pipe' / &CTRL ID='dry pipe', FUNCTION_TYPE='TIME_DELAY', INPUT_ID='Spk_29_link', DELAY=30. / \end{lstlisting} -This relationship between a sprinkler and its pipes means that the sprinkler spray is controlled (in this case delayed) by the \ct{'dry pipe'}, which adds 30~s to the activation time of \ct{Spk_29}, measured by \ct{Spk_29_link}, before water can flow out of the head. +This relationship between a sprinkler and its pipes means that the sprinkler spray is controlled (in this case delayed) by the \ct{'dry pipe'}, which adds 30~s to the activation time of \ct{Spk_29}, measured by \linebreak[4]\ct{Spk_29_link}, before water can flow out of the head. \subsection{Control Function: \texorpdfstring{{\tt DEADBAND}}{DEADBAND}} \label{info:DEADBAND} -This control function behaves like an HVAC thermostat. It can operate in one of two modes analogous to heating or cooling. The function is provided with an \ct{INPUT_ID} which is the \ct{DEVC} or \ct{CTRL} whose value is used by the function, an upper and lower \ct{SETPOINT}, and the mode of operation by \ct{ON_BOUND}. If \ct{ON_BOUND='LOWER'}, the function changes state from its \ct{INITIAL_STATE} when the value of the \ct{INPUT_ID} drops below the lower value in \ct{SETPOINT} and reverts when it increases past the upper value, i.e., like a heating system. The reverse will occur if \ct{ON_BOUND='UPPER'}, i.e., a cooling system. +This control function behaves like an HVAC thermostat. It can operate in one of two modes analogous to heating or cooling. The function is provided with an \ct{INPUT_ID} which is the \ct{DEVC} or \ct{CTRL} whose value is used by the function, an upper and lower \ct{SETPOINT}, and the mode of operation by \ct{ON_BOUND}. If \linebreak[4]\ct{ON_BOUND='LOWER'}, the function changes state from its \ct{INITIAL_STATE} when the value of the \ct{INPUT_ID} drops below the lower value in \ct{SETPOINT} and reverts when it increases past the upper value, i.e., like a heating system. The reverse will occur if \ct{ON_BOUND='UPPER'}, i.e., a cooling system. The following lines of input would set up a simple thermostat controlled heating system: \begin{lstlisting} @@ -8513,14 +8500,14 @@ \subsection{Control Function: \texorpdfstring{{\tt RESTART} and {\tt KILL}} {RES \begin{lstlisting} &DEVC ID='temp', QUANTITY='TEMPERATURE', SETPOINT=1000., XYZ=4.5,6.7,3.6 / &DEVC ID='velo', QUANTITY='VELOCITY', SETPOINT=10., XYZ=4.5,6.7,3.6 / - + &CTRL ID='kill', FUNCTION_TYPE='KILL', INPUT_ID='temp' / &CTRL ID='restart', FUNCTION_TYPE='RESTART', INPUT_ID='velo' / \end{lstlisting} will kill the job when the temperature at the given point rises above 1000~\unit{\degreeCelsius}; or just force restart files to be output when the velocity at a given point exceeds 10~m/s. The lines \begin{lstlisting} &DEVC ID='temp', QUANTITY='TEMPERATURE', SETPOINT=1000., XYZ=4.5,6.7,3.6 / - + &CTRL ID='kill', FUNCTION_TYPE='KILL', INPUT_ID='temp' / &CTRL ID='restart', FUNCTION_TYPE='RESTART', INPUT_ID='temp' / \end{lstlisting} @@ -8534,9 +8521,11 @@ \subsection{Control Function: \texorpdfstring{{\tt CUSTOM}}{CUSTOM} } \begin{lstlisting} &SURF ID='FAN', TMP_FRONT=40., VOLUME_FLOW=-1. / - &VENT XB=-0.3,0.3,-0.3,0.3,0.0,0.0, SURF_ID='FAN', CTRL_ID='cycling timer' / + &VENT XB=-0.3,0.3,-0.3,0.3,0.0,0.0, SURF_ID='FAN', + CTRL_ID='cycling timer' / &DEVC ID='TIMER', XYZ=2.4,5.7,3.6, QUANTITY='TIME' / - &CTRL ID='cycling timer', FUNCTION_TYPE='CUSTOM', INPUT_ID='TIMER', RAMP_ID='cycle' / + &CTRL ID='cycling timer', FUNCTION_TYPE='CUSTOM', INPUT_ID='TIMER', + RAMP_ID='cycle' / &RAMP ID='cycle', T= 59, F=-1 / &RAMP ID='cycle', T= 61, F= 1 / &RAMP ID='cycle', T=119, F= 1 / @@ -8547,7 +8536,8 @@ \subsection{Control Function: \texorpdfstring{{\tt CUSTOM}}{CUSTOM} } \begin{lstlisting} &OBST XB=..., SURF_ID='whatever', CTRL_ID='cycling timer' / &DEVC ID='TIMER', XYZ=..., QUANTITY='TIME' / - &CTRL ID='cycling timer', FUNCTION_TYPE='CUSTOM', INPUT_ID='TIMER', RAMP_ID='cycle' / + &CTRL ID='cycling timer', FUNCTION_TYPE='CUSTOM', INPUT_ID='TIMER', + RAMP_ID='cycle' / &RAMP ID='cycle', T= 0, F=-1 / &RAMP ID='cycle', T= 59, F=-1 / &RAMP ID='cycle', T= 61, F= 1 / @@ -8581,13 +8571,14 @@ \subsection{Control Function: PID Control Function} \subsubsection{Example Case: using PID for time integration of mass loss rate } \label{sec:pidintmlr} -The PID controller can be used to time integrate the mass loss from a pyrolyzing surface. First, use a \ct{DEVC} with \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} as input to the PID controller. Omit the \ct{TARGET_VALUE}, which then defaults to 0, and the input becomes the error function, $e(t)$. Set the \ct{INTEGRAL_GAIN} to 1 and the other gains to 0. Then send the PID output to a \ct{DEVC} for a \ct{'CONTROL VALUE'}. Here is example syntax: +The PID controller can be used to time integrate the mass loss from a pyrolyzing surface. First, use a \ct{DEVC} with \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} as input to the PID controller. Omit the \linebreak[4]\ct{TARGET_VALUE}, which then defaults to 0, and the input becomes the error function, $e(t)$. Set the \linebreak[4]\ct{INTEGRAL_GAIN} to 1 and the other gains to 0. Then send the PID output to a \ct{DEVC} for a \linebreak[4]\ct{'CONTROL VALUE'}. Here is example syntax: \begin{lstlisting} &DEVC ID='MY MLR', XB=..., QUANTITY='BURNING RATE', SURF_ID='s1', SPATIAL_STATISTIC='SURFACE INTEGRAL'/ &CTRL ID='MY PID', FUNCTION_TYPE='PID', INPUT_ID='MY MLR', PROPORTIONAL_GAIN=0, DIFFERENTIAL_GAIN=0, INTEGRAL_GAIN=1/ - &DEVC ID='PYROLYZATE', XYZ=..., QUANTITY='CONTROL VALUE', CTRL_ID='MY PID'/ + &DEVC ID='PYROLYZATE', XYZ=..., QUANTITY='CONTROL VALUE', + CTRL_ID='MY PID'/ \end{lstlisting} Here, the \ct{'PYROLYZATE'} column of the \ct{_devc.csv} file will have units of \unit{kg}. @@ -8622,12 +8613,13 @@ \subsection{Control Function: \texorpdfstring{{\tt PERCENTILE}}{PERCENTILE} } The \ct{PERCENTILE} function is useful for computing flame heights. Consider the following input lines: \begin{lstlisting} - &DEVC XB=0,0,0,0,0.05,4.95, QUANTITY='HRRPUV', SPATIAL_STATISTIC='VOLUME INTEGRAL' - DX=1., DY=1., DZ=0.05, POINTS=50, Z_ID='z', ID='qdot' / + &DEVC XB=0,0,0,0,0.05,4.95, QUANTITY='HRRPUV', + SPATIAL_STATISTIC='VOLUME INTEGRAL', DX=1., DY=1., + DZ=0.05, POINTS=50, Z_ID='z', ID='qdot' / &CTRL ID='pct', FUNCTION_TYPE='PERCENTILE', INPUT_ID='qdot', PERCENTILE=0.95 / &DEVC ID='L_F', XYZ=0,0,0, QUANTITY='CONTROL VALUE', CTRL_ID='pct', UNITS='m' / \end{lstlisting} -The first \ct{DEVC} line represents a vertical profile of the heat release rate per unit volume integrated over horizontal slices of dimension \ct{2*DX}, \ct{2*DY}, and \ct{2*DZ}. The \ct{CTRL} function takes these 50 values at 50 uniformly spaced heights between 0.05~m and 4.95~m and calculates the height at which 95~\% of the fire's energy has been released. Note that for a 10~cm grid, the vertical array of points are located at cell centers, which is why the discretized integration is done the way it is described above. The second \ct{DEVC} line simply takes the value calculated by the control function and prints it out in the file of time histories, \ct{CHID_devc.csv}. The 50 integrals of \ct{'HRRPUV'} are time-averaged and written to the file, \ct{CHID_line.csv}. Note that the flame heights written to \ct{CHID_devc.csv} are time-averaged over the time interval between printouts. If you set \ct{DT_DEVC} to a very small value (i.e. less than the time step), you will obtain a time-history of instantaneous flame heights. +The first \ct{DEVC} line represents a vertical profile of the heat release rate per unit volume integrated over horizontal slices of dimension \ct{2*DX}, \ct{2*DY}, and \ct{2*DZ}. The \ct{CTRL} function takes these 50 values at 50 uniformly spaced heights between 0.05~m and 4.95~m and calculates the height at which 95~\% of the fire's energy has been released. Note that for a 10~cm grid, the vertical array of points are located at cell centers, which is why the discretized integration is done the way it is described above. The second \ct{DEVC} line simply takes the value calculated by the control function and prints it out in the file of time histories, \linebreak[4]\ct{CHID_devc.csv}. The 50 integrals of \ct{'HRRPUV'} are time-averaged and written to the file, \ct{CHID_line.csv}. Note that the flame heights written to \ct{CHID_devc.csv} are time-averaged over the time interval between printouts. If you set \ct{DT_DEVC} to a very small value (i.e. less than the time step), you will obtain a time-history of instantaneous flame heights. @@ -8637,7 +8629,7 @@ \subsection{Combining Control Functions: A Deluge System} For a deluge sprinkler system, the normally dry sprinkler pipes are flooded when a detection event occurs. For this example, the detection event is when two of four smoke detectors alarm. It takes 30~s to flood the piping network. -The nozzle is a \ct{DEVC} named \ct{'NOZZLE 1'} controlled by the \ct{CTRL} named \ct{'nozzle trigger'}. +The nozzle is a \ct{DEVC} named \ct{'NOZZLE 1'} controlled by the \ct{CTRL} named \linebreak[4]\ct{'nozzle trigger'}. The nozzle activates when both detection \underline{and} the time delay have occurred. Note that the \ct{DEVC} for the nozzle is specified with \ct{QUANTITY='CONTROL'}. @@ -8648,10 +8640,12 @@ \subsection{Combining Control Functions: A Deluge System} &DEVC XYZ=4,4,3, PROP_ID='Acme Smoker', ID='SD_4' / &DEVC XYZ=2,2,3, PROP_ID='Acme Nozzle', QUANTITY='CONTROL', ID='NOZZLE 1', CTRL_ID='nozzle trigger' / - - &CTRL ID='nozzle trigger', FUNCTION_TYPE='ALL', INPUT_ID='smokey','delay' / + + &CTRL ID='nozzle trigger', FUNCTION_TYPE='ALL', INPUT_ID='smokey', + 'delay' / &CTRL ID='delay', FUNCTION_TYPE='TIME_DELAY', INPUT_ID='smokey', DELAY=30. / - &CTRL ID='smokey', FUNCTION_TYPE='AT_LEAST', N=2, INPUT_ID='SD_1','SD_2','SD_3','SD_4' / + &CTRL ID='smokey', FUNCTION_TYPE='AT_LEAST', N=2, INPUT_ID='SD_1','SD_2', + 'SD_3','SD_4' / \end{lstlisting} \subsubsection{Example Case: \ct{control_test_2}} @@ -8670,10 +8664,13 @@ \subsubsection{Example Case: \ct{control_test_2}} \begin{lstlisting} &CTRL ID='Add',FUNCTION_TYPE='SUM',INPUT_ID='LHS Temp','RHS Temp'/ - &CTRL ID='Subtract',FUNCTION_TYPE='SUBTRACT',INPUT_ID='RHS Temp','LHS Temp'/ - &CTRL ID='Multiply',FUNCTION_TYPE='MULTIPLY',INPUT_ID='LHS Temp','CONSTANT',CONSTANT=0.5/ + &CTRL ID='Subtract',FUNCTION_TYPE='SUBTRACT',INPUT_ID='RHS Temp', + 'LHS Temp'/ + &CTRL ID='Multiply',FUNCTION_TYPE='MULTIPLY', + INPUT_ID='LHS Temp','CONSTANT',CONSTANT=0.5/ &CTRL ID='Divide',FUNCTION_TYPE='DIVIDE',INPUT_ID='LHS Temp','RHS Temp'/ - &CTRL ID='Power',FUNCTION_TYPE='POWER',INPUT_ID='RHS Temp','CONSTANT',CONSTANT=0.5/ + &CTRL ID='Power',FUNCTION_TYPE='POWER', + INPUT_ID='RHS Temp','CONSTANT',CONSTANT=0.5/ &CTRL ID='PID',FUNCTION_TYPE='PID',INPUT_ID='Time',TARGET_VALUE=5., PROPORTIONAL_GAIN=-0.5,INTEGRAL_GAIN=0.001,DIFFERENTIAL_GAIN=1./ \end{lstlisting} @@ -8699,19 +8696,21 @@ \subsection{Combining Control Functions: A Dry Pipe Sprinkler System} \begin{lstlisting} &DEVC XYZ=2,2,3, PROP_ID='Acme Sprinkler Link', ID='LINK 1' / &DEVC XYZ=2,3,3, PROP_ID='Acme Sprinkler Link', ID='LINK 2' / - + &PROP ID='Acme Sprinkler Link', QUANTITY='LINK TEMPERATURE', ACTIVATION_TEMPERATURE=74., RTI=30./ - + &DEVC XYZ=2,2,3, PROP_ID='Acme Nozzle', QUANTITY='CONTROL', ID='NOZZLE 1', CTRL_ID='nozzle 1 trigger' / &DEVC XYZ=2,3,3, PROP_ID='Acme Nozzle', QUANTITY='CONTROL', ID='NOZZLE 2', CTRL_ID='nozzle 2 trigger' / - + &CTRL ID='check links', FUNCTION_TYPE='ANY', INPUT_ID='LINK 1','LINK 2'/ &CTRL ID='delay', FUNCTION_TYPE='TIME_DELAY', INPUT_ID='check links', DELAY=30. / - &CTRL ID='nozzle 1 trigger', FUNCTION_TYPE='ALL', INPUT_ID='delay','LINK 1'/ - &CTRL ID='nozzle 2 trigger', FUNCTION_TYPE='ALL', INPUT_ID='delay','LINK 2'/ + &CTRL ID='nozzle 1 trigger', FUNCTION_TYPE='ALL', + INPUT_ID='delay','LINK 1'/ + &CTRL ID='nozzle 2 trigger', FUNCTION_TYPE='ALL', + INPUT_ID='delay','LINK 2'/ \end{lstlisting} @@ -8755,7 +8754,7 @@ \subsection{Changing the Dependent Variable} \label{info:RAMP_DEP_ID} \label{special_time_ramps} -The output of any \ct{DEVC} or math \ct{CTRL} can be used in place of a \ct{RAMP} if either \ct{DEVC_ID_DEP} or \ct{CTRL_ID_DEP} is specified on the \ct{RAMP} input. With either input, the numerical value of the \ct{DEVC} or \ct{CTRL} is used as the \ct{RAMP} output. For example, using the mathematical functions built into the control feature, you can specify the sine function: +The output of any \ct{DEVC} or math \ct{CTRL} can be used in place of a \ct{RAMP} if either \ct{DEVC_ID_DEP} or \linebreak[4]\ct{CTRL_ID_DEP} is specified on the \ct{RAMP} input. With either input, the numerical value of the \ct{DEVC} or \ct{CTRL} is used as the \ct{RAMP} output. For example, using the mathematical functions built into the control feature, you can specify the sine function: \be f(t) = \sin \left( \frac{2 \pi (t-5)}{10} \right) \ee @@ -8763,9 +8762,10 @@ \subsection{Changing the Dependent Variable} \begin{lstlisting} &DEVC ID='t', QUANTITY='TIME', XYZ=0,0,0 / &CTRL ID='t-t0', FUNCTION_TYPE='SUM', INPUT_ID='t','CONSTANT', CONSTANT=-5. / - &CTRL ID='2*pi*(t-t0)/10', FUNCTION_TYPE='MULTIPLY', INPUT_ID='CONSTANT','t-t0', - CONSTANT=0.62831853 / - &CTRL ID='sin(2*pi*(t-t0)/10)', FUNCTION_TYPE='SIN', INPUT_ID='2*pi*(t-t0)/10' / + &CTRL ID='2*pi*(t-t0)/10', FUNCTION_TYPE='MULTIPLY', + INPUT_ID='CONSTANT','t-t0', CONSTANT=0.62831853 / + &CTRL ID='sin(2*pi*(t-t0)/10)', FUNCTION_TYPE='SIN', + INPUT_ID='2*pi*(t-t0)/10' / &RAMP ID='ramp sin', CTRL_DEP_ID='sin(2*pi*(t-t0)/10)' / \end{lstlisting} The function is shown in Fig.~\ref{special_ramps_fig}. @@ -8790,7 +8790,8 @@ \subsection{Freezing the Output Value, Example Case: \ct{hrr_freeze}} &RAMP ID='FRAMP', T=50, F=1/ &DEVC XYZ=..., QUANTITY='TEMPERATURE', SETPOINT=200., INITIAL_STATE=F, ID='TEMP'/ - &DEVC XYZ=..., QUANTITY='TIME', NO_UPDATE_DEVC_ID='TEMP', ID='FREEZE TIME'/ + &DEVC XYZ=..., QUANTITY='TIME', NO_UPDATE_DEVC_ID='TEMP', + ID='FREEZE TIME'/ \end{lstlisting} \begin{figure}[ht] @@ -8805,13 +8806,15 @@ \subsection{Freezing the Output Value, Example Case: \ct{hrr_freeze}} It should be noted that devices are updated sequentially in the order that they are listed in the input file and that devices in different meshes do not share values until the end of a time step. This means that if the device being frozen is on a different mesh or is listed before the device that freezes it, it will not be frozen until the next time step. + \subsection{Example Case: Heat Release Rate of a Spreading Fire} \label{spreading_fire} In this example, a fire spreads radially from a single point as directed by the parameters \ct{SPREAD_RATE} and \ct{XYZ} on a \ct{VENT} line. Usually, the user specifies the heat release rate per unit area (\ct{HRRPUA}) for each burning surface cell on the corresponding \ct{SURF} line, but in this case, a specific time \ct{RAMP} for the {\em total} heat release rate is specified. The following input lines show how the user-specified \ct{RAMP} called \ct{'HRR'} controls the total HRR of the growing fire. The key point is that the user-specified {\em total} HRR is divided by the area of burning surface, and this heat release rate per unit area is imposed on all burning cells. Normally FDS will adjust a mass flux input (\ct{MASS_FLUX}, \ct{HRRPUA} ,etc.) input to account for any differences in the area of the \ct{VENT} as specified with \ct{XB} and the area is it is actually resolved on the grid. In this case we are using control functions to determine the heat release rate. Since the control logic is directly computing the required flux based on the area as resolved, no additional correction by FDS is needed. When \ct{AREA_ADJUST=F}, the normal adjustment of the burning rate to the resolved area is not performed. Regardless of the fact that the spreading fire reaches a barrier and is stopped from spreading radially, the user-specified \ct{RAMP} controls the HRR, as shown in Fig.~\ref{spreading_fire_hrr}. \begin{lstlisting} - &VENT SURF_ID='FIRE', XB=1.0,7.0,1.0,7.0,0.0,0.0, XYZ=3.0,3.0,0.0, SPREAD_RATE=0.1, AREA_ADJUST=F / - + &VENT SURF_ID='FIRE', XB=1.0,7.0,1.0,7.0,0.0,0.0, XYZ=3.0,3.0,0.0, + SPREAD_RATE=0.1, AREA_ADJUST=F / + &SURF ID='FIRE', HRRPUA=1., RAMP_Q='HRRPUA RAMP' / &RAMP ID='HRRPUA RAMP', T=0, F=0, CTRL_ID_DEP='HRRPUA CTRL' / &DEVC ID='TIMER', XYZ=1,1,1, QUANTITY='TIME' / @@ -8820,8 +8823,9 @@ \subsection{Example Case: Heat Release Rate of a Spreading Fire} CONSTANT=1E-10 / Prevents divide-by-zero &DEVC ID='Fire Area', QUANTITY='HRRPUA', QUANTITY_RANGE(1)=1E-10, XB=0,8,0,8,0,1, SURF_ID='FIRE', SPATIAL_STATISTIC='SURFACE AREA' / - &CTRL ID='HRRPUA CTRL', FUNCTION_TYPE='DIVIDE', INPUT_ID='HRR+EPS','Fire Area' / - + &CTRL ID='HRRPUA CTRL', FUNCTION_TYPE='DIVIDE', INPUT_ID='HRR+EPS', + 'Fire Area' / + &RAMP ID='HRR', T= 0., F= 0.0 / &RAMP ID='HRR', T= 10., F= 100.0 / &RAMP ID='HRR', T= 20., F= 400.0 / @@ -8844,1538 +8848,1531 @@ \section{External Control of FDS (Beta)} \label{external_control} It is possible to externally control some aspects of an FDS simulation while the simulation is running. These include most \ct{RAMP}s and the logical state of any \ct{CTRL}. The logical state of a \ct{CTRL} can be externally controlled by setting \ct{FUNCTION_TYPE='EXTERNAL'} on the \ct{CTRL} input. A \ct{RAMP} can be externally controlled by setting \ct{EXTERNAL_FILE} on \ct{RAMP}. \ct{RAMP}s used during initialization only cannot be externally controlled. These include \ct{RAMP}s controlling time (such as the output time \ct{RAMP}s on \ct{DUMP} like \ct{RAMP_BNDF}), defining \ct{SPEC} or \ct{MATL} physical properties (such as \ct{CONDUCTIVITY_RAMP} on \ct{MATL}), defining particle distributions (such as \ct{CNF_RAMP} on \ct{PART}), defining atmospheric conditions (such as \ct{RAMP_T0_Z} on \ct{WIND}), or for defining the initial surface temperature {\ct{RAMP_T_I} on \ct{SURF}) cannot be externally controlled. + +When external control is selected, FDS will set the value of the \ct{RAMP} or the logical state of the \ct{CTRL} based on values contained in a csv file whose name is given by \ct{EXTERNAL_FILENAME} on \ct{MISC}. This file will be checked for new values every \ct{DT_EXTERNAL} on \ct{TIME} seconds. Only those inputs whose values are being changed need to specified. For inputs not specified or if the file does not exist or cannot be opened (e.g., locked by the operating system during a file write), the current values will be kept. The initial values are defined with either \ct{INITIAL_VALUE} on \ct{RAMP} or \ct{INITIAL_STATE} on \ct{CTRL}. By using \linebreak[4]\ct{DT_EXTERNAL_HEARTBEAT} and \ct{EXTERNAL_HEARTBEAT_FILENAME} on \ct{TIME}, FDS can be forced to wait if no file is present or use an alternate \ct{EXTERNAL_FILENAME}. With this approach FDS looks for \linebreak[4]\ct{EXTERNAL_HEARTBEAT_FILENAME}. If the file is not found FDS will wait up to \ct{DT_EXTERNAL_HEARTBEAT} seconds. If \ct{EXTERNAL_HEARTBEAT_FILENAME} is still not present, FDS will stop trying to update the external controls. If \ct{HEARTBEAT_FAIL=T} on \ct{TIME}, FDS will stop the simulation after failing to find \linebreak[4]\ct{EXTERNAL_HEARTBEAT_FILENAME}. If \ct{EXTERNAL_HEARTBEAT_FILENAME} is present, FDS will read \ct{EXTERNAL_FILENAME} from it. If your external program requires that output files it reads be current, set \ct{DT_FLUSH} to be less than the \ct{DT} values for any file types being used by the external program. + +The csv file format is: +\begin{lstlisting} + Type(1), ID(1), Value(1) + Type(2), ID(2), Value(2) + . + . +\end{lstlisting} +where \ct{Type} is either \ct{RAMP} or \ct{CTRL}, \ct{ID} is the corresponding \ct{ID} in the FDS input files, and \ct{Value} is the new output value for a \ct{RAMP} or the new logical state for a \ct{CTRL} where positive values mean the \ct{CTRL} evaluates as true and negative values mean the function evaluates as false. - When external control is selected, FDS will set the value of the \ct{RAMP} or the logical state of the \ct{CTRL} based on values contained in a csv file whose name is given by \ct{EXTERNAL_FILENAME} on \ct{MISC}. This file will be checked for new values every \ct{DT_EXTERNAL} on \ct{TIME} seconds. Only those inputs whose values are being changed need to specified. For inputs not specified or if the file does not exist or cannot be opened (e.g., locked by the operating system during a file write), the current values will be kept. The initial values are defined with either \ct{INITIAL_VALUE} on \ct{RAMP} or \ct{INITIAL_STATE} on \ct{CTRL}. FDS can be forced to wait if no file is present or use an alternate \ct{EXTERNAL_FILENAME} by specifying \ct{DT_EXTERNAL_HEARTBEAT} and \ct{EXTERNAL_HEARTBEAT_FILENAME} on \ct{TIME}. With this approach FDS looks for \ct{EXTERNAL_HEARTBEAT_FILENAME}. If the file is not found FDS will wait up to \ct{DT_EXTERNAL_HEARTBEAT} seconds. If \ct{EXTERNAL_HEARTBEAT_FILENAME} is still not present, FDS will stop trying to update the external controls. If \ct{HEARTBEAT_FAIL=T} on \ct{TIME}, FDS will stop the simulation after failing to find \ct{EXTERNAL_HEARTBEAT_FILENAME}. If \ct{EXTERNAL_HEARTBEAT_FILENAME} is present, FDS will read \ct{EXTERNAL_FILENAME} from it. If your external program requires that output files it reads be current, set \ct{DT_FLUSH} to be less than the \ct{DT} values for any file types being used by the external program. - - The csv file format is: - \begin{lstlisting} - Type(1), ID(1), Value(1) - Type(2), ID(2), Value(2) - . - . - \end{lstlisting} - where \ct{Type} is either \ct{RAMP} or \ct{CTRL}, \ct{ID} is the corresponding \ct{ID} in the FDS input files, and \ct{Value} is the new output value for a \ct{RAMP} or the new logical state for a \ct{CTRL} where positive values mean the \ct{CTRL} evaluates as true and negative values mean the function evaluates as false. +An example set of inputs is below: +\begin{lstlisting} + &MISC EXTERNAL_FILENAME='external_test_input.csv'/ + &TIME T_END=10,DT_EXTERNAL=5/ + + &OBST XB=0.0,0.1,0,1,0,1/ + &VENT XB=0.1,0.1,0,1,0,1,SURF_ID='FLOW',CTRL_ID='VENT CTRL'/ + &SURF ID='FLOW',VEL=-1,COLOR='BLUE',TAU_V=0/ + &CTRL ID='VENT CTRL',FUNCTION_TYPE='EXTERNAL',INITIAL_STATE=T/ + + &VENT XB=2,2,0,1,0,1,SURF_ID='HOT'/ + &SURF ID='HOT',TMP_FRONT=1000,RAMP_T='T RAMP',COLOR='RED'/ + &RAMP ID='T RAMP',EXTERNAL_FILE=T,INITIAL_VALUE=0.081633/ +\end{lstlisting} +In these inputs a vent with a fixed velocity is externally controlled by a \ct{CTRL} that is initially \ct{TRUE}, and a vent with a fixed temperature is externally controlled with a \ct{RAMP} with an initial ramp value that results in a temperature of 100~\unit{\degreeCelsius}. These vents are applied to two faces of a 1 \unit{m^3} box. At 5~s, the csv file is read with contents of: +\begin{lstlisting} + RAMP,"T RAMP" , 1 + CTRL,"VENT CTRL",-1 +\end{lstlisting} +This turns off the velocity vent (a negative \ct{CTRL} value means set the state to \ct{F}) and sets the fixed temperature vent to 1000~\unit{\degreeCelsius} (a \ct{RAMP} value of 1 means apply the full value of \ct{TMP_FRONT}). Note that the \ct{ID} strings are enclosed in quotes. This is only required if the string has a space or comma in it. Results of running the case are shown in Fig.~\ref{external_control_fig} - An example set of inputs is below: - \begin{lstlisting} - &MISC EXTERNAL_FILENAME='external_test_input.csv'/ - &TIME T_END=10,DT_EXTERNAL=5/ +\begin{figure}[ht] + \includegraphics[width=3in]{SCRIPT_FIGURES/external_test_temperature} + \includegraphics[width=3in]{SCRIPT_FIGURES/external_test_velocity} + \caption[Results of the \ct{external_test} test case]{(Left) Surface temperature. (Right) Wall velocity.} + \label{external_control_fig} +\end{figure} - &OBST XB=0.0,0.1,0,1,0,1/ - &VENT XB=0.1,0.1,0,1,0,1,SURF_ID='FLOW',CTRL_ID='VENT CTRL'/ - &SURF ID='FLOW',VEL=-1,COLOR='BLUE',TAU_V=0/ - &CTRL ID='VENT CTRL',FUNCTION_TYPE='EXTERNAL',INITIAL_STATE=T/ - &VENT XB=2,2,0,1,0,1,SURF_ID='HOT'/ - &SURF ID='HOT',TMP_FRONT=1000,RAMP_T='T RAMP',COLOR='RED'/ - &RAMP ID='T RAMP',EXTERNAL_FILE=T,INITIAL_VALUE=0.081633/ - \end{lstlisting} - In these inputs a vent with a fixed velocity is externally controlled by a \ct{CTRL} that is initially \ct{TRUE}, and a vent with a fixed temperature is externally controlled with a \ct{RAMP} with an initial ramp value that results in a temperature of 100~\unit{\degreeCelsius}. These vents are applied to two faces of a 1 \unit{m^3} box. At 5~s, the csv file is read with contents of: - \begin{lstlisting} - RAMP,"T RAMP" , 1 - CTRL,"VENT CTRL",-1 - \end{lstlisting} - This turns off the velocity vent (a negative \ct{CTRL} value means set the state to \ct{F}) and sets the fixed temperature vent to 1000~\unit{\degreeCelsius} (a \ct{RAMP} value of 1 means apply the full value of \ct{TMP_FRONT}). Note that the \ct{ID} strings are enclosed in quotes. This is only required if the string has a space or comma in it. Results of running the case are shown in Fig.~\ref{external_control_fig} +\chapter{Numerical Considerations} +\label{info:MISC} - \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/external_test_temperature} - \includegraphics[width=3in]{SCRIPT_FIGURES/external_test_velocity} - \caption[Results of the \ct{external_test} test case]{(Left) Surface temperature. (Right) Wall velocity.} - \label{external_control_fig} - \end{figure} +This chapter describes various numerical parameters; that is, parameters that control how the governing equations are solved. Most of these parameters are specified on the \ct{MISC} line and for most large-scale fire simulations, their default values are recommended. \ct{MISC} is the namelist group of input parameters that do not fall into any one category (Table~\ref{tbl:MISC}). - \chapter{Numerical Considerations} - \label{info:MISC} +It is good practice to use only one \ct{MISC} line in the data file. Using multiple \ct{MISC} lines is possible, but be careful about not over writing a parameter. The last parameter read will take precedence. - This chapter describes various numerical parameters; that is, parameters that control how the governing equations are solved. Most of these parameters are specified on the \ct{MISC} line and for most large-scale fire simulations, their default values are recommended. \ct{MISC} is the namelist group of input parameters that do not fall into any one category (Table~\ref{tbl:MISC}). +\section{Simulation Mode} +\label{Sim_Mode} - It is good practice to use only one \ct{MISC} line in the data file. Using multiple \ct{MISC} lines is possible, but be careful about not over writing a parameter. The last parameter read will take precedence. +There are four basic modes of operation in FDS: \ct{'DNS'} (Direct Numerical Simulation), \ct{'LES'} (Large Eddy Simulation), \ct{'VLES'} (Very Large Eddy Simulation), and \ct{'SVLES'} (Simple Very Large Eddy Simulation---VLES with simplified physics). These modes govern a number of physical and numerical parameters that determine the level of physics and the accuracy of the numerical model. They are specified using \ct{SIMULATION_MODE} on the \ct{MISC} line. For example +\begin{lstlisting} + &MISC ..., SIMULATION_MODE='DNS' / +\end{lstlisting} +indicates a direct numerical simulation. The default value is \ct{'VLES'}. - \section{Simulation Mode} - \label{Sim_Mode} +Table~\ref{tbl:SIMULATION_MODE} indicates the value of various parameters for each of the four simulation modes and the sections where these parameters are explained in detail. - There are four basic modes of operation in FDS: \ct{'DNS'} (Direct Numerical Simulation), \ct{'LES'} (Large Eddy Simulation), \ct{'VLES'} (Very Large Eddy Simulation), and \ct{'SVLES'} (Simple Very Large Eddy Simulation---VLES with simplified physics). These modes govern a number of physical and numerical parameters that determine the level of physics and the accuracy of the numerical model. They are specified using \ct{SIMULATION_MODE} on the \ct{MISC} line. For example - \begin{lstlisting} - &MISC ..., SIMULATION_MODE='DNS' / - \end{lstlisting} - indicates a direct numerical simulation. The default value is \ct{'VLES'}. +\begin{table}[ht] + \centering + \caption[Parameters effected by \ct{SIMULATION_MODE}]{Parameters effected by \ct{SIMULATION_MODE}.} + \label{tbl:SIMULATION_MODE} + \begin{tabular}{|l|c|c|c|c|c|} + \hline + Key Parameter & Section & \ct{'DNS'} & \ct{'LES'} & \ct{'VLES'} & \ct{'SVLES'} \\ \hline \hline + \ct{CFL_VELOCITY_NORM} & \ref{info:CFL} & 1 & 1 & 2 & 3 \\ \hline + \ct{CHECK_VN} & \ref{info:VN} & T & T & T & F \\ \hline + \ct{FLUX_LIMITER} & \ref{info:flux_limiters} & \ct{'CHARM'} & \ct{'CHARM'} & \ct{'SUPERBEE'} & \ct{'SUPERBEE'} \\ \hline + \ct{CONSTANT_SPECIFIC_HEAT_RATIO} & \ref{info:Enthalpy} & F & F & F & T \\ \hline + \ct{EXTINCTION_MODEL} & ~\ref{info:extinction} & 2 & 2 & 1 & 1 \\ \hline + \end{tabular} +\end{table} - Table~\ref{tbl:SIMULATION_MODE} indicates the value of various parameters for each of the four simulation modes and the sections where these parameters are explained in detail. - \begin{table}[ht] - \centering - \caption[Parameters effected by \ct{SIMULATION_MODE}]{Parameters effected by \ct{SIMULATION_MODE}.} - \label{tbl:SIMULATION_MODE} - \begin{tabular}{|l|c|c|c|c|c|} - \hline - Key Parameter & Section & \ct{'DNS'} & \ct{'LES'} & \ct{'VLES'} & \ct{'SVLES'} \\ \hline \hline - \ct{CFL_VELOCITY_NORM} & \ref{info:CFL} & 1 & 1 & 2 & 3 \\ \hline - \ct{CHECK_VN} & \ref{info:VN} & T & T & T & F \\ \hline - \ct{FLUX_LIMITER} & \ref{info:flux_limiters} & \ct{'CHARM'} & \ct{'CHARM'} & \ct{'SUPERBEE'} & \ct{'SUPERBEE'} \\ \hline - \ct{CONSTANT_SPECIFIC_HEAT_RATIO} & \ref{info:Enthalpy} & F & F & F & T \\ \hline - \ct{EXTINCTION_MODEL} & ~\ref{info:extinction} & 2 & 2 & 1 & 1 \\ \hline - \end{tabular} - \end{table} +\section{Large Eddy Simulation Parameters} +\label{info:LES} +By default FDS uses the Deardorff~\cite{Deardorff:1980,Pope:2000} turbulent viscosity, +\begin{equation} + (\mu_{\hbox{\tiny LES}}/\rho) = C_\nu \Delta \sqrt{k_{\rm sgs}} +\end{equation} +where $C_\nu=0.1$ and the subgrid scale (sgs) kinetic energy is taken from an algebraic relationship based on scale similarity (see the FDS Technical Reference Guide~\cite{FDS_Math_Guide}). The LES filter width is taken as the geometric mean\footnote{An alternative to the geometric mean filter width type is to use the maximum cell dimension, $\Delta = \max(\delta x, \delta y, \delta z)$. This should be used sparingly but may be necessary when the cell aspect ratios are high. Using \ct{LES_FILTER_TYPE='MAX'} on \ct{MISC} will lead to a larger value of turbulent viscosity and hence a more dissipative numerical solution.} of the local mesh spacing in each direction, $\Delta = (\delta x\, \delta y\, \delta z)^{1/3}$. You may also choose a constant filter width by setting \ct{FIXED_LES_FILTER_WIDTH} on the \ct{MISC} line, in meters. This is not a recommended thing to do in practice, but may be useful for convergence studies and other diagnostic tests. - \section{Large Eddy Simulation Parameters} - \label{info:LES} +Options for the \ct{TURBULENCE_MODEL} on the \ct{MISC} line are listed in Table~\ref{turb_table}. Note that the model used in FDS versions 1 through 5 is \ct{'CONSTANT SMAGORINSKY'}. The thermal conductivity and material diffusivity are related to the turbulent viscosity by: +\be +k_{\hbox{\tiny LES}} = \frac{\mu_{\hbox{\tiny LES}} \, c_p}{\PR_{\rm t}} +\quad ; \quad (\rho D)_{\hbox{\tiny LES}} =\frac{\mu_{\hbox{\tiny LES}}}{\SC_{\rm t}} +\ee +The turbulent Prandtl number $\PR_t$ and the turbulent Schmidt number $\SC_t$ are assumed to be constant for a given scenario. Although it is not recommended for most calculations, you can modify $\PR_{\rm t}=0.5$, and $\SC_{\rm t}=0.5$ via the parameters \ct{PR_T}, and \ct{SC_T} on the \ct{MISC} line. A more detailed discussion of these parameters is given in the FDS Technical Reference Guide~\cite{FDS_Math_Guide}. - By default FDS uses the Deardorff~\cite{Deardorff:1980,Pope:2000} turbulent viscosity, - \begin{equation} - (\mu_{\hbox{\tiny LES}}/\rho) = C_\nu \Delta \sqrt{k_{\rm sgs}} - \end{equation} - where $C_\nu=0.1$ and the subgrid scale (sgs) kinetic energy is taken from an algebraic relationship based on scale similarity (see the FDS Technical Reference Guide~\cite{FDS_Math_Guide}). The LES filter width is taken as the geometric mean\footnote{An alternative to the geometric mean filter width type is to use the maximum cell dimension, $\Delta = \max(\delta x, \delta y, \delta z)$. This should be used sparingly but may be necessary when the cell aspect ratios are high. Using \ct{LES_FILTER_TYPE='MAX'} on \ct{MISC} will lead to a larger value of turbulent viscosity and hence a more dissipative numerical solution.} of the local mesh spacing in each direction, $\Delta = (\delta x\, \delta y\, \delta z)^{1/3}$. You may also choose a constant filter width by setting \ct{FIXED_LES_FILTER_WIDTH} on the \ct{MISC} line, in meters. This is not a recommended thing to do in practice, but may be useful for convergence studies and other diagnostic tests. +\begin{table}[ht] + \caption[Turbulence model options]{Turbulence model options.} + \label{turb_table} + \centering + \begin{tabular}{|lll|} + \hline + \ct{TURBULENCE_MODEL} \hfill & Description \hfill & Coefficient(s) \hfill \\ \hline + \ct{'CONSTANT SMAGORINSKY'} & Constant-coefficient Smagorinsky \cite{Smagorinsky:1} & \ct{C_SMAGORINSKY} \\ + \ct{'DYNAMIC SMAGORINSKY'} & Dynamic Smagorinsky \cite{Germano:1991,Moin:1991} & None \\ + \ct{'DEARDORFF'} & Deardorff \cite{Deardorff:1980,Pope:2000} & \ct{C_DEARDORFF} \\ + \ct{'VREMAN'} & Vreman's eddy viscosity \cite{Vreman:2004} & \ct{C_VREMAN} \\ + \ct{'WALE'} & Wall-Adapting Local Eddy-viscosity \cite{Nicoud:1999} & \ct{C_WALE} \\ \hline + \end{tabular} +\end{table} - Options for the \ct{TURBULENCE_MODEL} on the \ct{MISC} line are listed in Table~\ref{turb_table}. Note that the model used in FDS versions 1 through 5 is \ct{'CONSTANT SMAGORINSKY'}. The thermal conductivity and material diffusivity are related to the turbulent viscosity by: - \be - k_{\hbox{\tiny LES}} = \frac{\mu_{\hbox{\tiny LES}} \, c_p}{\PR_{\rm t}} - \quad ; \quad (\rho D)_{\hbox{\tiny LES}} =\frac{\mu_{\hbox{\tiny LES}}}{\SC_{\rm t}} - \ee - The turbulent Prandtl number $\PR_t$ and the turbulent Schmidt number $\SC_t$ are assumed to be constant for a given scenario. Although it is not recommended for most calculations, you can modify $\PR_{\rm t}=0.5$, and $\SC_{\rm t}=0.5$ via the parameters \ct{PR_T}, and \ct{SC_T} on the \ct{MISC} line. A more detailed discussion of these parameters is given in the FDS Technical Reference Guide~\cite{FDS_Math_Guide}. +\subsubsection*{Near-Wall Turbulence Model} - \begin{table}[ht] - \caption[Turbulence model options]{Turbulence model options.} - \label{turb_table} - \centering - \begin{tabular}{|lll|} - \hline - \ct{TURBULENCE_MODEL} \hfill & Description \hfill & Coefficient(s) \hfill \\ \hline - \ct{'CONSTANT SMAGORINSKY'} & Constant-coefficient Smagorinsky \cite{Smagorinsky:1} & \ct{C_SMAGORINSKY} \\ - \ct{'DYNAMIC SMAGORINSKY'} & Dynamic Smagorinsky \cite{Germano:1991,Moin:1991} & None \\ - \ct{'DEARDORFF'} & Deardorff \cite{Deardorff:1980,Pope:2000} & \ct{C_DEARDORFF} \\ - \ct{'VREMAN'} & Vreman's eddy viscosity \cite{Vreman:2004} & \ct{C_VREMAN} \\ - \ct{'WALE'} & Wall-Adapting Local Eddy-viscosity \cite{Nicoud:1999} & \ct{C_WALE} \\ \hline - \end{tabular} - \end{table} +By default, FDS uses the WALE model of Nicoud and Ducros \cite{Nicoud:1999} for the eddy viscosity in the first off-wall grid cell because the test filtering operation for the Deardorff model is ill-defined near a wall. The WALE model has the advantage that the eddy viscosity tends to zero at the correct rate as you approach the wall where the no slip condition applies. - \subsubsection*{Near-Wall Turbulence Model} +As an alternative, you may choose to use the constant coefficient Smagorinsky \cite{Smagorinsky:1} model with Van Driest damping (see \cite{Wilcox:1}). To invoke this model, set \ct{NEAR_WALL_TURBULENCE_MODEL='VAN DRIEST'} on the \ct{SURF} line. - By default, FDS uses the WALE model of Nicoud and Ducros \cite{Nicoud:1999} for the eddy viscosity in the first off-wall grid cell because the test filtering operation for the Deardorff model is ill-defined near a wall. The WALE model has the advantage that the eddy viscosity tends to zero at the correct rate as you approach the wall where the no slip condition applies. +For diagnostic purposes, or in cases where neither of the other wall models above is appropriate, it is possible to set a constant value of the near wall kinematic eddy viscosity for a given \ct{SURF} using \linebreak[4]\ct{NEAR_WALL_EDDY_VISCOSITY}. - As an alternative, you may choose to use the constant coefficient Smagorinsky \cite{Smagorinsky:1} model with Van Driest damping (see \cite{Wilcox:1}). To invoke this model, set \ct{NEAR_WALL_TURBULENCE_MODEL='VAN DRIEST'} on the \ct{SURF} line. +Note that the near-wall turbulence model sets the eddy viscosity, $\mu_\mathrm{t}$, near the wall, \emph{not} the wall stress, $\tau_\mathrm{w}$. The wall stress depends on the choice of wall function, as discussed in Sec.~\ref{info:WALL_MODEL}. - For diagnostic purposes, or in cases where neither of the other wall models above is appropriate, it is possible to set a constant value of the near wall kinematic eddy viscosity for a given \ct{SURF} using \ct{NEAR_WALL_EDDY_VISCOSITY}. - Note that the near-wall turbulence model sets the eddy viscosity, $\mu_\mathrm{t}$, near the wall, \emph{not} the wall stress, $\tau_\mathrm{w}$. The wall stress depends on the choice of wall function, as discussed in Sec.~\ref{info:WALL_MODEL}. +\section{Numerical Stability Parameters} +\label{info:Stability_Constraints} +FDS uses an explicit time advancement scheme; thus, the time step plays an important role in maintaining numerical stability and accuracy. Below we examine the constraints on the time step necessary for stability in the presence of advection, diffusion, and expansion of the velocity and scalar fields. In addition, there are additional constraints that ensure accuracy of various algorithms. - \section{Numerical Stability Parameters} - \label{info:Stability_Constraints} +\subsection{The Courant-Friedrichs-Lewy (CFL) Constraint} +\label{info:CFL} - FDS uses an explicit time advancement scheme; thus, the time step plays an important role in maintaining numerical stability and accuracy. Below we examine the constraints on the time step necessary for stability in the presence of advection, diffusion, and expansion of the velocity and scalar fields. In addition, there are additional constraints that ensure accuracy of various algorithms. +The well-known CFL constraint given by +\begin{equation} + \mbox{CFL} = \delta t \frac{\|\mathbf{u}\|}{\Delta} < 1 +\end{equation} +places a restriction on the time step due to the advection velocity. The limits for the CFL are set by \ct{CFL_MIN} (default 0.8) and \ct{CFL_MAX} (default 1) on \ct{MISC}. Physically, the constraint says that a fluid element should not traverse more than one cell width, $\Delta$, within one time step, $\delta t$. For LES, this constraint has the added advantage of keeping the implicit temporal and spatial filters consistent with each other. In other words, in order to resolve an eddy of size $\Delta$, the time step needs to obey the CFL constraint. If one were to employ an implicit scheme for the purpose of taking time steps ten times larger than the CFL limit, the smallest resolvable turbulent motions would then be roughly ten times the grid spacing, which would severely limit the benefit of using LES. In most cases, if you want the simulation to run faster, a better strategy is to coarsen the grid resolution while keeping the CFL close to 1. - \subsection{The Courant-Friedrichs-Lewy (CFL) Constraint} - \label{info:CFL} +The exact CFL needed to maintain stability depends on the order (as well as other properties) of the time integration scheme and the choice of velocity norm. Four choices for velocity norm are available in FDS (set on \ct{MISC}): +\vskip\baselineskip +\noindent +\ct{CFL_VELOCITY_NORM=0} (corresponds to $L_\infty$ norm of velocity vector, despite the numerical code this is less restrictive than 1 or 2) +\begin{equation} + \frac{\|\mathbf{u}\|}{\Delta} = \max \left(\frac{|u|}{\delta x}, \frac{|v|}{\delta y}, \frac{|w|}{\delta z}\right) + |\nabla \cdot \bu| +\end{equation} +\ct{CFL_VELOCITY_NORM=1} (DNS and LES defaults, most restrictive, corresponds to $L_1$ norm of velocity vector) +\begin{equation} + \frac{\|\mathbf{u}\|}{\Delta} = \frac{|u|}{\delta x}+\frac{|v|}{\delta y}+\frac{|w|}{\delta z} + |\nabla \cdot \bu| +\end{equation} +\ct{CFL_VELOCITY_NORM=2} (VLES default, $L_2$ norm of velocity vector) +\begin{equation} + \frac{\|\mathbf{u}\|}{\Delta} = \sqrt{ \left( \frac{u}{\delta x} \right)^2 + \left( \frac{v}{\delta y} \right)^2 + \left( \frac{w}{\delta z} \right)^2 } + |\nabla \cdot \bu| +\end{equation} +\ct{CFL_VELOCITY_NORM=3} (SVLES default, least restrictive, corresponds to $L_\infty$ norm of velocity vector without the velocity divergence) +\begin{equation} + \frac{\|\mathbf{u}\|}{\Delta} = \max \left(\frac{|u|}{\delta x}, \frac{|v|}{\delta y}, \frac{|w|}{\delta z}\right) +\end{equation} +The last listed form of the constraint is the least restrictive, but also the most dangerous in the sense that a numerical instability is more likely to occur when the CFL constraint is least restrictive. This option is akin to a high optimization level of a computer program compiler---there is a trade-off between added speed and added risk of failure. - The well-known CFL constraint given by - \begin{equation} - \mbox{CFL} = \delta t \frac{\|\mathbf{u}\|}{\Delta} < 1 - \end{equation} - places a restriction on the time step due to the advection velocity. The limits for the CFL are set by \ct{CFL_MIN} (default 0.8) and \ct{CFL_MAX} (default 1) on \ct{MISC}. Physically, the constraint says that a fluid element should not traverse more than one cell width, $\Delta$, within one time step, $\delta t$. For LES, this constraint has the added advantage of keeping the implicit temporal and spatial filters consistent with each other. In other words, in order to resolve an eddy of size $\Delta$, the time step needs to obey the CFL constraint. If one were to employ an implicit scheme for the purpose of taking time steps ten times larger than the CFL limit, the smallest resolvable turbulent motions would then be roughly ten times the grid spacing, which would severely limit the benefit of using LES. In most cases, if you want the simulation to run faster, a better strategy is to coarsen the grid resolution while keeping the CFL close to 1. +Notice that the CFL norms 0-2 include the divergence of the velocity field. This is an added safeguard because often numerical instabilities arise when there is a sudden release of energy and a corresponding increase in the divergence within a single grid cell. In an explicit Euler update of the continuity equation, if the time increment is too large, the grid cell may be totally drained of mass, which is not physical. The constraint $\rho^{n+1}>0$ leads to the following restriction on the time step: +\begin{equation} + \label{eqn_dtmassrestrict} + \delta t < \frac{\rho^n}{\overline{\mathbf{u}}^n\cdot\nabla\rho^n + \rho^n \nabla\cdot\mathbf{u}^n} +\end{equation} +We can argue that the most concerning case is when $\rho^n$ is near zero. A reasonable approximation to (\ref{eqn_dtmassrestrict}) then becomes +\be +\label{eqn_divstability} +\delta t < \frac{\rho}{\overline{u}_i \left(\frac{\rho-0}{\delta x_i}\right) + \rho \nabla\cdot\mathbf{u}} += \left[ \frac{\overline{u}_i}{\delta x_i} + \nabla\cdot\mathbf{u} \right]^{-1} +\ee +Equation~(\ref{eqn_divstability}) adds the effect of thermal expansion to the CFL constraint. Further, note that the dot product implies summation over the subscripts $i$, which provides incentive for using the $L_1$ norm of the velocity vector as in \ct{CFL_VELOCITY_NORM=1}. - The exact CFL needed to maintain stability depends on the order (as well as other properties) of the time integration scheme and the choice of velocity norm. Four choices for velocity norm are available in FDS (set on \ct{MISC}): - \vskip\baselineskip - \noindent - \ct{CFL_VELOCITY_NORM=0} (corresponds to $L_\infty$ norm of velocity vector, despite the numerical code this is less restrictive than 1 or 2) - \begin{equation} - \frac{\|\mathbf{u}\|}{\Delta} = \max \left(\frac{|u|}{\delta x}, \frac{|v|}{\delta y}, \frac{|w|}{\delta z}\right) + |\nabla \cdot \bu| - \end{equation} - \ct{CFL_VELOCITY_NORM=1} (DNS and LES defaults, most restrictive, corresponds to $L_1$ norm of velocity vector) - \begin{equation} - \frac{\|\mathbf{u}\|}{\Delta} = \frac{|u|}{\delta x}+\frac{|v|}{\delta y}+\frac{|w|}{\delta z} + |\nabla \cdot \bu| - \end{equation} - \ct{CFL_VELOCITY_NORM=2} (VLES default, $L_2$ norm of velocity vector) - \begin{equation} - \frac{\|\mathbf{u}\|}{\Delta} = \sqrt{ \left( \frac{u}{\delta x} \right)^2 + \left( \frac{v}{\delta y} \right)^2 + \left( \frac{w}{\delta z} \right)^2 } + |\nabla \cdot \bu| - \end{equation} - \ct{CFL_VELOCITY_NORM=3} (SVLES default, least restrictive, corresponds to $L_\infty$ norm of velocity vector without the velocity divergence) - \begin{equation} - \frac{\|\mathbf{u}\|}{\Delta} = \max \left(\frac{|u|}{\delta x}, \frac{|v|}{\delta y}, \frac{|w|}{\delta z}\right) - \end{equation} - The last listed form of the constraint is the least restrictive, but also the most dangerous in the sense that a numerical instability is more likely to occur when the CFL constraint is least restrictive. This option is akin to a high optimization level of a computer program compiler---there is a trade-off between added speed and added risk of failure. - - Notice that the CFL norms 0-2 include the divergence of the velocity field. This is an added safeguard because often numerical instabilities arise when there is a sudden release of energy and a corresponding increase in the divergence within a single grid cell. In an explicit Euler update of the continuity equation, if the time increment is too large, the grid cell may be totally drained of mass, which is not physical. The constraint $\rho^{n+1}>0$ leads to the following restriction on the time step: - \begin{equation} - \label{eqn_dtmassrestrict} - \delta t < \frac{\rho^n}{\overline{\mathbf{u}}^n\cdot\nabla\rho^n + \rho^n \nabla\cdot\mathbf{u}^n} - \end{equation} - We can argue that the most concerning case is when $\rho^n$ is near zero. A reasonable approximation to (\ref{eqn_dtmassrestrict}) then becomes - \be - \label{eqn_divstability} - \delta t < \frac{\rho}{\overline{u}_i \left(\frac{\rho-0}{\delta x_i}\right) + \rho \nabla\cdot\mathbf{u}} - = \left[ \frac{\overline{u}_i}{\delta x_i} + \nabla\cdot\mathbf{u} \right]^{-1} - \ee - Equation~(\ref{eqn_divstability}) adds the effect of thermal expansion to the CFL constraint. Further, note that the dot product implies summation over the subscripts $i$, which provides incentive for using the $L_1$ norm of the velocity vector as in \ct{CFL_VELOCITY_NORM=1}. +\paragraph{Handling cells with large aspect ratios} - \paragraph{Handling cells with large aspect ratios} +In LES, it is usually better to use cubic cells to accurately capture turbulence. However, there are situations where elongated or pancake shaped cells become necessary for computational efficiency, usually in either tunnel or atmospheric flow applications. As the cell aspect ratio increases, the choice of velocity norm for the time step restriction becomes more important. Numerical experiments have shown that beyond an aspect ratio of about 4:1, using \ct{CFL_VELOCITY_NORM=1} is required to avoid unphysical oscillations in the ambient temperature. Thus, if not explicitly stated in the FDS input file, beyond a maximum cell aspect ratio of 4:1 FDS will automatically switch the stability check to use \ct{CFL_VELOCITY_NORM=1}. The velocity norm used by FDS is reported in the output file (\ct{CHID.out}). - In LES, it is usually better to use cubic cells to accurately capture turbulence. However, there are situations where elongated or pancake shaped cells become necessary for computational efficiency, usually in either tunnel or atmospheric flow applications. As the cell aspect ratio increases, the choice of velocity norm for the time step restriction becomes more important. Numerical experiments have shown that beyond an aspect ratio of about 4:1, using \ct{CFL_VELOCITY_NORM=1} is required to avoid unphysical oscillations in the ambient temperature. Thus, if not explicitly stated in the FDS input file, beyond a maximum cell aspect ratio of 4:1 FDS will automatically switch the stability check to use \ct{CFL_VELOCITY_NORM=1}. The velocity norm used by FDS is reported in the output file (\ct{CHID.out}). +\paragraph{Time step restrictions to avoid clipping} - \paragraph{Time step restrictions to avoid clipping} +If the CFL constraint is not sufficient to maintain realizable mass fractions ($0 \le Z_\alpha \le 1$) then FDS will attempt to redistribute mass to the neighboring cells, as discussed in the FDS Tech Guide \cite{FDS_Math_Guide}. If this fails, then a 10\% time step restriction will be applied and the mass transport equations will be reiterated. Controlling the number of time step restrictions is discussed in Sec.~\ref{info:CLIP}. - If the CFL constraint is not sufficient to maintain realizable mass fractions ($0 \le Z_\alpha \le 1$) then FDS will attempt to redistribute mass to the neighboring cells, as discussed in the FDS Tech Guide \cite{FDS_Math_Guide}. If this fails, then a 10\% time step restriction will be applied and the mass transport equations will be reiterated. Controlling the number of time step restrictions is discussed in Sec.~\ref{info:CLIP}. +\subsection{The Von Neumann Constraint} +\label{info:VN} - \subsection{The Von Neumann Constraint} - \label{info:VN} +The Von Neumann constraint is given by +\begin{equation} + \mbox{VN} \equiv 2 \; \delta t \; \max \left[ \frac{\mu}{\rho},D_\alpha \right] \; \left( \frac{1}{\delta x^2}+\frac{1}{\delta y^2}+\frac{1}{\delta z^2} \right) < 1 +\end{equation} +The limits for VN may be adjusted using \ct{VN_MIN} (default 0.8 for all forms of LES, 0.4 for DNS) and \linebreak[4]\ct{VN_MAX} (default 1.0 for all forms of LES, 0.5 for DNS) on \ct{MISC}. We can understand this constraint in a couple of different ways. First, we could consider the model for the diffusion velocity of species $\alpha$ in direction $i$, $V_{\alpha,i} Y_\alpha = -D_\alpha \; \partial Y_\alpha/\partial x_i$, and we would then see that VN is simply a CFL constraint due to diffusive transport. - The Von Neumann constraint is given by - \begin{equation} - \mbox{VN} \equiv 2 \; \delta t \; \max \left[ \frac{\mu}{\rho},D_\alpha \right] \; \left( \frac{1}{\delta x^2}+\frac{1}{\delta y^2}+\frac{1}{\delta z^2} \right) < 1 - \end{equation} - The limits for VN may be adjusted using \ct{VN_MIN} (default 0.8 for all forms of LES, 0.4 for DNS) and \linebreak[4]\ct{VN_MAX} (default 1.0 for all forms of LES, 0.5 for DNS) on \ct{MISC}. We can understand this constraint in a couple of different ways. First, we could consider the model for the diffusion velocity of species $\alpha$ in direction $i$, $V_{\alpha,i} Y_\alpha = -D_\alpha \; \partial Y_\alpha/\partial x_i$, and we would then see that VN is simply a CFL constraint due to diffusive transport. +We can also think of VN in terms of a total variation diminishing (TVD) constraint. That is, if we have variation (curvature) in the scalar field, we do not want to create spurious oscillations that can lead to an instability by overshooting the smoothing step. Consider the following explicit update of the heat equation for $u$ in 1-D. Here subscripts indicate grid indices and $\nu$ is the diffusivity. +\begin{equation} + u_i^{n+1} = u_i^n + \frac{\delta t \, \nu}{\delta x^2} (u_{i-1}^n - 2u_i^n + u_{i+1}^n ) +\end{equation} +Very simply, notice that if $\delta t \, \nu/\delta x^2 = 1/2$ then $u_i^{n+1} = (u_{i-1}^n + u_{i+1}^n)/2$. If the time step is any larger we overshoot the straight line connecting neighboring cell values. Of course, this restriction is only guaranteed to be TVD if the $u$ field is ``smooth''; otherwise, the neighboring cell values may be shifted in the opposite direction. Unfortunately, in LES there is no such guarantee and so the VN constraint can be particularly devilish in generating instabilities. For this reason, some practitioners like to employ implicit methods for the diffusive terms. The VN constraint is checked by default in all simulation modes. It may be turned off by setting \ct{CHECK_VN=F} on \ct{MISC}. - We can also think of VN in terms of a total variation diminishing (TVD) constraint. That is, if we have variation (curvature) in the scalar field, we do not want to create spurious oscillations that can lead to an instability by overshooting the smoothing step. Consider the following explicit update of the heat equation for $u$ in 1-D. Here subscripts indicate grid indices and $\nu$ is the diffusivity. - \begin{equation} - u_i^{n+1} = u_i^n + \frac{\delta t \, \nu}{\delta x^2} (u_{i-1}^n - 2u_i^n + u_{i+1}^n ) - \end{equation} - Very simply, notice that if $\delta t \, \nu/\delta x^2 = 1/2$ then $u_i^{n+1} = (u_{i-1}^n + u_{i+1}^n)/2$. If the time step is any larger we overshoot the straight line connecting neighboring cell values. Of course, this restriction is only guaranteed to be TVD if the $u$ field is ``smooth''; otherwise, the neighboring cell values may be shifted in the opposite direction. Unfortunately, in LES there is no such guarantee and so the VN constraint can be particularly devilish in generating instabilities. For this reason, some practitioners like to employ implicit methods for the diffusive terms. The VN constraint is checked by default in all simulation modes. It may be turned off by setting \ct{CHECK_VN=F} on \ct{MISC}. +\subsection{Stability of particle transport} +\label{info:PART_Stability} - \subsection{Stability of particle transport} - \label{info:PART_Stability} +The movement of Lagrangian particles over the course of a time step is calculated using an analytical solution and remains stable regardless of the time step used by the flow solver. However, if the particle moves over the width of several grid cells in a single time step, the momentum transferred between the particle and the gas cannot be allocated properly to all of the affected cells. To overcome this problem, FDS subdivides the gas phase time step based on each particle's velocity. For example, if the particle travels across two cells in a single gas phase time step, then its trajectory is calculated by subdividing the time step into two. - The movement of Lagrangian particles over the course of a time step is calculated using an analytical solution and remains stable regardless of the time step used by the flow solver. However, if the particle moves over the width of several grid cells in a single time step, the momentum transferred between the particle and the gas cannot be allocated properly to all of the affected cells. To overcome this problem, FDS subdivides the gas phase time step based on each particle's velocity. For example, if the particle travels across two cells in a single gas phase time step, then its trajectory is calculated by subdividing the time step into two. +In some cases with extremely fast particles, however, the stability of the overall flow behavior may require setting an additional parameter that limits the time step of the flow solver according to the speed of the fastest particle in the simulation. The actual value of of the constraint is limited to the range from \ct{PARTICLE_CFL_MIN} to \ct{PARTICLE_CFL_MAX} on the \ct{MISC} line. A value of 1 (default) means that the fastest moving particle can move a distance of one grid cell during the time step. Because very fast nozzle velocities can cause extremely small time steps and hence very long run times, the \ct{PARTICLE_CFL} constraint is set to \ct{F} by default. Setting \ct{PARTICLE_CFL} to \ct{T} on the \ct{MISC} line activates this constraint. - In some cases with extremely fast particles, however, the stability of the overall flow behavior may require setting an additional parameter that limits the time step of the flow solver according to the speed of the fastest particle in the simulation. The actual value of of the constraint is limited to the range from \ct{PARTICLE_CFL_MIN} to \ct{PARTICLE_CFL_MAX} on the \ct{MISC} line. A value of 1 (default) means that the fastest moving particle can move a distance of one grid cell during the time step. Because very fast nozzle velocities can cause extremely small time steps and hence very long run times, the \ct{PARTICLE_CFL} constraint is set to \ct{F} by default. Setting \ct{PARTICLE_CFL} to \ct{T} on the \ct{MISC} line activates this constraint. +\subsection{Heat Transfer Constraint} +\label{info:HT} - \subsection{Heat Transfer Constraint} - \label{info:HT} +Since heat flux has units of \unit{W/m^2}, a velocity scale may be formed from $(\dot{q}''_{\rm w}/\rho_{\rm w})^{1/3}$, where $\rho_{\rm w}$ is the gas phase density at the wall and $\dot{q}''_{\rm w}$ is the total heat flux (convective plus net radiative) at the wall. Anytime we have a velocity scale to resolve, we have a CFL-type stability restriction. Therefore, the heat transfer stability check loops over all wall cells to ensure $\delta t < (\delta x/2) / (\dot{q}''_{\rm w}/\rho_{\rm w})^{1/3}$. This check is invoked by setting \ct{CHECK_HT=T} on the \ct{MISC} line. It is \ct{F} by default. - Since heat flux has units of \unit{W/m^2}, a velocity scale may be formed from $(\dot{q}''_{\rm w}/\rho_{\rm w})^{1/3}$, where $\rho_{\rm w}$ is the gas phase density at the wall and $\dot{q}''_{\rm w}$ is the total heat flux (convective plus net radiative) at the wall. Anytime we have a velocity scale to resolve, we have a CFL-type stability restriction. Therefore, the heat transfer stability check loops over all wall cells to ensure $\delta t < (\delta x/2) / (\dot{q}''_{\rm w}/\rho_{\rm w})^{1/3}$. This check is invoked by setting \ct{CHECK_HT=T} on the \ct{MISC} line. It is \ct{F} by default. +\section{Flux Limiters} +\label{info:flux_limiters} +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}, which is 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. +\begin{lstlisting} + &MISC FLUX_LIMITER='GODUNOV' / ! invoke Godunov (first-order upwind scheme) +\end{lstlisting} - \section{Flux Limiters} - \label{info:flux_limiters} +\begin{table}[ht] + \caption[Flux limiter options]{Flux limiter options.} + \label{tab:flux_limiters} + \centering + \begin{tabular}{|l|l|} + \hline + Scheme & \ct{FLUX_LIMITER} \\ + \hline + Central differencing & \ct{'CENTRAL'} \\ + Godunov & \ct{'GODUNOV'} \\ + Superbee (VLES, SVLES default) & \ct{'SUPERBEE'} \\ + CHARM (DNS, LES default) & \ct{'CHARM'} \\ + \hline + \end{tabular} +\end{table} - 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}, which is 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. - \begin{lstlisting} - &MISC FLUX_LIMITER='GODUNOV' / ! invoke Godunov (first-order upwind scheme) - \end{lstlisting} - \begin{table}[ht] - \caption[Flux limiter options]{Flux limiter options.} - \label{tab:flux_limiters} - \centering - \begin{tabular}{|l|l|} - \hline - Scheme & \ct{FLUX_LIMITER} \\ - \hline - Central differencing & \ct{'CENTRAL'} \\ - Godunov & \ct{'GODUNOV'} \\ - Superbee (VLES, SVLES default) & \ct{'SUPERBEE'} \\ - CHARM (DNS, LES default) & \ct{'CHARM'} \\ - \hline - \end{tabular} - \end{table} +\section{Limiting the Bounds of Key Variables} +\label{info:CLIP} +The algorithms in FDS are designed to work within a certain range of values for density, temperature and mass fraction. To prevent unphysical results, there are bounds placed on these variables to prevent a single spurious value from causing a numerical instability. It also prevents out of range errors from calls to temperature-dependent look-up tables. By default, FDS determines the lowest and highest values of the variables based on your input, but it is not possible in all cases to anticipate just how low or high a given value might be. Thus, on rare occasions you might need to set upper or lower bounds on the density or temperature. Temperature and density bounds are input under the namelist group called \ct{CLIP}. The parameters are listed in Table~\ref{tbl:CLIP}. You only need to set these values if you notice that one of them appears to be ``cut off'' when examining the results in Smokeview. For typical fire scenarios, you need not set these values, but if you anticipate relatively low or high values in an unusual case, take a look at the calculation results to determine if a change in the bounds is needed. +\subsection{Temperature} +\label{info:CLIP:temp} - \section{Limiting the Bounds of Key Variables} - \label{info:CLIP} +The gas temperature is not solved for directly. Rather, the gas density and species mass fractions determine the gas temperature via the equation of state. Nevertheless, the calculation of the temperature of liquid droplets and solid obstructions do make use of temperature bounds. The default bounds are +\be +\min \left( T_\infty , T_{\rm m} \right) - 10 < T < 2727 \quad ^\circ {\rm C} +\ee +where $T_\infty$ is the user-specified ambient temperature and $T_{\rm m}$ is the melting temperature of water. These bounds are widened by user-specified temperatures, like an initial solid or droplet temperature. To set your own bounds, use \ct{MINIMUM_TEMPERATURE} and/or \ct{MAXIMUM_TEMPERATURE} on the \ct{CLIP} line. - The algorithms in FDS are designed to work within a certain range of values for density, temperature and mass fraction. To prevent unphysical results, there are bounds placed on these variables to prevent a single spurious value from causing a numerical instability. It also prevents out of range errors from calls to temperature-dependent look-up tables. By default, FDS determines the lowest and highest values of the variables based on your input, but it is not possible in all cases to anticipate just how low or high a given value might be. Thus, on rare occasions you might need to set upper or lower bounds on the density or temperature. Temperature and density bounds are input under the namelist group called \ct{CLIP}. The parameters are listed in Table~\ref{tbl:CLIP}. You only need to set these values if you notice that one of them appears to be ``cut off'' when examining the results in Smokeview. For typical fire scenarios, you need not set these values, but if you anticipate relatively low or high values in an unusual case, take a look at the calculation results to determine if a change in the bounds is needed. +One other consideration related to high temperatures is that FDS uses tabulated gas and solid property data up to a temperature of 5000~K. If for some reason you expect higher temperatures, set the integer parameter \ct{I_MAX_TEMP} on the \ct{MISC} line. This sets the upper dimension of many property arrays. Even though this parameter is an integer, it can be thought of as a maximum temperature in units of K. Note that temperature-dependent properties like specific heat at temperatures above 5000~K remain fixed, but integrated quantities like enthalpy take into account the higher temperature. - \subsection{Temperature} - \label{info:CLIP:temp} +\subsection{Density} +\label{info:CLIP:dens} - The gas temperature is not solved for directly. Rather, the gas density and species mass fractions determine the gas temperature via the equation of state. Nevertheless, the calculation of the temperature of liquid droplets and solid obstructions do make use of temperature bounds. The default bounds are - \be - \min \left( T_\infty , T_{\rm m} \right) - 10 < T < 2727 \quad ^\circ {\rm C} - \ee - where $T_\infty$ is the user-specified ambient temperature and $T_{\rm m}$ is the melting temperature of water. These bounds are widened by user-specified temperatures, like an initial solid or droplet temperature. To set your own bounds, use \ct{MINIMUM_TEMPERATURE} and/or \ct{MAXIMUM_TEMPERATURE} on the \ct{CLIP} line. +The density of the gas has a natural lower bound of zero, but if the density in a cell decreases to nearly zero, the temperature would then increase to an extremely high value due to the equation of state. Thus, by default, the density is kept within the following range: +\be +0.01 \; \unit{kg/m^3} < \rho < 100 \; \unit{kg/m^3} +\ee +To override the limits of density, specify \ct{MINIMUM_DENSITY} and/or \ct{MAXIMUM_DENSITY} on the \ct{CLIP} line in units of \unit{kg/m^3}. - One other consideration related to high temperatures is that FDS uses tabulated gas and solid property data up to a temperature of 5000~K. If for some reason you expect higher temperatures, set the integer parameter \ct{I_MAX_TEMP} on the \ct{MISC} line. This sets the upper dimension of many property arrays. Even though this parameter is an integer, it can be thought of as a maximum temperature in units of K. Note that temperature-dependent properties like specific heat at temperatures above 5000~K remain fixed, but integrated quantities like enthalpy take into account the higher temperature. +Clipping of density and mass fractions violates mass conservation, so it is preferable to avoid clipping if possible. As discussed in Sec.~\ref{info:Stability_Constraints}, the time step is set to adhere to the CFL constraints of the flow field. The proper \ct{DT} combined with flux limiters generally avoids the need for clipping. Beyond this, FDS then employs a mass redistribution scheme, as discussed in FDS Technical Guide~\cite{FDS_Math_Guide}. If this fails, there is yet one more attempt to avoid clipping---the time step is decreased by 10~\% ($\dt_{\mathrm{new}} = 0.9 \,\dt$) and the scalar transport equations are reiterated. This process is carried out a maximum of \ct{CLIP_DT_RESTRICTIONS_MAX} times; the default is 5. In some very extreme circumstances, this loop can drive the time step into numerical instability range ($\dt/\dt_{\mathrm{init}}$ < \ct{LIMITING_DT_RATIO}). You can control the max number of time step restrictions by setting the parameter \ct{CLIP_DT_RESTRICTIONS_MAX} on the \ct{CLIP} line (set to 0 to bypass the algorithm altogether). The number of restrictions (if any) is noted in the \ct{CHID.out} file for a given time step. - \subsection{Density} - \label{info:CLIP:dens} - The density of the gas has a natural lower bound of zero, but if the density in a cell decreases to nearly zero, the temperature would then increase to an extremely high value due to the equation of state. Thus, by default, the density is kept within the following range: - \be - 0.01 \; \unit{kg/m^3} < \rho < 100 \; \unit{kg/m^3} - \ee - To override the limits of density, specify \ct{MINIMUM_DENSITY} and/or \ct{MAXIMUM_DENSITY} on the \ct{CLIP} line in units of \unit{kg/m^3}. - Clipping of density and mass fractions violates mass conservation, so it is preferable to avoid clipping if possible. As discussed in Sec.~\ref{info:Stability_Constraints}, the time step is set to adhere to the CFL constraints of the flow field. The proper \ct{DT} combined with flux limiters generally avoids the need for clipping. Beyond this, FDS then employs a mass redistribution scheme, as discussed in FDS Technical Guide~\cite{FDS_Math_Guide}. If this fails, there is yet one more attempt to avoid clipping---the time step is decreased by 10~\% ($\dt_{\mathrm{new}} = 0.9 \,\dt$) and the scalar transport equations are reiterated. This process is carried out a maximum of \ct{CLIP_DT_RESTRICTIONS_MAX} times; the default is 5. In some very extreme circumstances, this loop can drive the time step into numerical instability range ($\dt/\dt_{\mathrm{init}}$ < \ct{LIMITING_DT_RATIO}). You can control the max number of time step restrictions by setting the parameter \ct{CLIP_DT_RESTRICTIONS_MAX} on the \ct{CLIP} line (set to 0 to bypass the algorithm altogether). The number of restrictions (if any) is noted in the \ct{CHID.out} file for a given time step. +\chapter{Changing the Initial Conditions} +\label{info:INIT} +Typically, an FDS simulation begins at time $t=0$~s with ambient conditions. The air temperature is assumed constant with height, and the density and pressure decrease with height (the $z$ direction). This decrease is not noticed in most building scale calculations, but it is important in large outdoor simulations. +There are some scenarios for which it is convenient to change the ambient conditions within rectangular regions of the domain using the namelist keyword \ct{INIT} (Table~\ref{tbl:INIT}). There can be multiple \ct{INIT} lines. If two more more rectangular regions defined by \ct{INIT} overlap, the last region takes precedence in the overlap. - \chapter{Changing the Initial Conditions} - \label{info:INIT} +\section{Gas Species} +\label{info:init_species} - Typically, an FDS simulation begins at time $t=0$~s with ambient conditions. The air temperature is assumed constant with height, and the density and pressure decrease with height (the $z$ direction). This decrease is not noticed in most building scale calculations, but it is important in large outdoor simulations. +Species concentrations can be initialized as follows: +\begin{lstlisting} + &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, + SPEC_ID(1)='OXYGEN', MASS_FRACTION(1)=0.23, + SPEC_ID(2)='PROPANE', MASS_FRACTION(2)=0.06 / +\end{lstlisting} +where \ct{XB} indicates a rectangular volume within the domain where the initial mass fractions of oxygen and propane will be initialized to 0.23 and 0.06, respectively. Note the following rules: +\begin{itemize} + \item The indices of \ct{SPEC_ID} and \ct{MASS_FRACTION} are not necessarily indicative of the order in which the species are listed in the input file, but rather should come in consecutive order starting from 1. + \item \ct{VOLUME_FRACTION(N)} can be used instead of \ct{MASS_FRACTION(N)} as long as they are not used together on the same input line. + \item Instead of specifying a \ct{MASS_FRACTION(N)} or \ct{VOLUME_FRACTION(N)}, you can specify a \linebreak[4]\ct{RAMP_MF_Z(N)} or \ct{RAMP_VF_Z(N)} to indicate a vertical profile. The corresponding \ct{RAMP} lines should use the parameter \ct{Z} for the height $z$ (m) and \ct{F} for the value of the mass or volume fraction. A single \ct{INIT} line can have both fixed and ramped values, but they must refer to either mass or volume fraction. + \item Specify all species components on the same \ct{INIT} line. + \item The initial concentration of the background gas species cannot be specified this way. The mass or volume fraction of the background species will be set to account for the unspecified fraction. + \item Any species listed must be individually tracked and not just a component of a lumped species. See Chapter~\ref{info:SPEC} for details. + \item You may use the shortcut \ct{DB='WHOLE DOMAIN'} in place of \ct{XB=...}, which is equivalent to specifying the entire domain as the region of initialization. +\end{itemize} - There are some scenarios for which it is convenient to change the ambient conditions within rectangular regions of the domain using the namelist keyword \ct{INIT} (Table~\ref{tbl:INIT}). There can be multiple \ct{INIT} lines. If two more more rectangular regions defined by \ct{INIT} overlap, the last region takes precedence in the overlap. - \section{Gas Species} - \label{info:init_species} +\section{Temperature and Pressure} +\label{info:init_temperature} +\label{info:MISC_Basics} - Species concentrations can be initialized as follows: - \begin{lstlisting} - &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, - SPEC_ID(1)='OXYGEN', MASS_FRACTION(1)=0.23, - SPEC_ID(2)='PROPANE', MASS_FRACTION(2)=0.06 / - \end{lstlisting} - where \ct{XB} indicates a rectangular volume within the domain where the initial mass fractions of oxygen and propane will be initialized to 0.23 and 0.06, respectively. Note the following rules: - \begin{itemize} - \item The indices of \ct{SPEC_ID} and \ct{MASS_FRACTION} are not necessarily indicative of the order in which the species are listed in the input file, but rather should come in consecutive order starting from 1. - \item \ct{VOLUME_FRACTION(N)} can be used instead of \ct{MASS_FRACTION(N)} as long as they are not used together on the same input line. - \item Instead of specifying a \ct{MASS_FRACTION(N)} or \ct{VOLUME_FRACTION(N)}, you can specify a \linebreak[4]\ct{RAMP_MF_Z(N)} or \ct{RAMP_VF_Z(N)} to indicate a vertical profile. The corresponding \ct{RAMP} lines should use the parameter \ct{Z} for the height $z$ (m) and \ct{F} for the value of the mass or volume fraction. A single \ct{INIT} line can have both fixed and ramped values, but they must refer to either mass or volume fraction. - \item Specify all species components on the same \ct{INIT} line. - \item The initial concentration of the background gas species cannot be specified this way. The mass or volume fraction of the background species will be set to account for the unspecified fraction. - \item Any species listed must be individually tracked and not just a component of a lumped species. See Chapter~\ref{info:SPEC} for details. - \item You may use the shortcut \ct{DB='WHOLE DOMAIN'} in place of \ct{XB=...}, which is equivalent to specifying the entire domain as the region of initialization. - \end{itemize} +You can set the ambient temperature and pressure using the following parameters on the \ct{MISC} line: +\begin{itemize} + \item \ct{P_INF} is the background pressure (at the ground) in Pa. The default is 101325 Pa. + \item \ct{TMPA} is the ambient temperature, the temperature of everything at the start of the simulation. The default is 20~\unit{\degreeCelsius}. +\end{itemize} +To modify the local initial temperature in certain regions of the domain, add lines of the form, +\begin{lstlisting} + &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, TEMPERATURE=60. / +\end{lstlisting} +This indicates that the temperature shall be 60~\unit{\degreeCelsius} instead of the ambient within the bounds given by \ct{XB}. The \ct{INIT} construct may be useful in examining the influence of stack effect in a building, where the temperature is different inside and outside. To initialize both temperature and species concentration in the same volume, use the same \ct{INIT} line, +\begin{lstlisting} + &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, + MASS_FRACTION(1)=0.23, SPEC_ID(1)='OXYGEN', + MASS_FRACTION(2)=0.06, SPEC_ID(2)='PROPANE', + TEMPERATURE=60. / +\end{lstlisting} +You can also specify a \ct{RAMP_TMP_Z} vertical profile. The corresponding \ct{RAMP} lines should use the parameter \ct{Z} for the height $z$ (m) and \ct{F} for the value of the temperature (\unit{\degreeCelsius}). - \section{Temperature and Pressure} - \label{info:init_temperature} - \label{info:MISC_Basics} +\section{Heat Release Rate Per Unit Volume} +\label{info:init_hrrpuv} - You can set the ambient temperature and pressure using the following parameters on the \ct{MISC} line: - \begin{itemize} - \item \ct{P_INF} is the background pressure (at the ground) in Pa. The default is 101325 Pa. - \item \ct{TMPA} is the ambient temperature, the temperature of everything at the start of the simulation. The default is 20~\unit{\degreeCelsius}. - \end{itemize} - To modify the local initial temperature in certain regions of the domain, add lines of the form, - \begin{lstlisting} - &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, TEMPERATURE=60. / - \end{lstlisting} - This indicates that the temperature shall be 60~\unit{\degreeCelsius} instead of the ambient within the bounds given by \ct{XB}. The \ct{INIT} construct may be useful in examining the influence of stack effect in a building, where the temperature is different inside and outside. To initialize both temperature and species concentration in the same volume, use the same \ct{INIT} line, - \begin{lstlisting} - &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, - MASS_FRACTION(1)=0.23, SPEC_ID(1)='OXYGEN', - MASS_FRACTION(2)=0.06, SPEC_ID(2)='PROPANE', - TEMPERATURE=60. / - \end{lstlisting} +The \ct{INIT} line may also be used to specify a volumetric heat source term. For example, +\begin{lstlisting} + &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, HRRPUV=1000., + RADIATIVE_FRACTION=0.25 / +\end{lstlisting} +indicates that the region bounded by \ct{XB} shall generate 1000~\unit{kW/m^3}, 25~\% of which is radiative. The default value of \ct{RADIATIVE_FRACTION} in this context is 0. This feature is mainly useful for diagnostics, or to model a fire in a very simple way. You may specify a time ramp for volumetric heat source via \ct{RAMP_Q}. For example, +\begin{lstlisting} + &RAMP ID='q1', T=0, F=0/ + &RAMP ID='q1', T=60, F=1/ + &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, HRRPUV=1000., RAMP_Q='q1' / +\end{lstlisting} +ramps the heat source up from 0 to 1000~\unit{kW/m^3} linearly over 60 seconds. - You can also specify a \ct{RAMP_TMP_Z} vertical profile. The corresponding \ct{RAMP} lines should use the parameter \ct{Z} for the height $z$ (m) and \ct{F} for the value of the temperature (\unit{\degreeCelsius}). +\section{Velocity Field} +\label{info:velo_restart} - \section{Heat Release Rate Per Unit Volume} - \label{info:init_hrrpuv} +\subsection{Default Initial Velocity Field} +\label{info:NOISE} - The \ct{INIT} line may also be used to specify a volumetric heat source term. For example, - \begin{lstlisting} - &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, HRRPUV=1000., RADIATIVE_FRACTION=0.25 / - \end{lstlisting} - indicates that the region bounded by \ct{XB} shall generate 1000~\unit{kW/m^3}, 25~\% of which is radiative. The default value of \ct{RADIATIVE_FRACTION} in this context is 0. This feature is mainly useful for diagnostics, or to model a fire in a very simple way. You may specify a time ramp for volumetric heat source via \ct{RAMP_Q}. For example, - \begin{lstlisting} - &RAMP ID='q1', T=0, F=0/ - &RAMP ID='q1', T=60, F=1/ - &INIT XB=0.0,0.1,0.0,0.025,0.0,0.1, HRRPUV=1000., RAMP_Q='q1' / - \end{lstlisting} - ramps the heat source up from 0 to 1000~\unit{kW/m^3} linearly over 60 seconds. +FDS initializes the flow field with a very small amount of ``noise'' to prevent the development of a perfectly symmetric flow when the boundary and initial conditions are perfectly symmetric. This is done by adding a random vortex to each cell. To turn this off, set \ct{NOISE=F}. To control the amount of noise (i.e., the maximum strength of the vortex), set \ct{NOISE_VELOCITY}. Its default value is 0.005~m/s. - \section{Velocity Field} - \label{info:velo_restart} +FDS uses a predefined random seed for the random number generator which ensures that each mesh is seeded with a different number. A predefined seed means that all simulations will use the same sequence of random numbers for a given mesh. You can change the random seed by specifying \ct{RND_SEED} on the \ct{MISC} line. This defines a constant value that is added to the predefined random seed on each mesh. - \subsection{Default Initial Velocity Field} - \label{info:NOISE} +\subsection{Turning off the Flow Field} +\label{info:freeze_velocity} - FDS initializes the flow field with a very small amount of ``noise'' to prevent the development of a perfectly symmetric flow when the boundary and initial conditions are perfectly symmetric. This is done by adding a random vortex to each cell. To turn this off, set \ct{NOISE=F}. To control the amount of noise (i.e., the maximum strength of the vortex), set \ct{NOISE_VELOCITY}. Its default value is 0.005~m/s. +For certain types of diagnostic tests, it is useful to turn off the velocity field and exercise some other aspect of the model, like radiation or particle transport. To do this, set \ct{FREEZE_VELOCITY=T} on the \ct{MISC} line. - FDS uses a predefined random seed for the random number generator which ensures that each mesh is seeded with a different number. A predefined seed means that all simulations will use the same sequence of random numbers for a given mesh. You can change the random seed by specifying \ct{RND_SEED} on the \ct{MISC} line. This defines a constant value that is added to the predefined random seed on each mesh. +\subsection{One-Dimensional Velocity Component Fields} +\label{info:ramp_velocity_1d} - \subsection{Turning off the Flow Field} - \label{info:freeze_velocity} +For diagnostic or verification purposes it may be useful to initialize velocity components with 1D fields. This can be used in combination with \ct{FREEZE_VELOCITY=T}, for example, to control precisely the amount of drag a particle sees, and so on. The linear fields are specified with the \ct{RAMP} functionality and the ramp is identified using \ct{RAMP_UX}, for example, on \ct{MISC} to specify variation of the $u$ component of velocity in the $x$ direction. Other velocity components and directions are specified similarly (see Table \ref{tbl:MISC}). +\begin{lstlisting} + &MISC FREEZE_VELOCITY=T, RAMP_UX='u1'/ + &RAMP ID='u1', X= 0, F=0 / + &RAMP ID='u1', X= 2, F=4 / + &RAMP ID='u1', X= 4, F=16/ +\end{lstlisting} - For certain types of diagnostic tests, it is useful to turn off the velocity field and exercise some other aspect of the model, like radiation or particle transport. To do this, set \ct{FREEZE_VELOCITY=T} on the \ct{MISC} line. +\section{Nonuniform Initial Fields: Velocity, Temperature, Species} +\label{info:CSVF} - \subsection{One-Dimensional Velocity Component Fields} - \label{info:ramp_velocity_1d} +It may be useful to start a calculation from an established flow field. Usually this can be accomplished with the normal restart functionality, but you may want to specify your own flow field throughout the domain. This section discusses how this may be done for velocity, temperature, and tracked species. - For diagnostic or verification purposes it may be useful to initialize velocity components with 1D fields. This can be used in combination with \ct{FREEZE_VELOCITY=T}, for example, to control precisely the amount of drag a particle sees, and so on. The linear fields are specified with the \ct{RAMP} functionality and the ramp is identified using \ct{RAMP_UX}, for example, on \ct{MISC} to specify variation of the $u$ component of velocity in the $x$ direction. Other velocity components and directions are specified similarly (see Table \ref{tbl:MISC}). - \begin{lstlisting} - &MISC FREEZE_VELOCITY=T, RAMP_UX='u1'/ - &RAMP ID='u1', X= 0, F=0 / - &RAMP ID='u1', X= 2, F=4 / - &RAMP ID='u1', X= 4, F=16/ - \end{lstlisting} +The fields are stored in a comma-separated value (.csv) files. You have the option of creating these files using FDS or on your own. To generate the file(s) with FDS, specify the time interval between outputs using \ct{DT_UVW}, \ct{DT_TMP}, and \ct{DT_SPEC}, for velocity, temperature, and species, respectively, on the \ct{DUMP} line; you may also use \ct{RAMP_***} (see Sec.~\ref{info:DT_DUMP}). For example, if you want to write the velocity, temperature, species fields every 10 minutes, add the following: +\begin{lstlisting} + &DUMP DT_UVW=600, DT_TMP=600, DT_SPEC=600 / +\end{lstlisting} +FDS will then write \ct{CHID_uvw_tN_mM.csv}, etc., for each time, \ct{N}, and mesh, \ct{M}. - \section{Nonuniform Initial Fields: Velocity, Temperature, Species} - \label{info:CSVF} +\subsection*{Velocity format} +The format of the files is very simple. They are ASCII formatted files, comma-separated, with integer header and double-precision real data. The top row just indicates the structured mesh extents (relative to a specific mesh). For velocity, note that the raw data values are face centered with index 1 denoting the + side of the face. Hence, \ct{IMIN} will usually be 0, representing the left mesh boundary. (It is perhaps easiest to understand the format by just opening a file that FDS has written for you.) +\begin{lstlisting} + WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX + DO K=KMIN,KMAX + DO J=JMIN,JMAX + DO I=IMIN,IMAX + WRITE(LU_UVW,*) U(I,J,K),',',V(I,J,K),',',W(I,J,K) ! units are m/s + ENDDO + ENDDO + ENDDO +\end{lstlisting} - It may be useful to start a calculation from an established flow field. Usually this can be accomplished with the normal restart functionality, but you may want to specify your own flow field throughout the domain. This section discusses how this may be done for velocity, temperature, and tracked species. +\subsection*{Temperature format} +Similarly, for temperature, except temperature is a scalar stored at the cell center. Hence \ct{IMIN} will usually be 1. Note that units are in K. +\begin{lstlisting} + WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX + DO K=KMIN,KMAX + DO J=JMIN,JMAX + DO I=IMIN,IMAX + WRITE(LU_TMP,*) TMP(I,J,K) ! units are K + ENDDO + ENDDO + ENDDO +\end{lstlisting} - The fields are stored in a comma-separated value (.csv) files. You have the option of creating these files using FDS or on your own. To generate the file(s) with FDS, specify the time interval between outputs using \ct{DT_UVW}, \ct{DT_TMP}, and \ct{DT_SPEC}, for velocity, temperature, and species, respectively, on the \ct{DUMP} line; you may also use \ct{RAMP_***} (see Sec.~\ref{info:DT_DUMP}). For example, if you want to write the velocity, temperature, species fields every 10 minutes, add the following: - \begin{lstlisting} - &DUMP DT_UVW=600, DT_TMP=600, DT_SPEC=600 / - \end{lstlisting} - FDS will then write \ct{CHID_uvw_tN_mM.csv}, etc., for each time, \ct{N}, and mesh, \ct{M}. +\subsection*{Species format} +Tracked species are written out as a comma-separated list with each cell as a row in the file. Similar to temperature, species mass fractions are scalars that live at the cell centers. +\begin{lstlisting} + WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX + DO K=KMIN,KMAX + DO J=JMIN,JMAX + DO I=IMIN,IMAX + ! FMT is comma-separated + ! units are mass fraction + WRITE(LU_SPEC,FMT) ( ZZ(I,J,K,N), N=1,N_TRACKED_SPECIES ) + ENDDO + ENDDO + ENDDO +\end{lstlisting} - \subsection*{Velocity format} - The format of the files is very simple. They are ASCII formatted files, comma-separated, with integer header and double-precision real data. The top row just indicates the structured mesh extents (relative to a specific mesh). For velocity, note that the raw data values are face centered with index 1 denoting the + side of the face. Hence, \ct{IMIN} will usually be 0, representing the left mesh boundary. (It is perhaps easiest to understand the format by just opening a file that FDS has written for you.) - \begin{lstlisting} - WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX - DO K=KMIN,KMAX - DO J=JMIN,JMAX - DO I=IMIN,IMAX - WRITE(LU_UVW,*) U(I,J,K),',',V(I,J,K),',',W(I,J,K) ! units are m/s - ENDDO - ENDDO - ENDDO - \end{lstlisting} +\subsection*{Reading the Fields} - \subsection*{Temperature format} - Similarly, for temperature, except temperature is a scalar stored at the cell center. Hence \ct{IMIN} will usually be 1. Note that units are in K. - \begin{lstlisting} - WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX - DO K=KMIN,KMAX - DO J=JMIN,JMAX - DO I=IMIN,IMAX - WRITE(LU_TMP,*) TMP(I,J,K) ! units are K - ENDDO - ENDDO - ENDDO - \end{lstlisting} +You may read in the 3-D fields using a \ct{CSVF} line. Only one \ct{CSVF} line is allowed. For example: +\begin{lstlisting} + &CSVF UVWFILE ='my_velocity_field.csv', + TMPFILE ='my_temperature_field.csv' + SPECFILE='my_species_field.csv' / +\end{lstlisting} +If multiple meshes are involved, enter the name of the first \ct{.csv} file only. The file must end in ``\ct{1.csv}''. FDS will increment the mesh number to the total number of meshes. For example, if you had 16 meshes you can use +\begin{lstlisting} + &CSVF UVWFILE ='CHID_uvw_t1_m1.csv', + TMPFILE ='CHID_tmp_t1_m1.csv', + SPECFILE='CHID_spec_t1_m1.csv' / +\end{lstlisting} +and FDS will read, for example, \ct{CHID_uvw_t1_m1.csv} through \ct{CHID_uvw_t1_m16.csv} in the order of the \ct{MESH} lines (note that a \ct{MULT} line for the meshes may also be used). - \subsection*{Species format} - Tracked species are written out as a comma-separated list with each cell as a row in the file. Similar to temperature, species mass fractions are scalars that live at the cell centers. - \begin{lstlisting} - WRITE(LU_UVW) IMIN,IMAX,JMIN,JMAX,KMIN,KMAX - DO K=KMIN,KMAX - DO J=JMIN,JMAX - DO I=IMIN,IMAX - ! FMT is comma-separated - ! units are mass fraction - WRITE(LU_SPEC,FMT) ( ZZ(I,J,K,N), N=1,N_TRACKED_SPECIES ) - ENDDO - ENDDO - ENDDO - \end{lstlisting} +\subsection{Unfreezing the Initial Flow Field} +\label{info:FREZ} - \subsection*{Reading the Fields} +It may be useful to allow the solid phase to respond to an established flow field at the start of a simulation. This could be accomplished with the normal restart functionality; however, this limits the number of changes that can be made to the model before a restart is made. The \ct{UNFREEZE_TIME} parameter on the \ct{MISC} line can be used for this purpose. When set, the initial flow field is frozen with the options \ct{FREEZE_VELOCITY}, \ct{SOLID_PHASE_ONLY}, and \ct{LOCK_TIME_STEP} set until the simulation time exceeds \ct{UNFREEZE_TIME}. It may also be useful to set the initial time step \ct{DT} to a larger value. It may be necessary to set \linebreak[4]\ct{LIMITING_DT_RATIO} to a lower value than the default if the fixed \ct{DT} while the flow field is frozen is much larger than that calculated by the stability conditions. An example configuration with a frozen flow field is shown below. +\begin{lstlisting} + &TIME DT=1.0, T_END=120.0, LIMITING_DT_RATIO=1e-6 / + &MISC UNFREEZE_TIME=90, / + &CSVF UVWFILE ='CHID_uvw_t1_m1.csv', + TMPFILE ='CHID_tmp_t1_m1.csv', + SPECFILE='CHID_spec_t1_m1.csv' / +\end{lstlisting} +The example will read in an initial flow field using the \ct{CSVF} files, then allow the solids to heat for 90 seconds at a time step of 1 seconds (90 time steps total). The flow field will then be unfrozen for the remaining 30 seconds of simulation time. - You may read in the 3-D fields using a \ct{CSVF} line. Only one \ct{CSVF} line is allowed. For example: - \begin{lstlisting} - &CSVF UVWFILE ='my_velocity_field.csv', - TMPFILE ='my_temperature_field.csv' - SPECFILE='my_species_field.csv' / - \end{lstlisting} - If multiple meshes are involved, enter the name of the first \ct{.csv} file only. The file must end in ``\ct{1.csv}''. FDS will increment the mesh number to the total number of meshes. For example, if you had 16 meshes you can use - \begin{lstlisting} - &CSVF UVWFILE ='CHID_uvw_t1_m1.csv', - TMPFILE ='CHID_tmp_t1_m1.csv', - SPECFILE='CHID_spec_t1_m1.csv' / - \end{lstlisting} - and FDS will read, for example, \ct{CHID_uvw_t1_m1.csv} through \ct{CHID_uvw_t1_m16.csv} in the order of the \ct{MESH} lines (note that a \ct{MULT} line for the meshes may also be used). +\section{Gravity} +\label{info:GVEC} - \subsection{Unfreezing the Initial Flow Field} - \label{info:FREZ} +By default, gravity points in the negative $z$ direction, or more simply, downward. However, to change the direction of gravity to model a sloping roof or tunnel, for example, specify the gravity vector on the \ct{MISC} line with a triplet of numbers of the form \ct{GVEC=0.,0.,-9.81}, with units of \unit{m/s^2}. This is the default, but it can be changed to be any direction. - It may be useful to allow the solid phase to respond to an established flow field at the start of a simulation. This could be accomplished with the normal restart functionality; however, this limits the number of changes that can be made to the model before a restart is made. The \ct{UNFREEZE_TIME} parameter on the \ct{MISC} line can be used for this purpose. When set, the initial flow field is frozen with the options \ct{FREEZE_VELOCITY}, \ct{SOLID_PHASE_ONLY}, and \ct{LOCK_TIME_STEP} set until the simulation time exceeds \ct{UNFREEZE_TIME}. It may also be useful to set the initial time step \ct{DT} to a larger value. It may be necessary to set \ct{LIMITING_DT_RATIO} to a lower value than the default if the fixed \ct{DT} while the flow field is frozen is much larger than that calculated by the stability conditions. An example configuration with a frozen flow field is shown below. - \begin{lstlisting} - &TIME DT=1.0, T_END=120.0, LIMITING_DT_RATIO=1e-6 / - &MISC UNFREEZE_TIME=90, / - &CSVF UVWFILE ='CHID_uvw_t1_m1.csv', - TMPFILE ='CHID_tmp_t1_m1.csv', - SPECFILE='CHID_spec_t1_m1.csv' / - \end{lstlisting} - The example will read in an initial flow field using the \ct{CSVF} files, then allow the solids to heat for 90 seconds at a time step of 1 seconds (90 time steps total). The flow field will then be unfrozen for the remaining 30 seconds of simulation time. +There are a few special applications where you might want to vary the gravity vector as a function of time or as a function of the first spatial coordinate, $x$. For example, on board space craft, small motions can cause temporal changes in the normally zero level of gravity, an effect known as ``g-jitter.'' More commonly, in tunnel fire simulations, it is sometimes convenient to change the direction of gravity to mimic the change in slope. The slope of the tunnel might change as you travel through it; thus, you can tell FDS where to redirect gravity. For either a spatially or temporally varying direction and/or magnitude of gravity, do the following. First, on the \ct{MISC} line, set the three components of gravity, \ct{GVEC}, to some ``base'' state like \ct{GVEC=1.,1.,1.}, which gives you the flexibility to vary all three components. Next, designate ``ramps'' for the individual components, \ct{RAMP_GX}, \ct{RAMP_GY}, and \ct{RAMP_GZ}, all of which are specified on the \ct{MISC} line. There is more discussion of \ct{RAMP}s in Sec.~\ref{info:RAMP}, but for now you can use the following as a simple template to follow: +\begin{lstlisting} + &MISC GVEC=1.,0.,1., RAMP_GX='x-ramp', RAMP_GZ='z-ramp' / + + &RAMP ID='x-ramp', X= 0., F=0.0 / + &RAMP ID='x-ramp', X= 50., F=0.0 / + &RAMP ID='x-ramp', X= 51., F=-0.49 / + &RAMP ID='x-ramp', X=100., F=-0.49 / + + &RAMP ID='z-ramp', X= 0., F=-9.81 / + &RAMP ID='z-ramp', X= 50., F=-9.81 / + &RAMP ID='z-ramp', X= 51., F=-9.80 / + &RAMP ID='z-ramp', X=100., F=-9.80 / +\end{lstlisting} +Note that both the $x$ and $z$ components of gravity are functions of $x$. FDS has been programmed to only allow variation in the $x$ coordinate. Note also that \ct{F} is just a multiplier of the ``base'' gravity vector components, given by \ct{GVEC}. This is why using the number 1 is convenient -- it allows you to specify the gravity components on the \ct{RAMP} lines directly. The effect of these lines is to model the first 50~m of a tunnel without a slope, but the second 50~m with a 5~\% slope upwards. Note that the angle from vertical of the gravity vector due to a 5~\% slope is $\tan^{-1} 0.05=\ang{2.86}$ and that 0.49 and 9.80 are equal to the magnitude of the gravity vector, 9.81~\unit{m/s^2}, multiplied by the sine and cosine of 2.86\unit{\degree}, respectively. To check your math, the square root of the sum of the squares of the gravity components ought to equal 9.81. Notice in this case that the $y$ direction has been left out because there is no $y$ variation in the gravity vector. +To vary the direction and/or magnitude of gravity in time, follow the same procedure but replace the \ct{X} in the \ct{RAMP} +lines with a \ct{T}. - \section{Gravity} - \label{info:GVEC} +Note that in a case with sprinklers, changing \ct{GVEC} will change how droplets move in the gas but not how droplets move on solid surfaces. On solid surfaces droplet movement will always consider down to be the negative-z direction. - By default, gravity points in the negative $z$ direction, or more simply, downward. However, to change the direction of gravity to model a sloping roof or tunnel, for example, specify the gravity vector on the \ct{MISC} line with a triplet of numbers of the form \ct{GVEC=0.,0.,-9.81}, with units of \unit{m/s^2}. This is the default, but it can be changed to be any direction. - There are a few special applications where you might want to vary the gravity vector as a function of time or as a function of the first spatial coordinate, $x$. For example, on board space craft, small motions can cause temporal changes in the normally zero level of gravity, an effect known as ``g-jitter.'' More commonly, in tunnel fire simulations, it is sometimes convenient to change the direction of gravity to mimic the change in slope. The slope of the tunnel might change as you travel through it; thus, you can tell FDS where to redirect gravity. For either a spatially or temporally varying direction and/or magnitude of gravity, do the following. First, on the \ct{MISC} line, set the three components of gravity, \ct{GVEC}, to some ``base'' state like \ct{GVEC=1.,1.,1.}, which gives you the flexibility to vary all three components. Next, designate ``ramps'' for the individual components, \ct{RAMP_GX}, \ct{RAMP_GY}, and \ct{RAMP_GZ}, all of which are specified on the \ct{MISC} line. There is more discussion of \ct{RAMP}s in Sec.~\ref{info:RAMP}, but for now you can use the following as a simple template to follow: - \begin{lstlisting} - &MISC GVEC=1.,0.,1., RAMP_GX='x-ramp', RAMP_GZ='z-ramp' / - &RAMP ID='x-ramp', X= 0., F=0.0 / - &RAMP ID='x-ramp', X= 50., F=0.0 / - &RAMP ID='x-ramp', X= 51., F=-0.49 / - &RAMP ID='x-ramp', X=100., F=-0.49 / - &RAMP ID='z-ramp', X= 0., F=-9.81 / - &RAMP ID='z-ramp', X= 50., F=-9.81 / - &RAMP ID='z-ramp', X= 51., F=-9.80 / - &RAMP ID='z-ramp', X=100., F=-9.80 / - \end{lstlisting} - Note that both the $x$ and $z$ components of gravity are functions of $x$. FDS has been programmed to only allow variation in the $x$ coordinate. Note also that \ct{F} is just a multiplier of the ``base'' gravity vector components, given by \ct{GVEC}. This is why using the number 1 is convenient -- it allows you to specify the gravity components on the \ct{RAMP} lines directly. The effect of these lines is to model the first 50~m of a tunnel without a slope, but the second 50~m with a 5~\% slope upwards. Note that the angle from vertical of the gravity vector due to a 5~\% slope is $\tan^{-1} 0.05=\ang{2.86}$ and that 0.49 and 9.80 are equal to the magnitude of the gravity vector, 9.81~\unit{m/s^2}, multiplied by the sine and cosine of 2.86\unit{\degree}, respectively. To check your math, the square root of the sum of the squares of the gravity components ought to equal 9.81. Notice in this case that the $y$ direction has been left out because there is no $y$ variation in the gravity vector. - To vary the direction and/or magnitude of gravity in time, follow the same procedure but replace the \ct{X} in the \ct{RAMP} - lines with a \ct{T}. - Note that in a case with sprinklers, changing \ct{GVEC} will change how droplets move in the gas but not how droplets move on solid surfaces. On solid surfaces droplet movement will always consider down to be the negative-z direction. +\chapter{Pressure} +\label{info:PRES} +Normally, you need not set any parameters related to the solution of the Poisson equation for pressure. However, there are circumstances when you might need to change default numerical values. This is done through the \ct{PRES} namelist group (Table~\ref{tbl:PRES}). +A unique feature of FDS, which distinguishes it from other CFD models, is that it employs a low Mach number approximation of the Navier-Stokes equations. For low speed flow simulations, it can be assumed that sound waves and pressure disturbances travel infinitely fast, rather than at the speed of sound, which is approximately 340~m/s at ambient temperature and pressure. Typical compartment fires induce flows of a few tens of meters per second, much less than the sound speed. However, for a simulation of a fire within a 1000~m tunnel, say, the propagation time of disturbances is a few seconds. If the tunnel has forced flow at one end and an opening at the other, it would take a few seconds for the pressure pulse from the fan to reach the opposite end. However, in the low Mach number formulation, the pulse reaches the other end instantaneously. +In FDS, the pressure, $p(\bx,t)$, a function of space and time, is decomposed into a ``background'' component, $\overline{p}(z,t)$, and a perturbation, $\tp(\bx,t)$. The background pressure is a function only of time and the vertical spatial coordinate, $z$, which accounts for the ambient stratification of the atmosphere. For a typical compartment fire simulation that is open to the atmosphere, $\overline{p}$ is essentially constant. The perturbation pressure drives the fire-induced flow field. +The equation for $\tp$ is an elliptic partial differential equation (PDE) that is formed by taking the divergence of the momentum equation, which contains the forcing term $\nabla \tp / \rho$. Ideally, this PDE would be of the form: +\be +\nabla \cdot \left( \frac{1}{\rho} \right) \nabla \tp = \; \cdots +\ee +The discretized form of this PDE, that is, its approximation on a numerical grid, is a linear system of equations, $\mathbf{A} \mathbf{\tp} = \mathbf{b}$, where $\mathbf{A}$ is a sparse (i.e. mostly zeros) matrix, $\mathbf{\tp}$ is a vector whose number of elements equals the number of grid cells in the computational domain, and $\mathbf{b}$ is a vector representing the various discretized terms of the momentum equation. The CPU and memory requirements necessary to solve this huge system of equations could easily dwarf all other parts of the simulation. There are two remedies to this problem. First, the pressure field is solved within each individual mesh of the domain, and the individual pressure fields are ``stitched'' together using multiple iterations of the solver. Second, the matrix $\mathbf{A}$, representing the operator $\nabla \cdot (1/\rho) \nabla$ is simplified by replacing the variable density $\rho(\bx,t)$ by its ambient value so that the matrix $\mathbf{A}$ need not be recomputed at each time step, and a very fast and efficient solver using fast Fourier transforms (FFT) can be used. - \chapter{Pressure} - \label{info:PRES} - - Normally, you need not set any parameters related to the solution of the Poisson equation for pressure. However, there are circumstances when you might need to change default numerical values. This is done through the \ct{PRES} namelist group (Table~\ref{tbl:PRES}). - - A unique feature of FDS, which distinguishes it from other CFD models, is that it employs a low Mach number approximation of the Navier-Stokes equations. For low speed flow simulations, it can be assumed that sound waves and pressure disturbances travel infinitely fast, rather than at the speed of sound, which is approximately 340~m/s at ambient temperature and pressure. Typical compartment fires induce flows of a few tens of meters per second, much less than the sound speed. However, for a simulation of a fire within a 1000~m tunnel, say, the propagation time of disturbances is a few seconds. If the tunnel has forced flow at one end and an opening at the other, it would take a few seconds for the pressure pulse from the fan to reach the opposite end. However, in the low Mach number formulation, the pulse reaches the other end instantaneously. - - In FDS, the pressure, $p(\bx,t)$, a function of space and time, is decomposed into a ``background'' component, $\overline{p}(z,t)$, and a perturbation, $\tp(\bx,t)$. The background pressure is a function only of time and the vertical spatial coordinate, $z$, which accounts for the ambient stratification of the atmosphere. For a typical compartment fire simulation that is open to the atmosphere, $\overline{p}$ is essentially constant. The perturbation pressure drives the fire-induced flow field. - - The equation for $\tp$ is an elliptic partial differential equation (PDE) that is formed by taking the divergence of the momentum equation, which contains the forcing term $\nabla \tp / \rho$. Ideally, this PDE would be of the form: - \be - \nabla \cdot \left( \frac{1}{\rho} \right) \nabla \tp = \; \cdots - \ee - The discretized form of this PDE, that is, its approximation on a numerical grid, is a linear system of equations, $\mathbf{A} \mathbf{\tp} = \mathbf{b}$, where $\mathbf{A}$ is a sparse (i.e. mostly zeros) matrix, $\mathbf{\tp}$ is a vector whose number of elements equals the number of grid cells in the computational domain, and $\mathbf{b}$ is a vector representing the various discretized terms of the momentum equation. The CPU and memory requirements necessary to solve this huge system of equations could easily dwarf all other parts of the simulation. There are two remedies to this problem. First, the pressure field is solved within each individual mesh of the domain, and the individual pressure fields are ``stitched'' together using multiple iterations of the solver. Second, the matrix $\mathbf{A}$, representing the operator $\nabla \cdot (1/\rho) \nabla$ is simplified by replacing the variable density $\rho(\bx,t)$ by its ambient value so that the matrix $\mathbf{A}$ need not be recomputed at each time step, and a very fast and efficient solver using fast Fourier transforms (FFT) can be used. - - In the next two sections, these simplifications of the Poisson equation will be discussed, along with parameters that you might need to set to increase the accuracy of the solution for certain applications. - - - \section{Accuracy of the Pressure Solver} - \label{pressure_solver} - - For a single mesh, the solution of the simplified (i.e. separable) form of the Poisson equation for the pressure can be solved relatively quickly and accurately (i.e. to machine precision) using an FFT-based solver. However, for multiple meshes of varying grid resolution and configuration, it is not possible to use the fast solver for the global solution of the Poisson equation. Instead, the fast solver is employed mesh by mesh in parallel, and the pressure field on each mesh is forced to match at the mesh boundaries through repeated solves on the individual meshes. It is prohibitively time-consuming to iterate the global pressure solution to the same level of accuracy as the local pressure solutions. The inaccuracy of the global pressure solution is manifested in a slight mismatch in the normal component of velocity at the mesh boundaries. An error tolerance is specified for this mismatch in velocity. These small errors in the normal component of velocity also appear within an individual mesh at solid, internal boundaries. The fast, FFT-based solver can only enforce exact no-flux conditions at exterior boundaries of the mesh. - - If either the error in the normal component of the velocity at a mesh interface or at a solid boundary is large, you can reduce it by making more than the default number of calls to the pressure solver at each time step. To do so, specify \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to be the maximum allowable normal velocity component on the solid boundary or the largest error at a mesh interface. It is in units of m/s. If you set this, experiment with different values, and monitor the number of pressure iterations required at each time step to achieve your desired tolerance. The default value is $\dx/2$, where $\dx$ is the characteristic grid cell size. The number of iterations are written out to the file \ct{CHID.out}. If you use a value that is too large, the CPU time required might be prohibitive. The maximum number of iterations for each half of the time step is given by \ct{MAX_PRESSURE_ITERATIONS}, also on the \ct{PRES} line. Its default value is 10. To have the predictor step be limited to a different number, use \ct{MAX_PREDICTOR_PRESSURE_ITERATIONS}. - - The pressure solution will also be iterated if the solution of the inseparable Poisson equation for pressure has an error larger than \ct{PRESSURE_TOLERANCE} with a default value of $20/\dx^2$. - - To verify the accuracy of the pressure solution on each mesh, set \ct{CHECK_POISSON} to \ct{T} on the \ct{PRES} line, instructing FDS to check that the left-hand and right-hand sides of the Poisson equation are equivalent (see the FDS Tech Guide \cite{FDS_Math_Guide}). The error is printed to the \ct{CHID.out} file. Note that this verifies the accuracy of the {\em local}, not the global, pressure solution. To check the accuracy of the global pressure solution, see Sec.~\ref{tunnel_demo}. - - It is possible for the pressure iteration scheme to seem ``stuck''---the solution convergence rate may slow dramatically and further iterations are only consuming cpu resources without improving the solution. You can tell FDS to break out of these situations prior to hitting the maximum number of iterations by setting \ct{SUSPEND_PRESSURE_ITERATIONS=T} on the \ct{PRES} line. FDS will then suspend the pressure iterations if the error does not drop below \ct{ITERATION_SUSPEND_FACTOR} (0.95, by default) of its previous value. - - - \subsection{Optional Pressure Solvers} - \label{optional_pressure_solver} - - The default Poisson solver in FDS (\ct{SOLVER='FFT'} on the \ct{PRES} line) is based on the package of linear algebra routines called CrayFishpak. However, in certain circumstances you may need to use one of several alternatives that are based on the Intel\textsuperscript{\textregistered} MKL Sparse Cluster Solver or the HYPRE solver library from Lawrence Livermore National Laboratories (LLNL) \cite{HYPRE}. - \begin{itemize} - \item \ct{SOLVER='ULMAT'} This solver is useful when the computational domain has relatively small, sealed cavities enclosed with thin (i.e. zero cell thick) walls. The small error in the normal component of velocity that you incur with the FFT solver can lead to unphysical changes in temperature, density and pressure that may eventually cause the calculation to become numerically unstable. For example, suppose you have hollow steel columns or hollow aluminum ducts with thin walls and you want to simulate the heat penetration within these spaces. - - With the \ct{ULMAT} solver, the unknown values of the pressure live only in gas-phase cells, allowing for the normal components of velocity at a solid surface to be computed exactly with no penetration error. Strictly speaking, in this mode, FDS is no longer using an ``immersed boundary method'' for flow obstructions---the pressure solution is now ``unstructured,'' hence the \ct{U} in its name. This solver does not guarantee that the normal component of velocity matches perfectly at mesh boundaries, and the iterative procedure used by the default \ct{'FFT'} solver is still used to drive the mesh interface velocity normals closer together. This solver option does allow for refinement at mesh boundaries and for internal sealed regions within the domain for which additional matrices must be computed. +In the next two sections, these simplifications of the Poisson equation will be discussed, along with parameters that you might need to set to increase the accuracy of the solution for certain applications. - The default \ct{ULMAT} linear system solver is MKL Pardiso. You can also call this solver as \ct{SOLVER='ULMAT PARDISO'}. This solver uses a substantial amount of memory per mesh. Its use should be limited to meshes of at most 150,000 cells. This number depends on the amount of random access memory (RAM) that you can devote to each MPI process, and you might want to experiment with larger meshes if you have, say, tens of gigabytes of RAM per MPI process. - \item \ct{SOLVER='ULMAT HYPRE'} This solver uses the same strategy as ULMAT but the solver is implemented via LLNL's HYPRE library \cite{HYPRE}. \ct{ULMAT HYPRE} uses the algebraic multi-grid (AMG) preconditioned conjugate gradient (PCG) solver. This solver does not require LU decomposition and storage of a dense matrix, so the memory requirements are much less than the MKL solver. Hence, \ct{ULMAT HYPRE} may be considered as an option for large mesh blocks (larger than 150,000 cells). Note, however, that for small mesh blocks HYPRE is somewhat slower than MKL Pardiso. +\section{Accuracy of the Pressure Solver} +\label{pressure_solver} - \item \ct{SOLVER='GLMAT'} With this solver, the pressure in both solid and gas cells is computed using an immersed boundary method for flow obstructions, the same as the default \ct{'FFT'} solver. This mode produces the exact same pressure solution as the \ct{'FFT'} solver would if the domain were one single mesh. That is, velocity errors at any mesh boundaries are eliminated. - The \ct{GLMAT} solver is used mainly for testing and diagnostics. The default linear system solver for \ct{GLMAT} is the HYPRE AMG preconditioned parallel PCG solver. The solver variants are \ct{SOLVER='GLMAT PARDISO'} and \ct{SOLVER='GLMAT HYPRE'} (default). +For a single mesh, the solution of the simplified (i.e. separable) form of the Poisson equation for the pressure can be solved relatively quickly and accurately (i.e. to machine precision) using an FFT-based solver. However, for multiple meshes of varying grid resolution and configuration, it is not possible to use the fast solver for the global solution of the Poisson equation. Instead, the fast solver is employed mesh by mesh in parallel, and the pressure field on each mesh is forced to match at the mesh boundaries through repeated solves on the individual meshes. It is prohibitively time-consuming to iterate the global pressure solution to the same level of accuracy as the local pressure solutions. The inaccuracy of the global pressure solution is manifested in a slight mismatch in the normal component of velocity at the mesh boundaries. An error tolerance is specified for this mismatch in velocity. These small errors in the normal component of velocity also appear within an individual mesh at solid, internal boundaries. The fast, FFT-based solver can only enforce exact no-flux conditions at exterior boundaries of the mesh. - \item \ct{SOLVER='UGLMAT'} This solver is used for non-overlapping meshes, and allows stretching and refinement. Like the solver \ct{'ULMAT'}, the unknown values of the pressure live only in gas-phase cells, allowing for the normal components of velocity at a solid surface to be computed exactly (no velocity penetration error). In addition, this solver ensures that the normal component of velocity matches perfectly at mesh boundaries. The default linear system solver for this solver is the HYPRE AMG preconditioned parallel PCG solver. You can also call this solver as \ct{SOLVER='UGLMAT HYPRE'}. It is CPU-intensive, but does not have the global mesh size limitation of \ct{UGLMAT PARDISO}. +If either the error in the normal component of the velocity at a mesh interface or at a solid boundary is large, you can reduce it by making more than the default number of calls to the pressure solver at each time step. To do so, specify \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to be the maximum allowable normal velocity component on the solid boundary or the largest error at a mesh interface. It is in units of m/s. If you set this, experiment with different values, and monitor the number of pressure iterations required at each time step to achieve your desired tolerance. The default value is $\dx/2$, where $\dx$ is the characteristic grid cell size. The number of iterations are written out to the file \ct{CHID.out}. If you use a value that is too large, the CPU time required might be prohibitive. The maximum number of iterations for each half of the time step is given by \ct{MAX_PRESSURE_ITERATIONS}, also on the \ct{PRES} line. Its default value is 10. To have the predictor step be limited to a different number, use \ct{MAX_PREDICTOR_PRESSURE_ITERATIONS}. - \item \ct{SOLVER='UGLMAT PARDISO'} Performs the same global solution as \ct{'UGLMAT'} calling the MKL Sparse Cluster Solver. It is limited to about 1~million grid cells, and it is the most CPU-intensive of the alternative solvers. +The pressure solution will also be iterated if the solution of the inseparable Poisson equation for pressure has an error larger than \ct{PRESSURE_TOLERANCE} with a default value of $20/\dx^2$. +To verify the accuracy of the pressure solution on each mesh, set \ct{CHECK_POISSON} to \ct{T} on the \ct{PRES} line, instructing FDS to check that the left-hand and right-hand sides of the Poisson equation are equivalent (see the FDS Tech Guide \cite{FDS_Math_Guide}). The error is printed to the \ct{CHID.out} file. Note that this verifies the accuracy of the {\em local}, not the global, pressure solution. To check the accuracy of the global pressure solution, see Sec.~\ref{tunnel_demo}. - \end{itemize} - Because the \ct{'ULMAT PARDISO','GLMAT PARDISO','UGLMAT PARDISO'} alternative methods are based on the Intel\textsuperscript{\textregistered} MKL parallel LU decomposition solver, they require computation and storage of global factorization matrices. Depending on the size of the problem, these operations can be expensive in terms of both CPU time and memory. It has been found suitable for problems with up to a million cells on a multi-core workstation with 64~GB of RAM. - - - \begin{landscape} - \begin{table}[h] - \begin{threeparttable} - \centering - \caption[Summary of available pressure solvers]{Summary of available pressure solvers.} - \begin{tabular}{lcccccccc} - \toprule - \multicolumn{1}{c}{} & \multicolumn{4}{c}{\textbf{Allows}} & \multicolumn{3}{c}{\textbf{Handling Errors}} \\ - \cmidrule(rl){2-5} \cmidrule(rl){6-8} - \textbf{Solver} & \textbf{Refinement}$^1$ & \textbf{Stretching} & \textbf{Add/Remove}$^2$ & \textbf{Zones} & \textbf{Velocity @ Mesh}$^3$ & \textbf{Velocity @ Solid}$^4$ & \textbf{Inseparability}$^5$ \\ - \midrule - \rowcolor{lavender} - FFT (default) & \checkmark & 2 directions & \checkmark & \checkmark & iterative & iterative & iterative \\ - ULMAT PARDISO$^6$ & \checkmark & \checkmark & \checkmark & \checkmark & iterative & exact & iterative \\ - \rowcolor{lavender} - ULMAT HYPRE$^7$ & \checkmark & \checkmark & \checkmark & \checkmark & iterative & exact & iterative \\ - UGLMAT PARDISO & \checkmark & \checkmark & \checkmark & \checkmark & exact & exact & iterative \\ - \rowcolor{lavender} - UGLMAT HYPRE$^{7,8}$ & \checkmark & \checkmark & \checkmark & \checkmark & exact & exact & iterative \\ - GLMAT & \checkmark & \checkmark & \checkmark & \checkmark & exact & iterative & iterative \\ - % PFFT$^8$ (future) & $\times$ & 1 direction & \checkmark & \checkmark & exact & iterative & iterative \\ - \bottomrule - \end{tabular} - \begin{tablenotes} - \small - \item Notes: - \begin{itemize} - \item[$^1$] ``Refinement'' refers to allowing a change in mesh resolution for neighboring meshes. - \item[$^2$] ``Add/Remove'' refers to the ability of the solver to handle changes in geometry during the course of the simulation, either by adding or removing \ct{OBST} or \ct{GEOM} via \ct{CTRL} functions. - \item[$^3$] ``Velocity @ Mesh'' refers to errors in the normal component of velocity at mesh boundaries, so-called ``interpolated'' boundaries in FDS. For inexact solvers, this error may be controlled using the parameter \ct{VELOCITY_TOLERANCE}. Mass conservation errors are proportional to the velocity tolerance. Solvers listed as ``exact'' are \emph{global} solvers. ``Global'' refers to a global matrix solution, one matrix for the whole domain, as opposed to one matrix per mesh. Thus, there are no mesh boundary errors for this type of solver. - \item[$^4$] ``Velocity @ Solid'' refers to errors in the normal component of velocity at solid boundaries, so-called ``penetration'' errors that are present in \emph{immersed boundary methods} and lead to mass conservation errors. These errors are particularly important to control for tightly sealed pressure zones. For inexact solvers, this error may be controlled using the parameter \ct{VELOCITY_TOLERANCE}. Mass conservation errors are proportional to the velocity tolerance. Solvers listed as ``exact'' are \emph{unstructured} solvers. ``Unstructured'' means the solid boundaries (e.g., \ct{OBST} boundaries) are treated as domain boundaries for the pressure Poisson equation. Unstructured solvers are the opposite of \emph{immersed boundary methods}. - \item[$^5$] ``Inseparability'' refers to handling the error compared to the solution of the \emph{inseparable} Poisson equation incurred by lagging the pressure in the baroclinic term. This error may be controlled using the parameter \ct{PRESSURE_TOLERANCE}. - \item[$^6$] Default \ct{ULMAT} solver, recommended number of cells per mesh less than 150,000. - \item[$^7$] \ct{ULMAT HYPRE} and \ct{UGLMAT HYPRE} use the HYPRE library developed at Lawrence Livermore National Laboratories (LLNL). Use this variant if the Intel MKL library is not available \emph{or} if MKL runs out of memory or is too slow due to memory issues with large mesh blocks. Our implementation of HYPRE uses an algebraic multi-grid (AMG) preconditioned conjugate gradient (PCG) method, which does not require excessive amounts of memory. - \item[$^8$] Default \ct{UGLMAT} solver, addresses cases where the total number of cells is greater than 1 million. - % \item[$^9$] PFFT stands for Parallel Fast Fourier Transform. This solver is only possible for block structured domains. The domain decomposition for the pressure solver differs from the transport solver. It uses pencil-shaped domains that span each direction and thus perform FFT solves in each direction for the whole domain. Data is transferred in each stage of the solution to the orthogonal directions. This solver is \emph{global} but \emph{structured}. So, mesh to mesh errors are eliminated but immersed boundary errors are not. - \end{itemize} - \end{tablenotes} - \end{threeparttable} - \end{table} - \end{landscape} - - - \subsection{Example Case: \ct{Pressure_Solver/duct_flow}} - \label{duct_flow} - - To demonstrate how to improve the accuracy of the pressure solver, consider the flow of air through a square duct that crosses several meshes. In the sample input file, \ct{duct_flow.fds}, air is pushed through a 1 \unit{m^2} duct at 1~m/s. With no thermal expansion, the volume flow into the duct ought to equal the volume flow out of the duct. Figure~\ref{duct_flow_fig} displays the computed inflow and outflow as a function of time and the number of pressure iterations required. The default pressure solution strategy uses block-wise direct FFT solves combined with a direct forcing immersed boundary method to model flow obstructions. Hence, there are two sources of pressure error: one at a mesh interface and one at a solid boundary. The default pressure iteration scheme tries to drive both sources of error to the specified (or default) velocity tolerance. In the \ct{duct_flow} case, the \ct{VELOCITY_TOLERANCE} has been set to 0.001~m/s with \ct{MAX_PRESSURE_ITERATIONS} set to 1000 and the grid cell size is 0.2~m. For the default scheme (FFT + IBM), the outflow does not match the inflow exactly because of inaccuracies at the solid and mesh boundaries. We have also included the results using the \ct{'UGLMAT PARDISO','UGLMAT HYPRE'} solvers with an unstructured pressure matrix, which allows the flow solver to enforce the impermeability condition (zero normal component of velocity) at a solid boundary. Defining the solver as \ct{'UGLMAT'} defaults to \ct{'UGLMAT HYPRE'}: - \begin{lstlisting} - &PRES SOLVER='UGLMAT' / - \end{lstlisting} - As seen in Fig.~\ref{duct_flow_fig}, the volume flow matches perfectly and the number of required pressure iterations is one. Whether this pressure solver strategy is most efficient depends on the problem and the required error tolerance. In this particular case wall times are similar, but \ct{'UGLMAT'} is more accurate. When run with default error tolerances, the \ct{'FFT'} solver is faster, but less accurate, than the alternative solvers. - - \begin{figure}[ht] - \begin{center} - \includegraphics[width=3in]{SCRIPT_FIGURES/duct_flow} - \includegraphics[width=3in]{SCRIPT_FIGURES/duct_flow_iterations} - \end{center} - \caption[Results of the \ct{duct_flow} test case]{(Left) Volume flow into and out of a square duct. (Right) The number of pressure iterations as a function of time.} - \label{duct_flow_fig} - \end{figure} +It is possible for the pressure iteration scheme to seem ``stuck''---the solution convergence rate may slow dramatically and further iterations are only consuming cpu resources without improving the solution. You can tell FDS to break out of these situations prior to hitting the maximum number of iterations by setting \ct{SUSPEND_PRESSURE_ITERATIONS=T} on the \ct{PRES} line. FDS will then suspend the pressure iterations if the error does not drop below \ct{ITERATION_SUSPEND_FACTOR} (0.95, by default) of its previous value. +The number of pressure iterations and the maximum velocity error in the domain can be monitored with the device outputs of \ct{PRESSURE ITERATIONS} and \ct{MAXIMUM VELOCITY ERROR}. - \subsection{Example Case: \ct{Pressure_Solver/dancing_eddies}} - \label{dancing_eddies} - In this example, air is pushed through a 30~cm long, two-dimensional channel at 0.5~m/s. A plate obstruction normal to the flow creates a Karman vortex street. The computational domain is divided into 4 meshes. Six simulations are performed: one in which the \ct{VELOCITY_TOLERANCE} is set to the default value, one in which it is set to a relatively small value, two using \ct{'ULMAT'} and \ct{'ULMAT HYPRE'}, and two where \ct{'UGLMAT PARDISO'} and \ct{'UGLMAT HYPRE'} are used. Figure~\ref{dancing_eddies_figure} shows the downstream pressure histories for these cases compared to a simulation that uses only one mesh. The case with the tighter tolerance produces a better match to the single mesh solution, but at a higher computational cost---about a factor of 2.5 . The \ct{SOLVER='UGLMAT PARDISO'} case takes just a little longer than the default---by a factor of 1.25---but the error is machine precision. These cases used MPI for domain decomposition, but only a single OpenMP thread. Note, however, that the \ct{'UGLMAT'} solvers are threaded, whereas currently the \ct{'FFT'} solver (FDS default) is not. +\subsection{Optional Pressure Solvers} +\label{optional_pressure_solver} - \begin{figure}[ht] - \begin{center} - \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_default} - \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_tight} - \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_uglmat} - \includegraphics[width=\textwidth]{SCRIPT_FIGURES/dancing_eddies} - \end{center} - \caption[Results of the \ct{dancing_eddies} test cases]{(Top) Comparison of pressure traces in the channel for three different settings of \ct{VELOCITY_TOLERANCE}, the default value (upper-left), a tighter tolerance (upper-right), machine precision from the \ct{'UGLMAT'} solver with a single iteration (middle). (Bottom) A contour plot of the pressure after 2~s with the default tolerance.} - \label{dancing_eddies_figure} - \end{figure} +The default Poisson solver in FDS (\ct{SOLVER='FFT'} on the \ct{PRES} line) is based on the package of linear algebra routines called CrayFishpak. However, in certain circumstances you may need to use one of several alternatives that are based on the Intel\textsuperscript{\textregistered} MKL Sparse Cluster Solver or the HYPRE solver library from Lawrence Livermore National Laboratories (LLNL) \cite{HYPRE}. +\begin{itemize} + \item \ct{SOLVER='ULMAT'} This solver is useful when the computational domain has relatively small, sealed cavities enclosed with thin (i.e. zero cell thick) walls. The small error in the normal component of velocity that you incur with the FFT solver can lead to unphysical changes in temperature, density and pressure that may eventually cause the calculation to become numerically unstable. For example, suppose you have hollow steel columns or hollow aluminum ducts with thin walls and you want to simulate the heat penetration within these spaces. + + With the \ct{ULMAT} solver, the unknown values of the pressure live only in gas-phase cells, allowing for the normal components of velocity at a solid surface to be computed exactly with no penetration error. Strictly speaking, in this mode, FDS is no longer using an ``immersed boundary method'' for flow obstructions---the pressure solution is now ``unstructured,'' hence the \ct{U} in its name. This solver does not guarantee that the normal component of velocity matches perfectly at mesh boundaries, and the iterative procedure used by the default \ct{'FFT'} solver is still used to drive the mesh interface velocity normals closer together. This solver option does allow for refinement at mesh boundaries and for internal sealed regions within the domain for which additional matrices must be computed. + + The default \ct{ULMAT} linear system solver is MKL Pardiso. You can also call this solver as \ct{SOLVER='ULMAT PARDISO'}. This solver uses a substantial amount of memory per mesh. Its use should be limited to meshes of at most 150,000 cells. This number depends on the amount of random access memory (RAM) that you can devote to each MPI process, and you might want to experiment with larger meshes if you have, say, tens of gigabytes of RAM per MPI process. + + \item \ct{SOLVER='ULMAT HYPRE'} This solver uses the same strategy as ULMAT but the solver is implemented via LLNL's HYPRE library \cite{HYPRE}. \ct{ULMAT HYPRE} uses the algebraic multi-grid (AMG) preconditioned conjugate gradient (PCG) solver. This solver does not require LU decomposition and storage of a dense matrix, so the memory requirements are much less than the MKL solver. Hence, \ct{ULMAT HYPRE} may be considered as an option for large mesh blocks (larger than 150,000 cells). Note, however, that for small mesh blocks HYPRE is somewhat slower than MKL Pardiso. + + \item \ct{SOLVER='GLMAT'} With this solver, the pressure in both solid and gas cells is computed using an immersed boundary method for flow obstructions, the same as the default \ct{'FFT'} solver. This mode produces the exact same pressure solution as the \ct{'FFT'} solver would if the domain were one single mesh. That is, velocity errors at any mesh boundaries are eliminated. + The \ct{GLMAT} solver is used mainly for testing and diagnostics. The default linear system solver for \ct{GLMAT} is the HYPRE AMG preconditioned parallel PCG solver. The solver variants are \ct{SOLVER='GLMAT PARDISO'} and \ct{SOLVER='GLMAT HYPRE'} (default). + + \item \ct{SOLVER='UGLMAT'} This solver is used for non-overlapping meshes, and allows stretching and refinement. Like the solver \ct{'ULMAT'}, the unknown values of the pressure live only in gas-phase cells, allowing for the normal components of velocity at a solid surface to be computed exactly (no velocity penetration error). In addition, this solver ensures that the normal component of velocity matches perfectly at mesh boundaries. The default linear system solver for this solver is the HYPRE AMG preconditioned parallel PCG solver. You can also call this solver as \ct{SOLVER='UGLMAT HYPRE'}. It is CPU-intensive, but does not have the global mesh size limitation of \ct{UGLMAT PARDISO}. + + \item \ct{SOLVER='UGLMAT PARDISO'} Performs the same global solution as \ct{'UGLMAT'} calling the MKL Sparse Cluster Solver. It is limited to about 1~million grid cells, and it is the most CPU-intensive of the alternative solvers. + + +\end{itemize} +Because the \ct{'ULMAT PARDISO','GLMAT PARDISO','UGLMAT PARDISO'} alternative methods are based on the Intel\textsuperscript{\textregistered} MKL parallel LU decomposition solver, they require computation and storage of global factorization matrices. Depending on the size of the problem, these operations can be expensive in terms of both CPU time and memory. It has been found suitable for problems with up to a million cells on a multi-core workstation with 64~GB of RAM. - The case called \ct{dancing_eddies_tight} is rerun without the special pressure pre-conditioner. Figure~\ref{dancing_eddies_precon} shows the reduction in the number of pressure iterations (left) and the CPU time (right). - \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_iterations} - \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_tight_precon} - \caption[Pressure iterations in the \ct{dancing_eddies} test cases]{The number of pressure iterations (left) and the total CPU time (right) for preconditioned and non-preconditioned pressure solvers.} - \label{dancing_eddies_precon} - \end{figure} +\begin{landscape} + \begin{table}[h] + \begin{threeparttable} + \centering + \caption[Summary of available pressure solvers]{Summary of available pressure solvers.} + \begin{tabular}{lcccccccc} + \toprule + \multicolumn{1}{c}{} & \multicolumn{4}{c}{\textbf{Allows}} & \multicolumn{3}{c}{\textbf{Handling Errors}} \\ + \cmidrule(rl){2-5} \cmidrule(rl){6-8} + \textbf{Solver} & \textbf{Refinement}$^1$ & \textbf{Stretching} & \textbf{Add/Remove}$^2$ & \textbf{Zones} & \textbf{Velocity @ Mesh}$^3$ & \textbf{Velocity @ Solid}$^4$ & \textbf{Inseparability}$^5$ \\ + \midrule + \rowcolor{lavender} + FFT (default) & \checkmark & 2 directions & \checkmark & \checkmark & iterative & iterative & iterative \\ + ULMAT PARDISO$^6$ & \checkmark & \checkmark & \checkmark & \checkmark & iterative & exact & iterative \\ + \rowcolor{lavender} + ULMAT HYPRE$^7$ & \checkmark & \checkmark & \checkmark & \checkmark & iterative & exact & iterative \\ + UGLMAT PARDISO & \checkmark & \checkmark & \checkmark & \checkmark & exact & exact & iterative \\ + \rowcolor{lavender} + UGLMAT HYPRE$^{7,8}$ & \checkmark & \checkmark & \checkmark & \checkmark & exact & exact & iterative \\ + GLMAT & \checkmark & \checkmark & \checkmark & \checkmark & exact & iterative & iterative \\ + % PFFT$^8$ (future) & $\times$ & 1 direction & \checkmark & \checkmark & exact & iterative & iterative \\ + \bottomrule + \end{tabular} + \begin{tablenotes} + \small + \item Notes: + \begin{itemize} + \item[$^1$] ``Refinement'' refers to allowing a change in mesh resolution for neighboring meshes. + \item[$^2$] ``Add/Remove'' refers to the ability of the solver to handle changes in geometry during the course of the simulation, either by adding or removing \ct{OBST} or \ct{GEOM} via \ct{CTRL} functions. + \item[$^3$] ``Velocity @ Mesh'' refers to errors in the normal component of velocity at mesh boundaries, so-called ``interpolated'' boundaries in FDS. For inexact solvers, this error may be controlled using the parameter \ct{VELOCITY_TOLERANCE}. Mass conservation errors are proportional to the velocity tolerance. Solvers listed as ``exact'' are \emph{global} solvers. ``Global'' refers to a global matrix solution, one matrix for the whole domain, as opposed to one matrix per mesh. Thus, there are no mesh boundary errors for this type of solver. + \item[$^4$] ``Velocity @ Solid'' refers to errors in the normal component of velocity at solid boundaries, so-called ``penetration'' errors that are present in \emph{immersed boundary methods} and lead to mass conservation errors. These errors are particularly important to control for tightly sealed pressure zones. For inexact solvers, this error may be controlled using the parameter \ct{VELOCITY_TOLERANCE}. Mass conservation errors are proportional to the velocity tolerance. Solvers listed as ``exact'' are \emph{unstructured} solvers. ``Unstructured'' means the solid boundaries (e.g., \ct{OBST} boundaries) are treated as domain boundaries for the pressure Poisson equation. Unstructured solvers are the opposite of \emph{immersed boundary methods}. + \item[$^5$] ``Inseparability'' refers to handling the error compared to the solution of the \emph{inseparable} Poisson equation incurred by lagging the pressure in the baroclinic term. This error may be controlled using the parameter \ct{PRESSURE_TOLERANCE}. + \item[$^6$] Default \ct{ULMAT} solver, recommended number of cells per mesh less than 150,000. + \item[$^7$] \ct{ULMAT HYPRE} and \ct{UGLMAT HYPRE} use the HYPRE library developed at Lawrence Livermore National Laboratories (LLNL). Use this variant if the Intel MKL library is not available \emph{or} if MKL runs out of memory or is too slow due to memory issues with large mesh blocks. Our implementation of HYPRE uses an algebraic multi-grid (AMG) preconditioned conjugate gradient (PCG) method, which does not require excessive amounts of memory. + \item[$^8$] Default \ct{UGLMAT} solver, addresses cases where the total number of cells is greater than 1 million. + % \item[$^9$] PFFT stands for Parallel Fast Fourier Transform. This solver is only possible for block structured domains. The domain decomposition for the pressure solver differs from the transport solver. It uses pencil-shaped domains that span each direction and thus perform FFT solves in each direction for the whole domain. Data is transferred in each stage of the solution to the orthogonal directions. This solver is \emph{global} but \emph{structured}. So, mesh to mesh errors are eliminated but immersed boundary errors are not. + \end{itemize} + \end{tablenotes} + \end{threeparttable} + \end{table} +\end{landscape} - \FloatBarrier - \subsection{Example Case: \ct{Random Obstructions}} - \label{random_obstructions_fft} +\subsection{Example Case: \ct{Pressure_Solver/duct_flow}} +\label{duct_flow} - In this example, many different types of obstructions are randomly positioned within a domain split into 16 meshes. Some of the obstructions are created or removed at certain times. Sources of heat are added to move the gases about. The grid cell size is 0.025~m and the default normal velocity error tolerance is half that, or 0.0125~m. Figure~\ref{random_obstructions_fft_fig} displays the maximum error and the number of iterations of the pressure solver. The spikes in the number of iterations correspond to the creation or removal of obstructions. More iterations are necessary to drive down the error when a sudden change occurs in the flow field. +To demonstrate how to improve the accuracy of the pressure solver, consider the flow of air through a square duct that crosses several meshes. In the sample input file, \ct{duct_flow.fds}, air is pushed through a 1 \unit{m^2} duct at 1~m/s. With no thermal expansion, the volume flow into the duct ought to equal the volume flow out of the duct. Figure~\ref{duct_flow_fig} displays the computed inflow and outflow as a function of time and the number of pressure iterations required. The default pressure solution strategy uses block-wise direct FFT solves combined with a direct forcing immersed boundary method to model flow obstructions. Hence, there are two sources of pressure error: one at a mesh interface and one at a solid boundary. The default pressure iteration scheme tries to drive both sources of error to the specified (or default) velocity tolerance. In the \linebreak[4]\ct{duct_flow} case, the \ct{VELOCITY_TOLERANCE} has been set to 0.001~m/s with \ct{MAX_PRESSURE_ITERATIONS} set to 1000 and the grid cell size is 0.2~m. For the default scheme (FFT + IBM), the outflow does not match the inflow exactly because of inaccuracies at the solid and mesh boundaries. We have also included the results using the \ct{'UGLMAT PARDISO','UGLMAT HYPRE'} solvers with an unstructured pressure matrix, which allows the flow solver to enforce the impermeability condition (zero normal component of velocity) at a solid boundary. Defining the solver as \ct{'UGLMAT'} defaults to \ct{'UGLMAT HYPRE'}: +\begin{lstlisting} + &PRES SOLVER='UGLMAT' / +\end{lstlisting} +As seen in Fig.~\ref{duct_flow_fig}, the volume flow matches perfectly and the number of required pressure iterations is one. Whether this pressure solver strategy is most efficient depends on the problem and the required error tolerance. In this particular case wall times are similar, but \ct{'UGLMAT'} is more accurate. When run with default error tolerances, the \ct{'FFT'} solver is faster, but less accurate, than the alternative solvers. - \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/random_obstructions_fft_error} - \includegraphics[width=3in]{SCRIPT_FIGURES/random_obstructions_fft_iterations} - \caption[Pressure iterations in the \ct{random_obstructions}]{The number of pressure iterations (left) and maximum velocity error (right).} - \label{random_obstructions_fft_fig} - \end{figure} +\begin{figure}[ht] + \begin{center} + \includegraphics[width=3in]{SCRIPT_FIGURES/duct_flow} + \includegraphics[width=3in]{SCRIPT_FIGURES/duct_flow_iterations} + \end{center} + \caption[Results of the \ct{duct_flow} test case]{(Left) Volume flow into and out of a square duct. (Right) The number of pressure iterations as a function of time.} + \label{duct_flow_fig} +\end{figure} +\subsection{Example Case: \ct{Pressure_Solver/dancing_eddies}} +\label{dancing_eddies} - \newpage +In this example, air is pushed through a 30~cm long, two-dimensional channel at 0.5~m/s. A plate obstruction normal to the flow creates a Karman vortex street. The computational domain is divided into 4 meshes. Six simulations are performed: one in which the \ct{VELOCITY_TOLERANCE} is set to the default value, one in which it is set to a relatively small value, two using \ct{'ULMAT'} and \ct{'ULMAT HYPRE'}, and two where \ct{'UGLMAT PARDISO'} and \ct{'UGLMAT HYPRE'} are used. Figure~\ref{dancing_eddies_figure} shows the downstream pressure histories for these cases compared to a simulation that uses only one mesh. The case with the tighter tolerance produces a better match to the single mesh solution, but at a higher computational cost---about a factor of 2.5 . The \ct{SOLVER='UGLMAT PARDISO'} case takes just a little longer than the default---by a factor of 1.25---but the error is machine precision. These cases used MPI for domain decomposition, but only a single OpenMP thread. Note, however, that the \ct{'UGLMAT'} solvers are threaded, whereas currently the \ct{'FFT'} solver (FDS default) is not. - \section{Baroclinic Vorticity} - \label{baroclinic_torque} +\begin{figure}[ht] + \begin{center} + \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_default} + \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_tight} + \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_uglmat} + \includegraphics[width=\textwidth]{SCRIPT_FIGURES/dancing_eddies} + \end{center} + \caption[Results of the \ct{dancing_eddies} test cases]{(Top) Comparison of pressure traces in the channel for three different settings of \linebreak[4]\ct{VELOCITY_TOLERANCE}, the default value (upper-left), a tighter tolerance (upper-right), machine precision from the \ct{'UGLMAT'} solver with a single iteration (middle). (Bottom) A contour plot of the pressure after 2~s with the default tolerance.} + \label{dancing_eddies_figure} +\end{figure} - The second challenge in solving the Poisson equation for pressure is that the matrix of the linear system of equations that is formed when discretizing it does not have constant coefficients because the density, $\rho(\bx,t)$, changes with each new time step. To get around this problem, the pressure term in the momentum equation is decomposed as follows: - \be - \frac{1}{\rho} \nabla \tp = \nabla \left( \frac{\tp}{\rho}\right) - \tp \, \nabla \left(\frac{1}{\rho} \right) \label{p_decomp} - \ee - which leads to a Poisson equation that can be solved efficiently: - \be - \nabla^2 \left( \frac{\tp^{n,k}}{\rho^n} \right) = \nabla \cdot \tp^{n,k-1} \, \nabla \left(\frac{1}{\rho^n} \right) + \; \cdots \label{sepeq} - \ee - The superscript $n$ represents the time step. The superscript $k$ indicates that this equation is solved multiple times per time step, and $k$ indicates the iteration number. With each iteration, the old and new values of $\tp$ are driven closer together. The iterations continue\footnote{Keep in mind that the pressure equation iterations continue until three criteria are satisfied. The first deals with the decomposition of the pressure term, the second deals with the normal component of velocity at internal solid surfaces, and the third deals with the mismatch of normal velocity components at mesh interfaces.} until the maximum value of the error term - \be - \epsilon^k = \max_{ijk} \left| \nabla \cdot \left( \frac{1}{\rho^n} \right) \nabla \tp^{n,k} - \nabla^2 \left( \frac{\tp^{n,k}}{\rho^n} \right) + \nabla \cdot \tp^{n,k-1} \, \nabla \left(\frac{1}{\rho^n} \right) \right| \label{pressure_error} - \ee - drops below the value of \ct{PRESSURE_TOLERANCE} which is specified on the \ct{PRES} line. Its default value is $20/\dx^2$~\unit{\per\second\per\second}, where $\dx$ is the characteristic grid cell size. +The case called \ct{dancing_eddies_tight} is rerun without the special pressure pre-conditioner. Figure~\ref{dancing_eddies_precon} shows the reduction in the number of pressure iterations (left) and the CPU time (right). - The lagged pressure term on the right hand side of Eq.~(\ref{sepeq}) is sometimes referred to as the baroclinic torque, and it is responsible for generating vorticity due to the non-alignment of pressure and density gradients. In versions of FDS prior to 6, the inclusion of the baroclinic torque term was found to sometimes cause numerical instabilities. If it is suspected that the term is responsible for numerical problems, it can be removed by setting \ct{BAROCLINIC=F} on the \ct{PRES} line. For example, in the simple helium plume test case below, neglecting the baroclinic torque changes the puffing behavior noticeably. In other applications, however, its effect is less significant. For further discussion of its effect, see Ref.~\cite{Xin:JSS2005}. +\begin{figure}[ht] + \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_iterations} + \includegraphics[width=3in]{SCRIPT_FIGURES/dancing_eddies_tight_precon} + \caption[Pressure iterations in the \ct{dancing_eddies} test cases]{The number of pressure iterations (left) and the total CPU time (right) for preconditioned and non-preconditioned pressure solvers.} + \label{dancing_eddies_precon} +\end{figure} +\FloatBarrier +\subsection{Example Case: \ct{Random Obstructions}} +\label{random_obstructions_fft} - \subsubsection{Example Case: \ct{Flowfields/helium_2d_isothermal}} - \label{helium_2d_isothermal} +In this example, many different types of obstructions are randomly positioned within a domain split into 16 meshes. Some of the obstructions are created or removed at certain times. Sources of heat are added to move the gases about. The grid cell size is 0.025~m and the default normal velocity error tolerance is half that, or 0.0125~m. Figure~\ref{random_obstructions_fft_fig} displays the maximum error and the number of iterations of the pressure solver. The spikes in the number of iterations correspond to the creation or removal of obstructions. More iterations are necessary to drive down the error when a sudden change occurs in the flow field. - This case demonstrates the use of baroclinic correction for an axially-symmetric helium plume. Note that the governing equations solved in FDS are written in terms of a three dimensional Cartesian coordinate system. However, a two dimensional Cartesian or two dimensional cylindrical (axially-symmetric) calculation can be performed by setting the number of cells in the $y$ direction to 1. An example of an axially-symmetric helium plume is shown in Fig.~\ref{helium_plume}. +\begin{figure}[ht] + \includegraphics[width=3in]{SCRIPT_FIGURES/random_obstructions_fft_error} + \includegraphics[width=3in]{SCRIPT_FIGURES/random_obstructions_fft_iterations} + \caption[Pressure iterations in the \ct{random_obstructions}]{The number of pressure iterations (left) and maximum velocity error (right).} + \label{random_obstructions_fft_fig} +\end{figure} - \begin{figure}[ht] - \noindent - \begin{minipage}{1.1in} - \includegraphics[height=2in]{SCRIPT_FIGURES/helium_2d_isothermal} - \end{minipage} - \hfill - \begin{minipage}{5.5in} - \begin{lstlisting}[basicstyle=\scriptsize\ttfamily] - &HEAD CHID='helium_2d_isothermal',TITLE='Axisymmetric Helium Plume' / - &MESH IJK=72,1,144 XB=0.00,0.08,-0.001,0.001,0.00,0.16, CYLINDRICAL=T / - &TIME T_END=5.0 / - &MISC SIMULATION_MODE='DNS' / - &RADI RADIATION=F / - &SPEC ID='HELIUM' / - &SURF ID='HELIUM', VEL=-0.673, SPEC_ID(1)='HELIUM',MASS_FRACTION(1)=1.0, TAU_MF(1)=0.3 / - &VENT MB='XMAX' ,SURF_ID='OPEN' / - &VENT MB='ZMAX' ,SURF_ID='OPEN' / - &OBST XB= 0.0,0.036,-0.001,0.001,0.00,0.02, SURF_IDS='HELIUM','INERT','INERT' / - &DUMP PLOT3D_QUANTITY(1)='PRESSURE', - PLOT3D_QUANTITY(5)='MASS FRACTION',PLOT3D_SPEC_ID(5)='HELIUM' / - &SLCF PBY=0.000,QUANTITY='DENSITY', VECTOR=T / - &SLCF PBY=0.000,QUANTITY='VOLUME FRACTION', SPEC_ID='HELIUM' / - &TAIL / - \end{lstlisting} - \end{minipage} - \caption[Snapshot of the \ct{helium_2d_isothermal} test case]{Simulation of a helium plume.} - \label{helium_plume} - \end{figure} +\section{Baroclinic Vorticity} +\label{baroclinic_torque} +The second challenge in solving the Poisson equation for pressure is that the matrix of the linear system of equations that is formed when discretizing it does not have constant coefficients because the density, $\rho(\bx,t)$, changes with each new time step. To get around this problem, the pressure term in the momentum equation is decomposed as follows: +\be +\frac{1}{\rho} \nabla \tp = \nabla \left( \frac{\tp}{\rho}\right) - \tp \, \nabla \left(\frac{1}{\rho} \right) \label{p_decomp} +\ee +which leads to a Poisson equation that can be solved efficiently: +\be +\nabla^2 \left( \frac{\tp^{n,k}}{\rho^n} \right) = \nabla \cdot \tp^{n,k-1} \, \nabla \left(\frac{1}{\rho^n} \right) + \; \cdots \label{sepeq} +\ee +The superscript $n$ represents the time step. The superscript $k$ indicates that this equation is solved multiple times per time step, and $k$ indicates the iteration number. With each iteration, the old and new values of $\tp$ are driven closer together. The iterations continue\footnote{Keep in mind that the pressure equation iterations continue until three criteria are satisfied. The first deals with the decomposition of the pressure term, the second deals with the normal component of velocity at internal solid surfaces, and the third deals with the mismatch of normal velocity components at mesh interfaces.} until the maximum value of the error term +\be +\epsilon^k = \max_{ijk} \left| \nabla \cdot \left( \frac{1}{\rho^n} \right) \nabla \tp^{n,k} - \nabla^2 \left( \frac{\tp^{n,k}}{\rho^n} \right) + \nabla \cdot \tp^{n,k-1} \, \nabla \left(\frac{1}{\rho^n} \right) \right| \label{pressure_error} +\ee +drops below the value of \ct{PRESSURE_TOLERANCE} which is specified on the \ct{PRES} line. Its default value is $20/\dx^2$~\unit{\per\second\per\second}, where $\dx$ is the characteristic grid cell size. +The lagged pressure term on the right hand side of Eq.~(\ref{sepeq}) is sometimes referred to as the baroclinic torque, and it is responsible for generating vorticity due to the non-alignment of pressure and density gradients. In versions of FDS prior to 6, the inclusion of the baroclinic torque term was found to sometimes cause numerical instabilities. If it is suspected that the term is responsible for numerical problems, it can be removed by setting \ct{BAROCLINIC=F} on the \ct{PRES} line. For example, in the simple helium plume test case below, neglecting the baroclinic torque changes the puffing behavior noticeably. In other applications, however, its effect is less significant. For further discussion of its effect, see Ref.~\cite{Xin:JSS2005}. - \newpage - \section{Pressure Considerations in Long Tunnels} - \label{tunnel_solver} - \label{tunnel_demo} - \label{tunnel_demo_glmat} - A common application of FDS is tunnel fires, but simulations of fires in long, relatively tight tunnels that are made up of multiple meshes can exhibit spurious fluctuations in the pressure field that can lead to numerical instabilities. If a numerical instability occurs in a simulation involving a tunnel, you might try the following remedies, which are listed here in order of effectiveness: - \begin{enumerate} - \item If (1) the tunnel is made up of multiple meshes that abut end to end along the x-direction, (2) there are no other meshes outside of the tunnel, (3) there are no \ct{OPEN} boundaries on the top, bottom or sides of the tunnel, and (4) the number of MPI processes is equal to the number of meshes; set \ct{TUNNEL_PRECONDITIONER=T} on the \ct{PRES} line. This option instructs FDS to solve a 1-D pressure equation that spans the entire tunnel. This 1-D solution can be thought of as an average pressure field which is added to the 3-D pressure fields that are solved for using the default FFT-based solver on each mesh. The 1-D global solution accelerates the convergence of the overall 3-D pressure field on the entire domain. - \item You can increase the value of \ct{MAX_PRESSURE_ITERATIONS} which has a default value of 10 in most cases; 20 when the \ct{TUNNEL_PRECONDITIONER} is invoked. If you experience a numerical instability in a tunnel scenario, try setting the \ct{MAX_PRESSURE_ITERATIONS} to 50 as a starting point, and monitor the number of pressure iterations per time step in the \ct{CHID.out} file. - \item If you are using multiple meshes, reduce the value of \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to force a tighter match of velocities at the mesh boundaries. The default value of \ct{VELOCITY_TOLERANCE} (with units of m/s) is $\dx/2$. If you set \ct{TUNNEL_PRECONDITIONER=T}, there is less of a need to decrease the \ct{VELOCITY_TOLERANCE} from its default value, but it still may be necessary to increase the \ct{MAX_PRESSURE_ITERATIONS} to account for occasional excursions of pressure. - \item Create \ct{OPEN} vents at various points along the length of the tunnel, near or at the floor. This models natural leakage in the tunnel, and alleviates, to some extent, wild oscillations in pressure. Note that even if the pressure equation is solved perfectly over the entire domain, the low Mach number assumption will still lead to fictitiously large fluctuations in pressure. The \ct{OPEN} boundaries can help relieve these pressure oscillations. If you do choose to create \ct{OPEN} boundaries along the length of the tunnel, you should {\em not} set \ct{TUNNEL_PRECONDITIONER} to \ct{T} - \item Reduce the value of \ct{PRESSURE_TOLERANCE} on the \ct{PRES} line to alleviate the mismatch between old and new pressure fields. The default value is $20/\dx^2$~\unit{\per\second^2}. A good value to try would be 1/5 to 1/10 of the default value. - \item Set \ct{SOLVER='GLMAT'} on the \ct{PRES} line to strictly enforce the matching of normal velocity and pressure at mesh boundaries or \ct{'UGLMAT'} to do what \ct{'GLMAT'} does plus enforce zero normal velocities at solid obstructions. If you use these solvers, you need not set the various tolerances described above or use the \ct{TUNNEL_PRECONDITIONER}. However, these solvers are very expensive, so it is best to try a simple case first to determine how much CPU time the pressure solver consumes. - \end{enumerate} - Two simple test cases, \ct{Pressure_Solver/tunnel_demo.fds} and \ct{tunnel_demo_glmat.fds}, demonstrate some of the issues discussed in this section. The first case uses the default FFT-based pressure solver with the \ct{TUNNEL_PRECONDITIONER} set to \ct{T}; the second uses the \ct{'GLMAT'} solver. An 8~MW fire is situated in a 4~m by 4~m by 128~m long tunnel that is sloped 10\unit{\degree}, closed at the lower end and open at the upper end. The tunnel is divided into 8 meshes, all the same size, with a uniform grid of 20~cm. The cases run for a relatively short amount of time, and diagnostic files\footnote{Caution: the velocity error file can be quite large. Use it only for relatively short simulations only.} containing information about the velocity and pressure errors are printed out. These files are generated by setting \ct{VELOCITY_ERROR_FILE=T} on the \ct{DUMP} line. The names of the files are \ct{tunnel_demo_pressit.csv} and \ct{tunnel_demo_glmat_pressit.csv}. A description of each column is as follows: - \begin{itemize} - \item \ct{Time}: Simulation time (s) - \item \ct{Time Step}: The index of the time step - \item \ct{Iteration}: The index of the pressure iteration within the time step. Note that for a single time step, there are two series of pressure iterations, one for the predictor phase, and one for the corrector. - \item \ct{Total}: The cumulative index of pressure iterations for the entire simulation - \item \ct{Mesh}: The mesh where the maximum velocity error occurs - \item \ct{I,J,K}: Cell indices where the maximum velocity error occurs - \item \ct{Velocity Error}: The maximum absolute value of the difference between normal velocity components at mesh interfaces or at solid internal boundaries - \item \ct{Mesh,I,J,K}: The mesh and cell indices where the maximum pressure error occurs - \item \ct{Pressure Error}: The quantity shown in Eq.~(\ref{pressure_error}) in units of \unit{\per\second^2} - \end{itemize} - Figure~\ref{tunnel_demo_fig} shows the velocity and pressure errors for the two cases over a short span of the simulation. For each quantity, there is a default error tolerance which may or may not be reached depending on whether or not the \ct{MAX_PRESSURE_ITERATIONS} (default 10) has been reached, or whether or not the error is reduced by at least 25~\% over the previous iteration. In some situations, the error decreases slowly, and these criteria have been added to avoid excessive iterations that lead to little improvement in accuracy. The errors shown in Fig.~\ref{tunnel_demo_fig} are relatively large because fires in long, closed enclosures like tunnels can generate large fluctuations in pressure that challenge both the multiple mesh capability and the pressure solving algorithm discussed above. Note that the simulation using the \ct{'GLMAT'} solver has no velocity error in this case because it solves the Poisson equation directly over the entire domain, not mesh by mesh. However, this simulation still requires iterations of the pressure solver to drive the solution closer to the true solution of the inseparable Poisson equation. +\subsubsection{Example Case: \ct{Flowfields/helium_2d_isothermal}} +\label{helium_2d_isothermal} - \begin{figure}[ht] - \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_velocity} & - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_pressure} \\ - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_glmat_velocity} & - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_glmat_pressure} - \end{tabular*} - \caption[Convergence test for the \ct{tunnel_demo} test cases]{Reduction in velocity and pressure error due to iteration of the pressure solver. The top two plots are the result of the FFT-based solver; the lower two \ct{'GLMAT'}.} - \label{tunnel_demo_fig} - \end{figure} +This case demonstrates the use of baroclinic correction for an axially-symmetric helium plume. Note that the governing equations solved in FDS are written in terms of a three dimensional Cartesian coordinate system. However, a two dimensional Cartesian or two dimensional cylindrical (axially-symmetric) calculation can be performed by setting the number of cells in the $y$ direction to 1. An example of an axially-symmetric helium plume is shown in Fig.~\ref{helium_plume}. - \FloatBarrier +\begin{figure}[ht] + \noindent + \begin{minipage}{1.1in} + \includegraphics[height=2in]{SCRIPT_FIGURES/helium_2d_isothermal} + \end{minipage} + \hfill + \begin{minipage}{5.5in} + \begin{lstlisting}[basicstyle=\scriptsize\ttfamily] + &HEAD CHID='helium_2d_isothermal',TITLE='Axisymmetric Helium Plume' / + &MESH IJK=72,1,144 XB=0.00,0.08,-0.001,0.001,0.00,0.16, + CYLINDRICAL=T / + &TIME T_END=5.0 / + &MISC SIMULATION_MODE='DNS' / + &RADI RADIATION=F / + &SPEC ID='HELIUM' / + &SURF ID='HELIUM', VEL=-0.673, SPEC_ID(1)='HELIUM', + MASS_FRACTION(1)=1.0, TAU_MF(1)=0.3 / + &VENT MB='XMAX' ,SURF_ID='OPEN' / + &VENT MB='ZMAX' ,SURF_ID='OPEN' / + &OBST XB= 0.0,0.036,-0.001,0.001,0.00,0.02, + SURF_IDS='HELIUM','INERT','INERT' / + &DUMP PLOT3D_QUANTITY(1)='PRESSURE', + PLOT3D_QUANTITY(5)='MASS FRACTION',PLOT3D_SPEC_ID(5)='HELIUM' / + &SLCF PBY=0.000,QUANTITY='DENSITY', VECTOR=T / + &SLCF PBY=0.000,QUANTITY='VOLUME FRACTION', SPEC_ID='HELIUM' / + &TAIL / + \end{lstlisting} + \end{minipage} + \caption[Snapshot of the \ct{helium_2d_isothermal} test case]{Simulation of a helium plume.} + \label{helium_plume} +\end{figure} - \subsubsection{Special Case: Pressure Drop in Long Tunnels} - \label{sec:tunnel_pressure_drop} - This section describes a set of cases to extract the implied friction factor from an FDS simulation of flow down a long tunnel (\ct{Validation/Moody_Chart/FDS_Input_Files/tunnel_pressure_drop} series). Note that a more complete mapping of the Moody Chart is provided in the FDS Verification Guide~\cite{FDS_Verification_Guide}, but that series uses a mean pressure gradient to force the flow, which is not a typical user case. Here the flow is forced from a \ct{VENT} and the axial pressure profile is formed from planar averages \ct{DEVC}s. The tunnel is 1.6~km (approximately 1~mi) long with a square cross-section 10~m by 10~m for Cases A, B, C, and D. The cross section for Case E is 12.8~m in width by 5~m in height, giving a hydraulic diameter of 7.2~m. Air is forced from the entrance at 2, 4, or 10~m/s for sand-grain roughness heights of 0.0001, 0.01, or 0.1~m. Two grid resolutions are used, with 10 or 20 uniform cells spanning the tunnel height. Stream-wise grid resolution is twice the wall-normal resolution. The case matrix and friction factor results are given in Table~\ref{tab:tunnel_pressure_drop}. The target friction factor is taken from the Colebrook equation~\cite{MYO}. FDS results for the 10 and 20 vertical cell cases are also shown along with the maximum relative error as compared to the Colebrook value. The pressure profiles are shown in Fig.~\ref{fig:tunnel_pressure_drop}. +\section{Pressure Considerations in Long Tunnels} +\label{tunnel_solver} +\label{tunnel_demo} +\label{tunnel_demo_glmat} - \begin{table}[!ht] - \input{SCRIPT_FIGURES/tunnel_pressure_drop} - \end{table} +A common application of FDS is tunnel fires, but simulations of fires in long, relatively tight tunnels that are made up of multiple meshes can exhibit spurious fluctuations in the pressure field that can lead to numerical instabilities. If a numerical instability occurs in a simulation involving a tunnel, you might try the following remedies, which are listed here in order of effectiveness: +\begin{enumerate} + \item If (1) the tunnel is made up of multiple meshes that abut end to end along the x-direction, (2) there are no other meshes outside of the tunnel, (3) there are no \ct{OPEN} boundaries on the top, bottom or sides of the tunnel, and (4) the number of MPI processes is equal to the number of meshes; set \ct{TUNNEL_PRECONDITIONER=T} on the \ct{PRES} line. This option instructs FDS to solve a 1-D pressure equation that spans the entire tunnel. This 1-D solution can be thought of as an average pressure field which is added to the 3-D pressure fields that are solved for using the default FFT-based solver on each mesh. The 1-D global solution accelerates the convergence of the overall 3-D pressure field on the entire domain. + \item You can increase the value of \ct{MAX_PRESSURE_ITERATIONS} which has a default value of 10 in most cases; 20 when the \ct{TUNNEL_PRECONDITIONER} is invoked. If you experience a numerical instability in a tunnel scenario, try setting the \ct{MAX_PRESSURE_ITERATIONS} to 50 as a starting point, and monitor the number of pressure iterations per time step in the \ct{CHID.out} file. + \item If you are using multiple meshes, reduce the value of \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to force a tighter match of velocities at the mesh boundaries. The default value of \ct{VELOCITY_TOLERANCE} (with units of m/s) is $\dx/2$. If you set \ct{TUNNEL_PRECONDITIONER=T}, there is less of a need to decrease the \ct{VELOCITY_TOLERANCE} from its default value, but it still may be necessary to increase the \linebreak[4]\ct{MAX_PRESSURE_ITERATIONS} to account for occasional excursions of pressure. + \item Create \ct{OPEN} vents at various points along the length of the tunnel, near or at the floor. This models natural leakage in the tunnel, and alleviates, to some extent, wild oscillations in pressure. Note that even if the pressure equation is solved perfectly over the entire domain, the low Mach number assumption will still lead to fictitiously large fluctuations in pressure. The \ct{OPEN} boundaries can help relieve these pressure oscillations. If you do choose to create \ct{OPEN} boundaries along the length of the tunnel, you should {\em not} set \ct{TUNNEL_PRECONDITIONER} to \ct{T}. + \item Reduce the value of \ct{PRESSURE_TOLERANCE} on the \ct{PRES} line to alleviate the mismatch between old and new pressure fields. The default value is $20/\dx^2$~\unit{\per\second^2}. A good value to try would be 1/5 to 1/10 of the default value. + \item Set \ct{SOLVER='GLMAT'} on the \ct{PRES} line to strictly enforce the matching of normal velocity and pressure at mesh boundaries or \ct{'UGLMAT'} to do what \ct{'GLMAT'} does plus enforce zero normal velocities at solid obstructions. If you use these solvers, you need not set the various tolerances described above or use the \ct{TUNNEL_PRECONDITIONER}. However, these solvers are very expensive, so it is best to try a simple case first to determine how much CPU time the pressure solver consumes. +\end{enumerate} +Two simple test cases, \ct{Pressure_Solver/tunnel_demo.fds} and \ct{tunnel_demo_glmat.fds}, demonstrate some of the issues discussed in this section. The first case uses the default FFT-based pressure solver with the \ct{TUNNEL_PRECONDITIONER} set to \ct{T}; the second uses the \ct{'GLMAT'} solver. An 8~MW fire is situated in a 4~m by 4~m by 128~m long tunnel that is sloped 10\unit{\degree}, closed at the lower end and open at the upper end. The tunnel is divided into 8 meshes, all the same size, with a uniform grid of 20~cm. The cases run for a relatively short amount of time, and diagnostic files\footnote{Caution: the velocity error file can be quite large. Use it only for relatively short simulations only.} containing information about the velocity and pressure errors are printed out. These files are generated by setting \ct{VELOCITY_ERROR_FILE=T} on the \ct{DUMP} line. The names of the files are \ct{tunnel_demo_pressit.csv} and \ct{tunnel_demo_glmat_pressit.csv}. A description of each column is as follows: +\begin{itemize} + \item \ct{Time}: Simulation time (s) + \item \ct{Time Step}: The index of the time step + \item \ct{Iteration}: The index of the pressure iteration within the time step. Note that for a single time step, there are two series of pressure iterations, one for the predictor phase, and one for the corrector. + \item \ct{Total}: The cumulative index of pressure iterations for the entire simulation + \item \ct{Mesh}: The mesh where the maximum velocity error occurs + \item \ct{I,J,K}: Cell indices where the maximum velocity error occurs + \item \ct{Velocity Error}: The maximum absolute value of the difference between normal velocity components at mesh interfaces or at solid internal boundaries + \item \ct{Mesh,I,J,K}: The mesh and cell indices where the maximum pressure error occurs + \item \ct{Pressure Error}: The quantity shown in Eq.~(\ref{pressure_error}) in units of \unit{\per\second^2} +\end{itemize} +Figure~\ref{tunnel_demo_fig} shows the velocity and pressure errors for the two cases over a short span of the simulation. For each quantity, there is a default error tolerance which may or may not be reached depending on whether or not the \ct{MAX_PRESSURE_ITERATIONS} (default 10) has been reached, or whether or not the error is reduced by at least 25~\% over the previous iteration. In some situations, the error decreases slowly, and these criteria have been added to avoid excessive iterations that lead to little improvement in accuracy. The errors shown in Fig.~\ref{tunnel_demo_fig} are relatively large because fires in long, closed enclosures like tunnels can generate large fluctuations in pressure that challenge both the multiple mesh capability and the pressure solving algorithm discussed above. Note that the simulation using the \ct{'GLMAT'} solver has no velocity error in this case because it solves the Poisson equation directly over the entire domain, not mesh by mesh. However, this simulation still requires iterations of the pressure solver to drive the solution closer to the true solution of the inseparable Poisson equation. - \begin{figure}[!ht] - \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_a} & - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_b} \\ - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_c} & - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_d} \\ - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_e} & - \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_fire} - \end{tabular*} - \caption[The \ct{tunnel_pressure_drop} cases]{Tunnel pressure drop for cases listed in Table \ref{tab:tunnel_pressure_drop}.} - \label{fig:tunnel_pressure_drop} - \end{figure} +\begin{figure}[ht] + \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_velocity} & + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_pressure} \\ + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_glmat_velocity} & + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_demo_glmat_pressure} + \end{tabular*} + \caption[Convergence test for the \ct{tunnel_demo} test cases]{Reduction in velocity and pressure error due to iteration of the pressure solver. The top two plots are the result of the FFT-based solver; the lower two \ct{'GLMAT'}.} + \label{tunnel_demo_fig} +\end{figure} - While reasonable grid resolution is important, the wall models in FDS are capable of giving the correct mean wall stress even at rather coarse resolution. For example, the $y^+$ for Case C with 10 cells is, in fact, 5000 (this is the location of the middle of the first grid cell divided by the roughness height). Also, note that a roughness of 0.1~mm is used here only for completeness in testing the code. While this is indeed the value one finds in the literature for the roughness of concrete, a real-world tunnel may have geometric features along the walls that are unresolved by the grid and may act as roughness elements. These elements should be considered when specifying the roughness in FDS. +\FloatBarrier - The lower right plot in Fig.~\ref{fig:tunnel_pressure_drop} displays the pressure drop in Tunnel~B (2~m/s flow speed, 0.1~m wall roughness) which now contains a hypothetical 50~MW fire at its midpoint. The grid resolution in the vertical direction is listed in the legend of the plots. For this case, the pressure is evaluated at mid-height along the tunnel centerline. The relatively rapid drop in pressure at the open end of the tunnel ($x=1600$~m) is due to the fact that the pressure is assumed to be ambient at an open boundary. +\subsubsection{Special Case: Pressure Drop in Long Tunnels} +\label{sec:tunnel_pressure_drop} +This section describes a set of cases to extract the implied friction factor from an FDS simulation of flow down a long tunnel (\ct{Validation/Moody_Chart/FDS_Input_Files/tunnel_pressure_drop} series). Note that a more complete mapping of the Moody Chart is provided in the FDS Verification Guide~\cite{FDS_Verification_Guide}, but that series uses a mean pressure gradient to force the flow, which is not a typical user case. Here the flow is forced from a \ct{VENT} and the axial pressure profile is formed from planar averages \ct{DEVC}s. The tunnel is 1.6~km (approximately 1~mi) long with a square cross-section 10~m by 10~m for Cases A, B, C, and D. The cross section for Case E is 12.8~m in width by 5~m in height, giving a hydraulic diameter of 7.2~m. Air is forced from the entrance at 2, 4, or 10~m/s for sand-grain roughness heights of 0.0001, 0.01, or 0.1~m. Two grid resolutions are used, with 10 or 20 uniform cells spanning the tunnel height. Stream-wise grid resolution is twice the wall-normal resolution. The case matrix and friction factor results are given in Table~\ref{tab:tunnel_pressure_drop}. The target friction factor is taken from the Colebrook equation~\cite{MYO}. FDS results for the 10 and 20 vertical cell cases are also shown along with the maximum relative error as compared to the Colebrook value. The pressure profiles are shown in Fig.~\ref{fig:tunnel_pressure_drop}. +\begin{table}[!ht] + \input{SCRIPT_FIGURES/tunnel_pressure_drop} +\end{table} - \section{Pressure Considerations in Stairwells} - \label{stairwell} +\begin{figure}[!ht] + \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_a} & + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_b} \\ + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_c} & + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_d} \\ + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_pressure_drop_e} & + \includegraphics[width=3in]{SCRIPT_FIGURES/tunnel_fire} + \end{tabular*} + \caption[The \ct{tunnel_pressure_drop} cases]{Tunnel pressure drop for cases listed in Table \ref{tab:tunnel_pressure_drop}.} + \label{fig:tunnel_pressure_drop} +\end{figure} - Another common fire protection application is smoke movement and pressurization within stairwells. A stairwell can be thought of as a vertical tunnel, with similar issues related to the pressure solver. Unlike tunnels, there is no special algorithm to increase the accuracy and stability of simulations within a stairwell, but there are some steps you can take to improve the simulation: - \begin{enumerate} - \item As with any tall building, the pressure stratification of the atmosphere can have an impact on the flow field and ventilation. A useful output quantity to include in any building simulation is \ct{'ABSOLUTE PRESSURE'}. This displays the background pressure field along with the relatively small perturbation induced by changes in ventilation or a fire. You typically do not see this background pressure field when you invoke the output quantity \ct{PRESSURE}, which displays only the perturbation to the background. - \item It may be necessary to tighten the tolerance of the pressure solver when simulating a stairwell scenario. If you are using multiple meshes, reduce the value of \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to force a tighter match of velocities at the mesh boundaries. The default value of \ct{VELOCITY_TOLERANCE} (with units of m/s) is $\dx/2$. Increase the \ct{MAX_PRESSURE_ITERATIONS} beyond the default value of 10. Experiment with the optional \ct{SOLVER='GLMAT'} on the \ct{PRES} line to strictly enforce the matching of normal velocity and pressure at mesh boundaries or \ct{'UGLMAT'} to do what \ct{'GLMAT'} does plus enforce zero normal velocities at solid obstructions. If you use these solvers, you need not set the various tolerances described above, but keep in mind that these solvers can be expensive. Try a simple case first to determine how much CPU time the pressure solver consumes. - \end{enumerate} - A sample input file called \ct{Pressure_Solver/stairwell.fds} demonstrates some of the important issues discussed in this chapter. The case consists of an eighteen story stairwell that opens to a lobby area. Doors are situated at various locations and are programmed to open when the pressure differential exceeds 20~Pa. A 1~m by 1~m hatch at the top of the stairwell draws air out at a rate of 0.5~\unit{m^3/s}, triggering doors to open one after the other until a path is opened up between an open door in the lobby and the extract vent. The plot in Fig.~\ref{stairwell_plot} demonstrates that once the path is opened, the flow equilibrates to 0.5~\unit{m^3/s}. +While reasonable grid resolution is important, the wall models in FDS are capable of giving the correct mean wall stress even at rather coarse resolution. For example, the $y^+$ for Case C with 10 cells is, in fact, 5000 (this is the location of the middle of the first grid cell divided by the roughness height). Also, note that a roughness of 0.1~mm is used here only for completeness in testing the code. While this is indeed the value one finds in the literature for the roughness of concrete, a real-world tunnel may have geometric features along the walls that are unresolved by the grid and may act as roughness elements. These elements should be considered when specifying the roughness in FDS. - \begin{figure}[!ht] - \centering - \includegraphics[width=3in]{SCRIPT_FIGURES/stairwell} - \caption[Results of the \ct{stairwell} test case]{Results of the \ct{stairwell} test case showing the volume flow of air through a tall stairwell.} - \label{stairwell_plot} - \end{figure} +The lower right plot in Fig.~\ref{fig:tunnel_pressure_drop} displays the pressure drop in Tunnel~B (2~m/s flow speed, 0.1~m wall roughness) which now contains a hypothetical 50~MW fire at its midpoint. The grid resolution in the vertical direction is listed in the legend of the plots. For this case, the pressure is evaluated at mid-height along the tunnel centerline. The relatively rapid drop in pressure at the open end of the tunnel ($x=1600$~m) is due to the fact that the pressure is assumed to be ambient at an open boundary. - \begin{figure}[p] - \includegraphics[height=8in]{FIGURES/stairwell_0001} - \caption[Smokeview rendering of a stairwell]{Smokeview rendering of a stairwell. The contour plot indicates the \ct{ABSOLUTE PRESSURE}, which in this case ranges from approximately $101\,600$~Pa at the bottom to $101\,000$~Pa at the top. Ground level is approximately halfway up.} - \label{fig:stairwell} - \end{figure} +\section{Pressure Considerations in Stairwells} +\label{stairwell} +Another common fire protection application is smoke movement and pressurization within stairwells. A stairwell can be thought of as a vertical tunnel, with similar issues related to the pressure solver. Unlike tunnels, there is no special algorithm to increase the accuracy and stability of simulations within a stairwell, but there are some steps you can take to improve the simulation: +\begin{enumerate} + \item As with any tall building, the pressure stratification of the atmosphere can have an impact on the flow field and ventilation. A useful output quantity to include in any building simulation is \ct{'ABSOLUTE PRESSURE'}. This displays the background pressure field along with the relatively small perturbation induced by changes in ventilation or a fire. You typically do not see this background pressure field when you invoke the output quantity \ct{PRESSURE}, which displays only the perturbation to the background. + \item It may be necessary to tighten the tolerance of the pressure solver when simulating a stairwell scenario. If you are using multiple meshes, reduce the value of \ct{VELOCITY_TOLERANCE} on the \ct{PRES} line to force a tighter match of velocities at the mesh boundaries. The default value of \ct{VELOCITY_TOLERANCE} (with units of m/s) is $\dx/2$. Increase the \ct{MAX_PRESSURE_ITERATIONS} beyond the default value of 10. Experiment with the optional \ct{SOLVER='GLMAT'} on the \ct{PRES} line to strictly enforce the matching of normal velocity and pressure at mesh boundaries or \ct{'UGLMAT'} to do what \ct{'GLMAT'} does plus enforce zero normal velocities at solid obstructions. If you use these solvers, you need not set the various tolerances described above, but keep in mind that these solvers can be expensive. Try a simple case first to determine how much CPU time the pressure solver consumes. +\end{enumerate} +A sample input file called \ct{Pressure_Solver/stairwell.fds} demonstrates some of the important issues discussed in this chapter. The case consists of an eighteen story stairwell that opens to a lobby area. Doors are situated at various locations and are programmed to open when the pressure differential exceeds 20~Pa. A 1~m by 1~m hatch at the top of the stairwell draws air out at a rate of 0.5~\unit{m^3/s}, triggering doors to open one after the other until a path is opened up between an open door in the lobby and the extract vent. The plot in Fig.~\ref{stairwell_plot} demonstrates that once the path is opened, the flow equilibrates to 0.5~\unit{m^3/s}. +\begin{figure}[!ht] + \centering + \includegraphics[width=3in]{SCRIPT_FIGURES/stairwell} + \caption[Results of the \ct{stairwell} test case]{Results of the \ct{stairwell} test case showing the volume flow of air through a tall stairwell.} + \label{stairwell_plot} +\end{figure} - \chapter{Output} - \label{info:outputdata} - \label{info:DUMP} +\begin{figure}[p] + \includegraphics[height=8in]{FIGURES/stairwell_0001} + \caption[Smokeview rendering of a stairwell]{Smokeview rendering of a stairwell. The contour plot indicates the \ct{ABSOLUTE PRESSURE}, which in this case ranges from approximately $101\,600$~Pa at the bottom to $101\,000$~Pa at the top. Ground level is approximately halfway up.} + \label{fig:stairwell} +\end{figure} - FDS has various types of output files that store computed data. Some of the files are in binary format and intended to be read and rendered by Smokeview. Some of the files are just comma-delimited text files. In most cases, you must explicitly declare the data to output. A considerable amount of the input file is usually devoted to output declarations. - \begin{itemize} - \item To control the frequency of data outputs, see Sec.~\ref{info:DT_DUMP}. - \item To record data at a given point or within a given volume, see Sec.~\ref{info:DEVC2}. - \item To record data inside solid boundaries, see Sec.~\ref{info:PROF}. - \item To visualize planar contours of scalar or vector quantities, see Sec.~\ref{info:SLCF}. - \item To visualize solid surface quantities, see Sec.~\ref{info:BNDF}. - \item To visualize 3-D contours of gas phase quantities, see Sec.~\ref{info:ISOF}. - \item To visualize various scalar quantities over the entire domain, see Sec.~\ref{info:PL3D}. - \item To visualize realistic smoke and fire, see Sec.~\ref{info:SMOKE3D}. - \item To visualize particles and droplets, see Sec.~\ref{info:part_output}. - \item For more information about particular output features, see Sec.~\ref{info:special_output}. - \item A tool for extracting data from contour and boundary output files is described in Sec.~\ref{info:fds2ascii}. - \item A list of gas phase output quantities is given in Sec.~\ref{info:gasoutputquantities}. - \item A list of solid phase output quantities is given in Sec.~\ref{info:solidoutputquantities}. - \item A list of device-related output quantities is given in Sec.~\ref{info:deviceoutputquantities}. - \item A list of particle and droplet output quantities is given in Sec.~\ref{info:particleoutputquantities}. - \item A list of HVAC output quantities is given in Sec.~\ref{info:hvacoutputquantities}. - \end{itemize} - The namelist group \ct{DUMP} contains parameters (Table \ref{tbl:DUMP}) that control the rate at which output files are written, and various other global parameters associated with output files. There can only be one \ct{DUMP} line in the input file. - By default, FDS outputs all result files to the current working directory. A separate output directory for binary files can be specified by the user by setting \ct{RESULTS_DIR} on the \ct{DUMP} line. A single text file \ct{CHID.smv} is always written with high level information about the case~\cite{Smokeview_Users_Guide}. By default, the information is gathered in MPI rank 0 which writes the file. For computations involving parallel file systems and many MPI processes, the file can also be written in parallel using MPI I/O routines setting \ct{SMV_PARALLEL_WRITE=T} in the \ct{DUMP} line. - \section{Controlling the Frequency of Output} - \label{info:DT_DUMP} - Point device data, slice (contour) data, particle data, isosurface data, 3D smoke data, boundary data, solid phase profile data, and control function data are written to file every \ct{(T_END-T_BEGIN)/NFRAMES} seconds unless otherwise specified using the parameters listed in Table~\ref{tbl:dt_params}. These parameters are written on the \ct{DUMP} line. You can also set \ct{NFRAMES} to a value other than 1000, its default. The parameters named \linebreak[4]\ct{DT_XXXX} specify the uniform time interval between data dumps. The parameters \ct{RAMP_XXXX} allow you to specify exactly which times to write out. For example, if you want to write boundary files at 10, 20, and 60~s, add the following: - \begin{lstlisting} - &DUMP ..., RAMP_BNDF='b-ramp' / - &RAMP ID='b-ramp', T=10 / - &RAMP ID='b-ramp', T=20 / - &RAMP ID='b-ramp', T=60 / - \end{lstlisting} - A few things to note: - \begin{itemize} - \item \ct{SMOKE3D} If the simulation involves combustion, FDS automatically writes out Smoke3D files of soot density, heat release rate per unit volume, and temperature. These quantities are rendered in Smokeview as realistic looking smoke and fire. To turn off this feature, set \ct{SMOKE3D=F} on the \ct{DUMP} line. - \item \ct{DT_PL3D} The time between Plot3D file output. Note that versions of FDS before 6 output Plot3D files by default. Now, you must specify the interval of output using this parameter. Its default value is 1000000~s, meaning that there is no Plot3D output unless specified. - \item \ct{FLUSH_FILE_BUFFERS} FDS purges the output file buffers periodically and forces the data to be written out into the respective output files. It does this to make it easier to view the case in Smokeview while it is running. It has been noticed on Windows machines that occasionally a runtime error occurs because of file access problems related to the buffer flushing. If this happens, set this parameter to \ct{F}, but be aware that it may not be possible to look at output in Smokeview until after the calculation is finished. You may also set \ct{DT_FLUSH} to control the frequency of the file flushing. Its default value is the duration of the simulation divided by \ct{NFRAMES}. - \item \ct{STATUS_FILES} If \ct{T}, produces an output file \ct{CHID.notready} which is deleted, if the simulation is completed successfully. This file can be used as an error indicator. It is \ct{F} by default. - \end{itemize} +\chapter{Output} +\label{info:outputdata} +\label{info:DUMP} - \begin{table}[!ht] - \caption[Parameters that control the frequency of output]{Parameters that control the frequency of output.} - \label{tbl:dt_params} - \begin{center} - \begin{tabular}{|l|l|l|} - \hline - Uniform Output & Non-Uniform Output & Purpose \\ \hline - \ct{DT_BNDF} & \ct{RAMP_BNDF} & Boundary files \\ - \ct{DT_CPU} & \ct{RAMP_CPU} & CPU timings \\ - \ct{DT_CTRL} & \ct{RAMP_CTRL} & Control output \\ - \ct{DT_DEVC} & \ct{RAMP_DEVC} & Device output \\ - \ct{DT_FLUSH} & \ct{RAMP_FLUSH} & File flushing times \\ - \ct{DT_HRR} & \ct{RAMP_HRR} & HRR output \\ - \ct{DT_HVAC} & \ct{RAMP_HVAC} & HVAC output \\ - \ct{DT_ISOF} & \ct{RAMP_ISOF} & Isosurface output \\ - \ct{DT_MASS} & \ct{RAMP_MASS} & Species mass output \\ - \ct{DT_PART} & \ct{RAMP_PART} & Particle output \\ - \ct{DT_PL3D} & \ct{RAMP_PL3D} & Plot3D output \\ - \ct{DT_PROF} & \ct{RAMP_PROF} & In-depth profile output \\ - \ct{DT_RADF} & \ct{RAMP_RADF} & Radiation output \\ - \ct{DT_RESTART} & \ct{RAMP_RESTART} & Restart times \\ - \ct{DT_SLCF} & \ct{RAMP_SLCF} & Slice files \\ - \ct{DT_SL3D} & \ct{RAMP_SL3D} & Slice 3D files \\ - \ct{DT_SMOKE3D} & \ct{RAMP_SMOKE3D} & Smoke 3D files \\ - \ct{DT_SPEC} & \ct{RAMP_SPEC} & Species field output \\ - \ct{DT_TMP} & \ct{RAMP_TMP} & Temperature field output \\ - \ct{DT_UVW} & \ct{RAMP_UVW} & Velocity field output \\ - \hline - \end{tabular} - \end{center} - \end{table} +FDS has various types of output files that store computed data. Some of the files are in binary format and intended to be read and rendered by Smokeview. Some of the files are just comma-delimited text files. In most cases, you must explicitly declare the data to output. A considerable amount of the input file is usually devoted to output declarations. +\begin{itemize} + \item To control the frequency of data outputs, see Sec.~\ref{info:DT_DUMP}. + \item To record data at a given point or within a given volume, see Sec.~\ref{info:DEVC2}. + \item To record data inside solid boundaries, see Sec.~\ref{info:PROF}. + \item To visualize planar contours of scalar or vector quantities, see Sec.~\ref{info:SLCF}. + \item To visualize solid surface quantities, see Sec.~\ref{info:BNDF}. + \item To visualize 3-D contours of gas phase quantities, see Sec.~\ref{info:ISOF}. + \item To visualize various scalar quantities over the entire domain, see Sec.~\ref{info:PL3D}. + \item To visualize realistic smoke and fire, see Sec.~\ref{info:SMOKE3D}. + \item To visualize particles and droplets, see Sec.~\ref{info:part_output}. + \item For more information about particular output features, see Sec.~\ref{info:special_output}. + \item A tool for extracting data from contour and boundary output files is described in Sec.~\ref{info:fds2ascii}. + \item A list of gas phase output quantities is given in Sec.~\ref{info:gasoutputquantities}. + \item A list of solid phase output quantities is given in Sec.~\ref{info:solidoutputquantities}. + \item A list of device-related output quantities is given in Sec.~\ref{info:deviceoutputquantities}. + \item A list of particle and droplet output quantities is given in Sec.~\ref{info:particleoutputquantities}. + \item A list of HVAC output quantities is given in Sec.~\ref{info:hvacoutputquantities}. +\end{itemize} +The namelist group \ct{DUMP} contains parameters (Table \ref{tbl:DUMP}) that control the rate at which output files are written, and various other global parameters associated with output files. There can only be one \ct{DUMP} line in the input file. +By default, FDS outputs all result files to the current working directory. A separate output directory for binary files can be specified by the user by setting \ct{RESULTS_DIR} on the \ct{DUMP} line. A single text file \ct{CHID.smv} is always written with high level information about the case~\cite{Smokeview_Users_Guide}. By default, the information is gathered in MPI rank 0 which writes the file. For computations involving parallel file systems and many MPI processes, the file can also be written in parallel using MPI I/O routines setting \ct{SMV_PARALLEL_WRITE=T} in the \ct{DUMP} line. - \newpage +\section{Controlling the Frequency of Output} +\label{info:DT_DUMP} - \section{Device Output: The \texorpdfstring{{\tt DEVC}}{DEVC} Namelist Group} - \label{info:DEVC2} +Point device data, slice (contour) data, particle data, isosurface data, 3D smoke data, boundary data, solid phase profile data, and control function data are written to file every \ct{(T_END-T_BEGIN)/NFRAMES} seconds unless otherwise specified using the parameters listed in Table~\ref{tbl:dt_params}. These parameters are written on the \ct{DUMP} line. You can also set \ct{NFRAMES} to a value other than 1000, its default. The parameters named \linebreak[4]\ct{DT_XXXX} specify the uniform time interval between data dumps. The parameters \ct{RAMP_XXXX} allow you to specify exactly which times to write out. For example, if you want to write boundary files at 10, 20, and 60~s, add the following: +\begin{lstlisting} + &DUMP ..., RAMP_BNDF='b-ramp' / + &RAMP ID='b-ramp', T=10 / + &RAMP ID='b-ramp', T=20 / + &RAMP ID='b-ramp', T=60 / +\end{lstlisting} +A few things to note: +\begin{itemize} + \item \ct{SMOKE3D} If the simulation involves combustion, FDS automatically writes out Smoke3D files of soot density, heat release rate per unit volume, and temperature. These quantities are rendered in Smokeview as realistic looking smoke and fire. To turn off this feature, set \ct{SMOKE3D=F} on the \ct{DUMP} line. + \item \ct{DT_PL3D} The time between Plot3D file output. Note that versions of FDS before 6 output Plot3D files by default. Now, you must specify the interval of output using this parameter. Its default value is 1000000~s, meaning that there is no Plot3D output unless specified. + \item \ct{FLUSH_FILE_BUFFERS} FDS purges the output file buffers periodically and forces the data to be written out into the respective output files. It does this to make it easier to view the case in Smokeview while it is running. It has been noticed on Windows machines that occasionally a runtime error occurs because of file access problems related to the buffer flushing. If this happens, set this parameter to \ct{F}, but be aware that it may not be possible to look at output in Smokeview until after the calculation is finished. You may also set \ct{DT_FLUSH} to control the frequency of the file flushing. Its default value is the duration of the simulation divided by \ct{NFRAMES}. + \item \ct{STATUS_FILES} If \ct{T}, produces an output file \ct{CHID.notready} which is deleted, if the simulation is completed successfully. This file can be used as an error indicator. It is \ct{F} by default. +\end{itemize} - Every device (\ct{DEVC}) records a particular \ct{QUANTITY}. Usually this \ct{QUANTITY} is written out to a comma-delimited spreadsheet file with the suffix \ct{_devc.csv}. The quantities are listed in Tables~\ref{tab:gasoutputquantities} through \ref{tab:hvacoutputquantities}. - There are two types of \ct{DEVC} output. The first is a time history of the given \ct{QUANTITY} over the course of the simulation. The second is a time-averaged profile consisting of a linear array of point devices. Each is explained below. +\begin{table}[!ht] + \caption[Parameters that control the frequency of output]{Parameters that control the frequency of output.} + \label{tbl:dt_params} + \begin{center} + \begin{tabular}{|l|l|l|} + \hline + Uniform Output & Non-Uniform Output & Purpose \\ \hline + \ct{DT_BNDF} & \ct{RAMP_BNDF} & Boundary files \\ + \ct{DT_CPU} & \ct{RAMP_CPU} & CPU timings \\ + \ct{DT_CTRL} & \ct{RAMP_CTRL} & Control output \\ + \ct{DT_DEVC} & \ct{RAMP_DEVC} & Device output \\ + \ct{DT_FLUSH} & \ct{RAMP_FLUSH} & File flushing times \\ + \ct{DT_HRR} & \ct{RAMP_HRR} & HRR output \\ + \ct{DT_HVAC} & \ct{RAMP_HVAC} & HVAC output \\ + \ct{DT_ISOF} & \ct{RAMP_ISOF} & Isosurface output \\ + \ct{DT_MASS} & \ct{RAMP_MASS} & Species mass output \\ + \ct{DT_PART} & \ct{RAMP_PART} & Particle output \\ + \ct{DT_PL3D} & \ct{RAMP_PL3D} & Plot3D output \\ + \ct{DT_PROF} & \ct{RAMP_PROF} & In-depth profile output \\ + \ct{DT_RADF} & \ct{RAMP_RADF} & Radiation output \\ + \ct{DT_RESTART} & \ct{RAMP_RESTART} & Restart times \\ + \ct{DT_SLCF} & \ct{RAMP_SLCF} & Slice files \\ + \ct{DT_SL3D} & \ct{RAMP_SL3D} & Slice 3D files \\ + \ct{DT_SMOKE3D} & \ct{RAMP_SMOKE3D} & Smoke 3D files \\ + \ct{DT_SPEC} & \ct{RAMP_SPEC} & Species field output \\ + \ct{DT_TMP} & \ct{RAMP_TMP} & Temperature field output \\ + \ct{DT_UVW} & \ct{RAMP_UVW} & Velocity field output \\ + \hline + \end{tabular} + \end{center} +\end{table} - \subsection{Gas Phase Quantity at a Single Point} - If you just want to record the time history of, say, the temperature at a particular point in the gas, add a line like: - \begin{lstlisting} - &DEVC XYZ=6.7,2.9,2.1, QUANTITY='TEMPERATURE', ID='T-1' / - \end{lstlisting} - and a column will be added to the output file \ct{CHID_devc.csv} under the label \ct{'T-1'}. FDS reports the value of the \ct{QUANTITY} in the cell containing the point \ct{XYZ}. Most scalar quantities, like \ct{TEMPERATURE}, are defined at cell centers and represent the average of that value over the entire cell. If you specify coordinates \ct{XYZ} that place the device on a cell boundary, halfway between two cell centers, FDS chooses the one that has the greater coordinate value. By default, FDS does not take a weighted average among the nearest 8 cell centers. The reason is that some of these cell centers might be on the other side of a thin obstruction. +\newpage - In cases where the \ct{QUANTITY} is defined on a cell face, like \ct{'U-VELOCITY'}, FDS chooses the nearest cell face and reports the corresponding value. +\section{Device Output: The \texorpdfstring{{\tt DEVC}}{DEVC} Namelist Group} +\label{info:DEVC2} - \subsection{Solid Phase Quantity at a Single Point} - \label{info:DEVC_position} +Every device (\ct{DEVC}) records a particular \ct{QUANTITY}. Usually this \ct{QUANTITY} is written out to a comma-delimited spreadsheet file with the suffix \ct{_devc.csv}. The quantities are listed in Tables~\ref{tab:gasoutputquantities} through \ref{tab:hvacoutputquantities}. - When prescribing a solid phase quantity, be sure to position the device at a solid surface. It is not always obvious where the solid surface is since the mesh does not always align with the input obstruction locations. To help locate the appropriate surface, the parameter \ct{IOR} {\em must} be included when designating a solid phase quantity, except when using one of the spatial statistics options that are described in Sec.~\ref{info:statistics} in which case the output quantity is not associated with just a single point on the surface. If the orientation of the solid surface is in the positive $x$ direction, set \ct{IOR=1}. If it is in the negative $x$ direction, set \ct{IOR=-1}, and so on for the $y$ and $z$ directions. For example, the line - \begin{lstlisting} - &DEVC XYZ=0.7,0.9,2.1, QUANTITY='WALL TEMPERATURE', IOR=-2, ID='...' / - \end{lstlisting} - designates the surface temperature of a wall facing the negative $y$ direction. There are still instances where FDS cannot determine which solid surface is being designated, in which case an error message appears in the diagnostic output file. Re-position the device and try again. It is best to position the device, via the real triplet \ct{XYZ}, such that the device location is either at or within a cell width {\it outside} of the solid surface. The search algorithm in FDS will look for the nearest solid surface in the direction opposite to that indicated by \ct{IOR}. +There are two types of \ct{DEVC} output. The first is a time history of the given \ct{QUANTITY} over the course of the simulation. The second is a time-averaged profile consisting of a linear array of point devices. Each is explained below. - \subsubsection{Solid Phase Quantity In-Depth} - \label{info:DEPTH} +\subsection{Gas Phase Quantity at a Single Point} - To record the temperature inside the surface, you can use a device as follows: - \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='INSIDE WALL TEMPERATURE', DEPTH=0.005, ID='Temp_1', IOR=3 / - \end{lstlisting} - The parameter \ct{DEPTH} (m) indicates a location inside the solid. A positive value indicates the distance from the front surface; a negative value indicates the distance (in absolute value) from the back surface. Note that if the wall thickness is decreasing over time due to the solid phase reactions, and the distance is measured from the current front surface, the measurement point moves toward the back side of the solid. Eventually, the point may emerge from the solid, in which case it returns the ambient temperature. Measuring the distance from the back surface may be more appropriate in this case. +If you just want to record the time history of, say, the temperature at a particular point in the gas, add a line like: +\begin{lstlisting} + &DEVC XYZ=6.7,2.9,2.1, QUANTITY='TEMPERATURE', ID='T-1' / +\end{lstlisting} +and a column will be added to the output file \ct{CHID_devc.csv} under the label \ct{'T-1'}. FDS reports the value of the \ct{QUANTITY} in the cell containing the point \ct{XYZ}. Most scalar quantities, like \ct{TEMPERATURE}, are defined at cell centers and represent the average of that value over the entire cell. If you specify coordinates \ct{XYZ} that place the device on a cell boundary, halfway between two cell centers, FDS chooses the one that has the greater coordinate value. By default, FDS does not take a weighted average among the nearest 8 cell centers. The reason is that some of these cell centers might be on the other side of a thin obstruction. - In general, the discrete points within a solid are stretched starting at the surface. If the solid cell center position is needed, it may be output using - \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='INSIDE WALL DEPTH', DEPTH=0.005, ID='XC_1', IOR=3 / - \end{lstlisting} - The output value should lie within half a solid cell distance from the specified \ct{DEPTH}. +In cases where the \ct{QUANTITY} is defined on a cell face, like \ct{'U-VELOCITY'}, FDS chooses the nearest cell face and reports the corresponding value. - To record the material component's density with time, use the output quantity \ct{'SOLID DENSITY'} in the following way: - \begin{lstlisting} - &DEVC ID='...', XYZ=..., IOR=3, QUANTITY='SOLID DENSITY', MATL_ID='wood', DEPTH=0.001 / - \end{lstlisting} - This produces a time history of the density of the material referred to as \ct{'wood'}. The density is recorded 1~mm beneath the surface which is oriented in the positive $z$ direction. Note that if \ct{'wood'} is part of a mixture, the density represents the mass of \ct{'wood'} per unit volume of the mixture. Without a \ct{MATL_ID}, the total density will be given. +\subsection{Solid Phase Quantity at a Single Point} +\label{info:DEVC_position} - To record the mass fraction of a material in a solid use \ct{QUANTITY='SOLID MASS FRACTION'}. This quantity requires a \ct{MATL_ID}. +When prescribing a solid phase quantity, be sure to position the device at a solid surface. It is not always obvious where the solid surface is since the mesh does not always align with the input obstruction locations. To help locate the appropriate surface, the parameter \ct{IOR} {\em must} be included when designating a solid phase quantity, except when using one of the spatial statistics options that are described in Sec.~\ref{info:statistics} in which case the output quantity is not associated with just a single point on the surface. If the orientation of the solid surface is in the positive $x$ direction, set \ct{IOR=1}. If it is in the negative $x$ direction, set \ct{IOR=-1}, and so on for the $y$ and $z$ directions. For example, the line +\begin{lstlisting} + &DEVC XYZ=0.7,0.9,2.1, QUANTITY='WALL TEMPERATURE', IOR=-2, ID='...' / +\end{lstlisting} +designates the surface temperature of a wall facing the negative $y$ direction. There are still instances where FDS cannot determine which solid surface is being designated, in which case an error message appears in the diagnostic output file. Re-position the device and try again. It is best to position the device, via the real triplet \ct{XYZ}, such that the device location is either at or within a cell width {\it outside} of the solid surface. The search algorithm in FDS will look for the nearest solid surface in the direction opposite to that indicated by \ct{IOR}. - To record the solid conductivity (\unit{W/(m.K)}), use \ct{QUANTITY='SOLID CONDUCTIVITY'}. To record the solid specific heat (\unit{kJ/(kg.K)}), use \ct{QUANTITY='SOLID SPECIFIC HEAT'}. To record the solid enthalpy (\unit{kJ/m^3}), use \ct{QUANTITY='SOLID ENTHALPY'}. These quantities do not take the optional \ct{MATL_ID} keyword. +\subsubsection{Solid Phase Quantity In-Depth} +\label{info:DEPTH} - Note that these inner solid quantities are allowed only for devices (\ct{DEVC}) or profiles (\ct{PROF}), not contoured boundaries (\ct{BNDF}). +To record the temperature inside the surface, you can use a device as follows: +\begin{lstlisting} + &DEVC XYZ=..., QUANTITY='INSIDE WALL TEMPERATURE', DEPTH=0.005, + ID='Temp_1', IOR=3 / +\end{lstlisting} +The parameter \ct{DEPTH} (m) indicates a location inside the solid. A positive value indicates the distance from the front surface; a negative value indicates the distance (in absolute value) from the back surface. Note that if the wall thickness is decreasing over time due to the solid phase reactions, and the distance is measured from the current front surface, the measurement point moves toward the back side of the solid. Eventually, the point may emerge from the solid, in which case it returns the ambient temperature. Measuring the distance from the back surface may be more appropriate in this case. - \subsubsection{Back Surface Temperature} - \label{info:BACK} +In general, the discrete points within a solid are stretched starting at the surface. If the solid cell center position is needed, it may be output using +\begin{lstlisting} + &DEVC XYZ=..., QUANTITY='INSIDE WALL DEPTH', DEPTH=0.005, ID='XC_1', IOR=3 / +\end{lstlisting} +The output value should lie within half a solid cell distance from the specified \ct{DEPTH}. - If you just want to know the temperature of the back surface of the ``wall,'' then use - \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='BACK WALL TEMPERATURE', ID='Temp_b', IOR=3 / - \end{lstlisting} - Note that this quantity is only meaningful if the front or exposed surface of the ``wall'' has the attribute \ct{BACKING='EXPOSED'} on the \ct{SURF} line that defines it. The coordinates, \ct{XYZ}, and orientation, \ct{IOR}, refer to the front surface. To check that the heat conduction calculation is being done properly, you can add the additional line - \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='WALL TEMPERATURE', ID='Temp_f', IOR=-3 / - \end{lstlisting} - where now \ct{XYZ} and \ct{IOR} refer to the coordinates and orientation of the back side of the wall. These two wall temperatures ought to be the same. Remember that the ``wall'' in this case can only be at most one mesh cell thick, and its \ct{THICKNESS} need not be the same as the mesh cell width. Rather, the \ct{THICKNESS} ought to be the actual thickness of the ``wall'' through which FDS performs a 1-D heat conduction calculation. +To record the material component's density with time, use the output quantity \ct{'SOLID DENSITY'} in the following way: +\begin{lstlisting} + &DEVC ID='...', XYZ=..., IOR=3, QUANTITY='SOLID DENSITY', MATL_ID='wood', DEPTH=0.001 / +\end{lstlisting} +This produces a time history of the density of the material referred to as \ct{'wood'}. The density is recorded 1~mm beneath the surface which is oriented in the positive $z$ direction. Note that if \ct{'wood'} is part of a mixture, the density represents the mass of \ct{'wood'} per unit volume of the mixture. Without a \ct{MATL_ID}, the total density will be given. +To record the mass fraction of a material in a solid use \ct{QUANTITY='SOLID MASS FRACTION'}. This quantity requires a \ct{MATL_ID}. - \subsection{Spatially-Integrated Outputs} - \label{info:statistics} +To record the solid conductivity (\unit{W/(m.K)}), use \ct{QUANTITY='SOLID CONDUCTIVITY'}. To record the solid specific heat (\unit{kJ/(kg.K)}), use \ct{QUANTITY='SOLID SPECIFIC HEAT'}. To record the solid enthalpy (\unit{kJ/m^3}), use \ct{QUANTITY='SOLID ENTHALPY'}. These quantities do not take the optional \ct{MATL_ID} keyword. - A useful feature of a device (\ct{DEVC}) is to specify an output quantity along with a desired statistic. For example, - \begin{lstlisting} - &DEVC XB=..., QUANTITY='TEMPERATURE', ID='maxT', SPATIAL_STATISTIC='MAX' / - \end{lstlisting} - causes FDS to write out the maximum gas phase temperature over the volume bounded by \ct{XB}. Other \ct{SPATIAL_STATISTIC}'s are discussed below. Some are appropriate for gas phase output quantities, some for solid phase, and some for both. Note that if \ct{XB} is used for a point device without a \ct{SPATIAL_STATISTIC}, then FDS will define \ct{XYZ} to be the center of the volume defined by \ct{XB}. A \ct{SPATIAL_STATISTIC} can only be used for a gas phase \ct{QUANTITY} in Table~\ref{info:gasoutputquantities} with both D and S in the file type column or for a solid phase \ct{QUANTITY} in Table~\ref{info:solidoutputquantities} with both D and B in the file type column. +Note that these inner solid quantities are allowed only for devices (\ct{DEVC}) or profiles (\ct{PROF}), not contoured boundaries (\ct{BNDF}). - For solid phase output quantities, like heat fluxes and surface temperatures, the specification of a \ct{SURF_ID} along with the appropriate statistic limits the calculation to only those surfaces. You can further limit the search by using the sextuplet of coordinates \ct{XB} to force FDS to only compute statistics for surface cells within the given volume. Be careful to account for the fact that the solid surface might shift to conform to the underlying numerical grid. Note that you do not (and should not) specify an orientation via the parameter \ct{IOR} when using a spatial statistic. \ct{IOR} is only needed to find a specific point on the solid surface. +\subsubsection{Back Surface Temperature} +\label{info:BACK} - Note that a shortcut for specifying the six \ct{XB} values on the \ct{DEVC} line is to instead use \ct{DB='WHOLE DOMAIN'} (\ct{DB} stands for ``Domain Boundary''). +If you just want to know the temperature of the back surface of the ``wall,'' then use +\begin{lstlisting} + &DEVC XYZ=..., QUANTITY='BACK WALL TEMPERATURE', ID='Temp_b', IOR=3 / +\end{lstlisting} +Note that this quantity is only meaningful if the front or exposed surface of the ``wall'' has the attribute \ct{BACKING='EXPOSED'} on the \ct{SURF} line that defines it. The coordinates, \ct{XYZ}, and orientation, \ct{IOR}, refer to the front surface. To check that the heat conduction calculation is being done properly, you can add the additional line +\begin{lstlisting} + &DEVC XYZ=..., QUANTITY='WALL TEMPERATURE', ID='Temp_f', IOR=-3 / +\end{lstlisting} +where now \ct{XYZ} and \ct{IOR} refer to the coordinates and orientation of the back side of the wall. These two wall temperatures ought to be the same. Remember that the ``wall'' in this case can only be at most one mesh cell thick, and its \ct{THICKNESS} need not be the same as the mesh cell width. Rather, the \ct{THICKNESS} ought to be the actual thickness of the ``wall'' through which FDS performs a 1-D heat conduction calculation. - \subsubsection{Linearly Interpolated Value} - By default, FDS reports a given gas-phase \ct{QUANTITY} at a given point \ct{XYZ} to be the value computed at the center of the cell containing the point. However, in some instances, you might want to report a linearly-interpolated value over the nearest eight grid cells: - \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T', SPATIAL_STATISTIC='INTERPOLATION' / - \end{lstlisting} - Be careful when using this option near a thin obstruction or a collection of stair-stepped obstructions because the average value might include data from the opposite side of the obstructions. A notable example would be a sprinkler ``device'' located under a stair-stepped ceiling. +\subsection{Spatially-Integrated Outputs} +\label{info:statistics} +A useful feature of a device (\ct{DEVC}) is to specify an output quantity along with a desired statistic. For example, +\begin{lstlisting} + &DEVC XB=..., QUANTITY='TEMPERATURE', ID='maxT', SPATIAL_STATISTIC='MAX' / +\end{lstlisting} +causes FDS to write out the maximum gas phase temperature over the volume bounded by \ct{XB}. Other \ct{SPATIAL_STATISTIC}'s are discussed below. Some are appropriate for gas phase output quantities, some for solid phase, and some for both. Note that if \ct{XB} is used for a point device without a \linebreak[4]\ct{SPATIAL_STATISTIC}, then FDS will define \ct{XYZ} to be the center of the volume defined by \ct{XB}. A \linebreak[4]\ct{SPATIAL_STATISTIC} can only be used for a gas phase \ct{QUANTITY} in Table~\ref{info:gasoutputquantities} with both D and S in the file type column or for a solid phase \ct{QUANTITY} in Table~\ref{info:solidoutputquantities} with both D and B in the file type column. - \subsubsection{Minimum or Maximum Value} +For solid phase output quantities, like heat fluxes and surface temperatures, the specification of a \linebreak[4]\ct{SURF_ID} along with the appropriate statistic limits the calculation to only those surfaces. You can further limit the search by using the sextuplet of coordinates \ct{XB} to force FDS to only compute statistics for surface cells within the given volume. Be careful to account for the fact that the solid surface might shift to conform to the underlying numerical grid. Note that you do not (and should not) specify an orientation via the parameter \ct{IOR} when using a spatial statistic. \ct{IOR} is only needed to find a specific point on the solid surface. - For a scalar quantity defined at the center of gas or solid phase cells, $\phi_{ijk}$, set \ct{SPATIAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'} to compute the minimum or maximum value, respectively, over the cells that are included in the specified volume bounded by \ct{XB}: - \be - \min_{ijk} \, \phi_{ijk} \quad ; \quad \max_{ijk} \, \phi_{ijk} - \ee - Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +Note that a shortcut for specifying the six \ct{XB} values on the \ct{DEVC} line is to instead use \ct{DB='WHOLE DOMAIN'} (\ct{DB} stands for ``Domain Boundary''). - If you want to know where the specified \ct{QUANTITY} achieves its minimum or maximum value over the specified volume \ct{XB}, set \ct{SPATIAL_STATISTIC} to \ct{'MINLOC X'} or \ct{'MAXLOC X'} for the $x$ coordinate. Substitute \ct{Y} or \ct{Z} if you desire the $y$ or $z$ coordinate, in m. +\subsubsection{Linearly Interpolated Value} +By default, FDS reports a given gas-phase \ct{QUANTITY} at a given point \ct{XYZ} to be the value computed at the center of the cell containing the point. However, in some instances, you might want to report a linearly-interpolated value over the nearest eight grid cells: +\begin{lstlisting} + &DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T', + SPATIAL_STATISTIC='INTERPOLATION' / +\end{lstlisting} +Be careful when using this option near a thin obstruction or a collection of stair-stepped obstructions because the average value might include data from the opposite side of the obstructions. A notable example would be a sprinkler ``device'' located under a stair-stepped ceiling. - \subsubsection{Average Value} - For a gas phase scalar quantity defined at the center of each grid cell, $\phi_{ijk}$, the \ct{SPATIAL_STATISTIC} \ct{'MEAN'} computes the average value, - \be \frac{1}{N} \; \sum_{ijk} \phi_{ijk} \ee - over the cells that are included in the specified volume bounded by \ct{XB}. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +\subsubsection{Minimum or Maximum Value} - If you are interested in the average value over a plane, give the \ct{XB} volume a small thickness to either side of the plane location encompassing the storage locations of the values of interest. For example, scalars like temperatures live at the cell center, so locate the plane at the cell center and add a small delta to either side of that plane for the \ct{XB}. +For a scalar quantity defined at the center of gas or solid phase cells, $\phi_{ijk}$, set \ct{SPATIAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'} to compute the minimum or maximum value, respectively, over the cells that are included in the specified volume bounded by \ct{XB}: +\be +\min_{ijk} \, \phi_{ijk} \quad ; \quad \max_{ijk} \, \phi_{ijk} +\ee +Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - \subsubsection{Volume-Weighted Mean} +If you want to know where the specified \ct{QUANTITY} achieves its minimum or maximum value over the specified volume \ct{XB}, set \ct{SPATIAL_STATISTIC} to \ct{'MINLOC X'} or \ct{'MAXLOC X'} for the $x$ coordinate. Substitute \ct{Y} or \ct{Z} if you desire the $y$ or $z$ coordinate, in m. - For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='VOLUME MEAN'} produces the discrete analog of - \be \frac{1}{V} \; \iiint \phi(x,y,z) \; \d x \, \d y \, \d z \ee - which is very similar to \ct{'MEAN'}, but it weights the values according to the relative size of the mesh cell. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - \subsubsection{Mass-Weighted Mean} +\subsubsection{Average Value} - For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='MASS MEAN'} produces the discrete analog of - \be \frac{ \iiint \rho(x,y,z) \; \phi(x,y,z) \; \d x \, \d y \, \d z}{\iiint \rho \; \d x \, \d y \, \d z} \ee - which is similar to \ct{'VOLUME MEAN'}, but it weights the values according to the relative mass of the mesh cell. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +For a gas phase scalar quantity defined at the center of each grid cell, $\phi_{ijk}$, the \ct{SPATIAL_STATISTIC} \ct{'MEAN'} computes the average value, +\be \frac{1}{N} \; \sum_{ijk} \phi_{ijk} \ee +over the cells that are included in the specified volume bounded by \ct{XB}. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - \subsubsection{Centroids} +If you are interested in the average value over a plane, give the \ct{XB} volume a small thickness to either side of the plane location encompassing the storage locations of the values of interest. For example, scalars like temperatures live at the cell center, so locate the plane at the cell center and add a small delta to either side of that plane for the \ct{XB}. - For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='CENTROID X'} produces the discrete analog of - \be \frac{ \iiint x \, \phi(x,y,z) \; \d x \, \d y \, \d z}{\iiint \phi(x,y,z) \; \d x \, \d y \, \d z} \ee - Similar calculations are performed for \ct{'CENTROID Y'} and \ct{'CENTROID Z'}. Note that this statistic is only appropriate for gas phase quantities, and you must specify a volume to sum over via the coordinate parameters, \ct{XB}. +\subsubsection{Volume-Weighted Mean} - \subsubsection{Volume Integral} +For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='VOLUME MEAN'} produces the discrete analog of +\be \frac{1}{V} \; \iiint \phi(x,y,z) \; \d x \, \d y \, \d z \ee +which is very similar to \ct{'MEAN'}, but it weights the values according to the relative size of the mesh cell. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='VOLUME INTEGRAL'} produces the discrete analog of - \be \iiint \phi(x,y,z) \; \d x \, \d y \, \d z \ee - This statistic is only appropriate for gas phase quantities, in particular those whose units involve \unit{\per\meter^3}. For example, heat release rate per unit volume is an appropriate output quantity. This statistic can also be used on a \ct{DEVC} line with an output quantity of \ct{DENSITY} to output the total mass within the volume bound by \ct{XB}. In all cases, you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +\subsubsection{Mass-Weighted Mean} - \subsubsection{Mass Integral} +For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='MASS MEAN'} produces the discrete analog of +\be \frac{ \iiint \rho(x,y,z) \; \phi(x,y,z) \; \d x \, \d y \, \d z}{\iiint \rho \; \d x \, \d y \, \d z} \ee +which is similar to \ct{'VOLUME MEAN'}, but it weights the values according to the relative mass of the mesh cell. Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - For a given gas phase output quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='MASS INTEGRAL'} produces the discrete analog of - \be \iiint \, \rho(x,y,z) \; \phi(x,y,z) \; \d x \, \d y \, \d z \ee - Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +\subsubsection{Centroids} - \subsubsection{Area Integral} +For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='CENTROID X'} produces the discrete analog of +\be \frac{ \iiint x \, \phi(x,y,z) \; \d x \, \d y \, \d z}{\iiint \phi(x,y,z) \; \d x \, \d y \, \d z} \ee +Similar calculations are performed for \ct{'CENTROID Y'} and \ct{'CENTROID Z'}. Note that this statistic is only appropriate for gas phase quantities, and you must specify a volume to sum over via the coordinate parameters, \ct{XB}. - For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='AREA INTEGRAL'} produces the discrete analog of - \be - \int \phi(x,y,z) \; \d A - \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 Integral} - \subsubsection{Area} +For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='VOLUME INTEGRAL'} produces the discrete analog of +\be \iiint \phi(x,y,z) \; \d x \, \d y \, \d z \ee +This statistic is only appropriate for gas phase quantities, in particular those whose units involve \unit{\per\meter^3}. For example, heat release rate per unit volume is an appropriate output quantity. This statistic can also be used on a \ct{DEVC} line with an output quantity of \ct{DENSITY} to output the total mass within the volume bound by \ct{XB}. In all cases, you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - 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 - \be \int \; \d A \ee - where $dA$ depends on the coordinates you specify for \ct{XB}. To compute the surface area of a solid, use \ct{'SURFACE AREA'}, see below. +\subsubsection{Mass Integral} - \subsubsection{Surface Integral} +For a given gas phase output quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='MASS INTEGRAL'} produces the discrete analog of +\be \iiint \, \rho(x,y,z) \; \phi(x,y,z) \; \d x \, \d y \, \d z \ee +Note that this statistic is only appropriate for gas phase quantities. Note also that you must specify a volume to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. - For a solid phase scalar quantity, $\phi$, \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} produces the discrete analog of - \be \int \phi \; \d A \ee - Note that this statistic is only appropriate for solid phase quantities, in particular those whose units involve \unit{\per\meter^2}. For example, the various heat and mass fluxes are appropriate output quantities. +\subsubsection{Area Integral} - \subsubsection{Surface Area} +For a gas phase scalar quantity, $\phi(x,y,z)$, \ct{SPATIAL_STATISTIC='AREA INTEGRAL'} produces the discrete analog of +\be +\int \phi(x,y,z) \; \d A +\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. - The solid surface analog of \ct{'AREA'} is \ct{'SURFACE AREA'}. Knowing this value is useful for reconstructing the average flux on a surface, for example. On the \ct{DEVC} line supply an \ct{XB} that encompasses the surface of interest, use an arbitrary \ct{QUANTITY}, and assign a \ct{SURF_ID}. - \begin{lstlisting} - &DEVC XB=..., QUANTITY=..., SURF_ID='my surf', SPATIAL_STATISTIC='SURFACE AREA', ID='surf area'/ - \end{lstlisting} +\subsubsection{Area} - \subsubsection{Limiting the Integration} +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 +\be \int \; \d A \ee +where $dA$ depends on the coordinates you specify for \ct{XB}. To compute the surface area of a solid, use \ct{'SURFACE AREA'}, see below. - The input parameter \ct{QUANTITY_RANGE} can be used to limit the region of integration for \ct{'AREA INTEGRAL'}, \ct{'VOLUME INTEGRAL'}, \ct{'MASS INTEGRAL'}, and \ct{'SURFACE INTEGRAL'}. If \ct{QUANTITY_RANGE} is set, the integration will only be performed if the value of the \ct{QUANTITY} lies within the \ct{QUANTITY_RANGE} where \ct{QUANTITY_RANGE(1)} is the lower bound and \ct{QUANTITY_RANGE(2)} is the upper bound. For example: - \begin{lstlisting} - &DEVC XB=..., QUANTITY='MASS FRACTION', SPEC_ID='METHANE', SPATIAL_STATISTIC='MASS INTEGRAL', QUANTITY_RANGE=0.03,0.15/ - \end{lstlisting} - would output the total mass of methane in the volume \ct{XB} where the mass fraction was between 0.03 and 0.15. +\subsubsection{Surface Integral} - A set of additional \ct{SPATIAL_STATISTIC}'s are available for use with \ct{QUANTITY_RANGE}: \ct{'MASS'}, \ct{'VOLUME'}, and \ct{'SURFACE AREA'}. These output the mass, volume, or surface area (for a solid phase quantity) where the \ct{QUANTITY} lies within the \ct{QUANTITY_RANGE}. For example: - \begin{lstlisting} - &DEVC XB=..., QUANTITY='TOTAL HEAT FLUX', SPATIAL_STATISTIC='SURFACE AREA', QUANTITY_RANGE(1)=10./ - \end{lstlisting} - would output the total surface area in the volume \ct{XB} where the total heat flux exceeds 10~\unit{kW/m^2}. +For a solid phase scalar quantity, $\phi$, \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} produces the discrete analog of +\be \int \phi \; \d A \ee +Note that this statistic is only appropriate for solid phase quantities, in particular those whose units involve \unit{\per\meter^2}. For example, the various heat and mass fluxes are appropriate output quantities. - \subsubsection{Two-Dimensional and Cylindrical Coordinate Systems} +\subsubsection{Surface Area} - If the computational domain is two-dimensional or cylindrical, some spatially-integrated quantities are adjusted to eliminate the dependence on the arbitrarily chosen $\delta y$ or $\delta \theta$. For a 2-D domain, a reported volume output will have units of \unit{m^3/m} and an area output will have units of \unit{m^2/m}. For a cylindrical domain, volume and area outputs are reported for the entire cylinder rather than the thin wedge on which the simulation is performed. This might cause confusion in cases where both the input parameters and simulation results involve volumetric or areal quantities; thus, it is good practice to perform a simple test case with a known result to verify that these adjustments have been performed properly. +The solid surface analog of \ct{'AREA'} is \ct{'SURFACE AREA'}. Knowing this value is useful for reconstructing the average flux on a surface, for example. On the \ct{DEVC} line supply an \ct{XB} that encompasses the surface of interest, use an arbitrary \ct{QUANTITY}, and assign a \ct{SURF_ID}. +\begin{lstlisting} + &DEVC XB=..., QUANTITY=..., SURF_ID='my surf', + SPATIAL_STATISTIC='SURFACE AREA', ID='surf area'/ +\end{lstlisting} +\subsubsection{Limiting the Integration} - \subsection{Temporally-Integrated Outputs} - \label{info:time_integral} +The input parameter \ct{QUANTITY_RANGE} can be used to limit the region of integration for \ct{'AREA INTEGRAL'}, \ct{'VOLUME INTEGRAL'}, \ct{'MASS INTEGRAL'}, and \ct{'SURFACE INTEGRAL'}. If \ct{QUANTITY_RANGE} is set, the integration will only be performed if the value of the \ct{QUANTITY} lies within the \ct{QUANTITY_RANGE} where \ct{QUANTITY_RANGE(1)} is the lower bound and \ct{QUANTITY_RANGE(2)} is the upper bound. For example: +\begin{lstlisting} + &DEVC XB=..., QUANTITY='MASS FRACTION', SPEC_ID='METHANE', + SPATIAL_STATISTIC='MASS INTEGRAL', QUANTITY_RANGE=0.03,0.15/ +\end{lstlisting} +would output the total mass of methane in the volume \ct{XB} where the mass fraction was between 0.03 and 0.15. - In addition to the spatial statistics, temporal statistics can be applied to \ct{DEVC} output via the parameter \ct{TEMPORAL_STATISTIC}. Both \ct{SPATIAL_STATISTIC} and \ct{TEMPORAL_STATISTIC} can be specified simultaneously on the \ct{DEVC} line, assuming the combination makes sense. The \ct{SPATIAL_STATISTIC} is applied first, say an integration of the \ct{QUANTITY} over a given volume \ct{XB}, followed by the \ct{TEMPORAL_STATISTIC}, like a time integral. +A set of additional \ct{SPATIAL_STATISTIC}'s are available for use with \ct{QUANTITY_RANGE}: \ct{'MASS'}, \ct{'VOLUME'}, and \ct{'SURFACE AREA'}. These output the mass, volume, or surface area (for a solid phase quantity) where the \ct{QUANTITY} lies within the \ct{QUANTITY_RANGE}. For example: +\begin{lstlisting} + &DEVC XB=..., QUANTITY='TOTAL HEAT FLUX', + SPATIAL_STATISTIC='SURFACE AREA', QUANTITY_RANGE(1)=10./ +\end{lstlisting} +would output the total surface area in the volume \ct{XB} where the total heat flux exceeds 10~\unit{kW/m^2}. - \subsubsection{Time Average} +\subsubsection{Two-Dimensional and Cylindrical Coordinate Systems} - The \ct{TEMPORAL_STATISTIC='TIME AVERAGE'} is typically applied by default, unless it is inappropriate for the chosen \ct{QUANTITY}. With this statistic, FDS outputs the average value of the \ct{QUANTITY} over the time period of \ct{DT_DEVC}~s just prior to the time of output. The parameter \ct{DT_DEVC} is specified on the \ct{DUMP} line. +If the computational domain is two-dimensional or cylindrical, some spatially-integrated quantities are adjusted to eliminate the dependence on the arbitrarily chosen $\delta y$ or $\delta \theta$. For a 2-D domain, a reported volume output will have units of \unit{m^3/m} and an area output will have units of \unit{m^2/m}. For a cylindrical domain, volume and area outputs are reported for the entire cylinder rather than the thin wedge on which the simulation is performed. This might cause confusion in cases where both the input parameters and simulation results involve volumetric or areal quantities; thus, it is good practice to perform a simple test case with a known result to verify that these adjustments have been performed properly. - \subsubsection{Running Average} - The \ct{TEMPORAL_STATISTIC='RUNNING AVERAGE'} outputs the running average value of the \ct{QUANTITY} over the time period starting at \ct{STATISTICS_START} and ending at \ct{STATISTICS_END}. This is the default behavior of ``line'' devices discussed in Sec.~\ref{info:line_file}. +\subsection{Temporally-Integrated Outputs} +\label{info:time_integral} - \subsubsection{Favre Average} +In addition to the spatial statistics, temporal statistics can be applied to \ct{DEVC} output via the parameter \ct{TEMPORAL_STATISTIC}. Both \ct{SPATIAL_STATISTIC} and \ct{TEMPORAL_STATISTIC} can be specified simultaneously on the \ct{DEVC} line, assuming the combination makes sense. The \ct{SPATIAL_STATISTIC} is applied first, say an integration of the \ct{QUANTITY} over a given volume \ct{XB}, followed by the \ct{TEMPORAL_STATISTIC}, like a time integral. - The \ct{TEMPORAL_STATISTIC='FAVRE AVERAGE'} outputs the Favre (density weighted) running average value of the \ct{QUANTITY} over the time period starting at \ct{STATISTICS_START} and ending at \ct{STATISTICS_END}. If the scalar quantity of interest is $\phi$ and the density is $\rho$ and the running average is defined by an overbar (that is, $\overline{\phi}$ is the running average of the scalar), then the Favre average is denoted with a tilde and computed as $\tilde{\phi} = \overline{\rho \phi}/\overline{\rho}$. This output is not compatible with \ct{INITIAL_VALUE}. +\subsubsection{Time Average} - \subsubsection{Instantaneous Value} +The \ct{TEMPORAL_STATISTIC='TIME AVERAGE'} is typically applied by default, unless it is inappropriate for the chosen \ct{QUANTITY}. With this statistic, FDS outputs the average value of the \ct{QUANTITY} over the time period of \ct{DT_DEVC}~s just prior to the time of output. The parameter \ct{DT_DEVC} is specified on the \ct{DUMP} line. - For various reasons you might want to output the value of the \ct{QUANTITY} that has not been time-averaged or processed in any way. Sometimes this is important for device and control functions. To output the instantaneous value, set \ct{TEMPORAL_STATISTIC} to \ct{'INSTANT VALUE'}. +\subsubsection{Running Average} - \subsubsection{Smoothed Value} +The \ct{TEMPORAL_STATISTIC='RUNNING AVERAGE'} outputs the running average value of the \ct{QUANTITY} over the time period starting at \ct{STATISTICS_START} and ending at \ct{STATISTICS_END}. This is the default behavior of ``line'' devices discussed in Sec.~\ref{info:line_file}. - Control functions that use devices as inputs use the value of the devices determined by the \ct{SMOOTHING_FACTOR} for each device. To output this smoothed value of the device, set \ct{TEMPORAL_STATISTIC} to \ct{'SMOOTHED'}. This statistic outputs the instantaneous smoothed value, and it does not time-average the smoothed value over the output interval. +\subsubsection{Favre Average} - \subsubsection{Time Integral} +The \ct{TEMPORAL_STATISTIC='FAVRE AVERAGE'} outputs the Favre (density weighted) running average value of the \ct{QUANTITY} over the time period starting at \ct{STATISTICS_START} and ending at \linebreak[4]\ct{STATISTICS_END}. If the scalar quantity of interest is $\phi$ and the density is $\rho$ and the running average is defined by an overbar (that is, $\overline{\phi}$ is the running average of the scalar), then the Favre average is denoted with a tilde and computed as $\tilde{\phi} = \overline{\rho \phi}/\overline{\rho}$. This output is not compatible with \ct{INITIAL_VALUE}. - \ct{TEMPORAL_STATISTIC='TIME INTEGRAL'} produces a discrete analog of the time integral: - \be - \int_{t_0}^t \phi(\tau) \; \d \tau - \ee +\subsubsection{Instantaneous Value} - \subsubsection{Minimum and Maximum Values over Time} +For various reasons you might want to output the value of the \ct{QUANTITY} that has not been time-averaged or processed in any way. Sometimes this is important for device and control functions. To output the instantaneous value, set \ct{TEMPORAL_STATISTIC} to \ct{'INSTANT VALUE'}. - Set \ct{TEMPORAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'} to determine the minimum or maximum value of the \ct{QUANTITY} over a time interval: - \be - \min_{t_0<=t<=t_1} \phi(t) \quad ; \quad \max_{t_0<=t<=t_1} \phi(t) - \ee - where $t_0$ is \ct{STATISTICS_START} and $t_1$ is \ct{STATISTICS_END}. +\subsubsection{Smoothed Value} - For some applications you might need to predict a minimum or maximum value of the \ct{QUANTITY} over a time interval that is longer than the simulation time. For example, in wind engineering the so-called 50~year maximum wind speed can be estimated using maximum yearly values collected over, say, 10~years. The idea is that extreme values conform to certain statistical distributions from which one can extrapolate extreme values over long time periods. In FDS, you can do something similar. If you add the parameter \ct{TIME_PERIOD} to the \ct{DEVC} line where you have also set the \ct{TEMPORAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'}, the time interval bounded by $t_0$ and $t_1$ is subdivided into $N=$\ct{N_INTERVALS} (default 10), and a minimum or maximum value is stored for each interval. At the end of the simulation, the set of maximum values (minimum values are handled similarly) are ranked in ascending order, $m=1,N$. Next, the cumulative statistical distribution is introduced~\cite{Harris:JWE1996}: - \be - F(\phi) = 1 - \exp[-\exp(\phi)] \quad ; \quad \phi = \ln[-\ln(1-F)] - \ee - which represents the probability\footnote{Note that the parameterless form of the distribution is intended for extrapolation only.} of the value $\phi$ not being exceeded in the given time interval, $(t_1-t_0)/N$. The probabilities for each of the $N$ ascending maximum values are assumed to be $m/(N+1)$. Plotting $\phi$ versus the expression on the right yields an approximate straight line from which we can estimate the value of $\phi$ appropriate for the longer \ct{TIME_PERIOD}; that is, the value for which the probability of not being exceeded in the relatively short time interval $(t_1-t_0)/N$ is very close to 1. Returning to the example from wind engineering, the probability of not exceeding the 50~year wind speed in a given year is $1-1/50=0.98$. +Control functions that use devices as inputs use the value of the devices determined by the \linebreak[4]\ct{SMOOTHING_FACTOR} for each device. To output this smoothed value of the device, set \linebreak[4]\ct{TEMPORAL_STATISTIC} to \ct{'SMOOTHED'}. This statistic outputs the instantaneous smoothed value, and it does not time-average the smoothed value over the output interval. - \subsubsection{Time to Reach Minimum and Maximum Value} +\subsubsection{Time Integral} - The time at which the given \ct{QUANTITY} achieves its maximum or minimum value is specified by the \ct{TEMPORAL_STATISTIC} \ct{'MAX TIME'} or \ct{'MIN TIME'}, respectively. +\ct{TEMPORAL_STATISTIC='TIME INTEGRAL'} produces a discrete analog of the time integral: +\be +\int_{t_0}^t \phi(\tau) \; \d \tau +\ee +\subsubsection{Minimum and Maximum Values over Time} - \subsubsection{Root Mean Square (RMS)} - \label{info:rms} - \label{info:rmscovcorr} +Set \ct{TEMPORAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'} to determine the minimum or maximum value of the \ct{QUANTITY} over a time interval: +\be +\min_{t_0<=t<=t_1} \phi(t) \quad ; \quad \max_{t_0<=t<=t_1} \phi(t) +\ee +where $t_0$ is \ct{STATISTICS_START} and $t_1$ is \ct{STATISTICS_END}. - \ct{TEMPORAL_STATISTIC='RMS'} produces the unbiased estimate of the {\em root mean square} of the \ct{QUANTITY} $\phi$: - \be - \phi_{\rm rms} = \sqrt{ \frac{ \sum_{i=1}^n (\phi_i - \overline{\phi})^2 }{n-1} } - \ee - The computation starts at \ct{STATISTICS_START} and ends at \ct{STATISTICS_END}. +For some applications you might need to predict a minimum or maximum value of the \ct{QUANTITY} over a time interval that is longer than the simulation time. For example, in wind engineering the so-called 50~year maximum wind speed can be estimated using maximum yearly values collected over, say, 10~years. The idea is that extreme values conform to certain statistical distributions from which one can extrapolate extreme values over long time periods. In FDS, you can do something similar. If you add the parameter \ct{TIME_PERIOD} to the \ct{DEVC} line where you have also set the \ct{TEMPORAL_STATISTIC} to \ct{'MIN'} or \ct{'MAX'}, the time interval bounded by $t_0$ and $t_1$ is subdivided into $N=$\ct{N_INTERVALS} (default 10), and a minimum or maximum value is stored for each interval. At the end of the simulation, the set of maximum values (minimum values are handled similarly) are ranked in ascending order, $m=1,N$. Next, the cumulative statistical distribution is introduced~\cite{Harris:JWE1996}: +\be +F(\phi) = 1 - \exp[-\exp(\phi)] \quad ; \quad \phi = \ln[-\ln(1-F)] +\ee +which represents the probability\footnote{Note that the parameterless form of the distribution is intended for extrapolation only.} of the value $\phi$ not being exceeded in the given time interval, $(t_1-t_0)/N$. The probabilities for each of the $N$ ascending maximum values are assumed to be $m/(N+1)$. Plotting $\phi$ versus the expression on the right yields an approximate straight line from which we can estimate the value of $\phi$ appropriate for the longer \ct{TIME_PERIOD}; that is, the value for which the probability of not being exceeded in the relatively short time interval $(t_1-t_0)/N$ is very close to 1. Returning to the example from wind engineering, the probability of not exceeding the 50~year wind speed in a given year is $1-1/50=0.98$. - \subsubsection{Favre Root Mean Square} +\subsubsection{Time to Reach Minimum and Maximum Value} - \ct{TEMPORAL_STATISTIC='FAVRE RMS'} produces the unbiased estimate of the density-weighted {\em root mean square} of the \ct{QUANTITY} $\phi$: - \be - \tilde{\phi}_{\rm rms} = \sqrt{ \frac{ \sum_{i=1}^n (\phi_i - \tilde{\phi})^2 }{n-1} } \quad ; \quad \tilde{\phi} = \overline{\rho \phi}/\overline{\rho} - \ee - The computation starts at \ct{STATISTICS_START} and ends at \ct{STATISTICS_END}. This output is not compatible with \ct{INITIAL_VALUE}. +The time at which the given \ct{QUANTITY} achieves its maximum or minimum value is specified by the \ct{TEMPORAL_STATISTIC} \ct{'MAX TIME'} or \ct{'MIN TIME'}, respectively. - \subsubsection{Covariance} - \label{info:covariance} - If $u = U - \overline{U}$ and $v= V-\overline{V}$ are the deviations for two random variables, $U$ and $V$, then an unbiased estimate of the \emph{covariance} is given by - \be - \overline{u\, v} = \frac{ \sum_{i=1}^n (U_i - \overline{U}) (V_i - \overline{V}) }{n-1} - \ee - To output this statistic you must add a \ct{QUANTITY2} to the \ct{DEVC} line and set \ct{TEMPORAL_STATISTIC='COV'}. The following lines would create a line of devices and a single point device equivalent to the first point in the line: - \begin{lstlisting} - &DEVC XB=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='CELL W', QUANTITY2='TEMPERATURE', - TEMPORAL_STATISTIC='COV', ID='wT-cov_line', POINTS=20 / - &DEVC XYZ=X1,Y1,Z1, QUANTITY='CELL W', QUANTITY2='TEMPERATURE', - TEMPORAL_STATISTIC='COV', ID='wT-cov_point', STATISTICS_START=20. / - \end{lstlisting} +\subsubsection{Root Mean Square (RMS)} +\label{info:rms} +\label{info:rmscovcorr} - \subsubsection{Correlation Coefficient} - \label{info:corrcoef} +\ct{TEMPORAL_STATISTIC='RMS'} produces the unbiased estimate of the {\em root mean square} of the \ct{QUANTITY} $\phi$: +\be +\phi_{\rm rms} = \sqrt{ \frac{ \sum_{i=1}^n (\phi_i - \overline{\phi})^2 }{n-1} } +\ee +The computation starts at \ct{STATISTICS_START} and ends at \ct{STATISTICS_END}. - Setting \ct{TEMPORAL_STATISTIC='CORRCOEF'} outputs the \emph{correlation coefficient} given by - \be - \rho_{uv} = \frac{ \overline{u\, v} }{ u_{\rm rms} \,v_{\rm rms} } - \ee - Here again you must add a \ct{QUANTITY2} to the device line. +\subsubsection{Favre Root Mean Square} +\ct{TEMPORAL_STATISTIC='FAVRE RMS'} produces the unbiased estimate of the density-weighted {\em root mean square} of the \ct{QUANTITY} $\phi$: +\be +\tilde{\phi}_{\rm rms} = \sqrt{ \frac{ \sum_{i=1}^n (\phi_i - \tilde{\phi})^2 }{n-1} } \quad ; \quad \tilde{\phi} = \overline{\rho \phi}/\overline{\rho} +\ee +The computation starts at \ct{STATISTICS_START} and ends at \ct{STATISTICS_END}. This output is not compatible with \ct{INITIAL_VALUE}. +\subsubsection{Covariance} +\label{info:covariance} - \subsection{Linear Array of Point Devices} - \label{info:line_file} +If $u = U - \overline{U}$ and $v= V-\overline{V}$ are the deviations for two random variables, $U$ and $V$, then an unbiased estimate of the \emph{covariance} is given by +\be +\overline{u\, v} = \frac{ \sum_{i=1}^n (U_i - \overline{U}) (V_i - \overline{V}) }{n-1} +\ee +To output this statistic you must add a \ct{QUANTITY2} to the \ct{DEVC} line and set \ct{TEMPORAL_STATISTIC='COV'}. The following lines would create a line of devices and a single point device equivalent to the first point in the line: +\begin{lstlisting} + &DEVC XB=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='CELL W', QUANTITY2='TEMPERATURE', + TEMPORAL_STATISTIC='COV', ID='wT-cov_line', POINTS=20 / + &DEVC XYZ=X1,Y1,Z1, QUANTITY='CELL W', QUANTITY2='TEMPERATURE', + TEMPORAL_STATISTIC='COV', ID='wT-cov_point', STATISTICS_START=20. / +\end{lstlisting} - You can use a single \ct{DEVC} line to specify a linear array of devices. By adding the parameter \ct{POINTS} and using the sextuple coordinate array \ct{XBP}\footnote{Earlier versions of FDS made use of the array \ct{XB} to specify the extents of a linear array of point devices. However, \ct{XB} might be needed to specify a particular type of \ct{SPATIAL_STATISTIC} associated with each device.}, you can direct FDS to create a line of devices from $(x_1,y_1,z_1)$ to $(x_2,y_2,z_2)$. There are two options. +\subsubsection{Correlation Coefficient} +\label{info:corrcoef} - \subsubsection{Steady-State Profile} +Setting \ct{TEMPORAL_STATISTIC='CORRCOEF'} outputs the \emph{correlation coefficient} given by +\be +\rho_{uv} = \frac{ \overline{u\, v} }{ u_{\rm rms} \,v_{\rm rms} } +\ee +Here again you must add a \ct{QUANTITY2} to the device line. - Sometimes it is convenient to calculate a steady-state profile. For example, the vertical velocity profile along the centerline of a doorway can be recorded with the following line of input: - \begin{lstlisting} - &DEVC XBP=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', ID='vel', POINTS=20, - STATISTICS_START=20., STATISTICS_END=40. / - \end{lstlisting} - In a file called \ct{CHID_line.csv}, there will be between 1 and 4 columns of data associated with this single \ct{DEVC} line. If \ct{X1} is different than \ct{X2}, there will be a column of $x$ coordinates associated with the linear array of points. The same holds for the $y$ and $z$ coordinates. The last column contains the 20 temperature points time-averaged over the interval between \ct{STATISTICS_START} and \ct{STATISTICS_END}. The default value of the latter is \ct{T_END} and the former is half the total simulation time. This is a convenient way to output a time-averaged linear profile of a quantity, like an array of thermocouples. Note that the statistics output to the \ct{_line.csv} file start being averaged at \ct{T=STATISTICS_START}. Prior to this time, the values are zero. This prevents initial transient from biasing the final average value or other temporal statistics. - By default, the points are uniformly spaced between $(x_1,y_1,z_1)$ and $(x_2,y_2,z_2)$. To change this, you can add arrays of coordinate values \ct{POINTS_ARRAY_X}, \ct{POINTS_ARRAY_Y}, and/or \ct{POINTS_ARRAY_Z}. For example, the line - \begin{lstlisting} - &DEVC XBP=0,0,0,0,0,1, QUANTITY='TEMPERATURE', ID='T', POINTS=4, - POINTS_ARRAY_Z=0.1,0.2,0.3,0.7 / - \end{lstlisting} - creates an array of four points in the vertical direction that are not uniformly spaced. The original values of 0 and 1 in the array \ct{XBP} are ignored. Using all three \ct{POINTS_ARRAY}s, you can create a curved line of points. The upper dimension of these arrays is 100. - A single ``line'' file can hold more than a single line of data. By default, the coordinate columns are labeled using the \ct{ID} of the \ct{DEVC} appended with either \ct{-x}, \ct{-y}, or \ct{-z}. To change these labels, use \ct{X_ID}, \ct{Y_ID}, and/or \ct{Z_ID}. To suppress the coordinate columns altogether, add \ct{HIDE_COORDINATES=T} to the \ct{DEVC} line. This is convenient if you have multiple arrays of data that use the same coordinates. If you want the data plotted as a function of the distance from the origin, $r=\sqrt{x^2+y^2+z^2}$, provide the label \ct{R_ID}. If you want the data plotted as a function of the distance from the first point on the line, (\ct{X1,Y1,Z1}), provide the label \ct{D_ID}. +\subsection{Linear Array of Point Devices} +\label{info:line_file} - You can convert the spatial coordinate of a steady-state profile by setting \ct{COORD_FACTOR} on the \ct{DEVC} line. For example, to convert from the default unit of meters to centimeters, set \ct{COORD_FACTOR} to 100. Also set \ct{XYZ_UNITS} to the appropriate character string, in this case \ct{XYZ_UNITS='cm'}. +You can use a single \ct{DEVC} line to specify a linear array of devices. By adding the parameter \ct{POINTS} and using the sextuple coordinate array \ct{XBP}\footnote{Earlier versions of FDS made use of the array \ct{XB} to specify the extents of a linear array of point devices. However, \ct{XB} might be needed to specify a particular type of \ct{SPATIAL_STATISTIC} associated with each device.}, you can direct FDS to create a line of devices from $(x_1,y_1,z_1)$ to $(x_2,y_2,z_2)$. There are two options. - \subsubsection{Time-Varying Profile} +\subsubsection{Steady-State Profile} - If you do not want a steady-state profile, but rather you just want to specify an array of evenly spaced devices, you can use a similar input line, except with the additional attribute \ct{TIME_HISTORY}. - \begin{lstlisting} - &DEVC XBP=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', ID='vel', POINTS=20, - TIME_HISTORY=T / - \end{lstlisting} - This directs FDS to just add 20 devices to the on-going list, saving you from having to write 20 \ct{DEVC} lines. The \ct{ID} for each device will be \ct{'vel-01'}, \ct{'vel-02'}, etc. +Sometimes it is convenient to calculate a steady-state profile. For example, the vertical velocity profile along the centerline of a doorway can be recorded with the following line of input: +\begin{lstlisting} + &DEVC XBP=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', ID='vel', POINTS=20, + STATISTICS_START=20., STATISTICS_END=40. / +\end{lstlisting} +In a file called \ct{CHID_line.csv}, there will be between 1 and 4 columns of data associated with this single \ct{DEVC} line. If \ct{X1} is different than \ct{X2}, there will be a column of $x$ coordinates associated with the linear array of points. The same holds for the $y$ and $z$ coordinates. The last column contains the 20 temperature points time-averaged over the interval between \ct{STATISTICS_START} and \ct{STATISTICS_END}. The default value of the latter is \ct{T_END} and the former is half the total simulation time. This is a convenient way to output a time-averaged linear profile of a quantity, like an array of thermocouples. Note that the statistics output to the \ct{_line.csv} file start being averaged at \ct{T=STATISTICS_START}. Prior to this time, the values are zero. This prevents initial transient from biasing the final average value or other temporal statistics. +By default, the points are uniformly spaced between $(x_1,y_1,z_1)$ and $(x_2,y_2,z_2)$. To change this, you can add arrays of coordinate values \ct{POINTS_ARRAY_X}, \ct{POINTS_ARRAY_Y}, and/or \ct{POINTS_ARRAY_Z}. For example, the line +\begin{lstlisting} + &DEVC XBP=0,0,0,0,0,1, QUANTITY='TEMPERATURE', ID='T', POINTS=4, + POINTS_ARRAY_Z=0.1,0.2,0.3,0.7 / +\end{lstlisting} +creates an array of four points in the vertical direction that are not uniformly spaced. The original values of 0 and 1 in the array \ct{XBP} are ignored. Using all three \ct{POINTS_ARRAY}s, you can create a curved line of points. The upper dimension of these arrays is 100. - \subsubsection{Other Statistics for a Linear Array of Devices} +A single ``line'' file can hold more than a single line of data. By default, the coordinate columns are labeled using the \ct{ID} of the \ct{DEVC} appended with either \ct{-x}, \ct{-y}, or \ct{-z}. To change these labels, use \ct{X_ID}, \ct{Y_ID}, and/or \ct{Z_ID}. To suppress the coordinate columns altogether, add \ct{HIDE_COORDINATES=T} to the \ct{DEVC} line. This is convenient if you have multiple arrays of data that use the same coordinates. If you want the data plotted as a function of the distance from the origin, $r=\sqrt{x^2+y^2+z^2}$, provide the label \ct{R_ID}. If you want the data plotted as a function of the distance from the first point on the line, (\ct{X1,Y1,Z1}), provide the label \ct{D_ID}. - By default, when you specify multiple \ct{POINTS} on a \ct{DEVC} line and you do not specify \ct{TIME_HISTORY=T}, a running average of the specified \ct{QUANTITY} is saved at each point location and written to the file with suffix \ct{_line.csv} with the accumulated values at the time \ct{STATISTICS_END}. However, you can apply any other \ct{TEMPORAL_STATISTIC} and compute, for example, the root-mean-square (\ct{'RMS'}), minimum (\ct{'MIN'}), or maximum (\ct{'MAX'}) value over the specified time interval. +You can convert the spatial coordinate of a steady-state profile by setting \ct{COORD_FACTOR} on the \ct{DEVC} line. For example, to convert from the default unit of meters to centimeters, set \ct{COORD_FACTOR} to 100. Also set \ct{XYZ_UNITS} to the appropriate character string, in this case \ct{XYZ_UNITS='cm'}. - You may also specify a \ct{SPATIAL_STATISTIC} for each device in the line as follows: - \begin{lstlisting} - &DEVC XBP=1,10,5,5,8,8, QUANTITY='TEMPERATURE', ID='Tmean', POINTS=20, - STATISTICS_START=20., STATISTICS_END=40. - SPATIAL_STATISTIC='MEAN', DX=0.1, DY=5.0, DZ=3.0 / - \end{lstlisting} - This input line specifies a linear array of 20 points starting at $\bx=(1,5,8)$ and ending at $\bx=(10,5,8)$. For each point in the array, $(x_i,y_i,z_i)$, FDS calculates the average temperature over the volume $x_i - \dx \le x \le x_i+\dx$; $y_i - \dy \le y \le y_i+\dy$; $z_i - \dz \le z \le z_i+\dz$. These average temperatures are then time-averaged over the time interval between 20~s and 40~s. In general, the spatial averaging is done first; that is, FDS reports the time-average of the spatially-averaged temperatures for each point in the linear array, not the spatial-average of the temporally-averaged temperatures. +\subsubsection{Time-Varying Profile} +If you do not want a steady-state profile, but rather you just want to specify an array of evenly spaced devices, you can use a similar input line, except with the additional attribute \ct{TIME_HISTORY}. +\begin{lstlisting} + &DEVC XBP=X1,X2,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', ID='vel', POINTS=20, + TIME_HISTORY=T / +\end{lstlisting} +This directs FDS to just add 20 devices to the on-going list, saving you from having to write 20 \ct{DEVC} lines. The \ct{ID} for each device will be \ct{'vel-01'}, \ct{'vel-02'}, etc. - \subsubsection{Moving a Linear Array of Devices} - \label{info:MOVE_ID} - It is possible to translate and/or rotate a linear array of devices using parameters on a \ct{MOVE} line (see Sec.~\ref{info:MOVE}). To specify these parameters, use the character string \ct{MOVE_ID} on the \ct{DEVC} line. Note that if a \ct{SPATIAL_STATISTIC} is specified, the spatial bounds, \ct{DX}, \ct{DY}, and/or \ct{DZ}, are not transformed. +\subsubsection{Other Statistics for a Linear Array of Devices} +By default, when you specify multiple \ct{POINTS} on a \ct{DEVC} line and you do not specify \ct{TIME_HISTORY=T}, a running average of the specified \ct{QUANTITY} is saved at each point location and written to the file with suffix \ct{_line.csv} with the accumulated values at the time \ct{STATISTICS_END}. However, you can apply any other \ct{TEMPORAL_STATISTIC} and compute, for example, the root-mean-square (\ct{'RMS'}), minimum (\ct{'MIN'}), or maximum (\ct{'MAX'}) value over the specified time interval. +You may also specify a \ct{SPATIAL_STATISTIC} for each device in the line as follows: +\begin{lstlisting} + &DEVC XBP=1,10,5,5,8,8, QUANTITY='TEMPERATURE', ID='Tmean', POINTS=20, + STATISTICS_START=20., STATISTICS_END=40. + SPATIAL_STATISTIC='MEAN', DX=0.1, DY=5.0, DZ=3.0 / +\end{lstlisting} +This input line specifies a linear array of 20 points starting at $\bx=(1,5,8)$ and ending at $\bx=(10,5,8)$. For each point in the array, $(x_i,y_i,z_i)$, FDS calculates the average temperature over the volume $x_i - \dx \le x \le x_i+\dx$; $y_i - \dy \le y \le y_i+\dy$; $z_i - \dz \le z \le z_i+\dz$. These average temperatures are then time-averaged over the time interval between 20~s and 40~s. In general, the spatial averaging is done first; that is, FDS reports the time-average of the spatially-averaged temperatures for each point in the linear array, not the spatial-average of the temporally-averaged temperatures. - \newpage - \section{In-Depth Profiles within Solids: The \texorpdfstring{{\tt PROF}}{PROF} Namelist Group} - \label{info:PROF} +\subsubsection{Moving a Linear Array of Devices} +\label{info:MOVE_ID} - FDS uses a fine one-dimensional grid at each boundary cell to calculate the heat conduction and reactions within a solid. The solid can be a wall cell or a Lagrangian particle. In either case, use the \ct{PROF} output to record the properties of the solid in depth at discrete intervals of time. A \ct{PROF} can use any solid phase output \ct{QUANTITY} that takes a \ct{DEPTH}. These are identified with the file type ``Pr'' in Table~\ref{info:solidoutputquantities}. Where appropriate, output can be limited to a single material by specifying \ct{MATL_ID}. +It is possible to translate and/or rotate a linear array of devices using parameters on a \ct{MOVE} line (see Sec.~\ref{info:MOVE}). To specify these parameters, use the character string \ct{MOVE_ID} on the \ct{DEVC} line. Note that if a \ct{SPATIAL_STATISTIC} is specified, the spatial bounds, \ct{DX}, \ct{DY}, and/or \ct{DZ}, are not transformed. - The parameters for a \ct{PROF} line are listed in Table~\ref{tbl:PROF}. For a wall cell, the parameters are similar to those used to specify a surface quantity in the \ct{DEVC} group. \ct{XYZ} designates the triplet of coordinates, \ct{IOR} the orientation, and \ct{ID} an identifying character string. Here is an example of how you would use this feature to get a time history of temperature profiles within a wall cell: - \begin{lstlisting} - &PROF ID='T-1', XYZ=..., QUANTITY='INSIDE WALL TEMPERATURE', IOR=3 / - \end{lstlisting} - For a particle, there are two options. The first is to use \ct{INIT_ID} to reference the \ct{INIT} line used to place the particle within the domain: - \begin{lstlisting} - &INIT ID='my particle', XYZ=..., N_PARTICLES=1, PART_ID='...' / - &PROF ID='T-2', INIT_ID='my particle', QUANTITY='INSIDE WALL TEMPERATURE' / - \end{lstlisting} - The second option is to use \ct{LP_TAG} to specify the particle using its unique identifying tag\footnote{Each droplet or particle has a unique integer identifier. To find it, open the case in Smokeview, load the particles, right click, ``Files/Data/Coloring,'' ``Particles,'' ``Settings,'' and click the box labeled ``Show selected particle tag.'' Then click on the desired particle.}. Once you have determined the tag, add the following line to the input file: - \begin{lstlisting} - &PROF LP_TAG=..., PART_ID='...', QUANTITY='INSIDE WALL TEMPERATURE' / - \end{lstlisting} - Note that you must specify the \ct{PART_ID} so that the appropriate inner noding structure can be determined. With either option for designating a particle, do not specify \ct{XYZ} or \ct{IOR} on the \ct{PROF} line. - The \ct{QUANTITY} is the physical quantity to record. Each \ct{PROF} line creates a separate file. The first number in each row is the time at which the profile is extracted. The second number is the number of ``nodes,'' $n$, which is the number of solid phase cells plus 1. The next $n$ values are the node coordinates, running from 0 at the surface to the full \ct{THICKNESS} at the end. The next $n$ numbers are the values of the \ct{QUANTITY} at the node points. The first of these values is located at the surface. If you specify \ct{CELL_CENTERED=T}, the \ct{QUANTITY} values will be recorded at $n$ interior cell centers rather than cell boundaries. The \ct{ID} is an optional input which, if provided, is used in the file header. +\section{In-Depth Profiles within Solids: The \texorpdfstring{{\tt PROF}}{PROF} Namelist Group} +\label{info:PROF} - There is a second optional format. If you specify \ct{FORMAT_INDEX=2} on the \ct{PROF} line, the resulting file will contain columns containing only the final set of node coordinates and quantity values. This is handy for displaying a steady-state temperature profile. +FDS uses a fine one-dimensional grid at each boundary cell to calculate the heat conduction and reactions within a solid. The solid can be a wall cell or a Lagrangian particle. In either case, use the \ct{PROF} output to record the properties of the solid in depth at discrete intervals of time. A \ct{PROF} can use any solid phase output \ct{QUANTITY} that takes a \ct{DEPTH}. These are identified with the file type ``Pr'' in Table~\ref{tab:solidoutputquantities}. Where appropriate, output can be limited to a single material by specifying \ct{MATL_ID}. +The parameters for a \ct{PROF} line are listed in Table~\ref{tbl:PROF}. For a wall cell, the parameters are similar to those used to specify a surface quantity in the \ct{DEVC} group. \ct{XYZ} designates the triplet of coordinates, \ct{IOR} the orientation, and \ct{ID} an identifying character string. Here is an example of how you would use this feature to get a time history of temperature profiles within a wall cell: +\begin{lstlisting} + &PROF ID='T-1', XYZ=..., QUANTITY='INSIDE WALL TEMPERATURE', IOR=3 / +\end{lstlisting} +For a particle, there are two options. The first is to use \ct{INIT_ID} to reference the \ct{INIT} line used to place the particle within the domain: +\begin{lstlisting} + &INIT ID='my particle', XYZ=..., N_PARTICLES=1, PART_ID='...' / + &PROF ID='T-2', INIT_ID='my particle', + QUANTITY='INSIDE WALL TEMPERATURE' / +\end{lstlisting} +The second option is to use \ct{LP_TAG} to specify the particle using its unique identifying tag\footnote{Each droplet or particle has a unique integer identifier. To find it, open the case in Smokeview, load the particles, right click, ``Files/Data/Coloring,'' ``Particles,'' ``Settings,'' and click the box labeled ``Show selected particle tag.'' Then click on the desired particle.}. Once you have determined the tag, add the following line to the input file: +\begin{lstlisting} + &PROF LP_TAG=..., PART_ID='...', QUANTITY='INSIDE WALL TEMPERATURE' / +\end{lstlisting} +Note that you must specify the \ct{PART_ID} so that the appropriate inner noding structure can be determined. With either option for designating a particle, do not specify \ct{XYZ} or \ct{IOR} on the \ct{PROF} line. - \section{Animated Planar Slices: The \texorpdfstring{{\tt SLCF}}{SLCF} Namelist Group} - \label{info:SLCF} +The \ct{QUANTITY} is the physical quantity to record. Each \ct{PROF} line creates a separate file. The first number in each row is the time at which the profile is extracted. The second number is the number of ``nodes,'' $n$, which is the number of solid phase cells plus 1. The next $n$ values are the node coordinates, running from 0 at the surface to the full \ct{THICKNESS} at the end. The next $n$ numbers are the values of the \ct{QUANTITY} at the node points. The first of these values is located at the surface. If you specify \linebreak[4]\ct{CELL_CENTERED=T}, the \ct{QUANTITY} values will be recorded at $n$ interior cell centers rather than cell boundaries. The \ct{ID} is an optional input which, if provided, is used in the file header. - The \ct{SLCF} (``slice file'') namelist group parameters (Table~\ref{tbl:SLCF}) allows you to record various gas phase quantities at more than a single point. A ``slice'' refers to a subset of the whole domain. It can be a line, plane, or volume, depending on the values of \ct{XB}. The sextuplet \ct{XB} indicates the boundaries of the ``slice'' plane. \ct{XB} is prescribed as in the \ct{OBST} or \ct{VENT} groups, with the possibility that 0, 2, or 4 out of the 6 values be the same to indicate a volume, plane or line, respectively. A handy trick is to specify, for example, \ct{PBY=5.3} instead of \ct{XB} if it is desired that the entire plane $y=5.3$ slicing through the domain be saved. \ct{PBX} and \ct{PBZ} control planes perpendicular to the $x$ and $z$ axes, respectively. An alternative way to specify a slice plane through the middle of the domain is using \ct{DB} with values of \ct{'XMID'}, \ct{'YMID'}, or \ct{'ZMID'}. You can limit a planar slice to a specific mesh with \ct{MESH_NUMBER} +There is a second optional format. If you specify \ct{FORMAT_INDEX=2} on the \ct{PROF} line, the resulting file will contain columns containing only the final set of node coordinates and quantity values. This is handy for displaying a steady-state temperature profile. - By default, 1-D and 2-D slice files are saved \ct{NFRAMES} times per simulation. You can control the frequency of output with \ct{DT_SLCF} on the \ct{DUMP} line. If the ``slice'' is a 3-D volume, then its output frequency is controlled by the parameter \ct{DT_SL3D}. You may specify a value of \ct{DT_SL3D} on \ct{DUMP} or provide a series of discrete times. Note that 3-D slice files can become extremely large if \ct{DT_SL3D} is small. - Animated vectors can be created in Smokeview if a given \ct{SLCF} line has the attribute \ct{VECTOR=T} If two \ct{SLCF} entries are in the same plane, then only one of the lines needs to have \ct{VECTOR=T} Otherwise, a redundant set of velocity component slices will be created. +\section{Animated Planar Slices: The \texorpdfstring{{\tt SLCF}}{SLCF} Namelist Group} +\label{info:SLCF} - Normally, FDS averages slice file data at cell corners. For example, gas temperatures are computed at cell centers, but they are linearly interpolated to cell corners and output to a file that is read by Smokeview. To prevent this from happening, set \ct{CELL_CENTERED=T} This forces FDS to output the actual cell-centered data with no averaging. Note that this feature is mainly useful for diagnostics because it enables you to visualize the values that FDS actually computes. If \ct{CELL_CENTERED=T} is combined with \ct{VECTOR=T} then the staggered velocity components will be displayed. For example, - \begin{lstlisting} - &SLCF PBY=0, QUANTITY='VELOCITY', VECTOR=T, CELL_CENTERED=T / - \end{lstlisting} - will show the staggered velocity components as cell face normal vectors in Smokeview. +The \ct{SLCF} (``slice file'') namelist group parameters (Table~\ref{tbl:SLCF}) allows you to record various gas phase quantities at more than a single point. A ``slice'' refers to a subset of the whole domain. It can be a line, plane, or volume, depending on the values of \ct{XB}. The sextuplet \ct{XB} indicates the boundaries of the ``slice'' plane. \ct{XB} is prescribed as in the \ct{OBST} or \ct{VENT} groups, with the possibility that 0, 2, or 4 out of the 6 values be the same to indicate a volume, plane or line, respectively. A handy trick is to specify, for example, \ct{PBY=5.3} instead of \ct{XB} if it is desired that the entire plane $y=5.3$ slicing through the domain be saved. \ct{PBX} and \ct{PBZ} control planes perpendicular to the $x$ and $z$ axes, respectively. An alternative way to specify a slice plane through the middle of the domain is using \ct{DB} with values of \ct{'XMID'}, \ct{'YMID'}, or \ct{'ZMID'}. You can limit a planar slice to a specific mesh with \ct{MESH_NUMBER} - Slice file information is recorded in files (See Sec.~\ref{out:SLCF}) labeled \ct{CHID_n.sf}, where \ct{n} is the index of the slice file. A short Fortran program \ct{fds2ascii.f90} produces a text file from a line, plane or volume of data. See Sec.~\ref{info:fds2ascii} for more details. +By default, 1-D and 2-D slice files are saved \ct{NFRAMES} times per simulation. You can control the frequency of output with \ct{DT_SLCF} on the \ct{DUMP} line. If the ``slice'' is a 3-D volume, then its output frequency is controlled by the parameter \ct{DT_SL3D}. You may specify a value of \ct{DT_SL3D} on \ct{DUMP} or provide a series of discrete times. Note that 3-D slice files can become extremely large if \ct{DT_SL3D} is small. - By default, Smokeview will blank slice file data inside obstructions. However, this is expensive to load at startup in Smokeview for large cases. If you wish Smokeview not to store this blanking array, set \ct{IBLANK_SMV=F} on \ct{MISC}. Another option is to run Smokeview from the command line and to add \ct{-noblank} as an option. +Animated vectors can be created in Smokeview if a given \ct{SLCF} line has the attribute \ct{VECTOR=T} If two \ct{SLCF} entries are in the same plane, then only one of the lines needs to have \ct{VECTOR=T} Otherwise, a redundant set of velocity component slices will be created. - You may add a name via \ct{ID} on the \ct{SLCF} as an identifier sent to Smokeview. It is only optional. +Normally, FDS averages slice file data at cell corners. For example, gas temperatures are computed at cell centers, but they are linearly interpolated to cell corners and output to a file that is read by Smokeview. To prevent this from happening, set \ct{CELL_CENTERED=T} This forces FDS to output the actual cell-centered data with no averaging. Note that this feature is mainly useful for diagnostics because it enables you to visualize the values that FDS actually computes. If \ct{CELL_CENTERED=T} is combined with \ct{VECTOR=T} then the staggered velocity components will be displayed. For example, +\begin{lstlisting} + &SLCF PBY=0, QUANTITY='VELOCITY', VECTOR=T, CELL_CENTERED=T / +\end{lstlisting} +will show the staggered velocity components as cell face normal vectors in Smokeview. - For +Slice file information is recorded in files (See Sec.~\ref{out:SLCF}) labeled \ct{CHID_m_n.sf}, where \ct{m} is the mesh number and \ct{n} is the index of the slice file. A short Fortran program \ct{fds2ascii.f90} produces a text file from a line, plane or volume of data. See Sec.~\ref{info:fds2ascii} for more details. - \newpage +By default, Smokeview will blank slice file data inside obstructions. However, this is expensive to load at startup in Smokeview for large cases. If you wish Smokeview not to store this blanking array, set \linebreak[4]\ct{IBLANK_SMV=F} on \ct{MISC}. Another option is to run Smokeview from the command line and to add \ct{-noblank} as an option. - \section{Animated Boundary Quantities: The \texorpdfstring{{\tt BNDF}}{BNDF} Namelist Group} - \label{info:BNDF} +You may add a name via \ct{ID} on the \ct{SLCF} as an identifier sent to Smokeview. It is only optional. - The \ct{BNDF} (``boundary file'') namelist group parameters allows you to record surface quantities at all solid obstructions and solid wall cells on the exterior boundary of the domain. As with the \ct{SLCF} group, each quantity is prescribed with a separate \ct{BNDF} line. The output files are of the form \ct{CHID_n.bf}. A \ct{BNDF} input does not have physical coordinates, it just has a \ct{QUANTITY}, see Table \ref{tab:solidoutputquantities}. For certain output quantities, additional parameters need to be specified via the \ct{PROP} namelist group. In such cases, add the character string, \ct{PROP_ID}, to the \ct{BNDF} line to tell FDS where to find the necessary extra information. +\section{Animated Boundary Quantities: The \texorpdfstring{{\tt BNDF}}{BNDF} Namelist Group} +\label{info:BNDF} - \ct{BNDF} files (Sec.~\ref{out:BNDF}) can become very large, so be careful in prescribing the time interval, \ct{DT_BNDF}, or discrete times, \ct{RAMP_BNDF}, on the \ct{DUMP} line. One way to reduce the size of the output file is limit which obstructions output data. If \ct{BNDF_OBST=F} is added to an \ct{OBST} line, no data is output for the obstruction. To turn off all boundary drawing, set \ct{BNDF_DEFAULT=F} on the \ct{MISC} line. Then individual obstructions can be turned back on with \ct{BNDF_OBST=T} on the appropriate \ct{OBST} line. Individual faces of a given obstruction can be controlled via \ct{BNDF_FACE(IOR)}, where \ct{IOR} is the index of orientation (+1 for the positive $x$ direction, -1 for negative, and so on). Another way is to disable \ct{BNDF} output for specific meshes by setting \ct{BNDF_MESH=F} on the \ct{MESH} lines where no \ct{BNDF} output is desired. Disabling output for a \ct{MESH} includes all wall cells at the exterior boundary of that \ct{MESH}. +The \ct{BNDF} (``boundary file'') namelist group parameters allows you to record surface quantities at all solid obstructions and solid wall cells on the exterior boundary of the domain. As with the \ct{SLCF} group, each quantity is prescribed with a separate \ct{BNDF} line. The output files are of the form \ct{CHID_n.bf}. A \ct{BNDF} input does not have physical coordinates, it just has a \ct{QUANTITY}, see Table \ref{tab:solidoutputquantities} quantities with ``B'' for the file type. For certain output quantities, additional parameters need to be specified via the \ct{PROP} namelist group. In such cases, add the character string, \ct{PROP_ID}, to the \ct{BNDF} line to tell FDS where to find the necessary extra information. - Normally, FDS averages boundary file data at cell corners. For example, surface temperatures are computed at the center of each surface cell, but they are linearly interpolated to cell corners and output to a file that is read by Smokeview. To prevent this from happening, set \ct{CELL_CENTERED=T} on the \ct{BNDF} line. This forces FDS to output the actual cell-centered data with no averaging. Note that this feature is mainly useful for diagnostics. +\ct{BNDF} files (Sec.~\ref{out:BNDF}) can become very large, so be careful in prescribing the time interval, \ct{DT_BNDF}, or discrete times, \ct{RAMP_BNDF}, on the \ct{DUMP} line. One way to reduce the size of the output file is limit which obstructions output data. If \ct{BNDF_OBST=F} is added to an \ct{OBST} line, no data is output for the obstruction. To turn off all boundary drawing, set \ct{BNDF_DEFAULT=F} on the \ct{MISC} line. Then individual obstructions can be turned back on with \ct{BNDF_OBST=T} on the appropriate \ct{OBST} line. Individual faces of a given obstruction can be controlled via \ct{BNDF_FACE(IOR)}, where \ct{IOR} is the index of orientation (+1 for the positive $x$ direction, -1 for negative, and so on). Another way is to disable \ct{BNDF} output for specific meshes by setting \linebreak[4]\ct{BNDF_MESH=F} on the \ct{MESH} lines where no \ct{BNDF} output is desired. Disabling output for a \ct{MESH} includes all wall cells at the exterior boundary of that \ct{MESH}. - Applying boundary files to complex geometries can be controlled with the \ct{BNDF_GEOM} logical on the \ct{GEOM} line. Note that \ct{BNDF} output for \ct{GEOM} uses face centered values only (node centered is not available; the user need not set \ct{CELL_CENTERED=T}). +Normally, FDS averages boundary file data at cell corners. For example, surface temperatures are computed at the center of each surface cell, but they are linearly interpolated to cell corners and output to a file that is read by Smokeview. To prevent this from happening, set \ct{CELL_CENTERED=T} on the \ct{BNDF} line. This forces FDS to output the actual cell-centered data with no averaging. Note that this feature is mainly useful for diagnostics. - Sometimes it is useful to render the \ct{QUANTITY} integrated over time. For example, a heat flux in units of \unit{kW/m^2} can be integrated in time producing the total energy absorbed by the surface in units of \unit{kJ/m^2}. To do this, set \ct{TEMPORAL_STATISTIC} equal to \ct{'TIME INTEGRAL'} on the \ct{BNDF} line. Note that there are no other options for \ct{TEMPORAL_STATISTIC} on a \ct{BNDF} line. +Applying boundary files to complex geometries can be controlled with the \ct{BNDF_GEOM} logical on the \ct{GEOM} line. Note that \ct{BNDF} output for \ct{GEOM} uses face centered values only (node centered is not available; the user need not set \ct{CELL_CENTERED=T}). +Sometimes it is useful to render the \ct{QUANTITY} integrated over time. For example, a heat flux in units of \unit{kW/m^2} can be integrated in time producing the total energy absorbed by the surface in units of \unit{kJ/m^2}. To do this, set \ct{TEMPORAL_STATISTIC} equal to \ct{'TIME INTEGRAL'} on the \ct{BNDF} line. Note that there are no other options for \ct{TEMPORAL_STATISTIC} on a \ct{BNDF} line. - \newpage - \section{Animated Isosurfaces: The \texorpdfstring{{\tt ISOF}}{ISOF} Namelist Group} - \label{info:ISOF} +\section{Animated Isosurfaces: The \texorpdfstring{{\tt ISOF}}{ISOF} Namelist Group} +\label{info:ISOF} - The \ct{ISOF} (``ISOsurface File'') namelist group creates three-dimensional animated contours of gas phase scalar quantities. Any output \ct{QUANTITY} listed in Table~\ref{tab:gasoutputquantities} with a filre type of `I'. For example, a 300~\unit{\degreeCelsius} temperature isosurface is a 3-D surface on which the gas temperature is 300~\unit{\degreeCelsius}. Up to ten different values of a \ct{QUANTITY} can be saved. For example, three different values of the temperature can be saved via the line: - \begin{lstlisting} - &ISOF QUANTITY='TEMPERATURE', VALUE(1)=50., VALUE(2)=200., VALUE(3)=500. / - \end{lstlisting} - where the values are in \unit{\degreeCelsius}. Note that the isosurface output files \ct{CHID_n.iso} can become very large, so experiment with different sampling rates, (\ct{DT_ISOF}, or discrete times, \ct{RAMP_ISOF}, either of which is specified on the \ct{DUMP} line). - The parameter \ct{QUANTITY2}\ can be used to color the isosurface. - For example, the line: - \begin{lstlisting} - &ISOF QUANTITY='MIXTURE FRACTION' , VALUE(1)=0.05, QUANTITY2='TEMPERATURE' / - \end{lstlisting} - draws a surface where the mixture fraction has a value of 0.05~kg/kg and colors the surface this using temperature. The parameter \ct{SKIP=n}\ (default: 1) can also be used to reduce data by skipping \ct{n-1}\ values in each direction. The parameter \ct{DELTA=val}\ can also be used to reduce data by forcing each triangle to have all sides larger than \ct{val}. +The \ct{ISOF} (``ISOsurface File'') namelist group creates three-dimensional animated contours of gas phase scalar quantities. Any output \ct{QUANTITY} listed in Table~\ref{tab:gasoutputquantities} with a filre type of `I'. For example, a 300~\unit{\degreeCelsius} temperature isosurface is a 3-D surface on which the gas temperature is 300~\unit{\degreeCelsius}. Up to ten different values of a \ct{QUANTITY} can be saved. For example, three different values of the temperature can be saved via the line: +\begin{lstlisting} + &ISOF QUANTITY='TEMPERATURE', VALUE(1)=50., VALUE(2)=200., VALUE(3)=500. / +\end{lstlisting} +where the values are in \unit{\degreeCelsius}. Note that the isosurface output files \ct{CHID_n.iso} can become very large, so experiment with different sampling rates, (\ct{DT_ISOF}, or discrete times, \ct{RAMP_ISOF}, either of which is specified on the \ct{DUMP} line). +The parameter \ct{QUANTITY2}\ can be used to color the isosurface. +For example, the line: +\begin{lstlisting} + &ISOF QUANTITY='MIXTURE FRACTION' , VALUE(1)=0.05, QUANTITY2='TEMPERATURE' / +\end{lstlisting} +draws a surface where the mixture fraction has a value of 0.05~kg/kg and colors the surface this using temperature. The parameter \ct{SKIP=n}\ (default: 1) can also be used to reduce data by skipping \ct{n-1}\ values in each direction. The parameter \ct{DELTA=val}\ can also be used to reduce data by forcing each triangle to have all sides larger than \ct{val}. - Any gas phase quantity can be animated via iso-surfaces, but use caution. To render an iso-surface, the desired quantity must be computed in every mesh cell at every output time step. For quantities like \ct{'TEMPERATURE'}, this is not a problem, as FDS computes it and saves it anyway. However, species volume fractions demand substantial amounts of time to compute at each mesh cell. Remember to include the \ct{SPEC_ID} corresponding to the given \ct{QUANTITY} if necessary (\ct{SPEC_ID} for \ct{QUANTITY2}). +Any gas phase quantity can be animated via iso-surfaces, but use caution. To render an iso-surface, the desired quantity must be computed in every mesh cell at every output time step. For quantities like \ct{'TEMPERATURE'}, this is not a problem, as FDS computes it and saves it anyway. However, species volume fractions demand substantial amounts of time to compute at each mesh cell. Remember to include the \ct{SPEC_ID} corresponding to the given \ct{QUANTITY} if necessary (\ct{SPEC_ID} for \ct{QUANTITY2}). - When outputting \ct{VELOCITY}, \ct{VELO_INDEX}, see Sec.~\ref{info:velocity}, can be used to control the sign of the velocity (\ct{VELO_INDEX2} for \ct{QUANTITY2}). +When outputting \ct{VELOCITY}, \ct{VELO_INDEX}, see Sec.~\ref{info:velocity}, can be used to control the sign of the velocity (\ct{VELO_INDEX2} for \ct{QUANTITY2}). - \newpage - \section{Plot3D Static Data Dumps} - \label{info:PL3D} +\section{Plot3D Static Data Dumps} +\label{info:PL3D} - Data stored in Plot3D~\cite{PLOT3D} files use a format developed by NASA that is used by many CFD programs for representing simulation results. See Sec.~\ref{out:PL3D} for a description of the file structure. Plot3D data is visualized in three ways: as 2-D contours, vector plots and iso-surfaces. Vector plots may be viewed if one or more of the $u$, $v$ and $w$ velocity components are stored in the Plot3D file. The vector length and direction show the direction and relative speed of the fluid flow. The vector colors show a scalar fluid quantity such as temperature. Five quantities are written out to a file at one instant in time. The default specification is: - \begin{lstlisting} - &DUMP ..., PLOT3D_QUANTITY(1:5)='TEMPERATURE', - 'U-VELOCITY','V-VELOCITY','W-VELOCITY','HRRPUV' / - \end{lstlisting} - It's best to leave the velocity components as is, because Smokeview uses them to draw velocity vectors. If any of the specified quantities require the additional specification of a particular species, use \ct{PLOT3D_SPEC_ID(n)} to provide the \ct{SPEC_ID} for \ct{PLOT3D_QUANTITY(n)}. +Data stored in Plot3D~\cite{PLOT3D} files use a format developed by NASA that is used by many CFD programs for representing simulation results. See Sec.~\ref{out:PL3D} for a description of the file structure. Plot3D data is visualized in three ways: as 2-D contours, vector plots and iso-surfaces. Vector plots may be viewed if one or more of the $u$, $v$ and $w$ velocity components are stored in the Plot3D file. The vector length and direction show the direction and relative speed of the fluid flow. The vector colors show a scalar fluid quantity such as temperature. Five quantities are written out to a file at one instant in time for the entire domain (one outtput file per mesh). The default specification is: +\begin{lstlisting} + &DUMP ..., PLOT3D_QUANTITY(1:5)='TEMPERATURE', + 'U-VELOCITY','V-VELOCITY','W-VELOCITY','HRRPUV' / +\end{lstlisting} +It's best to leave the velocity components as is, because Smokeview uses them to draw velocity vectors. If any of the specified quantities require the additional specification of a particular species, use \linebreak[4]\ct{PLOT3D_SPEC_ID(n)} to provide the \ct{SPEC_ID} for \ct{PLOT3D_QUANTITY(n)}. - Plot3D data are stored in files with extension \ct{.q} . There is an optional file that can be output with coordinate information if another visualization package is being used to render the files. If you write \ct{WRITE_XYZ=T} on the \ct{DUMP} line, a file with suffix \ct{.xyz} is written out. Smokeview does not require this file because the coordinate information can be obtained elsewhere. +Plot3D data are stored in files with extension \ct{.q} . There is an optional file that can be output with coordinate information if another visualization package is being used to render the files. If you write \linebreak[4]\ct{WRITE_XYZ=T} on the \ct{DUMP} line, a file with suffix \ct{.xyz} is written out. Smokeview does not require this file because the coordinate information can be obtained elsewhere. - Past versions of FDS (1-5) output Plot3D files by default. Now, you must specify the time interval between dumps using \ct{DT_PL3D} on the \ct{DUMP} line. +Past versions of FDS (1-5) output Plot3D files by default. Now, you must specify the time interval between dumps using \ct{DT_PL3D} on the \ct{DUMP} line. - \section{Stereolithography (STL) Geometry Dump} - \label{info:stl} +\section{Stereolithography (STL) Geometry Dump} +\label{info:stl} - Stereolithography (STL) is a commonly used file format in computer-aided design (CAD) programs. STL files represent the surface geometry of objects using a set of triangles. FDS will generate an STL representation of input obstructions for visualization in other software packages if {\ct WRITE\_STL=T} is included on the {\ct DUMP} line. +Stereolithography (STL) is a commonly used file format in computer-aided design (CAD) programs. STL files represent the surface geometry of objects using a set of triangles. FDS will generate an STL representation of input obstructions for visualization in other software packages if {\ct WRITE\_STL=T} is included on the {\ct DUMP} line. - \section{SMOKE3D: Realistic Smoke and Fire} - \label{info:SMOKE3D} - For any simulation involving combustion, FDS automatically creates three output files that are rendered by Smokeview as realistic looking smoke, fire, and/or hot gas. By default, the output quantities are the \ct{'DENSITY'} of \ct{'SOOT'}, the \ct{'HRRPUV'} (Heat Release Rate Per Unit Volume), and the \ct{TEMPERATURE} of the gases. These quantities are rendered as semi-transparent slices that give you the illusion of looking through smoke or fire. The greater the value of the quantity, the darker the slices will appear en masse. For \ct{HRRPUV}, the lowest value rendered is: - \be - \dot{q}_{\min}'' = \min( 200,20/\dx ) \quad \unit{kW/m^3} - \ee - where $\dx$ is the grid cell size. +\section{SMOKE3D: Realistic Smoke and Fire} +\label{info:SMOKE3D} - You have the option of rendering the \ct{DENSITY} of any other species besides \ct{'SOOT'}, so long as the \ct{MASS_EXTINCTION_COEFFICIENT} on the \ct{SPEC} line is appropriate in describing the attenuation of visible light by the specified gas species. Here is an example of how to change the smoke species. Normally, you do not need to do this as the ``smoke'' is an assumed part of the default combustion model when a non-zero \ct{SOOT_YIELD} is defined on the \ct{REAC} line. - \begin{lstlisting} - &SPEC ID='MY SMOKE', MW=29., MASS_EXTINCTION_COEFFICIENT=8700. / - &SM3D QUANTITY='DENSITY', SPEC_ID='MY SMOKE' / - \end{lstlisting} - The \ct{MASS_EXTINCTION_COEFFICIENT} is passed to Smokeview to be used for visualization. +For any simulation involving combustion, FDS automatically creates three output files that are rendered by Smokeview as realistic looking smoke, fire, and/or hot gas. By default, the output quantities are the \ct{'DENSITY'} of \ct{'SOOT'}, the \ct{'HRRPUV'} (Heat Release Rate Per Unit Volume), and the \ct{TEMPERATURE} of the gases. These quantities are rendered as semi-transparent slices that give you the illusion of looking through smoke or fire. The greater the value of the quantity, the darker the slices will appear en masse. For \ct{HRRPUV}, the lowest value rendered is: +\be +\dot{q}_{\min}'' = \min( 200,20/\dx ) \quad \unit{kW/m^3} +\ee +where $\dx$ is the grid cell size. - FDS outputs 3D smoke quantities as 8 bit integers compressed using run length encoding. Soot density, HRRPUV or temperatures are first scaled to 8 bit integers (soot density is converted to an opacity first). Repeated integers are replaced by $n$I where $n$ is the number of repeats and I is the value repeated. +You have the option of rendering the \ct{DENSITY} of any other species besides \ct{'SOOT'}, so long as the \ct{MASS_EXTINCTION_COEFFICIENT} on the \ct{SPEC} line is appropriate in describing the attenuation of visible light by the specified gas species. Here is an example of how to change the smoke species. Normally, you do not need to do this as the ``smoke'' is an assumed part of the default combustion model when a non-zero \ct{SOOT_YIELD} is defined on the \ct{REAC} line. +\begin{lstlisting} + &SPEC ID='MY SMOKE', MW=29., MASS_EXTINCTION_COEFFICIENT=8700. / + &SM3D QUANTITY='DENSITY', SPEC_ID='MY SMOKE' / +\end{lstlisting} +The \ct{MASS_EXTINCTION_COEFFICIENT} is passed to Smokeview to be used for visualization. - You can change the scale of \ct{HRRPUV} via the parameter \ct{HRRPUV_MAX_SMV} (default 1200~\unit{kW/m^3}) on the \ct{DUMP} line. You can change the \ct{TEMPERATURE} bounds via \ct{TEMP_MIN_SMV} and \ct{TEMP_MAX_SMV} (default 20~\unit{\degreeCelsius} and 2000~\unit{\degreeCelsius}). +FDS outputs 3D smoke quantities as 8 bit integers compressed using run length encoding. Soot density, HRRPUV or temperatures are first scaled to 8 bit integers (soot density is converted to an opacity first). Repeated integers are replaced by $n$I where $n$ is the number of repeats and I is the value repeated. - \section{Particle Output Quantities} - \label{info:part_output} +You can change the scale of \ct{HRRPUV} via the parameter \ct{HRRPUV_MAX_SMV} (default 1200~\unit{kW/m^3}) on the \ct{DUMP} line. You can change the \ct{TEMPERATURE} bounds via \ct{TEMP_MIN_SMV} and \ct{TEMP_MAX_SMV} (default 20~\unit{\degreeCelsius} and 2000~\unit{\degreeCelsius}). - This section discusses output options for Lagrangian particles. +\section{Particle Output Quantities} +\label{info:part_output} - \subsection{Liquid Droplets that are Attached to Solid Surfaces} - \label{bucket_test_1} +This section discusses output options for Lagrangian particles. - Liquid droplets (as opposed to solid particles) ``stick'' to solid surfaces unless directed otherwise. There are various quantities that describe these populations. For example, \ct{'MPUA'} is the \underline{M}ass \underline{P}er \underline{U}nit \underline{A}rea of the droplets\footnote{The output quantity \ct{'MPUA'} can be used for both liquid and solid particles. However, \ct{'AMPUA'} is appropriate only for liquid droplets.} defined by \ct{PART_ID}. Likewise, \ct{'AMPUA'} is the \underline{A}ccumulated \underline{M}ass \underline{P}er \underline{U}nit \underline{A}rea. Both of these are given in units of \unit{kg/m^2}. Think of these outputs as measures of the instantaneous mass density per unit area, and the accumulated total, respectively. These quantities are not identical measures. The quantity \ct{'AMPUA'} is analogous to a ``bucket test,'' where the droplets are collected in buckets and the total mass determined at the end of a given time period. In this case each grid cell on the floor is considered its own bucket. Each droplet is counted only once when it reaches the floor\footnote{Be aware of the fact that the default behavior for liquid droplets hitting the ``floor,'' that is, the plane $z=\hbox{\ct{ZMIN}}$, is to disappear (\ct{POROUS_FLOOR=T} on the \ct{MISC} line). In this case, \ct{'MPUA'} will be zero, but \ct{'AMPUA'} will not. FDS stores the droplet mass just before removing the droplet from the simulation for the purpose of saving CPU time.}. \ct{MPUA} counts a droplet whenever it is on any solid surface, including the walls. If the droplet moves from one solid wall cell to another, it will be counted again. The cooling of a solid surface by droplets of a given type is given by \ct{'CPUA'}, the \underline{C}ooling \underline{P}er \underline{U}nit \underline{A}rea in units of \unit{kW/m^2}. Since a typical sprinkler simulation only tracks a small fraction of the droplets emitted from a sprinkler, both \ct{MPUA} and \ct{CPUA} also perform an exponential smoothing. This avoids having spotted distributions on surfaces due to the infrequent arrival of droplets that likely have a high weighting factor. +\subsection{Liquid Droplets that are Attached to Solid Surfaces} +\label{bucket_test_1} - Each of the output quantities mentioned above has a variant in which the quantity is summed by species rather than particle type. For example, the quantity \ct{'AMPUA_Z'} along with a specified \ct{SPEC_ID} rather than a \ct{PART_ID} will sum the given output quantity over all particle classes with the given \ct{SPEC_ID}. +Liquid droplets (as opposed to solid particles) ``stick'' to solid surfaces unless directed otherwise. There are various quantities that describe these populations. For example, \ct{'MPUA'} is the \underline{M}ass \underline{P}er \underline{U}nit \underline{A}rea of the droplets\footnote{The output quantity \ct{'MPUA'} can be used for both liquid and solid particles. However, \ct{'AMPUA'} is appropriate only for liquid droplets.} defined by \ct{PART_ID}. Likewise, \ct{'AMPUA'} is the \underline{A}ccumulated \underline{M}ass \underline{P}er \underline{U}nit \underline{A}rea. Both of these are given in units of \unit{kg/m^2}. Think of these outputs as measures of the instantaneous mass density per unit area, and the accumulated total, respectively. These quantities are not identical measures. The quantity \ct{'AMPUA'} is analogous to a ``bucket test,'' where the droplets are collected in buckets and the total mass determined at the end of a given time period. In this case each grid cell on the floor is considered its own bucket. Each droplet is counted only once when it reaches the floor\footnote{Be aware of the fact that the default behavior for liquid droplets hitting the ``floor,'' that is, the plane $z=\hbox{\ct{ZMIN}}$, is to disappear (\ct{POROUS_FLOOR=T} on the \ct{MISC} line). In this case, \ct{'MPUA'} will be zero, but \ct{'AMPUA'} will not. FDS stores the droplet mass just before removing the droplet from the simulation for the purpose of saving CPU time.}. \ct{MPUA} counts a droplet whenever it is on any solid surface, including the walls. If the droplet moves from one solid wall cell to another, it will be counted again. The cooling of a solid surface by droplets of a given type is given by \ct{'CPUA'}, the \underline{C}ooling \underline{P}er \underline{U}nit \underline{A}rea in units of \unit{kW/m^2}. Since a typical sprinkler simulation only tracks a small fraction of the droplets emitted from a sprinkler, both \ct{MPUA} and \ct{CPUA} also perform an exponential smoothing. This avoids having spotted distributions on surfaces due to the infrequent arrival of droplets that likely have a high weighting factor. - As an example of how to use these kinds of output quantities, the test case \ct{bucket_test_1} describes a single sprinkler mounted 10~cm below a 5~m ceiling. Water flows for 30~s at a constant rate of 180~L/min (ramped up and down in 1~s). The simulation continues for another 10~s to allow water drops time to reach the floor. The total mass of water discharged is - \be - \mathrm{ 180 \; \frac{L}{min} \times 1 \; \frac{kg}{L} \times \frac{1}{60} \; \frac{min}{s} \times 30 \; s = 90 \; kg } - \ee - In the simulation, the quantity \ct{'AMPUA'} with \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} is specified on the \ct{DEVC} line. This results in FDS summing \ct{'AMPUA'} over each grid cell in the volume defined by \ct{XB}, in this case the entire floor, analogous to if there were an single bucket present that was the same size as the area specified with \ct{XB}. Summing the values of \ct{'AMPUA'} over the entire floor yields a total of 90~kg (Fig.~\ref{bucket_test_fig}). Note that there really is no need to time-average the results. The quantity is inherently accumulating. +Each of the output quantities mentioned above has a variant ending in \ct{_Z} in which the quantity is summed by species rather than particle type. For example, the quantity \ct{'AMPUA_Z'} along with a specified \ct{SPEC_ID} rather than a \ct{PART_ID} will sum the given output quantity over all particle classes with the given \ct{SPEC_ID}. - \begin{figure}[ht] - \centering - \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_1} - \caption[Results of the \ct{bucket_test_1} case]{Accumulated water collected at the floor in the \ct{bucket_test_1} case.} - \label{bucket_test_fig} - \end{figure} +As an example of how to use these kinds of output quantities, the test case \ct{bucket_test_1} describes a single sprinkler mounted 10~cm below a 5~m ceiling. Water flows for 30~s at a constant rate of 180~L/min (ramped up and down in 1~s). The simulation continues for another 10~s to allow water drops time to reach the floor. The total mass of water discharged is +\be +\mathrm{ 180 \; \frac{L}{min} \times 1 \; \frac{kg}{L} \times \frac{1}{60} \; \frac{min}{s} \times 30 \; s = 90 \; kg } +\ee +In the simulation, the quantity \ct{'AMPUA'} with \ct{SPATIAL_STATISTIC='SURFACE INTEGRAL'} is specified on the \ct{DEVC} line. This results in FDS summing \ct{'AMPUA'} over each grid cell in the volume defined by \ct{XB}, in this case the entire floor, analogous to if there were an single bucket present that was the same size as the area specified with \ct{XB}. Summing the values of \ct{'AMPUA'} over the entire floor yields a total of 90~kg (Fig.~\ref{bucket_test_fig}). Note that there really is no need to time-average the results. The quantity is inherently accumulating. +\begin{figure}[ht] + \centering + \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_1} + \caption[Results of the \ct{bucket_test_1} case]{Accumulated water collected at the floor in the \ct{bucket_test_1} case.} + \label{bucket_test_fig} +\end{figure} - \subsection{Solid Particles on Solid Surfaces} - If you want to monitor the accumulation of solid particles that have fallen on a solid surface, use a device as follows: - \begin{lstlisting} - &DEVC ID=..., XB=..., QUANTITY='MPUV', PART_ID='rods', SPATIAL_STATISTIC='VOLUME INTEGRAL' / - \end{lstlisting} - The volume over which to integrate, \ct{XB}, should be at least one grid cell thick above the surface. +\subsection{Solid Particles on Solid Surfaces} +If you want to monitor the accumulation of solid particles that have fallen on a solid surface, use a device as follows: +\begin{lstlisting} + &DEVC ID=..., XB=..., QUANTITY='MPUV', PART_ID='rods', SPATIAL_STATISTIC='VOLUME INTEGRAL' / +\end{lstlisting} +The volume over which to integrate, \ct{XB}, should be at least one grid cell thick above the surface. - \subsection{Droplet and Particle Densities and Fluxes in the Gas Phase} - \label{bucket_test_4} - Away from solid surfaces, \ct{'MPUV'} is the \underline{M}ass \underline{P}er \underline{U}nit \underline{V}olume of particles or droplets of type (\ct{PART_ID}) in units of \unit{kg/m^3}. The average volume fraction of droplets in the cell is \ct{'DROPLET VOLUME FRACTION'}, which is equal to the \ct{MPUV} divided by the liquid density of the droplets. \ct{'MPUV_Z'} provides the same information integrated over all droplets of a single species, (\ct{SPEC_ID}). +\subsection{Droplet and Particle Densities and Fluxes in the Gas Phase} +\label{bucket_test_4} - The quantities \ct{'PARTICLE FLUX X'}, \ct{'PARTICLE FLUX Y'}, and \ct{'PARTICLE FLUX Z'} produce slice and Plot3D colored contours of the mass flux of particles in the $x$, $y$, and $z$ directions, respectively, in units of \unit{kg/m^2.s}. You can also apply these quantities to a device. For example, in the case called \ct{bucket_test_4.fds}, the input line - \begin{lstlisting} - &DEVC XB=..., ID='flux', QUANTITY='PARTICLE FLUX Z', SPATIAL_STATISTIC='AREA INTEGRAL' / - \end{lstlisting} - records the integrated mass flux of {\em all} particles passing through the given horizontal plane. Figure~\ref{bucket_test_4_fig} presents the results of this simple test case in which water spraying at a rate of 0.0005~kg/s for 55~s passes through a measurement plane and onto the floor. The total water accumulated is 0.0275~kg. +Away from solid surfaces, \ct{'MPUV'} is the \underline{M}ass \underline{P}er \underline{U}nit \underline{V}olume of particles or droplets of type (\ct{PART_ID}) in units of \unit{kg/m^3}. The average volume fraction of droplets in the cell is \ct{'DROPLET VOLUME FRACTION'}, which is equal to the \ct{MPUV} divided by the liquid density of the droplets. \ct{'MPUV_Z'} provides the same information integrated over all droplets of a single species, (\ct{SPEC_ID}). - \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_4b} - \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_4} - \caption[Results of the \ct{bucket_test_4} case]{Mass flux and accumulated water collected at the floor in the \ct{bucket_test_4} case.} - \label{bucket_test_4_fig} - \end{figure} +The quantities \ct{'PARTICLE FLUX X'}, \ct{'PARTICLE FLUX Y'}, and \ct{'PARTICLE FLUX Z'} produce slice and Plot3D colored contours of the mass flux of particles in the $x$, $y$, and $z$ directions, respectively, in units of \unit{kg/m^2.s}. You can also apply these quantities to a device. For example, in the case called \linebreak[4]\ct{bucket_test_4.fds}, the input line +\begin{lstlisting} + &DEVC XB=..., ID='flux', QUANTITY='PARTICLE FLUX Z', SPATIAL_STATISTIC='AREA INTEGRAL' / +\end{lstlisting} +records the integrated mass flux of {\em all} particles passing through the given horizontal plane. Figure~\ref{bucket_test_4_fig} presents the results of this simple test case in which water spraying at a rate of 0.0005~kg/s for 55~s passes through a measurement plane and onto the floor. The total water accumulated is 0.0275~kg. - The quantity \ct{'PARTICLE RADIATION LOSS'} reports the net energy emitted and absorbed from a given grid cell by all particles within it, in units of \unit{kW/m^3}. A positive value indicates that emission is greater than absorption. +\begin{figure}[ht] + \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_4b} + \includegraphics[width=3in]{SCRIPT_FIGURES/bucket_test_4} + \caption[Results of the \ct{bucket_test_4} case]{Mass flux and accumulated water collected at the floor in the \ct{bucket_test_4} case.} + \label{bucket_test_4_fig} +\end{figure} +The quantity \ct{'PARTICLE RADIATION LOSS'} reports the net energy emitted and absorbed from a given grid cell by all particles within it, in units of \unit{kW/m^3}. A positive value indicates that emission is greater than absorption. - \subsection{Coloring Particles and Droplets in Smokeview} - \label{particle_colors} +\subsection{Coloring Particles and Droplets in Smokeview} +\label{particle_colors} - The parameter \ct{QUANTITIES} on the \ct{PART} line is an array of character strings indicating which scalar quantities should be used to color particles and droplets in Smokeview. The choices are \\ - \\ - \ct{'PARTICLE AGE'} (s) \\ - \ct{'PARTICLE DIAMETER'} (\unit{\micro m}) \\ - \ct{'PARTICLE TEMPERATURE'} (\unit{\degreeCelsius}) \\ - \ct{'PARTICLE MASS'} (kg) \\ - \ct{'PARTICLE PHASE'} \\ - \ct{'PARTICLE VELOCITY'} (m/s) \\ - \ct{'PARTICLE WEIGHTING FACTOR'} \\ - \ct{'PARTICLE U'}, \ct{'PARTICLE V'}, \ct{'PARTICLE W'} (m/s) \\ - \ct{'PARTICLE X'}, \ct{'PARTICLE Y'}, \ct{'PARTICLE Z'} (m) \\ - \ct{'PARTICLE ACCEL X'}, \ct{'PARTICLE ACCEL Y'}, \ct{'PARTICLE ACCEL Z'} (\unit{m/s^2}) \\ - \ct{'PARTICLE DRAG FORCE X'}, \ct{'PARTICLE DRAG FORCE Y'}, \ct{'PARTICLE DRAG FORCE Z'} (N) \\ - \ct{'PARTICLE DRAG COEFFICIENT'} \\ - \ct{'PARTICLE BULK DENSITY'} (\unit{kg/m^3}) \\ - \ct{'PARTICLE HEAT TRANSFER COEFFICIENT'} (\unit{W/m^2/K}) \\ - \ct{'PARTICLE RADIATIVE HEAT FLUX'} (\unit{kW/m^2}) \\ - \ct{'PARTICLE CONVECTIVE HEAT FLUX'} (\unit{kW/m^2}) \\ - \ct{'PARTICLE TOTAL HEAT FLUX'} (\unit{kW/m^2}) \\ - \ct{'PARTICLE POWER'} (kW) \\ - \\ - If no \ct{QUANTITIES} are specified and none are selected in Smokeview, then Smokeview will display particles with a single color determined by the color of the \ct{SURF_ID} assigned to the \ct{PART} class, with the exception of water droplets and liquid fuel droplets, which are colored blue and yellow, respectively. If no color is specified on \ct{SURF} then the default solid particle color will revert to black. You may override the \ct{SURF} color by specifying either \ct{RGB} or \ct{COLOR} on the \ct{PART} line. - The \ct{'PARTICLE TEMPERATURE'} is the surface temperature. For thermally thin particles, like droplets, this temperature represents the whole particle, but for thermally thick particles it is just the surface temperature. For in-depth temperature of thermally thick particles you need to use a profile \ct{PROF}, as discussed in Sec.~\ref{info:PROF}. In practice, you should designate only a small subset of particles (use a separate \ct{PART} line) for monitoring internal temperatures, as the amount of data can become large, and there is no way to visualize this in Smokeview. +The parameter \ct{QUANTITIES} on the \ct{PART} line is an array of character strings indicating which scalar quantities should be used to color particles and droplets in Smokeview. The choices are \\ +\\ +\ct{'PARTICLE AGE'} (s) \\ +\ct{'PARTICLE DIAMETER'} (\unit{\micro m}) \\ +\ct{'PARTICLE TEMPERATURE'} (\unit{\degreeCelsius}) \\ +\ct{'PARTICLE MASS'} (kg) \\ +\ct{'PARTICLE PHASE'} \\ +\ct{'PARTICLE VELOCITY'} (m/s) \\ +\ct{'PARTICLE WEIGHTING FACTOR'} \\ +\ct{'PARTICLE U'}, \ct{'PARTICLE V'}, \ct{'PARTICLE W'} (m/s) \\ +\ct{'PARTICLE X'}, \ct{'PARTICLE Y'}, \ct{'PARTICLE Z'} (m) \\ +\ct{'PARTICLE ACCEL X'}, \ct{'PARTICLE ACCEL Y'}, \ct{'PARTICLE ACCEL Z'} (\unit{m/s^2}) \\ +\ct{'PARTICLE DRAG FORCE X'}, \ct{'PARTICLE DRAG FORCE Y'}, \ct{'PARTICLE DRAG FORCE Z'} (N) \\ +\ct{'PARTICLE DRAG COEFFICIENT'} \\ +\ct{'PARTICLE BULK DENSITY'} (\unit{kg/m^3}) \\ +\ct{'PARTICLE HEAT TRANSFER COEFFICIENT'} (\unit{W/m^2/K}) \\ +\ct{'PARTICLE RADIATIVE HEAT FLUX'} (\unit{kW/m^2}) \\ +\ct{'PARTICLE CONVECTIVE HEAT FLUX'} (\unit{kW/m^2}) \\ +\ct{'PARTICLE TOTAL HEAT FLUX'} (\unit{kW/m^2}) \\ +\ct{'PARTICLE POWER'} (kW) \\ +\\ +If no \ct{QUANTITIES} are specified and none are selected in Smokeview, then Smokeview will display particles with a single color determined by the color of the \ct{SURF_ID} assigned to the \ct{PART} class, with the exception of water droplets and liquid fuel droplets, which are colored blue and yellow, respectively. If no color is specified on \ct{SURF} then the default solid particle color will revert to black. You may override the \ct{SURF} color by specifying either \ct{RGB} or \ct{COLOR} on the \ct{PART} line. - The \ct{PARTICLE WEIGHTING FACTOR} describes how many actual particles each of the computational particles represent. The \ct{PARTICLE BULK DENSITY} gives the weighted (total) mass per grid cell volume, which is an important parameter when using particles to represent porous media such as vegetation. +The \ct{'PARTICLE TEMPERATURE'} is the surface temperature. For thermally thin particles, like droplets, this temperature represents the whole particle, but for thermally thick particles it is just the surface temperature. For in-depth temperature of thermally thick particles you need to use a profile \ct{PROF}, as discussed in Sec.~\ref{info:PROF}. In practice, you should designate only a small subset of particles (use a separate \ct{PART} line) for monitoring internal temperatures, as the amount of data can become large, and there is no way to visualize this in Smokeview. - The \ct{PARTICLE POWER} is the net (radiative plus convective) heat transfer rate for the entire particle. +The \ct{PARTICLE WEIGHTING FACTOR} describes how many actual particles each of the computational particles represent. The \ct{PARTICLE BULK DENSITY} gives the weighted (total) mass per grid cell volume, which is an important parameter when using particles to represent porous media such as vegetation. - For solid particles with a specified \ct{SURF_ID}, you may specify any of the solid phase output quantities listed in Table~\ref{tab:particleoutputquantities}. If the specified quantity is associated with a species, use the parameter \linebreak[4] \ct{QUANTITIES_SPEC_ID(N)} to specify the species. Here \ct{N} refers to the order of the specified output quantities on the \ct{PART} line. +The \ct{PARTICLE POWER} is the net (radiative plus convective) heat transfer rate for the entire particle. +For solid particles with a specified \ct{SURF_ID}, you may specify any of the solid phase output quantities listed in Table~\ref{tab:particleoutputquantities}. If the specified quantity is associated with a species, use the parameter \linebreak[4] \ct{QUANTITIES_SPEC_ID(N)} to specify the species. Here \ct{N} refers to the order of the specified output quantities on the \ct{PART} line. - \subsection{Detailed Properties of Solid Particles} - \label{info:tagging_particles} - You may output properties of a single solid particle using a \ct{DEVC} (device) line. For example, the lines: - \begin{lstlisting} - &INIT ID='my particle', PART_ID='...', XB=..., N_PARTICLES=1 / - &DEVC ID='...', INIT_ID='my particle', QUANTITY='WALL TEMPERATURE' / - \end{lstlisting} - adds a column to the \ct{CHID_devc.csv} file for the surface temperature of a single particle that has been introduced into the simulation via an \ct{INIT} line. +\subsection{Detailed Properties of Solid Particles} +\label{info:tagging_particles} - If the \ct{INIT} line has a \ct{MULT_ID}; that is, an array of particles is introduced via this single \ct{INIT} line, then the \ct{INIT_ID} for each takes the form \ct{'[ID]-00308'}, where \ct{ID} is that of the \ct{INIT} line, and 308 refers to the 308-th \ct{INIT} line generated by the multiplicative sequence. The \ct{INIT} lines are generated by looping over the $x$ indices, then $y$, then $z$. For example, the following input lines - \begin{lstlisting} - &INIT ID='P', PART_ID='CRIB1', XYZ=0.005,0.005,0.005 , - N_PARTICLES=1, CELL_CENTERED=T, MULT_ID='array' / - &MULT ID='array', DX=0.01, DY=0.01, DZ=0.01, I_LOWER=0, I_UPPER=9, - J_LOWER=0, J_UPPER=9, K_LOWER=0, K_UPPER=3 / - &DEVC ID='T307', INIT_ID='P-00307', QUANTITY='WALL TEMPERATURE' / - \end{lstlisting} - specify an array of 10 by 10 by 4 particles. We want to record the surface temperature of the 307-th particle. See Sec.~\ref{info:MULT} for details of how the \ct{MULT} line is interpreted. +You may output properties of a single solid particle using a \ct{DEVC} (device) line. For example, the lines: +\begin{lstlisting} + &INIT ID='my particle', PART_ID='...', XB=..., N_PARTICLES=1 / + &DEVC ID='...', INIT_ID='my particle', QUANTITY='WALL TEMPERATURE' / +\end{lstlisting} +adds a column to the \ct{CHID_devc.csv} file for the surface temperature of a single particle that has been introduced into the simulation via an \ct{INIT} line. - If you know the unique identifying tag\footnote{Each droplet or particle has a unique integer identifier. To find it, open the case in Smokeview, load the particles, right click, ``Files/Data/Coloring,'' ``Particles,'' ``Settings,'' and click the box labeled ``Show selected particle tag.'' Then click on the desired particle.} of a particular particle, you can output a solid phase quantity via the following line: - \begin{lstlisting} - &DEVC ID='...', LP_TAG=..., QUANTITY='WALL TEMPERATURE' / - \end{lstlisting} - The \ct{QUANTITY} in the case of a solid (i.e. non-liquid) particle would be taken from Table~\ref{tab:solidoutputquantities}. Note that some of the listed quantities are not appropriate for particles. +If the \ct{INIT} line has a \ct{MULT_ID}; that is, an array of particles is introduced via this single \ct{INIT} line, then the \ct{INIT_ID} for each takes the form \ct{'[ID]-00308'}, where \ct{ID} is that of the \ct{INIT} line, and 308 refers to the 308-th \ct{INIT} line generated by the multiplicative sequence. The \ct{INIT} lines are generated by looping over the $x$ indices, then $y$, then $z$. For example, the following input lines +\begin{lstlisting} + &INIT ID='P', PART_ID='CRIB1', XYZ=0.005,0.005,0.005 , + N_PARTICLES=1, CELL_CENTERED=T, MULT_ID='array' / + &MULT ID='array', DX=0.01, DY=0.01, DZ=0.01, I_LOWER=0, I_UPPER=9, + J_LOWER=0, J_UPPER=9, K_LOWER=0, K_UPPER=3 / + &DEVC ID='T307', INIT_ID='P-00307', QUANTITY='WALL TEMPERATURE' / +\end{lstlisting} +specify an array of 10 by 10 by 4 particles. We want to record the surface temperature of the 307-th particle. See Sec.~\ref{info:MULT} for details of how the \ct{MULT} line is interpreted. - Solid particles can be used as surrogate targets. For example, the following lines of input create a massless particle that can be used to record the heat flux at a given location away from a solid wall. In this case, the mock heat flux gauge is pointing in the $-x$ direction: - \begin{lstlisting} - &DEVC ID='flux', INIT_ID='f1', QUANTITY='RADIATIVE HEAT FLUX' / - &INIT ID='f1', XYZ=..., N_PARTICLES=1, PART_ID='rad gauge' / - &PART ID='rad gauge', STATIC=T, ORIENTATION=-1,0,0, SURF_ID='target' / - &SURF ID='target', RADIUS=0.001, GEOMETRY='SPHERICAL', EMISSIVITY=1. / - \end{lstlisting} - Note that the \ct{DEVC} line does not contain device coordinates, but rather a reference to the \ct{INIT} line that positions the single surrogate particle at the point \ct{XYZ}. The \ct{INIT} line references the \ct{PART} line, which provides information about the particle, in particular the orientation of the heat flux gauge. The reference to the \ct{SURF} line is mainly for consistency---FDS needs to know something about the particle's geometry even though it is really just a ``target.'' Its volume is meaningless. The functionality of surrogate particles can be extended to model an array of devices. Instead of one heat flux gauge, we can create a line of them: - \begin{lstlisting} - &DEVC ID='flux', INIT_ID='f1', POINTS=34, QUANTITY='RADIATIVE HEAT FLUX', X_ID='x' / - &INIT ID='f1', XYZ=..., N_PARTICLES=34, DX=0.05, PART_ID='rad gauge' / - \end{lstlisting} - Note that the parameter \ct{DX} on the \ct{INIT} line creates a line of particles starting at the point \ct{XYZ} and repeating every 0.05~m. For more information about specifying arrays of devices via the parameter \ct{POINTS}, see Sec.~\ref{info:line_file}. +If you know the unique identifying tag\footnote{Each droplet or particle has a unique integer identifier. To find it, open the case in Smokeview, load the particles, right click, ``Files/Data/Coloring,'' ``Particles,'' ``Settings,'' and click the box labeled ``Show selected particle tag.'' Then click on the desired particle.} of a particular particle, you can output a solid phase quantity via the following line: +\begin{lstlisting} + &DEVC ID='...', LP_TAG=..., QUANTITY='WALL TEMPERATURE' / +\end{lstlisting} +The \ct{QUANTITY} in the case of a solid (i.e. non-liquid) particle would be taken from Table~\ref{tab:solidoutputquantities}. Note that some of the listed quantities are not appropriate for particles. +Solid particles can be used as surrogate targets. For example, the following lines of input create a massless particle that can be used to record the heat flux at a given location away from a solid wall. In this case, the mock heat flux gauge is pointing in the $-x$ direction: +\begin{lstlisting} + &DEVC ID='flux', INIT_ID='f1', QUANTITY='RADIATIVE HEAT FLUX' / + &INIT ID='f1', XYZ=..., N_PARTICLES=1, PART_ID='rad gauge' / + &PART ID='rad gauge', STATIC=T, ORIENTATION=-1,0,0, SURF_ID='target' / + &SURF ID='target', RADIUS=0.001, GEOMETRY='SPHERICAL', EMISSIVITY=1. / +\end{lstlisting} +Note that the \ct{DEVC} line does not contain device coordinates, but rather a reference to the \ct{INIT} line that positions the single surrogate particle at the point \ct{XYZ}. The \ct{INIT} line references the \ct{PART} line, which provides information about the particle, in particular the orientation of the heat flux gauge. The reference to the \ct{SURF} line is mainly for consistency---FDS needs to know something about the particle's geometry even though it is really just a ``target.'' Its volume is meaningless. The functionality of surrogate particles can be extended to model an array of devices. Instead of one heat flux gauge, we can create a line of them: +\begin{lstlisting} + &DEVC ID='flux', INIT_ID='f1', POINTS=34, QUANTITY='RADIATIVE HEAT FLUX', X_ID='x' / + &INIT ID='f1', XYZ=..., N_PARTICLES=34, DX=0.05, PART_ID='rad gauge' / +\end{lstlisting} +Note that the parameter \ct{DX} on the \ct{INIT} line creates a line of particles starting at the point \ct{XYZ} and repeating every 0.05~m. For more information about specifying arrays of devices via the parameter \ct{POINTS}, see Sec.~\ref{info:line_file}. - \newpage - \section{Special Output Features} - \label{info:special_output} +\section{Special Output Features} +\label{info:special_output} - This section lists a variety of output quantities that are useful for studying thermally-driven flows, combustion, pyrolysis, and so forth. Note that some of the output quantities can be produced in a variety of ways. +This section lists a variety of output quantities that are useful for studying thermally-driven flows, combustion, pyrolysis, and so forth. Note that some of the output quantities can be produced in a variety of ways. - \subsection{Heat Release Rate and Energy Conservation} - \label{info:HRR} - \label{hallways} - \label{test_hrr_2d_cyl} +\subsection{Heat Release Rate and Energy Conservation} +\label{info:HRR} +\label{hallways} +\label{test_hrr_2d_cyl} - Quantities associated with the overall energy budget are reported in the comma delimited file \ct{CHID_hrr.csv}. This file is automatically generated; the only input parameters associated with it are \ct{DT_HRR} and \ct{RAMP_HRR} on the \ct{DUMP} line. The columns in this file record the time history of the integrals of the terms in the enthalpy transport equation. The columns are defined as follows: - \begin{eqnarray} - \label{eqn_enthalpytransport} - \underbrace{\frac{\partial}{\partial t} \int \rho h_{\rm s} \, \d V }_{\hbox{\ct{Q_ENTH}}} &=& - \underbrace{\int \dot{q}''' \, \d V}_{\hbox{\ct{HRR}}} - \; + \; \underbrace{\left(\dq_{\rm p,r} - \int \nabla \cdot \dot{\bq}_{\rm r}'' \d V\right)}_{\hbox{\ct{Q_RADI}}} - \; + \; \underbrace{\sum_\alpha \dm_{\rm p,\alpha} h_{\rm s,\alpha} - \int \rho \bu h_{\rm s} \cdot \d {\bf S}}_{\hbox{\ct{Q_CONV}}} \nonumber \\[0.1in] - && - \; + \; \underbrace{\left( \dq_{\rm p,w} - \int \dq_{\rm c}'' \d A\right)}_{\hbox{\ct{Q_COND}}} - \; + \; \underbrace{\sum_\alpha \int h_{\rm s,\alpha} \, \rho D_\alpha \nabla Y_\alpha \cdot \d {\bf S}}_{\hbox{\ct{Q_DIFF}}} - \; + \; \underbrace{\int \frac{d \overline{p} }{\d t} \, \d V}_{\hbox{\ct{Q_PRES}}} \\[0.1in] - && - \; + \; \underbrace{\left(-\dq_{\rm p,r}-\dq_{\rm p,c}-\dq_{\rm p,w}\right)}_{\hbox{\ct{Q_PART}}} \nonumber - \end{eqnarray} - \begin{itemize} - \item \ct{Q_ENTH} The change in the sensible enthalpy of the gas. $\rho$ is the density of the gas (\unit{kg/m^3}). $h_{\rm s}$ is the \underline{s}ensible enthalpy of the gas (kJ/kg). The volume integral is over the entire domain. - \item \ct{HRR} The heat release rate of the fire (kW) resulting from gas phase combustion. - \item \ct{HRR_OX} The heat release rate (kW) of any solid phase oxidation reactions. This should be summed with the \ct{HRR} column when comparing results to heat release measurements obtained from oxygen consumption calorimetry, as the additional oxygen sink from solid phase reactions will be lumped into the calorimetry measurement. This term does not appear in Eq.~(\ref{eqn_enthalpytransport}) because the effect of solid phase reactions on the gas phase occurs implicitly via sensible enthalpy transport (\ct{Q_CONV}) and heat transfer (\ct{Q_COND}, \ct{Q_RADI}) at the solid surfaces. - \item \ct{Q_RADI} The thermal radiation {\em into} the domain from the exterior boundary or particles. $\dot{\bq}_{\rm r}''$ is the \underline{r}adiation heat flux vector (\unit{kW/m^2}). Its divergence represents the net radiative emission from a volume of gas. Typically, \ct{Q_RADI} has a negative value, meaning that a fire or hot gases radiate energy out of the domain. $\dq_{\rm p,r}$ is the \underline{r}adiation absorbed by a droplet or \underline{p}article (kW). This term is added to \ct{Q_RADI} and subtracted from \ct{Q_PART} because it is implicitly included in $\nabla \cdot \dot{\bq}_{\rm r}''$ and needs to be separated off for the purpose of explicitly accounting for it in the energy budget. - \item \ct{Q_CONV} The flow of sensible enthalpy {\em into} the computational domain. $\dm_{\rm p,\alpha}$ is the production rate of gas species $\alpha$ from a solid \underline{p}article or liquid droplet (kg/s). $h_{\rm s,\alpha}$ is the \underline{s}ensible enthalpy of gas species $\alpha$ (kJ/kg). $\rho$ is the gas density (\unit{kg/m^3}), $\bu$ is the velocity vector (m/s). $h_{\rm s}$ is the \underline{s}ensible enthalpy of the gas. If the gas is flowing out of the domain, $\bu \cdot \d {\bf S}$ is positive. - \item \ct{Q_COND} The convective heat flux {\em into} the computational domain. $\dq_{\rm c}''$ is the heat \underline{c}onvected from the gas to a surface. If the gas is relatively hot and the surfaces/particles/droplets relatively cool, \ct{Q_COND} is negative. At \ct{OPEN} boundaries, \ct{Q_COND} is $\int k \nabla T \cdot \d {\bf S}$, where $k$ (kW/(m$\cdot$K)) is the turbulent thermal conductivity of the gas and $\nabla T$ is the temperature gradient across the open boundary. $\dq_{\rm p,w}$ is the energy transferred from a solid surface (\underline{w}all) to a droplet or \underline{p}article adhering to it. Notice that it is subtracted off in \ct{Q_PART} because it makes no contribution to the energy of the gas. - \item \ct{Q_DIFF} The flow of enthalpy {\em into} the computational domain due to the diffusion of species where $\rho D_\alpha \nabla Y_\alpha$ is diffusive flux of species $\alpha$ (kW). - \item \ct{Q_PRES} The work done by volumetric expansion (kW). - \item \ct{Q_PART} The rate of energy gained by the gas from liquid droplets or solid particles. $\dq_{\rm p,r}$ is the \underline{r}adiation absorbed by a droplet or \underline{p}article (kW). $\dq_{\rm p,c}$ is the energy transferred via \underline{c}onvection from the gas to a droplet or \underline{p}article (kW). $\dq_{\rm p,w}$ is the energy transferred from a solid surface (\underline{w}all) to a droplet or \underline{p}article adhering to it. - \item \ct{Q_TOTAL} The sum of all the right hand terms in Eq.~\ref{eqn_enthalpytransport} except for \ct{HRR_OX}, as explained above. Ideally, this sum should equal the term on the left, \ct{Q_ENTH}. - \end{itemize} +Quantities associated with the overall energy budget are reported in the comma delimited file \ct{CHID_hrr.csv}. This file is automatically generated; the only input parameters associated with it are \ct{DT_HRR} and \ct{RAMP_HRR} on the \ct{DUMP} line. The columns in this file record the time history of the integrals of the terms in the enthalpy transport equation. The columns are defined as follows: +\begin{eqnarray} + \label{eqn_enthalpytransport} + \underbrace{\frac{\partial}{\partial t} \int \rho h_{\rm s} \, \d V }_{\hbox{\ct{Q_ENTH}}} &=& + \underbrace{\int \dot{q}''' \, \d V}_{\hbox{\ct{HRR}}} + \; + \; \underbrace{\left(\dq_{\rm p,r} - \int \nabla \cdot \dot{\bq}_{\rm r}'' \d V\right)}_{\hbox{\ct{Q_RADI}}} + \; + \; \underbrace{\sum_\alpha \dm_{\rm p,\alpha} h_{\rm s,\alpha} - \int \rho \bu h_{\rm s} \cdot \d {\bf S}}_{\hbox{\ct{Q_CONV}}} \nonumber \\[0.1in] + && + \; + \; \underbrace{\left( \dq_{\rm p,w} - \int \dq_{\rm c}'' \d A\right)}_{\hbox{\ct{Q_COND}}} + \; + \; \underbrace{\sum_\alpha \int h_{\rm s,\alpha} \, \rho D_\alpha \nabla Y_\alpha \cdot \d {\bf S}}_{\hbox{\ct{Q_DIFF}}} + \; + \; \underbrace{\int \frac{d \overline{p} }{\d t} \, \d V}_{\hbox{\ct{Q_PRES}}} \\[0.1in] + && + \; + \; \underbrace{\left(-\dq_{\rm p,r}-\dq_{\rm p,c}-\dq_{\rm p,w}\right)}_{\hbox{\ct{Q_PART}}} \nonumber +\end{eqnarray} +\begin{itemize} + \item \ct{Q_ENTH} The change in the sensible enthalpy of the gas. $\rho$ is the density of the gas (\unit{kg/m^3}). $h_{\rm s}$ is the \underline{s}ensible enthalpy of the gas (kJ/kg). The volume integral is over the entire domain. + \item \ct{HRR} The heat release rate of the fire (kW) resulting from gas phase combustion. + \item \ct{HRR_OX} The heat release rate (kW) of any solid phase oxidation reactions. This should be summed with the \ct{HRR} column when comparing results to heat release measurements obtained from oxygen consumption calorimetry, as the additional oxygen sink from solid phase reactions will be lumped into the calorimetry measurement. This term does not appear in Eq.~(\ref{eqn_enthalpytransport}) because the effect of solid phase reactions on the gas phase occurs implicitly via sensible enthalpy transport (\ct{Q_CONV}) and heat transfer (\ct{Q_COND}, \ct{Q_RADI}) at the solid surfaces. + \item \ct{Q_RADI} The thermal radiation {\em into} the domain from the exterior boundary or particles. $\dot{\bq}_{\rm r}''$ is the \underline{r}adiation heat flux vector (\unit{kW/m^2}). Its divergence represents the net radiative emission from a volume of gas. Typically, \ct{Q_RADI} has a negative value, meaning that a fire or hot gases radiate energy out of the domain. $\dq_{\rm p,r}$ is the \underline{r}adiation absorbed by a droplet or \underline{p}article (kW). This term is added to \ct{Q_RADI} and subtracted from \ct{Q_PART} because it is implicitly included in $\nabla \cdot \dot{\bq}_{\rm r}''$ and needs to be separated off for the purpose of explicitly accounting for it in the energy budget. + \item \ct{Q_CONV} The flow of sensible enthalpy {\em into} the computational domain. $\dm_{\rm p,\alpha}$ is the production rate of gas species $\alpha$ from a solid \underline{p}article or liquid droplet (kg/s). $h_{\rm s,\alpha}$ is the \underline{s}ensible enthalpy of gas species $\alpha$ (kJ/kg). $\rho$ is the gas density (\unit{kg/m^3}), $\bu$ is the velocity vector (m/s). $h_{\rm s}$ is the \underline{s}ensible enthalpy of the gas. If the gas is flowing out of the domain, $\bu \cdot \d {\bf S}$ is positive. + \item \ct{Q_COND} The convective heat flux {\em into} the computational domain. $\dq_{\rm c}''$ is the heat \underline{c}onvected from the gas to a surface. If the gas is relatively hot and the surfaces/particles/droplets relatively cool, \ct{Q_COND} is negative. At \ct{OPEN} boundaries, \ct{Q_COND} is $\int k \nabla T \cdot \d {\bf S}$, where $k$ (kW/(m$\cdot$K)) is the turbulent thermal conductivity of the gas and $\nabla T$ is the temperature gradient across the open boundary. $\dq_{\rm p,w}$ is the energy transferred from a solid surface (\underline{w}all) to a droplet or \underline{p}article adhering to it. Notice that it is subtracted off in \ct{Q_PART} because it makes no contribution to the energy of the gas. + \item \ct{Q_DIFF} The flow of enthalpy {\em into} the computational domain due to the diffusion of species where $\rho D_\alpha \nabla Y_\alpha$ is diffusive flux of species $\alpha$ (kW). + \item \ct{Q_PRES} The work done by volumetric expansion (kW). + \item \ct{Q_PART} The rate of energy gained by the gas from liquid droplets or solid particles. $\dq_{\rm p,r}$ is the \underline{r}adiation absorbed by a droplet or \underline{p}article (kW). $\dq_{\rm p,c}$ is the energy transferred via \underline{c}onvection from the gas to a droplet or \underline{p}article (kW). $\dq_{\rm p,w}$ is the energy transferred from a solid surface (\underline{w}all) to a droplet or \underline{p}article adhering to it. + \item \ct{Q_TOTAL} The sum of all the right hand terms in Eq.~\ref{eqn_enthalpytransport} except for \ct{HRR_OX}, as explained above. Ideally, this sum should equal the term on the left, \ct{Q_ENTH}. +\end{itemize} - All terms are reported in units of kW. +All terms are reported in units of kW. - The other columns in the \ct{CHID_hrr.csv} file contain the net flow rate of all tracked species at solid boundaries (i.e., flows specified via \ct{SURF} and not at \ct{OPEN} boundaries} in units of kg/s, and the zone gauge pressures in Pa. Note that the reported value of the burning rate is not adjusted to account for the possibility that each individual material might have a different heat of combustion. For this reason, it is not always the case that the reported total burning rate multiplied by the gas phase heat of combustion is equal to the reported heat release rate. +The other columns in the \ct{CHID_hrr.csv} file contain the net flow rate of all tracked species at solid boundaries (i.e., flows specified via \ct{SURF} and not at \ct{OPEN} boundaries} in units of kg/s, and the zone gauge pressures in Pa. Note that the reported value of the burning rate is not adjusted to account for the possibility that each individual material might have a different heat of combustion. For this reason, it is not always the case that the reported total burning rate multiplied by the gas phase heat of combustion is equal to the reported heat release rate. Note that the volume integrations in Eq.~(\ref{eqn_enthalpytransport}) are performed over the entire domain. The differential, $\d V$, is the product of the local grid cell dimensions, $\d x \, \d y \, \d z$. For the special case of two-dimensional cylindrical coordinates, $\d V=r \, \d r \, \d \theta \, \d z$, where $r=x$, $\d r = \d x$, and $\d \theta = \d y$. In the 2D Cartesian case (1 cell in the $y$ direction, \ct{CYLINDRICAL=F}), the cell volumes and areas are divided by $\d y$ so that the column output is a value per unit length (e.g., kW/m). In the 2D cylindrical case, the cell volumes are divided by $\d y$ (which represents radians in this case) and multiplied by $2\pi$ to account for complete integration in the $\theta$ direction. The resulting value is nominally the same as the corresponding 3D problem. An example is shown in Fig.~\ref{fig:test_hrr_2d_cyl}. \begin{figure}[ht] - \centering - \includegraphics[width=3in]{SCRIPT_FIGURES/test_hrr_2d_cyl} - \caption[Results of the \ct{test_hrr_2d_cyl} test case]{Heat release rate for the \ct{test_hrr_2d_cyl} test case compared with the corresponding 3D problem.} - \label{fig:test_hrr_2d_cyl} +\centering +\includegraphics[width=3in]{SCRIPT_FIGURES/test_hrr_2d_cyl} +\caption[Results of the \ct{test_hrr_2d_cyl} test case]{Heat release rate for the \ct{test_hrr_2d_cyl} test case compared with the corresponding 3D problem.} +\label{fig:test_hrr_2d_cyl} \end{figure} As a test of the energy balance, a sample case called \ct{Pressure_Solver/hallways.fds} simulates a fire near the end of five connected hallways. The other end of the hallways is open. As is seen in Fig.~\ref{hallways_energy}, the quantities \ct{Q_ENTH} and \ct{Q_TOTAL} are very closely matched, indicating that the sources of energy loss and gain are properly added and subtracted from the energy equation. As expected, the net energy gain/loss eventually goes to zero as the compartment reaches a quasi-steady state. \begin{figure}[ht] - \centering - \includegraphics[width=3in]{SCRIPT_FIGURES/hallways} - \caption[Results of the \ct{hallways} test case]{The energy budget for the \ct{hallways} test case.} - \label{hallways_energy} +\centering +\includegraphics[width=3in]{SCRIPT_FIGURES/hallways} +\caption[Results of the \ct{hallways} test case]{The energy budget for the \ct{hallways} test case.} +\label{hallways_energy} \end{figure} @@ -10404,15 +10401,17 @@ \subsection{Visibility and Obscuration} \be I/I_0 = {\rm e}^{-KL} \ee The light extinction coefficient, $K$, is a product of a mass specific extinction coefficient, $K_{\rm m}$, which is fuel dependent, and the density of smoke particulate, $\rho Y_{\rm S}$ \be K = K_{\rm m} \; \rho \, Y_{\rm S} \label{mec} \ee -Devices that output a \% obscuration such as a \ct{DEVC} with a \ct{QUANTITY} of \ct{'ASPIRATION'}, \ct{'CHAMBER OBSCURATION'} (smoke detector), or \ct{'PATH OBSCURATION'} (beam detector) are discussed respectively in Sec.~\ref{info:aspiration_detector}, Sec.~\ref{info:smoke_detector}, and Sec.~\ref{info:beam_detector}. +Devices that output a \% obscuration such as a \ct{DEVC} with a \ct{QUANTITY} of \ct{'ASPIRATION'}, \linebreak[4]\ct{'CHAMBER OBSCURATION'} (smoke detector), or \ct{'PATH OBSCURATION'} (beam detector) are discussed respectively in Sec.~\ref{info:aspiration_detector}, Sec.~\ref{info:smoke_detector}, and Sec.~\ref{info:beam_detector}. Estimates of visibility through smoke can be made by using the equation \be S = C/K \label{vis} \ee where $C$ is a non-dimensional constant characteristic of the type of object being viewed through the smoke, i.e., $C=8$ for a light-emitting sign and $C=3$ for a light-reflecting sign~\cite{SFPE:Mulholland}. Since $K$ varies from point to point in the domain, the visibility $S$ does as well. -Three parameters control smoke production and visibility. The first is the \ct{SOOT_YIELD} on the \ct{REAC} line, defined as the fraction of fuel mass that is converted to soot if the simple chemistry approach is being used. The second parameter, \ct{MASS_EXTINCTION_COEFFICIENT}, is the $K_{\rm m}$ in Eq.~(\ref{mec}). It is defined on one or more of the \ct{SPEC} lines for the various light absorbing gas species. When using the simple chemistry combustion model, you can change the default mass extinction coefficient by adding a line to the input file of the form: \ct{&SPEC ID='SOOT', MASS_EXTINCTION_COEFFICIENT=..., LUMPED_COMPONENT_ONLY=T /}. Its default value is 8700~\unit{m^2/kg}, a value suggested for flaming combustion of wood and plastics\footnote{For most flaming fuels, a suggested value for $K_{\rm m}$ is 8700~\unit{m^2/kg}~$\pm$~1100~\unit{m^2/kg} at a wavelength of 633~nm~\cite{Mulholland:F+M}}. The third parameter, \ct{VISIBILITY_FACTOR} on the \ct{MISC} line, is the constant $C$ in Eq.~(\ref{vis}). It is 3 by default. - -The gas phase output quantity \ct{'EXTINCTION COEFFICIENT'} is $K$. A similar quantity is the \ct{'OPTICAL DENSITY'}, $D=K/2.3$, the result of using $\log_{10}$ in the definition \be D \equiv - \frac{1}{L} \, \log_{10} \left( \frac{I}{I_0} \right) = K \, \log_{10} {\rm e} \ee The visibility $S$ is output via the \ct{QUANTITY} called \ct{'VISIBILITY'}. Note that, by default, the visibility is associated with the smoke that is implicitly defined by the simple chemistry model. However, this quantity can also be associated with an explicitly defined species via the inclusion of a \ct{SPEC_ID}. In other words, you can specify the output quantity \ct{'VISIBILITY'} along with a \ct{SPEC_ID}. This does not require that you do a simple chemistry calculation; only that you have specified the given species via a separate \ct{SPEC} line. You can specify a unique \ct{MASS_EXTINCTION_COEFFICIENT} on the \ct{SPEC} line as well. +Three parameters control smoke production and visibility. The first is the \ct{SOOT_YIELD} on the \ct{REAC} line, defined as the fraction of fuel mass that is converted to soot if the simple chemistry approach is being used. The second parameter, \ct{MASS_EXTINCTION_COEFFICIENT}, is the $K_{\rm m}$ in Eq.~(\ref{mec}). It is defined on one or more of the \ct{SPEC} lines for the various light absorbing gas species. Its default value is 8700~\unit{m^2/kg}, a value suggested for flaming combustion of wood and plastics\footnote{For most flaming fuels, a suggested value for $K_{\rm m}$ is 8700~\unit{m^2/kg}~$\pm$~1100~\unit{m^2/kg} at a wavelength of 633~nm~\cite{Mulholland:F+M}}. The third parameter, \ct{VISIBILITY_FACTOR} on the \ct{MISC} line, is the constant $C$ in Eq.~(\ref{vis}). It is 3 by default. When using the simple chemistry combustion model, you can change the default mass extinction coefficient by adding a line to the input file of the form: +\begin{lstlisting} +&SPEC ID='SOOT', MASS_EXTINCTION_COEFFICIENT=...,LUMPED_COMPONENT_ONLY=T / +\end{lstlisting} +The gas phase output quantity \ct{'EXTINCTION COEFFICIENT'} is $K$. A similar quantity is the \linebreak[4]\ct{'OPTICAL DENSITY'}, $D=K/2.3$, the result of using $\log_{10}$ in the definition \be D \equiv - \frac{1}{L} \, \log_{10} \left( \frac{I}{I_0} \right) = K \, \log_{10} {\rm e} \ee The visibility $S$ is output via the \ct{QUANTITY} called \ct{'VISIBILITY'}. Note that, by default, the visibility is associated with the smoke that is implicitly defined by the simple chemistry model. However, this quantity can also be associated with an explicitly defined species via the inclusion of a \ct{SPEC_ID}. In other words, you can specify the output quantity \ct{'VISIBILITY'} along with a \ct{SPEC_ID}. This does not require that you do a simple chemistry calculation; only that you have specified the given species via a separate \ct{SPEC} line. You can specify a unique \ct{MASS_EXTINCTION_COEFFICIENT} on the \ct{SPEC} line as well. Note that FDS cannot report a visibility of infinity, but rather reports a \ct{MAXIMUM_VISIBILITY} that you can control via the \ct{MISC} line. The default is 30~m. @@ -10422,38 +10421,40 @@ \subsection{Flame Height and Flame Tilt} The ``flame height,'' and to some extent the ``flame tilt,'' are common quantities used to assess the hazard from a large fire. FDS does not output these quantities directly, but there is a combination of devices and controls that yield these values. This is all best explained with an example. Suppose you are simulating a fire in a domain that is 10~m high with a grid resolution of 0.2~m. The fire is centered about the point $(x,y)=(0,0)$ at $z=0$. The following input lines compute the flame height and tilt: \begin{lstlisting} - &DEVC ID='HRR', Z_ID='z', XBP=0.0,0.0,0.0,0.0,0.1,9.9, QUANTITY='HRRPUV', - SPATIAL_STATISTIC='VOLUME INTEGRAL', DX=5, DY=5, DZ=0.1, POINTS=100, - STATISTICS_START=10. / - &CTRL ID='H', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR', PERCENTILE=0.97 / - &DEVC ID='x_max', XB=-5,5,-5,5,9.0,9.2, QUANTITY='TEMPERATURE', - SPATIAL_STATISTIC='MAXLOC X' / - &DEVC ID='y_max', XB=-5,5,-5,5,9.0,9.2, QUANTITY='TEMPERATURE', - SPATIAL_STATISTIC='MAXLOC Y' / - &CTRL ID='x2', FUNCTION_TYPE='POWER', INPUT_ID='x_max','CONSTANT', CONSTANT=2 / - &CTRL ID='y2', FUNCTION_TYPE='POWER', INPUT_ID='y_max','CONSTANT', CONSTANT=2 / - &CTRL ID='r2', FUNCTION_TYPE='SUM', INPUT_ID='x2','y2' / - &CTRL ID='r', FUNCTION_TYPE='POWER', INPUT_ID='r2','CONSTANT', CONSTANT=0.5 / - &CTRL ID='r/9', FUNCTION_TYPE='DIVIDE', INPUT_ID='d','CONSTANT', CONSTANT=9 / - &CTRL ID='tilt_rad', FUNCTION_TYPE='ATAN', INPUT_ID='r/9' / - &CTRL ID='tilt_deg', FUNCTION_TYPE='MULTIPLY', INPUT_ID='tilt_rad','CONSTANT', - CONSTANT=57.296 / - &CTRL ID='cos_theta', FUNCTION_TYPE='COS', INPUT_ID='tilt_rad' / - &CTRL ID='L', FUNCTION_TYPE='DIVIDE', INPUT_ID='H','cos_theta' / - &DEVC ID='L_F', CTRL_ID='L', XYZ=0,0,0, QUANTITY='CONTROL VALUE', - TEMPORAL_STATISTIC='RUNNING AVERAGE', STATISTICS_START=10, UNITS='m' / - &DEVC ID='tilt', CTRL_ID='tilt_deg', XYZ=0,0,0, QUANTITY='CONTROL VALUE', - TEMPORAL_STATISTIC='RUNNING AVERAGE', STATISTICS_START=10, UNITS='deg' / +&DEVC ID='HRR', Z_ID='z', XBP=0.0,0.0,0.0,0.0,0.1,9.9, QUANTITY='HRRPUV', +SPATIAL_STATISTIC='VOLUME INTEGRAL', DX=5, DY=5, DZ=0.1, POINTS=100, +STATISTICS_START=10. / +&CTRL ID='H', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR', PERCENTILE=0.97 / +&DEVC ID='x_max', XB=-5,5,-5,5,9.0,9.2, QUANTITY='TEMPERATURE', +SPATIAL_STATISTIC='MAXLOC X' / +&DEVC ID='y_max', XB=-5,5,-5,5,9.0,9.2, QUANTITY='TEMPERATURE', +SPATIAL_STATISTIC='MAXLOC Y' / +&CTRL ID='x2', FUNCTION_TYPE='POWER', INPUT_ID='x_max','CONSTANT', +CONSTANT=2 / +&CTRL ID='y2', FUNCTION_TYPE='POWER', INPUT_ID='y_max','CONSTANT', +CONSTANT=2 / +&CTRL ID='r2', FUNCTION_TYPE='SUM', INPUT_ID='x2','y2' / +&CTRL ID='r', FUNCTION_TYPE='POWER', INPUT_ID='r2','CONSTANT', CONSTANT=0.5 / +&CTRL ID='r/9', FUNCTION_TYPE='DIVIDE', INPUT_ID='d','CONSTANT', CONSTANT=9 / +&CTRL ID='tilt_rad', FUNCTION_TYPE='ATAN', INPUT_ID='r/9' / +&CTRL ID='tilt_deg', FUNCTION_TYPE='MULTIPLY', INPUT_ID='tilt_rad','CONSTANT', +CONSTANT=57.296 / +&CTRL ID='cos_theta', FUNCTION_TYPE='COS', INPUT_ID='tilt_rad' / +&CTRL ID='L', FUNCTION_TYPE='DIVIDE', INPUT_ID='H','cos_theta' / +&DEVC ID='L_F', CTRL_ID='L', XYZ=0,0,0, QUANTITY='CONTROL VALUE', +TEMPORAL_STATISTIC='RUNNING AVERAGE', STATISTICS_START=10, UNITS='m' / +&DEVC ID='tilt', CTRL_ID='tilt_deg', XYZ=0,0,0, QUANTITY='CONTROL VALUE', +TEMPORAL_STATISTIC='RUNNING AVERAGE', STATISTICS_START=10, UNITS='deg' / \end{lstlisting} \begin{itemize} - \item \ct{ID='HRR'} Compute a vertical array of heat release rates over horizontal slices that are one cell thick. - \item \ct{ID='H'} Take the function \ct{('z','HRR')} and compute the height below which 97~\% of the fire's energy is released. - \item \ct{ID='x_max'} Find the $x$ coordinate of the point of maximum temperature within the volume defined by \ct{XB}. Do the same for the $y$ coordinate. - \item \ct{ID='x2','y2','r2','r','r/9'} Determine the radial distance from the origin to the point of maximum temperature. Divide this distance by the height of the slice within which you located the maximum temperature, $z=9$. - \item \ct{ID='tilt_rad','tilt_deg'} Calculate the arctangent of \ct{'r/9'} to determine the tilt angle in radians. Then convert this value to degrees. - \item \ct{ID='cos_theta'} Calculate the cosine of the tilt angle. - \item \ct{ID='L'} Divide the vertical flame height by the cosine of the tilt angle to arrive at the length of the flame. - \item \ct{ID='L_F','tilt'} Print out the flame length and tilt angle to the device file using a running average to smooth the noisy data. +\item \ct{ID='HRR'} Compute a vertical array of heat release rates over horizontal slices that are one cell thick. +\item \ct{ID='H'} Take the function \ct{('z','HRR')} and compute the height below which 97~\% of the fire's energy is released. +\item \ct{ID='x_max'} Find the $x$ coordinate of the point of maximum temperature within the volume defined by \ct{XB}. Do the same for the $y$ coordinate. +\item \ct{ID='x2','y2','r2','r','r/9'} Determine the radial distance from the origin to the point of maximum temperature. Divide this distance by the height of the slice within which you located the maximum temperature, $z=9$. +\item \ct{ID='tilt_rad','tilt_deg'} Calculate the arctangent of \ct{'r/9'} to determine the tilt angle in radians. Then convert this value to degrees. +\item \ct{ID='cos_theta'} Calculate the cosine of the tilt angle. +\item \ct{ID='L'} Divide the vertical flame height by the cosine of the tilt angle to arrive at the length of the flame. +\item \ct{ID='L_F','tilt'} Print out the flame length and tilt angle to the device file using a running average to smooth the noisy data. \end{itemize} To better understand the control logic, see Sec.~\ref{info:basic_control}. Pay particular attention to the averaging periods, start times, etc. You do not want to begin a running average until the fire plume has stabilized. Practice with some simple cases before implementing this in a complex simulation. @@ -10463,7 +10464,7 @@ \subsection{Layer Height and the Average Upper and Lower Layer Temperatures} Fire protection engineers often need to estimate the location of the interface between the hot, smoke-laden upper layer and the cooler lower layer in a burning compartment. Relatively simple fire models, often referred to as {\em two-zone models}, compute this quantity directly, along with the average temperature of the upper and lower layers. In a computational fluid dynamics (CFD) model like FDS, there are not two distinct zones, but rather a continuous profile of temperature. Nevertheless, there are methods that have been developed to estimate layer height and average temperatures from a continuous vertical profile of temperature. One such method~\cite{Janssens:JFS1992} is as follows: Consider a continuous function $T(z)$ defining temperature $T$ as a function of height above the floor $z$, where $z=0$ is the floor and $z=H$ is the ceiling. Define $T_{\rm u}$ as the upper layer temperature, $T_{\rm l}$ as the lower layer temperature, and $z_{\rm int}$ as the interface height. Compute the quantities: \begin{eqnarray*} (H-z_{\rm int})\; T_{\rm u} + z_{\rm int} \; T_{\rm l} = \int_0^H \; T(z) \; \d z &=& I_1 \\ [0.1in] - (H-z_{\rm int})\; \frac{1}{T_{\rm u}} + z_{\rm int} \; \frac{1}{T_{\rm l}} = \int_0^H \; \frac{1}{T(z)} \; \d z &=& I_2 +(H-z_{\rm int})\; \frac{1}{T_{\rm u}} + z_{\rm int} \; \frac{1}{T_{\rm l}} = \int_0^H \; \frac{1}{T(z)} \; \d z &=& I_2 \end{eqnarray*} Solve for $z_{\rm int}$: \be @@ -10477,7 +10478,7 @@ \subsection{Layer Height and the Average Upper and Lower Layer Temperatures} The quantities \ct{'LAYER HEIGHT'}, \ct{'UPPER TEMPERATURE'} and \ct{'LOWER TEMPERATURE'} can be designated via \ct{DEVC} lines in the input file. For example, the line: \begin{lstlisting} - &DEVC XB=2.0,2.0,3.0,3.0,0.0,3.0, QUANTITY='LAYER HEIGHT', ID='whatever' / +&DEVC XB=2.0,2.0,3.0,3.0,0.0,3.0, QUANTITY='LAYER HEIGHT', ID='whatever' / \end{lstlisting} produces a time history of the smoke layer height at $x=2$ and $y=3$ between $z=0$ and $z=3$. @@ -10503,10 +10504,10 @@ \subsection{Thermocouples} Figure~\ref{fig:thermocouple_time_constant} shows the results of a simple test case called \ct{thermocouple_time_constant} whose input file is in the \ct{Heat_Transfer} samples folder. Three thermocouples with given time constants of 0.5~s, 3.0~s, and 8.0~s are suddenly subjected to a 20~m/s air stream of 30~\unit{\degreeCelsius}. It is expected that each TC should reach a temperature of 26.32~\unit{\degreeCelsius} at their given time constants. \begin{figure}[!ht] - \centering - \includegraphics[width=3in]{SCRIPT_FIGURES/thermocouple_time_constant} - \caption[Results of the \ct{thermocouple_time_constant} test case]{Temperature response of thermocouples with time constants of 0.5~s, 3.0~s, and 8.0~s compared with the exact solution of Eq.~(\ref{TC}).} - \label{fig:thermocouple_time_constant} +\centering +\includegraphics[width=3in]{SCRIPT_FIGURES/thermocouple_time_constant} +\caption[Results of the \ct{thermocouple_time_constant} test case]{Temperature response of thermocouples with time constants of 0.5~s, 3.0~s, and 8.0~s compared with the exact solution of Eq.~(\ref{TC}).} +\label{fig:thermocouple_time_constant} \end{figure} \subsection{Bi-Directional Probe} @@ -10524,10 +10525,10 @@ \subsection{Bi-Directional Probe} Figure~\ref{bi_dir_fig} shows the results of a bi-directional probe with varying angle to a 1~m/s flow and varying flow speed. \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/bi_dir} - \includegraphics[width=3in]{SCRIPT_FIGURES/bi_dir_2} - \caption[Results of the \ct{bi_dir} test case]{Measured velocities using a bi-directional probe. (Left) Varying angle for a 1~m/s flow. (Right) Probe axis aligned flow with varied flow speed.} - \label{bi_dir_fig} +\includegraphics[width=3in]{SCRIPT_FIGURES/bi_dir} +\includegraphics[width=3in]{SCRIPT_FIGURES/bi_dir_2} +\caption[Results of the \ct{bi_dir} test case]{Measured velocities using a bi-directional probe. (Left) Varying angle for a 1~m/s flow. (Right) Probe axis aligned flow with varied flow speed.} +\label{bi_dir_fig} \end{figure} \subsection{Volume Flow} @@ -10545,8 +10546,8 @@ \subsubsection{Volume Flow in the Gas Phase} \ee To specify volume flow as an output, use an input line like the following: \begin{lstlisting} - &DEVC ID='Vdot', XB=X0,X0,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', - SPATIAL_STATISTIC='AREA INTEGRAL' / +&DEVC ID='Vdot', XB=X0,X0,Y1,Y2,Z1,Z2, QUANTITY='U-VELOCITY', +SPATIAL_STATISTIC='AREA INTEGRAL' / \end{lstlisting} This produces a column in the \ct{CHID_devc.csv} containing the time history of the volume flow (\unit{m^3/s}) through the window. Note that if the gas is flowing in the positive coordinate direction, the volume flow is positive. You can reverse the sign by adding \ct{CONVERSION_FACTOR=-1} to the \ct{DEVC} line. If you want to distinguish the inflow from the outflow through the same window, use the parameters \ct{QUANTITY_RANGE(1:2)} to set upper or lower bounds. For example, if you only want to record the volume flow in the negative coordinate direction, set \ct{QUANTITY_RANGE(2)=0}, meaning that positive values of velocity are not counted in the summation. @@ -10554,8 +10555,8 @@ \subsubsection{Volume Flow at a Boundary} To record the volume flow at a solid surface or vent, add a line like the following: \begin{lstlisting} - &DEVC ID='Vdot', XB=..., QUANTITY='NORMAL VELOCITY', SURF_ID='...', - SPATIAL_STATISTIC='SURFACE INTEGRAL' / +&DEVC ID='Vdot', XB=..., QUANTITY='NORMAL VELOCITY', SURF_ID='...', +SPATIAL_STATISTIC='SURFACE INTEGRAL' / \end{lstlisting} This line instructs FDS to sum the normal component of velocity over any surface with the given \ct{SURF_ID} within the volume bounded by \ct{XB}. Note that a flow entering into the computational domain is negative. @@ -10578,38 +10579,38 @@ \subsubsection{Mass Flow in the Gas Phase} \ee To instruct FDS to output this quantity, use the input line: \begin{lstlisting} - &DEVC ID='m-dot', XB=x0,x0,y1,y2,z1,z2, QUANTITY='MASS FLUX X', SPEC_ID='ALPHA', - SPATIAL_STATISTIC='AREA INTEGRAL' / +&DEVC ID='m-dot', XB=x0,x0,y1,y2,z1,z2, QUANTITY='MASS FLUX X', +SPEC_ID='ALPHA', SPATIAL_STATISTIC='AREA INTEGRAL' / \end{lstlisting} To limit the integration to only flow in the positive or negative coordinate direction, set \ct{QUANTITY_RANGE(1)} or \ct{QUANTITY_RANGE(2)} to zero. If you want the total mass flow, omit the \ct{SPEC_ID}. \ct{'MASS FLUX X'} and its $y$ and $z$ counterparts are only estimates of the actual computed mass flux for two reasons. \begin{enumerate} - \item These quantities use an estimate of the flux-limiting mass flux terms that are computed by FDS. Notice in Eq.~(\ref{mass_flow}) that the density $\rho$ and mass fraction $Y_\alpha$ are approximated at the forward $x$ face of cell $ijk$ with a simple average. The actual discrete approximation is more complicated than this, but these flux-limiting mass flux terms are normally not saved outside of the routine where they are computed. - \item If a \ct{SPEC_ID} is specified, Eq.~(\ref{mass_flow}) represents only the {\em advective} component of the total mass flux. In turbulent flows, the diffusive component, which includes turbulent diffusion, can be significant. +\item These quantities use an estimate of the flux-limiting mass flux terms that are computed by FDS. Notice in Eq.~(\ref{mass_flow}) that the density $\rho$ and mass fraction $Y_\alpha$ are approximated at the forward $x$ face of cell $ijk$ with a simple average. The actual discrete approximation is more complicated than this, but these flux-limiting mass flux terms are normally not saved outside of the routine where they are computed. +\item If a \ct{SPEC_ID} is specified, Eq.~(\ref{mass_flow}) represents only the {\em advective} component of the total mass flux. In turbulent flows, the diffusive component, which includes turbulent diffusion, can be significant. \end{enumerate} -If you want more precise output that includes the diffusive component of the mass flux and the exact flux limiter for the advective component, specify \ct{'TOTAL MASS FLUX X'} rather than \ct{'MASS FLUX X'} (or the $y$ or $z$ coordinate analogs). If you want to get a breakdown of the components, specify \ct{'ADVECTIVE MASS FLUX X'} and \ct{'DIFFUSIVE MASS FLUX X'} as well. Take care to specify \ct{XB} in unambiguous cell locations (i.e., not directly on a cell face or boundary). With a \ct{DEVC} in cell (\ct{I,J,K}) the flux will be reported from the (\ct{I+1/2,J,K}) face, etc., on the staggered grid. +If you want more precise output that includes the diffusive component of the mass flux and the exact flux limiter for the advective component, specify \ct{'TOTAL MASS FLUX X'} rather than \ct{'MASS FLUX X'} (or the $y$ or $z$ coordinate analogs). If you want to get a breakdown of the components, specify \linebreak[4]\ct{'ADVECTIVE MASS FLUX X'} and \ct{'DIFFUSIVE MASS FLUX X'} as well. Take care to specify \ct{XB} in unambiguous cell locations (i.e., not directly on a cell face or boundary). With a \ct{DEVC} in cell (\ct{I,J,K}) the flux will be reported from the (\ct{I+1/2,J,K}) face, etc., on the staggered grid. \subsubsection{Mass Flow at a Boundary} \label{info:wallflux} \label{mass_flux_comparison} -There are three quantities that may be used for recording the mass flux of a particular gas species at a boundary: \ct{'MASS FLUX'}, \ct{'MASS FLUX WALL'}, and \ct{'TOTAL MASS FLUX WALL'}. Each takes a \ct{SPEC_ID} if a particular gas species is desired; otherwise the sum of all gas species is given. The difference between the outputs is that \ct{'MASS FLUX'} refers to the generation rate of a gas species or solid material component at a solid boundary, whether it be user-specified or the result of a pyrolysis model. \ct{'MASS FLUX WALL'}, on the other hand, is the actual computed mass flux which might be slightly different than \ct{'MASS FLUX'} due to small numerical error in the normal component of velocity at a solid wall. That is, \ct{'MASS FLUX WALL'} is a direct computation of +There are three quantities that may be used for recording the mass flux of a particular gas species at a boundary: \ct{'MASS FLUX'}, \ct{'MASS FLUX WALL'}, and \ct{'TOTAL MASS FLUX WALL'}. Each takes a \linebreak[4]\ct{SPEC_ID} if a particular gas species is desired; otherwise the sum of all gas species is given. The difference between the outputs is that \ct{'MASS FLUX'} refers to the generation rate of a gas species or solid material component at a solid boundary, whether it be user-specified or the result of a pyrolysis model. \ct{'MASS FLUX WALL'}, on the other hand, is the actual computed mass flux which might be slightly different than \ct{'MASS FLUX'} due to small numerical error in the normal component of velocity at a solid wall. That is, \ct{'MASS FLUX WALL'} is a direct computation of \be \dot{m}_\alpha = \rho Y_\alpha u_n - \rho D_\alpha \partial Y_\alpha / \partial n \ee -where $\mathbf{n}$ is the normal direction of the surface. The third mass flux output option is called \ct{'TOTAL MASS FLUX WALL'}. This quantity is very similar to \ct{'MASS FLUX WALL'} except that it combines the predicted and corrected mass flux over a single time step. It is the boundary analog of the gas phase quantities \ct{'TOTAL MASS FLUX X/Y/Z'}. +where $\mathbf{n}$ is the normal direction of the surface. The third mass flux output option is called \linebreak[4]\ct{'TOTAL MASS FLUX WALL'}. This quantity is very similar to \ct{'MASS FLUX WALL'} except that it combines the predicted and corrected mass flux over a single time step. It is the boundary analog of the gas phase quantities \ct{'TOTAL MASS FLUX X/Y/Z'}. -For each form of the boundary mass flux, a positive value means that mass is entering the computational domain. These quantities may be applied at a solid surface or vent. \ct{'MASS FLUX WALL'} and \ct{'TOTAL MASS FLUX WALL'} can also be applied at an \ct{OPEN} boundary. +For each form of the boundary mass flux, a positive value means that mass is entering the computational domain. These quantities may be applied at a solid surface or vent. \ct{'MASS FLUX WALL'} and \linebreak[4]\ct{'TOTAL MASS FLUX WALL'} can also be applied at an \ct{OPEN} boundary. -To demonstrate the difference between these various forms of mass flux output, consider Fig.~\ref{mass_flux_comparison_fig}. These plots show the spatially integrated mass flux of gas from a solid surface, where the mass flux has been ramped up linearly for 10~s, held steady for 20~s, and ramped down to zero linearly for 10~s. The \ct{'MASS FLUX'} output merely mimics this specified curve. The \ct{'MASS FLUX WALL'} and \ct{'TOTAL MASS FLUX WALL'} output exhibit fluctuations caused by the fact that the mass flux is not perfectly applied at the solid surface---there are small fluctuations in the normal component of velocity caused by the inexact velocity-pressure coupling at the boundary. These fluctuations are minor and average out close to the specified value, but sometimes it is useful to use the more exact output quantities for diagnostic purposes. +To demonstrate the difference between these various forms of mass flux output, consider Fig.~\ref{mass_flux_comparison_fig}. These plots show the spatially integrated mass flux of gas from a solid surface, where the mass flux has been ramped up linearly for 10~s, held steady for 20~s, and ramped down to zero linearly for 10~s. The \linebreak[4]\ct{'MASS FLUX'} output merely mimics this specified curve. The \ct{'MASS FLUX WALL'} and \linebreak[4]\ct{'TOTAL MASS FLUX WALL'} output exhibit fluctuations caused by the fact that the mass flux is not perfectly applied at the solid surface---there are small fluctuations in the normal component of velocity caused by the inexact velocity-pressure coupling at the boundary. These fluctuations are minor and average out close to the specified value, but sometimes it is useful to use the more exact output quantities for diagnostic purposes. \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/mass_flux_comparison} - \includegraphics[width=3in]{SCRIPT_FIGURES/mass_flux_comparisonb} - \caption[Results of the \ct{mass_flux_comparison} test case]{(Left) Mass flow rate of a gas from a solid boundary. (Right) Close-up view.} - \label{mass_flux_comparison_fig} +\includegraphics[width=3in]{SCRIPT_FIGURES/mass_flux_comparison} +\includegraphics[width=3in]{SCRIPT_FIGURES/mass_flux_comparisonb} +\caption[Results of the \ct{mass_flux_comparison} test case]{(Left) Mass flow rate of a gas from a solid boundary. (Right) Close-up view.} +\label{mass_flux_comparison_fig} \end{figure} @@ -10621,21 +10622,21 @@ \subsubsection{Enthalpy Flow in the Gas Phase} The flow of enthalpy through a window located at $x=x_0$ and bounded by $y_1 \le y \le y_2$ and $z_1 \le z \le z_2$ is given by: \begin{eqnarray} - && \dot{q}(t) = \int_{z_1}^{z_2} \int_{y_1}^{y_2} \left[ \rho \large( h_{\rm s}(T)-h_{\rm s}(T_\infty) \large) u - k \dod{T}{x} \right] \, \d y \, \d z \approx \nonumber \\ - && \quad \quad \quad \quad \sum_{k=k_1}^{k_2} \sum _{j=j_1}^{j_2} \left[ \rho_{i+\ha,jk} \left( h_{\rm s}(T_{i+\ha,jk})-h_{\rm s}(T_\infty) \right) \, u_{ijk} - k_{ijk} \frac{T_{i+1,jk}-T_{ijk}}{\dx} \right] \, \delta y \, \delta z - \label{enthalpy_flow} +&& \dot{q}(t) = \int_{z_1}^{z_2} \int_{y_1}^{y_2} \left[ \rho \large( h_{\rm s}(T)-h_{\rm s}(T_\infty) \large) u - k \dod{T}{x} \right] \, \d y \, \d z \approx \nonumber \\ +&& \quad \quad \quad \quad \sum_{k=k_1}^{k_2} \sum _{j=j_1}^{j_2} \left[ \rho_{i+\ha,jk} \left( h_{\rm s}(T_{i+\ha,jk})-h_{\rm s}(T_\infty) \right) \, u_{ijk} - k_{ijk} \frac{T_{i+1,jk}-T_{ijk}}{\dx} \right] \, \delta y \, \delta z +\label{enthalpy_flow} \end{eqnarray} To instruct FDS to output this quantity, use the input line: \begin{lstlisting} - &DEVC ID='q-dot', XB=x0,x0,y1,y2,z1,z2, QUANTITY='ENTHALPY FLUX X', - SPATIAL_STATISTIC='AREA INTEGRAL' / +&DEVC ID='q-dot', XB=x0,x0,y1,y2,z1,z2, QUANTITY='ENTHALPY FLUX X', +SPATIAL_STATISTIC='AREA INTEGRAL' / \end{lstlisting} \subsubsection{Enthalpy Flow at a Boundary} \ct{'ENTHALPY FLUX WALL'} is the equivalent of \ct{'ENTHALPY FLUX X/Y/Z'} at a boundary. It is the rate of energy advected {\em into} the domain at a vent or open boundary: \begin{equation} - \dot{q}_{\mathrm{w}}'' = -\rho_{\rm w} \, h_s(T_{\rm w}) \, \bu \cdot \bn - k \dod{T}{n} +\dot{q}_{\mathrm{w}}'' = -\rho_{\rm w} \, h_s(T_{\rm w}) \, \bu \cdot \bn - k \dod{T}{n} \end{equation} where $n$ is the coordinate direction pointing into the boundary; that is, out of the computational domain. Note that the enthalpy flux at a boundary is defined using the density, temperature, and sensible enthalpy of the gas mixture at the boundary, and is not relative to ambient conditions like its gas phase counterparts. For this reason, this quantity is often used in energy budget calculations to track the flow of enthalpy into and out of the computational domain. The quantity is positive for gas flow into the domain. @@ -10647,72 +10648,76 @@ \subsection{Heat Flux} There are various output quantities related to the thermal exposure of solid surfaces. \begin{itemize} - \item \ct{'TOTAL HEAT FLUX'} The rate of radiative and convective energy absorbed at a solid surface: - \be - \dq_{\rm tot}'' = \epsilon_{\rm s} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm s}^4 \right) + h_{\rm c} \, (T_{\rm g} - T_{\rm s}) \label{net_flux} - \ee - where $\dot{q}_{\rm inc}''$ is the {\em incident} radiative heat flux, $\epsilon_{\rm s}$ is the surface emissivity, $h_{\rm c}$ is the convective heat transfer coefficient, $T_{\rm s}$ is the surface temperature, and $T_{\rm g}$ is the gas temperature in the vicinity of the surface. The convective heat transfer coefficient is calculated by FDS using the specified surface properties and the calculated near-boundary flow characteristics. +\item \ct{'TOTAL HEAT FLUX'} The rate of radiative and convective energy absorbed at a solid surface: +\be +\dq_{\rm tot}'' = \epsilon_{\rm s} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm s}^4 \right) + h_{\rm c} \, (T_{\rm g} - T_{\rm s}) \label{net_flux} +\ee +where $\dot{q}_{\rm inc}''$ is the {\em incident} radiative heat flux, $\epsilon_{\rm s}$ is the surface emissivity, $h_{\rm c}$ is the convective heat transfer coefficient, $T_{\rm s}$ is the surface temperature, and $T_{\rm g}$ is the gas temperature in the vicinity of the surface. The convective heat transfer coefficient is calculated by FDS using the specified surface properties and the calculated near-boundary flow characteristics. - \item \ct{'RADIATIVE HEAT FLUX'} The net radiative component of Eq.~(\ref{net_flux}), $\quad \dq_{\rm r}'' = \epsilon_{\rm s} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm s}^4 \right)$. +\item \ct{'RADIATIVE HEAT FLUX'} The net radiative component of Eq.~(\ref{net_flux}), $\quad \dq_{\rm r}'' = \epsilon_{\rm s} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm s}^4 \right)$. - \item \ct{'CONVECTIVE HEAT FLUX'} The convective component of Eq.~(\ref{net_flux}), $\quad \dq_{\rm c}'' = h_{\rm c} \, (T_{\rm g} - T_{\rm s})$. +\item \ct{'CONVECTIVE HEAT FLUX'} The convective component of Eq.~(\ref{net_flux}), $\quad \dq_{\rm c}'' = h_{\rm c} \, (T_{\rm g} - T_{\rm s})$. - \item \ct{'INCIDENT HEAT FLUX'} The term $\dq_{\rm inc}''$ in Eq.~(\ref{net_flux}). +\item \ct{'INCIDENT HEAT FLUX'} The term $\dq_{\rm inc}''$ in Eq.~(\ref{net_flux}). - \item \ct{'GAUGE HEAT FLUX'} This quantity simulates a measurement made with a water-cooled heat flux gauge: - \be - \dq_{\rm gauge}'' = \epsilon_{\rm gauge} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm gauge}^4 \right) + h_{\rm c} \, (T_{\rm g} - T_{\rm gauge}) - \label{gauge_heat_flux} - \ee +\item \ct{'GAUGE HEAT FLUX'} This quantity simulates a measurement made with a water-cooled heat flux gauge: +\be +\dq_{\rm gauge}'' = \epsilon_{\rm gauge} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm gauge}^4 \right) + h_{\rm c} \, (T_{\rm g} - T_{\rm gauge}) +\label{gauge_heat_flux} +\ee - \item \ct{'CONVECTIVE HEAT FLUX GAUGE'} The convective component of Eq.~(\ref{gauge_heat_flux}), $\quad \dq_{\rm c,gauge}'' = h_{\rm c} \, (T_{\rm g} - T_{\rm gauge})$. +\item \ct{'CONVECTIVE HEAT FLUX GAUGE'} The convective component of Eq.~(\ref{gauge_heat_flux}), $\quad \dq_{\rm c,gauge}'' = h_{\rm c} \, (T_{\rm g} - T_{\rm gauge})$. - If the heat flux gauge used in an experiment has a temperature other than ambient or an emissivity other than 1, specify \ct{GAUGE_TEMPERATURE} ($T_{\rm gauge}$, \unit{\degreeCelsius}) and \ct{GAUGE_EMISSIVITY} ($\epsilon_{\rm gauge}$) on the \ct{PROP} line associated with the device: - \begin{lstlisting} - &DEVC ID='hf', XYZ=..., IOR=-2, QUANTITY='GAUGE HEAT FLUX', PROP_ID='hfp' / - &PROP ID='hfp', GAUGE_TEMPERATURE=80., GAUGE_EMISSIVITY=0.9 / - \end{lstlisting} - By default, the heat transfer coefficient, $h_{\rm c}$, in Eq.~(\ref{gauge_heat_flux}) is calculated at the solid surface to which the device is attached, based on the specified surface properties and characteristics of the surrounding flow field. However, you may specify a fixed \ct{HEAT_TRANSFER_COEFFICIENT} (\unit{W/(m^2.K)}) for the gauge on the \ct{PROP} line. +If the heat flux gauge used in an experiment has a temperature other than ambient or an emissivity other than 1, specify \ct{GAUGE_TEMPERATURE} ($T_{\rm gauge}$, \unit{\degreeCelsius}) and \ct{GAUGE_EMISSIVITY} ($\epsilon_{\rm gauge}$) on the \ct{PROP} line associated with the device: +\begin{lstlisting} + &DEVC ID='hf', XYZ=..., IOR=-2, QUANTITY='GAUGE HEAT FLUX', + PROP_ID='hfp' / + &PROP ID='hfp', GAUGE_TEMPERATURE=80., GAUGE_EMISSIVITY=0.9 / +\end{lstlisting} +By default, the heat transfer coefficient, $h_{\rm c}$, in Eq.~(\ref{gauge_heat_flux}) is calculated at the solid surface to which the device is attached, based on the specified surface properties and characteristics of the surrounding flow field. However, you may specify a fixed \ct{HEAT_TRANSFER_COEFFICIENT} (\unit{W/(m^2.K)}) for the gauge on the \ct{PROP} line. - \item \ct{'GAUGE HEAT FLUX GAS'} The same as \ct{'GAUGE HEAT FLUX'}, except that it can be located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction. The \ct{ORIENTATION} vector need not be normalized, as in the following: - \begin{lstlisting} - &DEVC ID='hf', QUANTITY='GAUGE HEAT FLUX GAS', XYZ=..., ORIENTATION=-1,1,0, - PROP_ID='my gauge' / - &PROP ID='my gauge', GAUGE_EMISSIVITY=0.85, HEAT_TRANSFER_COEFFICIENT=15. / - \end{lstlisting} - The \ct{GAUGE_TEMPERATURE}, $T_{\rm gauge}$, \ct{GAUGE_EMISSIVITY}, $\epsilon_{\rm gauge}$, and \ct{HEAT_TRANSFER_COEFFICIENT}, $h_{\rm c}$ (\unit{W/(m^2.K)}), can be specified using a \ct{PROP} line that is referenced by the \ct{DEVC} line. Their default values are \ct{TMPA}, 1, and 10, respectively. +\item \ct{'GAUGE HEAT FLUX GAS'} The same as \ct{'GAUGE HEAT FLUX'}, except that it can be located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction. The \ct{ORIENTATION} vector need not be normalized, as in the following: +\begin{lstlisting} + &DEVC ID='hf', QUANTITY='GAUGE HEAT FLUX GAS', XYZ=..., + ORIENTATION=-1,1,0, + PROP_ID='my gauge' / + &PROP ID='my gauge', GAUGE_EMISSIVITY=0.85, + HEAT_TRANSFER_COEFFICIENT=15. / +\end{lstlisting} +The \ct{GAUGE_TEMPERATURE}, $T_{\rm gauge}$, \ct{GAUGE_EMISSIVITY}, $\epsilon_{\rm gauge}$, and \ct{HEAT_TRANSFER_COEFFICIENT}, $h_{\rm c}$ (\unit{W/(m^2.K)}), can be specified using a \ct{PROP} line that is referenced by the \ct{DEVC} line. Their default values are \ct{TMPA}, 1, and 10, respectively. - Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). +Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). - \item \ct{'RADIOMETER'} Similar to a water-cooled heat flux gauge, except that this quantity measures only the net radiative component: - \be - \dq_{\rm radiometer}'' = \epsilon_{\rm gauge} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm gauge}^4 \right) - \ee - The \ct{GAUGE_TEMPERATURE} ($T_{\rm gauge}$, \unit{\degreeCelsius}) and \ct{GAUGE_EMISSIVITY} ($\epsilon_{\rm gauge}$) can be set on the \ct{PROP} line associated with the device if their values are different than ambient and 1, respectively. +\item \ct{'RADIOMETER'} Similar to a water-cooled heat flux gauge, except that this quantity measures only the net radiative component: +\be +\dq_{\rm radiometer}'' = \epsilon_{\rm gauge} \, \left( \dq_{\rm inc}'' - \sigma \, T_{\rm gauge}^4 \right) +\ee +The \ct{GAUGE_TEMPERATURE} ($T_{\rm gauge}$, \unit{\degreeCelsius}) and \ct{GAUGE_EMISSIVITY} ($\epsilon_{\rm gauge}$) can be set on the \ct{PROP} line associated with the device if their values are different than ambient and 1, respectively. - The quantity \ct{RADIOMETER} is based on the {\em ellipsoidal radiometer} concept first proposed by Nils-Erik Gunners and described in the Ref.~\cite{Murthy:JResNIST2003}. The intent of such a device is to eliminate the contribution of convection from the measurement. +The quantity \ct{RADIOMETER} is based on the {\em ellipsoidal radiometer} concept first proposed by Nils-Erik Gunners and described in the Ref.~\cite{Murthy:JResNIST2003}. The intent of such a device is to eliminate the contribution of convection from the measurement. - \item \ct{'RADIOMETER GAS'} The same as \ct{'RADIOMETER'} described above, except it can located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction, much like a heat flux gauge. The \ct{ORIENTATION} vector need not be normalized, as in the following: - \begin{lstlisting} - &DEVC ID='hf', QUANTITY='RADIOMETER GAS', XYZ=..., ORIENTATION=-1,1,0/ - \end{lstlisting} - Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). +\item \ct{'RADIOMETER GAS'} The same as \ct{'RADIOMETER'} described above, except it can located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction, much like a heat flux gauge. The \ct{ORIENTATION} vector need not be normalized, as in the following: +\begin{lstlisting} + &DEVC ID='hf', QUANTITY='RADIOMETER GAS', XYZ=..., + ORIENTATION=-1,1,0/ +\end{lstlisting} +Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). - \item \ct{'RADIATIVE HEAT FLUX GAS'} This output quantity is the same as \ct{'RADIATIVE HEAT FLUX'} described above, except it can located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction, much like a heat flux gauge. The \ct{ORIENTATION} vector need not be normalized, as in the following: - \begin{lstlisting} - &DEVC ID='hf', QUANTITY='RADIATIVE HEAT FLUX GAS', XYZ=..., ORIENTATION=-1,1,0/ - \end{lstlisting} - Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). +\item \ct{'RADIATIVE HEAT FLUX GAS'} This output quantity is the same as \ct{'RADIATIVE HEAT FLUX'} described above, except it can located anywhere within the computational domain and not just at a solid surface. It also has an arbitrary \ct{ORIENTATION} vector that points in any desired direction, much like a heat flux gauge. The \ct{ORIENTATION} vector need not be normalized, as in the following: +\begin{lstlisting} + &DEVC ID='hf', QUANTITY='RADIATIVE HEAT FLUX GAS', XYZ=..., ORIENTATION=-1,1,0/ +\end{lstlisting} +Note that the parameter \ct{SPATIAL_STATISTIC} is not appropriate for this quantity, meaning that you cannot integrate this quantity over a plane or volume. However, you can use the parameter \ct{POINTS} to create a one-dimensional array of these devices (see Sec.~\ref{info:line_file}). - \item \ct{'RADIANCE'} The radiation intensity at the point, $\bx$, and direction angle, $\bs$, where the summation is over all spectral bands: - \be - I(\bx,\bs) = \sum_{n=1}^N I_n(\bx,\bs) - \ee - This output quantity is specified in a similar way as \ct{'RADIATIVE HEAT FLUX GAS'} in that a surrogate target particle is placed at the point \ct{XYZ} with an \ct{ORIENTATION} vector pointing in any desired direction. - \begin{lstlisting} - &DEVC ID='rad2', QUANTITY='RADIANCE', XYZ=..., ORIENTATION=-1,0,0 / - \end{lstlisting} - The units for \ct{'RADIANCE'} are \unit{kW/m^2}/sr. +\item \ct{'RADIANCE'} The radiation intensity at the point, $\bx$, and direction angle, $\bs$, where the summation is over all spectral bands: +\be +I(\bx,\bs) = \sum_{n=1}^N I_n(\bx,\bs) +\ee +This output quantity is specified in a similar way as \ct{'RADIATIVE HEAT FLUX GAS'} in that a surrogate target particle is placed at the point \ct{XYZ} with an \ct{ORIENTATION} vector pointing in any desired direction. +\begin{lstlisting} + &DEVC ID='rad2', QUANTITY='RADIANCE', XYZ=..., ORIENTATION=-1,0,0 / +\end{lstlisting} +The units for \ct{'RADIANCE'} are \unit{kW/m^2}/sr. \end{itemize} @@ -10730,23 +10735,23 @@ \subsection{Adiabatic Surface Temperature} To output the AST at a single point on a solid surface, include a device as follows: \begin{lstlisting} - &DEVC ID='AST', XYZ=..., IOR=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE' / +&DEVC ID='AST', XYZ=..., IOR=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE' / \end{lstlisting} Note that \ct{IOR} specifies the orientation of the surface. To produce a contour plot of AST on all solid surfaces, include a boundary file as follows: \begin{lstlisting} - &BNDF QUANTITY='ADIABATIC SURFACE TEMPERATURE' / +&BNDF QUANTITY='ADIABATIC SURFACE TEMPERATURE' / \end{lstlisting} The usefulness of the AST is that it represents an effective exposure temperature that can be passed on to a more detailed model of the solid object. It provides the gas phase thermal boundary condition in a single quantity, and it is not affected by the uncertainty associated with the solid phase heat conduction model within FDS. Obviously, the objective in passing information to a more detailed model is to get a better prediction of the solid temperature (and ultimately its mechanical response) than FDS can provide. To reinforce this notion, you can output the adiabatic surface temperature even when there is no actual solid surface in your model using the following lines: \begin{lstlisting} - &DEVC ID='AST', XYZ=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE GAS', - ORIENTATION=0.707,0.0,0.707, PROP_ID='props' / - &PROP ID='props', EMISSIVITY=0.9, HEAT_TRANSFER_COEFFICIENT=10. / +&DEVC ID='AST', XYZ=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE GAS', +ORIENTATION=0.707,0.0,0.707, PROP_ID='props' / +&PROP ID='props', EMISSIVITY=0.9, HEAT_TRANSFER_COEFFICIENT=10. / \end{lstlisting} This output indicates the maximum achievable solid surface temperature at the given location \ct{XYZ} that is \emph{not} actually in the vicinity of any solid surface, facing in any direction as indicated by the \ct{ORIENTATION} vector. Note that you {\em must} set the \ct{EMISSIVITY} and \ct{HEAT_TRANSFER_COEFFICIENT} (\unit{W/(m^2.K)}) on the \ct{PROP} line because there is no actual solid surface from which to infer these values. In fact, FDS creates a Lagrangian particle that records the AST at the desired location. FDS creates an \ct{INIT} line to position the particle. If you want to output other quantities at this point that are related to the AST, you can create another \ct{DEVC} at the same location and use \ct{INIT_ID} to identify the \ct{DEVC} line for the \ct{ADIABATIC SURFACE TEMPERATURE}. For example, you can output the heat transfer coefficient used in calculating the AST as follows: \begin{lstlisting} - &DEVC ID='AST', XYZ=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE GAS', ... / - &DEVC ID='HTC', XYZ=..., QUANTITY='HEAT TRANSFER COEFFICIENT', INIT_ID='AST' / +&DEVC ID='AST', XYZ=..., QUANTITY='ADIABATIC SURFACE TEMPERATURE GAS', ... / +&DEVC ID='HTC', XYZ=..., QUANTITY='HEAT TRANSFER COEFFICIENT', INIT_ID='AST' / \end{lstlisting} \subsubsection{Example: AST vs. Surface Temperature} @@ -10755,10 +10760,10 @@ \subsubsection{Example: AST vs. Surface Temperature} The test case called \ct{adiabatic_surface_temperature.fds} in the \ct{Radiation} folder simulates a 0.1~mm steel plate being heated by a thermal plume. The plate is perfectly insulated (\ct{BACKING='INSULATED'} on the \ct{SURF} line) and its steady-state temperature should be equivalent to its adiabatic surface temperature or AST. The left plot of Fig.~\ref{adiabatic_surface_temperature_fig} shows the plate temperature rising toward the AST, much as an actual plate thermometer would. The right plot simply shows the AST calculated using the \ct{QUANTITY} \ct{'ADIABATIC SURFACE TEMPERATURE'} applied via a \ct{DEVC} at the plate surface, and the AST calculated using the \ct{QUANTITY} \ct{'ADIABATIC SURFACE TEMPERATURE GAS'} applied via a \ct{DEVC} positioned just in front of the plate. The idea of the latter device would be to record the AST even if the plate were not actually represented in the simulation. For these two recordings of the AST to be identical, the plate \ct{SURF}ace conditions and the AST-Gas \ct{PROP}erties must both include the same explicitly-defined \linebreak[4]\ct{HEAT_TRANSFER_COEFFICIENT} and \ct{EMISSIVITY}. \begin{figure}[ht] - \includegraphics[width=3in]{SCRIPT_FIGURES/adiabatic_surface_temperature} - \includegraphics[width=3in]{SCRIPT_FIGURES/adiabatic_surface_temperature_gas} - \caption[Results of the \ct{adiabatic_surface_temperature} test case]{(Left) Surface temperature vs. adiabatic surface temperature of an insulated plate. (Right) AST recorded with a device positioned on the plate surface (AST) and one just off the surface (AST-Gas).} - \label{adiabatic_surface_temperature_fig} +\includegraphics[width=3in]{SCRIPT_FIGURES/adiabatic_surface_temperature} +\includegraphics[width=3in]{SCRIPT_FIGURES/adiabatic_surface_temperature_gas} +\caption[Results of the \ct{adiabatic_surface_temperature} test case]{(Left) Surface temperature vs. adiabatic surface temperature of an insulated plate. (Right) AST recorded with a device positioned on the plate surface (AST) and one just off the surface (AST-Gas).} +\label{adiabatic_surface_temperature_fig} \end{figure} @@ -10769,7 +10774,7 @@ \subsection{Extracting Detailed Radiation Data} Data is saved within rectangular blocks of cells using one or more input lines of the form: \begin{lstlisting} - &RADF XB=..., I_STEP=2, J_STEP=3, K_STEP=1 / +&RADF XB=..., I_STEP=2, J_STEP=3, K_STEP=1 / \end{lstlisting} This line directs FDS to write out the radiation intensity, $I_{ijk}^l$ (\unit{W/(m^2.sr)}), for each cell with indices $ijk$ that is bounded by \ct{XB} and for each solid angle $l$. You can skip cells using the parameters \ct{I_STEP}, \ct{J_STEP}, and \ct{K_STEP}, each of which default to 1. The print outs are done every \ct{DT_RADF}~s. This parameter is listed on the \ct{DUMP} line. The time interval, \ct{DT_RADF}, has no default value and must be set. @@ -10778,44 +10783,44 @@ \subsection{Extracting Detailed Radiation Data} Each \ct{TIME} the intensities are written out, each cell in the designated block will list its temperature in degrees~K, a placeholder value of 0, and then the intensities at the \ct{NI} solid angles in units of \unit{W/(m^2.sr)}. \begin{figure}[p] - \begin{lstlisting} - NSTEPS - 2 - - TIMES - 0.00 - 10.00 - - NP - 3150 - - XYZ_INTENSITIES - 2.350 1.350 0.050 - . - . - . - - NI - 104 - - XYZ_DIRECTIONS - 0.138 0.138 0.981 - -0.138 0.138 0.981 - . - . - . - - TIME - 0.00 - - INTENSITIES - 293.15 0.00 133.17 133.17 133.17 133.17 133.17 ... - . - . - . - \end{lstlisting} - \caption[Format of \ct{RADF} output file]{Format of \ct{RADF} output file.} - \label{radf_file_format} +\begin{lstlisting} + NSTEPS + 2 + + TIMES + 0.00 + 10.00 + + NP + 3150 + + XYZ_INTENSITIES + 2.350 1.350 0.050 + . + . + . + + NI + 104 + + XYZ_DIRECTIONS + 0.138 0.138 0.981 + -0.138 0.138 0.981 + . + . + . + + TIME + 0.00 + + INTENSITIES + 293.15 0.00 133.17 133.17 133.17 133.17 133.17 ... + . + . + . +\end{lstlisting} +\caption[Format of \ct{RADF} output file]{Format of \ct{RADF} output file.} +\label{radf_file_format} \end{figure} @@ -10849,36 +10854,36 @@ \subsection{Detailed Spray Properties} The first function, $f_1(t)$, is used for the computation of various mean diameters, with associated properties defined using the following keywords on the \ct{PROP} line: \begin{itemize} - \item \ct{PDPA_M} is the exponent $m$ in the numerator. - \item \ct{PDPA_N} is the exponent $n$ in denominator. +\item \ct{PDPA_M} is the exponent $m$ in the numerator. +\item \ct{PDPA_N} is the exponent $n$ in denominator. \end{itemize} If $m=n$, the exponent $1/(m-n)$ is removed from the formula. The second function, $f_2(t)$, is used to compute mass and energy-related quantities without the diameter weighting. The concentrations are based on the sampling volume, $V$, defined by \ct{PDPA_RADIUS}. The options for the \ct{QUANTITY}, $\phi$, are listed in Table~\ref{tbl:pdpa}. \begin{table}[!ht] - \caption[Output quantities available for PDPA]{Output quantities available for PDPA.} - \label{tbl:pdpa} - \begin{center} - \begin{tabular}{|l|l|l|l|} - \hline - \ct{QUANTITY} & $\phi$ & $f$ & Units of $f$ \\ \hline - \ct{'DIAMETER'} (default) & 1 & $f_1$ & $\mu$m \\ - \ct{'ENTHALPY'} & $(4/3)\pi\rho_i r_i^3 \left(c_{p,i}(T_i)T_i-c_{p,i}(T_{\rm m})T_{\rm m} \right)$ & $f_2$ & \unit{kJ/m^3} \\ - \ct{'PARTICLE FLUX X'} & $(4/3)\pi\rho_i r_i^3 u_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ - \ct{'PARTICLE FLUX Y'} & $(4/3)\pi\rho_i r_i^3 v_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ - \ct{'PARTICLE FLUX Z'} & $(4/3)\pi\rho_i r_i^3 w_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ - \ct{'U-VELOCITY'} & $u_i$ & $f_1$ & m/s \\ - \ct{'V-VELOCITY'} & $v_i$ & $f_1$ & m/s \\ - \ct{'W-VELOCITY'} & $w_i$ & $f_1$ & m/s \\ - \ct{'VELOCITY'} & $(u_i^2+v_i^2+w_i^2)^{\ha}$ & $f_1$ & m/s \\ - \ct{'TEMPERATURE'} & $T_i$ & $f_1$ & \unit{\degreeCelsius} \\ - \ct{'MASS CONCENTRATION'} & $(4/3)\pi\rho_i r_i^3 $ & $f_2$ & \unit{kg/m^3} \\ - \ct{'NUMBER CONCENTRATION'}& 1 & $f_2$ & \unit{particles/m^3} \\ - \hline - \end{tabular} - \end{center} - ${}^*$ $T_{\rm m}$ is the melting temperature of the associated species. +\caption[Output quantities available for PDPA]{Output quantities available for PDPA.} +\label{tbl:pdpa} +\begin{center} + \begin{tabular}{|l|l|l|l|} + \hline + \ct{QUANTITY} & $\phi$ & $f$ & Units of $f$ \\ \hline + \ct{'DIAMETER'} (default) & 1 & $f_1$ & $\mu$m \\ + \ct{'ENTHALPY'} & $(4/3)\pi\rho_i r_i^3 \left(c_{p,i}(T_i)T_i-c_{p,i}(T_{\rm m})T_{\rm m} \right)$ & $f_2$ & \unit{kJ/m^3} \\ + \ct{'PARTICLE FLUX X'} & $(4/3)\pi\rho_i r_i^3 u_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ + \ct{'PARTICLE FLUX Y'} & $(4/3)\pi\rho_i r_i^3 v_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ + \ct{'PARTICLE FLUX Z'} & $(4/3)\pi\rho_i r_i^3 w_i$ & $f_2$ & \unit{kg/(m^2.s)} \\ + \ct{'U-VELOCITY'} & $u_i$ & $f_1$ & m/s \\ + \ct{'V-VELOCITY'} & $v_i$ & $f_1$ & m/s \\ + \ct{'W-VELOCITY'} & $w_i$ & $f_1$ & m/s \\ + \ct{'VELOCITY'} & $(u_i^2+v_i^2+w_i^2)^{\ha}$ & $f_1$ & m/s \\ + \ct{'TEMPERATURE'} & $T_i$ & $f_1$ & \unit{\degreeCelsius} \\ + \ct{'MASS CONCENTRATION'} & $(4/3)\pi\rho_i r_i^3 $ & $f_2$ & \unit{kg/m^3} \\ + \ct{'NUMBER CONCENTRATION'}& 1 & $f_2$ & \unit{particles/m^3} \\ + \hline + \end{tabular} +\end{center} +${}^*$ $T_{\rm m}$ is the melting temperature of the associated species. \end{table} It is also possible to output histograms of PDPA output quantities. When \ct{HISTOGRAM} is set to \ct{T} on the \ct{PROP} line, normalized histogram bin counts are output to a comma-separated value (.csv) file from all devices (\ct{DEVC}) associated with this \ct{PROP} line. The number of bins and the limits of the histogram are controlled by parameters on the \ct{PROP} line. The value used in creating the histogram is $D_i^m \; \phi$. Note that when the specified histogram \ct{QUANTITY} is \ct{'DIAMETER'}, the \ct{HISTOGRAM_LIMITS} must be given in meters, not microns. Values falling outside the histogram limits are included in the counts of the first and last bins. Cumulative distributions can be output by setting \ct{HISTOGRAM_CUMULATIVE=T} on the \ct{PROP} line. To output unnormalized counts or cumulative distribution, set \ct{HISTOGRAM_NORMALIZE} to \ct{F}. Note, however, that the counts correspond to the super droplets/particles, not the numerical ones. Due to the stratified sampling technique used (see Sec.~\ref{info:particle_size}), the counts are not necessarily integers. @@ -10887,52 +10892,52 @@ \subsection{Detailed Spray Properties} The properties of the PDPA device are defined using the following parameters on the \ct{PROP} line: \begin{itemize} - \item \ct{PART_ID} Name of the particle group to limit the computation to. Do not specify to account for all particles. - \item \ct{PDPA_START} $t_{\rm s}$, starting time of time integration in seconds. PDPA output is always a running average over time. As the spray simulation may contain some initial transient phase, it may be useful to specify the starting time of data collection. - \item \ct{PDPA_END} $t_{\rm e}$, ending time of time integration in seconds. - \item \ct{PDPA_INTEGRATE} A logical parameter for choosing between time integrated or instantaneous values. \ct{T} by default. - \item \ct{PDPA_RADIUS} Radius (m) of the sphere, centered at the device location, inside which the particles are monitored. - \item \ct{PDPA_NORMALIZE} Can be set \ct{F} to force $V = 1$ in the formula for $f_2(t)$. - \item \ct{QUANTITY} Specified on \ct{PROP} line for choosing the variable $\phi$. - \item \ct{HISTOGRAM_NBINS} Number of bins used for the histogram. +\item \ct{PART_ID} Name of the particle group to limit the computation to. Do not specify to account for all particles. +\item \ct{PDPA_START} $t_{\rm s}$, starting time of time integration in seconds. PDPA output is always a running average over time. As the spray simulation may contain some initial transient phase, it may be useful to specify the starting time of data collection. +\item \ct{PDPA_END} $t_{\rm e}$, ending time of time integration in seconds. +\item \ct{PDPA_INTEGRATE} A logical parameter for choosing between time integrated or instantaneous values. \ct{T} by default. +\item \ct{PDPA_RADIUS} Radius (m) of the sphere, centered at the device location, inside which the particles are monitored. +\item \ct{PDPA_NORMALIZE} Can be set \ct{F} to force $V = 1$ in the formula for $f_2(t)$. +\item \ct{QUANTITY} Specified on \ct{PROP} line for choosing the variable $\phi$. +\item \ct{HISTOGRAM_NBINS} Number of bins used for the histogram. \end{itemize} The following example is used to measure the Sauter mean diameter, $D_{32}$, of the particle type \ct{'water drops'}, starting from time 5~s. \begin{lstlisting} - &PROP ID='pdpa_d32' - PART_ID='water drops' - PDPA_M=3 - PDPA_N=2 - PDPA_RADIUS=0.01 - PDPA_START=5. / - &DEVC XYZ=0.0,0.0,1.0, QUANTITY='PDPA', PROP_ID='pdpa_d32' / +&PROP ID='pdpa_d32' +PART_ID='water drops' +PDPA_M=3 +PDPA_N=2 +PDPA_RADIUS=0.01 +PDPA_START=5. / +&DEVC XYZ=0.0,0.0,1.0, QUANTITY='PDPA', PROP_ID='pdpa_d32' / \end{lstlisting} The following example is used to write out a histogram of droplet size using 20 equally sized bins between 0 and 2000 $\mu$m. \begin{lstlisting} - &PROP ID='pdpa_d' - PART_ID='water drops' - QUANTITY='DIAMETER' - PDPA_RADIUS=0.01 - PDPA_START=0.0 - PDPA_M=1 - HISTOGRAM=T - HISTOGRAM_NBINS=20 - HISTOGRAM_LIMITS=0,2000E-6 / - &DEVC XYZ=0.0,0.0,1.0, QUANTITY='PDPA', PROP_ID='pdpa_d' / +&PROP ID='pdpa_d' +PART_ID='water drops' +QUANTITY='DIAMETER' +PDPA_RADIUS=0.01 +PDPA_START=0.0 +PDPA_M=1 +HISTOGRAM=T +HISTOGRAM_NBINS=20 +HISTOGRAM_LIMITS=0,2000E-6 / +&DEVC XYZ=0.0,0.0,1.0, QUANTITY='PDPA', PROP_ID='pdpa_d' / \end{lstlisting} The following example provides a normalized distribution of droplet volumes: \begin{lstlisting} - &PROP ID='Droplet volumetric distribution' - PART_ID='water-drops' - QUANTITY='DIAMETER' - PDPA_RADIUS=0.2 - PDPA_START=2.0 - PDPA_M=1 - PDPA_N=3 - HISTOGRAM=T - HISTOGRAM_NBINS=30 - HISTOGRAM_CUMULATIVE=F - HISTOGRAM_NORMALIZE=T - HISTOGRAM_LIMITS=0,500e-6 / +&PROP ID='Droplet volumetric distribution' +PART_ID='water-drops' +QUANTITY='DIAMETER' +PDPA_RADIUS=0.2 +PDPA_START=2.0 +PDPA_M=1 +PDPA_N=3 +HISTOGRAM=T +HISTOGRAM_NBINS=30 +HISTOGRAM_CUMULATIVE=F +HISTOGRAM_NORMALIZE=T +HISTOGRAM_LIMITS=0,500e-6 / \end{lstlisting} @@ -10990,8 +10995,8 @@ \subsubsection{Thermogravimetric Analysis (TGA) Output} Thermogravimetric Analysis or TGA is a bench-scale measurement in which a very small solid material sample is heated up at a constant rate. The results of a TGA measurement are presented in the form of a normalized mass and normalized mass loss rate. Analogous quantities can be output from FDS: \begin{eqnarray*} - \hbox{\ct{'NORMALIZED MASS'}} &=& \sum_\alpha m''_\alpha (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \hbox{(dimensionless)} \\ - \hbox{\ct{'NORMALIZED MASS LOSS RATE'}} &=& \sum_\alpha \dot{m}''_\alpha (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{1/s} \right) +\hbox{\ct{'NORMALIZED MASS'}} &=& \sum_\alpha m''_\alpha (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \hbox{(dimensionless)} \\ +\hbox{\ct{'NORMALIZED MASS LOSS RATE'}} &=& \sum_\alpha \dot{m}''_\alpha (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{1/s} \right) \end{eqnarray*} For both of these quantities, you can add a \ct{MATL_ID} to get the normalized mass or mass loss rate of a single component of the solid material, $m''_\alpha (t) / \sum_\alpha m''_\alpha (0)$. @@ -10999,7 +11004,7 @@ \subsubsection{Micro-Combustion Calorimetry (MCC) Output} Micro-Combustion Calorimetry or MCC is similar to TGA, except the vaporized gas is burned. The result is a normalized heat release rate: \begin{equation*} - \hbox{\ct{'NORMALIZED HEAT RELEASE RATE'}} = \dot{m}''_f (t) \, \Delta H \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{W/g} \right) +\hbox{\ct{'NORMALIZED HEAT RELEASE RATE'}} = \dot{m}''_f (t) \, \Delta H \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{W/g} \right) \end{equation*} Note that $\dot{m}''_{\rm F}$ is the mass flux of fuel and $\Delta H$ is the heat of combustion. @@ -11008,7 +11013,7 @@ \subsubsection{Differential Scanning Calorimetry (DSC) Output} Differential Scanning Calorimetry or DSC is a measurement of the rate of heat absorption by a small material sample under constant heating. The result is a normalized heat absorption rate: \begin{equation*} - \hbox{\ct{'NORMALIZED HEATING RATE'}} = \dot{q}''_{\rm c} (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{W/g} \right) +\hbox{\ct{'NORMALIZED HEATING RATE'}} = \dot{q}''_{\rm c} (t) \Big/ \sum_\alpha m''_\alpha (0) \quad \quad \left( \unit{W/g} \right) \end{equation*} Note that it is assumed that the sample is heated purely by convection, in which case $\dot{q}_{\rm c}''$ is the convective heat flux. @@ -11062,15 +11067,15 @@ \subsection{Fractional Effective Dose (FED) and Fractional Irritant Concentratio The lethal exposure doses~\cite{SFPE:Purser} are given in Table~\ref{tbl:FIC}. To include the effect of an irritant gas not listed in the table, you should specify $\mathrm{F_{FLD}}$ in ppm$\times$min using the \ct{FLD_LETHAL_DOSE} property of the corresponding \ct{SPEC} line. \begin{table}[ht] - \caption[Coefficients used for the computation of irritant effects of gases]{Coefficients used for the computation of irritant effects of gases.} - \label{tbl:FIC} - \begin{center} - \begin{tabular}{|l|l|l|l|l|l|l|l|} - \hline & HCl & HBr & HF & $\mathrm{SO_2}$ & $\mathrm{NO_2}$ & $\mathrm{C_3H_4O}$ & $\mathrm{CH_2O}$ \\ \hline \hline - F${}_\mathrm{FLD}$ (ppm $\times$ min) & 114000 & 114000 & 87000 & 12000 & 1900 & 4500 & 22500 \\ - F${}_\mathrm{FIC}$ (ppm) & 900 & 900 & 900 & 120 & 350 & 20 & 30 \\ \hline - \end{tabular} - \end{center} +\caption[Coefficients used for the computation of irritant effects of gases]{Coefficients used for the computation of irritant effects of gases.} +\label{tbl:FIC} +\begin{center} + \begin{tabular}{|l|l|l|l|l|l|l|l|} + \hline & HCl & HBr & HF & $\mathrm{SO_2}$ & $\mathrm{NO_2}$ & $\mathrm{C_3H_4O}$ & $\mathrm{CH_2O}$ \\ \hline \hline + F${}_\mathrm{FLD}$ (ppm $\times$ min) & 114000 & 114000 & 87000 & 12000 & 1900 & 4500 & 22500 \\ + F${}_\mathrm{FIC}$ (ppm) & 900 & 900 & 900 & 120 & 350 & 20 & 30 \\ \hline + \end{tabular} +\end{center} \end{table} The fraction of an incapacitating dose of low O${}_2$ hypoxia is calculated as @@ -11103,19 +11108,19 @@ \subsection{Fractional Effective Dose (FED) and Fractional Irritant Concentratio The output quantities \ct{FED} and \ct{FIC} may be displayed either at a point via a device: \begin{lstlisting} - &DEVC ID='whatever', XYZ=..., QUANTITY='FED', PROP_ID='Activity Level' / +&DEVC ID='whatever', XYZ=..., QUANTITY='FED', PROP_ID='Activity Level' / \end{lstlisting} You can also visualize \ct{FIC} as a contour slice. The output quantity \ct{FED} cannot be directly output as a contour slice, but it can be visualized as a slice in Smokeview if the slices for O$_2$, CO$_2$, and CO are defined in the same plane: \begin{lstlisting} - &SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE' / - &SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE' / - &SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN' / +&SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE' / +&SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE' / +&SLCF PBY=1.0, QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN' / \end{lstlisting} Notice that all slices are defined on the same plane. If these slices are present, Smokeview can compute the FED and display it as a contour slice. Also note that device output for FED can make use of an optional activity level defined on a property line: \begin{lstlisting} - &PROP ID='Activity Level', FED_ACTIVITY=3 / +&PROP ID='Activity Level', FED_ACTIVITY=3 / \end{lstlisting} The parameter \ct{FED_ACTIVITY} is an integer denoting that the person is at rest (1), doing light work (2), or doing heavy work (3). The default value is 2. @@ -11127,14 +11132,16 @@ \subsection{Histograms} It is sometimes useful to compile probability distribution functions (PDFs) or histograms of various output quantities. Suppose, for example, you are monitoring the temperature at two locations, and in addition to plots of the time histories, you want a PDF as well. Do something like following: \begin{lstlisting} - &DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T_1', PROP_ID='hist', HIDE_COORDINATES=F / - &DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T_2', PROP_ID='hist', HIDE_COORDINATES=T / - &PROP ID='hist' - HISTOGRAM=T - HISTOGRAM_NBINS=200 - HISTOGRAM_LIMITS=0,2000e-6 - HISTOGRAM_CUMULATIVE=F - HISTOGRAM_NORMALIZE=T / +&DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T_1', PROP_ID='hist', +HIDE_COORDINATES=F / +&DEVC XYZ=..., QUANTITY='TEMPERATURE', ID='T_2', PROP_ID='hist', +HIDE_COORDINATES=T / +&PROP ID='hist' +HISTOGRAM=T +HISTOGRAM_NBINS=200 +HISTOGRAM_LIMITS=0,2000e-6 +HISTOGRAM_CUMULATIVE=F +HISTOGRAM_NORMALIZE=T / \end{lstlisting} When \ct{HISTOGRAM} is set to \ct{T} on the \ct{PROP} line, normalized histogram bin counts are output to a comma-separated value file (\ct{CHID_hist.csv}). The parameter \ct{HISTOGRAM_NBINS} is the number of bins dividing the quantity range \ct{HISTOGRAM_LIMITS}. Values falling outside the histogram limits are included in the counts of the first and last bins. Cumulative distributions can be output by setting \linebreak[4]\ct{HISTOGRAM_CUMULATIVE=T}. To output unnormalized counts or a cumulative distribution, set \ct{HISTOGRAM_NORMALIZE=F}. @@ -11149,13 +11156,13 @@ \subsection{Complex Terrain and Related Quantities} The first method is via a ``slice'' file that conforms to the terrain. The following line illustrates how to do it: \begin{lstlisting} - &SLCF AGL_SLICE=10., QUANTITY='TEMPERATURE' / +&SLCF AGL_SLICE=10., QUANTITY='TEMPERATURE' / \end{lstlisting} Instead of specifying a plane on which to draw contours of gas temperature, you specify that the contour is to be located 10~m Above Ground Level (AGL). Adding \ct{VECTOR=T} adds the option of showing velocity vectors. The second method of visualizing data on complex terrain is via a boundary (\ct{BNDF}) file. Specify a solid phase output quantity as you normally would, for example: \begin{lstlisting} - &BNDF QUANTITY='WALL TEMPERATURE' / +&BNDF QUANTITY='WALL TEMPERATURE' / \end{lstlisting} You may also specify an image file (.png) to overlay on the terrain via \ct{TERRAIN_IMAGE} on the \ct{MISC} line. @@ -11169,9 +11176,9 @@ \subsection{Wind and the Pressure Coefficient} \ee $p_\infty$ is the ambient, or ``free stream'' pressure, and $\rho_\infty$ is the ambient density. The parameter $U$ is the free-stream wind speed, given as \ct{CHARACTERISTIC_VELOCITY} on the \ct{PROP} line \begin{lstlisting} - &BNDF QUANTITY='PRESSURE COEFFICIENT', PROP_ID='U' / - &DEVC ID='Cp', XYZ=..., IOR=2, QUANTITY='PRESSURE COEFFICIENT', PROP_ID='U' / - &PROP ID='U', CHARACTERISTIC_VELOCITY=3.4 / +&BNDF QUANTITY='PRESSURE COEFFICIENT', PROP_ID='U' / +&DEVC ID='Cp', XYZ=..., IOR=2, QUANTITY='PRESSURE COEFFICIENT', PROP_ID='U' / +&PROP ID='U', CHARACTERISTIC_VELOCITY=3.4 / \end{lstlisting} Thus, you can either paint values of $C_p$ at all surface points, or create a single time history of $C_p$ using a single device at a single point. @@ -11181,16 +11188,17 @@ \subsubsection{Wall pressure, viscous stresses and integrated forces} If you desire to output the pressure on a point in the wall or viscous stress along the stream-wise direction next to it, you can set devices in the form: \begin{lstlisting} - &DEVC ID='WP', XYZ=..., IOR=..., QUANTITY='WALL PRESSURE', SURF_ID='MySurf' / - &DEVC ID='WS', XYZ=..., IOR=..., QUANTITY='VISCOUS STRESS WALL ', SURF_ID='MySurf' / +&DEVC ID='WP', XYZ=..., IOR=..., QUANTITY='WALL PRESSURE', SURF_ID='MySurf' / +&DEVC ID='WS', XYZ=..., IOR=..., QUANTITY='VISCOUS STRESS WALL ', +SURF_ID='MySurf' / \end{lstlisting} The corresponding distributed forces at said point, projected in a specified direction, can be obtained adding the vector triplet \ct{FORCE_DIRECTION}. You can also integrate these distributed forces to obtain total pressure and viscous forces on a surface. As an example, if you want to compute total forces on faces with \linebreak[4]\ct{SURF_ID='MySurf'}, within a volume \ct{XB} in the $x$ direction, add: \begin{lstlisting} - &DEVC ID='PFx', XB=..., QUANTITY='WALL PRESSURE', SURF_ID='MySurf', - SPATIAL_STATISTIC='SURFACE INTEGRAL', FORCE_DIRECTION=1.,0.,0. / - &DEVC ID='VFx', XB=..., QUANTITY='VISCOUS STRESS WALL ', - SURF_ID='MySurf', SPATIAL_STATISTIC='SURFACE INTEGRAL', - FORCE_DIRECTION=1.,0.,0. / +&DEVC ID='PFx', XB=..., QUANTITY='WALL PRESSURE', SURF_ID='MySurf', +SPATIAL_STATISTIC='SURFACE INTEGRAL', FORCE_DIRECTION=1.,0.,0. / +&DEVC ID='VFx', XB=..., QUANTITY='VISCOUS STRESS WALL ', +SURF_ID='MySurf', SPATIAL_STATISTIC='SURFACE INTEGRAL', +FORCE_DIRECTION=1.,0.,0. / \end{lstlisting} @@ -11201,9 +11209,10 @@ \subsection{Dry Volume and Mass Fractions} you can specify the logical parameter \ct{DRY=T} (default is \ct{DRY=F}) on a \ct{DEVC} line that reports the \ct{'MASS FRACTION'} or \ct{'VOLUME FRACTION'} of a species. For example, the first line reports the actual volume fraction of CO, and the second line reports the output of a gas analyzer in a typical experiment. \begin{lstlisting} - &DEVC ID='wet CO', XYZ=..., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE'/ - &DEVC ID='dry CO', XYZ=..., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE', - DRY=T / +&DEVC ID='wet CO', XYZ=..., QUANTITY='VOLUME FRACTION', +SPEC_ID='CARBON MONOXIDE'/ +&DEVC ID='dry CO', XYZ=..., QUANTITY='VOLUME FRACTION', +SPEC_ID='CARBON MONOXIDE', DRY=T / \end{lstlisting} \ct{DRY} can also be specified on an \ct{SLCF} line that reports the \ct{'MASS FRACTION'} or \ct{'VOLUME FRACTION'} of a species as well as an \ct{HVAC} \ct{DUCT QUANTITY LIST} or \ct{NODE QUANTITY LIST}. For \ct{HVAC} line outputs, \ct{DRY} is an array corresponding to each entry on the \ct{QUANTITY LIST}. @@ -11213,13 +11222,14 @@ \subsection{Aerosol and Soot Concentration} Currently there are three different device options for outputting aerosol concentration (e.g., soot concentration) from FDS. It is important to recognize what each device is outputting so that the proper selection can be made. \begin{lstlisting} - &DEVC ID='MF_SOOT', XYZ=..., QUANTITY='MASS FRACTION', SPEC_ID='SOOT'/ - &DEVC ID='VF_SOOT', XYZ=..., QUANTITY='VOLUME FRACTION', SPEC_ID='SOOT'/ - &DEVC ID='SOOT_VF', XYZ=..., QUANTITY='AEROSOL VOLUME FRACTION', SPEC_ID='SOOT'/ +&DEVC ID='MF_SOOT', XYZ=..., QUANTITY='MASS FRACTION', SPEC_ID='SOOT'/ +&DEVC ID='VF_SOOT', XYZ=..., QUANTITY='VOLUME FRACTION', SPEC_ID='SOOT'/ +&DEVC ID='SOOT_VF', XYZ=..., QUANTITY='AEROSOL VOLUME FRACTION', +SPEC_ID='SOOT'/ \end{lstlisting} Specifying a \ct{DEVC} with a \ct{'MASS FRACTION'} and a \ct{SPEC_ID} of \ct{SOOT} will output the mass fraction of soot in the gas phase. The quantity \ct{'VOLUME FRACTION'} and a \ct{SPEC_ID} of \ct{SOOT} will output the volume fraction of soot in the gas phase treating the soot as if it were an ideal gas. The quantity \ct{'AEROSOL VOLUME FRACTION'} and a \ct{SPEC_ID} of \ct{'SOOT'} will output the volume fraction of soot as if it were a solid particle in the computational cell based on the following equation, \begin{equation}\label{eq:soot_volume_fraction} - f_v = \rho Y_{\rm a} / \rho_{\rm a} +f_v = \rho Y_{\rm a} / \rho_{\rm a} \end{equation} where $\rho$ is the local density, $Y_{\rm a}$ is the local mass fraction of the aerosol, and $\rho_{\rm a}$ is density of the aerosol defined using the \ct{SPEC} input \ct{DENSITY_SOLID}. The default value for \ct{DENSITY_SOLID} is \ct{SOOT_DENSITY} on \ct{MISC}, which defaults to 1800~\unit{kg/m^3} for soot~\cite{Slowik:AST2004}. @@ -11245,20 +11255,20 @@ \subsection{Computer Performance} There are several useful \ct{DEVC} \ct{QUANTITY}'s that can help monitor the performance of your computer: \begin{itemize} - \item \ct{'ACTUATED SPRINKLERS'} Number of activated sprinklers. - \item \ct{'CFL MAX'} The maximum value of the CFL (Courant-Friedrichs-Lewy) number, the primary constraint on the time step, for the mesh in which the device is located. By default, the time step is chosen so that the CFL number remains within the range of 0.8 to 1.0. If you want to see the CFL number in each grid cell, use a slice (\ct{SLCF}) file with \ct{QUANTITY='CFL'} and \ct{CELL_CENTERED=T}. - \item \ct{'CPU TIME'} Elapsed CPU time since the start of the simulation, in seconds. - \item \ct{'ITERATION'} Number of time steps completed at the given time of the simulation. - \item \ct{'NUMBER OF PARTICLES'} Number of Lagrangian particles for the \ct{MESH} in which the \ct{DEVC} is located. - \item \ct{'TIME STEP'} Duration of a simulation time step, $\delta t$, in seconds. - \item \ct{'VN MAX'} The maximum value of the VN (Von Neumann) number, a secondary constraint on the time step, for the mesh in which the device is located. By default, the time step is chosen so that the VN number remains below 1. If you want to see the VN number in each grid cell, use a slice (\ct{SLCF}) file with \ct{QUANTITY='VN'} and \ct{CELL_CENTERED=T}. - \item \ct{'WALL CLOCK TIME'} Elapsed wall clock time since the start of the simulation, in seconds. - \item \ct{'WALL CLOCK TIME ITERATIONS'} Elapsed wall clock time since the start of the time stepping loop, in seconds. - \item \ct{'RAM'} (Linux only) The memory used by the process that controls the mesh in which this device is located, in units of MB. This value is the equivalent of the value reported under the heading \ct{RES} when doing a \ct{top} command at the command prompt. Usually \ct{RES} is reported in kB, but it is converted to MB here. More precisely, \ct{'RAM'} is 1/1000 of the value of \ct{VmRSS} in the system file called \ct{/proc//status} where \ct{} is the process ID. +\item \ct{'ACTUATED SPRINKLERS'} Number of activated sprinklers. +\item \ct{'CFL MAX'} The maximum value of the CFL (Courant-Friedrichs-Lewy) number, the primary constraint on the time step, for the mesh in which the device is located. By default, the time step is chosen so that the CFL number remains within the range of 0.8 to 1.0. If you want to see the CFL number in each grid cell, use a slice (\ct{SLCF}) file with \ct{QUANTITY='CFL'} and \ct{CELL_CENTERED=T}. +\item \ct{'CPU TIME'} Elapsed CPU time since the start of the simulation, in seconds. +\item \ct{'ITERATION'} Number of time steps completed at the given time of the simulation. +\item \ct{'NUMBER OF PARTICLES'} Number of Lagrangian particles for the \ct{MESH} in which the \ct{DEVC} is located. +\item \ct{'TIME STEP'} Duration of a simulation time step, $\delta t$, in seconds. +\item \ct{'VN MAX'} The maximum value of the VN (Von Neumann) number, a secondary constraint on the time step, for the mesh in which the device is located. By default, the time step is chosen so that the VN number remains below 1. If you want to see the VN number in each grid cell, use a slice (\ct{SLCF}) file with \ct{QUANTITY='VN'} and \ct{CELL_CENTERED=T}. +\item \ct{'WALL CLOCK TIME'} Elapsed wall clock time since the start of the simulation, in seconds. +\item \ct{'WALL CLOCK TIME ITERATIONS'} Elapsed wall clock time since the start of the time stepping loop, in seconds. +\item \ct{'RAM'} (Linux only) The memory used by the process that controls the mesh in which this device is located, in units of MB. This value is the equivalent of the value reported under the heading \ct{RES} when doing a \ct{top} command at the command prompt. Usually \ct{RES} is reported in kB, but it is converted to MB here. More precisely, \ct{'RAM'} is 1/1000 of the value of \ct{VmRSS} in the system file called \ct{/proc//status} where \ct{} is the process ID. \end{itemize} In addition, the following flags can be useful in monitoring the performance of an MPI calculation. They are typically used for debugging. \begin{itemize} - \item \ct{VELOCITY_ERROR_FILE} If set to \ct{T} on the \ct{DUMP} line, this parameter will cause FDS to create a file with a time history of the maximum error associated with the normal component of velocity at solid or interpolated boundaries. See Sec.~\ref{tunnel_demo} for a description of this file. +\item \ct{VELOCITY_ERROR_FILE} If set to \ct{T} on the \ct{DUMP} line, this parameter will cause FDS to create a file with a time history of the maximum error associated with the normal component of velocity at solid or interpolated boundaries. See Sec.~\ref{tunnel_demo} for a description of this file. \end{itemize} @@ -11267,7 +11277,7 @@ \subsection{Output File Precision} There are several different output files that have the format of a comma-separated value (.csv) file. These files consist of real numbers in columns separated by commas. By default, the real numbers are formatted \begin{lstlisting} - -1.2345678E+123 +-1.2345678E+123 \end{lstlisting} To change the precision of the numbers, use \ct{SIG_FIGS} on the \ct{DUMP} line to indicate the number of significant figures in the mantissa (default is 8). Use \ct{SIG_FIGS_EXP} to change the number of digits in the exponent (default is 3). Keep in mind that the precision of real numbers used internally in an FDS calculation is approximately 12, equivalent to 8 byte (64 bit) or double precision following conventional Fortran rules. @@ -11277,17 +11287,17 @@ \subsection{Local Cell Reynolds Number} An estimate of the \emph{local cell Reynolds number} is given by the ratio of the cell size (LES filter width, $\Delta$) to an estimate of the local Kolmogorov scale, $\eta$ (see \cite{Pope:2000}). For a DNS, $\Delta/\eta$ should be less than or equal to one. The Kolmogorov scale is computed from its definition: \begin{equation} - \eta \equiv \left(\frac{(\mu/\rho)^3}{\varepsilon}\right)^{1/4} +\eta \equiv \left(\frac{(\mu/\rho)^3}{\varepsilon}\right)^{1/4} \end{equation} where $\mu$ is the molecular dynamic viscosity, $\rho$ is the density, and $\varepsilon$ is the kinetic energy dissipation rate, which requires modeling. In FDS, we assume the dissipation rate is locally equivalent to the production of subgrid-scale kinetic energy. This implies \begin{equation} - \varepsilon = (\mu_t/\rho)|\tilde{S}|^2 +\varepsilon = (\mu_t/\rho)|\tilde{S}|^2 \end{equation} where $\mu_t$ is the turbulent viscosity and $|\tilde{S}|$ is the filtered strain invariant (see FDS Technical Reference Guide). \begin{lstlisting} - &SLCF PBY=0, QUANTITY='CELL REYNOLDS NUMBER' / - &SLCF PBY=0, QUANTITY='KOLMOGOROV LENGTH SCALE' / - &SLCF PBY=0, QUANTITY='SUBGRID KINETIC ENERGY' / +&SLCF PBY=0, QUANTITY='CELL REYNOLDS NUMBER' / +&SLCF PBY=0, QUANTITY='KOLMOGOROV LENGTH SCALE' / +&SLCF PBY=0, QUANTITY='SUBGRID KINETIC ENERGY' / \end{lstlisting} \subsection{Near-Wall Grid Resolution} @@ -11295,7 +11305,7 @@ \subsection{Near-Wall Grid Resolution} Large-eddy simulations of boundary layer flows fall into two general categories: LES with near-wall resolution and LES with near-wall modeling (wall functions). FDS employs the latter. The wall models used in FDS are law of the wall \cite{Pope:2000}. For the wall models to function properly, the grid resolution near the wall should fall within a certain range of $y^+$, the non-dimensional distance from the wall expressed in viscous units. To check this, you may add a boundary file output as follows: \begin{lstlisting} - &BNDF QUANTITY='VISCOUS WALL UNITS' / +&BNDF QUANTITY='VISCOUS WALL UNITS' / \end{lstlisting} The value of $y^+$ reported is half (since the velocity lives at the cell face center) the wall-normal cell dimension ($\delta n$) divided by the maximum between the local viscous length scale, $\delta_\nu$ \cite{Pope:2000} or the sand grain roughness, $s$, for rough walls: \be @@ -11303,7 +11313,7 @@ \subsection{Near-Wall Grid Resolution} \ee where $\tau_{\rm w} = \mu\,\partial |\mathbf{u}|/\partial n$ is the viscous stress evaluated at the wall ($\tau_{\rm w}$ is computed by the wall function, $|\mathbf{u}|$ is taken as an estimate of the stream-wise velocity component near the wall); the quantity $u_\tau$ is the \emph{friction velocity}. The friction velocity may also be output in a boundary file or via a device attached to a wall. For example: \begin{lstlisting} - &DEVC XYZ=1,0,0, QUANTITY='FRICTION VELOCITY', IOR=3, ID='u_tau' / +&DEVC XYZ=1,0,0, QUANTITY='FRICTION VELOCITY', IOR=3, ID='u_tau' / \end{lstlisting} Wall functions for LES are still under development, but as a general guideline for efficiency reasons it is recommended that the first grid cell fall within the log layer. There is no penalty---other than computational time---for being more highly resolved. The viscous sublayer lies within $0 < y^+ < 5$. The transition region lies roughly between $5 < y^+ < 30$, a value $y^+=30$ would be considered highly resolved. The upper limit of the log region for statistically stationary boundary layers depends on the Reynolds number, and there are no hard rules for transient flows. Beyond $y^+=1000$ the first grid cell is likely to fall in the wake region of the boundary layer and may produce unreliable results. A reasonable target for practical engineering LES is $y^+ = {\cal O}(100)$. @@ -11314,62 +11324,59 @@ \subsection{Extinction} \subsection{Fire spread over a surface} \label{info:fire_spread_output} -In some cases it can be useful to output timings related to the spread of fire over a surface. For example, when modeling wildland fires the shape and spread of the fire front can be very important. For this reason, two specialized output quantities are available as boundary files (Sec.~\ref{info:BNDF}) or as measurements from devices places on a solid boundary (Sec.~\ref{info:DEVC2}). These are \ct{FIRE ARRIVAL TIME} and \ct{FIRE RESIDENCE TIME}. The \ct{FIRE ARRIVAL TIME} quantity outputs the time at which the gas-phase cell adjacent to the solid exceeds a threshold for heat release rate per volume (\ct{HRRPUV}) and the \ct{FIRE RESIDENCE TIME} gives the cumulative time over which the threshold is exceeded during the simulation. The chosen threshold is the same as used by smokeview for rendering \ct{HRRPUV}, as described in Sec.~\ref{info:SMOKE3D}. In the case of a level set simulation (Sec.~\ref{info:level_set}), the \ct{FIRE ARRIVAL TIME} can be computed directly from the level set value and the \ct{FIRE RESIDENCE TIME} comes from the spread-rate adjusted burning duration of the fuel, as described in Sec.~\ref{level_set_fuel_model_1}. These two quantities are cumulatively populated over time such that a full picture of the fire spread can be obtained from relatively infrequent outputs - theoretically only one snapshot at the end of the simulation is required. +In some cases it can be useful to output timings related to the spread of fire over a surface. For example, when modeling wildland fires the shape and spread of the fire front can be very important. For this reason, two specialized output quantities are available as boundary files (Sec.~\ref{info:BNDF}) or as measurements from devices placed on a solid boundary (Sec.~\ref{info:DEVC2}). These are \ct{FIRE ARRIVAL TIME} and \ct{FIRE RESIDENCE TIME}. The \ct{FIRE ARRIVAL TIME} quantity outputs the time at which the gas-phase cell adjacent to the solid exceeds a threshold for heat release rate per volume (\ct{HRRPUV}) and the \ct{FIRE RESIDENCE TIME} gives the cumulative time over which the threshold is exceeded during the simulation. The chosen threshold is the same as used by smokeview for rendering \ct{HRRPUV}, as described in Sec.~\ref{info:SMOKE3D}. In the case of a level set simulation (Sec.~\ref{info:level_set}), the \ct{FIRE ARRIVAL TIME} can be computed directly from the level set value and the \ct{FIRE RESIDENCE TIME} comes from the spread-rate adjusted burning duration of the fuel, as described in Sec.~\ref{level_set_fuel_model_1}. These two quantities are cumulatively populated over time such that a full picture of the fire spread can be obtained from relatively infrequent outputs - theoretically only one snapshot at the end of the simulation is required. For level set simulations another output is available, called \ct{LS SPREAD RATE}. This output stores the magnitude of the local spread rate calculated as the fire reaches a given point along the surface. The dependence on slope and local wind is related to the mode of level set which is activated (Sec.~\ref{info:level_set}). -\newpage - \section{Extracting Numbers from the Output Data Files} \label{info:fds2ascii} As part of the standard FDS-SMV distribution package, there is a short Fortran program called \ct{fds2ascii}. The source code is located in the GitHub repository, \ct{firemodels/fds}, in the directory, \ct{Utilities/fds2ascii}. To run the program, just type: \begin{lstlisting} - fds2ascii +fds2ascii \end{lstlisting} at the command prompt. You will be asked a series of questions about which type of output file to process, what time interval to time average the data, and so forth. A single file is produced with the name \ct{CHID_fds2ascii.csv}. A typical command line session looks like this: \begin{lstlisting} - >> fds2ascii - Enter Job ID string (CHID): - bucket_test_1 - What type of file to parse? - PL3D file? Enter 1 - SLCF file? Enter 2 - BNDF file? Enter 3 - 3 - Enter Sampling Factor for Data? - (1 for all data, 2 for every other point, etc.) - 1 - Limit the domain size? (y or n) - y - Enter min/max x, y and z - -5 5 -5 5 0 1 - 1 MESH 1, WALL TEMPERATURE - Enter starting and ending time for averaging (s) - 35 36 - Enter orientation: (plus or minus 1, 2 or 3) - 3 - Enter number of variables - 1 - Enter boundary file index for variable 1 - 1 - Enter output file name: - bucket_test_1_fds2ascii.csv - Writing to file... bucket_test_1_fds2ascii.csv +>> fds2ascii +Enter Job ID string (CHID): +bucket_test_1 +What type of file to parse? +PL3D file? Enter 1 +SLCF file? Enter 2 +BNDF file? Enter 3 +3 +Enter Sampling Factor for Data? +(1 for all data, 2 for every other point, etc.) +1 +Limit the domain size? (y or n) +y +Enter min/max x, y and z +-5 5 -5 5 0 1 +1 MESH 1, WALL TEMPERATURE +Enter starting and ending time for averaging (s) +35 36 +Enter orientation: (plus or minus 1, 2 or 3) +3 +Enter number of variables +1 +Enter boundary file index for variable 1 +1 +Enter output file name: +bucket_test_1_fds2ascii.csv +Writing to file... bucket_test_1_fds2ascii.csv \end{lstlisting} These commands tell \ct{fds2ascii} that you want to convert (binary) boundary file data into a text file. You want to sample every data point within the specified volume, you want only those surfaces that point upward (+3 orientation), you only want 1 variable (only one is listed anyway and its index is 1 -- that is just the number used to list the available files). The data will be time-averaged, and it will be output to a file listed at the end of the session. Here is a more detailed explanation of the questions: \begin{description} - \item[Enter Job ID string (CHID):] Enter the name of the job that you entered into the FDS input file under the parameter \ct{CHID}. Do not include the \ct{.fds} suffix. - \item[What type of file to parse?] The program can only read Plot3D (\ct{PL3D}), slice (\ct{SLCF}), or boundary (\ct{BNDF}) files. - \item[Enter Sampling Factor for Data:] If you want to print out every point, enter 1; every other point, enter 2; and so on. - \item[Domain selection:] The answer is a one or two letter code. If the first letter is \ct{y} or \ct{Y}, this means you want to print out a subset of the data for the entire domain. If \ct{n} or \ct{N}, you do not want to limit the data. The answer of \ct{z} or \ct{Z} is only for cases where you have an outdoor fire scenario over rough terrain, and you want to offset the $z$ coordinate so that it denotes height off the ground. If the second letter of the two letter code is \ct{a} or \ct{A}, this means that you want the program to \underline{a}utomatically select the appropriate files. If the first letter of the two letter code is \ct{y} or \ct{Y}, you will be prompted for 6 numbers denoting the minimum and maximum values of $x$, $y$, and $z$. - \item[Enter starting and ending time for averaging (s):] The slice and boundary file data will be time-averaged over the designated time interval. - \item[How many variables to read:] Enter the number of different output quantities that you want to include in your output file. - \item[Enter orientation: (plus or minus 1, 2 or 3):] For a boundary file, you must designate the orientation of the surfaces you want to print out. +1 means surfaces facing the positive $x$ direction, -2 means negative $y$, and so on. +\item[Enter Job ID string (CHID):] Enter the name of the job that you entered into the FDS input file under the parameter \ct{CHID}. Do not include the \ct{.fds} suffix. +\item[What type of file to parse?] The program can only read Plot3D (\ct{PL3D}), slice (\ct{SLCF}), or boundary (\ct{BNDF}) files. +\item[Enter Sampling Factor for Data:] If you want to print out every point, enter 1; every other point, enter 2; and so on. +\item[Domain selection:] The answer is a one or two letter code. If the first letter is \ct{y} or \ct{Y}, this means you want to print out a subset of the data for the entire domain. If \ct{n} or \ct{N}, you do not want to limit the data. The answer of \ct{z} or \ct{Z} is only for cases where you have an outdoor fire scenario over rough terrain, and you want to offset the $z$ coordinate so that it denotes height off the ground. If the second letter of the two letter code is \ct{a} or \ct{A}, this means that you want the program to \underline{a}utomatically select the appropriate files. If the first letter of the two letter code is \ct{y} or \ct{Y}, you will be prompted for 6 numbers denoting the minimum and maximum values of $x$, $y$, and $z$. +\item[Enter starting and ending time for averaging (s):] The slice and boundary file data will be time-averaged over the designated time interval. +\item[How many variables to read:] Enter the number of different output quantities that you want to include in your output file. +\item[Enter orientation: (plus or minus 1, 2 or 3):] For a boundary file, you must designate the orientation of the surfaces you want to print out. +1 means surfaces facing the positive $x$ direction, -2 means negative $y$, and so on. \end{description} -\newpage \section{Gas Phase Output Quantities} \label{info:gasoutputquantities} @@ -11378,132 +11385,132 @@ \section{Gas Phase Output Quantities} For those output quantities that require a species name via \ct{SPEC_ID}, the species implicitly defined when using the simple chemistry combustion model are \ct{'OXYGEN'}, \ct{'NITROGEN'}, \ct{'WATER VAPOR'}, and \ct{'CARBON DIOXIDE'}. If \ct{CO_YIELD}, \ct{SOOT_YIELD}, and/or \ct{HCN_YIELD} are specified on the \ct{REAC} line, then \ct{'CARBON MONOXIDE'}, \ct{'SOOT'}, and/or \ct{'HYDROGEN CYANIDE'} are included as output species. The fuel species can be output via the \ct{FUEL} specified on the \ct{REAC} line. As an example of how to use the species names, suppose you want to calculate the integrated mass flux of carbon monoxide through a horizontal plane, like the total amount entrained in a fire plume. Use a ``device'' as follows \begin{lstlisting} - &DEVC ID='CO_flow', XB=-5,5,-5,5,2,2, QUANTITY='MASS FLUX Z', - SPEC_ID='CARBON MONOXIDE', SPATIAL_STATISTIC='AREA INTEGRAL' / +&DEVC ID='CO_flow', XB=-5,5,-5,5,2,2, QUANTITY='MASS FLUX Z', +SPEC_ID='CARBON MONOXIDE', SPATIAL_STATISTIC='AREA INTEGRAL' / \end{lstlisting} The \ct{ID} is just a label in the output file. When an output quantity is related to a particular gas species or particle type, you must specify the appropriate \ct{SPEC_ID} or \ct{PART_ID} on the same input line. All output quantity names ought to be in single quotes. \begin{longtable}{@{\extracolsep{\fill}}|l|l|l|l|} - \caption[Gas phase output quantities]{Gas phase output quantities.} - \label{tab:gasoutputquantities} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endfirsthead - \caption[]{Gas phase output quantities (continued).} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endhead - \ct{ABSOLUTE PRESSURE} & Absolute pressure, $p=\overline{p}+\tilde{p}$ & Pa & D,I,P,S \\ \hline - \ct{ABSORPTION COEFFICIENT} & Section~\ref{info:RADI_Gas_and_Soot} & 1/m & D,I,P,S \\ \hline - \ct{ADVECTIVE MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{ADVECTIVE MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{ADVECTIVE MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{AEROSOL VOLUME FRACTION}$^1$ & Section~\ref{info:soot} & mol/mol & D,I,P,S \\ \hline - \ct{BACKGROUND PRESSURE} & Background pressure, $\bp$ & Pa & D,I,P,S \\ \hline - \ct{BULK DENSITY} & Section~\ref{info:BURN_AWAY} & \unit{kg/m^3} & D,I,P,S \\ \hline - \ct{CELL REYNOLDS NUMBER} & Section~\ref{info:meshquality} & & D,I,P,S \\ \hline - \ct{CELL U} & $(u_{i,j,k}+u_{i-1,j,k})/2$ & m/s & D,I,P,S \\ \hline - \ct{CELL V} & $(v_{i,j,k}+v_{i,j-1,k})/2$ & m/s & D,I,P,S \\ \hline - \ct{CELL W} & $(w_{i,j,k}+w_{i,j,k-1})/2$ & m/s & D,I,P,S \\ \hline - \ct{CFL} & Section~\ref{info:TIMING} & & D,I,P,S \\ \hline - \ct{CFL MAX} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{CHEMISTRY SUBITERATIONS} & Section~\ref{info:chem_integration} & & D,S \\ \hline - \ct{CHI_R} & Section~\ref{info:CHI_R} & & D,I,S \\ \hline - \ct{COMBUSTION EFFICIENCY} & $\delta t/\tau_{\mathrm{mix}}$ & & D,I,P,S \\ \hline - \ct{CONDUCTIVITY} & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & D,I,P,S \\ \hline - \ct{C_SMAG} & Smagorinsky coefficient & & D,I,P,S \\ \hline - \ct{DENSITY}$^1$ & Total or species density & \unit{kg/m^3} & D,I,P,S \\ \hline - \ct{DIFFUSIVE MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{DIFFUSIVE MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{DIFFUSIVE MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{DIFFUSIVITY}$^1$ & Section~\ref{info:diffusivity} & \unit{m^2/s} & D,I,P,S \\ \hline - \ct{DISSIPATION RATE} & $(\mu / \rho)\, S_{ij}S_{ij}$ & \unit{m^2/s^3} & D,I,P,S \\ \hline - \ct{DIVERGENCE} & $\nabla \cdot \bu$ & 1/s & D,I,P,S \\ \hline - \ct{EFFECTIVE FLAME TEMPERATURE} & Section~\ref{info:Flame_Temperature} & \unit{\degreeCelsius} & D,I,P,S \\ \hline - \ct{ENTHALPY} & Section~\ref{info:Enthalpy} & \unit{kJ/m^3} & D,I,P,S \\ \hline - \ct{ENTHALPY FLUX X} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline - \ct{ENTHALPY FLUX Y} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline - \ct{ENTHALPY FLUX Z} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline - \ct{EXTINCTION} & Section~\ref{info:extinct_out} & & D,S \\ \hline - \ct{EXTINCTION COEFFICIENT} & Section~\ref{info:visibility} & 1/m & D,I,P,S \\ \hline - \ct{F_X, F_Y, F_Z} & Momentum terms, $F_x$, $F_y$, $F_z$ & \unit{m/s^2} & D,I,P,S \\ \hline - \ct{H} & $\cH=|\bu|^2/2 + \tp/\rho $ & \unit{m^2/s^2} & D,I,P,S \\ \hline - \ct{HRRPUV} & $\dq'''$ & \unit{kW/m^3} & D,I,P,S \\ \hline - \ct{HRRPUV REAC}$^6$ & $\dq'''$ for \ct{REAC_ID} & \unit{kW/m^3} & D,S \\ \hline - \ct{IDEAL GAS PRESSURE} & $\bar{p}=\rho R T / \overline{W}$ & Pa & D,I,P,S \\ \hline - \ct{INTEGRATED INTENSITY} & $U=\int I \, \d \bs$ & \unit{kW/m^2} & D,I,P,S \\ \hline - \ct{INTERNAL ENERGY} & $\rho h - \bar{p}$ & \unit{kJ/m^3} & D,I,P,S \\ \hline - \ct{KINETIC ENERGY} & Staggered $(u^2+v^2+w^2)/2$ & \unit{m^2/s^2} & D,I,P,S \\ \hline - \ct{KOLMOGOROV LENGTH SCALE} & Section \ref{info:meshquality} & m & D,I,P,S \\ \hline - \ct{MACH NUMBER} & $|\bu|/\sqrt{(R/\overline{W}) T \gamma}$ & & S,D \\ \hline - \ct{MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{MASS FRACTION}$^1$ & $Y_\alpha$ & kg/kg & D,I,P,S \\ \hline - \ct{MAXIMUM VELOCITY ERROR} & Section \ref{info:PRES} & m/s & D \\ \hline - \ct{MIXING TIME} & Combustion mixing time, $\tau_{\rm mix}$ & s & D,I,P,S \\ \hline - \ct{MIXTURE FRACTION} & $Z$ & kg/kg & D,I,P,S \\ \hline - \ct{MOLECULAR CONDUCTIVITY} & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & D,I,P,S \\ \hline - \ct{MOLECULAR VISCOSITY} & Molecular viscosity, $\mu(\mathbf{Z},T)$ & \unit{kg/(m.s)} & D,I,P,S \\ \hline - \ct{OPTICAL DENSITY} & Section~\ref{info:visibility} & 1/m & D,I,P,S \\ \hline - \ct{ORIENTED VELOCITY}$^5$ & $(u,v,w)\cdot(n_x,n_y,n_z)$ & m/s & D \\ \hline - \ct{PRESSURE} & Perturbation pressure, $\tilde{p}$ & Pa & D,I,P,S \\ \hline - \ct{PRESSURE ITERATIONS} & Number of pressure iterations & & D \\ \hline - \ct{PRESSURE ZONE} & Section~\ref{info:ZONE} & & D,S \\ \hline - \ct{Q CRITERION} & $\frac{1}{2} [\mathrm{trace}(\nabla \mathbf{u})^2 - \mathrm{trace}( (\nabla \mathbf{u})^2)]$ & \unit{\per\second^2} & D,I,P,S \\ \hline - \ct{RADIAL VELOCITY} & $(u,v)\cdot(x,y)/\sqrt{x^2+y^2}$ & m/s & D,I,P,S \\ \hline - \ct{RADIATION ABSORPTION} & $\kappa U$ & \unit{kW/m^3} & D,I,P,S \\ \hline - \ct{RADIATION EMISSION} & $4 \kappa \sigma T^4$ & \unit{kW/m^3} & D,I,P,S \\ \hline - \ct{RADIATION LOSS} & $\nabla \cdot \bq_r''=\kappa (U-4 \sigma T^4)$ & \unit{kW/m^3} & D,I,P,S \\ \hline - \ct{RADIATIVE HEAT FLUX GAS} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & D \\ \hline - \ct{REAC SOURCE TERM}$^1$ & $\dot{m}_\alpha^{\prime\prime\prime}$ & \unit{kg/m^3} & D,I,P,S \\ \hline - \ct{RELATIVE HUMIDITY} & Section~\ref{info:simple_chemistry} & \% & D,I,P,S \\ \hline - \ct{RESOLVED KINETIC ENERGY} & $k_{res} = (\bar{u}^2+\bar{v}^2+\bar{w}^2)/2$ & \unit{m^2/s^2} &D,I,P,S \\ \hline - \ct{RTE SOURCE CORRECTION FACTOR} & Section~\ref{info:RTE_Source_Correction} & & D \\ \hline - \ct{SENSIBLE ENTHALPY} & Section~\ref{info:enthalpy} & \unit{kJ/m^3} & D,I,P,S \\ \hline - \ct{SPECIFIC ENTHALPY} & Section~\ref{info:enthalpy} & kJ/kg & D,I,P,S \\ \hline - \ct{SPECIFIC HEAT} & $c_p$ & \unit{kJ/(kg.K)} & D,I,P,S \\ \hline - \ct{SPECIFIC INTERNAL ENERGY} & $h - \bar{p}/\rho$ & kJ/kg & D,I,P,S \\ \hline - \ct{SPECIFIC SENSIBLE ENTHALPY} & Section~\ref{info:enthalpy} & kJ/kg & D,I,P,S \\ \hline - \ct{STRAIN RATE} & $2(S_{ij}S_{ij}-1/3(\nabla\cdot\mathbf{u})^2)$ & 1/s & D,I,P,S \\ \hline - \ct{STRAIN RATE X} & $\partial w/\partial y + \partial v/\partial z$ & 1/s & D,I,P,S \\ \hline - \ct{STRAIN RATE Y} & $\partial u/\partial z + \partial w/\partial x$ & 1/s & D,I,P,S \\ \hline - \ct{STRAIN RATE Z} & $\partial v/\partial x + \partial u/\partial y$ & 1/s & D,I,P,S \\ \hline - \ct{SUBGRID KINETIC ENERGY} & Section~\ref{info:meshquality} & \unit{m^2/s^2} & D,S \\ \hline - \ct{SUM LUMPED MASS FRACTIONS} & $\sum_i Z_i$ (should be 1) & & D,S \\ \hline - \ct{SUM PRIMITIVE MASS FRACTIONS} & $\sum_\alpha Y_\alpha$ (should be 1) & & D,S \\ \hline - \ct{TEMPERATURE} & Section~\ref{info:Flame_Temperature} & \unit{\degreeCelsius} & D,I,P,S \\ \hline - \ct{TOTAL MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{TOTAL MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{TOTAL MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline - \ct{U_LS, V_LS} & Velocity for level set spread~\ref{info:level_set}& m/s & D,I,P,S \\ \hline - \ct{U-VELOCITY} & Gas velocity component, $u$ & m/s & D,I,P,S \\ \hline - \ct{V-VELOCITY} & Gas velocity component, $v$ & m/s & D,I,P,S \\ \hline - \ct{W-VELOCITY} & Gas velocity component, $w$ & m/s & D,I,P,S \\ \hline - \ct{VELOCITY}$^3$ & Gas velocity & m/s & D,I,P,S \\ \hline - \ct{VISCOSITY} & Effective viscosity, $\mu + \mu_{\mathrm{t}}$ & \unit{kg/(m.s)} & D,I,P,S \\ \hline - \ct{VISIBILITY} & Section~\ref{info:visibility} & m & D,I,P,S \\ \hline - \ct{VN} & Section~\ref{info:TIMING} & & D,I,P,S \\ \hline - \ct{VN MAX} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{VORTICITY X} & $\partial w/\partial y - \partial v/\partial z$ & 1/s & D,I,P,S \\ \hline - \ct{VORTICITY Y} & $\partial u/\partial z - \partial w/\partial x$ & 1/s & D,I,P,S \\ \hline - \ct{VORTICITY Z} & $\partial v/\partial x - \partial u/\partial y$ & 1/s & D,I,P,S \\ \hline - \ct{VOLUME FRACTION}$^1$ & $X_\alpha$ & mol/mol & D,I,P,S \\ \hline +\caption[Gas phase output quantities]{Gas phase output quantities.} +\label{tab:gasoutputquantities} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endfirsthead +\caption[]{Gas phase output quantities (continued).} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endhead +\ct{ABSOLUTE PRESSURE} & Absolute pressure, $p=\overline{p}+\tilde{p}$ & Pa & D,I,P,S \\ \hline +\ct{ABSORPTION COEFFICIENT} & Section~\ref{info:RADI_Gas_and_Soot} & 1/m & D,I,P,S \\ \hline +\ct{ADVECTIVE MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{ADVECTIVE MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{ADVECTIVE MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{AEROSOL VOLUME FRACTION}$^1$ & Section~\ref{info:soot} & mol/mol & D,I,P,S \\ \hline +\ct{BACKGROUND PRESSURE} & Background pressure, $\bp$ & Pa & D,I,P,S \\ \hline +\ct{BULK DENSITY} & Section~\ref{info:BURN_AWAY} & \unit{kg/m^3} & D,I,P,S \\ \hline +\ct{CELL REYNOLDS NUMBER} & Section~\ref{info:meshquality} & & D,I,P,S \\ \hline +\ct{CELL U} & $(u_{i,j,k}+u_{i-1,j,k})/2$ & m/s & D,I,P,S \\ \hline +\ct{CELL V} & $(v_{i,j,k}+v_{i,j-1,k})/2$ & m/s & D,I,P,S \\ \hline +\ct{CELL W} & $(w_{i,j,k}+w_{i,j,k-1})/2$ & m/s & D,I,P,S \\ \hline +\ct{CFL} & Section~\ref{info:TIMING} & & D,I,P,S \\ \hline +\ct{CFL MAX} & Section~\ref{info:TIMING} & & D \\ \hline +\ct{CHEMISTRY SUBITERATIONS} & Section~\ref{info:chem_integration} & & D,S \\ \hline +\ct{CHI_R} & Section~\ref{info:CHI_R} & & D,I,S \\ \hline +\ct{COMBUSTION EFFICIENCY} & $\delta t/\tau_{\mathrm{mix}}$ & & D,I,P,S \\ \hline +\ct{CONDUCTIVITY} & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & D,I,P,S \\ \hline +\ct{C_SMAG} & Smagorinsky coefficient & & D,I,P,S \\ \hline +\ct{DENSITY}$^1$ & Total or species density & \unit{kg/m^3} & D,I,P,S \\ \hline +\ct{DIFFUSIVE MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{DIFFUSIVE MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{DIFFUSIVE MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{DIFFUSIVITY}$^1$ & Section~\ref{info:diffusivity} & \unit{m^2/s} & D,I,P,S \\ \hline +\ct{DISSIPATION RATE} & $(\mu / \rho)\, S_{ij}S_{ij}$ & \unit{m^2/s^3} & D,I,P,S \\ \hline +\ct{DIVERGENCE} & $\nabla \cdot \bu$ & 1/s & D,I,P,S \\ \hline +\ct{EFFECTIVE FLAME TEMPERATURE} & Section~\ref{info:Flame_Temperature} & \unit{\degreeCelsius} & D,I,P,S \\ \hline +\ct{ENTHALPY} & Section~\ref{info:Enthalpy} & \unit{kJ/m^3} & D,I,P,S \\ \hline +\ct{ENTHALPY FLUX X} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline +\ct{ENTHALPY FLUX Y} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline +\ct{ENTHALPY FLUX Z} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & D,I,P,S \\ \hline +\ct{EXTINCTION} & Section~\ref{info:extinct_out} & & D,S \\ \hline +\ct{EXTINCTION COEFFICIENT} & Section~\ref{info:visibility} & 1/m & D,I,P,S \\ \hline +\ct{F_X, F_Y, F_Z} & Momentum terms, $F_x$, $F_y$, $F_z$ & \unit{m/s^2} & D,I,P,S \\ \hline +\ct{H} & $\cH=|\bu|^2/2 + \tp/\rho $ & \unit{m^2/s^2} & D,I,P,S \\ \hline +\ct{HRRPUV} & $\dq'''$ & \unit{kW/m^3} & D,I,P,S \\ \hline +\ct{HRRPUV REAC}$^6$ & $\dq'''$ for \ct{REAC_ID} & \unit{kW/m^3} & D,S \\ \hline +\ct{IDEAL GAS PRESSURE} & $\bar{p}=\rho R T / \overline{W}$ & Pa & D,I,P,S \\ \hline +\ct{INTEGRATED INTENSITY} & $U=\int I \, \d \bs$ & \unit{kW/m^2} & D,I,P,S \\ \hline +\ct{INTERNAL ENERGY} & $\rho h - \bar{p}$ & \unit{kJ/m^3} & D,I,P,S \\ \hline +\ct{KINETIC ENERGY} & Staggered $(u^2+v^2+w^2)/2$ & \unit{m^2/s^2} & D,I,P,S \\ \hline +\ct{KOLMOGOROV LENGTH SCALE} & Section \ref{info:meshquality} & m & D,I,P,S \\ \hline +\ct{MACH NUMBER} & $|\bu|/\sqrt{(R/\overline{W}) T \gamma}$ & & S,D \\ \hline +\ct{MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{MASS FRACTION}$^1$ & $Y_\alpha$ & kg/kg & D,I,P,S \\ \hline +\ct{MAXIMUM VELOCITY ERROR} & Section \ref{pressure_solver} & m/s & D \\ \hline +\ct{MIXING TIME} & Combustion mixing time, $\tau_{\rm mix}$ & s & D,I,P,S \\ \hline +\ct{MIXTURE FRACTION} & $Z$ & kg/kg & D,I,P,S \\ \hline +\ct{MOLECULAR CONDUCTIVITY} & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & D,I,P,S \\ \hline +\ct{MOLECULAR VISCOSITY} & Molecular viscosity, $\mu(\mathbf{Z},T)$ & \unit{kg/(m.s)} & D,I,P,S \\ \hline +\ct{OPTICAL DENSITY} & Section~\ref{info:visibility} & 1/m & D,I,P,S \\ \hline +\ct{ORIENTED VELOCITY}$^5$ & $(u,v,w)\cdot(n_x,n_y,n_z)$ & m/s & D \\ \hline +\ct{PRESSURE} & Perturbation pressure, $\tilde{p}$ & Pa & D,I,P,S \\ \hline +\ct{PRESSURE ITERATIONS} & Section~\ref{pressure_solver} & & D \\ \hline +\ct{PRESSURE ZONE} & Section~\ref{info:ZONE} & & D,S \\ \hline +\ct{Q CRITERION} & $\frac{1}{2} [\mathrm{trace}(\nabla \mathbf{u})^2 - \mathrm{trace}( (\nabla \mathbf{u})^2)]$ & \unit{\per\second^2} & D,I,P,S \\ \hline +\ct{RADIAL VELOCITY} & $(u,v)\cdot(x,y)/\sqrt{x^2+y^2}$ & m/s & D,I,P,S \\ \hline +\ct{RADIATION ABSORPTION} & $\kappa U$ & \unit{kW/m^3} & D,I,P,S \\ \hline +\ct{RADIATION EMISSION} & $4 \kappa \sigma T^4$ & \unit{kW/m^3} & D,I,P,S \\ \hline +\ct{RADIATION LOSS} & $\nabla \cdot \bq_r''=\kappa (U-4 \sigma T^4)$ & \unit{kW/m^3} & D,I,P,S \\ \hline +\ct{RADIATIVE HEAT FLUX GAS} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & D \\ \hline +\ct{REAC SOURCE TERM}$^1$ & $\dot{m}_\alpha^{\prime\prime\prime}$ & \unit{kg/m^3} & D,I,P,S \\ \hline +\ct{RELATIVE HUMIDITY} & Relative humidity & \% & D,I,P,S \\ \hline +\ct{RESOLVED KINETIC ENERGY} & $k_{res} = (\bar{u}^2+\bar{v}^2+\bar{w}^2)/2$ & \unit{m^2/s^2} &D,I,P,S \\ \hline +\ct{RTE SOURCE CORRECTION FACTOR} & Section~\ref{info:RTE_Source_Correction} & & D \\ \hline +\ct{SENSIBLE ENTHALPY} & Section~\ref{info:enthalpy} & \unit{kJ/m^3} & D,I,P,S \\ \hline +\ct{SPECIFIC ENTHALPY} & Section~\ref{info:enthalpy} & kJ/kg & D,I,P,S \\ \hline +\ct{SPECIFIC HEAT} & $c_p$ & \unit{kJ/(kg.K)} & D,I,P,S \\ \hline +\ct{SPECIFIC INTERNAL ENERGY} & $h - \bar{p}/\rho$ & kJ/kg & D,I,P,S \\ \hline +\ct{SPECIFIC SENSIBLE ENTHALPY} & Section~\ref{info:enthalpy} & kJ/kg & D,I,P,S \\ \hline +\ct{STRAIN RATE} & $2(S_{ij}S_{ij}-1/3(\nabla\cdot\mathbf{u})^2)$ & 1/s & D,I,P,S \\ \hline +\ct{STRAIN RATE X} & $\partial w/\partial y + \partial v/\partial z$ & 1/s & D,I,P,S \\ \hline +\ct{STRAIN RATE Y} & $\partial u/\partial z + \partial w/\partial x$ & 1/s & D,I,P,S \\ \hline +\ct{STRAIN RATE Z} & $\partial v/\partial x + \partial u/\partial y$ & 1/s & D,I,P,S \\ \hline +\ct{SUBGRID KINETIC ENERGY} & Section~\ref{info:meshquality} & \unit{m^2/s^2} & D,S \\ \hline +\ct{SUM LUMPED MASS FRACTIONS} & $\sum_i Z_i$ (should be 1) & & D,S \\ \hline +\ct{SUM PRIMITIVE MASS FRACTIONS} & $\sum_\alpha Y_\alpha$ (should be 1) & & D,S \\ \hline +\ct{TEMPERATURE} & Section~\ref{info:Flame_Temperature} & \unit{\degreeCelsius} & D,I,P,S \\ \hline +\ct{TOTAL MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{TOTAL MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{TOTAL MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & \unit{kg/(m^2.s)} & D,I,P,S \\ \hline +\ct{U_LS, V_LS} & Velocity for level set spread~\ref{info:level_set}& m/s & D,I,P,S \\ \hline +\ct{U-VELOCITY} & Gas velocity component, $u$ & m/s & D,I,P,S \\ \hline +\ct{V-VELOCITY} & Gas velocity component, $v$ & m/s & D,I,P,S \\ \hline +\ct{W-VELOCITY} & Gas velocity component, $w$ & m/s & D,I,P,S \\ \hline +\ct{VELOCITY}$^3$ & Gas velocity & m/s & D,I,P,S \\ \hline +\ct{VISCOSITY} & Effective viscosity, $\mu + \mu_{\mathrm{t}}$ & \unit{kg/(m.s)} & D,I,P,S \\ \hline +\ct{VISIBILITY} & Section~\ref{info:visibility} & m & D,I,P,S \\ \hline +\ct{VN} & Section~\ref{info:TIMING} & & D,I,P,S \\ \hline +\ct{VN MAX} & Section~\ref{info:TIMING} & & D \\ \hline +\ct{VORTICITY X} & $\partial w/\partial y - \partial v/\partial z$ & 1/s & D,I,P,S \\ \hline +\ct{VORTICITY Y} & $\partial u/\partial z - \partial w/\partial x$ & 1/s & D,I,P,S \\ \hline +\ct{VORTICITY Z} & $\partial v/\partial x - \partial u/\partial y$ & 1/s & D,I,P,S \\ \hline +\ct{VOLUME FRACTION}$^1$ & $X_\alpha$ & mol/mol & D,I,P,S \\ \hline \end{longtable} \noindent \begin{tabbing} - $^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ - \> Omit \ct{SPEC_ID} for total flux. \\ - \> Do not use for \ct{MIXTURE FRACTION}. \\ - $^2$ \> Requires the specification of a particle name using \ct{PART_ID}. \\ - $^3$ \> Add \ct{VELO_INDEX=1} to the input line if you want to multiply the velocity by the sign of $u$. \\ - \> Use the indices 2 and 3 for $v$ and $w$, respectively.\\ - $^4$ \> Allows for an optional \ct{MATL_ID}.\\ - $^5$ \> Requires an \ct{ORIENTATION} on the \ct{DEVC} line. \\ - $^6$ \> Requires \ct{REAC_ID}. \\ +$^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ +\> Omit \ct{SPEC_ID} for total flux. \\ +\> Do not use for \ct{MIXTURE FRACTION}. \\ +$^2$ \> Requires the specification of a particle name using \ct{PART_ID}. \\ +$^3$ \> Add \ct{VELO_INDEX=1} to the input line if you want to multiply the velocity by the sign of $u$. \\ +\> Use the indices 2 and 3 for $v$ and $w$, respectively.\\ +$^4$ \> Allows for an optional \ct{MATL_ID}.\\ +$^5$ \> Requires an \ct{ORIENTATION} on the \ct{DEVC} line. \\ +$^6$ \> Requires \ct{REAC_ID}. \\ \end{tabbing} @@ -11515,87 +11522,87 @@ \section{Solid Phase Output Quantities} Table~\ref{tab:solidoutputquantities} below lists solid phase output quantities. Appropriate sections are cited. The definition of mathematical symbols can be found in Volume~1 of the FDS Technical Reference Guide~\cite{FDS_Math_Guide}. The File Type ``B'' refers to a boundary file, ``D'' refers to the device file, \ct{CHID_devc.csv}, and ``Pr'' refers to the profile file, \ct{CHID_prof.csv}. \begin{longtable}{@{\extracolsep{\fill}}|l|l|l|l|} - \caption[Solid phase output quantities]{Solid phase output quantities.} - \label{tab:solidoutputquantities} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endfirsthead - \caption[]{Solid phase output quantities (continued).} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endhead - \ct{ADIABATIC SURFACE TEMPERATURE} & Section~\ref{info:AST} & \unit{\degreeCelsius} & B,D \\ \hline - \ct{AMPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline - \ct{AMPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline - \ct{BACK WALL TEMPERATURE} & Section~\ref{info:BACK} & \unit{\degreeCelsius} & B,D \\ \hline - \ct{BLOWING CORRECTION} & Section~\ref{info:blowing} & & B,D \\ \hline - \ct{BURNING RATE} & Mass loss rate of fuel & \unit{kg/(m^2.s)} & B,D \\ \hline - \ct{CONDENSATION HEAT FLUX} & Section~\ref{info:condensation} & \unit{kW/m^2} & B,D \\ \hline - \ct{CONVECTIVE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{CONVECTIVE HEAT FLUX GAUGE} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{CONVECTIVE HEAT TRANSFER REGIME} & Section \ref{info:convection} & & B,D \\ \hline - \ct{CPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline - \ct{CPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline - \ct{DEPOSITION VELOCITY} & Section~\ref{info:deposition} & m/s & B,D \\ \hline - \ct{FRICTION VELOCITY} & Section~\ref{info:yplus} & m/s & B,D \\ \hline - \ct{GAUGE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{ENTHALPY FLUX WALL} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{TOTAL HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{EMISSIVITY} & Surface emissivity & & B,D \\ \hline - \ct{FIRE ARRIVAL TIME} & Section \ref{info:fire_spread_output} & \unit{s} & B,D \\ \hline - \ct{FIRE RESIDENCE TIME} & Section \ref{info:fire_spread_output} & \unit{s} & B,D \\ \hline - \ct{LS SPREAD RATE} & Section \ref{info:fire_spread_output} & \unit{m/s} & B,D \\ \hline - \ct{GAS DENSITY} & Gas Density near wall & \unit{kg/m^3} & B,D \\ \hline - \ct{GAS TEMPERATURE} & Gas Temperature near wall & \unit{\degreeCelsius} & B,D \\ \hline - \ct{HEAT TRANSFER COEFFICIENT} & Section \ref{info:convection} & \unit{W/(m^2.K)} & B,D \\ \hline - \ct{HRRPUA} & $\dq''=\dot{m} \Delta H$ & \unit{kW/m^2} & B,D \\ \hline - \ct{INCIDENT HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{INSIDE WALL TEMPERATURE} & Section~\ref{info:DEPTH} & \unit{\degreeCelsius} & D,Pr \\ \hline - \ct{INSIDE WALL DEPTH} & Section~\ref{info:DEPTH} & m & D,Pr \\ \hline - \ct{LAYER DIVIDE DEPTH} & Section~\ref{info:LAYER_DIVIDE} & m & B,D \\ \hline - \ct{MASS FLUX}$^{1,4}$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline - \ct{MASS FLUX WALL}$^1$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline - \ct{MPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline - \ct{MPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline - \ct{NORMAL VELOCITY} & Wall normal velocity & m/s & B,D \\ \hline - \ct{NORMALIZED HEATING RATE} & Section~\ref{info:thermal_analysis_outputs} & W/g & D \\ \hline - \ct{NORMALIZED HEAT RELEASE RATE} & Section~\ref{info:thermal_analysis_outputs} & W/g & D \\ \hline - \ct{NORMALIZED MASS}$^4$ & Section~\ref{info:thermal_analysis_outputs} & & D \\ \hline - \ct{NORMALIZED MASS LOSS RATE}$^4$ & Section~\ref{info:thermal_analysis_outputs} & 1/s & D \\ \hline - \ct{OXIDATIVE HRRPUA} & Section~\ref{info:reaction_rates} & \unit{kW/m^2} & B,D \\ \hline - \ct{PRESSURE COEFFICIENT} & Section~\ref{info:pressure_coefficient} & & B,D \\ \hline - \ct{RADIATIVE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{RADIOMETER} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline - \ct{REFERENCE_HEAT_FLUX} & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & B,D \\ \hline - \ct{SOLID CONDUCTIVITY}$^4$ & Section~\ref{info:DEPTH} & \unit{W/(m.K)} & D,Pr \\ \hline - \ct{SOLID DENSITY}$^4$ & Section~\ref{info:DEPTH} & \unit{kg/m^3} & D,Pr \\ \hline - \ct{SOLID ENTHALPY}$^4$ & Section~\ref{info:DEPTH} & \unit{kJ/m^3} & D,Pr \\ \hline - \ct{SOLID MASS FRACTION}$^5$ & Section~\ref{info:DEPTH} & \unit{kg/kg} & D,Pr \\ \hline - \ct{SOLID SPECIFIC HEAT}$^4$ & Section~\ref{info:DEPTH} & \unit{kJ/(kg.K)} & D,Pr \\ \hline - \ct{SUBSTEPS} & Section~\ref{info:solid_phase_stability} & & B,D \\ \hline - \ct{SURFACE DENSITY}$^4$ & Section~\ref{info:more_wall_outputs} & \unit{kg/m^2)} & B,D \\ \hline - \ct{SURFACE DEPOSITION}$^1$ & Section~\ref{info:deposition} & \unit{kg/m^2)} & B,D \\ \hline - \ct{TANGENTIAL VELOCITY} & Section~\ref{info:convection} & m/s & B,D \\ \hline - \ct{TOTAL MASS FLUX WALL}$^1$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline - \ct{VELOCITY ERROR} & Section~\ref{info:PRES} & m/s & B,D \\ \hline - \ct{VISCOUS STRESS WALL} & Section~\ref{info:distributed_forces} & Pa & B,D \\ \hline - \ct{VISCOUS WALL UNITS} & Section~\ref{info:yplus} & & B,D \\ \hline - \ct{WALL ENTHALPY} & $\int \rho_s c_s T \,\d V_s$ & kJ & B,D \\ \hline - \ct{WALL PRESSURE} & Section~\ref{info:distributed_forces} & Pa & B,D \\ \hline - \ct{WALL TEMPERATURE} & Surface temperature & \unit{\degreeCelsius} & B,D \\ \hline - \ct{WALL THICKNESS} & Section~\ref{info:more_wall_outputs} & m & B,D \\ \hline - \ct{WALL VISCOSITY} & Near-wall viscosity, $\mu_w$ & \unit{kg/(m.s)} & B,D \\ \hline +\caption[Solid phase output quantities]{Solid phase output quantities.} +\label{tab:solidoutputquantities} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endfirsthead +\caption[]{Solid phase output quantities (continued).} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endhead +\ct{ADIABATIC SURFACE TEMPERATURE} & Section~\ref{info:AST} & \unit{\degreeCelsius} & B,D \\ \hline +\ct{AMPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline +\ct{AMPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline +\ct{BACK WALL TEMPERATURE} & Section~\ref{info:BACK} & \unit{\degreeCelsius} & B,D \\ \hline +\ct{BLOWING CORRECTION} & Section~\ref{info:blowing} & & B,D \\ \hline +\ct{BURNING RATE} & Mass loss rate of fuel & \unit{kg/(m^2.s)} & B,D \\ \hline +\ct{CONDENSATION HEAT FLUX} & Section~\ref{info:condensation} & \unit{kW/m^2} & B,D \\ \hline +\ct{CONVECTIVE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{CONVECTIVE HEAT FLUX GAUGE} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{CONVECTIVE HEAT TRANSFER REGIME} & Section \ref{info:convection} & & B,D \\ \hline +\ct{CPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline +\ct{CPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline +\ct{DEPOSITION VELOCITY} & Section~\ref{info:deposition} & m/s & B,D \\ \hline +\ct{FRICTION VELOCITY} & Section~\ref{info:yplus} & m/s & B,D \\ \hline +\ct{GAUGE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{ENTHALPY FLUX WALL} & Section~\ref{info:enthalpy_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{TOTAL HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{EMISSIVITY} & Surface emissivity & & B,D \\ \hline +\ct{FIRE ARRIVAL TIME} & Section \ref{info:fire_spread_output} & \unit{s} & B,D \\ \hline +\ct{FIRE RESIDENCE TIME} & Section \ref{info:fire_spread_output} & \unit{s} & B,D \\ \hline +\ct{LS SPREAD RATE} & Section \ref{info:fire_spread_output} & \unit{m/s} & B,D \\ \hline +\ct{GAS DENSITY} & Gas Density near wall & \unit{kg/m^3} & B,D \\ \hline +\ct{GAS TEMPERATURE} & Gas Temperature near wall & \unit{\degreeCelsius} & B,D \\ \hline +\ct{HEAT TRANSFER COEFFICIENT} & Section \ref{info:convection} & \unit{W/(m^2.K)} & B,D \\ \hline +\ct{HRRPUA} & $\dq''=\dot{m} \Delta H$ & \unit{kW/m^2} & B,D \\ \hline +\ct{INCIDENT HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{INSIDE WALL TEMPERATURE} & Section~\ref{info:DEPTH} & \unit{\degreeCelsius} & D,Pr \\ \hline +\ct{INSIDE WALL DEPTH} & Section~\ref{info:DEPTH} & m & D,Pr \\ \hline +\ct{LAYER DIVIDE DEPTH} & Section~\ref{info:LAYER_DIVIDE} & m & B,D \\ \hline +\ct{MASS FLUX}$^{1,4}$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline +\ct{MASS FLUX WALL}$^1$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline +\ct{MPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline +\ct{MPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kg/m^2)} & B,D \\ \hline +\ct{NORMAL VELOCITY} & Wall normal velocity & m/s & B,D \\ \hline +\ct{NORMALIZED HEATING RATE} & Section~\ref{info:thermal_analysis_outputs} & W/g & D \\ \hline +\ct{NORMALIZED HEAT RELEASE RATE} & Section~\ref{info:thermal_analysis_outputs} & W/g & D \\ \hline +\ct{NORMALIZED MASS}$^4$ & Section~\ref{info:thermal_analysis_outputs} & & D \\ \hline +\ct{NORMALIZED MASS LOSS RATE}$^4$ & Section~\ref{info:thermal_analysis_outputs} & 1/s & D \\ \hline +\ct{OXIDATIVE HRRPUA} & Section~\ref{info:reaction_rates} & \unit{kW/m^2} & B,D \\ \hline +\ct{PRESSURE COEFFICIENT} & Section~\ref{info:pressure_coefficient} & & B,D \\ \hline +\ct{RADIATIVE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{RADIOMETER} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline +\ct{REFERENCE_HEAT_FLUX} & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & B,D \\ \hline +\ct{SOLID CONDUCTIVITY}$^4$ & Section~\ref{info:DEPTH} & \unit{W/(m.K)} & D,Pr \\ \hline +\ct{SOLID DENSITY}$^4$ & Section~\ref{info:DEPTH} & \unit{kg/m^3} & D,Pr \\ \hline +\ct{SOLID ENTHALPY}$^4$ & Section~\ref{info:DEPTH} & \unit{kJ/m^3} & D,Pr \\ \hline +\ct{SOLID MASS FRACTION}$^5$ & Section~\ref{info:DEPTH} & \unit{kg/kg} & D,Pr \\ \hline +\ct{SOLID SPECIFIC HEAT}$^4$ & Section~\ref{info:DEPTH} & \unit{kJ/(kg.K)} & D,Pr \\ \hline +\ct{SUBSTEPS} & Section~\ref{info:solid_phase_stability} & & B,D \\ \hline +\ct{SURFACE DENSITY}$^4$ & Section~\ref{info:more_wall_outputs} & \unit{kg/m^2)} & B,D \\ \hline +\ct{SURFACE DEPOSITION}$^1$ & Section~\ref{info:deposition} & \unit{kg/m^2)} & B,D \\ \hline +\ct{TANGENTIAL VELOCITY} & Tangential velocity in the wall adjacent cell & m/s & B,D \\ \hline +\ct{TOTAL MASS FLUX WALL}$^1$ & Section~\ref{info:wallflux} & \unit{kg/(m^2.s)} & B,D \\ \hline +\ct{VELOCITY ERROR} & Section~\ref{info:PRES} & m/s & B,D \\ \hline +\ct{VISCOUS STRESS WALL} & Section~\ref{info:distributed_forces} & Pa & B,D \\ \hline +\ct{VISCOUS WALL UNITS} & Section~\ref{info:yplus} & & B,D \\ \hline +\ct{WALL ENTHALPY} & $\int \rho_s c_s T \,\d V_s$ & kJ & B,D \\ \hline +\ct{WALL PRESSURE} & Section~\ref{info:distributed_forces} & Pa & B,D \\ \hline +\ct{WALL TEMPERATURE} & Surface temperature & \unit{\degreeCelsius} & B,D \\ \hline +\ct{WALL THICKNESS} & Section~\ref{info:more_wall_outputs} & m & B,D \\ \hline +\ct{WALL VISCOSITY} & Near-wall viscosity, $\mu_w$ & \unit{kg/(m.s)} & B,D \\ \hline \end{longtable} \noindent \begin{tabbing} - $^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ - $^2$ \> Requires the specification of a particle name using \ct{PART_ID}. \\ - $^3$ \> Requires specification of an additional scalar using \ct{QUANTITY2}. \\ - $^4$ \> Allows for an optional \ct{MATL_ID}. \\ - $^5$ \> Requires a \ct{MATL_ID}. \\ +$^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ +$^2$ \> Requires the specification of a particle name using \ct{PART_ID}. \\ +$^3$ \> Requires specification of an additional scalar using \ct{QUANTITY2}. \\ +$^4$ \> Allows for an optional \ct{MATL_ID}. \\ +$^5$ \> Requires a \ct{MATL_ID}. \\ \end{tabbing} @@ -11607,47 +11614,47 @@ \section{Device, Control, and Other Miscellaneous Output Quantities} Table~\ref{tab:deviceoutputquantities} below lists output quantities associated with devices and controls, as well as other miscellaneous output. The File Type ``D'' refers to the device output file \ct{CHID_devc.csv}. The File Type ``S'' refers to a contour or ``slice'' file. \begin{xltabular}{\textwidth}{|p{6cm}|X|X|X|} - \caption[Output quantities for devices, controls, and miscellaneous functions]{Output quantities for devices, controls, and miscellaneous functions.} - \label{tab:deviceoutputquantities} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endfirsthead - \caption[]{Output quantities for devices, controls, and miscellaneous functions (continued).} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endhead - \ct{ACTUATED SPRINKLERS} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{ASPIRATION} & Section~\ref{info:aspiration_detector} & \%/m & D \\ \hline - \ct{BI-DIRECTIONAL PROBE} & Section~\ref{info:bidir_probe} & m/s & D \\ \hline - \ct{CHAMBER OBSCURATION} & Section~\ref{info:smoke_detector} & \%/m & D \\ \hline - \ct{CELL INDEX I} & First cell index & & D,S \\ \hline - \ct{CELL INDEX J} & Second cell index & & D,S \\ \hline - \ct{CELL INDEX K} & Third cell index & & D,S \\ \hline - \ct{CONTROL} & Section~\ref{info:CTRL} & & D \\ \hline - \ct{CONTROL VALUE} & Section~\ref{info:CTRL} & & D \\ \hline - \ct{CPU TIME} & Section~\ref{info:TIMING} & s & D \\ \hline - \ct{FED} & Section~\ref{info:FED} & & D \\ \hline - \ct{FIC} & Section~\ref{info:FED} & & D,S \\ \hline - \ct{FIRE DEPTH} & Section~\ref{info:fire_depth} & m & D \\ \hline - \ct{ITERATION} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{LAYER HEIGHT} & Section~\ref{info:layerheight} & m & D \\ \hline - \ct{LINK TEMPERATURE} & Section~\ref{info:heat_detectors} & \unit{\degreeCelsius} & D \\ \hline - \ct{LOWER TEMPERATURE} & Section~\ref{info:layerheight} & \unit{\degreeCelsius} & D \\ \hline - \ct{NUMBER OF PARTICLES} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{OPEN NOZZLES} & Section~\ref{info:TIMING} & & D \\ \hline - \ct{PATH OBSCURATION} & Section~\ref{info:beam_detector} & \% & D \\ \hline - \ct{RAM} & Section~\ref{info:TIMING} & MB & D \\ \hline - \ct{RANDOM NUMBER} & $\mathcal{U}(0,1)$ & & D \\ \hline - \ct{SPRINKLER LINK TEMPERATURE} & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & D \\ \hline - \ct{THERMOCOUPLE} & Section~\ref{info:THERMOCOUPLE} & \unit{\degreeCelsius} & D \\ \hline - \ct{TIME} & Section~\ref{info:DEVC2} & s & D \\ \hline - \ct{TIME STEP} & Section~\ref{info:TIMING} & s & D \\ \hline - \ct{TRANSMISSION} & Section~\ref{info:beam_detector} & \%/m & D \\ \hline - \ct{UPPER TEMPERATURE} & Section~\ref{info:layerheight} & \unit{\degreeCelsius} & D \\ \hline - \ct{WALL CLOCK TIME} & Section~\ref{info:TIMING} & s & D \\ \hline - \ct{WALL CLOCK TIME ITERATIONS} & Section~\ref{info:TIMING} & s & D \\ \hline +\caption[Output quantities for devices, controls, and miscellaneous functions]{Output quantities for devices, controls, and miscellaneous functions.} +\label{tab:deviceoutputquantities} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endfirsthead +\caption[]{Output quantities for devices, controls, and miscellaneous functions (continued).} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endhead +\ct{ACTUATED SPRINKLERS} & Section~\ref{info:TIMING} & & D \\ \hline +\ct{ASPIRATION} & Section~\ref{info:aspiration_detector} & \%/m & D \\ \hline +\ct{BI-DIRECTIONAL PROBE} & Section~\ref{info:bidir_probe} & m/s & D \\ \hline +\ct{CHAMBER OBSCURATION} & Section~\ref{info:smoke_detector} & \%/m & D \\ \hline +\ct{CELL INDEX I} & First cell index & & D,S \\ \hline +\ct{CELL INDEX J} & Second cell index & & D,S \\ \hline +\ct{CELL INDEX K} & Third cell index & & D,S \\ \hline +\ct{CONTROL} & Section~\ref{info:CTRL} & & D \\ \hline +\ct{CONTROL VALUE} & Section~\ref{info:CTRL} & & D \\ \hline +\ct{CPU TIME} & Section~\ref{info:TIMING} & s & D \\ \hline +\ct{FED} & Section~\ref{info:FED} & & D \\ \hline +\ct{FIC} & Section~\ref{info:FED} & & D,S \\ \hline +\ct{FIRE DEPTH} & Section~\ref{info:fire_depth} & m & D \\ \hline +\ct{ITERATION} & Section~\ref{info:TIMING} & & D \\ \hline +\ct{LAYER HEIGHT} & Section~\ref{info:layerheight} & m & D \\ \hline +\ct{LINK TEMPERATURE} & Section~\ref{info:heat_detectors} & \unit{\degreeCelsius} & D \\ \hline +\ct{LOWER TEMPERATURE} & Section~\ref{info:layerheight} & \unit{\degreeCelsius} & D \\ \hline +\ct{NUMBER OF PARTICLES} & Section~\ref{info:TIMING} & & D \\ \hline +\ct{OPEN NOZZLES} & Section~\ref{info:nozzles} & & D \\ \hline +\ct{PATH OBSCURATION} & Section~\ref{info:beam_detector} & \% & D \\ \hline +\ct{RAM} & Section~\ref{info:TIMING} & MB & D \\ \hline +\ct{RANDOM NUMBER} & $\mathcal{U}(0,1)$ & & D \\ \hline +\ct{SPRINKLER LINK TEMPERATURE} & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & D \\ \hline +\ct{THERMOCOUPLE} & Section~\ref{info:THERMOCOUPLE} & \unit{\degreeCelsius} & D \\ \hline +\ct{TIME} & Simulation time & s & D \\ \hline +\ct{TIME STEP} & Section~\ref{info:TIMING} & s & D \\ \hline +\ct{TRANSMISSION} & Section~\ref{info:beam_detector} & \%/m & D \\ \hline +\ct{UPPER TEMPERATURE} & Section~\ref{info:layerheight} & \unit{\degreeCelsius} & D \\ \hline +\ct{WALL CLOCK TIME} & Section~\ref{info:TIMING} & s & D \\ \hline +\ct{WALL CLOCK TIME ITERATIONS} & Section~\ref{info:TIMING} & s & D \\ \hline \end{xltabular} \newpage @@ -11658,64 +11665,64 @@ \section{Droplet and Particle Output Quantities} Table~\ref{tab:particleoutputquantities} below lists quantities associated with droplets and solid particles. The column ``File Type'' lists the allowed output files for the quantities: ``D'' is for Device (\ct{DEVC}), ``I'' is for Iso-surface (\ct{ISOF}), ``P'' is for Plot3D, ``S'' is for Slice (\ct{SLCF}). \begin{xltabular}{\textwidth}{|p{8cm}|l|X|X|} - \caption[Particle and droplet output quantities]{Particle and droplet output quantities.} - \label{tab:particleoutputquantities} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endfirsthead - \caption[]{Particle and droplet output quantities (continued).} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endhead - \ct{ADA}$^2$ & Section~\ref{info:droplet_outputs} & \unit{m^2/m^3} & D,I,P,S \\ \hline - \lstinline[mathescape=true]!ADA_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{m^2/m^3} & D,I,P,S \\ \hline - \ct{ADD}$^2$ & Section~\ref{info:droplet_outputs} & \unit{\micro m} & D,I,P,S \\ \hline - \lstinline[mathescape=true]!ADD_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{\micro m} & D,I,P,S \\ \hline - \ct{ADT}$^2$ & Section~\ref{info:droplet_outputs} & \unit{\degreeCelsius} & D,I,P,S \\ \hline - \lstinline[mathescape=true]!ADT_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{\degreeCelsius} & D,I,P,S \\ \hline - \ct{DROPLET VOLUME FRACTION}$^2$ & Section~\ref{bucket_test_4} & & D,P,S \\ \hline - \ct{MPUV}$^3$ & Section~\ref{bucket_test_4} & \unit{kg/m^3} & D,P,S \\ \hline - \lstinline[mathescape=true]!MPUV_Z$^3$! & Section~\ref{bucket_test_4} & \unit{kg/m^3} & D,P,S \\ \hline - \ct{PARTICLE ACCEL X}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline - \ct{PARTICLE ACCEL Y}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline - \ct{PARTICLE ACCEL Z}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline - \ct{PARTICLE AGE} & Section~\ref{particle_colors} & s & PA \\ \hline - \ct{PARTICLE BULK DENSITY} & Section~\ref{particle_colors} & \unit{kg/m^3} & PA \\ \hline - \ct{PARTICLE DIAMETER} & Section~\ref{particle_colors} & \unit{\micro m} & PA \\ \hline - \ct{PARTICLE DRAG COEFFICIENT}$^2$ & Section~\ref{particle_colors} & & PA \\ \hline - \ct{PARTICLE DRAG FORCE X}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline - \ct{PARTICLE DRAG FORCE Y}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline - \ct{PARTICLE DRAG FORCE Z}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline - \ct{PARTICLE FLUX X}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline - \ct{PARTICLE FLUX Y}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline - \ct{PARTICLE FLUX Z}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline - \ct{PARTICLE HEAT TRANSFER COEFFICIENT}$^2$ & Section~\ref{particle_colors} & \unit{W/m^2.K} & PA \\ \hline - \ct{PARTICLE MASS} & Section~\ref{particle_colors} & kg & PA \\ \hline - \ct{PARTICLE PHASE} & Section~\ref{particle_colors} & & PA \\ \hline - \ct{PARTICLE RADIATION LOSS} & Section~\ref{bucket_test_4} & \unit{kW/m^3} & D,I,P,S \\ \hline - \ct{PARTICLE TEMPERATURE} & Section~\ref{particle_colors} & \unit{\degreeCelsius} & PA \\ \hline - \ct{PARTICLE U} & Section~\ref{particle_colors} & m/s & PA \\ \hline - \ct{PARTICLE V} & Section~\ref{particle_colors} & m/s & PA \\ \hline - \ct{PARTICLE VELOCITY} & Section~\ref{particle_colors} & m/s & PA \\ \hline - \ct{PARTICLE W} & Section~\ref{particle_colors} & m/s & PA \\ \hline - \ct{PARTICLE WEIGHTING FACTOR} & Section~\ref{particle_colors} & & PA \\ \hline - \ct{PARTICLE X} & Section~\ref{particle_colors} & m & PA \\ \hline - \ct{PARTICLE Y} & Section~\ref{particle_colors} & m & PA \\ \hline - \ct{PARTICLE Z} & Section~\ref{particle_colors} & m & PA \\ \hline - \ct{PDPA} & Section~\ref{PDPA} & & D \\ \hline - \ct{QABS}$^2$ & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline - \lstinline[mathescape=true]!QABS_Z$^1$! & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline - \ct{QSCA}$^2$ & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline - \lstinline[mathescape=true]!QSCA_Z$^1$! & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline +\caption[Particle and droplet output quantities]{Particle and droplet output quantities.} +\label{tab:particleoutputquantities} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endfirsthead +\caption[]{Particle and droplet output quantities (continued).} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endhead +\ct{ADA}$^2$ & Section~\ref{info:droplet_outputs} & \unit{m^2/m^3} & D,I,P,S \\ \hline +\lstinline[mathescape=true]!ADA_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{m^2/m^3} & D,I,P,S \\ \hline +\ct{ADD}$^2$ & Section~\ref{info:droplet_outputs} & \unit{\micro m} & D,I,P,S \\ \hline +\lstinline[mathescape=true]!ADD_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{\micro m} & D,I,P,S \\ \hline +\ct{ADT}$^2$ & Section~\ref{info:droplet_outputs} & \unit{\degreeCelsius} & D,I,P,S \\ \hline +\lstinline[mathescape=true]!ADT_Z$^1$! & Section~\ref{info:droplet_outputs} & \unit{\degreeCelsius} & D,I,P,S \\ \hline +\ct{DROPLET VOLUME FRACTION}$^2$ & Section~\ref{bucket_test_4} & & D,P,S \\ \hline +\ct{MPUV}$^3$ & Section~\ref{bucket_test_4} & \unit{kg/m^3} & D,P,S \\ \hline +\lstinline[mathescape=true]!MPUV_Z$^3$! & Section~\ref{bucket_test_4} & \unit{kg/m^3} & D,P,S \\ \hline +\ct{PARTICLE ACCEL X}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline +\ct{PARTICLE ACCEL Y}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline +\ct{PARTICLE ACCEL Z}$^2$ & Section~\ref{particle_colors} & \unit{m/s^2} & PA \\ \hline +\ct{PARTICLE AGE} & Section~\ref{particle_colors} & s & PA \\ \hline +\ct{PARTICLE BULK DENSITY} & Section~\ref{particle_colors} & \unit{kg/m^3} & PA \\ \hline +\ct{PARTICLE DIAMETER} & Section~\ref{particle_colors} & \unit{\micro m} & PA \\ \hline +\ct{PARTICLE DRAG COEFFICIENT}$^2$ & Section~\ref{particle_colors} & & PA \\ \hline +\ct{PARTICLE DRAG FORCE X}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline +\ct{PARTICLE DRAG FORCE Y}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline +\ct{PARTICLE DRAG FORCE Z}$^2$ & Section~\ref{particle_colors} & N & PA \\ \hline +\ct{PARTICLE FLUX X}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline +\ct{PARTICLE FLUX Y}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline +\ct{PARTICLE FLUX Z}$^2$ & Section~\ref{bucket_test_4} & \unit{kg/(m^2.s)} & P,S \\ \hline +\ct{PARTICLE HEAT TRANSFER COEFFICIENT}$^2$ & Section~\ref{particle_colors} & \unit{W/m^2.K} & PA \\ \hline +\ct{PARTICLE MASS} & Section~\ref{particle_colors} & kg & PA \\ \hline +\ct{PARTICLE PHASE} & Section~\ref{particle_colors} & & PA \\ \hline +\ct{PARTICLE RADIATION LOSS} & Section~\ref{bucket_test_4} & \unit{kW/m^3} & D,I,P,S \\ \hline +\ct{PARTICLE TEMPERATURE} & Section~\ref{particle_colors} & \unit{\degreeCelsius} & PA \\ \hline +\ct{PARTICLE U} & Section~\ref{particle_colors} & m/s & PA \\ \hline +\ct{PARTICLE V} & Section~\ref{particle_colors} & m/s & PA \\ \hline +\ct{PARTICLE VELOCITY} & Section~\ref{particle_colors} & m/s & PA \\ \hline +\ct{PARTICLE W} & Section~\ref{particle_colors} & m/s & PA \\ \hline +\ct{PARTICLE WEIGHTING FACTOR} & Section~\ref{particle_colors} & & PA \\ \hline +\ct{PARTICLE X} & Section~\ref{particle_colors} & m & PA \\ \hline +\ct{PARTICLE Y} & Section~\ref{particle_colors} & m & PA \\ \hline +\ct{PARTICLE Z} & Section~\ref{particle_colors} & m & PA \\ \hline +\ct{PDPA} & Section~\ref{PDPA} & & D \\ \hline +\ct{QABS}$^2$ & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline +\lstinline[mathescape=true]!QABS_Z$^1$! & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline +\ct{QSCA}$^2$ & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline +\lstinline[mathescape=true]!QSCA_Z$^1$! & Section~\ref{info:droplet_outputs} & & D,I,P,S \\ \hline \end{xltabular} \noindent \begin{tabbing} - $^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ - $^2$ \> Requires the specification of a particle class using \ct{PART_ID}. \\ - $^3$ \> Requires the specification of a non-zero mass particle class using \ct{PART_ID}. \\ +$^1$ \hspace{0.05in} \= Requires the specification of a gas species using \ct{SPEC_ID}. \\ +$^2$ \> Requires the specification of a particle class using \ct{PART_ID}. \\ +$^3$ \> Requires the specification of a non-zero mass particle class using \ct{PART_ID}. \\ \end{tabbing} \newpage @@ -11724,57 +11731,58 @@ \section{Summary of HVAC Output Quantities} \label{info:hvacoutputquantities} \begin{sloppypar} - Table~\ref{tab:hvacoutputquantities} summarizes the various output quantities for HVAC systems. In the file type column, D indicates a device output specified with a \ct{DEVC} input, and H indicates a Smokeview output specified with an \ct{HVAC} input. +Table~\ref{tab:hvacoutputquantities} summarizes the various output quantities for HVAC systems. In the file type column, D indicates a device output specified with a \ct{DEVC} input, and H indicates a Smokeview output specified with an \ct{HVAC} input. - When using a \ct{DEVC}, do not specify an \ct{XYZ} or \ct{XB} for HVAC outputs. Instead quantities for a duct require specifying a \ct{DUCT_ID}, quantities for a node require specifying a \ct{NODE_ID}, and quantities for a duct cell (when \ct{HVAC_MASS_TRANSPORT_CELL_L} or \ct{N_CELLS} are specified) require specifying both a \ct{DUCT_ID} and a \ct{CELL_L} (distance along the duct in meters from the first node where the desired cell is located). Mass and volume fraction outputs also require the specification of a \ct{SPEC_ID}. Fan and aircoil outputs require the \ct{DUCT_ID} of the duct they are located in. Filter outputs require the \ct{NODE_ID} of the node they are located in. The quantity \ct{DUCT ENTHALPY FLOW} applies Eq.~\ref{enthalpy_flow} to the flow in the duct. To have the node output \ct{NODE ENTHALPY} reflect the duct quantity of \ct{DUCT ENTHALPY FLOW} set \ct{RELATIVE=.TRUE} for the node output. The quantity \ct{NODE PRESSURE DIFFERENCE} requires that one specify both elements of the array \ct{NODE_ID}, and the pressure difference is calculated by subtracting the first node from the second. +When using a \ct{DEVC}, do not specify an \ct{XYZ} or \ct{XB} for HVAC outputs. Instead quantities for a duct require specifying a \ct{DUCT_ID}, quantities for a node require specifying a \ct{NODE_ID}, and quantities for a duct cell (when \ct{HVAC_MASS_TRANSPORT_CELL_L} or \ct{N_CELLS} are specified) require specifying both a \ct{DUCT_ID} and a \ct{CELL_L} (distance along the duct in meters from the first node where the desired cell is located). Mass and volume fraction outputs also require the specification of a \ct{SPEC_ID}. Fan and aircoil outputs require the \ct{DUCT_ID} of the duct they are located in. Filter outputs require the \ct{NODE_ID} of the node they are located in. The quantity \ct{DUCT ENTHALPY FLOW} applies Eq.~\ref{enthalpy_flow} to the flow in the duct. To have the node output \ct{NODE ENTHALPY} reflect the duct quantity of \ct{DUCT ENTHALPY FLOW} set \ct{RELATIVE=.TRUE} for the node output. The quantity \ct{NODE PRESSURE DIFFERENCE} requires that one specify both elements of the array \ct{NODE_ID}, and the pressure difference is calculated by subtracting the first node from the second. - Quantities available for Smokeview output are written to the \ct{CHID.hvac} file that Smokeview uses to visualize duct quantities (file format description in Section~\ref{inout:binhvac}). Smokeview outputs are specified using the \ct{HVAC} namelist. To select duct outputs create a single \ct{HVAC} input with \ct{TYPE_ID='DUCT QUANTITY LIST'}, and to select node outputs create a single \ct{HVAC} input with \ct{TYPE_ID='NODE QUANTITY LIST'}. Specify a list of up to 20 outputs using \ct{QUANTITY}, and if any quantities require a species also specify \ct{QUANTITY_SPEC_ID} for those quantities. For duct outputs, if the duct is divided into cells, then Smokeview outputs are written for each cell. The output interval can be set using \ct{DT_HVAC} on \ct{DUMP}. For example: - \begin{lstlisting} - &HVAC TYPE_ID='DUCT QUANTITY LIST', - QUANTITY='DUCT VELOCITY','DUCT LOSS','DUCT VOLUME FRACTION','DUCT VOLUME FRACTION', - QUANTITY_SPEC_ID(3)='OXYGEN',QUANTITY_SPEC_ID(4)='SOOT'/ - \end{lstlisting} - would output the velocity, flow loss, and the volume fractions of oxygen and soot in all ducts. +Quantities available for Smokeview output are written to the \ct{CHID.hvac} file that Smokeview uses to visualize duct quantities (file format description in Section~\ref{inout:binhvac}). Smokeview outputs are specified using the \ct{HVAC} namelist. To select duct outputs create a single \ct{HVAC} input with \linebreak[4]\ct{TYPE_ID='DUCT QUANTITY LIST'}, and to select node outputs create a single \ct{HVAC} input with \linebreak[4]\ct{TYPE_ID='NODE QUANTITY LIST'}. Specify a list of up to 20 outputs using \ct{QUANTITY}, and if any quantities require a species also specify \ct{QUANTITY_SPEC_ID} for those quantities. For duct outputs, if the duct is divided into cells, then Smokeview outputs are written for each cell. The output interval can be set using \ct{DT_HVAC} on \ct{DUMP}. For example: +\begin{lstlisting} + &HVAC TYPE_ID='DUCT QUANTITY LIST', + QUANTITY='DUCT VELOCITY','DUCT LOSS','DUCT VOLUME FRACTION', + 'DUCT VOLUME FRACTION', + QUANTITY_SPEC_ID(3)='OXYGEN',QUANTITY_SPEC_ID(4)='SOOT'/ +\end{lstlisting} +would output the velocity, flow loss, and the volume fractions of oxygen and soot in all ducts. \end{sloppypar} \begin{longtable}{|l|l|l|l|@{\extracolsep{\fill}}} - \caption[HVAC output quantities]{HVAC output quantities.} - \label{tab:hvacoutputquantities} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endfirsthead - \caption[]{HVAC output quantities (continued).} \\ - \hline - \ct{QUANTITY} & Explanation & Units & File Type \\ - \hline \hline - \endhead - \ct{AIRCOIL HEAT EXCHANGE} & Heat exchange rate for an aircoil & kW & D \\ \hline - \ct{DUCT DENSITY} & Density of the flow in a duct & \unit{kg/m^3} & D,H \\ \hline - \ct{DUCT CELL DENSITY} & Gas density in a duct cell & \unit{kg/m^3} & D \\ \hline - \ct{DUCT CELL MASS FRACTION} & Mass fraction of a species in a duct cell & kg/kg & D \\ \hline - \ct{DUCT CELL TEMPERATURE} & Gas temperature in a duct cell & \unit{\degreeCelsius} & D \\ \hline - \ct{DUCT CELL VOLUME FRACTION} & Volume fraction of a species in a duct cell & mol/mol & D \\ \hline - \ct{DUCT ENTHALPY FLOW} & Enthalpy flow in a duct & kW & D,H \\ \hline - \ct{DUCT LOSS} & Total flow loss coefficient for a duct & & D,H \\ \hline - \ct{DUCT MASS FLOW} & Mass flow in a duct & kg/s & D,H \\ \hline - \ct{DUCT MASS FRACTION} & Mass fraction of a species in a duct & kg/kg & D,H \\ \hline - \ct{DUCT TEMPERATURE} & Temperature of the flow in a duct & \unit{\degreeCelsius} & D,H \\ \hline - \ct{DUCT VELOCITY} & Velocity of a duct & m/s & D,H \\ \hline - \ct{DUCT VOLUME FLOW} & Volumetric flow in a duct & \unit{m^3/s} & D,H \\ \hline - \ct{DUCT VOLUME FRACTION} & Volume fraction of a species in a duct & mol/mol & D,H \\ \hline - \ct{FAN PRESSURE} & Pressure output of a fan in a duct & Pa & D \\ \hline - \ct{FILTER LOADING} & Loading of a species in a filter & kg & D \\ \hline - \ct{FILTER LOSS} & Total filter flow loss coefficient & & D \\ \hline - \ct{NODE DENSITY} & Density of the flow through a node & \unit{kg/m^3} & D,H \\ \hline - \ct{NODE ENTHALPY} & Enthalpy of a node & kJ/kg & D,H \\ \hline - \ct{NODE SENSIBLE ENTHALPY} & Sensible Enthalpy of a node & kJ/kg & D,H \\ \hline - \ct{NODE MASS FRACTION} & Mass fraction of a species in a node & kg/kg & D,H \\ \hline - \ct{NODE PRESSURE} & Pressure of a node & Pa & D,H \\ \hline - \ct{NODE PRESSURE DIFFERENCE} & Pressure difference between two nodes & Pa & D \\ \hline - \ct{NODE TEMPERATURE} & Temperature of the flow though a node & \unit{\degreeCelsius} & D,H \\ \hline - \ct{NODE VOLUME FRACTION} & Volume fraction of a species in a node & mol/mol & D,H \\ \hline +\caption[HVAC output quantities]{HVAC output quantities.} +\label{tab:hvacoutputquantities} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endfirsthead +\caption[]{HVAC output quantities (continued).} \\ +\hline +\ct{QUANTITY} & Explanation & Units & File Type \\ +\hline \hline +\endhead +\ct{AIRCOIL HEAT EXCHANGE} & Heat exchange rate for an aircoil & kW & D \\ \hline +\ct{DUCT DENSITY} & Density of the flow in a duct & \unit{kg/m^3} & D,H \\ \hline +\ct{DUCT CELL DENSITY} & Gas density in a duct cell & \unit{kg/m^3} & D \\ \hline +\ct{DUCT CELL MASS FRACTION} & Mass fraction of a species in a duct cell & kg/kg & D \\ \hline +\ct{DUCT CELL TEMPERATURE} & Gas temperature in a duct cell & \unit{\degreeCelsius} & D \\ \hline +\ct{DUCT CELL VOLUME FRACTION} & Volume fraction of a species in a duct cell & mol/mol & D \\ \hline +\ct{DUCT ENTHALPY FLOW} & Enthalpy flow in a duct & kW & D,H \\ \hline +\ct{DUCT LOSS} & Total flow loss coefficient for a duct & & D,H \\ \hline +\ct{DUCT MASS FLOW} & Mass flow in a duct & kg/s & D,H \\ \hline +\ct{DUCT MASS FRACTION} & Mass fraction of a species in a duct & kg/kg & D,H \\ \hline +\ct{DUCT TEMPERATURE} & Temperature of the flow in a duct & \unit{\degreeCelsius} & D,H \\ \hline +\ct{DUCT VELOCITY} & Velocity of a duct & m/s & D,H \\ \hline +\ct{DUCT VOLUME FLOW} & Volumetric flow in a duct & \unit{m^3/s} & D,H \\ \hline +\ct{DUCT VOLUME FRACTION} & Volume fraction of a species in a duct & mol/mol & D,H \\ \hline +\ct{FAN PRESSURE} & Pressure output of a fan in a duct & Pa & D \\ \hline +\ct{FILTER LOADING} & Loading of a species in a filter & kg & D \\ \hline +\ct{FILTER LOSS} & Total filter flow loss coefficient & & D \\ \hline +\ct{NODE DENSITY} & Density of the flow through a node & \unit{kg/m^3} & D,H \\ \hline +\ct{NODE ENTHALPY} & Enthalpy of a node & kJ/kg & D,H \\ \hline +\ct{NODE SENSIBLE ENTHALPY} & Sensible Enthalpy of a node & kJ/kg & D,H \\ \hline +\ct{NODE MASS FRACTION} & Mass fraction of a species in a node & kg/kg & D,H \\ \hline +\ct{NODE PRESSURE} & Pressure of a node & Pa & D,H \\ \hline +\ct{NODE PRESSURE DIFFERENCE} & Pressure difference between two nodes & Pa & D \\ \hline +\ct{NODE TEMPERATURE} & Temperature of the flow though a node & \unit{\degreeCelsius} & D,H \\ \hline +\ct{NODE VOLUME FRACTION} & Volume fraction of a species in a node & mol/mol & D,H \\ \hline \end{longtable} @@ -11799,7 +11807,7 @@ \chapter{Alphabetical List of Input Parameters} % ignore namelist/keyword combinations % ignorenamelistkw: /BNDF/DEBUG -% ignorenamelistkw: /COMB/FUEL_ID_FOR_AFT, /COMB/USE_MIXED_ZN_AFT_TMP +% ignorenamelistkw: /COMB/FUEL_ID_FOR_AFT, /COMB/USE_MIXED_ZN_AFT_TMP, /COMB/VARIABLE_CFT % ignorenamelistkw: /DEVC/ELEM_ID, /DEVC/STATISTICS % ignorenamelistkw: /DUMP/MMS_TIMER, /DUMP/TURB_INIT_CLOCK, /DUMP/GET_CUTCELLS_VERBOSE, /DUMP/WRITE_CVODE_SUBSTEPS % ignorenamelistkw: /HVAC/DEBUG @@ -11825,21 +11833,21 @@ \chapter{Alphabetical List of Input Parameters} \section{\texorpdfstring{{\tt BACK}}{BACK} (Background species)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Background species (\ct{BACK} namelist group)]{For more information see Section~\ref{info:BACKGROUND_SPECIES}.} - \label{tbl:BACK} \\ - \hline - \multicolumn{5}{|c|}{\ct{BACK} (Background Species Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{BACK} (Background Species Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{SPEC_ID} & Char.~Array & Section \ref{info:BACKGROUND_SPECIES} & & \\ \hline - \ct{MASS_FRACTION} & Real Array & Section \ref{info:BACKGROUND_SPECIES} & & \\ \hline +\caption[Background species (\ct{BACK} namelist group)]{For more information see Section~\ref{info:BACKGROUND_SPECIES}.} +\label{tbl:BACK} \\ +\hline +\multicolumn{5}{|c|}{\ct{BACK} (Background Species Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{BACK} (Background Species Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{SPEC_ID} & Char.~Array & Section \ref{info:BACKGROUND_SPECIES} & & \\ \hline +\ct{MASS_FRACTION} & Real Array & Section \ref{info:BACKGROUND_SPECIES} & & \\ \hline \end{xltabular} @@ -11850,26 +11858,26 @@ \section{\texorpdfstring{{\tt BACK}}{BACK} (Background species)} \section{\texorpdfstring{{\tt BNDF}}{BNDF} (Boundary File Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Boundary file parameters (\ct{BNDF} namelist group)]{For more information see Section~\ref{info:BNDF}.} - \label{tbl:BNDF} \\ - \hline - \multicolumn{5}{|c|}{\ct{BNDF} (Boundary File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{BNDF} (Boundary File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CELL_CENTERED} & Logical & Section \ref{info:BNDF} & & \ct{F} \\ \hline - \ct{MATL_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline - \ct{PART_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline - \ct{PROP_ID} & Character & Section \ref{info:BNDF} & & \\ \hline - \ct{QUANTITY} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline - \ct{SPEC_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline - \ct{TEMPORAL_STATISTIC} & Character & Section \ref{info:BNDF} & & \\ \hline +\caption[Boundary file parameters (\ct{BNDF} namelist group)]{For more information see Section~\ref{info:BNDF}.} +\label{tbl:BNDF} \\ +\hline +\multicolumn{5}{|c|}{\ct{BNDF} (Boundary File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{BNDF} (Boundary File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CELL_CENTERED} & Logical & Section \ref{info:BNDF} & & \ct{F} \\ \hline +\ct{MATL_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline +\ct{PART_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline +\ct{PROP_ID} & Character & Section \ref{info:BNDF} & & \\ \hline +\ct{QUANTITY} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline +\ct{SPEC_ID} & Character & Section \ref{info:solidoutputquantities} & & \\ \hline +\ct{TEMPORAL_STATISTIC} & Character & Section \ref{info:BNDF} & & \\ \hline \end{xltabular} @@ -11880,20 +11888,20 @@ \section{\texorpdfstring{{\tt BNDF}}{BNDF} (Boundary File Parameters)} \section{\texorpdfstring{{\tt CATF}}{CATF} (Concatenate Input Files Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Concatenate Input Files parameters (\ct{CATF} namelist group)]{For more information see Section~\ref{info:CATF}.} - \label{tbl:CATF} \\ - \hline - \multicolumn{5}{|c|}{\ct{CATF} (Concatenate Input Files Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{CATF} (Concatenate Input Files Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{OTHER_FILES} & Char. Array & Section \ref{info:CATF} & & \\ \hline +\caption[Concatenate Input Files parameters (\ct{CATF} namelist group)]{For more information see Section~\ref{info:CATF}.} +\label{tbl:CATF} \\ +\hline +\multicolumn{5}{|c|}{\ct{CATF} (Concatenate Input Files Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{CATF} (Concatenate Input Files Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{OTHER_FILES} & Char. Array & Section \ref{info:CATF} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -11902,24 +11910,24 @@ \section{\texorpdfstring{{\tt CATF}}{CATF} (Concatenate Input Files Parameters)} \section{\texorpdfstring{{\tt CLIP}}{CLIP} (Clipping Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Clipping parameters (\ct{CLIP} namelist group)]{For more information see Section~\ref{info:CLIP}.} - \label{tbl:CLIP} \\ - \hline - \multicolumn{5}{|c|}{\ct{CLIP} (Specified Upper and Lower Limits)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{CLIP} (Specified Upper and Lower Limits)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CLIP_DT_RESTRICTIONS_MAX} & Integer & Section~\ref{info:CLIP:dens} & & 5 \\ \hline - \ct{MAXIMUM_DENSITY} & Real & Section~\ref{info:CLIP:dens} & \unit{kg/m^3} \rule{0pt}{2.3ex} & \\ \hline - \ct{MAXIMUM_TEMPERATURE} & Real & Section~\ref{info:CLIP:temp} & \unit{\degreeCelsius} & \\ \hline - \ct{MINIMUM_DENSITY} & Real & Section~\ref{info:CLIP:dens} & \unit{kg/m^3} \rule{0pt}{2.3ex} & \\ \hline - \ct{MINIMUM_TEMPERATURE} & Real & Section~\ref{info:CLIP:temp} & \unit{\degreeCelsius} & \\ \hline +\caption[Clipping parameters (\ct{CLIP} namelist group)]{For more information see Section~\ref{info:CLIP}.} +\label{tbl:CLIP} \\ +\hline +\multicolumn{5}{|c|}{\ct{CLIP} (Specified Upper and Lower Limits)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{CLIP} (Specified Upper and Lower Limits)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CLIP_DT_RESTRICTIONS_MAX} & Integer & Section~\ref{info:CLIP:dens} & & 5 \\ \hline +\ct{MAXIMUM_DENSITY} & Real & Section~\ref{info:CLIP:dens} & \unit{kg/m^3} \rule{0pt}{2.3ex} & \\ \hline +\ct{MAXIMUM_TEMPERATURE} & Real & Section~\ref{info:CLIP:temp} & \unit{\degreeCelsius} & \\ \hline +\ct{MINIMUM_DENSITY} & Real & Section~\ref{info:CLIP:dens} & \unit{kg/m^3} \rule{0pt}{2.3ex} & \\ \hline +\ct{MINIMUM_TEMPERATURE} & Real & Section~\ref{info:CLIP:temp} & \unit{\degreeCelsius} & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -11928,42 +11936,42 @@ \section{\texorpdfstring{{\tt CLIP}}{CLIP} (Clipping Parameters)} \section{\texorpdfstring{{\tt COMB}}{COMB} (General Combustion Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[General combustion parameters (\ct{COMB} namelist group)]{For more information see Chapter~\ref{info:COMB}.} - \label{tbl:COMB} \\ - \hline - \multicolumn{5}{|c|}{\ct{COMB} (General combustion parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{COMB} (General combustion parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CHECK_REALIZABILITY} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline - \ct{COMPUTE_ADIABATIC_FLAME_TEMPERATURE} & Logical & Section~\ref{info:extinction} & & \ct{F} \\ \hline - \ct{CVODE_ORDER} & Integer & Section~\ref{info:chem_integration} & & 0 \\ \hline - \ct{DO_CHEM_LOAD_BALANCE} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline - \ct{EQUIV_RATIO_CHECK} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline - \ct{EXTINCTION_MODEL} & Character & Section~\ref{info:extinction} & & \ref{tbl:SIMULATION_MODE} \\ \hline - \ct{FINITE_RATE_MIN_TEMP} & Real & Section~\ref{info:finite} & \unit{\degreeCelsius} & -273.15 \\ \hline - \ct{FIXED_MIX_TIME} & Real & Section~\ref{info:turbulent_combustion} & s & \\ \hline - \ct{FREE_BURN_TEMPERATURE} & Real & Section~\ref{info:extinction} & \unit{\degreeCelsius} & 600 \\ \hline - \ct{INITIAL_UNMIXED_FRACTION} & Real & Section~\ref{info:turbulent_combustion} & & 1.0 \\ \hline - \ct{MAX_CHEMISTRY_SUBSTEPS} & Integer & Section~\ref{info:chem_integration} & & 20 \\ \hline - \ct{MAX_EQUIV_RATIO} & Real & Section~\ref{info:chem_integration} & & 10.0 \\ \hline - \ct{MIN_EQUIV_RATIO} & Real & Section~\ref{info:chem_integration} & & 0.1 \\ \hline - \ct{N_FIXED_CHEMISTRY_SUBSTEPS} & Integer & Section~\ref{info:chem_integration} & & \\ \hline - \ct{ODE_SOLVER} & Character & Section~\ref{info:chem_integration} & & \\ \hline - \ct{ODE_MIN_ATOL} & Real & Section~\ref{info:chem_integration} & & \\ \hline - \ct{ODE_REL_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline - \ct{RAMP_ZETA_0} & Character & Section~\ref{info:turbulent_combustion} & & \\ \hline - \ct{SUPPRESSION} & Logical & Section~\ref{info:extinction} & & \ct{T} \\ \hline - \ct{TAU_CHEM} & Real & Section~\ref{info:turbulent_combustion} & & \num{1e-5} \rule{0pt}{2.3ex} \\ \hline - \ct{TAU_FLAME} & Real & Section~\ref{info:turbulent_combustion} & & \num{1E10} \rule{0pt}{2.3ex} \\ \hline - \ct{TURBULENT_FLAME_SPEED} & Real & Section~\ref{info:turbulent_combustion} & m/s & 100. \\ \hline - \ct{ZZ_MIN_GLOBAL} & Real & Section~\ref{info:finite} & & \num{1E-10} \rule{0pt}{2.3ex} \\ \hline +\caption[General combustion parameters (\ct{COMB} namelist group)]{For more information see Chapter~\ref{info:COMB}.} +\label{tbl:COMB} \\ +\hline +\multicolumn{5}{|c|}{\ct{COMB} (General combustion parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{COMB} (General combustion parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CHECK_REALIZABILITY} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline +\ct{COMPUTE_ADIABATIC_FLAME_TEMPERATURE} & Logical & Section~\ref{info:extinction} & & \ct{F} \\ \hline +\ct{CVODE_ORDER} & Integer & Section~\ref{info:chem_integration} & & 0 \\ \hline +\ct{DO_CHEM_LOAD_BALANCE} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline +\ct{EQUIV_RATIO_CHECK} & Logical & Section~\ref{info:chem_integration} & & \ct{F} \\ \hline +\ct{EXTINCTION_MODEL} & Character & Section~\ref{info:extinction} & & Table~\ref{tbl:SIMULATION_MODE} \\ \hline +\ct{FINITE_RATE_MIN_TEMP} & Real & Section~\ref{info:finite} & \unit{\degreeCelsius} & -273.15 \\ \hline +\ct{FIXED_MIX_TIME} & Real & Section~\ref{info:turbulent_combustion} & s & \\ \hline +\ct{FREE_BURN_TEMPERATURE} & Real & Section~\ref{info:extinction} & \unit{\degreeCelsius} & 600 \\ \hline +\ct{INITIAL_UNMIXED_FRACTION} & Real & Section~\ref{info:turbulent_combustion} & & 1 \\ \hline +\ct{MAX_CHEMISTRY_SUBSTEPS} & Integer & Section~\ref{info:chem_integration} & & 20 \\ \hline +\ct{MAX_EQUIV_RATIO} & Real & Section~\ref{info:chem_integration} & & 10 \\ \hline +\ct{MIN_EQUIV_RATIO} & Real & Section~\ref{info:chem_integration} & & 0.1 \\ \hline +\ct{N_FIXED_CHEMISTRY_SUBSTEPS} & Integer & Section~\ref{info:chem_integration} & & \\ \hline +\ct{ODE_SOLVER} & Character & Section~\ref{info:chem_integration} & & \\ \hline +\ct{ODE_MIN_ATOL} & Real & Section~\ref{info:chem_integration} & & \\ \hline +\ct{ODE_REL_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline +\ct{RAMP_ZETA_0} & Character & Section~\ref{info:turbulent_combustion} & & \\ \hline +\ct{SUPPRESSION} & Logical & Section~\ref{info:extinction} & & \ct{T} \\ \hline +\ct{TAU_CHEM} & Real & Section~\ref{info:turbulent_combustion} & & \num{1e-5} \rule{0pt}{2.3ex} \\ \hline +\ct{TAU_FLAME} & Real & Section~\ref{info:turbulent_combustion} & & \num{1E10} \rule{0pt}{2.3ex} \\ \hline +\ct{TURBULENT_FLAME_SPEED} & Real & Section~\ref{info:turbulent_combustion} & m/s & 100 \\ \hline +\ct{ZZ_MIN_GLOBAL} & Real & Section~\ref{info:finite} & & \num{1E-10} \rule{0pt}{2.3ex} \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -11973,22 +11981,22 @@ \section{\texorpdfstring{{\tt COMB}}{COMB} (General Combustion Parameters)} \section{\texorpdfstring{{\tt CSVF}}{CSVF} (Comma Separated Velocity Files)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Comma separated velocity files (\ct{CSVF} namelist group)]{For more information see Section~\ref{info:CSVF}.} - \label{tbl:CSVF} \\ - \hline - \multicolumn{5}{|c|}{\ct{CSVF} (Comma Delimited Initialization Files)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{CSVF} (Comma Delimited Initialization Files)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{SPECFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline - \ct{TMPFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline - \ct{UVWFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline +\caption[Comma separated velocity files (\ct{CSVF} namelist group)]{For more information see Section~\ref{info:CSVF}.} +\label{tbl:CSVF} \\ +\hline +\multicolumn{5}{|c|}{\ct{CSVF} (Comma Delimited Initialization Files)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{CSVF} (Comma Delimited Initialization Files)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{SPECFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline +\ct{TMPFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline +\ct{UVWFILE} & Character & Section~\ref{info:CSVF} & & \\ \hline \end{xltabular} @@ -11999,37 +12007,37 @@ \section{\texorpdfstring{{\tt CSVF}}{CSVF} (Comma Separated Velocity Files)} \section{\texorpdfstring{{\tt CTRL}}{CTRL} (Control Function Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Control function parameters (\ct{CTRL} namelist group)]{For more information see Section~\ref{info:CTRL}.} - \label{tbl:CTRL} \\ - \hline - \multicolumn{5}{|c|}{\ct{CTRL} (Control Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{CTRL} (Control Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CONSTANT} & Real & Section~\ref{info:CONTROL_MATH} & & \\ \hline - \ct{CONTROL_FORCE(3)} & Logical Array & Section~\ref{info:CONTROL_PID} & & \ct{F} \\ \hline - \ct{DELAY} & Real & Section~\ref{info:TIME_DELAY} & s & 0. \\ \hline - \ct{DIFFERENTIAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 0. \\ \hline - \ct{FUNCTION_TYPE} & Character & Section~\ref{info:CTRL} & & \\ \hline - \ct{ID} & Character & Section~\ref{info:CTRL} & & \\ \hline - \ct{INITIAL_STATE} & Logical & Section~\ref{info:basic_control} & & \ct{F} \\ \hline - \ct{INPUT_ID} & Char.~Array & Section~\ref{info:CTRL} & & \\ \hline - \ct{INTEGRAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 0. \\ \hline - \ct{LATCH} & Logical & Section~\ref{info:basic_control} & & \ct{T} \\ \hline - \ct{N} & Integer & Section~\ref{info:CTRL} & & 1 \\ \hline - \ct{ON_BOUND} & Character & Section~\ref{info:DEADBAND} & & \ct{LOWER} \\ \hline - \ct{PERCENTILE} & Real & Section~\ref{info:PERCENTILE} & & 0.95 \\ \hline - \ct{PROPORTIONAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 1. \\ \hline - \ct{RAMP_ID} & Character & Section~\ref{info:CUSTOM} & & \\ \hline - \ct{SETPOINT(2)} & Real & Section~\ref{info:CTRL} & & \\ \hline - \ct{TARGET_VALUE} & Real & Section~\ref{info:CONTROL_PID} & & 0. \\ \hline - \ct{TRIP_DIRECTION} & Integer & Section~\ref{info:basic_control} & & 1 \\ \hline +\caption[Control function parameters (\ct{CTRL} namelist group)]{For more information see Section~\ref{info:CTRL}.} +\label{tbl:CTRL} \\ +\hline +\multicolumn{5}{|c|}{\ct{CTRL} (Control Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{CTRL} (Control Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CONSTANT} & Real & Section~\ref{info:CONTROL_MATH} & & \\ \hline +\ct{CONTROL_FORCE(3)} & Logical Array & Section~\ref{info:CONTROL_PID} & & \ct{F} \\ \hline +\ct{DELAY} & Real & Section~\ref{info:TIME_DELAY} & s & 0 \\ \hline +\ct{DIFFERENTIAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 0 \\ \hline +\ct{FUNCTION_TYPE} & Character & Section~\ref{info:CTRL} & & \\ \hline +\ct{ID} & Character & Section~\ref{info:CTRL} & & \\ \hline +\ct{INITIAL_STATE} & Logical & Section~\ref{info:basic_control} & & \ct{F} \\ \hline +\ct{INPUT_ID} & Char.~Array & Section~\ref{info:CTRL} & & \\ \hline +\ct{INTEGRAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 0 \\ \hline +\ct{LATCH} & Logical & Section~\ref{info:basic_control} & & \ct{T} \\ \hline +\ct{N} & Integer & Section~\ref{info:CTRL} & & 1 \\ \hline +\ct{ON_BOUND} & Character & Section~\ref{info:DEADBAND} & & \ct{LOWER} \\ \hline +\ct{PERCENTILE} & Real & Section~\ref{info:PERCENTILE} & & 0.95 \\ \hline +\ct{PROPORTIONAL_GAIN} & Real & Section~\ref{info:CONTROL_PID} & & 1 \\ \hline +\ct{RAMP_ID} & Character & Section~\ref{info:CUSTOM} & & \\ \hline +\ct{SETPOINT(2)} & Real & Section~\ref{info:CTRL} & & \\ \hline +\ct{TARGET_VALUE} & Real & Section~\ref{info:CONTROL_PID} & & 0 \\ \hline +\ct{TRIP_DIRECTION} & Integer & Section~\ref{info:basic_control} & & 1 \\ \hline \end{xltabular} @@ -12039,89 +12047,89 @@ \section{\texorpdfstring{{\tt CTRL}}{CTRL} (Control Function Parameters)} \section{\texorpdfstring{{\tt DEVC}}{DEVC} (Device Parameters)} \begin{xltabular}{\textwidth}{|p{4.2cm}|X|X|l|X|} - \caption[Device parameters (\ct{DEVC} namelist group)]{For more information see Section~\ref{info:DEVC}.} - \label{tbl:DEVC} \\ - \hline - \multicolumn{5}{|c|}{\ct{DEVC} (Device Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{DEVC} (Device Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ABSOLUTE_VALUE} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline - \ct{BYPASS_FLOWRATE} & Real & Section~\ref{info:aspiration_detector} & kg/s & 0 \\ \hline - \ct{CELL_L} & Real & Section~\ref{info:hvacoutputquantities} & m & \\ \hline - \ct{CONVERSION_ADDEND} & Real & Section~\ref{info:out:DEVC} & & 0 \\ \hline - \ct{CONVERSION_FACTOR} & Real & Section~\ref{info:out:DEVC} & & 1 \\ \hline - \ct{COORD_FACTOR} & Real & Section~\ref{info:line_file} & & 1 \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline - \ct{DB} & Character & Section~\ref{info:statistics} & & \\ \hline - \ct{DELAY} & Real & Section~\ref{info:aspiration_detector} & s & 0 \\ \hline - \ct{DEPTH} & Real & Section~\ref{info:DEPTH} & m & 0 \\ \hline - \ct{DEVC_ID} & Character & Sections~\ref{info:aspiration_detector} and \ref{info:RAMPDEVC} & & \\ \hline - \ct{D_ID} & Character & Section~\ref{info:line_file} & & \\ \hline - \ct{DRY} & Logical & Section~\ref{info:dry} & & \ct{F} \\ \hline - \ct{DUCT_ID} & Character & Section~\ref{info:hvacoutputquantities} & & \\ \hline - \ct{DX} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline - \ct{DY} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline - \ct{DZ} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline - \ct{FLOWRATE} & Real & Section~\ref{info:aspiration_detector} & kg/s & 0 \\ \hline - \ct{FORCE_DIRECTION} & Real(3) & Section~\ref{info:distributed_forces} & & 0,0,-1 \\ \hline - \ct{HIDE_COORDINATES} & Logical & Section~\ref{info:line_file} & & \ct{F} \\ \hline - \ct{ID} & Character & Section~\ref{info:DEVC} & & \\ \hline - \ct{INITIAL_STATE} & Logical & Section~\ref{info:basic_control} & & \ct{F} \\ \hline - \ct{INIT_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline - \ct{IOR} & Integer & Section~\ref{info:DEVC} & & \\ \hline - \ct{LATCH} & Logical & Section~\ref{info:basic_control} & & \ct{T} \\ \hline - \ct{LP_TAG} & Integer & Section~\ref{info:tagging_particles} & & \\ \hline - \ct{MATL_ID} & Character & Section~\ref{info:more_wall_outputs} & & \\ \hline - \ct{MOVE_ID} & Character & Section~\ref{info:MOVE_ID} & & \\ \hline - \ct{N_INTERVALS} & Integer & Section~\ref{info:time_integral} & & \\ \hline - \ct{NODE_ID} & Character(2) & Section~\ref{info:hvacoutputquantities} & & \\ \hline - \ct{NO_UPDATE_CTRL_ID} & Character & Section~\ref{info:freeze_device} & & \\ \hline - \ct{NO_UPDATE_DEVC_ID} & Character & Section~\ref{info:freeze_device} & & \\ \hline - \ct{ORIENTATION} & Real Triplet & Section~\ref{info:DEVC} & & 0,0,-1 \\ \hline - \ct{OUTPUT} & Logical & Section~\ref{info:out:DEVC} & & \ct{T} \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:particleoutputquantities} & & \\ \hline - \ct{PIPE_INDEX} & Integer & Section~\ref{info:pressureramp} & & 1 \\ \hline - \ct{POINTS} & Integer & Section~\ref{info:line_file} & & 1 \\ \hline - \ct{POINTS_ARRAY_X} & Real Array & Section~\ref{info:line_file} & m & \\ \hline - \ct{POINTS_ARRAY_Y} & Real Array & Section~\ref{info:line_file} & m & \\ \hline - \ct{POINTS_ARRAY_Z} & Real Array & Section~\ref{info:line_file} & m & \\ \hline - \ct{PROP_ID} & Character & Section~\ref{info:DEVC} & & \\ \hline - \ct{QUANTITY} & Character & Section~\ref{info:DEVC} & & \\ \hline - \ct{QUANTITY2} & Character & Section~\ref{info:time_integral} & & \\ \hline - \ct{QUANTITY_RANGE} & Real(2) & Section~\ref{info:statistics} & & \num{-1E50},\num{1E50} \rule{0pt}{2.3ex} \\ \hline - \ct{REAC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline - \ct{RELATIVE} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline - \ct{R_ID} & Character & Section~\ref{info:line_file} & & \\ \hline - \ct{ROTATION} & Real & Section~\ref{info:DEVC} & deg. & 0 \\ \hline - \ct{SETPOINT} & Real & Section~\ref{info:basic_control} & & \\ \hline - \ct{SMOOTHING_FACTOR} & Real & Section~\ref{info:basic_control} & & 0 \\ \hline - \ct{SMOOTHING_TIME} & Real & Section~\ref{info:basic_control} & s & \\ \hline - \ct{SPATIAL_STATISTIC} & Character & Section~\ref{info:statistics} & & \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline - \ct{STATISTICS_END} & Real & Section~\ref{info:rmscovcorr} & s & \ct{T_END}\\ \hline - \ct{STATISTICS_START} & Real & Section~\ref{info:rmscovcorr} & s & \ct{T_BEGIN}\\ \hline - \ct{SURF_ID} & Character & Section~\ref{info:statistics} & & \\ \hline - \ct{TEMPORAL_STATISTIC} & Character & Section~\ref{info:time_integral} & & \\ \hline - \ct{TIME_AVERAGED} & Logical & Section~\ref{info:out:DEVC} & & \\ \hline - \ct{TIME_HISTORY} & Logical & Section~\ref{info:line_file} & & \\ \hline - \ct{TIME_PERIOD} & Real & Section~\ref{info:time_integral} & s & \\ \hline - \ct{TRIP_DIRECTION} & Integer & Section~\ref{info:basic_control} & & 1 \\ \hline - \ct{UNITS} & Character & Section~\ref{info:out:DEVC} & & \\ \hline - \ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline - \ct{XB(6)} & Real Sextuplet & Section~\ref{info:statistics} & m & \\ \hline - \ct{XBP(6)} & Real Sextuplet & Section~\ref{info:line_file} & m & \\ \hline - \ct{XYZ(3)} & Real Triplet & Section~\ref{info:DEVC} & m & \\ \hline - \ct{X_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-x} \\ \hline - \ct{Y_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-y} \\ \hline - \ct{Z_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-z} \\ \hline - \ct{XYZ_UNITS} & Character & Section~\ref{info:line_file} & & \ct{'m'} \\ \hline +\caption[Device parameters (\ct{DEVC} namelist group)]{For more information see Section~\ref{info:DEVC}.} +\label{tbl:DEVC} \\ +\hline +\multicolumn{5}{|c|}{\ct{DEVC} (Device Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{DEVC} (Device Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ABSOLUTE_VALUE} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline +\ct{BYPASS_FLOWRATE} & Real & Section~\ref{info:aspiration_detector} & kg/s & 0 \\ \hline +\ct{CELL_L} & Real & Section~\ref{info:hvacoutputquantities} & m & \\ \hline +\ct{CONVERSION_ADDEND} & Real & Section~\ref{info:out:DEVC} & & 0 \\ \hline +\ct{CONVERSION_FACTOR} & Real & Section~\ref{info:out:DEVC} & & 1 \\ \hline +\ct{COORD_FACTOR} & Real & Section~\ref{info:line_file} & & 1 \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline +\ct{DB} & Character & Section~\ref{info:statistics} & & \\ \hline +\ct{DELAY} & Real & Section~\ref{info:aspiration_detector} & s & 0 \\ \hline +\ct{DEPTH} & Real & Section~\ref{info:DEPTH} & m & 0 \\ \hline +\ct{DEVC_ID} & Character & Sections~\ref{info:aspiration_detector} and \ref{info:RAMPDEVC} & & \\ \hline +\ct{D_ID} & Character & Section~\ref{info:line_file} & & \\ \hline +\ct{DRY} & Logical & Section~\ref{info:dry} & & \ct{F} \\ \hline +\ct{DUCT_ID} & Character & Section~\ref{info:hvacoutputquantities} & & \\ \hline +\ct{DX} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline +\ct{DY} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline +\ct{DZ} & Real & Section~\ref{info:line_file} & m & 0 \\ \hline +\ct{FLOWRATE} & Real & Section~\ref{info:aspiration_detector} & kg/s & 0 \\ \hline +\ct{FORCE_DIRECTION} & Real(3) & Section~\ref{info:distributed_forces} & & 0,0,-1 \\ \hline +\ct{HIDE_COORDINATES} & Logical & Section~\ref{info:line_file} & & \ct{F} \\ \hline +\ct{ID} & Character & Section~\ref{info:DEVC} & & \\ \hline +\ct{INITIAL_STATE} & Logical & Section~\ref{info:basic_control} & & \ct{F} \\ \hline +\ct{INIT_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline +\ct{IOR} & Integer & Section~\ref{info:DEVC} & & \\ \hline +\ct{LATCH} & Logical & Section~\ref{info:basic_control} & & \ct{T} \\ \hline +\ct{LP_TAG} & Integer & Section~\ref{info:tagging_particles} & & \\ \hline +\ct{MATL_ID} & Character & Section~\ref{info:more_wall_outputs} & & \\ \hline +\ct{MOVE_ID} & Character & Section~\ref{info:MOVE_ID} & & \\ \hline +\ct{N_INTERVALS} & Integer & Section~\ref{info:time_integral} & & \\ \hline +\ct{NODE_ID} & Character(2) & Section~\ref{info:hvacoutputquantities} & & \\ \hline +\ct{NO_UPDATE_CTRL_ID} & Character & Section~\ref{info:freeze_device} & & \\ \hline +\ct{NO_UPDATE_DEVC_ID} & Character & Section~\ref{info:freeze_device} & & \\ \hline +\ct{ORIENTATION} & Real Triplet & Section~\ref{info:DEVC} & & 0,0,-1 \\ \hline +\ct{OUTPUT} & Logical & Section~\ref{info:out:DEVC} & & \ct{T} \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:particleoutputquantities} & & \\ \hline +\ct{PIPE_INDEX} & Integer & Section~\ref{info:pressureramp} & & 1 \\ \hline +\ct{POINTS} & Integer & Section~\ref{info:line_file} & & 1 \\ \hline +\ct{POINTS_ARRAY_X} & Real Array & Section~\ref{info:line_file} & m & \\ \hline +\ct{POINTS_ARRAY_Y} & Real Array & Section~\ref{info:line_file} & m & \\ \hline +\ct{POINTS_ARRAY_Z} & Real Array & Section~\ref{info:line_file} & m & \\ \hline +\ct{PROP_ID} & Character & Section~\ref{info:DEVC} & & \\ \hline +\ct{QUANTITY} & Character & Section~\ref{info:DEVC} & & \\ \hline +\ct{QUANTITY2} & Character & Section~\ref{info:time_integral} & & \\ \hline +\ct{QUANTITY_RANGE} & Real(2) & Section~\ref{info:statistics} & & \num{-1E50},\num{1E50} \rule{0pt}{2.3ex} \\ \hline +\ct{REAC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline +\ct{RELATIVE} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline +\ct{R_ID} & Character & Section~\ref{info:line_file} & & \\ \hline +\ct{ROTATION} & Real & Section~\ref{info:DEVC} & deg. & 0 \\ \hline +\ct{SETPOINT} & Real & Section~\ref{info:basic_control} & & \\ \hline +\ct{SMOOTHING_FACTOR} & Real & Section~\ref{info:basic_control} & & 0 \\ \hline +\ct{SMOOTHING_TIME} & Real & Section~\ref{info:basic_control} & s & \\ \hline +\ct{SPATIAL_STATISTIC} & Character & Section~\ref{info:statistics} & & \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline +\ct{STATISTICS_END} & Real & Section~\ref{info:rmscovcorr} & s & \ct{T_END}\\ \hline +\ct{STATISTICS_START} & Real & Section~\ref{info:rmscovcorr} & s & \ct{T_BEGIN}\\ \hline +\ct{SURF_ID} & Character & Section~\ref{info:statistics} & & \\ \hline +\ct{TEMPORAL_STATISTIC} & Character & Section~\ref{info:time_integral} & & \\ \hline +\ct{TIME_AVERAGED} & Logical & Section~\ref{info:out:DEVC} & & \\ \hline +\ct{TIME_HISTORY} & Logical & Section~\ref{info:line_file} & & \\ \hline +\ct{TIME_PERIOD} & Real & Section~\ref{info:time_integral} & s & \\ \hline +\ct{TRIP_DIRECTION} & Integer & Section~\ref{info:basic_control} & & 1 \\ \hline +\ct{UNITS} & Character & Section~\ref{info:out:DEVC} & & \\ \hline +\ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline +\ct{XB(6)} & Real Sextuplet & Section~\ref{info:statistics} & m & \\ \hline +\ct{XBP(6)} & Real Sextuplet & Section~\ref{info:line_file} & m & \\ \hline +\ct{XYZ(3)} & Real Triplet & Section~\ref{info:DEVC} & m & \\ \hline +\ct{X_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-x} \\ \hline +\ct{Y_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-y} \\ \hline +\ct{Z_ID} & Character & Section~\ref{info:line_file} & & \ct{ID-z} \\ \hline +\ct{XYZ_UNITS} & Character & Section~\ref{info:line_file} & & \ct{'m'} \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12131,89 +12139,89 @@ \section{\texorpdfstring{{\tt DEVC}}{DEVC} (Device Parameters)} \section{\texorpdfstring{{\tt DUMP}}{DUMP} (Output Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Output control parameters (\ct{DUMP} namelist group)]{For more information see Chapter~\ref{info:DUMP}.} - \label{tbl:DUMP} \\ - \hline - \multicolumn{5}{|c|}{\ct{DUMP} (Output Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{DUMP} (Output Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{BINGEOM_DIR} & Character & Section~\ref{subsec:readbin} & & \\ \hline - \ct{CFL_FILE} & Logical & Section~\ref{info:TIME_Control} & & \ct{F} \\ \hline - \ct{CLIP_RESTART_FILES} & Logical & Section~\ref{info:restart} & & \ct{T} \\ \hline - \ct{COLUMN_DUMP_LIMIT} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline - \ct{CTRL_COLUMN_LIMIT} & Integer & Section~\ref{info:out:DEVC} & & 254 \\ \hline - \ct{DECIMAL_SPECIFIER} & Character & Chapter~\ref{chapter:output_formats} & & \ct{'PERIOD'} \\ \hline - \ct{DEVC_COLUMN_LIMIT} & Integer & Section~\ref{info:out:DEVC} & & 254 \\ \hline - \ct{DIAGNOSTICS_INTERVAL} & Integer & Section~\ref{info:monitoring_progress} & & 100 \\ \hline - \ct{DT_BNDF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_CPU} & Real & Section~\ref{out:CPU} & s & $2 \Delta t$ \\ \hline - \ct{DT_CTRL} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_DEVC} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_FLUSH} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_HRR} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_HVAC} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_ISOF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_MASS} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_PART} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_PL3D} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline - \ct{DT_PROF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_RADF} & Real & Section~\ref{info:RADF} & s & $2 \Delta t$ \\ \hline - \ct{DT_RESTART} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline - \ct{DT_SL3D} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline - \ct{DT_SLCF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{DT_SMOKE3D} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline - \ct{SMV_PARALLEL_WRITE} & Logical & Section~\ref{info:DUMP} & & \ct{T} \\ \hline - \ct{DT_SPEC} & Real & Section~\ref{info:CSVF} & s & \\ \hline - \ct{DT_TMP} & Real & Section~\ref{info:CSVF} & s & \\ \hline - \ct{DT_UVW} & Real & Section~\ref{info:CSVF} & s & \\ \hline - \ct{FLUSH_FILE_BUFFERS} & Logical & Section~\ref{info:DT_DUMP} & & \ct{T} \\ \hline - \ct{HRRPUV_MAX_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{kW/m^3} & 1200 \rule{0pt}{2.3ex} \\ \hline - \ct{MASS_FILE} & Logical & Section~\ref{info:MASS_FILE} & & \ct{F} \\ \hline - \ct{MAXIMUM_PARTICLES} & Integer & Section~\ref{info:controlling_droplets}& & \num{1e6} \rule{0pt}{2.3ex} \\ \hline - \ct{NFRAMES} & Integer & Section~\ref{info:DT_DUMP} & & 1000 \\ \hline - \ct{PLOT3D_PART_ID(5)} & Char.~Quint & Section~\ref{info:PL3D} & & \\ \hline - \ct{PLOT3D_QUANTITY(5)} & Char.~Quint & Section~\ref{info:PL3D} & & Section~\ref{info:PL3D} \\ \hline - \ct{PLOT3D_SPEC_ID(5)} & Char.~Quint & Section~\ref{info:PL3D} & & \\ \hline - \ct{PLOT3D_VELO_INDEX} & Int.~Quint & Section~\ref{info:velocity} & & 0 \\ \hline - \ct{RAMP_BNDF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_CPU} & Character & Section~\ref{out:CPU} & & \\ \hline - \ct{RAMP_CTRL} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_DEVC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_FLUSH} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_HRR} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_HVAC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_ISOF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_MASS} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_PART} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_PL3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_PROF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_RADF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_RESTART} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_SL3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_SLCF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_SMOKE3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_SPEC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_TMP} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RAMP_UVW} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline - \ct{RENDER_FILE} & Character & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline - \ct{RESULTS_DIR} & Character & Section~\ref{info:DUMP} & & \\ \hline - \ct{SIG_FIGS} & Integer & Section~\ref{info:SIG_FIGS} & & 8 \\ \hline - \ct{SIG_FIGS_EXP} & Integer & Section~\ref{info:SIG_FIGS} & & 3 \\ \hline - \ct{SMOKE3D} & Logical & Section~\ref{info:DT_DUMP} & & \ct{T} \\ \hline - \ct{STATUS_FILES} & Logical & Section~\ref{info:DT_DUMP} & & \ct{F} \\ \hline - \ct{SUPPRESS_DIAGNOSTICS} & Logical & Section~\ref{info:monitoring_progress} & & \ct{F} \\ \hline - \ct{TEMP_MAX_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{\degreeCelsius} & 2000 \\ \hline - \ct{TEMP_MIN_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{\degreeCelsius} & 20 \\ \hline - \ct{VELOCITY_ERROR_FILE} & Logical & Section~\ref{info:TIMING} & & \ct{F} \\ \hline - \ct{WRITE_STL} & Logical & Section~\ref{info:stl} & & \ct{F} \\ \hline - \ct{WRITE_XYZ} & Logical & Section~\ref{info:PL3D} & & \ct{F} \\ \hline +\caption[Output control parameters (\ct{DUMP} namelist group)]{For more information see Chapter~\ref{info:DUMP}.} +\label{tbl:DUMP} \\ +\hline +\multicolumn{5}{|c|}{\ct{DUMP} (Output Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{DUMP} (Output Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{BINGEOM_DIR} & Character & Section~\ref{subsec:readbin} & & \\ \hline +\ct{CFL_FILE} & Logical & Section~\ref{info:TIME_Control} & & \ct{F} \\ \hline +\ct{CLIP_RESTART_FILES} & Logical & Section~\ref{info:restart} & & \ct{T} \\ \hline +\ct{COLUMN_DUMP_LIMIT} & Logical & Section~\ref{info:out:DEVC} & & \ct{F} \\ \hline +\ct{CTRL_COLUMN_LIMIT} & Integer & Section~\ref{info:out:DEVC} & & 254 \\ \hline +\ct{DECIMAL_SPECIFIER} & Character & Chapter~\ref{chapter:output_formats} & & \ct{'PERIOD'} \\ \hline +\ct{DEVC_COLUMN_LIMIT} & Integer & Section~\ref{info:out:DEVC} & & 254 \\ \hline +\ct{DIAGNOSTICS_INTERVAL} & Integer & Section~\ref{info:monitoring_progress} & & 100 \\ \hline +\ct{DT_BNDF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_CPU} & Real & Section~\ref{out:CPU} & s & $2 \Delta t$ \\ \hline +\ct{DT_CTRL} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_DEVC} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_FLUSH} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_HRR} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_HVAC} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_ISOF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_MASS} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_PART} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_PL3D} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline +\ct{DT_PROF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_RADF} & Real & Section~\ref{info:RADF} & s & $2 \Delta t$ \\ \hline +\ct{DT_RESTART} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline +\ct{DT_SL3D} & Real & Section~\ref{info:DT_DUMP} & s & $2 \Delta t$ \\ \hline +\ct{DT_SLCF} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{DT_SMOKE3D} & Real & Section~\ref{info:DT_DUMP} & s & $\Delta t$\ct{/NFRAMES} \\ \hline +\ct{SMV_PARALLEL_WRITE} & Logical & Section~\ref{info:DUMP} & & \ct{T} \\ \hline +\ct{DT_SPEC} & Real & Section~\ref{info:CSVF} & s & \\ \hline +\ct{DT_TMP} & Real & Section~\ref{info:CSVF} & s & \\ \hline +\ct{DT_UVW} & Real & Section~\ref{info:CSVF} & s & \\ \hline +\ct{FLUSH_FILE_BUFFERS} & Logical & Section~\ref{info:DT_DUMP} & & \ct{T} \\ \hline +\ct{HRRPUV_MAX_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{kW/m^3} & 1200 \rule{0pt}{2.3ex} \\ \hline +\ct{MASS_FILE} & Logical & Section~\ref{info:MASS_FILE} & & \ct{F} \\ \hline +\ct{MAXIMUM_PARTICLES} & Integer & Section~\ref{info:controlling_droplets}& & \num{1e6} \rule{0pt}{2.3ex} \\ \hline +\ct{NFRAMES} & Integer & Section~\ref{info:DT_DUMP} & & 1000 \\ \hline +\ct{PLOT3D_PART_ID(5)} & Char.~Quint & Section~\ref{info:PL3D} & & \\ \hline +\ct{PLOT3D_QUANTITY(5)} & Char.~Quint & Section~\ref{info:PL3D} & & Section~\ref{info:PL3D} \\ \hline +\ct{PLOT3D_SPEC_ID(5)} & Char.~Quint & Section~\ref{info:PL3D} & & \\ \hline +\ct{PLOT3D_VELO_INDEX} & Int.~Quint & Section~\ref{info:velocity} & & 0 \\ \hline +\ct{RAMP_BNDF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_CPU} & Character & Section~\ref{out:CPU} & & \\ \hline +\ct{RAMP_CTRL} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_DEVC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_FLUSH} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_HRR} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_HVAC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_ISOF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_MASS} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_PART} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_PL3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_PROF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_RADF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_RESTART} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_SL3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_SLCF} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_SMOKE3D} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_SPEC} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_TMP} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RAMP_UVW} & Character & Section~\ref{info:DT_DUMP} & & \\ \hline +\ct{RENDER_FILE} & Character & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline +\ct{RESULTS_DIR} & Character & Section~\ref{info:DUMP} & & \\ \hline +\ct{SIG_FIGS} & Integer & Section~\ref{info:SIG_FIGS} & & 8 \\ \hline +\ct{SIG_FIGS_EXP} & Integer & Section~\ref{info:SIG_FIGS} & & 3 \\ \hline +\ct{SMOKE3D} & Logical & Section~\ref{info:DT_DUMP} & & \ct{T} \\ \hline +\ct{STATUS_FILES} & Logical & Section~\ref{info:DT_DUMP} & & \ct{F} \\ \hline +\ct{SUPPRESS_DIAGNOSTICS} & Logical & Section~\ref{info:monitoring_progress} & & \ct{F} \\ \hline +\ct{TEMP_MAX_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{\degreeCelsius} & 2000 \\ \hline +\ct{TEMP_MIN_SMV} & Real & Section~\ref{info:SMOKE3D} & \unit{\degreeCelsius} & 20 \\ \hline +\ct{VELOCITY_ERROR_FILE} & Logical & Section~\ref{info:TIMING} & & \ct{F} \\ \hline +\ct{WRITE_STL} & Logical & Section~\ref{info:stl} & & \ct{F} \\ \hline +\ct{WRITE_XYZ} & Logical & Section~\ref{info:PL3D} & & \ct{F} \\ \hline \end{xltabular} @@ -12228,77 +12236,77 @@ \section{\texorpdfstring{{\tt DUMP}}{DUMP} (Output Parameters)} \section{\texorpdfstring{{\tt GEOM}}{GEOM} (Unstructured Geometry Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Unstructured geometry parameters (\ct{GEOM} namelist group)]{For more information see Section~\ref{info:GEOM}.} - \label{tbl:GEOM} \\ - \hline - \multicolumn{5}{|c|}{\ct{GEOM} (Unstructured Geometry Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{{\tt GEOM} (Unstructured Geometry Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{BINARY_FILE} & Character & Section~\ref{subsec:readbin} & & \\ \hline - \ct{BNDF_GEOM} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline - \ct{CELL_BLOCK_IOR} & Integer & Section~\ref{info:thin_geom} & & 0 \\ \hline - \ct{CELL_BLOCK_ORIENTATION} & Real Triplet & Section~\ref{info:thin_geom} & & 0.0,0.0,0.0 \\ \hline - \ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline - \ct{CYLINDER_LENGTH} & Real & Section~\ref{info:GEOM_cyls} & m & \\ \hline - \ct{CYLINDER_RADIUS} & Real & Section~\ref{info:GEOM_cyls} & m & \\ \hline - \ct{CYLINDER_ORIGIN} & Real Triplet & Section~\ref{info:GEOM_cyls} & m & \\ \hline - \ct{CYLINDER_AXIS} & Real Triplet & Section~\ref{info:GEOM_cyls} & & \\ \hline - \ct{CYLINDER_NSEG_AXIS} & Integer & Section~\ref{info:GEOM_cyls} & & \\ \hline - \ct{CYLINDER_NSEG_THETA} & Integer & Section~\ref{info:GEOM_cyls} & & \\ \hline - \ct{EXTEND_TERRAIN} & Logical & Section~\ref{info:terrain_geom} & & \ct{F} \\ \hline - \ct{EXTRUDE} & Real & Section~\ref{info:extrpolys} & m & \\ \hline - \ct{FACES} & Array of Integer Triplets & Section~\ref{info:GEOM} & & \\ \hline - \ct{ID} & Character & Section~\ref{info:GEOM} & & \ct{'geom'_\#} \\ \hline - \ct{IJK} & Integer Triplet & Section~\ref{info:geomobst} & & 2,2,2 \\ \hline - \ct{IS_TERRAIN} & Logical & Section~\ref{info:terrain_geom} & & \ct{F} \\ \hline - \ct{MOVE_ID} & Character & Section~\ref{info:transform_geom} & & \\ \hline - \ct{N_LAT} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline - \ct{N_LEVELS} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline - \ct{N_LONG} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline - \ct{POLY} & Integer Array & Section~\ref{info:extrpolys} & & \\ \hline - \ct{RGB(3)} & Integer Triplet & Section~\ref{info:colors} & & \\ \hline - \ct{SPHERE_ORIGIN} & Real Triplet & Section~\ref{info:geomsphere} & m & \\ \hline - \ct{SPHERE_RADIUS} & Real & Section~\ref{info:geomsphere} & m & \\ \hline - \ct{SURF_ID} & Character & Section~\ref{info:GEOM} & & \ct{'INERT'} \\ \hline - \ct{SURF_ID6(6)} & Character Sextuplet & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{SURF_IDS(3)} & Character Triplet & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{TEXTURE_MAPPING} & Character & Section~\ref{info:texture_map} & & \ct{'RECTANGULAR'} \\ \hline - \ct{TEXTURE_ORIGIN} & Real Triplet & Section~\ref{info:texture_map} & m & 0.0,0.0,0.0 \\ \hline - \ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1.0 \\ \hline - \ct{VERTS} & Array of Real Triplets & Section~\ref{info:GEOM} & m & \\ \hline - \ct{XB(6)} & Real Array & Section~\ref{info:geomobst} & m & \\ \hline - \ct{ZMIN} & Real & Section~\ref{info:terrain_geom} & m & \\ \hline - \ct{ZVALS} & Real Array & Section~\ref{info:terrain_geom} & m & \\ \hline - \ct{ZVAL_HORIZON} & Real & Section~\ref{info:terrain_geom} & m & \\ \hline - - % Related to moving geometry: - %\ct{AZIM} & Real & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline - %\ct{COMPONENT_ONLY} & LOGICAL & Section~\ref{info:GEOM} & & \ct{F} \\ \hline - %\ct{DAZIM} & array of Reals & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline - %\ct{DELEV} & array of Reals & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline - %\ct{DSCALE} & array of Real Triplets & Section~\ref{info:GEOM} & & 1.0 \\ \hline - %\ct{DXYZ0} & array of Real Triplets & Section~\ref{info:GEOM} & m & 0.0 \\ \hline - %\ct{DXYZ} & array of Real Triplets & Section~\ref{info:GEOM} & m & 0.0 \\ \hline - %\ct{ELEV} & Real & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline - %\ct{GAXIS} & Real Triplet & Section~\ref{info:GEOM} & & \\ \hline - %\ct{GEOM_IDS} & Real & Section~\ref{info:GEOM} & & \\ \hline - %\ct{GROTATE} & Real Triplet & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline - %\ct{SCALE} & Real Triplet & Section~\ref{info:GEOM} & & 1.0,1.0,1.0 \\ \hline - %\ct{XYZ0} & Real Triplet & Section~\ref{info:GEOM} & m & 0.0 \\ \hline - %\ct{XYZ} & Real Triplet & Section~\ref{info:GEOM} & m & 0.0 \\ \hline - - %\ct{AZIM_DOT} & Real & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline - %\ct{ELEV_DOT} & Real & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline - %\ct{GROTATE_DOT} & Real Triplet & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline - %\ct{SCALE_DOT} & Real Triplet & Section~\ref{info:GEOM} & 1/s & 1.0 \\ \hline - %\ct{XYZ_DOT} & Real Triplet & Section~\ref{info:GEOM} & m/s & 0.0 \\ \hline +\caption[Unstructured geometry parameters (\ct{GEOM} namelist group)]{For more information see Section~\ref{info:GEOM}.} +\label{tbl:GEOM} \\ +\hline +\multicolumn{5}{|c|}{\ct{GEOM} (Unstructured Geometry Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{{\tt GEOM} (Unstructured Geometry Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{BINARY_FILE} & Character & Section~\ref{subsec:readbin} & & \\ \hline +\ct{BNDF_GEOM} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline +\ct{CELL_BLOCK_IOR} & Integer & Section~\ref{info:thin_geom} & & 0 \\ \hline +\ct{CELL_BLOCK_ORIENTATION} & Real Triplet & Section~\ref{info:thin_geom} & & 0.0,0.0,0.0 \\ \hline +\ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline +\ct{CYLINDER_LENGTH} & Real & Section~\ref{info:GEOM_cyls} & m & \\ \hline +\ct{CYLINDER_RADIUS} & Real & Section~\ref{info:GEOM_cyls} & m & \\ \hline +\ct{CYLINDER_ORIGIN} & Real Triplet & Section~\ref{info:GEOM_cyls} & m & \\ \hline +\ct{CYLINDER_AXIS} & Real Triplet & Section~\ref{info:GEOM_cyls} & & \\ \hline +\ct{CYLINDER_NSEG_AXIS} & Integer & Section~\ref{info:GEOM_cyls} & & \\ \hline +\ct{CYLINDER_NSEG_THETA} & Integer & Section~\ref{info:GEOM_cyls} & & \\ \hline +\ct{EXTEND_TERRAIN} & Logical & Section~\ref{info:terrain_geom} & & \ct{F} \\ \hline +\ct{EXTRUDE} & Real & Section~\ref{info:extrpolys} & m & \\ \hline +\ct{FACES} & Array of Integer Triplets & Section~\ref{info:GEOM} & & \\ \hline +\ct{ID} & Character & Section~\ref{info:GEOM} & & \ct{'geom'_\#} \\ \hline +\ct{IJK} & Integer Triplet & Section~\ref{info:geomobst} & & 2,2,2 \\ \hline +\ct{IS_TERRAIN} & Logical & Section~\ref{info:terrain_geom} & & \ct{F} \\ \hline +\ct{MOVE_ID} & Character & Section~\ref{info:transform_geom} & & \\ \hline +\ct{N_LAT} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline +\ct{N_LEVELS} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline +\ct{N_LONG} & Integer & Section~\ref{info:geomsphere} & & 0 \\ \hline +\ct{POLY} & Integer Array & Section~\ref{info:extrpolys} & & \\ \hline +\ct{RGB(3)} & Integer Triplet & Section~\ref{info:colors} & & \\ \hline +\ct{SPHERE_ORIGIN} & Real Triplet & Section~\ref{info:geomsphere} & m & \\ \hline +\ct{SPHERE_RADIUS} & Real & Section~\ref{info:geomsphere} & m & \\ \hline +\ct{SURF_ID} & Character & Section~\ref{info:GEOM} & & \ct{'INERT'} \\ \hline +\ct{SURF_ID6(6)} & Character Sextuplet & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{SURF_IDS(3)} & Character Triplet & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{TEXTURE_MAPPING} & Character & Section~\ref{info:texture_map} & & \ct{'RECTANGULAR'} \\ \hline +\ct{TEXTURE_ORIGIN} & Real Triplet & Section~\ref{info:texture_map} & m & 0.0,0.0,0.0 \\ \hline +\ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1.0 \\ \hline +\ct{VERTS} & Array of Real Triplets & Section~\ref{info:GEOM} & m & \\ \hline +\ct{XB(6)} & Real Array & Section~\ref{info:geomobst} & m & \\ \hline +\ct{ZMIN} & Real & Section~\ref{info:terrain_geom} & m & \\ \hline +\ct{ZVALS} & Real Array & Section~\ref{info:terrain_geom} & m & \\ \hline +\ct{ZVAL_HORIZON} & Real & Section~\ref{info:terrain_geom} & m & \\ \hline + +% Related to moving geometry: +%\ct{AZIM} & Real & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline +%\ct{COMPONENT_ONLY} & LOGICAL & Section~\ref{info:GEOM} & & \ct{F} \\ \hline +%\ct{DAZIM} & array of Reals & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline +%\ct{DELEV} & array of Reals & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline +%\ct{DSCALE} & array of Real Triplets & Section~\ref{info:GEOM} & & 1.0 \\ \hline +%\ct{DXYZ0} & array of Real Triplets & Section~\ref{info:GEOM} & m & 0.0 \\ \hline +%\ct{DXYZ} & array of Real Triplets & Section~\ref{info:GEOM} & m & 0.0 \\ \hline +%\ct{ELEV} & Real & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline +%\ct{GAXIS} & Real Triplet & Section~\ref{info:GEOM} & & \\ \hline +%\ct{GEOM_IDS} & Real & Section~\ref{info:GEOM} & & \\ \hline +%\ct{GROTATE} & Real Triplet & Section~\ref{info:GEOM} & deg & 0.0 \\ \hline +%\ct{SCALE} & Real Triplet & Section~\ref{info:GEOM} & & 1.0,1.0,1.0 \\ \hline +%\ct{XYZ0} & Real Triplet & Section~\ref{info:GEOM} & m & 0.0 \\ \hline +%\ct{XYZ} & Real Triplet & Section~\ref{info:GEOM} & m & 0.0 \\ \hline + +%\ct{AZIM_DOT} & Real & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline +%\ct{ELEV_DOT} & Real & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline +%\ct{GROTATE_DOT} & Real Triplet & Section~\ref{info:GEOM} & deg/s & 0.0 \\ \hline +%\ct{SCALE_DOT} & Real Triplet & Section~\ref{info:GEOM} & 1/s & 1.0 \\ \hline +%\ct{XYZ_DOT} & Real Triplet & Section~\ref{info:GEOM} & m/s & 0.0 \\ \hline \end{xltabular} @@ -12310,21 +12318,21 @@ \section{\texorpdfstring{{\tt GEOM}}{GEOM} (Unstructured Geometry Parameters)} \section{\texorpdfstring{{\tt HEAD}}{HEAD} (Header Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Header parameters (\ct{HEAD} namelist group)]{For more information see Section~\ref{info:HEAD}.} - \label{tbl:HEAD} \\ - \hline - \multicolumn{5}{|c|}{\ct{HEAD} (Header Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{HEAD} (Header Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CHID} & Character & Section~\ref{info:HEAD} & & trimmed input file name \\ \hline - \ct{TITLE} & Character & Section~\ref{info:HEAD} & & \\ \hline +\caption[Header parameters (\ct{HEAD} namelist group)]{For more information see Section~\ref{info:HEAD}.} +\label{tbl:HEAD} \\ +\hline +\multicolumn{5}{|c|}{\ct{HEAD} (Header Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{HEAD} (Header Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CHID} & Character & Section~\ref{info:HEAD} & & Trimmed input file name \\ \hline +\ct{TITLE} & Character & Section~\ref{info:HEAD} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12334,27 +12342,27 @@ \section{\texorpdfstring{{\tt HOLE}}{HOLE} (Obstruction Cutout Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Obstruction cutout parameters (\ct{HOLE} namelist group)]{For more information see Section~\ref{info:HOLE}.} - \label{tbl:HOLE} \\ - \hline - \multicolumn{5}{|c|}{\ct{HOLE} (Obstruction Cutout Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{HOLE} (Obstruction Cutout Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:HOLE} & & \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:HOLE} & & \\ \hline - \ct{ID} & Character & Identifier & & \\ \hline - \ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{RGB(3)} & Integer Triplet & Section~\ref{info:colors} & & \\ \hline - \ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1 \\ \hline - \ct{XB(6)} & Real Sextuplet & Section~\ref{info:MULT} & m & \\ \hline +\caption[Obstruction cutout parameters (\ct{HOLE} namelist group)]{For more information see Section~\ref{info:HOLE}.} +\label{tbl:HOLE} \\ +\hline +\multicolumn{5}{|c|}{\ct{HOLE} (Obstruction Cutout Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{HOLE} (Obstruction Cutout Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:HOLE} & & \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:HOLE} & & \\ \hline +\ct{ID} & Character & Identifier & & \\ \hline +\ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{RGB(3)} & Integer Triplet & Section~\ref{info:colors} & & \\ \hline +\ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1 \\ \hline +\ct{XB(6)} & Real Sextuplet & Section~\ref{info:MULT} & m & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12364,73 +12372,73 @@ \section{\texorpdfstring{{\tt HVAC}}{HVAC} (HVAC System Definition)} \begin{xltabular}{\textwidth}{|p{5.5cm}|X|X|l|X|} - \caption[HVAC parameters (\ct{HVAC} namelist group)]{For more information see Section~\ref{info:HVAC}.} - \label{tbl:HVAC} \\ - \hline - \multicolumn{5}{|c|}{\ct{HVAC} (HVAC System Definition)} \\ - \hline - Keyword & Type & Description & Unit & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{HVAC} (HVAC System Definition)} \\ - \hline - Keyword & Type & Description & Unit & Default \\ \hline \hline - \endhead - \ct{AIRCOIL_ID} & Character & Section~\ref{info:HVACduct} & & \\ \hline - \ct{AMBIENT} & Logical & Section~\ref{info:HVACnode} & & \ct{F} \\ \hline - \ct{AREA} & Real & Section~\ref{info:HVACduct} & \unit{m^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{CLEAN_LOSS} & Real & Section~\ref{info:HVACfilter} & & \\ \hline - \ct{COOLANT_MASS_FLOW} & Real & Section~\ref{info:HVACaircoil} & kg/s & \\ \hline - \ct{COOLANT_SPECIFIC_HEAT} & Real & Section~\ref{info:HVACaircoil} & \unit{kJ/(kg.K)} & \\ \hline - \ct{COOLANT_TEMPERATURE} & Real & Section~\ref{info:HVACaircoil} & \unit{\degreeCelsius} & \\ \hline - \ct{CTRL_ID} & Character & Sections~\ref{info:HVACduct} & & \\ \hline - \ct{DAMPER} & Logical & Sections~\ref{info:HVACduct}, \ref{info:HVACdamper} & & \ct{F} \\ \hline - \ct{DEVC_ID} & Character & Sections ~\ref{info:HVACduct} & & \\ \hline - \ct{DIAMETER} & Real & Section~\ref{info:HVACduct} & m & \\ \hline - \ct{DISCHARGE_COEFFICIENT} & Real & Section~\ref{info:Leaks} & & 1. \\ \hline - \ct{DRY} & Log. Array & Section~\ref{info:dry} & & \\ \hline - \ct{DUCT_ID} & Char.~Array & Section~\ref{info:HVACnode} & & \\ \hline - \ct{EFFICIENCY} & Real Array & Sections~\ref{info:HVACfilter}, \ref{info:HVACaircoil} & & 1.0 \\ \hline - \ct{FAN_ID} & Character & Section~\ref{info:HVACduct} & & \\ \hline - \ct{FILTER_ID} & Character & Section~\ref{info:HVACnode} & & \\ \hline - \ct{FIXED_Q} & Real & Section~\ref{info:HVACaircoil} & kW & \\ \hline - \ct{GEOM} & Logical & Section~\ref{info:hvac_geom} & & \ct{F} \\ \hline - \ct{GEOM2} & Logical & Section~\ref{info:hvac_geom} & & \ct{F} \\ \hline - \ct{ID} & Character & Section~\ref{info:HVAC} & & \\ \hline - \ct{LEAK_ENTHALPY} & Logical & Section~\ref{info:local_leakage} & & \ct{F} \\ \hline - \ct{LEAK_PRESSURE_EXPONENT} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline - \ct{LEAK_REFERENCE_PRESSURE} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline - \ct{LENGTH} & Real & Section~\ref{info:HVACduct} & m & \\ \hline - \ct{LOADING} & Real Array & Section ~\ref{info:HVACfilter} & kg & 0.0 \\ \hline - \ct{LOADING_MULTIPLIER} & Real Array & Section ~\ref{info:HVACfilter} & \unit{\per\kg} & 1.0 \rule{0pt}{2.3ex} \\ \hline - \ct{LOSS} & Real Array & Sections ~\ref{info:HVACduct} -- \ref{info:HVACfilter} & & 0.0 \\ \hline - \ct{MASS_FLOW} & Real & Section~\ref{info:HVACduct} & kg/s & \\ \hline - \ct{MAX_FLOW} & Real & Section ~\ref{info:HVACfan} & \unit{m^3/s} & \rule{0pt}{2.3ex} \\ \hline - \ct{MAX_PRESSURE} & Real & Section ~\ref{info:HVACfan} & Pa & \\ \hline - \ct{N_CELLS} & Integer & Section~\ref{info:hvacmasstransport} & & \\ \hline - \ct{NETWORK_ID} & Character & Section~\ref{info:HVACduct}, \ref{info:HVACnode} & & \\ \hline - \ct{NODE_ID} & Char.~Doublet & Section~\ref{info:HVACduct} & & \\ \hline - \ct{PERIMETER} & Real & Section~\ref{info:HVACduct} & m & \\ \hline - \ct{QUANTITY} & Char.~Array & Sections ~\ref{info:hvacoutputquantities} & & \\ \hline - \ct{QUANTITY_SPEC_ID} & Char.~Array & Sections ~\ref{info:hvacoutputquantities} & & \\ \hline - \ct{RAMP_ID} & Character & Sections ~\ref{info:HVACduct}, \ref{info:HVACfilter}, \ref{info:HVACfan} & & \\ \hline - \ct{RAMP_LOSS} & Character & Sections~\ref{info:HVACduct}, \ref{info:HVACdamper} & & \\ \hline - \ct{REVERSE} & Logical & Section~\ref{info:HVACduct} & & \ct{F} \\ \hline - \ct{ROUND} & Logical & Section~\ref{info:HVACduct} & & \ct{T} \\ \hline - \ct{ROUGHNESS} & Real & Section~\ref{info:HVACduct} & m & 0.0 \\ \hline - \ct{SPEC_ID} & Char.~Array & Section ~\ref{info:HVACfilter} & & \\ \hline - \ct{SQUARE} & Logical & Section~\ref{info:HVACduct} & & \ct{T} \\ \hline - \ct{TAU_AC} & Real & Section ~\ref{info:HVACaircoil} & s & 1.0 \\ \hline - \ct{TAU_FAN} & Real & Section ~\ref{info:HVACfan} & s & 1.0 \\ \hline - \ct{TAU_VF} & Real & Section~\ref{info:HVACduct} & s & 1.0 \\ \hline - \ct{TRANSPORT_PARTICLES} & Logical & Section~\ref{info:local_leakage} & s & \ct{F} \\ \hline - \ct{TYPE_ID} & Character & Section~\ref{info:HVAC} & & \\ \hline - \ct{VENT_ID} & Character & Section~\ref{info:HVACnode} & & \\ \hline - \ct{VENT2_ID} & Character & Section~\ref{info:local_leakage} & & \\ \hline - \ct{VOLUME_FLOW} & Real & Section~\ref{info:HVACduct}, \ref{info:HVACfan} & \unit{m^3/s} & \rule{0pt}{2.4ex} \\ \hline - \ct{WAYPOINTS} & Real Array & Section~\ref{info:HVACduct} & m & \\ \hline - \ct{XYZ} & Real Triplet & Section~\ref{info:HVACnode} & m & 0.0 \\ \hline +\caption[HVAC parameters (\ct{HVAC} namelist group)]{For more information see Section~\ref{info:HVAC}.} +\label{tbl:HVAC} \\ +\hline +\multicolumn{5}{|c|}{\ct{HVAC} (HVAC System Definition)} \\ +\hline +Keyword & Type & Description & Unit & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{HVAC} (HVAC System Definition)} \\ +\hline +Keyword & Type & Description & Unit & Default \\ \hline \hline +\endhead +\ct{AIRCOIL_ID} & Character & Section~\ref{info:HVACduct} & & \\ \hline +\ct{AMBIENT} & Logical & Section~\ref{info:HVACnode} & & \ct{F} \\ \hline +\ct{AREA} & Real & Section~\ref{info:HVACduct} & \unit{m^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{CLEAN_LOSS} & Real & Section~\ref{info:HVACfilter} & & \\ \hline +\ct{COOLANT_MASS_FLOW} & Real & Section~\ref{info:HVACaircoil} & kg/s & \\ \hline +\ct{COOLANT_SPECIFIC_HEAT} & Real & Section~\ref{info:HVACaircoil} & \unit{kJ/(kg.K)} & \\ \hline +\ct{COOLANT_TEMPERATURE} & Real & Section~\ref{info:HVACaircoil} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{CTRL_ID} & Character & Sections~\ref{info:HVACduct} & & \\ \hline +\ct{DAMPER} & Logical & Sections~\ref{info:HVACduct}, \ref{info:HVACdamper} & & \ct{F} \\ \hline +\ct{DEVC_ID} & Character & Sections ~\ref{info:HVACduct} & & \\ \hline +\ct{DIAMETER} & Real & Section~\ref{info:HVACduct} & m & \\ \hline +\ct{DISCHARGE_COEFFICIENT} & Real & Section~\ref{info:Leaks} & & 1 \\ \hline +\ct{DRY} & Log. Array & Section~\ref{info:dry} & & \ct{F} \\ \hline +\ct{DUCT_ID} & Char.~Array & Section~\ref{info:HVACnode} & & \\ \hline +\ct{EFFICIENCY} & Real Array & Sections~\ref{info:HVACfilter}, \ref{info:HVACaircoil} & & 1. \\ \hline +\ct{FAN_ID} & Character & Section~\ref{info:HVACduct} & & \\ \hline +\ct{FILTER_ID} & Character & Section~\ref{info:HVACnode} & & \\ \hline +\ct{FIXED_Q} & Real & Section~\ref{info:HVACaircoil} & kW & \\ \hline +\ct{GEOM} & Logical & Section~\ref{info:hvac_geom} & & \ct{F} \\ \hline +\ct{GEOM2} & Logical & Section~\ref{info:hvac_geom} & & \ct{F} \\ \hline +\ct{ID} & Character & Section~\ref{info:HVAC} & & \\ \hline +\ct{LEAK_ENTHALPY} & Logical & Section~\ref{info:local_leakage} & & \ct{F} \\ \hline +\ct{LEAK_PRESSURE_EXPONENT} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline +\ct{LEAK_REFERENCE_PRESSURE} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline +\ct{LENGTH} & Real & Section~\ref{info:HVACduct} & m & \\ \hline +\ct{LOADING} & Real Array & Section ~\ref{info:HVACfilter} & kg & 0 \\ \hline +\ct{LOADING_MULTIPLIER} & Real Array & Section ~\ref{info:HVACfilter} & \unit{\per\kg} & 1 \rule{0pt}{2.3ex} \\ \hline +\ct{LOSS} & Real Array & Sections ~\ref{info:HVACduct} -- \ref{info:HVACfilter} & & 0 \\ \hline +\ct{MASS_FLOW} & Real & Section~\ref{info:HVACduct} & kg/s & \\ \hline +\ct{MAX_FLOW} & Real & Section ~\ref{info:HVACfan} & \unit{m^3/s} & \rule{0pt}{2.3ex} \\ \hline +\ct{MAX_PRESSURE} & Real & Section ~\ref{info:HVACfan} & Pa & \\ \hline +\ct{N_CELLS} & Integer & Section~\ref{info:hvacmasstransport} & & \\ \hline +\ct{NETWORK_ID} & Character & Section~\ref{info:HVACduct}, \ref{info:HVACnode} & & \\ \hline +\ct{NODE_ID} & Char.~Doublet & Section~\ref{info:HVACduct} & & \\ \hline +\ct{PERIMETER} & Real & Section~\ref{info:HVACduct} & m & \\ \hline +\ct{QUANTITY} & Char.~Array & Sections ~\ref{info:hvacoutputquantities} & & \\ \hline +\ct{QUANTITY_SPEC_ID} & Char.~Array & Sections ~\ref{info:hvacoutputquantities} & & \\ \hline +\ct{RAMP_ID} & Character & Sections ~\ref{info:HVACduct}, \ref{info:HVACfilter}, \ref{info:HVACfan} & & \\ \hline +\ct{RAMP_LOSS} & Character & Sections~\ref{info:HVACduct}, \ref{info:HVACdamper} & & \\ \hline +\ct{REVERSE} & Logical & Section~\ref{info:HVACduct} & & \ct{F} \\ \hline +\ct{ROUND} & Logical & Section~\ref{info:HVACduct} & & \ct{T} \\ \hline +\ct{ROUGHNESS} & Real & Section~\ref{info:HVACduct} & m & 0 \\ \hline +\ct{SPEC_ID} & Char.~Array & Section ~\ref{info:HVACfilter} & & \\ \hline +\ct{SQUARE} & Logical & Section~\ref{info:HVACduct} & & \ct{T} \\ \hline +\ct{TAU_AC} & Real & Section ~\ref{info:HVACaircoil} & s & 1 \\ \hline +\ct{TAU_FAN} & Real & Section ~\ref{info:HVACfan} & s & 1 \\ \hline +\ct{TAU_VF} & Real & Section~\ref{info:HVACduct} & s & 1 \\ \hline +\ct{TRANSPORT_PARTICLES} & Logical & Section~\ref{info:local_leakage} & s & \ct{F} \\ \hline +\ct{TYPE_ID} & Character & Section~\ref{info:HVAC} & & \\ \hline +\ct{VENT_ID} & Character & Section~\ref{info:HVACnode} & & \\ \hline +\ct{VENT2_ID} & Character & Section~\ref{info:local_leakage} & & \\ \hline +\ct{VOLUME_FLOW} & Real & Section~\ref{info:HVACduct}, \ref{info:HVACfan} & \unit{m^3/s} & \rule{0pt}{2.4ex} \\ \hline +\ct{WAYPOINTS} & Real Array & Section~\ref{info:HVACduct} & m & \\ \hline +\ct{XYZ} & Real Triplet & Section~\ref{info:HVACnode} & m & \\ \hline \end{xltabular} @@ -12440,66 +12448,66 @@ \section{\texorpdfstring{{\tt HVAC}}{HVAC} (HVAC System Definition)} \needspace{2.5in} \section{\texorpdfstring{{\tt INIT}}{INIT} (Initial Conditions)} - -\begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Initial conditions (\ct{INIT} namelist group)]{For more information see Section~\ref{info:INIT}.} - \label{tbl:INIT} \\ - \hline - \multicolumn{5}{|c|}{\ct{INIT} (Initial Conditions)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{INIT} (Initial Conditions)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{BULK_DENSITY_FACTOR} & Real & Section~\ref{bulk_density_file} & & 1. \\ \hline - \ct{BULK_DENSITY_FILE} & Character & Section~\ref{bulk_density_file} & & \\ \hline - \ct{CELL_CENTERED} & Logical & Section~\ref{info:initial_droplets} & & \ct{F} \\ \hline - \ct{CROWN_BASE_HEIGHT} & Real & Section~\ref{info:trees} & m & \\ \hline - \ct{CROWN_BASE_WIDTH} & Real & Section~\ref{info:trees} & m & \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline - \ct{DB} & Character & Section~\ref{info:init_species} & & \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline - \ct{DIAMETER} & Real & Section~\ref{info:initial_droplets} & \unit{\micro m} & \\ \hline - \ct{DRY} & Logical & Section~\ref{pine_needles} & & \ct{F} \\ \hline - \ct{DT_INSERT} & Real & Section~\ref{info:initial_droplets} & s & \\ \hline - \ct{DX} & Real & Section~\ref{info:initial_droplets} & m & 0. \\ \hline - \ct{DY} & Real & Section~\ref{info:initial_droplets} & m & 0. \\ \hline - \ct{DZ} & Real & Section~\ref{info:initial_droplets} & m & 0. \\ \hline - \ct{HEIGHT} & Real & Section~\ref{info:initial_droplets} & m & \\ \hline - \ct{HRRPUV} & Real & Section~\ref{info:init_hrrpuv} & \unit{kW/m^3} & \rule{0pt}{2.3ex} \\ \hline - \ct{ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline - \ct{INNER_RADIUS} & Real & Section~\ref{info:initial_droplets} & m & 0. \\ \hline - \ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:init_species} & kg/kg & Ambient \\ \hline - \ct{MASS_PER_TIME} & Real & Section~\ref{info:initial_droplets} & kg/s & \\ \hline - \ct{MASS_PER_VOLUME} & Real & Section~\ref{info:initial_droplets} & \unit{kg/m^3} & 1 \rule{0pt}{2.3ex} \\ \hline - \ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{NODE_ID} & Character & Section~\ref{info:hvacmasstransport} & & \\ \hline - \ct{N_PARTICLES} & Integer & Section~\ref{info:initial_droplets} & & 0 \\ \hline - \ct{N_PARTICLES_PER_CELL} & Integer & Section~\ref{info:initial_droplets} & & 0 \\ \hline - \ct{ORIENTATION_RAMP(3)} & Character & Section~\ref{info:orientation_ramp} & & \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline - \ct{PARTICLE_WEIGHT_FACTOR} & Real & Section~\ref{info:initial_droplets} & & 1. \\ \hline - \ct{PATH_RAMP(3)} & Character & Section~\ref{info:path_ramp} & & \\ \hline - \ct{RADIATIVE_FRACTION} & Real & Section~\ref{info:init_hrrpuv} & & 0. \\ \hline - \ct{RADIUS} & Real & Section~\ref{info:initial_droplets} & m & \\ \hline - \ct{RAMP_MF_Z} & Character & Section~\ref{info:init_species} & & \\ \hline - \ct{RAMP_PART} & Character & Section~\ref{info:initial_droplets} & & \\ \hline - \ct{RAMP_Q} & Character & Section~\ref{info:init_hrrpuv} & & \\ \hline - \ct{RAMP_TMP_Z} & Character & Section~\ref{info:init_temperature} & & \\ \hline - \ct{RAMP_VF_Z} & Character & Section~\ref{info:init_species} & & \\ \hline - \ct{SHAPE} & Character & Section~\ref{info:initial_droplets} & & \ct{'BLOCK'} \\ \hline - \ct{SPEC_ID(N)} & Char.~Array & Section~\ref{info:init_species} & & \\ \hline - \ct{TEMPERATURE} & Real & Section~\ref{info:init_temperature} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline - \ct{TREE_HEIGHT} & Real & Section~\ref{info:trees} & m & \\ \hline - \ct{UNIFORM} & Logical & Section~\ref{info:initial_droplets} & & \ct{F} \\ \hline - \ct{UVW(3)} & Real Array & Section~\ref{info:initial_droplets} & m/s & 0. \\ \hline - \ct{VOLUME_FRACTION(:)} & Real Array & Section~\ref{info:init_species} & mol/mol & Ambient \\ \hline - \ct{XB(6)} & Real Array & Section~\ref{info:init_species} & m & \\ \hline - \ct{XYZ(3)} & Real Array & Section~\ref{info:initial_droplets} & m & \\ \hline + +\begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} +\caption[Initial conditions (\ct{INIT} namelist group)]{For more information see Section~\ref{info:INIT}.} +\label{tbl:INIT} \\ +\hline +\multicolumn{5}{|c|}{\ct{INIT} (Initial Conditions)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{INIT} (Initial Conditions)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{BULK_DENSITY_FACTOR} & Real & Section~\ref{bulk_density_file} & & 1 \\ \hline +\ct{BULK_DENSITY_FILE} & Character & Section~\ref{bulk_density_file} & & \\ \hline +\ct{CELL_CENTERED} & Logical & Section~\ref{info:initial_droplets} & & \ct{F} \\ \hline +\ct{CROWN_BASE_HEIGHT} & Real & Section~\ref{info:trees} & m & \\ \hline +\ct{CROWN_BASE_WIDTH} & Real & Section~\ref{info:trees} & m & \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline +\ct{DB} & Character & Section~\ref{info:init_species} & & \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline +\ct{DIAMETER} & Real & Section~\ref{info:initial_droplets} & \unit{\micro m} & \\ \hline +\ct{DRY} & Logical & Section~\ref{pine_needles} & & \ct{F} \\ \hline +\ct{DT_INSERT} & Real & Section~\ref{info:initial_droplets} & s & \\ \hline +\ct{DX} & Real & Section~\ref{info:initial_droplets} & m & 0 \\ \hline +\ct{DY} & Real & Section~\ref{info:initial_droplets} & m & 0 \\ \hline +\ct{DZ} & Real & Section~\ref{info:initial_droplets} & m & 0 \\ \hline +\ct{HEIGHT} & Real & Section~\ref{info:initial_droplets} & m & \\ \hline +\ct{HRRPUV} & Real & Section~\ref{info:init_hrrpuv} & \unit{kW/m^3} & \rule{0pt}{2.3ex} \\ \hline +\ct{ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline +\ct{INNER_RADIUS} & Real & Section~\ref{info:initial_droplets} & m & 0 \\ \hline +\ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:init_species} & kg/kg & Ambient \\ \hline +\ct{MASS_PER_TIME} & Real & Section~\ref{info:initial_droplets} & kg/s & \\ \hline +\ct{MASS_PER_VOLUME} & Real & Section~\ref{info:initial_droplets} & \unit{kg/m^3} & 1 \rule{0pt}{2.3ex} \\ \hline +\ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{NODE_ID} & Character & Section~\ref{info:hvacmasstransport} & & \\ \hline +\ct{N_PARTICLES} & Integer & Section~\ref{info:initial_droplets} & & 0 \\ \hline +\ct{N_PARTICLES_PER_CELL} & Integer & Section~\ref{info:initial_droplets} & & 0 \\ \hline +\ct{ORIENTATION_RAMP(3)} & Character & Section~\ref{info:orientation_ramp} & & \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:initial_droplets} & & \\ \hline +\ct{PARTICLE_WEIGHT_FACTOR} & Real & Section~\ref{info:initial_droplets} & & 1 \\ \hline +\ct{PATH_RAMP(3)} & Character & Section~\ref{info:path_ramp} & & \\ \hline +\ct{RADIATIVE_FRACTION} & Real & Section~\ref{info:init_hrrpuv} & & 0 \\ \hline +\ct{RADIUS} & Real & Section~\ref{info:initial_droplets} & m & \\ \hline +\ct{RAMP_MF_Z} & Character & Section~\ref{info:init_species} & & \\ \hline +\ct{RAMP_PART} & Character & Section~\ref{info:initial_droplets} & & \\ \hline +\ct{RAMP_Q} & Character & Section~\ref{info:init_hrrpuv} & & \\ \hline +\ct{RAMP_TMP_Z} & Character & Section~\ref{info:init_temperature} & & \\ \hline +\ct{RAMP_VF_Z} & Character & Section~\ref{info:init_species} & & \\ \hline +\ct{SHAPE} & Character & Section~\ref{info:initial_droplets} & & \ct{'BLOCK'} \\ \hline +\ct{SPEC_ID(N)} & Char.~Array & Section~\ref{info:init_species} & & \\ \hline +\ct{TEMPERATURE} & Real & Section~\ref{info:init_temperature} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{TREE_HEIGHT} & Real & Section~\ref{info:trees} & m & \\ \hline +\ct{UNIFORM} & Logical & Section~\ref{info:initial_droplets} & & \ct{F} \\ \hline +\ct{UVW(3)} & Real Array & Section~\ref{info:initial_droplets} & m/s & 0. \\ \hline +\ct{VOLUME_FRACTION(:)} & Real Array & Section~\ref{info:init_species} & mol/mol & Ambient \\ \hline +\ct{XB(6)} & Real Array & Section~\ref{info:init_species} & m & \\ \hline +\ct{XYZ(3)} & Real Array & Section~\ref{info:initial_droplets} & m & \\ \hline \end{xltabular} @@ -12511,28 +12519,28 @@ \section{\texorpdfstring{{\tt ISOF}}{ISOF} (Isosurface Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Isosurface parameters (\ct{ISOF} namelist group)]{For more information see Section~\ref{info:ISOF}.} - \label{tbl:ISOF} \\ - \hline - \multicolumn{5}{|c|}{\ct{ISOF} (Isosurface Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{ISOF} (Isosurface Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{DELTA} & Real & Section~\ref{info:ISOF} & & \\ \hline - \ct{QUANTITY} & Character & Section~\ref{info:ISOF} & & \\ \hline - \ct{QUANTITY2} & Character & Section~\ref{info:ISOF} & & \\ \hline - \ct{SKIP} & Character & Section~\ref{info:ISOF} & & \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:ISOF} & & \\ \hline - \ct{SPEC_ID2} & Character & Section~\ref{info:ISOF} & & \\ \hline - \ct{VALUE(:)} & Real Array & Section~\ref{info:ISOF} & & \\ \hline - \ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline - \ct{VELO_INDEX2} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline +\caption[Isosurface parameters (\ct{ISOF} namelist group)]{For more information see Section~\ref{info:ISOF}.} +\label{tbl:ISOF} \\ +\hline +\multicolumn{5}{|c|}{\ct{ISOF} (Isosurface Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{ISOF} (Isosurface Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{DELTA} & Real & Section~\ref{info:ISOF} & & \\ \hline +\ct{QUANTITY} & Character & Section~\ref{info:ISOF} & & \\ \hline +\ct{QUANTITY2} & Character & Section~\ref{info:ISOF} & & \\ \hline +\ct{SKIP} & Character & Section~\ref{info:ISOF} & & \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:ISOF} & & \\ \hline +\ct{SPEC_ID2} & Character & Section~\ref{info:ISOF} & & \\ \hline +\ct{VALUE(:)} & Real Array & Section~\ref{info:ISOF} & & \\ \hline +\ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline +\ct{VELO_INDEX2} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline \end{xltabular} @@ -12543,57 +12551,57 @@ \section{\texorpdfstring{{\tt MATL}}{MATL} (Material Properties)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Material properties (\ct{MATL} namelist group)]{For more information see Section~\ref{info:MATL}.} - \label{tbl:MATL} \\ - \hline - \multicolumn{5}{|c|}{\ct{MATL} (Material Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{MATL} (Material Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{A(:)} & Real Array & Section~\ref{info:reaction_rates} & 1/s & \\ \hline - \ct{ABSORPTION_COEFFICIENT} & Real & Section~\ref{info:thermal_properties} & 1/m & 50000. \\ \hline - \ct{ADJUST_H} & Logical & Section~\ref{solid_phase_energy_conservation} & & \ct{T} \\ \hline - \ct{ALLOW_SHRINKING} & Logical & Section~\ref{info:shrink_swell} & & \ct{T} \\ \hline - \ct{ALLOW_SWELLING} & Logical & Section~\ref{info:shrink_swell} & & \ct{T} \\ \hline - \ct{BOILING_TEMPERATURE} & Real & Section~\ref{info:liquid_fuels} & \unit{\degreeCelsius} & 5000. \\ \hline - \ct{CONDUCTIVITY} & Real & Section~\ref{info:thermal_properties} & \unit{W/(m.K)} & 0. \\ \hline - \ct{CONDUCTIVITY_RAMP} & Character & Section~\ref{info:thermal_properties} & & \\ \hline - \ct{DENSITY} & Real & Section~\ref{info:thermal_properties} & \unit{kg/m^3} & 0.\rule{0pt}{2.3ex} \\ \hline - \ct{E(:)} & Real Array & Section~\ref{info:reaction_rates} & J/mol & \\ \hline - \ct{EMISSIVITY} & Real & Section~\ref{info:thermal_properties} & & 0.9 \\ \hline - \ct{GAS_DIFFUSION_DEPTH(:)} & Real Array & Section~\ref{info:reaction_rates} & m & 0.001 \\ \hline - \ct{HEATING_RATE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius/min} & 5. \\ \hline - \ct{HEAT_OF_COMBUSTION(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kJ/kg & \\ \hline - \ct{HEAT_OF_REACTION(:)} & Real Array & Section~\ref{info:reaction_mechanism} & kJ/kg & 0. \\ \hline - \ct{ID} & Character & Section~\ref{info:SURF_MATL_Basics} & & \\ \hline - \ct{MATL_ID(:,:)} & Character & Section~\ref{info:reaction_mechanism} & & \\ \hline - \ct{MAX_REACTION_RATE(:)} & Real Array & Section~\ref{info:reaction_rates} & \unit{kg/(m^3.s)} & $\infty$ \rule{0pt}{2.3ex} \\ \hline - \ct{MW} & Real & Section~\ref{info:liquid_fuels} & g/mol & \\ \hline - \ct{N_O2(:)} & Real Array & Section~\ref{info:reaction_rates} & & 0. \\ \hline - \ct{N_REACTIONS} & Integer & Section~\ref{info:reaction_mechanism} & & 0 \\ \hline - \ct{N_S(:)} & Real Array & Section~\ref{info:reaction_rates} & & 1. \\ \hline - \ct{N_T(:)} & Real Array & Section~\ref{info:reaction_rates} & & 0. \\ \hline - \ct{NU_MATL(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0. \\ \hline - \ct{NU_PART(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0. \\ \hline - \ct{NU_SPEC(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0. \\ \hline - \ct{PART_ID(:,:)} & Char.~Array & Section~\ref{info:reaction_mechanism} & & \\ \hline - \ct{PYROLYSIS_RANGE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius} & 80. \\ \hline - \ct{REAC_RATE_DELTA} & Real & Section~\ref{info:solid_phase_stability} & & 0.05 \\ \hline - \ct{REFERENCE_ENTHALPY} & Real & Section~\ref{solid_phase_energy_conservation} & kJ/kg & \\ \hline - \ct{REFERENCE_ENTHALPY_TEMPERATURE} & Real & Section~\ref{solid_phase_energy_conservation} & K & \\ \hline - \ct{REFERENCE_RATE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & 1/s & \\ \hline - \ct{REFERENCE_TEMPERATURE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius} & \\ \hline - \ct{SPECIFIC_HEAT} & Real & Section~\ref{info:thermal_properties} & \unit{kJ/(kg.K)} & 0. \\ \hline - \ct{SPECIFIC_HEAT_RAMP} & Character & Section~\ref{info:thermal_properties} & & \\ \hline - \ct{SPEC_ID(:,:)} & Char.~Array & Section~\ref{info:reaction_mechanism} & & \\ \hline - \ct{SURFACE_OXIDATION_MODEL} & Logical & Section~\ref{veg_reaction_rates} & & \ct{F} \\ \hline - \ct{X_O2_PYRO} & Logical & Section~\ref{solid_phase_energy_conservation} & & \\ \hline +\caption[Material properties (\ct{MATL} namelist group)]{For more information see Section~\ref{info:MATL}.} +\label{tbl:MATL} \\ +\hline +\multicolumn{5}{|c|}{\ct{MATL} (Material Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{MATL} (Material Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{A(:)} & Real Array & Section~\ref{info:reaction_rates} & 1/s & \\ \hline +\ct{ABSORPTION_COEFFICIENT} & Real & Section~\ref{info:thermal_properties} & 1/m & 50000 \\ \hline +\ct{ADJUST_H} & Logical & Section~\ref{solid_phase_energy_conservation} & & \ct{T} \\ \hline +\ct{ALLOW_SHRINKING} & Logical & Section~\ref{info:shrink_swell} & & \ct{T} \\ \hline +\ct{ALLOW_SWELLING} & Logical & Section~\ref{info:shrink_swell} & & \ct{T} \\ \hline +\ct{BOILING_TEMPERATURE} & Real & Section~\ref{info:liquid_fuels} & \unit{\degreeCelsius} & 5000 \\ \hline +\ct{CONDUCTIVITY} & Real & Section~\ref{info:thermal_properties} & \unit{W/(m.K)} & 0. \\ \hline +\ct{CONDUCTIVITY_RAMP} & Character & Section~\ref{info:thermal_properties} & & \\ \hline +\ct{DENSITY} & Real & Section~\ref{info:thermal_properties} & \unit{kg/m^3} & 0 \rule{0pt}{2.3ex} \\ \hline +\ct{E(:)} & Real Array & Section~\ref{info:reaction_rates} & J/mol & \\ \hline +\ct{EMISSIVITY} & Real & Section~\ref{info:thermal_properties} & & 0.9 \\ \hline +\ct{GAS_DIFFUSION_DEPTH(:)} & Real Array & Section~\ref{info:reaction_rates} & m & 0.001 \\ \hline +\ct{HEATING_RATE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius/min} & 5 \\ \hline +\ct{HEAT_OF_COMBUSTION(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kJ/kg & \\ \hline +\ct{HEAT_OF_REACTION(:)} & Real Array & Section~\ref{info:reaction_mechanism} & kJ/kg & 0 \\ \hline +\ct{ID} & Character & Section~\ref{info:SURF_MATL_Basics} & & \\ \hline +\ct{MATL_ID(:,:)} & Character & Section~\ref{info:reaction_mechanism} & & \\ \hline +\ct{MAX_REACTION_RATE(:)} & Real Array & Section~\ref{info:reaction_rates} & \unit{kg/(m^3.s)} & $\infty$ \rule{0pt}{2.3ex} \\ \hline +\ct{MW} & Real & Section~\ref{info:liquid_fuels} & g/mol & \\ \hline +\ct{N_O2(:)} & Real Array & Section~\ref{info:reaction_rates} & & 0 \\ \hline +\ct{N_REACTIONS} & Integer & Section~\ref{info:reaction_mechanism} & & 0 \\ \hline +\ct{N_S(:)} & Real Array & Section~\ref{info:reaction_rates} & & 1 \\ \hline +\ct{N_T(:)} & Real Array & Section~\ref{info:reaction_rates} & & 0 \\ \hline +\ct{NU_MATL(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0 \\ \hline +\ct{NU_PART(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0 \\ \hline +\ct{NU_SPEC(:,:)} & Real Array & Section~\ref{info:reaction_mechanism} & kg/kg & 0 \\ \hline +\ct{PART_ID(:,:)} & Char.~Array & Section~\ref{info:reaction_mechanism} & & \\ \hline +\ct{PYROLYSIS_RANGE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius} & 80 \\ \hline +\ct{REAC_RATE_DELTA} & Real & Section~\ref{info:solid_phase_stability} & & 0.15 \\ \hline +\ct{REFERENCE_ENTHALPY} & Real & Section~\ref{solid_phase_energy_conservation} & kJ/kg & \\ \hline +\ct{REFERENCE_ENTHALPY_TEMPERATURE} & Real & Section~\ref{solid_phase_energy_conservation} & K & \\ \hline +\ct{REFERENCE_RATE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & 1/s & \\ \hline +\ct{REFERENCE_TEMPERATURE(:)} & Real Array & Section~\ref{info:kinetic_parameters} & \unit{\degreeCelsius} & \\ \hline +\ct{SPECIFIC_HEAT} & Real & Section~\ref{info:thermal_properties} & \unit{kJ/(kg.K)} & 0 \\ \hline +\ct{SPECIFIC_HEAT_RAMP} & Character & Section~\ref{info:thermal_properties} & & \\ \hline +\ct{SPEC_ID(:,:)} & Char.~Array & Section~\ref{info:reaction_mechanism} & & \\ \hline +\ct{SURFACE_OXIDATION_MODEL} & Logical & Section~\ref{veg_reaction_rates} & & \ct{F} \\ \hline +\ct{X_O2_PYRO} & Logical & Section~\ref{solid_phase_energy_conservation} & & \\ \hline \end{xltabular} @@ -12604,32 +12612,32 @@ \section{\texorpdfstring{{\tt MATL}}{MATL} (Material Properties)} \section{\texorpdfstring{{\tt MESH}}{MESH} (Mesh Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Mesh parameters (\ct{MESH} namelist group)]{For more information see Section~\ref{info:MESH}.} - \label{tbl:MESH} \\ - \hline - \multicolumn{5}{|c|}{\ct{MESH} (Mesh Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{MESH} (Mesh Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{BNDF_MESH} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline - \ct{CHECK_MESH_ALIGNMENT} & Logical & Section~\ref{info:mesh_alignment} & & \ct{F} \\ \hline - \ct{COLOR} & Character & Section~\ref{info:multimesh} & & \ct{'BLACK'} \\ \hline - \ct{CYLINDRICAL} & Logical & Section~\ref{info:2D} & & \ct{F} \\ \hline - \ct{ID} & Character & Section~\ref{info:MESH_Basics} & & \\ \hline - \ct{IJK} & Integer Triplet & Section~\ref{info:MESH_Basics} & & 10,10,10 \\ \hline - \ct{MPI_PROCESS} & Integer & Section~\ref{info:multimesh} & & \\ \hline - \ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{RGB} & Integer Triplet & Section~\ref{info:multimesh} & & 0,0,0 \\ \hline - \ct{TRNX_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline - \ct{TRNY_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline - \ct{TRNZ_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline - \ct{XB(6)} & Real Sextuplet & Section~\ref{info:MESH_Basics} & m & 0,1,0,1,0,1 \\ \hline +\caption[Mesh parameters (\ct{MESH} namelist group)]{For more information see Section~\ref{info:MESH}.} +\label{tbl:MESH} \\ +\hline +\multicolumn{5}{|c|}{\ct{MESH} (Mesh Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{MESH} (Mesh Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{BNDF_MESH} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline +\ct{CHECK_MESH_ALIGNMENT} & Logical & Section~\ref{info:mesh_alignment} & & \ct{F} \\ \hline +\ct{COLOR} & Character & Section~\ref{info:multimesh} & & \ct{'BLACK'} \\ \hline +\ct{CYLINDRICAL} & Logical & Section~\ref{info:2D} & & \ct{F} \\ \hline +\ct{ID} & Character & Section~\ref{info:MESH_Basics} & & \\ \hline +\ct{IJK} & Integer Triplet & Section~\ref{info:MESH_Basics} & & 10,10,10 \\ \hline +\ct{MPI_PROCESS} & Integer & Section~\ref{info:multimesh} & & \\ \hline +\ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{RGB} & Integer Triplet & Section~\ref{info:multimesh} & & \\ \hline +\ct{TRNX_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline +\ct{TRNY_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline +\ct{TRNZ_ID} & Character & Section~\ref{info:TRNX} & & \\ \hline +\ct{XB(6)} & Real Sextuplet & Section~\ref{info:MESH_Basics} & m & 0,1,0,1,0,1 \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12640,114 +12648,114 @@ \section{\texorpdfstring{{\tt MISC}}{MISC} (Miscellaneous Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Miscellaneous parameters (\ct{MISC} namelist group)]{For more information see Section~\ref{info:MISC}.} - \label{tbl:MISC} \\ - \hline - \multicolumn{5}{|c|}{\ct{MISC} (Miscellaneous Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{MISC} (Miscellaneous Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{AEROSOL_AL2O3} & Logical & Section~\ref{info:RADI_Gas_and_Soot} & & \ct{F} \\ \hline - \ct{AEROSOL_SCRUBBING} & Logical & Section~\ref{info:scrubbing} & & \ct{F} \\ \hline - \ct{AGGLOMERATION} & Logical & Section~\ref{info:agglomeration} & & \ct{T} \\ \hline - \ct{ALIGNMENT_TOLERANCE} & Real & Section~\ref{info:mesh_alignment} & & 0.001 \\ \hline - \ct{BNDF_DEFAULT} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline - \ct{C_DEARDORFF} & Real & Section~\ref{info:LES} & & 0.1 \\ \hline - \ct{CFL_MAX} & Real & Section~\ref{info:CFL} & & 1.0 \\ \hline - \ct{CFL_MIN} & Real & Section~\ref{info:CFL} & & 0.8 \\ \hline - \ct{CFL_VELOCITY_NORM} & Integer & Section~\ref{info:CFL} & & \\ \hline - \ct{CHECK_FO} & Logical & Section~\ref{info:solid_phase_stability}& & \ct{F} \\ \hline - \ct{CHECK_HT} & Logical & Section~\ref{info:HT} & & \ct{F} \\ \hline - \ct{CHECK_VN} & Logical & Section~\ref{info:VN} & & \ct{T} \\ \hline - \ct{CNF_CUTOFF} & Real & Section~\ref{info:particle_size} & & 0.005 \\ \hline - \ct{CONSTANT_SPECIFIC_HEAT_RATIO} & Logical & Section~\ref{info:Enthalpy} & & \ct{F} \\ \hline - \ct{C_SMAGORINSKY} & Real & Section~\ref{info:LES} & & 0.20 \\ \hline - \ct{C_VREMAN} & Real & Section~\ref{info:LES} & & 0.07 \\ \hline - \ct{C_WALE} & Real & Section~\ref{info:LES} & & 0.60 \\ \hline - \ct{DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{EXTERNAL_FILENAME} & Character & Section~\ref{info:external_control} & & \\ \hline - \ct{FIXED_LES_FILTER_WIDTH} & Real & Section~\ref{info:LES} & m & \\ \hline - \ct{FLUX_LIMITER} & Integer & Section~\ref{info:flux_limiters} & & 2 \\ \hline - \ct{FREEZE_VELOCITY} & Logical & Section~\ref{info:freeze_velocity} & & \ct{F} \\ \hline - \ct{GAMMA} & Real & Section~\ref{gas_species_props} & & 1.4 \\ \hline - \ct{GRAVITATIONAL_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{GRAVITATIONAL_SETTLING} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{GVEC(3)} & Real Array & Section~\ref{info:GVEC} & \unit{m/s^2} & 0,0,-9.81 \rule{0pt}{2.3ex} \\ \hline - \ct{H_F_REFERENCE_TEMPERATURE} & Real & Section~\ref{info:enthalpy} & \unit{\degreeCelsius} & 25. \\ \hline - \ct{HUMIDITY} & Real & Section~\ref{info:humidity} & \% & 40. \\ \hline - \ct{HVAC_LOCAL_PRESSURE} & Logical & Section~\ref{info:HVAC} & & \ct{T} \\ \hline - \ct{HVAC_MASS_TRANSPORT_CELL_L} & Real & Section ~\ref{info:hvacmasstransport} & m & \\ \hline - \ct{HVAC_PRES_RELAX} & Real & Section ~\ref{info:HVAC} & & 1.0 \\ \hline - \ct{HVAC_QFAN} & Logical & Section ~\ref{info:HVAC_QFAN} & & \ct{F} \\ \hline - \ct{IBLANK_SMV} & Logical & Section~\ref{info:SLCF} & & \ct{T} \\ \hline - \ct{I_MAX_TEMP} & Integer & Section~\ref{info:CLIP:temp} & K & 5000 \\ \hline - \ct{LES_FILTER_TYPE} & Character & Section~\ref{info:LES} & & \ct{'MEAN'} \\ \hline - \ct{LEVEL_SET_ELLIPSE} & Logical & Section~\ref{info:level_set} & & \ct{T} \\ \hline - \ct{LEVEL_SET_MODE} & Integer & Section~\ref{info:level_set} & & 0 \\ \hline - \ct{MAXIMUM_VISIBILITY} & Real & Section~\ref{info:visibility} & m & 30 \\ \hline - \ct{MAX_LEAK_PATHS} & Integer & Section~\ref{info:Leaks} & & 200 \\ \hline - \ct{MAX_RAMPS} & Integer & Section~\ref{info:RAMP} & & 100 \\ \hline - \ct{MINIMUM_ZONE_VOLUME} & Real & Section~\ref{info:filling_zones} & \unit{m^3} & 0 \rule{0pt}{2.3ex} \\ \hline - \ct{MPI_TIMEOUT} & Real & Section~\ref{info:Errors} & s & 600. \\ \hline - \ct{NEAR_WALL_PARTICLE_INTERPOLATION} & Logical & Section~\ref{info:particle_drag} & & \ct{F} \\ \hline - \ct{NEIGHBOR_SEPARATION_DISTANCE} & Real & Section~\ref{info:HT3D_Limitations} & m & 0. \\ \hline - \ct{NOISE} & Logical & Section~\ref{info:NOISE} & & \ct{T} \\ \hline - \ct{NOISE_VELOCITY} & Real & Section~\ref{info:NOISE} & m/s & 0.005 \\ \hline - \ct{NO_PRESSURE_ZONES} & Logical & Section~\ref{info:filling_zones} & & \ct{F} \\ \hline - \ct{NORTH_BEARING} & Real & Section~\ref{info:earth} & deg. & \\ \hline - \ct{NUCLEATION_SITES} & Real & Section~\ref{info:condensation} & \unit{\#/m^3} & \num{1e7} \rule{0pt}{2.3ex} \\ \hline - \ct{ORIGIN_LAT} & Real & Section~\ref{info:earth} & degrees & \\ \hline - \ct{ORIGIN_LON} & Real & Section~\ref{info:earth} & degrees & \\ \hline - \ct{OVERWRITE} & Logical & Section~\ref{info:OVERWRITE} & & \ct{T} \\ \hline - \ct{PARTICLE_CFL} & Logical & Section~\ref{info:PART_Stability} & & \ct{F} \\ \hline - \ct{PARTICLE_CFL_MAX} & Real & Section~\ref{info:PART_Stability} & & 1.0 \\ \hline - \ct{PARTICLE_CFL_MIN} & Real & Section~\ref{info:PART_Stability} & & 0.8 \\ \hline - \ct{POROUS_FLOOR} & Logical & Section~\ref{info:particle_removal} & & \ct{T} \\ \hline - \ct{PR_T} & Real & Section~\ref{info:LES} & & 0.5 \\ \hline - \ct{P_INF} & Real & Section~\ref{info:MISC_Basics} & Pa & 101325 \\ \hline - \ct{RAMP_GX} & Character & Section~\ref{info:GVEC} & & \\ \hline - \ct{RAMP_GY} & Character & Section~\ref{info:GVEC} & & \\ \hline - \ct{RAMP_GZ} & Character & Section~\ref{info:GVEC} & & \\ \hline - \ct{RAMP_UX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_UY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_UZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_VX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_VY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_VZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_WX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_WY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RAMP_WZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline - \ct{RESTART} & Logical & Section~\ref{info:restart} & & \ct{F} \\ \hline - \ct{RESTART_CHID} & Character & Section~\ref{info:restart} & & \ct{CHID} \\ \hline - \ct{RND_SEED} & Integer & Section~\ref{info:NOISE} & & \\ \hline - \ct{SC_T} & Real & Section~\ref{info:LES} & & 0.5 \\ \hline - \ct{SIMULATION_MODE} & Character & Section~\ref{Sim_Mode} & & \ct{'VLES'} \\ \hline - \ct{SMOKE_ALBEDO} & Real & Reference~\cite{Smokeview_Users_Guide} & & 0.3 \\ \hline - \ct{SOLID_PHASE_ONLY} & Logical & Section~\ref{solid_phase_verification} & & \ct{F} \\ \hline - \ct{SOOT_DENSITY} & Real & Section~\ref{info:soot} & & 1800 \\ \hline - \ct{SOOT_OXIDATION} & Logical & Section~\ref{info:SOOT_OXIDATION} & & \ct{F} \\ \hline - \ct{TAU_DEFAULT} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TERRAIN_IMAGE} & Character & Section~\ref{info:complex_terrain} & & \\ \hline - \ct{TEXTURE_ORIGIN(3)} & Real Triplet & Section~\ref{info:texture_map} & m & (0.,0.,0.) \\ \hline - \ct{THERMOPHORETIC_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{THERMOPHORETIC_SETTLING} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{THICKEN_OBSTRUCTIONS} & Logical & Section~\ref{info:OBST_Basics} & & \ct{F} \\ \hline - \ct{TMPA} & Real & Section~\ref{info:MISC_Basics} & \unit{\degreeCelsius} & 20. \\ \hline - \ct{TURBULENCE_MODEL} & Character & Section~\ref{info:LES} & & \ct{'DEARDORFF'} \\ \hline - \ct{TURBULENT_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline - \ct{UNFREEZE_TIME} & Real & Section~\ref{info:FREZ} & & \\ \hline - \ct{VERBOSE} & Logical & Section~\ref{out:file} & & \ct{F} \\ \hline - \ct{VISIBILITY_FACTOR} & Real & Section~\ref{info:visibility} & & 3 \\ \hline - \ct{VN_MAX} & Real & Section~\ref{info:VN} & & 1.0 \\ \hline - \ct{VN_MIN} & Real & Section~\ref{info:VN} & & 0.8 \\ \hline - \ct{Y_CO2_INFTY} & Real & Section~\ref{info:simple_chemistry} & kg/kg & \\ \hline - \ct{Y_O2_INFTY} & Real & Section~\ref{info:simple_chemistry} & kg/kg & \\ \hline +\caption[Miscellaneous parameters (\ct{MISC} namelist group)]{For more information see Section~\ref{info:MISC}.} +\label{tbl:MISC} \\ +\hline +\multicolumn{5}{|c|}{\ct{MISC} (Miscellaneous Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{MISC} (Miscellaneous Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{AEROSOL_AL2O3} & Logical & Section~\ref{info:RADI_Gas_and_Soot} & & \ct{F} \\ \hline +\ct{AEROSOL_SCRUBBING} & Logical & Section~\ref{info:scrubbing} & & \ct{F} \\ \hline +\ct{AGGLOMERATION} & Logical & Section~\ref{info:agglomeration} & & \ct{T} \\ \hline +\ct{ALIGNMENT_TOLERANCE} & Real & Section~\ref{info:mesh_alignment} & & 0.001 \\ \hline +\ct{BNDF_DEFAULT} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline +\ct{C_DEARDORFF} & Real & Section~\ref{info:LES} & & 0.1 \\ \hline +\ct{CFL_MAX} & Real & Section~\ref{info:CFL} & & 1.0 \\ \hline +\ct{CFL_MIN} & Real & Section~\ref{info:CFL} & & 0.8 \\ \hline +\ct{CFL_VELOCITY_NORM} & Integer & Section~\ref{info:CFL} & & Table~\ref{tbl:SIMULATION_MODE} \\ \hline +\ct{CHECK_FO} & Logical & Section~\ref{info:solid_phase_stability}& & \ct{F} \\ \hline +\ct{CHECK_HT} & Logical & Section~\ref{info:HT} & & \ct{F} \\ \hline +\ct{CHECK_VN} & Logical & Section~\ref{info:VN} & & \ct{T} \\ \hline +\ct{CNF_CUTOFF} & Real & Section~\ref{info:particle_size} & & 0.005 \\ \hline +\ct{CONSTANT_SPECIFIC_HEAT_RATIO} & Logical & Section~\ref{info:Enthalpy} & & \ct{F} \\ \hline +\ct{C_SMAGORINSKY} & Real & Section~\ref{info:LES} & & 0.20 \\ \hline +\ct{C_VREMAN} & Real & Section~\ref{info:LES} & & 0.07 \\ \hline +\ct{C_WALE} & Real & Section~\ref{info:LES} & & 0.60 \\ \hline +\ct{DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{EXTERNAL_FILENAME} & Character & Section~\ref{info:external_control} & & \\ \hline +\ct{FIXED_LES_FILTER_WIDTH} & Real & Section~\ref{info:LES} & m & \\ \hline +\ct{FLUX_LIMITER} & Integer & Section~\ref{info:flux_limiters} & & 2 \\ \hline +\ct{FREEZE_VELOCITY} & Logical & Section~\ref{info:freeze_velocity} & & \ct{F} \\ \hline +\ct{GAMMA} & Real & Section~\ref{gas_species_props} & & 1.4 \\ \hline +\ct{GRAVITATIONAL_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{GRAVITATIONAL_SETTLING} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{GVEC(3)} & Real Array & Section~\ref{info:GVEC} & \unit{m/s^2} & 0,0,-9.81 \rule{0pt}{2.3ex} \\ \hline +\ct{H_F_REFERENCE_TEMPERATURE} & Real & Section~\ref{info:enthalpy} & \unit{\degreeCelsius} & 25. \\ \hline +\ct{HUMIDITY} & Real & Section~\ref{info:humidity} & \% & 40 \\ \hline +\ct{HVAC_LOCAL_PRESSURE} & Logical & Section~\ref{info:HVAC} & & \ct{T} \\ \hline +\ct{HVAC_MASS_TRANSPORT_CELL_L} & Real & Section ~\ref{info:hvacmasstransport} & m & \\ \hline +\ct{HVAC_PRES_RELAX} & Real & Section ~\ref{info:HVAC} & & 1.0 \\ \hline +\ct{HVAC_QFAN} & Logical & Section ~\ref{info:HVAC_QFAN} & & \ct{F} \\ \hline +\ct{IBLANK_SMV} & Logical & Section~\ref{info:SLCF} & & \ct{T} \\ \hline +\ct{I_MAX_TEMP} & Integer & Section~\ref{info:CLIP:temp} & K & 5000 \\ \hline +\ct{LES_FILTER_TYPE} & Character & Section~\ref{info:LES} & & \ct{'MEAN'} \\ \hline +\ct{LEVEL_SET_ELLIPSE} & Logical & Section~\ref{info:level_set} & & \ct{T} \\ \hline +\ct{LEVEL_SET_MODE} & Integer & Section~\ref{info:level_set} & & 0 \\ \hline +\ct{MAXIMUM_VISIBILITY} & Real & Section~\ref{info:visibility} & m & 30 \\ \hline +\ct{MAX_LEAK_PATHS} & Integer & Section~\ref{info:Leaks} & & 200 \\ \hline +\ct{MAX_RAMPS} & Integer & Section~\ref{info:RAMP} & & 100 \\ \hline +\ct{MINIMUM_ZONE_VOLUME} & Real & Section~\ref{info:filling_zones} & \unit{m^3} & 0 \rule{0pt}{2.3ex} \\ \hline +\ct{MPI_TIMEOUT} & Real & Section~\ref{info:Errors} & s & 600 \\ \hline +\ct{NEAR_WALL_PARTICLE_INTERPOLATION} & Logical & Section~\ref{info:particle_drag} & & \ct{F} \\ \hline +\ct{NEIGHBOR_SEPARATION_DISTANCE} & Real & Section~\ref{info:HT3D_Limitations} & m & 0 \\ \hline +\ct{NOISE} & Logical & Section~\ref{info:NOISE} & & \ct{T} \\ \hline +\ct{NOISE_VELOCITY} & Real & Section~\ref{info:NOISE} & m/s & 0.005 \\ \hline +\ct{NO_PRESSURE_ZONES} & Logical & Section~\ref{info:filling_zones} & & \ct{F} \\ \hline +\ct{NORTH_BEARING} & Real & Section~\ref{info:earth} & deg. & \\ \hline +\ct{NUCLEATION_SITES} & Real & Section~\ref{info:condensation} & \unit{\#/m^3} & \num{1e7} \rule{0pt}{2.3ex} \\ \hline +\ct{ORIGIN_LAT} & Real & Section~\ref{info:earth} & degrees & \\ \hline +\ct{ORIGIN_LON} & Real & Section~\ref{info:earth} & degrees & \\ \hline +\ct{OVERWRITE} & Logical & Section~\ref{info:OVERWRITE} & & \ct{T} \\ \hline +\ct{PARTICLE_CFL} & Logical & Section~\ref{info:PART_Stability} & & \ct{F} \\ \hline +\ct{PARTICLE_CFL_MAX} & Real & Section~\ref{info:PART_Stability} & & 1.0 \\ \hline +\ct{PARTICLE_CFL_MIN} & Real & Section~\ref{info:PART_Stability} & & 0.8 \\ \hline +\ct{POROUS_FLOOR} & Logical & Section~\ref{info:particle_removal} & & \ct{T} \\ \hline +\ct{PR_T} & Real & Section~\ref{info:LES} & & 0.5 \\ \hline +\ct{P_INF} & Real & Section~\ref{info:MISC_Basics} & Pa & 101325 \\ \hline +\ct{RAMP_GX} & Character & Section~\ref{info:GVEC} & & \\ \hline +\ct{RAMP_GY} & Character & Section~\ref{info:GVEC} & & \\ \hline +\ct{RAMP_GZ} & Character & Section~\ref{info:GVEC} & & \\ \hline +\ct{RAMP_UX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_UY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_UZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_VX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_VY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_VZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_WX} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_WY} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RAMP_WZ} & Character & Section~\ref{info:ramp_velocity_1d} & & \\ \hline +\ct{RESTART} & Logical & Section~\ref{info:restart} & & \ct{F} \\ \hline +\ct{RESTART_CHID} & Character & Section~\ref{info:restart} & & \ct{CHID} \\ \hline +\ct{RND_SEED} & Integer & Section~\ref{info:NOISE} & & \\ \hline +\ct{SC_T} & Real & Section~\ref{info:LES} & & 0.5 \\ \hline +\ct{SIMULATION_MODE} & Character & Section~\ref{Sim_Mode} & & \ct{'VLES'} \\ \hline +\ct{SMOKE_ALBEDO} & Real & Reference~\cite{Smokeview_Users_Guide} & & 0.3 \\ \hline +\ct{SOLID_PHASE_ONLY} & Logical & Section~\ref{solid_phase_verification} & & \ct{F} \\ \hline +\ct{SOOT_DENSITY} & Real & Section~\ref{info:soot} & & 1800 \\ \hline +\ct{SOOT_OXIDATION} & Logical & Section~\ref{info:SOOT_OXIDATION} & & \ct{F} \\ \hline +\ct{TAU_DEFAULT} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TERRAIN_IMAGE} & Character & Section~\ref{info:complex_terrain} & & \\ \hline +\ct{TEXTURE_ORIGIN(3)} & Real Triplet & Section~\ref{info:texture_map} & m & (0,0,0) \\ \hline +\ct{THERMOPHORETIC_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{THERMOPHORETIC_SETTLING} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{THICKEN_OBSTRUCTIONS} & Logical & Section~\ref{info:OBST_Basics} & & \ct{F} \\ \hline +\ct{TMPA} & Real & Section~\ref{info:MISC_Basics} & \unit{\degreeCelsius} & 20 \\ \hline +\ct{TURBULENCE_MODEL} & Character & Section~\ref{info:LES} & & \ct{'DEARDORFF'} \\ \hline +\ct{TURBULENT_DEPOSITION} & Logical & Section~\ref{info:deposition} & & \ct{T} \\ \hline +\ct{UNFREEZE_TIME} & Real & Section~\ref{info:FREZ} & & \\ \hline +\ct{VERBOSE} & Logical & Section~\ref{out:file} & & \ct{F} \\ \hline +\ct{VISIBILITY_FACTOR} & Real & Section~\ref{info:visibility} & & 3 \\ \hline +\ct{VN_MAX} & Real & Section~\ref{info:VN} & & 1.0 \\ \hline +\ct{VN_MIN} & Real & Section~\ref{info:VN} & & 0.8 \\ \hline +\ct{Y_CO2_INFTY} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0.000595 \\ \hline +\ct{Y_O2_INFTY} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0.232378 \\ \hline \end{xltabular} @@ -12757,33 +12765,33 @@ \section{\texorpdfstring{{\tt MISC}}{MISC} (Miscellaneous Parameters)} \section{\texorpdfstring{{\tt MOVE}}{MOVE} (Coordinate Transformation Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Coordinate transformation parameters (\ct{MULT} namelist group)]{For more information see Section~\ref{info:MOVE}.} - \label{tbl:MOVE} \\ - \hline - \multicolumn{5}{|c|}{\ct{MOVE} (Coordinate Transformation Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{MOVE} (Coordinate Transformation Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{AXIS(3)} & Real Array & Section~\ref{info:MOVE} & & (0,0,1) \\ \hline - \ct{SCALE} & Real & Section~\ref{info:MOVE} & & 1. \\ \hline - \ct{SCALEX} & Real & Section~\ref{info:MOVE} & & 1. \\ \hline - \ct{SCALEY} & Real & Section~\ref{info:MOVE} & & 1. \\ \hline - \ct{SCALEZ} & Real & Section~\ref{info:MOVE} & & 1. \\ \hline - \ct{DX} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline - \ct{DY} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline - \ct{DZ} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline - \ct{ID} & Character & Section~\ref{info:MOVE} & & \\ \hline - \ct{ROTATION_ANGLE} & Real & Section~\ref{info:MOVE} & degrees & 0. \\ \hline - \ct{T34} & Real Array & Section~\ref{info:MOVE} & & 0. \\ \hline - \ct{X0} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline - \ct{Y0} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline - \ct{Z0} & Real & Section~\ref{info:MOVE} & m & 0. \\ \hline +\caption[Coordinate transformation parameters (\ct{MULT} namelist group)]{For more information see Section~\ref{info:MOVE}.} +\label{tbl:MOVE} \\ +\hline +\multicolumn{5}{|c|}{\ct{MOVE} (Coordinate Transformation Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{MOVE} (Coordinate Transformation Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{AXIS(3)} & Real Array & Section~\ref{info:MOVE} & & (0,0,1) \\ \hline +\ct{SCALE} & Real & Section~\ref{info:MOVE} & & 1 \\ \hline +\ct{SCALEX} & Real & Section~\ref{info:MOVE} & & 1 \\ \hline +\ct{SCALEY} & Real & Section~\ref{info:MOVE} & & 1 \\ \hline +\ct{SCALEZ} & Real & Section~\ref{info:MOVE} & & 1 \\ \hline +\ct{DX} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline +\ct{DY} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline +\ct{DZ} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline +\ct{ID} & Character & Section~\ref{info:MOVE} & & \\ \hline +\ct{ROTATION_ANGLE} & Real & Section~\ref{info:MOVE} & degrees & 0 \\ \hline +\ct{T34} & Real Array & Section~\ref{info:MOVE} & & 0 \\ \hline +\ct{X0} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline +\ct{Y0} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline +\ct{Z0} & Real & Section~\ref{info:MOVE} & m & 0 \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12792,43 +12800,43 @@ \section{\texorpdfstring{{\tt MOVE}}{MOVE} (Coordinate Transformation Parameters \section{\texorpdfstring{{\tt MULT}}{MULT} (Multiplier Function Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Multiplier function parameters (\ct{MULT} namelist group)]{For more information see Section~\ref{info:MULT}.} - \label{tbl:MULT} \\ - \hline - \multicolumn{5}{|c|}{\ct{MULT} (Multiplier Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{MULT} (Multiplier Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{DX} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DXB(6)} & Real Array & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DX0} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DY} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DY0} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DZ} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{DZ0} & Real & Section~\ref{info:MULT} & m & 0. \\ \hline - \ct{ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{I_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{I_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{I_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{I_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{J_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{J_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{J_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{J_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{K_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{K_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{K_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{K_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{N_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{N_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline - \ct{N_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline - \ct{N_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\caption[Multiplier function parameters (\ct{MULT} namelist group)]{For more information see Section~\ref{info:MULT}.} +\label{tbl:MULT} \\ +\hline +\multicolumn{5}{|c|}{\ct{MULT} (Multiplier Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{MULT} (Multiplier Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{DX} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DXB(6)} & Real Array & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DX0} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DY} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DY0} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DZ} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{DZ0} & Real & Section~\ref{info:MULT} & m & 0 \\ \hline +\ct{ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{I_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{I_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{I_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{I_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{J_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{J_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{J_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{J_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{K_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{K_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{K_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{K_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{N_LOWER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{N_LOWER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline +\ct{N_UPPER} & Integer & Section~\ref{info:MULT} & & 0 \\ \hline +\ct{N_UPPER_SKIP} & Integer & Section~\ref{info:multmeshrefine} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12839,57 +12847,57 @@ \section{\texorpdfstring{{\tt OBST}}{OBST} (Obstruction Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Obstruction parameters (\ct{OBST} namelist group)]{For more information see Section~\ref{info:OBST}.} - \label{tbl:OBST} \\ - \hline - \multicolumn{5}{|c|}{\ct{OBST} (Obstruction Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{OBST} (Obstruction Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ALLOW_VENT} & Logical & Section~\ref{info:REMOVABLE} & & \ct{T} \\ \hline - \ct{BNDF_FACE(-3:3)} & Logical Array & Section~\ref{info:BNDF} & & \ct{T} \\ \hline - \ct{BNDF_OBST} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline - \ct{BULK_DENSITY} & Real & Section~\ref{info:BURN_AWAY} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline - \ct{CELL_SIZE} & Real & Section~\ref{info:HT3D_Basics} & m & \\ \hline - \ct{CELL_SIZE_FACTOR} & Real & Section~\ref{info:HT3D_Basics} & & \\ \hline - \ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:create_remove} & & \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:create_remove} & & \\ \hline - \ct{HEIGHT} & Real & Section~\ref{info:multobst} & m & \\ \hline - \ct{ID} & Character & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{INTERNAL_HEAT_SOURCE} & Real & Section~\ref{info:HT3D_Basics} & \unit{kW/m^3} & 0. \\ \hline - \ct{LENGTH} & Real & Section~\ref{info:multobst} & m & \\ \hline - \ct{MATL_ID(:)} & Char.~Array & Section~\ref{info:ht1d} & & \\ \hline - \ct{MATL_MASS_FRACTION(:)} & Real~Array & Section~\ref{info:ht1d} & kg/kg & \\ \hline - \ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{N_LAYER_CELLS_MAX} & Integer & Section~\ref{info:HT3D_Basics} & & \\ \hline - \ct{ORIENTATION(3)} & Real Array & Section~\ref{info:multobst} & m & (0.,0.,1.) \\ \hline - \ct{OUTLINE} & Logical & Section~\ref{info:TRANSPARENCY} & & \ct{F} \\ \hline - \ct{OVERLAY} & Logical & Section~\ref{info:OVERLAY} & & \ct{T} \\ \hline - \ct{PERMIT_HOLE} & Logical & Section~\ref{info:HOLE} & & \ct{T} \\ \hline - \ct{RADIUS} & Real & Section~\ref{info:multobst} & m & \\ \hline - \ct{RAMP_IHS} & Character & Section~\ref{info:HT3D_Basics} & & \\ \hline - \ct{REMOVABLE} & Logical & Section~\ref{info:REMOVABLE} & & \ct{T} \\ \hline - \ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \\ \hline - \ct{SHAPE} & Character & Section~\ref{info:multobst} & & \\ \hline - \ct{STRETCH_FACTOR} & Real & Section~\ref{info:HT3D_Basics} & & \\ \hline - \ct{SURF_ID} & Character & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{SURF_ID_INTERIOR} & Character & Section~\ref{info:BURN_AWAY} & & \\ \hline - \ct{SURF_ID6(6)} & Char.~Array & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{SURF_IDS(3)} & Char.~Array & Section~\ref{info:OBST_Basics} & & \\ \hline - \ct{TEXTURE_ORIGIN(3)} & Real Array & Section~\ref{info:texture_map} & m & (0.,0.,0.) \\ \hline - \ct{THETA} & Real & Section~\ref{info:multobst} & deg. & \\ \hline - \ct{THICKEN} & Logical & Section~\ref{info:OBST_Basics} & & \ct{F} \\ \hline - \ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1 \\ \hline - \ct{WIDTH} & Real & Section~\ref{info:multobst} & m & \\ \hline - \ct{XB(6)} & Real Array & Section~\ref{info:OBST_Basics} & m & \\ \hline - \ct{XYZ(3)} & Real Array & Section~\ref{info:multobst} & m & (0.,0.,0.) \\ \hline +\caption[Obstruction parameters (\ct{OBST} namelist group)]{For more information see Section~\ref{info:OBST}.} +\label{tbl:OBST} \\ +\hline +\multicolumn{5}{|c|}{\ct{OBST} (Obstruction Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{OBST} (Obstruction Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ALLOW_VENT} & Logical & Section~\ref{info:REMOVABLE} & & \ct{T} \\ \hline +\ct{BNDF_FACE(-3:3)} & Logical Array & Section~\ref{info:BNDF} & & \ct{T} \\ \hline +\ct{BNDF_OBST} & Logical & Section~\ref{info:BNDF} & & \ct{T} \\ \hline +\ct{BULK_DENSITY} & Real & Section~\ref{info:BURN_AWAY} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline +\ct{CELL_SIZE} & Real & Section~\ref{info:HT3D_Basics} & m & \\ \hline +\ct{CELL_SIZE_FACTOR} & Real & Section~\ref{info:HT3D_Basics} & & \\ \hline +\ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:create_remove} & & \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:create_remove} & & \\ \hline +\ct{HEIGHT} & Real & Section~\ref{info:multobst} & m & \\ \hline +\ct{ID} & Character & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{INTERNAL_HEAT_SOURCE} & Real & Section~\ref{info:HT3D_Basics} & \unit{kW/m^3} & 0 \\ \hline +\ct{LENGTH} & Real & Section~\ref{info:multobst} & m & \\ \hline +\ct{MATL_ID(:)} & Char.~Array & Section~\ref{info:ht1d} & & \\ \hline +\ct{MATL_MASS_FRACTION(:)} & Real~Array & Section~\ref{info:ht1d} & kg/kg & \\ \hline +\ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{N_LAYER_CELLS_MAX} & Integer & Section~\ref{info:HT3D_Basics} & & \\ \hline +\ct{ORIENTATION(3)} & Real Array & Section~\ref{info:multobst} & m & (0,0,1) \\ \hline +\ct{OUTLINE} & Logical & Section~\ref{info:TRANSPARENCY} & & \ct{F} \\ \hline +\ct{OVERLAY} & Logical & Section~\ref{info:OVERLAY} & & \ct{T} \\ \hline +\ct{PERMIT_HOLE} & Logical & Section~\ref{info:HOLE} & & \ct{T} \\ \hline +\ct{RADIUS} & Real & Section~\ref{info:multobst} & m & \\ \hline +\ct{RAMP_IHS} & Character & Section~\ref{info:HT3D_Basics} & & \\ \hline +\ct{REMOVABLE} & Logical & Section~\ref{info:REMOVABLE} & & \ct{T} \\ \hline +\ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \\ \hline +\ct{SHAPE} & Character & Section~\ref{info:multobst} & & \\ \hline +\ct{STRETCH_FACTOR} & Real & Section~\ref{info:HT3D_Basics} & & \\ \hline +\ct{SURF_ID} & Character & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{SURF_ID_INTERIOR} & Character & Section~\ref{info:BURN_AWAY} & & \\ \hline +\ct{SURF_ID6(6)} & Char.~Array & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{SURF_IDS(3)} & Char.~Array & Section~\ref{info:OBST_Basics} & & \\ \hline +\ct{TEXTURE_ORIGIN(3)} & Real Array & Section~\ref{info:texture_map} & m & (0,0,0) \\ \hline +\ct{THETA} & Real & Section~\ref{info:multobst} & deg. & \\ \hline +\ct{THICKEN} & Logical & Section~\ref{info:OBST_Basics} & & \ct{F} \\ \hline +\ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1 \\ \hline +\ct{WIDTH} & Real & Section~\ref{info:multobst} & m & \\ \hline +\ct{XB(6)} & Real Array & Section~\ref{info:OBST_Basics} & m & \\ \hline +\ct{XYZ(3)} & Real Array & Section~\ref{info:multobst} & m & (0,0,0) \\ \hline \end{xltabular} @@ -12901,83 +12909,83 @@ \section{\texorpdfstring{{\tt PART}}{PART} (Lagrangian Particles/Droplets)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Lagrangian particles (\ct{PART} namelist group)]{For more information see Chapter~\ref{info:PART}.} - \label{tbl:PART} \\ - \hline - \multicolumn{5}{|c|}{\ct{PART} (Lagrangian Particles/Droplets)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{PART} (Lagrangian Particles/Droplets)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ADHERE_TO_SOLID} & Integer & Section~\ref{info:surface_solid_particles} & & 0 \\ \hline - \ct{AGE} & Real & Section~\ref{info:controlling_droplets} & s & \num{1e5} \rule{0pt}{2.3ex} \\ \hline - \ct{BREAKUP} & Logical & Section~\ref{info:secondary_breakup} & & \ct{F} \\ \hline - \ct{BREAKUP_CNF_RAMP_ID} & Character & Section~\ref{info:secondary_breakup} & & \\ \hline - \ct{BREAKUP_DISTRIBUTION} & Character & Section~\ref{info:secondary_breakup} & & \ct{'ROSIN...'} \\ \hline - \ct{BREAKUP_GAMMA_D} & Real & Section~\ref{info:secondary_breakup} & & 2.4 \\ \hline - \ct{BREAKUP_RATIO} & Real & Section~\ref{info:secondary_breakup} & & $3/7$ \\ \hline - \ct{BREAKUP_SIGMA_D} & Real & Section~\ref{info:secondary_breakup} & & \\ \hline - \ct{CHECK_DISTRIBUTION} & Logical & Section~\ref{info:particle_size} & & \ct{F} \\ \hline - \ct{CNF_RAMP_ID} & Character & Section~\ref{info:particle_size} & & \\ \hline - \ct{COLOR} & Character & Section~\ref{particle_colors} & & \ct{'BLACK'} \\ \hline - \ct{COMPLEX_REFRACTIVE_INDEX} & Real & Section~\ref{radiative_part_props} & & 0.01 \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:particle_flux} & & \\ \hline - \ct{DENSE_VOLUME_FRACTION} & Real & Section~\ref{info:DENSE_VOLUME_FRACTION} & & \num{1e-5} \rule{0pt}{2.3ex} \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:particle_flux} & & \\ \hline - \ct{DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline - \ct{DISTRIBUTION} & Character & Section~\ref{info:particle_size} & & \ct{'ROSIN...'} \\ \hline - \ct{DRAG_COEFFICIENT(3)} & Real Array & Section~\ref{info:particle_drag} & & \\ \hline - \ct{DRAG_LAW} & Character & Section~\ref{info:particle_drag} & & \ct{'SPHERE'} \\ \hline - \ct{EVAP_MODEL} & Character & Section~\ref{info:liquid_droplets} & & B-number \\ \hline - \ct{EMBER_DENSITY_THRESHOLD} & Real & Section~\ref{info:ember_generation_part} & & \\ \hline - \ct{EMBER_PARTICLE} & Logical & Section~\ref{info:ember_generation_part} & & \ct{F} \\ \hline - \ct{EMBER_VELOCITY_THRESHOLD} & Real & Section~\ref{info:ember_generation_part} & & \\ \hline - \ct{FREE_AREA_FRACTION} & Real & Section~\ref{info:particle_screen} & & \\ \hline - \ct{GAMMA_D} & Real & Section~\ref{info:particle_size} & & 2.4 \\ \hline - \ct{HEAT_OF_COMBUSTION} & Real & Section~\ref{info:fuel_droplets} & kJ/kg & \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT_GAS} & Real & Section~\ref{thermal_part_props} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT_SOLID} & Real & Section~\ref{info:surface_droplets} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline - \ct{HORIZONTAL_VELOCITY} & Real & Section~\ref{info:surface_droplets} & m/s & 0.2 \\ \hline - \ct{ID} & Character & Section~\ref{info:PART_Basics} & & \\ \hline - \ct{INITIAL_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline - \ct{KILL_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline - \ct{MASSLESS} & Logical & Section~\ref{info:MASSLESS} & & \ct{F} \\ \hline - \ct{MASS_TRANSFER_COEFFICIENT} & Real & Section~\ref{thermal_part_props} & m/s & \\ \hline - \ct{MAXIMUM_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & 1000000 \\ \hline - \ct{MINIMUM_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline - \ct{MONODISPERSE} & Logical & Section~\ref{info:particle_size} & & \ct{F} \\ \hline - \ct{N_STRATA} & Integer & Section~\ref{info:particle_size} & & 6 \\ \hline - \ct{NEW_PARTICLE_INCREMENT} & Integer & Section~\ref{info:controlling_droplets} & & 1000 \\ \hline - \ct{ORIENTATION(1:3,:)} & Real Array & Section~\ref{info:particle_orientation} & & \\ \hline - \ct{PERMEABILITY(3)} & Real Array & Section~\ref{info:porous_media} & & \\ \hline - \ct{POROUS_VOLUME_FRACTION} & Real & Section~\ref{info:porous_media} & & \\ \hline - \ct{PRIMARY_BREAKUP_LENGTH} & Real & Section~\ref{info:primary_breakup} & m & \\ \hline - \ct{PRIMARY_BREAKUP_DRAG_REDUCTION_FACTOR} & Real & Section~\ref{info:primary_breakup} & & 1.0 \\ \hline - \ct{PROP_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline - \ct{QUANTITIES(10)} & Character & Section~\ref{particle_colors} & & \\ \hline - \ct{QUANTITIES_SPEC_ID(10)} & Character & Section~\ref{particle_colors} & & \\ \hline - \ct{RADIATIVE_PROPERTY_TABLE} & Real & Section~\ref{radiative_part_props} & & \\ \hline - \ct{REAL_REFRACTIVE_INDEX} & Real & Section~\ref{radiative_part_props} & & 1.33 \\ \hline - \ct{RGB(3)} & Integers & Section~\ref{particle_colors} & & \\ \hline - \ct{RUNNING_AVERAGE_FACTOR} & Real & Section~\ref{radiative_part_props} & & 0.95 \\ \hline - \ct{RUNNING_AVERAGE_FACTOR_WALL} & Real & Section~\ref{radiative_part_props} & & 0.95 \\ \hline - \ct{SAMPLING_FACTOR} & Integer & Section~\ref{info:controlling_droplets} & & 1 \\ \hline - \ct{SHAPE_FACTOR} & Real & Section~\ref{pine_needles} & & 0.25 \\ \hline - \ct{SIGMA_D} & Real & Section~\ref{info:particle_size} & & \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{thermal_part_props} & & \\ \hline - \ct{STATIC} & Logical & Section~\ref{info:PART_SURF} & & \ct{F} \\ \hline - \ct{SURFACE_DIAMETER} & Real & Section~\ref{info:surface_droplets} & \unit{\micro m} & \\ \hline - \ct{SURFACE_TENSION} & Real & Section~\ref{info:secondary_breakup} & N/m & \num{7.28e-2} \rule{0pt}{2.3ex} \\ \hline - \ct{SURF_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline - \ct{TARGET_ONLY} & Logical & Section~\ref{info:target_particles} & & \ct{F} \\ \hline - \ct{TRACK_EMBERS} & Logical & Section~\ref{info:ember_generation_part} & & \ct{T} \\ \hline - \ct{TURBULENT_DISPERSION} & Logical & Section~\ref{info:MASSLESS} & & \ct{F} \\ \hline - \ct{VERTICAL_VELOCITY} & Real & Section~\ref{info:surface_droplets} & m/s & 0.5 \\ \hline +\caption[Lagrangian particles (\ct{PART} namelist group)]{For more information see Chapter~\ref{info:PART}.} +\label{tbl:PART} \\ +\hline +\multicolumn{5}{|c|}{\ct{PART} (Lagrangian Particles/Droplets)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{PART} (Lagrangian Particles/Droplets)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ADHERE_TO_SOLID} & Integer & Section~\ref{info:surface_solid_particles} & & 0 \\ \hline +\ct{AGE} & Real & Section~\ref{info:controlling_droplets} & s & \num{1e6} \rule{0pt}{2.3ex} \\ \hline +\ct{BREAKUP} & Logical & Section~\ref{info:secondary_breakup} & & \ct{F} \\ \hline +\ct{BREAKUP_CNF_RAMP_ID} & Character & Section~\ref{info:secondary_breakup} & & \\ \hline +\ct{BREAKUP_DISTRIBUTION} & Character & Section~\ref{info:secondary_breakup} & & \ct{'ROSIN...'} \\ \hline +\ct{BREAKUP_GAMMA_D} & Real & Section~\ref{info:secondary_breakup} & & 2.4 \\ \hline +\ct{BREAKUP_RATIO} & Real & Section~\ref{info:secondary_breakup} & & $3/7$ \\ \hline +\ct{BREAKUP_SIGMA_D} & Real & Section~\ref{info:secondary_breakup} & & \\ \hline +\ct{CHECK_DISTRIBUTION} & Logical & Section~\ref{info:particle_size} & & \ct{F} \\ \hline +\ct{CNF_RAMP_ID} & Character & Section~\ref{info:particle_size} & & \\ \hline +\ct{COLOR} & Character & Section~\ref{particle_colors} & & \ct{'BLACK'} \\ \hline +\ct{COMPLEX_REFRACTIVE_INDEX} & Real & Section~\ref{radiative_part_props} & & 0.01 \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:particle_flux} & & \\ \hline +\ct{DENSE_VOLUME_FRACTION} & Real & Section~\ref{info:DENSE_VOLUME_FRACTION} & & \num{1e-5} \rule{0pt}{2.3ex} \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:particle_flux} & & \\ \hline +\ct{DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline +\ct{DISTRIBUTION} & Character & Section~\ref{info:particle_size} & & \ct{'ROSIN...'} \\ \hline +\ct{DRAG_COEFFICIENT(3)} & Real Array & Section~\ref{info:particle_drag} & & \\ \hline +\ct{DRAG_LAW} & Character & Section~\ref{info:particle_drag} & & \ct{'SPHERE'} \\ \hline +\ct{EVAP_MODEL} & Character & Section~\ref{info:liquid_droplets} & & RM B-num \\ \hline +\ct{EMBER_DENSITY_THRESHOLD} & Real & Section~\ref{info:ember_generation_part} & & \\ \hline +\ct{EMBER_PARTICLE} & Logical & Section~\ref{info:ember_generation_part} & & \ct{F} \\ \hline +\ct{EMBER_VELOCITY_THRESHOLD} & Real & Section~\ref{info:ember_generation_part} & & \\ \hline +\ct{FREE_AREA_FRACTION} & Real & Section~\ref{info:particle_screen} & & \\ \hline +\ct{GAMMA_D} & Real & Section~\ref{info:particle_size} & & 2.4 \\ \hline +\ct{HEAT_OF_COMBUSTION} & Real & Section~\ref{info:fuel_droplets} & kJ/kg & \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT_GAS} & Real & Section~\ref{thermal_part_props} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT_SOLID} & Real & Section~\ref{info:surface_droplets} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline +\ct{HORIZONTAL_VELOCITY} & Real & Section~\ref{info:surface_droplets} & m/s & 0.2 \\ \hline +\ct{ID} & Character & Section~\ref{info:PART_Basics} & & \\ \hline +\ct{INITIAL_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{KILL_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline +\ct{MASSLESS} & Logical & Section~\ref{info:MASSLESS} & & \ct{F} \\ \hline +\ct{MASS_TRANSFER_COEFFICIENT} & Real & Section~\ref{thermal_part_props} & m/s & \\ \hline +\ct{MAXIMUM_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & 1000000 \\ \hline +\ct{MINIMUM_DIAMETER} & Real & Section~\ref{info:particle_size} & \unit{\micro m} & \\ \hline +\ct{MONODISPERSE} & Logical & Section~\ref{info:particle_size} & & \ct{F} \\ \hline +\ct{N_STRATA} & Integer & Section~\ref{info:particle_size} & & 6 \\ \hline +\ct{NEW_PARTICLE_INCREMENT} & Integer & Section~\ref{info:controlling_droplets} & & 1000 \\ \hline +\ct{ORIENTATION(1:3,:)} & Real Array & Section~\ref{info:particle_orientation} & & \\ \hline +\ct{PERMEABILITY(3)} & Real Array & Section~\ref{info:porous_media} & & \\ \hline +\ct{POROUS_VOLUME_FRACTION} & Real & Section~\ref{info:porous_media} & & \\ \hline +\ct{PRIMARY_BREAKUP_LENGTH} & Real & Section~\ref{info:primary_breakup} & m & \\ \hline +\ct{PRIMARY_BREAKUP_DRAG_REDUCTION_FACTOR} & Real & Section~\ref{info:primary_breakup} & & 1.0 \\ \hline +\ct{PROP_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline +\ct{QUANTITIES(10)} & Character & Section~\ref{particle_colors} & & \\ \hline +\ct{QUANTITIES_SPEC_ID(10)} & Character & Section~\ref{particle_colors} & & \\ \hline +\ct{RADIATIVE_PROPERTY_TABLE} & Real & Section~\ref{radiative_part_props} & & \\ \hline +\ct{REAL_REFRACTIVE_INDEX} & Real & Section~\ref{radiative_part_props} & & 1.33 \\ \hline +\ct{RGB(3)} & Integers & Section~\ref{particle_colors} & & \\ \hline +\ct{RUNNING_AVERAGE_FACTOR} & Real & Section~\ref{radiative_part_props} & & 0 or 0.5 \\ \hline +\ct{RUNNING_AVERAGE_FACTOR_WALL} & Real & Section~\ref{radiative_part_props} & & 0 or 0.95 \\ \hline +\ct{SAMPLING_FACTOR} & Integer & Section~\ref{info:controlling_droplets} & & 1 \\ \hline +\ct{SHAPE_FACTOR} & Real & Section~\ref{pine_needles} & & 0.25 \\ \hline +\ct{SIGMA_D} & Real & Section~\ref{info:particle_size} & & \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{thermal_part_props} & & \\ \hline +\ct{STATIC} & Logical & Section~\ref{info:PART_SURF} & & \ct{F} \\ \hline +\ct{SURFACE_DIAMETER} & Real & Section~\ref{info:surface_droplets} & \unit{\micro m} & \\ \hline +\ct{SURFACE_TENSION} & Real & Section~\ref{info:secondary_breakup} & N/m & \num{7.28e-2} \rule{0pt}{2.3ex} \\ \hline +\ct{SURF_ID} & Character & Section~\ref{info:PART_SURF} & & \\ \hline +\ct{TARGET_ONLY} & Logical & Section~\ref{info:target_particles} & & \ct{F} \\ \hline +\ct{TRACK_EMBERS} & Logical & Section~\ref{info:ember_generation_part} & & \ct{T} \\ \hline +\ct{TURBULENT_DISPERSION} & Logical & Section~\ref{info:MASSLESS} & & \ct{F} \\ \hline +\ct{VERTICAL_VELOCITY} & Real & Section~\ref{info:surface_droplets} & m/s & 0.5 \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -12986,32 +12994,32 @@ \section{\texorpdfstring{{\tt PART}}{PART} (Lagrangian Particles/Droplets)} \section{\texorpdfstring{{\tt PRES}}{PRES} (Pressure Solver Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Pressure solver parameters (\ct{PRES} namelist group)]{For more information see Section~\ref{info:PRES}.} - \label{tbl:PRES} \\ - \hline - \multicolumn{5}{|c|}{\ct{PRES} (Pressure Solver Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{PRES} (Pressure Solver Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{BAROCLINIC} & Logical & Section~\ref{baroclinic_torque} & & \ct{T} \\ \hline - \ct{CHECK_POISSON} & Logical & Section~\ref{pressure_solver} & & \ct{F} \\ \hline - \ct{FISHPAK_BC(3)} & Integer Array & Section~\ref{sec:periodic} & & \\ \hline - \ct{ITERATION_SUSPEND_FACTOR} & Real & Section~\ref{pressure_solver} & s & 0.95 \\ \hline - \ct{MAX_PREDICTOR_PRESSURE_ITERATIONS} & Integer & Section~\ref{pressure_solver} & & * \\ \hline - \ct{MAX_PRESSURE_ITERATIONS} & Integer & Section~\ref{pressure_solver} & & 10 \\ \hline - \ct{PRESSURE_RELAX_TIME} & Real & Section~\ref{background_pressure} & s & 1. \\ \hline - \ct{PRESSURE_TOLERANCE} & Real & Section~\ref{pressure_solver} & \unit{\per\second^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{RELAXATION_FACTOR} & Real & Section~\ref{background_pressure} & & 1. \\ \hline - \ct{SOLVER} & Character & Section~\ref{optional_pressure_solver} & & \ct{'FFT'} \\ \hline - \ct{SUSPEND_PRESSURE_ITERATIONS} & Logical & Section~\ref{pressure_solver} & & \ct{T} \\ \hline - \ct{TUNNEL_PRECONDITIONER} & Logical & Section~\ref{tunnel_solver} & & \ct{F} \\ \hline - \ct{VELOCITY_TOLERANCE} & Real & Section~\ref{pressure_solver} & m/s & \\ \hline +\caption[Pressure solver parameters (\ct{PRES} namelist group)]{For more information see Section~\ref{info:PRES}.} +\label{tbl:PRES} \\ +\hline +\multicolumn{5}{|c|}{\ct{PRES} (Pressure Solver Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{PRES} (Pressure Solver Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{BAROCLINIC} & Logical & Section~\ref{baroclinic_torque} & & \ct{T} \\ \hline +\ct{CHECK_POISSON} & Logical & Section~\ref{pressure_solver} & & \ct{F} \\ \hline +\ct{FISHPAK_BC(3)} & Integer Array & Section~\ref{sec:periodic} & & \\ \hline +\ct{ITERATION_SUSPEND_FACTOR} & Real & Section~\ref{pressure_solver} & s & 0.95 \\ \hline +\ct{MAX_PREDICTOR_PRESSURE_ITERATIONS} & Integer & Section~\ref{pressure_solver} & & * \\ \hline +\ct{MAX_PRESSURE_ITERATIONS} & Integer & Section~\ref{pressure_solver} & & 10 \\ \hline +\ct{PRESSURE_RELAX_TIME} & Real & Section~\ref{background_pressure} & s & 1 \\ \hline +\ct{PRESSURE_TOLERANCE} & Real & Section~\ref{pressure_solver} & \unit{\per\second^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{RELAXATION_FACTOR} & Real & Section~\ref{background_pressure} & & 1 \\ \hline +\ct{SOLVER} & Character & Section~\ref{optional_pressure_solver} & & \ct{'FFT'} \\ \hline +\ct{SUSPEND_PRESSURE_ITERATIONS} & Logical & Section~\ref{pressure_solver} & & \ct{T} \\ \hline +\ct{TUNNEL_PRECONDITIONER} & Logical & Section~\ref{tunnel_solver} & & \ct{F} \\ \hline +\ct{VELOCITY_TOLERANCE} & Real & Section~\ref{pressure_solver} & m/s & \\ \hline \end{xltabular} \vspace{-1.0em} \noindent\textsuperscript{*} Unless specified, this value defaults to the value set for \ct{MAX_PRESSURE_ITERATIONS}. @@ -13022,29 +13030,29 @@ \section{\texorpdfstring{{\tt PRES}}{PRES} (Pressure Solver Parameters)} \section{\texorpdfstring{{\tt PROF}}{PROF} (Wall Profile Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Wall profile parameters (\ct{PROF} namelist group)]{For more information see Section~\ref{info:PROF}.} - \label{tbl:PROF} \\ - \hline - \multicolumn{5}{|c|}{\ct{PROF} (Wall Profile Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{PROF} (Wall Profile Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CELL_CENTERED} & Logical & Section~\ref{info:PROF} & & \ct{F} \\ \hline - \ct{FORMAT_INDEX} & Integer & Section~\ref{info:PROF} & & 1 \\ \hline - \ct{ID} & Character & Section~\ref{info:PROF} & & \\ \hline - \ct{INIT_ID} & Character & Section~\ref{info:PROF} & & \\ \hline - \ct{IOR} & Real & Section~\ref{info:PROF} & & \\ \hline - \ct{LP_TAG} & Integer & Section~\ref{info:PROF} & & 1 \\ \hline - \ct{MATL_ID} & Character & Section~\ref{info:PROF} & & \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:PROF} & & \\ \hline - \ct{QUANTITY} & Character & Section~\ref{info:PROF} & & \\ \hline - \ct{XYZ} & Real Triplet & Section~\ref{info:PROF} & m & \\ \hline +\caption[Wall profile parameters (\ct{PROF} namelist group)]{For more information see Section~\ref{info:PROF}.} +\label{tbl:PROF} \\ +\hline +\multicolumn{5}{|c|}{\ct{PROF} (Wall Profile Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{PROF} (Wall Profile Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CELL_CENTERED} & Logical & Section~\ref{info:PROF} & & \ct{F} \\ \hline +\ct{FORMAT_INDEX} & Integer & Section~\ref{info:PROF} & & 1 \\ \hline +\ct{ID} & Character & Section~\ref{info:PROF} & & \\ \hline +\ct{INIT_ID} & Character & Section~\ref{info:PROF} & & \\ \hline +\ct{IOR} & Real & Section~\ref{info:PROF} & & \\ \hline +\ct{LP_TAG} & Integer & Section~\ref{info:PROF} & & \\ \hline +\ct{MATL_ID} & Character & Section~\ref{info:PROF} & & \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:PROF} & & \\ \hline +\ct{QUANTITY} & Character & Section~\ref{info:PROF} & & \\ \hline +\ct{XYZ} & Real Triplet & Section~\ref{info:PROF} & m & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13054,83 +13062,83 @@ \section{\texorpdfstring{{\tt PROP}}{PROP} (Device Properties)} \begin{xltabular}{\textwidth}{|p{5cm}|X|X|l|X|} - \caption[Device properties (\ct{PROP} namelist group)]{For more information see Section~\ref{info:PROP}.} - \label{tbl:PROP} \\ - \hline - \multicolumn{5}{|c|}{\ct{PROP} (Device Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{PROP} (Device Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ACTIVATION_OBSCURATION} & Real & Section~\ref{info:smoke_detector} & \%/m & 3.24 \\ \hline - \ct{ACTIVATION_TEMPERATURE} & Real & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & \\ \hline - \ct{ALPHA_C} & Real & Section~\ref{info:smoke_detector} & & 1.8 \\ \hline - \ct{ALPHA_E} & Real & Section~\ref{info:smoke_detector} & & 0. \\ \hline - \ct{BETA_C} & Real & Section~\ref{info:smoke_detector} & & \\ \hline - \ct{BETA_E} & Real & Section~\ref{info:smoke_detector} & & \\ \hline - \ct{CALIBRATION_CONSTANT} & Real & Section~\ref{info:bidir_probe} & & 0.93 \\ \hline - \ct{CHARACTERISTIC_VELOCITY} & Real & Section~\ref{info:pressure_coefficient} & m/s & 1. \\ \hline - \ct{C_FACTOR} & Real & Section~\ref{info:sprinklers} & \unit{(m/s)\tothe{1/2}} & 0. \\ \hline - \ct{DENSITY} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{kg/m^3} & 8700. \rule{0pt}{2.3ex} \\ \hline - \ct{DIAMETER} & Real & Section~\ref{info:THERMOCOUPLE} & m & 0.001 \\ \hline - \ct{EMISSIVITY} & Real & Section~\ref{info:THERMOCOUPLE} & & 0.85 \\ \hline - \ct{FED_ACTIVITY} & Integer & Section~\ref{info:FED} & & 2 \\ \hline - \ct{FLOW_RAMP} & Character & Section~\ref{info:sprinklers} & & \\ \hline - \ct{FLOW_RATE} & Real & Section~\ref{info:sprinklers} & L/min & \\ \hline - \ct{FLOW_TAU} & Real & Section~\ref{info:sprinklers} & & 0. \\ \hline - \ct{GAUGE_EMISSIVITY} & Real & Section~\ref{info:heat_flux} & & 1. \\ \hline - \ct{GAUGE_TEMPERATURE} & Real & Section~\ref{info:heat_flux} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline - \ct{HISTOGRAM} & Logical & Section~\ref{info:histograms} & & F \\ \hline - \ct{HISTOGRAM_CUMULATIVE} & Logical & Section~\ref{info:histograms} & & F \\ \hline - \ct{HISTOGRAM_LIMITS(2)} & Real Array & Section~\ref{info:histograms} & & \\ \hline - \ct{HISTOGRAM_NBINS} & Integer & Section~\ref{info:histograms} & & \\ \hline - \ct{HISTOGRAM_NORMALIZE} & Logical & Section~\ref{info:histograms} & & T \\ \hline - \ct{ID} & Character & Section~\ref{info:PROP} & & \\ \hline - \ct{INITIAL_TEMPERATURE} & Real & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline - \ct{K_FACTOR} & Real & Section~\ref{info:sprinklers} & \unit{L/(min.bar^{\ha})} & \\ \hline - \ct{LENGTH} & Real & Section~\ref{info:smoke_detector} & m & \\ \hline - \ct{MASS_FLOW_RATE} & Real & Section~\ref{info:sprinklers} & kg/s & \\ \hline - \ct{OFFSET} & Real & Section~\ref{info:sprinklers} & m & 0.05 \\ \hline - \ct{OPERATING_PRESSURE} & Real & Section~\ref{info:sprinklers} & bar & \\ \hline - \ct{ORIFICE_DIAMETER} & Real & Section~\ref{info:sprinklers} & m & 0. \\ \hline - \ct{PARTICLES_PER_SECOND} & Integer & Section~\ref{info:sprinkler_droplets} & & 5000 \\ \hline - \ct{PARTICLE_VELOCITY} & Real & Section~\ref{info:sprinklers} & m/s & 0. \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:sprinklers} & & \\ \hline - \ct{PDPA_END} & Real & Section~\ref{PDPA} & s & \ct{T_END} \\ \hline - \ct{PDPA_INTEGRATE} & Logical & Section~\ref{PDPA} & & \ct{T} \\ \hline - \ct{PDPA_M} & Integer & Section~\ref{PDPA} & & 0 \\ \hline - \ct{PDPA_N} & Integer & Section~\ref{PDPA} & & 0 \\ \hline - \ct{PDPA_NORMALIZE} & Logical & Section~\ref{PDPA} & & \ct{T} \\ \hline - \ct{PDPA_RADIUS} & Real & Section~\ref{PDPA} & m & 0. \\ \hline - \ct{PDPA_START} & Real & Section~\ref{PDPA} & s & \ct{T_BEGIN} \\ \hline - \ct{PRESSURE_RAMP} & Character & Section~\ref{info:sprinklers} & & \\ \hline - \ct{PROBE_DIAMETER} & Real & Section~\ref{info:bidir_probe} & m & 0.0254 \\ \hline - \ct{P0} & Real & Section~\ref{info:velocity_patch} & m/s & \\ \hline - \ct{PX(3)} & Real & Section~\ref{info:velocity_patch} & m/s & 0. \\ \hline - \ct{PXX(3,3)} & Real & Section~\ref{info:velocity_patch} & m/s & 0. \\ \hline - \ct{QUANTITY} & Character & Section~\ref{info:sprinklers} & & \\ \hline - \ct{RTI} & Real & Section~\ref{info:sprinklers} & \unit{(m.s)\tothe{1/2}} & 100. \\ \hline - \ct{SMOKEVIEW_ID(:)} & Char.~Array & Section~\ref{info:SMOKEVIEW_ID} & & \\ \hline - \ct{SMOKEVIEW_PARAMETERS(:)} & Char.~Array & Section~\ref{info:SMOKEVIEW_PARAMETERS} & & \\ \hline - \ct{SPARK} & Logical & Section~\ref{info:ignition} & & \ct{F} \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:alternative_smoke} & & \\ \hline - \ct{SPECIFIC_HEAT} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{kJ/(kg.K)} & \\ \hline - \ct{SPECIFIC_HEAT_RAMP} & Character & Section~\ref{info:THERMOCOUPLE} & & \\ \hline - \ct{SPRAY_ANGLE(2,2)} & Real & Section~\ref{info:sprinklers} & degrees & 60.,75. \\ \hline - \ct{SPRAY_PATTERN_BETA} & Real & Section~\ref{info:sprinklers} & degrees & 5. \\ \hline - \ct{SPRAY_PATTERN_MU} & Real & Section~\ref{info:sprinklers} & degrees & \\ \hline - \ct{SPRAY_PATTERN_SHAPE} & Character & Section~\ref{info:sprinklers} & & \ct{'GAUSSIAN'} \\ \hline - \ct{SPRAY_PATTERN_TABLE} & Character & Section~\ref{info:sprinklers} & & \\ \hline - \ct{TC} & Logical & Section~\ref{info:bidir_probe} & & \ct{T} \\ \hline - \ct{TIME_CONSTANT} & Real & Section~\ref{info:THERMOCOUPLE} & s & \\ \hline - \ct{VELOCITY_COMPONENT} & Integer & Section~\ref{info:velocity_patch} & & \\ \hline - \ct{VIEW_ANGLE} & Real & Section~\ref{info:heat_flux} & degrees & 180. \\ \hline +\caption[Device properties (\ct{PROP} namelist group)]{For more information see Section~\ref{info:PROP}.} +\label{tbl:PROP} \\ +\hline +\multicolumn{5}{|c|}{\ct{PROP} (Device Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{PROP} (Device Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ACTIVATION_OBSCURATION} & Real & Section~\ref{info:smoke_detector} & \%/m & 3.24 \\ \hline +\ct{ACTIVATION_TEMPERATURE} & Real & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & \\ \hline +\ct{ALPHA_C} & Real & Section~\ref{info:smoke_detector} & & 1.8 \\ \hline +\ct{ALPHA_E} & Real & Section~\ref{info:smoke_detector} & & 0 \\ \hline +\ct{BETA_C} & Real & Section~\ref{info:smoke_detector} & & \\ \hline +\ct{BETA_E} & Real & Section~\ref{info:smoke_detector} & & \\ \hline +\ct{CALIBRATION_CONSTANT} & Real & Section~\ref{info:bidir_probe} & & 0.93 \\ \hline +\ct{CHARACTERISTIC_VELOCITY} & Real & Section~\ref{info:pressure_coefficient} & m/s & 1 \\ \hline +\ct{C_FACTOR} & Real & Section~\ref{info:sprinklers} & \unit{(m/s)\tothe{1/2}} & 0 \\ \hline +\ct{DENSITY} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{kg/m^3} & 8700. \rule{0pt}{2.3ex} \\ \hline +\ct{DIAMETER} & Real & Section~\ref{info:THERMOCOUPLE} & m & 0.001 \\ \hline +\ct{EMISSIVITY} & Real & Section~\ref{info:THERMOCOUPLE} & & 0.85 \\ \hline +\ct{FED_ACTIVITY} & Integer & Section~\ref{info:FED} & & 2 \\ \hline +\ct{FLOW_RAMP} & Character & Section~\ref{info:sprinklers} & & \\ \hline +\ct{FLOW_RATE} & Real & Section~\ref{info:sprinklers} & L/min & \\ \hline +\ct{FLOW_TAU} & Real & Section~\ref{info:sprinklers} & & 0 \\ \hline +\ct{GAUGE_EMISSIVITY} & Real & Section~\ref{info:heat_flux} & & 1 \\ \hline +\ct{GAUGE_TEMPERATURE} & Real & Section~\ref{info:heat_flux} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline +\ct{HISTOGRAM} & Logical & Section~\ref{info:histograms} & & F \\ \hline +\ct{HISTOGRAM_CUMULATIVE} & Logical & Section~\ref{info:histograms} & & F \\ \hline +\ct{HISTOGRAM_LIMITS(2)} & Real Array & Section~\ref{info:histograms} & & \\ \hline +\ct{HISTOGRAM_NBINS} & Integer & Section~\ref{info:histograms} & & \\ \hline +\ct{HISTOGRAM_NORMALIZE} & Logical & Section~\ref{info:histograms} & & T \\ \hline +\ct{ID} & Character & Section~\ref{info:PROP} & & \\ \hline +\ct{INITIAL_TEMPERATURE} & Real & Section~\ref{info:sprinklers} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{K_FACTOR} & Real & Section~\ref{info:sprinklers} & \unit{L/(min.bar^{\ha})} & \\ \hline +\ct{LENGTH} & Real & Section~\ref{info:smoke_detector} & m & \\ \hline +\ct{MASS_FLOW_RATE} & Real & Section~\ref{info:sprinklers} & kg/s & \\ \hline +\ct{OFFSET} & Real & Section~\ref{info:sprinklers} & m & 0.05 \\ \hline +\ct{OPERATING_PRESSURE} & Real & Section~\ref{info:sprinklers} & bar & \\ \hline +\ct{ORIFICE_DIAMETER} & Real & Section~\ref{info:sprinklers} & m & 0 \\ \hline +\ct{PARTICLES_PER_SECOND} & Integer & Section~\ref{info:sprinkler_droplets} & & 5000 \\ \hline +\ct{PARTICLE_VELOCITY} & Real & Section~\ref{info:sprinklers} & m/s & 0 \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:sprinklers} & & \\ \hline +\ct{PDPA_END} & Real & Section~\ref{PDPA} & s & \ct{T_END} \\ \hline +\ct{PDPA_INTEGRATE} & Logical & Section~\ref{PDPA} & & \ct{T} \\ \hline +\ct{PDPA_M} & Integer & Section~\ref{PDPA} & & 0 \\ \hline +\ct{PDPA_N} & Integer & Section~\ref{PDPA} & & 0 \\ \hline +\ct{PDPA_NORMALIZE} & Logical & Section~\ref{PDPA} & & \ct{T} \\ \hline +\ct{PDPA_RADIUS} & Real & Section~\ref{PDPA} & m & 0. \\ \hline +\ct{PDPA_START} & Real & Section~\ref{PDPA} & s & \ct{T_BEGIN} \\ \hline +\ct{PRESSURE_RAMP} & Character & Section~\ref{info:sprinklers} & & \\ \hline +\ct{PROBE_DIAMETER} & Real & Section~\ref{info:bidir_probe} & m & 0.0254 \\ \hline +\ct{P0} & Real & Section~\ref{info:velocity_patch} & m/s & \\ \hline +\ct{PX(3)} & Real & Section~\ref{info:velocity_patch} & m/s & 0 \\ \hline +\ct{PXX(3,3)} & Real & Section~\ref{info:velocity_patch} & m/s & 0 \\ \hline +\ct{QUANTITY} & Character & Section~\ref{info:sprinklers} & & \\ \hline +\ct{RTI} & Real & Section~\ref{info:sprinklers} & \unit{(m.s)\tothe{1/2}} & 100 \\ \hline +\ct{SMOKEVIEW_ID(:)} & Char.~Array & Section~\ref{info:SMOKEVIEW_ID} & & \\ \hline +\ct{SMOKEVIEW_PARAMETERS(:)} & Char.~Array & Section~\ref{info:SMOKEVIEW_PARAMETERS} & & \\ \hline +\ct{SPARK} & Logical & Section~\ref{info:ignition} & & \ct{F} \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:alternative_smoke} & & \\ \hline +\ct{SPECIFIC_HEAT} & Real & Section~\ref{info:THERMOCOUPLE} & \unit{kJ/(kg.K)} & \\ \hline +\ct{SPECIFIC_HEAT_RAMP} & Character & Section~\ref{info:THERMOCOUPLE} & & \\ \hline +\ct{SPRAY_ANGLE(2,2)} & Real & Section~\ref{info:sprinklers} & degrees & 60,75 \\ \hline +\ct{SPRAY_PATTERN_BETA} & Real & Section~\ref{info:sprinklers} & degrees & 5 \\ \hline +\ct{SPRAY_PATTERN_MU} & Real & Section~\ref{info:sprinklers} & degrees & \\ \hline +\ct{SPRAY_PATTERN_SHAPE} & Character & Section~\ref{info:sprinklers} & & \ct{'GAUSSIAN'} \\ \hline +\ct{SPRAY_PATTERN_TABLE} & Character & Section~\ref{info:sprinklers} & & \\ \hline +\ct{TC} & Logical & Section~\ref{info:bidir_probe} & & \ct{T} \\ \hline +\ct{TIME_CONSTANT} & Real & Section~\ref{info:THERMOCOUPLE} & s & \\ \hline +\ct{VELOCITY_COMPONENT} & Integer & Section~\ref{info:velocity_patch} & & \\ \hline +\ct{VIEW_ANGLE} & Real & Section~\ref{info:heat_flux} & degrees & 180 \\ \hline \end{xltabular} @@ -13140,23 +13148,23 @@ \section{\texorpdfstring{{\tt PROP}}{PROP} (Device Properties)} \section{\texorpdfstring{{\tt RADF}}{RADF} (Radiation Output File Parameters)} \begin{xltabular}{\textwidth}{|p{5cm}|X|X|l|X|} - \caption[Radiation output file parameters (\ct{RADF} namelist group)]{For more information see Section~\ref{info:RADF}.} - \label{tbl:RADF} \\ - \hline - \multicolumn{5}{|c|}{\ct{RADF} (Radiation Output File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{RADF} (Radiation Output File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{I_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline - \ct{J_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline - \ct{K_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline - \ct{XB} & Real Sextuplet & Section~\ref{info:RADF} & m & \\ \hline +\caption[Radiation output file parameters (\ct{RADF} namelist group)]{For more information see Section~\ref{info:RADF}.} +\label{tbl:RADF} \\ +\hline +\multicolumn{5}{|c|}{\ct{RADF} (Radiation Output File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{RADF} (Radiation Output File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{I_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline +\ct{J_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline +\ct{K_STEP} & Integer & Section~\ref{info:RADF} & & 1 \\ \hline +\ct{XB} & Real Sextuplet & Section~\ref{info:RADF} & m & \\ \hline \end{xltabular} @@ -13166,39 +13174,39 @@ \section{\texorpdfstring{{\tt RADF}}{RADF} (Radiation Output File Parameters)} \section{\texorpdfstring{{\tt RADI}}{RADI} (Radiation Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Radiation parameters (\ct{RADI} namelist group)]{For more information see Section~\ref{info:RADI}.} - \label{tbl:RADI} \\ - \hline - \multicolumn{5}{|c|}{\ct{RADI} (Radiation Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{RADI} (Radiation Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ANGLE_INCREMENT} & Integer & Section~\ref{info:RADI_Resolution} & & 5 \\ \hline - \ct{BAND_LIMITS} & Real Array & Section~\ref{info:RADI_Wide_Band} & \unit{\micro m} & \\ \hline - \ct{C_MAX} & Real & Section~\ref{info:RTE_Source_Correction} & & 100 \\ \hline - \ct{C_MIN} & Real & Section~\ref{info:RTE_Source_Correction} & & 0.1 \\ \hline - \ct{INITIAL_RADIATION_ITERATIONS} & Integer & Section~\ref{info:RADI_Resolution} & & 3 \\ \hline - \ct{KAPPA0} & Real & Section~\ref{info:RADI_Gas_and_Soot} & 1/m & 0 \\ \hline - \ct{MIE_MINIMUM_DIAMETER} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\micro m} & 0.5 \\ \hline - \ct{MIE_MAXIMUM_DIAMETER} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\micro m} & 1.5$\times D$ \\ \hline - \ct{MIE_NDG} & Integer & Section~\ref{info:RADI_Two_Phase} & & 50 \\ \hline - \ct{NMIEANG} & Integer & Section~\ref{info:RADI_Two_Phase} & & 15 \\ \hline - \ct{NUMBER_RADIATION_ANGLES} & Integer & Section~\ref{info:RADI_Resolution} & & 100 \\ \hline - \ct{OPTICALLY_THIN} & Logical & Section~\ref{info:OPTICALLY_THIN} & & \ct{F} \\ \hline - \ct{PATH_LENGTH} & Real & Section~\ref{info:RadCal} & m & 0.1 \\ \hline - \ct{QR_CLIP} & Real & Section~\ref{info:RTE_Source_Correction} & \unit{kW/m^3} & 1 \\ \hline - \ct{RADIATION} & Logical & Section~\ref{info:radiation_off} & & \ct{T} \\ \hline - \ct{RADIATION_ITERATIONS} & Integer & Section~\ref{info:RADI_Resolution} & & 1 \\ \hline - \ct{RADTMP} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\degreeCelsius} & 900 \\ \hline - \ct{TIME_STEP_INCREMENT} & Integer & Section~\ref{info:RADI_Resolution} & & 3 \\ \hline - \ct{WIDE_BAND_MODEL} & Logical & Section~\ref{info:RADI_Wide_Band} & & \ct{F} \\ \hline - \ct{WSGG_MODEL} & Logical & Section~\ref{info:RADI_WSGG} & & \ct{F} \\ \hline +\caption[Radiation parameters (\ct{RADI} namelist group)]{For more information see Section~\ref{info:RADI}.} +\label{tbl:RADI} \\ +\hline +\multicolumn{5}{|c|}{\ct{RADI} (Radiation Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{RADI} (Radiation Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ANGLE_INCREMENT} & Integer & Section~\ref{info:RADI_Resolution} & & 5 \\ \hline +\ct{BAND_LIMITS} & Real Array & Section~\ref{info:RADI_Wide_Band} & \unit{\micro m} & \\ \hline +\ct{C_MAX} & Real & Section~\ref{info:RTE_Source_Correction} & & 100 \\ \hline +\ct{C_MIN} & Real & Section~\ref{info:RTE_Source_Correction} & & 0.1 \\ \hline +\ct{INITIAL_RADIATION_ITERATIONS} & Integer & Section~\ref{info:RADI_Resolution} & & 3 \\ \hline +\ct{KAPPA0} & Real & Section~\ref{info:RADI_Gas_and_Soot} & 1/m & 0 \\ \hline +\ct{MIE_MINIMUM_DIAMETER} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\micro m} & 0.5 \\ \hline +\ct{MIE_MAXIMUM_DIAMETER} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\micro m} & 1.5$\times D$ \\ \hline +\ct{MIE_NDG} & Integer & Section~\ref{info:RADI_Two_Phase} & & 50 \\ \hline +\ct{NMIEANG} & Integer & Section~\ref{info:RADI_Two_Phase} & & 15 \\ \hline +\ct{NUMBER_RADIATION_ANGLES} & Integer & Section~\ref{info:RADI_Resolution} & & 100\,(3D),60\,(2D) \\ \hline +\ct{OPTICALLY_THIN} & Logical & Section~\ref{info:OPTICALLY_THIN} & & \ct{F} \\ \hline +\ct{PATH_LENGTH} & Real & Section~\ref{info:RadCal} & m & 0.1 \\ \hline +\ct{QR_CLIP} & Real & Section~\ref{info:RTE_Source_Correction} & \unit{kW/m^3} & 1 \\ \hline +\ct{RADIATION} & Logical & Section~\ref{info:radiation_off} & & \ct{T} \\ \hline +\ct{RADIATION_ITERATIONS} & Integer & Section~\ref{info:RADI_Resolution} & & 1 \\ \hline +\ct{RADTMP} & Real & Section~\ref{info:RADI_Two_Phase} & \unit{\degreeCelsius} & 900 \\ \hline +\ct{TIME_STEP_INCREMENT} & Integer & Section~\ref{info:RADI_Resolution} & & 3\,(3D),2\,(2D) \\ \hline +\ct{WIDE_BAND_MODEL} & Logical & Section~\ref{info:RADI_Wide_Band} & & \ct{F} \\ \hline +\ct{WSGG_MODEL} & Logical & Section~\ref{info:RADI_WSGG} & & \ct{F} \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13207,32 +13215,32 @@ \section{\texorpdfstring{{\tt RADI}}{RADI} (Radiation Parameters)} \section{\texorpdfstring{{\tt RAMP}}{RAMP} (Ramp Function Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Ramp function parameters (\ct{RAMP} namelist group)]{For more information see Chapter~\ref{info:RAMP}.} - \label{tbl:RAMP} \\ - \hline - \multicolumn{5}{|c|}{\ct{RAMP} (Ramp Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{RAMP} (Ramp Function Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CTRL_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline - \ct{CTRL_ID_DEP} & Character & Section~\ref{info:RAMP_DEP_ID} & & \\ \hline - \ct{CYCLING} & Logical & Section~\ref{info:RAMP_Time} & & F \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline - \ct{DEVC_ID_DEP} & Character & Section~\ref{info:RAMP_DEP_ID} & & \\ \hline - \ct{EXTERNAL_FILE} & Logical & Section~\ref{info:external_control} & & F \\ \hline - \ct{F} & Real & Chapter~\ref{info:RAMP} & & \\ \hline - \ct{ID} & Character & Chapter~\ref{info:RAMP} & & \\ \hline - \ct{INITIAL_VALUE} & Real & Section~\ref{info:external_control} & & \\ \hline - \ct{NUMBER_INTERPOLATION_POINTS} & Integer & Chapter~\ref{info:RAMP} & & 5000 \\ \hline - \ct{T} & Real & Chapter~\ref{info:RAMP} & s (or \unit{\degreeCelsius}) & \\ \hline - \ct{X} & Real & Section~\ref{info:GVEC} & m & \\ \hline - \ct{Z} & Real & Section~\ref{info:wind_ramps} & m & \\ \hline +\caption[Ramp function parameters (\ct{RAMP} namelist group)]{For more information see Chapter~\ref{info:RAMP}.} +\label{tbl:RAMP} \\ +\hline +\multicolumn{5}{|c|}{\ct{RAMP} (Ramp Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{RAMP} (Ramp Function Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CTRL_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline +\ct{CTRL_ID_DEP} & Character & Section~\ref{info:RAMP_DEP_ID} & & \\ \hline +\ct{CYCLING} & Logical & Section~\ref{info:RAMP_Time} & & F \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:RAMPDEVC} & & \\ \hline +\ct{DEVC_ID_DEP} & Character & Section~\ref{info:RAMP_DEP_ID} & & \\ \hline +\ct{EXTERNAL_FILE} & Logical & Section~\ref{info:external_control} & & F \\ \hline +\ct{F} & Real & Chapter~\ref{info:RAMP} & & \\ \hline +\ct{ID} & Character & Chapter~\ref{info:RAMP} & & \\ \hline +\ct{INITIAL_VALUE} & Real & Section~\ref{info:external_control} & & \\ \hline +\ct{NUMBER_INTERPOLATION_POINTS} & Integer & Chapter~\ref{info:RAMP} & & 5000 \\ \hline +\ct{T} & Real & Chapter~\ref{info:RAMP} & s (or \unit{\degreeCelsius}) & \\ \hline +\ct{X} & Real & Section~\ref{info:GVEC} & m & \\ \hline +\ct{Z} & Real & Section~\ref{info:wind_ramps} & m & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13240,66 +13248,66 @@ \section{\texorpdfstring{{\tt RAMP}}{RAMP} (Ramp Function Parameters)} %\needspace{2.5in} \section{\texorpdfstring{{\tt REAC}}{REAC} (Reaction Parameters)} -\begin{xltabular}{\textwidth}{|p{5.5cm}|X|X|l|p{3cm}|} - \caption[Reaction parameters (\ct{REAC} namelist group)]{For more information see Chapter~\ref{chap:combustion}.} - \label{tbl:REAC} \\ - \hline - \multicolumn{5}{|c|}{\ct{REAC} (Reaction Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{REAC} (Reaction Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{A} & Real & Section~\ref{info:finite} & & \\ \hline - \ct{A_LOW_PR} & Real & Section~\ref{info:falloff_reactions} & & \\ \hline - \ct{A_TROE} & Real & Section~\ref{info:falloff_reactions} & & \\ \hline - \ct{AIT_EXCLUSION_ZONE(6,:)} & Real Array & Section~\ref{info:ignition} & m & \\ \hline - \ct{AIT_EXCLUSION_ZONE_CTRL_ID(:)} & Char.~Array & Section~\ref{info:ignition} & & \ct{'null'} \\ \hline - \ct{AIT_EXCLUSION_ZONE_DEVC_ID(:)} & Char.~Array & Section~\ref{info:ignition} & & \ct{'null'} \\ \hline - \ct{AIT_EXCLUSION_ZONE_TEMPERATURE(:)} & Real Array & Section~\ref{info:ait_per_zone} & \unit{\degreeCelsius} & \\ \hline - \ct{AUTO_IGNITION_TEMPERATURE} & Real & Section~\ref{info:ignition} & \unit{\degreeCelsius} & -273 \unit{\degreeCelsius} \\ \hline - \ct{CHECK_ATOM_BALANCE} & Logical & Section~\ref{info:atom_balance} & & \ct{T} \\ \hline - \ct{CO_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline - \ct{CRITICAL_FLAME_TEMPERATURE} & Real & Section~\ref{info:extinction} & \unit{\degreeCelsius} & 1427 \\ \hline - \ct{E} & Real & Section~\ref{info:finite} & J/mol & \\ \hline - \ct{E_LOW_PR} & Real & Section~\ref{info:falloff_reactions} & J/mol & \\ \hline - \ct{EPUMO2} & Real & Section~\ref{info:heat_of_combustion} & kJ/kg & 13100 \\ \hline - \ct{EQUATION} & Character & Section~\ref{info:EQUATION} & & \\ \hline - \ct{FUEL} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline - \ct{FUEL_C_TO_CO_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 2/3 \\ \hline - \ct{FUEL_H_TO_H2_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 0 \\ \hline - \ct{FUEL_N_TO_HCN_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 1/5 \\ \hline - \ct{FUEL_RADCAL_ID} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline - \ct{HCN_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline - \ct{HEAT_OF_COMBUSTION} & Real & Section~\ref{info:heat_of_combustion} & kJ/kg & \\ \hline - \ct{HOC_COMPLETE} & Real & Section~\ref{info:hoc_complete} & kJ/kg & \\ \hline - \ct{ID} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline - \ct{IDEAL} & Logical & Section~\ref{info:simple_chemistry} & & \ct{F} \\ \hline - \ct{LOWER_OXYGEN_LIMIT} & Real & Section~\ref{info:extinction} & mol/mol & \\ \hline - \ct{N_S(:)} & Real Array & Section~\ref{info:finite} & & \\ \hline - \ct{N_SIMPLE_CHEMISTRY_REACTIONS} & Integer & Section~\ref{info:two-step_simple_chemistry} & & 1 \\ \hline - \ct{N_T} & Real & Section~\ref{info:finite} & & \\ \hline - \ct{NU(:)} & Real Array & Section~\ref{info:finite} & & \\ \hline - \ct{PRIORITY} & Integer & Section~\ref{info:priority} & & 1 \\ \hline - \ct{RADIATIVE_FRACTION} & Real & Section~\ref{info:CHI_R} & & \\ \hline - \ct{RAMP_CHI_R} & Character & Section~\ref{ramp_chi_r} & & \\ \hline - \ct{REAC_ATOM_ERROR} & Real & Section~\ref{info:atom_balance} & atoms & \num{1E-4} \\ \hline - \ct{REAC_MASS_ERROR} & Real & Section~\ref{info:atom_balance} & kg/kg & \num{1E-4} \\ \hline - \ct{REACTYPE} & Character & Section~\ref{info:falloff_reactions} & & \ct{'ARRHENIUS-TYPE'} \\ \hline - \ct{REVERSE} & Logical & Section~\ref{info:eqbm_reac} & & \ct{F} \\ \hline - \ct{SOOT_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0.0 \\ \hline - \ct{SPEC_ID_N_S(:)} & Char.~Array & Section~\ref{info:finite} & & \\ \hline - \ct{SPEC_ID_NU(:)} & Char.~Array & Section~\ref{info:finite} & & \\ \hline - \ct{T1_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline - \ct{T2_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline - \ct{T3_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline - \ct{THIRD_BODY} & Logical & Section~\ref{info:third_body} & & \ct{F} \\ \hline - \ct{THIRD_EFF(:)} & Real Array & Section~\ref{info:third_body} & & \\ \hline - \ct{THIRD_EFF_ID(:)} & Char.~Array & Section~\ref{info:third_body} & & \\ \hline +\begin{xltabular}{\textwidth}{|p{5.5cm}|X|X|l|p{3.1cm}|} +\caption[Reaction parameters (\ct{REAC} namelist group)]{For more information see Chapter~\ref{chap:combustion}.} +\label{tbl:REAC} \\ +\hline +\multicolumn{5}{|c|}{\ct{REAC} (Reaction Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{REAC} (Reaction Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{A} & Real & Section~\ref{info:finite} & & \\ \hline +\ct{A_LOW_PR} & Real & Section~\ref{info:falloff_reactions} & & \\ \hline +\ct{A_TROE} & Real & Section~\ref{info:falloff_reactions} & & \\ \hline +\ct{AIT_EXCLUSION_ZONE(6,:)} & Real Array & Section~\ref{info:ignition} & m & \\ \hline +\ct{AIT_EXCLUSION_ZONE_CTRL_ID(:)} & Char.~Array & Section~\ref{info:ignition} & & \\ \hline +\ct{AIT_EXCLUSION_ZONE_DEVC_ID(:)} & Char.~Array & Section~\ref{info:ignition} & & \\ \hline +\ct{AIT_EXCLUSION_ZONE_TEMPERATURE(:)} & Real Array & Section~\ref{info:ait_per_zone} & \unit{\degreeCelsius} & \\ \hline +\ct{AUTO_IGNITION_TEMPERATURE} & Real & Section~\ref{info:ignition} & \unit{\degreeCelsius} & -273.15 \unit{\degreeCelsius} \\ \hline +\ct{CHECK_ATOM_BALANCE} & Logical & Section~\ref{info:atom_balance} & & \ct{T} \\ \hline +\ct{CO_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline +\ct{CRITICAL_FLAME_TEMPERATURE} & Real & Section~\ref{info:extinction} & \unit{\degreeCelsius} & 1427 \\ \hline +\ct{E} & Real & Section~\ref{info:finite} & J/mol & \\ \hline +\ct{E_LOW_PR} & Real & Section~\ref{info:falloff_reactions} & J/mol & \\ \hline +\ct{EPUMO2} & Real & Section~\ref{info:heat_of_combustion} & kJ/kg & 13100 \\ \hline +\ct{EQUATION} & Character & Section~\ref{info:EQUATION} & & \\ \hline +\ct{FUEL} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline +\ct{FUEL_C_TO_CO_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 2/3 \\ \hline +\ct{FUEL_H_TO_H2_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 0 \\ \hline +\ct{FUEL_N_TO_HCN_FRACTION} & Real & Section~\ref{info:two-step_simple_chemistry} & & 0 \\ \hline +\ct{FUEL_RADCAL_ID} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline +\ct{HCN_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline +\ct{HEAT_OF_COMBUSTION} & Real & Section~\ref{info:heat_of_combustion} & kJ/kg & \\ \hline +\ct{HOC_COMPLETE} & Real & Section~\ref{info:hoc_complete} & kJ/kg & \\ \hline +\ct{ID} & Character & Section~\ref{info:simple_chemistry} & & \\ \hline +\ct{IDEAL} & Logical & Section~\ref{info:simple_chemistry} & & \ct{F} \\ \hline +\ct{LOWER_OXYGEN_LIMIT} & Real & Section~\ref{info:extinction} & mol/mol & \\ \hline +\ct{N_S(:)} & Real Array & Section~\ref{info:finite} & & \\ \hline +\ct{N_SIMPLE_CHEMISTRY_REACTIONS} & Integer & Section~\ref{info:two-step_simple_chemistry} & & 1 \\ \hline +\ct{N_T} & Real & Section~\ref{info:finite} & & \\ \hline +\ct{NU(:)} & Real Array & Section~\ref{info:finite} & & \\ \hline +\ct{PRIORITY} & Integer & Section~\ref{info:priority} & & 1 \\ \hline +\ct{RADIATIVE_FRACTION} & Real & Section~\ref{info:CHI_R} & & \\ \hline +\ct{RAMP_CHI_R} & Character & Section~\ref{ramp_chi_r} & & \\ \hline +\ct{REAC_ATOM_ERROR} & Real & Section~\ref{info:atom_balance} & atoms & \num{1E-4} \\ \hline +\ct{REAC_MASS_ERROR} & Real & Section~\ref{info:atom_balance} & kg/kg & \num{1E-4} \\ \hline +\ct{REACTYPE} & Character & Section~\ref{info:falloff_reactions} & & \ct{'ARRHENIUS-TYPE'} \\ \hline +\ct{REVERSE} & Logical & Section~\ref{info:eqbm_reac} & & \ct{F} \\ \hline +\ct{SOOT_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline +\ct{SPEC_ID_N_S(:)} & Char.~Array & Section~\ref{info:finite} & & \\ \hline +\ct{SPEC_ID_NU(:)} & Char.~Array & Section~\ref{info:finite} & & \\ \hline +\ct{T1_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline +\ct{T2_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline +\ct{T3_TROE} & Real & Section~\ref{info:falloff_reactions} & K & \\ \hline +\ct{THIRD_BODY} & Logical & Section~\ref{info:third_body} & & \ct{F} \\ \hline +\ct{THIRD_EFF(:)} & Real Array & Section~\ref{info:third_body} & & \\ \hline +\ct{THIRD_EFF_ID(:)} & Char.~Array & Section~\ref{info:third_body} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13308,35 +13316,35 @@ \section{\texorpdfstring{{\tt REAC}}{REAC} (Reaction Parameters)} \section{\texorpdfstring{{\tt SLCF}}{SLCF} (Slice File Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Slice file parameters (\ct{SLCF} namelist group)]{For more information see Section~\ref{info:SLCF}.} - \label{tbl:SLCF} \\ - \hline - \multicolumn{5}{|c|}{\ct{SLCF} (Slice File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{SLCF} (Slice File Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{AGL_SLICE} & Real & Section~\ref{info:complex_terrain} & m & \\ \hline - \ct{CELL_CENTERED} & Logical & Section~\ref{info:SLCF} & & \ct{F} \\ \hline - \ct{DB} & Character & Section~\ref{info:SLCF} & & \\ \hline - \ct{DRY} & Logical & Section~\ref{info:dry} & & \\ \hline - \ct{ID} & Character & Section~\ref{info:SLCF} & & \\ \hline - \ct{MAXIMUM_VALUE} & Real & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline - \ct{MESH_NUMBER} & Integer & Section~\ref{info:SLCF} & & \\ \hline - \ct{MINIMUM_VALUE} & Real & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline - \ct{PBX, PBY, PBZ} & Real & Section~\ref{info:SLCF} & m & \\ \hline - \ct{QUANTITY} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline - \ct{REAC_ID} & Character & Section~\ref{tab:gasoutputquantities} & & \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline - \ct{VECTOR} & Logical & Section~\ref{info:SLCF} & & \ct{F} \\ \hline - \ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline - \ct{XB(6)} & Real Array & Section~\ref{info:SLCF} & m & \\ \hline +\caption[Slice file parameters (\ct{SLCF} namelist group)]{For more information see Section~\ref{info:SLCF}.} +\label{tbl:SLCF} \\ +\hline +\multicolumn{5}{|c|}{\ct{SLCF} (Slice File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{SLCF} (Slice File Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{AGL_SLICE} & Real & Section~\ref{info:complex_terrain} & m & \\ \hline +\ct{CELL_CENTERED} & Logical & Section~\ref{info:SLCF} & & \ct{F} \\ \hline +\ct{DB} & Character & Section~\ref{info:SLCF} & & \\ \hline +\ct{DRY} & Logical & Section~\ref{info:dry} & & \ct{F} \\ \hline +\ct{ID} & Character & Section~\ref{info:SLCF} & & \\ \hline +\ct{MAXIMUM_VALUE} & Real & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline +\ct{MESH_NUMBER} & Integer & Section~\ref{info:SLCF} & & \\ \hline +\ct{MINIMUM_VALUE} & Real & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline +\ct{PBX, PBY, PBZ} & Real & Section~\ref{info:SLCF} & m & \\ \hline +\ct{QUANTITY} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline +\ct{REAC_ID} & Character & Section~\ref{tab:gasoutputquantities} & & \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:gasoutputquantities} & & \\ \hline +\ct{VECTOR} & Logical & Section~\ref{info:SLCF} & & \ct{F} \\ \hline +\ct{VELO_INDEX} & Integer & Section~\ref{info:velocity} & & 0 \\ \hline +\ct{XB(6)} & Real Array & Section~\ref{info:SLCF} & m & \\ \hline \end{xltabular} @@ -13346,21 +13354,21 @@ \section{\texorpdfstring{{\tt SLCF}}{SLCF} (Slice File Parameters)} \section{\texorpdfstring{{\tt SM3D}}{SM3D} (Smoke3D Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Smoke3D parameters (\ct{SM3D} namelist group)]{For more information see Section~\ref{info:SMOKE3D}.} - \label{tbl:SM3D} \\ - \hline - \multicolumn{5}{|c|}{\ct{SM3D} (Smoke3D Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{SM3D} (Smoke3D Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{QUANTITY} & Character & Section~\ref{info:SMOKE3D} & & \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:SMOKE3D} & & \\ \hline +\caption[Smoke3D parameters (\ct{SM3D} namelist group)]{For more information see Section~\ref{info:SMOKE3D}.} +\label{tbl:SM3D} \\ +\hline +\multicolumn{5}{|c|}{\ct{SM3D} (Smoke3D Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{SM3D} (Smoke3D Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{QUANTITY} & Character & Section~\ref{info:SMOKE3D} & & \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:SMOKE3D} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13369,81 +13377,81 @@ \section{\texorpdfstring{{\tt SM3D}}{SM3D} (Smoke3D Parameters)} \section{\texorpdfstring{{\tt SPEC}}{SPEC} (Species Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|l|l|l|X|} - \caption[Species parameters (\ct{SPEC} namelist group)]{For more information see Section~\ref{info:SPEC}.} - \label{tbl:SPEC} \\ - \hline - \multicolumn{5}{|c|}{\ct{SPEC} (Species Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{SPEC} (Species Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{AEROSOL} & Logical & Section~\ref{info:deposition} & & \ct{F} \\ \hline - \ct{ALT_ID} & Character & Section~\ref{info:SPEC_Basics} & & \\ \hline - \ct{BACKGROUND} & Logical & Section~\ref{info:SPEC} & & \ct{F} \\ \hline - \ct{BETA_LIQUID} & Real & Section~\ref{thermal_part_props} & 1/K & \\ \hline - \ct{C} & Real & Section~\ref{info:FORMULA} & & \\ \hline - \ct{COMPLEX_REFRACTIVE_INDEX} & Real & Section~\ref{info:condensation} & & 0.01 \\ \hline - \ct{CONDUCTIVITY} & Real & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & \\ \hline - \ct{CONDUCTIVITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{W/(m.K)} & \\ \hline - \ct{CONDUCTIVITY_SOLID} & Real & Section~\ref{info:deposition} & \unit{W/(m.K)} & 0.26 \\ \hline - \ct{COPY_LUMPED} & Logical & Section~\ref{info:lumped} & & \ct{F} \\ \hline - \ct{DENSITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kg/m^3} & \\ \hline - \ct{DENSITY_SOLID} & Real & Section~\ref{info:deposition} & \unit{kg/m^3} & 1800. \\ \hline - \ct{DIFFUSIVITY} & Real & Section~\ref{info:diffusivity} & \unit{m^2/s} & \rule{0pt}{2.3ex} \\ \hline - \ct{ENTHALPY_OF_FORMATION} & Real & Section~\ref{thermal_part_props} & kJ/mol & \\ \hline - \ct{EPSILONKLJ} & Real & Section~\ref{gas_species_props} & & 0 \\ \hline - \ct{FIC_CONCENTRATION} & Real & Section~\ref{info:FED} & ppm & 0. \\ \hline - \ct{FLD_LETHAL_DOSE} & Real & Section~\ref{info:FED} & ppm$\times$min & 0. \\ \hline - \ct{FORMULA} & Character & Section~\ref{info:FORMULA} & & \\ \hline - \ct{H} & Real & Section~\ref{info:FORMULA} & & \\ \hline - \ct{HEAT_OF_VAPORIZATION} & Real & Section~\ref{thermal_part_props} & kJ/kg & \\ \hline - \ct{H_V_REFERENCE_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline - \ct{ID} & Character & Section~\ref{info:SPEC_Basics} & & \\ \hline - \ct{LUMPED_COMPONENT_ONLY} & Logical & Section~\ref{info:lumped} & & \ct{F} \\ \hline - \ct{MASS_EXTINCTION_COEFFICIENT} & Real & Section~\ref{info:alternative_smoke} & & 0 \\ \hline - \ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:lumped} & & 0 \\ \hline - \ct{MASS_FRACTION_0} & Real & Section~\ref{info:SPEC_Basics} & & 0 \\ \hline - \ct{MASS_FRACTION_COND_0} & Real & Section~\ref{info:condensation} & & 0 \\ \hline - \ct{MAX_DIAMETER} & Real & Section~\ref{info:agglomeration} & m & \\ \hline - \ct{MEAN_DIAMETER} & Real & Section~\ref{info:deposition} & m & \\ \hline - \ct{MELTING_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline - \ct{MIN_DIAMETER} & Real & Section~\ref{info:agglomeration} & m & \\ \hline - \ct{MW} & Real & Section~\ref{user_defined_gas_species_props} & g/mol & 29. \\ \hline - \ct{N} & Real & Section~\ref{info:FORMULA} & & \\ \hline - \ct{N_BINS} & Integer & Section~\ref{info:agglomeration} & & \\ \hline - \ct{O} & Real & Section~\ref{info:FORMULA} & & \\ \hline - \ct{ODE_ABS_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline - \ct{ODE_REL_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline - \ct{POLYNOMIAL} & Character & Section~\ref{info:Enthalpy} & & \\ \hline - \ct{POLYNOMIAL_COEFF(:)} & Real Array & Section~\ref{info:Enthalpy} & & \\ \hline - \ct{POLYNOMIAL_TEMP(:)} & Real Array & Section~\ref{info:Enthalpy} & K & \\ \hline - \ct{PR_GAS} & Real & Section~\ref{gas_species_props} & & \ct{PR} \\ \hline - \ct{PRIMITIVE} & Logical & Section~\ref{info:SPEC_advanced} & & \\ \hline - \ct{RADCAL_ID} & Character & Section~\ref{info:radiative_spec_props} & & \\ \hline - \ct{RAMP_CP} & Character & Section~\ref{info:Enthalpy} & & \\ \hline - \ct{RAMP_CP_L} & Character & Section~\ref{thermal_part_props} & & \\ \hline - \ct{RAMP_D} & Character & Section~\ref{gas_species_props} & & \\ \hline - \ct{RAMP_G_F} & Character & Section~\ref{gas_species_props} & & \\ \hline - \ct{RAMP_K} & Character & Section~\ref{gas_species_props} & & \\ \hline - \ct{RAMP_MU} & Character & Section~\ref{gas_species_props} & & \\ \hline - \ct{REAL_REFRACTIVE_INDEX} & Real & Section~\ref{info:condensation} & & 1.33 \\ \hline - \ct{REFERENCE_ENTHALPY} & Real & Section~\ref{gas_species_props} & kJ/kg & \\ \hline - \ct{REFERENCE_TEMPERATURE} & Real & Section~\ref{gas_species_props} & \unit{\degreeCelsius} & 25. \\ \hline - \ct{SIGMALJ} & Real & Section~\ref{gas_species_props} & & 0 \\ \hline - \ct{SPEC_ID(:)} & Char.~Array & Section~\ref{info:lumped} & & \\ \hline - \ct{SPECIFIC_HEAT} & Real & Section~\ref{gas_species_props} & \unit{kJ/(kg.K)} & \\ \hline - \ct{SPECIFIC_HEAT_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kJ/(kg.K)} & \\ \hline - \ct{THERMOPHORETIC_DIAMETER} & Real & Section~\ref{info:deposition} & m & \num{0.03E-6} \\ \hline - \ct{TURBULENT_SCHMIDT_NUMBER} & Real & Section~\ref{gas_species_props} & & 0.5 \\ \hline - \ct{VAPORIZATION_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline - \ct{VISCOSITY} & Real & Section~\ref{gas_species_props} & \unit{kg/(m.s)} & \\ \hline - \ct{VISCOSITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kg/(m.s)} & \\ \hline - \ct{VOLUME_FRACTION(:)} & Real Array & Section~\ref{info:lumped} & & \\ \hline +\caption[Species parameters (\ct{SPEC} namelist group)]{For more information see Section~\ref{info:SPEC}.} +\label{tbl:SPEC} \\ +\hline +\multicolumn{5}{|c|}{\ct{SPEC} (Species Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{SPEC} (Species Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{AEROSOL} & Logical & Section~\ref{info:deposition} & & \ct{F} \\ \hline +\ct{ALT_ID} & Character & Section~\ref{info:SPEC_Basics} & & \\ \hline +\ct{BACKGROUND} & Logical & Section~\ref{info:SPEC} & & \ct{F} \\ \hline +\ct{BETA_LIQUID} & Real & Section~\ref{thermal_part_props} & 1/K & \\ \hline +\ct{C} & Real & Section~\ref{info:FORMULA} & & \\ \hline +\ct{COMPLEX_REFRACTIVE_INDEX} & Real & Section~\ref{info:condensation} & & 0.01 \\ \hline +\ct{CONDUCTIVITY} & Real & Section~\ref{info:CONDUCTIVITY} & \unit{W/(m.K)} & \\ \hline +\ct{CONDUCTIVITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{W/(m.K)} & \\ \hline +\ct{CONDUCTIVITY_SOLID} & Real & Section~\ref{info:deposition} & \unit{W/(m.K)} & 0.26 \\ \hline +\ct{COPY_LUMPED} & Logical & Section~\ref{info:lumped} & & \ct{F} \\ \hline +\ct{DENSITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kg/m^3} & \\ \hline +\ct{DENSITY_SOLID} & Real & Section~\ref{info:deposition} & \unit{kg/m^3} & 1800. \\ \hline +\ct{DIFFUSIVITY} & Real & Section~\ref{info:diffusivity} & \unit{m^2/s} & \rule{0pt}{2.3ex} \\ \hline +\ct{ENTHALPY_OF_FORMATION} & Real & Section~\ref{thermal_part_props} & kJ/mol & \\ \hline +\ct{EPSILONKLJ} & Real & Section~\ref{gas_species_props} & & 71.4 \\ \hline +\ct{FIC_CONCENTRATION} & Real & Section~\ref{info:FED} & ppm & 0 \\ \hline +\ct{FLD_LETHAL_DOSE} & Real & Section~\ref{info:FED} & ppm$\times$min & 0 \\ \hline +\ct{FORMULA} & Character & Section~\ref{info:FORMULA} & & \\ \hline +\ct{H} & Real & Section~\ref{info:FORMULA} & & \\ \hline +\ct{HEAT_OF_VAPORIZATION} & Real & Section~\ref{thermal_part_props} & kJ/kg & \\ \hline +\ct{H_V_REFERENCE_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline +\ct{ID} & Character & Section~\ref{info:SPEC_Basics} & & \\ \hline +\ct{LUMPED_COMPONENT_ONLY} & Logical & Section~\ref{info:lumped} & & \ct{F} \\ \hline +\ct{MASS_EXTINCTION_COEFFICIENT} & Real & Section~\ref{info:alternative_smoke} & & 0 \\ \hline +\ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:lumped} & & 0 \\ \hline +\ct{MASS_FRACTION_0} & Real & Section~\ref{info:SPEC_Basics} & & 0 \\ \hline +\ct{MASS_FRACTION_COND_0} & Real & Section~\ref{info:condensation} & & 0 \\ \hline +\ct{MAX_DIAMETER} & Real & Section~\ref{info:agglomeration} & m & \\ \hline +\ct{MEAN_DIAMETER} & Real & Section~\ref{info:deposition} & m & \\ \hline +\ct{MELTING_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline +\ct{MIN_DIAMETER} & Real & Section~\ref{info:agglomeration} & m & \\ \hline +\ct{MW} & Real & Section~\ref{user_defined_gas_species_props} & g/mol & 28.01340 \\ \hline +\ct{N} & Real & Section~\ref{info:FORMULA} & & \\ \hline +\ct{N_BINS} & Integer & Section~\ref{info:agglomeration} & & \\ \hline +\ct{O} & Real & Section~\ref{info:FORMULA} & & \\ \hline +\ct{ODE_ABS_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline +\ct{ODE_REL_ERROR} & Real & Section~\ref{info:chem_integration} & & \\ \hline +\ct{POLYNOMIAL} & Character & Section~\ref{info:Enthalpy} & & \\ \hline +\ct{POLYNOMIAL_COEFF(:)} & Real Array & Section~\ref{info:Enthalpy} & & \\ \hline +\ct{POLYNOMIAL_TEMP(:)} & Real Array & Section~\ref{info:Enthalpy} & K & \\ \hline +\ct{PR_GAS} & Real & Section~\ref{gas_species_props} & & 0.71 \\ \hline +\ct{PRIMITIVE} & Logical & Section~\ref{info:SPEC_advanced} & & \\ \hline +\ct{RADCAL_ID} & Character & Section~\ref{info:radiative_spec_props} & & \\ \hline +\ct{RAMP_CP} & Character & Section~\ref{info:Enthalpy} & & \\ \hline +\ct{RAMP_CP_L} & Character & Section~\ref{thermal_part_props} & & \\ \hline +\ct{RAMP_D} & Character & Section~\ref{gas_species_props} & & \\ \hline +\ct{RAMP_G_F} & Character & Section~\ref{gas_species_props} & & \\ \hline +\ct{RAMP_K} & Character & Section~\ref{gas_species_props} & & \\ \hline +\ct{RAMP_MU} & Character & Section~\ref{gas_species_props} & & \\ \hline +\ct{REAL_REFRACTIVE_INDEX} & Real & Section~\ref{info:condensation} & & 1.33 \\ \hline +\ct{REFERENCE_ENTHALPY} & Real & Section~\ref{gas_species_props} & kJ/kg & \\ \hline +\ct{REFERENCE_TEMPERATURE} & Real & Section~\ref{gas_species_props} & \unit{\degreeCelsius} & 25. \\ \hline +\ct{SIGMALJ} & Real & Section~\ref{gas_species_props} & & 3.798 \\ \hline +\ct{SPEC_ID(:)} & Char.~Array & Section~\ref{info:lumped} & & \\ \hline +\ct{SPECIFIC_HEAT} & Real & Section~\ref{gas_species_props} & \unit{kJ/(kg.K)} & \\ \hline +\ct{SPECIFIC_HEAT_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kJ/(kg.K)} & \\ \hline +\ct{THERMOPHORETIC_DIAMETER} & Real & Section~\ref{info:deposition} & m & \num{0.03E-6} \\ \hline +\ct{TURBULENT_SCHMIDT_NUMBER} & Real & Section~\ref{gas_species_props} & & 0.5 \\ \hline +\ct{VAPORIZATION_TEMPERATURE} & Real & Section~\ref{thermal_part_props} & \unit{\degreeCelsius} & \\ \hline +\ct{VISCOSITY} & Real & Section~\ref{gas_species_props} & \unit{kg/(m.s)} & \\ \hline +\ct{VISCOSITY_LIQUID} & Real & Section~\ref{thermal_part_props} & \unit{kg/(m.s)} & \\ \hline +\ct{VOLUME_FRACTION(:)} & Real Array & Section~\ref{info:lumped} & & \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13452,187 +13460,187 @@ \section{\texorpdfstring{{\tt SPEC}}{SPEC} (Species Parameters)} \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Surface properties (\ct{SURF} namelist group)]{For more information see Section~\ref{info:SURF}.} - \label{tbl:SURF} \\ - \hline - \multicolumn{5}{|c|}{\ct{SURF} (Surface Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{SURF} (Surface Properties)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ADIABATIC} & Logical & Section~\ref{info:adiabatic} & & \ct{F} \\ \hline - \ct{ALLOW_SURFACE_PARTICLES} & Logical & Section~\ref{info:surface_droplets} & & \ct{T} \\ \hline - \ct{ALLOW_UNDERSIDE_PARTICLES} & Logical & Section~\ref{info:surface_droplets} & & \ct{F} \\ \hline - \ct{AREA_MULTIPLIER} & Real & Section~\ref{info:area_mult} & & 1.0 \\ \hline - \ct{BACKING} & Character & Section~\ref{info:BACKING} & & \ct{'EXPOSED'} \\ \hline - \ct{BLOWING} & Logical & Section~\ref{info:blowing} & & \\ \hline - \ct{BURN_AWAY} & Logical & Section~\ref{info:BURN_AWAY} & & \ct{F} \\ \hline - \ct{BURN_DURATION} & Real & Section~\ref{info:BURN_DURATION} & s & 1000000 \\ \hline - \ct{CELL_SIZE(:)} & Real Array & Section~\ref{info:solid_phase_stability} & m & \\ \hline - \ct{CELL_SIZE_FACTOR(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & 1.0 \\ \hline - \ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline - \ct{CONVECTION_LENGTH_SCALE} & Real & Section~\ref{info:convection} & m & 1. \\ \hline - \ct{CONVECTIVE_HEAT_FLUX} & Real & Section~\ref{info:convection} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{CONVERT_VOLUME_TO_MASS} & Logical & Section~\ref{info:MASS_FLUX} & & \ct{F} \\ \hline - \ct{DEFAULT} & Logical & Section~\ref{info:SURF} & & \ct{F} \\ \hline - \ct{DELAMINATION_DENSITY(:)} & Real Array & Section~\ref{info:surf_delamination} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline - \ct{DELAMINATION_TMP(:)} & Real Array & Section~\ref{info:surf_delamination} & \unit{\degreeCelsius} & \\ \hline - \ct{DELTA_TMP_MAX} & Real & Section~\ref{info:solid_phase_stability} & \unit{\degreeCelsius} & 10 \\ \hline - \ct{DRAG_COEFFICIENT} & Real & Section~\ref{info:boundary_fuel_model} & & 2.8 \\ \hline - \ct{DSC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline - \ct{DT_INSERT} & Real & Section~\ref{info:particle_flux} & s & 0.01 \\ \hline - \ct{E_COEFFICIENT} & Real & Section~\ref{info:suppression} & \unit{m^2/(kg.s)} & \rule{0pt}{2.3ex} \\ \hline - \ct{EMBER_GENERATION_HEIGHT(2)} & Real & Section~\ref{info:ember_generation_surf} & m & \\ \hline - \ct{EMBER_IGNITION_POWER_MEAN} & Real & Section~\ref{info:Ember_Ignition} & kW & \\ \hline - \ct{EMBER_IGNITION_POWER_SIGMA} & Real & Section~\ref{info:Ember_Ignition} & kW & 0.001 \\ \hline - \ct{EMBER_TRACKING_RATIO} & Real & Section~\ref{info:ember_generation_surf} & & 100 \\ \hline - \ct{EMBER_YIELD} & Real & Section~\ref{info:ember_generation_surf} & kg/kg & \\ \hline - \ct{EMISSIVITY} & Real & Section~\ref{info:convection} & & 0.9 \\ \hline - \ct{EMISSIVITY_BACK} & Real & Section~\ref{info:BACKING} & & \\ \hline - \ct{EXTERNAL_FLUX} & Real & Section~\ref{info:net_and_convective_heat_flux} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{EXTINCTION_TEMPERATURE} & Real & Section~\ref{info:specified_burning} & \unit{\degreeCelsius} & -273. \\ \hline - \ct{FREE_SLIP} & Logical & Section~\ref{info:WALL_MODEL} & & \ct{F} \\ \hline - \ct{GEOMETRY} & Character & Section~\ref{info:GEOMETRY} & & \ct{'CARTESIAN'} \\ \hline - \ct{HEAT_OF_VAPORIZATION} & Real & Section~\ref{info:specified_burning} & kJ/kg & \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:convection} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT_BACK} & Real & Section~\ref{info:convection} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline - \ct{HEAT_TRANSFER_COEFFICIENT_SIGMA} & Real & Section~\ref{info:impinging_jet} & m & \\ \hline - \ct{HEAT_TRANSFER_MODEL} & Character & Section~\ref{info:convection} & & \\ \hline - \ct{HORIZONTAL} & Logical & Section~\ref{info:GEOMETRY} & & \ct{F} \\ \hline - \ct{HRRPUA} & Real & Section~\ref{info:gas_burner} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{HT3D} & Logical & Section~\ref{info:ht3d} & & \ct{F} \\ \hline - \ct{HT3D_WEIGHT(:)} & Real Triplet & Section~\ref{info:LAYER_DIVIDE} & & $1/3$ \\ \hline - \ct{ID} & Character & Section~\ref{info:SURF} & & \\ \hline - \ct{IGNITION_TEMPERATURE} & Real & Section~\ref{info:specified_burning} & \unit{\degreeCelsius} & 5000. \\ \hline - \ct{INERT_Q_REF} & Logical & Section~\ref{info:scaled_burning} & & F \\ \hline - \ct{INIT_IDS} & Char.~Array & Section~\ref{info:trees} & & \\ \hline - \ct{INIT_PER_AREA} & Real & Section~\ref{info:trees} & m$^{-2}$ & \\ \hline - \ct{INNER_RADIUS} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline - \ct{INTERNAL_HEAT_SOURCE} & Real Array & Section~\ref{info:INTERNAL_HEAT_SOURCE} & \unit{kW/m^3} & \\ \hline - \ct{LAYER_DIVIDE} & Real & Section~\ref{info:LAYER_DIVIDE} & & \ct{N_LAYERS}/2 \\ \hline - \ct{LEAK_PATH} & Int.~Pair & Section~\ref{info:Leaks} & & \\ \hline - \ct{LEAK_PATH_ID} & Character~Pair & Section~\ref{info:Leaks} & & \\ \hline - \ct{LENGTH} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline - \ct{MASS_FLUX(:)} & Real Array & Section~\ref{info:MASS_FLUX} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline - \ct{MASS_FLUX_TOTAL} & Real & Section~\ref{info:MASS_FLUX_TOTAL} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline - \ct{MASS_FLUX_VAR} & Real & Section~\ref{info:MASS_FLUX_VAR} & & \\ \hline - \ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:MASS_FLUX} & & \\ \hline - \ct{MASS_PER_VOLUME(:)} & Real Array & Section~\ref{pine_needles} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline - \ct{MASS_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:liquid_fuels} & m/s & \\ \hline - \ct{MATL_ID(:,:)} & Char.~Array & Section~\ref{info:solid_pyrolysis} & & \\ \hline - \ct{MATL_MASS_FRACTION(:,:)} & Real Array & Section~\ref{info:MATL} & & \\ \hline - \ct{MAXIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & 1500 \rule{0pt}{2.3ex} \\ \hline - \ct{MCC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline - \ct{MINIMUM_BURNOUT_TIME} & Real & Section~\ref{veg_burnout_time} & s & 1000000 \\ \hline - \ct{MINIMUM_LAYER_MASS_FRACTION(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & \num{1e-12} \rule{0pt}{2.3ex} \\ \hline - \ct{MINIMUM_LAYER_THICKNESS(:)} & Real Array & Section~\ref{info:solid_phase_stability} & m & \num{1E-4} \rule{0pt}{2.3ex} \\ \hline - \ct{MINIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & 0 \\ \hline - \ct{MLRPUA} & Real & Section~\ref{info:gas_burner} & \unit{kg/(m^2.s)} & \\ \hline - \ct{MOISTURE_CONTENT(:)} & Real Array & Section~\ref{info:vegetation} & & 0. \\ \hline - \ct{N_LAYER_CELLS_MAX(:)} & Integer Array & Section~\ref{info:solid_phase_stability} & & 1000 \\ \hline - \ct{NEAR_WALL_EDDY_VISCOSITY} & Real & Section~\ref{info:LES} & \unit{m^2/s} & \\ \hline - \ct{NEAR_WALL_TURBULENCE_MODEL} & Character & Section~\ref{info:LES} & & \\ \hline - \ct{NET_HEAT_FLUX} & Real & Section~\ref{info:convection} & \unit{kW/m^2} & \\ \hline - \ct{NO_SLIP} & Logical & Section~\ref{info:WALL_MODEL} & & \ct{F} \\ \hline - \ct{NODE_ID} & Character & Section~\ref{info:hvac_geom} & & \\ \hline - \ct{NPPC} & Integer & Section~\ref{info:particle_flux} & & 1 \\ \hline - \ct{NUSSELT_C0} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{NUSSELT_C1} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{NUSSELT_C2} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{NUSSELT_M} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{PARTICLE_EXTRACTION_VELOCITY} & Real & Section~\ref{info:particle_removal} & m/s & \\ \hline - \ct{PARTICLE_MASS_FLUX} & Real & Section~\ref{info:particle_flux} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline - \ct{PARTICLE_SURFACE_DENSITY} & Real & Section~\ref{info:particle_flux} & \unit{kg/m^2)} & \rule{0pt}{2.3ex} \\ \hline - \ct{PART_ID} & Character & Section~\ref{info:controlling_droplets} & & \\ \hline - \ct{PLE} & Real & Section~\ref{info:wall_of_wind} & & 0.3 \\ \hline - \ct{PROFILE} & Character & Section~\ref{info:profiles} & & \\ \hline - \ct{RADIUS} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline - \ct{RAMP_EF} & Character & Section~\ref{info:simulating_the_cone_calorimeter} & & \\ \hline - \ct{RAMP_HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{RAMP_HEAT_TRANSFER_COEFFICIENT_BACK} & Real & Section~\ref{info:convection} & & \\ \hline - \ct{RAMP_IHS} & Character & Section~\ref{info:INTERNAL_HEAT_SOURCE} & & \\ \hline - \ct{RAMP_MF(:)} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline - \ct{RAMP_PART} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline - \ct{RAMP_Q} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline - \ct{RAMP_T} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline - \ct{RAMP_T_I} & Character & Section~\ref{info:TMP_INNER} & & \\ \hline - \ct{RAMP_TMP_BACK} & Character & Section~\ref{info:dirichlet} & & \\ \hline - \ct{RAMP_TMP_GAS_BACK} & Character & Section~\ref{info:BACKING} & & \\ \hline - \ct{RAMP_TMP_GAS_FRONT} & Character & Section~\ref{info:BACKING} & & \\ \hline - \ct{RAMP_V} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline - \ct{RAMP_V_X} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline - \ct{RAMP_V_Y} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline - \ct{RAMP_V_Z} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline - \ct{REFERENCE_HEAT_FLUX} & Real Array & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline - \ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} & Real & Section~\ref{info:scaled_burning} & s & 1.0 \\ \hline - \ct{REFERENCE_THICKNESS} & Real Array & Section~\ref{info:scaled_burning} & m & \\ \hline - \ct{REMESH_RATIO} & Real & Section~\ref{info:solid_phase_stability} & & 0.15 \\ \hline - \ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \small 255,204,102 \\ \hline - \ct{ROUGHNESS} & Real & Section~\ref{info:WALL_MODEL} & m & 0. \\ \hline - \ct{SHAPE_FACTOR} & Real & Section~\ref{info:boundary_fuel_model} & & 0.25 \\ \hline - \ct{SKIP_INRAD} & Logical & Section~\ref{info:net_and_convective_heat_flux} & & \ct{F} \\ \hline - \ct{SPEC_ID} & Character & Section~\ref{info:MASS_FLUX} & & \\ \hline - \ct{SPREAD_RATE} & Real & Section~\ref{info:spread} & m/s & \\ \hline - \ct{STRETCH_FACTOR(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & 2. \\ \hline - \ct{SURFACE_VOLUME_RATIO(:)} & Real & Section~\ref{info:boundary_fuel_model} & 1/m & \\ \hline - \ct{TAU_EF} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TAU_MF(:)} & Real Array & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TAU_PART} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TAU_Q} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TAU_T} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TAU_V} & Real & Section~\ref{info:RAMP_Time} & s & 1. \\ \hline - \ct{TEXTURE_HEIGHT} & Real & Section~\ref{info:texture_map} & m & 1. \\ \hline - \ct{TEXTURE_MAP} & Character & Section~\ref{info:texture_map} & & \\ \hline - \ct{TEXTURE_WIDTH} & Real & Section~\ref{info:texture_map} & m & 1. \\ \hline - \ct{TGA_ANALYSIS} & Logical & Section~\ref{info:TGA_DSC_MCC} & & \ct{F} \\ \hline - \ct{TGA_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline - \ct{TGA_DT} & Real & Section~\ref{info:TGA_DSC_MCC} & s & \\ \hline - \ct{TGA_DUMP} & Real & Section~\ref{info:TGA_DSC_MCC} & K & 1 \\ \hline - \ct{TGA_FINAL_TEMPERATURE} & Real & Section~\ref{info:TGA_DSC_MCC} & \unit{\degreeCelsius} & 800. \\ \hline - \ct{TGA_HEATING_RATE} & Real & Section~\ref{info:TGA_DSC_MCC} & \unit{\degreeCelsius}/min & 5. \\ \hline - \ct{THICKNESS(:)} & Real Array & Section~\ref{info:SURF_MATL_Basics} & m & \\ \hline - \ct{TIME_STEP_FACTOR} & Real & Section~\ref{info:solid_phase_stability} & & 10. \\ \hline - \ct{TMP_BACK} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline - \ct{TMP_FRONT} & Real & Section~\ref{info:specified_temperature} & \unit{\degreeCelsius} & 20. \\ \hline - \ct{TMP_FRONT_INITIAL} & Real & Section~\ref{info:adiabatic} & \unit{\degreeCelsius} & \\ \hline - \ct{TMP_GAS_FRONT} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline - \ct{TMP_GAS_BACK} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline - \ct{TMP_INNER} & Real & Section~\ref{info:TMP_INNER} & \unit{\degreeCelsius} & 20. \\ \hline - \ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1. \\ \hline - \ct{VARIABLE_THICKNESS} & Logical & Section~\ref{info:ht1d} & & \ct{F} \\ \hline - \ct{VEG_LSET_BETA} & Real & Section~\ref{info:level_set} & & 0.01 \\ \hline - \ct{VEG_LSET_CHAR_FRACTION} & Real & Section~\ref{info:level_set} & & 0.2 \\ \hline - \ct{VEG_LSET_FIREBASE_TIME} & Real & Section~\ref{info:level_set} & s & \\ \hline - \ct{VEG_LSET_FUEL_INDEX} & Integer & Section~\ref{info:level_set} & & \\ \hline - \ct{VEG_LSET_HT} & Real & Section~\ref{info:level_set} & m & 0.2 \\ \hline - \ct{VEG_LSET_IGNITE_TIME} & Real & Section~\ref{info:level_set} & s & \\ \hline - \ct{VEG_LSET_M1} & Real & Section~\ref{info:level_set} & & 0.03 \\ \hline - \ct{VEG_LSET_M10} & Real & Section~\ref{info:level_set} & & 0.04 \\ \hline - \ct{VEG_LSET_M100} & Real & Section~\ref{info:level_set} & & 0.05 \\ \hline - \ct{VEG_LSET_MLW} & Real & Section~\ref{info:level_set} & & 0.70 \\ \hline - \ct{VEG_LSET_MLH} & Real & Section~\ref{info:level_set} & & 0.70 \\ \hline - \ct{VEG_LSET_QCON} & Real & Section~\ref{info:level_set} & \unit{kW/m^2} & 0. \rule{0pt}{2.3ex} \\ \hline - \ct{VEG_LSET_ROS_00} & Real & Section~\ref{info:level_set} & m/s & 0. \\ \hline - \ct{VEG_LSET_ROS_FIXED} & Logical & Section~\ref{info:level_set} & & \ct{F} \\ \hline - \ct{VEG_LSET_SIGMA} & Real & Section~\ref{info:level_set} & 1/m & 5000. \\ \hline - \ct{VEG_LSET_SURF_LOAD} & Real & Section~\ref{info:level_set} & \unit{kg/m^2)} & 1.0 \rule{0pt}{2.3ex} \\ \hline - \ct{VEG_LSET_WIND_HEIGHT} & Real & Section~\ref{info:custom_wind} & m & 6.1 \\ \hline - \ct{VEG_LSET_WIND_RAMP} & Character & Section~\ref{info:custom_wind} & & \\ \hline - \ct{VEL} & Real & Section~\ref{info:Velocity_BC} & m/s & \\ \hline - \ct{VEL_BULK} & Real & Section~\ref{info:profiles} & m/s & \\ \hline - \ct{VEL_GRAD} & Real & Section~\ref{info:vel_grad} & 1/s & \\ \hline - \ct{VEL_PART} & Real & Section~\ref{info:particle_flux} & m/s & \\ \hline - \ct{VEL_T(2)} & Real Array & Section~\ref{info:louvers} & m/s & \\ \hline - \ct{VOLUME_FLOW} & Real & Section~\ref{info:Velocity_BC} & \unit{m^3/s} & \rule{0pt}{2.3ex} \\ \hline - \ct{WIDTH} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline - \ct{XYZ(3)} & Real Array & Section~\ref{info:spread} & m & \\ \hline - \ct{Z0} & Real & Section~\ref{info:wall_of_wind} & m & 10. \\ \hline - \ct{Z_0} & Real & Section~\ref{info:wind_general} & m & 0. \\ \hline +\caption[Surface properties (\ct{SURF} namelist group)]{For more information see Section~\ref{info:SURF}.} +\label{tbl:SURF} \\ +\hline +\multicolumn{5}{|c|}{\ct{SURF} (Surface Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{SURF} (Surface Properties)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ADIABATIC} & Logical & Section~\ref{info:adiabatic} & & \ct{F} \\ \hline +\ct{ALLOW_SURFACE_PARTICLES} & Logical & Section~\ref{info:surface_droplets} & & \ct{T} \\ \hline +\ct{ALLOW_UNDERSIDE_PARTICLES} & Logical & Section~\ref{info:surface_droplets} & & \ct{F} \\ \hline +\ct{AREA_MULTIPLIER} & Real & Section~\ref{info:area_mult} & & 1.0 \\ \hline +\ct{BACKING} & Character & Section~\ref{info:BACKING} & & \ct{'EXPOSED'} \\ \hline +\ct{BLOWING} & Logical & Section~\ref{info:blowing} & & \\ \hline +\ct{BURN_AWAY} & Logical & Section~\ref{info:BURN_AWAY} & & \ct{F} \\ \hline +\ct{BURN_DURATION} & Real & Section~\ref{info:BURN_DURATION} & s & 1000000 \\ \hline +\ct{CELL_SIZE(:)} & Real Array & Section~\ref{info:solid_phase_stability} & m & \\ \hline +\ct{CELL_SIZE_FACTOR(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & 1 \\ \hline +\ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline +\ct{CONVECTION_LENGTH_SCALE} & Real & Section~\ref{info:convection} & m & 1 \\ \hline +\ct{CONVECTIVE_HEAT_FLUX} & Real & Section~\ref{info:convection} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{CONVERT_VOLUME_TO_MASS} & Logical & Section~\ref{info:MASS_FLUX} & & \ct{F} \\ \hline +\ct{DEFAULT} & Logical & Section~\ref{info:SURF} & & \ct{F} \\ \hline +\ct{DELAMINATION_DENSITY(:)} & Real Array & Section~\ref{info:surf_delamination} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline +\ct{DELAMINATION_TMP(:)} & Real Array & Section~\ref{info:surf_delamination} & \unit{\degreeCelsius} & \\ \hline +\ct{DELTA_TMP_MAX} & Real & Section~\ref{info:solid_phase_stability} & \unit{\degreeCelsius} & 25 \\ \hline +\ct{DRAG_COEFFICIENT} & Real & Section~\ref{info:boundary_fuel_model} & & 2.8 \\ \hline +\ct{DSC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline +\ct{DT_INSERT} & Real & Section~\ref{info:particle_flux} & s & 0.01 \\ \hline +\ct{E_COEFFICIENT} & Real & Section~\ref{info:suppression} & \unit{m^2/(kg.s)} & \rule{0pt}{2.3ex} \\ \hline +\ct{EMBER_GENERATION_HEIGHT(2)} & Real & Section~\ref{info:ember_generation_surf} & m & \\ \hline +\ct{EMBER_IGNITION_POWER_MEAN} & Real & Section~\ref{info:Ember_Ignition} & kW & \\ \hline +\ct{EMBER_IGNITION_POWER_SIGMA} & Real & Section~\ref{info:Ember_Ignition} & kW & 0.001 \\ \hline +\ct{EMBER_TRACKING_RATIO} & Real & Section~\ref{info:ember_generation_surf} & & 100 \\ \hline +\ct{EMBER_YIELD} & Real & Section~\ref{info:ember_generation_surf} & kg/kg & \\ \hline +\ct{EMISSIVITY} & Real & Section~\ref{info:convection} & & 0.9 \\ \hline +\ct{EMISSIVITY_BACK} & Real & Section~\ref{info:BACKING} & & \\ \hline +\ct{EXTERNAL_FLUX} & Real & Section~\ref{info:net_and_convective_heat_flux} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{EXTINCTION_TEMPERATURE} & Real & Section~\ref{info:specified_burning} & \unit{\degreeCelsius} & -273.15 \\ \hline +\ct{FREE_SLIP} & Logical & Section~\ref{info:WALL_MODEL} & & \ct{F} \\ \hline +\ct{GEOMETRY} & Character & Section~\ref{info:GEOMETRY} & & \ct{'CARTESIAN'} \\ \hline +\ct{HEAT_OF_VAPORIZATION} & Real & Section~\ref{info:specified_burning} & kJ/kg & \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:convection} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT_BACK} & Real & Section~\ref{info:convection} & \unit{W/(m^2.K)} & \rule{0pt}{2.3ex} \\ \hline +\ct{HEAT_TRANSFER_COEFFICIENT_SIGMA} & Real & Section~\ref{info:impinging_jet} & m & \\ \hline +\ct{HEAT_TRANSFER_MODEL} & Character & Section~\ref{info:convection} & & \\ \hline +\ct{HORIZONTAL} & Logical & Section~\ref{info:GEOMETRY} & & \ct{F} \\ \hline +\ct{HRRPUA} & Real & Section~\ref{info:gas_burner} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{HT3D} & Logical & Section~\ref{info:ht3d} & & \ct{F} \\ \hline +\ct{HT3D_WEIGHT(:)} & Real Triplet & Section~\ref{info:LAYER_DIVIDE} & & $1/3$ \\ \hline +\ct{ID} & Character & Section~\ref{info:SURF} & & \\ \hline +\ct{IGNITION_TEMPERATURE} & Real & Section~\ref{info:specified_burning} & \unit{\degreeCelsius} & 5000. \\ \hline +\ct{INERT_Q_REF} & Logical & Section~\ref{info:scaled_burning} & & F \\ \hline +\ct{INIT_IDS} & Char.~Array & Section~\ref{info:trees} & & \\ \hline +\ct{INIT_PER_AREA} & Real & Section~\ref{info:trees} & m$^{-2}$ & \\ \hline +\ct{INNER_RADIUS} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline +\ct{INTERNAL_HEAT_SOURCE} & Real Array & Section~\ref{info:INTERNAL_HEAT_SOURCE} & \unit{kW/m^3} & \\ \hline +\ct{LAYER_DIVIDE} & Real & Section~\ref{info:LAYER_DIVIDE} & & \ct{N_LAYERS}/2 \\ \hline +\ct{LEAK_PATH} & Int.~Pair & Section~\ref{info:Leaks} & & \\ \hline +\ct{LEAK_PATH_ID} & Character~Pair & Section~\ref{info:Leaks} & & \\ \hline +\ct{LENGTH} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline +\ct{MASS_FLUX(:)} & Real Array & Section~\ref{info:MASS_FLUX} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline +\ct{MASS_FLUX_TOTAL} & Real & Section~\ref{info:MASS_FLUX_TOTAL} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline +\ct{MASS_FLUX_VAR} & Real & Section~\ref{info:MASS_FLUX_VAR} & & \\ \hline +\ct{MASS_FRACTION(:)} & Real Array & Section~\ref{info:MASS_FLUX} & & \\ \hline +\ct{MASS_PER_VOLUME(:)} & Real Array & Section~\ref{pine_needles} & \unit{kg/m^3} & \rule{0pt}{2.3ex} \\ \hline +\ct{MASS_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:liquid_fuels} & m/s & \\ \hline +\ct{MATL_ID(:,:)} & Char.~Array & Section~\ref{info:solid_pyrolysis} & & \\ \hline +\ct{MATL_MASS_FRACTION(:,:)} & Real Array & Section~\ref{info:MATL} & & \\ \hline +\ct{MAXIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & 1500 \rule{0pt}{2.3ex} \\ \hline +\ct{MCC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline +\ct{MINIMUM_BURNOUT_TIME} & Real & Section~\ref{veg_burnout_time} & s & 1000000 \\ \hline +\ct{MINIMUM_LAYER_MASS_FRACTION(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & \num{1e-12} \rule{0pt}{2.3ex} \\ \hline +\ct{MINIMUM_LAYER_THICKNESS(:)} & Real Array & Section~\ref{info:solid_phase_stability} & m & \num{1E-6} \rule{0pt}{2.3ex} \\ \hline +\ct{MINIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & 0 \\ \hline +\ct{MLRPUA} & Real & Section~\ref{info:gas_burner} & \unit{kg/(m^2.s)} & \\ \hline +\ct{MOISTURE_CONTENT(:)} & Real Array & Section~\ref{info:vegetation} & & 0 \\ \hline +\ct{N_LAYER_CELLS_MAX(:)} & Integer Array & Section~\ref{info:solid_phase_stability} & & 1000 \\ \hline +\ct{NEAR_WALL_EDDY_VISCOSITY} & Real & Section~\ref{info:LES} & \unit{m^2/s} & \\ \hline +\ct{NEAR_WALL_TURBULENCE_MODEL} & Character & Section~\ref{info:LES} & & \\ \hline +\ct{NET_HEAT_FLUX} & Real & Section~\ref{info:convection} & \unit{kW/m^2} & \\ \hline +\ct{NO_SLIP} & Logical & Section~\ref{info:WALL_MODEL} & & \ct{F} \\ \hline +\ct{NODE_ID} & Character & Section~\ref{info:hvac_geom} & & \\ \hline +\ct{NPPC} & Integer & Section~\ref{info:particle_flux} & & 1 \\ \hline +\ct{NUSSELT_C0} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{NUSSELT_C1} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{NUSSELT_C2} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{NUSSELT_M} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{PARTICLE_EXTRACTION_VELOCITY} & Real & Section~\ref{info:particle_removal} & m/s & \\ \hline +\ct{PARTICLE_MASS_FLUX} & Real & Section~\ref{info:particle_flux} & \unit{kg/(m^2.s)} & \rule{0pt}{2.3ex} \\ \hline +\ct{PARTICLE_SURFACE_DENSITY} & Real & Section~\ref{info:particle_flux} & \unit{kg/m^2)} & \rule{0pt}{2.3ex} \\ \hline +\ct{PART_ID} & Character & Section~\ref{info:controlling_droplets} & & \\ \hline +\ct{PLE} & Real & Section~\ref{info:wall_of_wind} & & 0.3 \\ \hline +\ct{PROFILE} & Character & Section~\ref{info:profiles} & & \\ \hline +\ct{RADIUS} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline +\ct{RAMP_EF} & Character & Section~\ref{info:simulating_the_cone_calorimeter} & & \\ \hline +\ct{RAMP_HEAT_TRANSFER_COEFFICIENT} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{RAMP_HEAT_TRANSFER_COEFFICIENT_BACK} & Real & Section~\ref{info:convection} & & \\ \hline +\ct{RAMP_IHS} & Character & Section~\ref{info:INTERNAL_HEAT_SOURCE} & & \\ \hline +\ct{RAMP_MF(:)} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline +\ct{RAMP_PART} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline +\ct{RAMP_Q} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline +\ct{RAMP_T} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline +\ct{RAMP_T_I} & Character & Section~\ref{info:TMP_INNER} & & \\ \hline +\ct{RAMP_TMP_BACK} & Character & Section~\ref{info:dirichlet} & & \\ \hline +\ct{RAMP_TMP_GAS_BACK} & Character & Section~\ref{info:BACKING} & & \\ \hline +\ct{RAMP_TMP_GAS_FRONT} & Character & Section~\ref{info:BACKING} & & \\ \hline +\ct{RAMP_V} & Character & Section~\ref{info:RAMP_Time} & & \\ \hline +\ct{RAMP_V_X} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline +\ct{RAMP_V_Y} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline +\ct{RAMP_V_Z} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline +\ct{REFERENCE_HEAT_FLUX} & Real Array & Section~\ref{info:scaled_burning} & \unit{kW/m^2} & \rule{0pt}{2.3ex} \\ \hline +\ct{REFERENCE_HEAT_FLUX_TIME_INTERVAL} & Real & Section~\ref{info:scaled_burning} & s & 1 \\ \hline +\ct{REFERENCE_THICKNESS} & Real Array & Section~\ref{info:scaled_burning} & m & \\ \hline +\ct{REMESH_RATIO} & Real & Section~\ref{info:solid_phase_stability} & & 0.15 \\ \hline +\ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \small 255,204,102 \\ \hline +\ct{ROUGHNESS} & Real & Section~\ref{info:WALL_MODEL} & m & 0 \\ \hline +\ct{SHAPE_FACTOR} & Real & Section~\ref{info:boundary_fuel_model} & & 0.25 \\ \hline +\ct{SKIP_INRAD} & Logical & Section~\ref{info:net_and_convective_heat_flux} & & \ct{F} \\ \hline +\ct{SPEC_ID} & Character & Section~\ref{info:MASS_FLUX} & & \\ \hline +\ct{SPREAD_RATE} & Real & Section~\ref{info:spread} & m/s & \\ \hline +\ct{STRETCH_FACTOR(:)} & Real Array & Section~\ref{info:solid_phase_stability} & & 2 \\ \hline +\ct{SURFACE_VOLUME_RATIO(:)} & Real & Section~\ref{info:boundary_fuel_model} & 1/m & \\ \hline +\ct{TAU_EF} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TAU_MF(:)} & Real Array & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TAU_PART} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TAU_Q} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TAU_T} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TAU_V} & Real & Section~\ref{info:RAMP_Time} & s & 1 \\ \hline +\ct{TEXTURE_HEIGHT} & Real & Section~\ref{info:texture_map} & m & 1 \\ \hline +\ct{TEXTURE_MAP} & Character & Section~\ref{info:texture_map} & & \\ \hline +\ct{TEXTURE_WIDTH} & Real & Section~\ref{info:texture_map} & m & 1 \\ \hline +\ct{TGA_ANALYSIS} & Logical & Section~\ref{info:TGA_DSC_MCC} & & \ct{F} \\ \hline +\ct{TGA_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline +\ct{TGA_DT} & Real & Section~\ref{info:TGA_DSC_MCC} & s & \\ \hline +\ct{TGA_DUMP} & Real & Section~\ref{info:TGA_DSC_MCC} & K & 1 \\ \hline +\ct{TGA_FINAL_TEMPERATURE} & Real & Section~\ref{info:TGA_DSC_MCC} & \unit{\degreeCelsius} & 800 \\ \hline +\ct{TGA_HEATING_RATE} & Real & Section~\ref{info:TGA_DSC_MCC} & \unit{\degreeCelsius}/min & 5 \\ \hline +\ct{THICKNESS(:)} & Real Array & Section~\ref{info:SURF_MATL_Basics} & m & \\ \hline +\ct{TIME_STEP_FACTOR} & Real & Section~\ref{info:solid_phase_stability} & & 10 \\ \hline +\ct{TMP_BACK} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline +\ct{TMP_FRONT} & Real & Section~\ref{info:specified_temperature} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{TMP_FRONT_INITIAL} & Real & Section~\ref{info:adiabatic} & \unit{\degreeCelsius} & \\ \hline +\ct{TMP_GAS_FRONT} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline +\ct{TMP_GAS_BACK} & Real & Section~\ref{info:BACKING} & \unit{\degreeCelsius} & \\ \hline +\ct{TMP_INNER} & Real & Section~\ref{info:TMP_INNER} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{TRANSPARENCY} & Real & Section~\ref{info:TRANSPARENCY} & & 1 \\ \hline +\ct{VARIABLE_THICKNESS} & Logical & Section~\ref{info:ht1d} & & \ct{F} \\ \hline +\ct{VEG_LSET_BETA} & Real & Section~\ref{info:level_set} & & 0.01 \\ \hline +\ct{VEG_LSET_CHAR_FRACTION} & Real & Section~\ref{info:level_set} & & 0.2 \\ \hline +\ct{VEG_LSET_FIREBASE_TIME} & Real & Section~\ref{info:level_set} & s & \\ \hline +\ct{VEG_LSET_FUEL_INDEX} & Integer & Section~\ref{info:level_set} & & \\ \hline +\ct{VEG_LSET_HT} & Real & Section~\ref{info:level_set} & m & 0.2 \\ \hline +\ct{VEG_LSET_IGNITE_TIME} & Real & Section~\ref{info:level_set} & s & \\ \hline +\ct{VEG_LSET_M1} & Real & Section~\ref{info:level_set} & & 0.03 \\ \hline +\ct{VEG_LSET_M10} & Real & Section~\ref{info:level_set} & & 0.04 \\ \hline +\ct{VEG_LSET_M100} & Real & Section~\ref{info:level_set} & & 0.05 \\ \hline +\ct{VEG_LSET_MLW} & Real & Section~\ref{info:level_set} & & 0.70 \\ \hline +\ct{VEG_LSET_MLH} & Real & Section~\ref{info:level_set} & & 0.70 \\ \hline +\ct{VEG_LSET_QCON} & Real & Section~\ref{info:level_set} & \unit{kW/m^2} & 0. \rule{0pt}{2.3ex} \\ \hline +\ct{VEG_LSET_ROS_00} & Real & Section~\ref{info:level_set} & m/s & 0 \\ \hline +\ct{VEG_LSET_ROS_FIXED} & Logical & Section~\ref{info:level_set} & & \ct{F} \\ \hline +\ct{VEG_LSET_SIGMA} & Real & Section~\ref{info:level_set} & 1/m & 5000 \\ \hline +\ct{VEG_LSET_SURF_LOAD} & Real & Section~\ref{info:level_set} & \unit{kg/m^2)} & 1.0 \rule{0pt}{2.3ex} \\ \hline +\ct{VEG_LSET_WIND_HEIGHT} & Real & Section~\ref{info:custom_wind} & m & 6.1 \\ \hline +\ct{VEG_LSET_WIND_RAMP} & Character & Section~\ref{info:custom_wind} & & \\ \hline +\ct{VEL} & Real & Section~\ref{info:Velocity_BC} & m/s & \\ \hline +\ct{VEL_BULK} & Real & Section~\ref{info:profiles} & m/s & \\ \hline +\ct{VEL_GRAD} & Real & Section~\ref{info:vel_grad} & 1/s & \\ \hline +\ct{VEL_PART} & Real & Section~\ref{info:particle_flux} & m/s & \\ \hline +\ct{VEL_T(2)} & Real Array & Section~\ref{info:louvers} & m/s & \\ \hline +\ct{VOLUME_FLOW} & Real & Section~\ref{info:Velocity_BC} & \unit{m^3/s} & \rule{0pt}{2.3ex} \\ \hline +\ct{WIDTH} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline +\ct{XYZ(3)} & Real Array & Section~\ref{info:spread} & m & \\ \hline +\ct{Z0} & Real & Section~\ref{info:wall_of_wind} & m & 10 \\ \hline +\ct{Z_0} & Real & Section~\ref{info:wind_general} & m & 0 \\ \hline \end{xltabular} @@ -13643,22 +13651,22 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)} \section{\texorpdfstring{{\tt TABL}}{TABL} (Table Parameters)} -\begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Table parameters (\ct{TABL} namelist group)]{For more information see Section~\ref{info:spraypattern}.} - \label{tbl:TABL} \\ - \hline - \multicolumn{5}{|c|}{\ct{TABL} (Table Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{TABL} (Table Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{ID} & Character & Section~\ref{info:spraypattern} & & \\ \hline - \ct{TABLE_DATA(9)} & Real Array & Section~\ref{info:TABL},\ref{radiative_part_props} & & \\ \hline +\begin{xltabular}{\textwidth}{|p{4cm}|X|X|l|X|} +\caption[Table parameters (\ct{TABL} namelist group)]{For more information see Section~\ref{info:spraypattern}.} +\label{tbl:TABL} \\ +\hline +\multicolumn{5}{|c|}{\ct{TABL} (Table Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{TABL} (Table Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{ID} & Character & Section~\ref{info:spraypattern} & & \\ \hline +\ct{TABLE_DATA(9)} & Real Array & Section~\ref{info:TABL},\ref{radiative_part_props} & & \\ \hline \end{xltabular} @@ -13668,34 +13676,34 @@ \section{\texorpdfstring{{\tt TABL}}{TABL} (Table Parameters)} \section{\texorpdfstring{{\tt TIME}}{TIME} (Time Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Time parameters (\ct{TIME} namelist group)]{For more information see Section~\ref{info:TIME}.} - \label{tbl:TIME} \\ - \hline - \multicolumn{5}{|c|}{\ct{TIME} (Time Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{TIME} (Time Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{DT} & Real & Section~\ref{info:TIME_Control} & s & \\ \hline - \ct{DT_END_FILL} & Real & Section~\ref{info:TIME_Control} & s & \num{1e-6} \\ \hline - \ct{DT_END_MINIMUM} & Real & Section~\ref{info:TIME_Control} & s & \ct{2.*EPSILON} \\ \hline - \ct{DT_EXTERNAL} & Real & Section~\ref{info:external_control} & s & 0 \\ \hline - \ct{DT_EXTERNAL_HEARTBEAT} & Real & Section~\ref{info:external_control} & s & 0 \\ \hline - \ct{EXTERNAL_HEARTBEAT_FILENAME} & Character & Section~\ref{info:external_control} & & \\ \hline - \ct{HEARTBEAT_FAIL} & Logical & Section~\ref{info:external_control} & & \ct{T} \\ \hline - \ct{LIMITING_DT_RATIO} & Real & Section~\ref{info:Errors} & & 0.0001 \\ \hline - \ct{LOCK_TIME_STEP} & Logical & Section~\ref{info:TIME_Control} & & \ct{F} \\ \hline - \ct{RAMP_TIME} & Character & Section~\ref{info:simulation_time_ramp} & & \\ \hline - \ct{RESTRICT_TIME_STEP} & Logical & Section~\ref{info:TIME_Control} & & \ct{T} \\ \hline - \ct{T_BEGIN} & Real & Section~\ref{info:TIME_Basics} & s & 0. \\ \hline - \ct{T_END} & Real & Section~\ref{info:TIME_Basics} & s & 1. \\ \hline - \ct{TIME_SHRINK_FACTOR} & Real & Section~\ref{info:steady_state} & & 1. \\ \hline - \ct{WALL_INCREMENT} & Integer & Section~\ref{info:solid_phase_stability} & & 2 \\ \hline +\caption[Time parameters (\ct{TIME} namelist group)]{For more information see Section~\ref{info:TIME}.} +\label{tbl:TIME} \\ +\hline +\multicolumn{5}{|c|}{\ct{TIME} (Time Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{TIME} (Time Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{DT} & Real & Section~\ref{info:TIME_Control} & s & \\ \hline +\ct{DT_END_FILL} & Real & Section~\ref{info:TIME_Control} & s & \num{1e-6} \\ \hline +\ct{DT_END_MINIMUM} & Real & Section~\ref{info:TIME_Control} & s & \ct{2.*EPSILON} \\ \hline +\ct{DT_EXTERNAL} & Real & Section~\ref{info:external_control} & s & 0 \\ \hline +\ct{DT_EXTERNAL_HEARTBEAT} & Real & Section~\ref{info:external_control} & s & 0 \\ \hline +\ct{EXTERNAL_HEARTBEAT_FILENAME} & Character & Section~\ref{info:external_control} & & \\ \hline +\ct{HEARTBEAT_FAIL} & Logical & Section~\ref{info:external_control} & & \ct{T} \\ \hline +\ct{LIMITING_DT_RATIO} & Real & Section~\ref{info:Errors} & & 0.0001 \\ \hline +\ct{LOCK_TIME_STEP} & Logical & Section~\ref{info:TIME_Control} & & \ct{F} \\ \hline +\ct{RAMP_TIME} & Character & Section~\ref{info:simulation_time_ramp} & & \\ \hline +\ct{RESTRICT_TIME_STEP} & Logical & Section~\ref{info:TIME_Control} & & \ct{T} \\ \hline +\ct{T_BEGIN} & Real & Section~\ref{info:TIME_Basics} & s & 0 \\ \hline +\ct{T_END} & Real & Section~\ref{info:TIME_Basics} & s & 1 \\ \hline +\ct{TIME_SHRINK_FACTOR} & Real & Section~\ref{info:steady_state} & & 1 \\ \hline +\ct{WALL_INCREMENT} & Integer & Section~\ref{info:solid_phase_stability} & & 2 \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13704,24 +13712,24 @@ \section{\texorpdfstring{{\tt TIME}}{TIME} (Time Parameters)} \section{\texorpdfstring{{\tt TRNX, TRNY, TRNZ}}{TRNX, TRNY, TRNZ} (Mesh Transformations)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[MESH transformation parameters (\ct{TRN*} namelist groups)]{For more information see Section~\ref{info:TRNX}.} - \label{tbl:TRNX} \\ - \hline - \multicolumn{5}{|c|}{\ct{TRNX, TRNY, TRNZ} (Mesh Transformations)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{TRNX, TRNY, TRNZ} (Mesh Transformations)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CC} & Real & Section~\ref{info:TRNX} & m & \\ \hline - \ct{ID} & Character & Section~\ref{info:TRNX} & & \\ \hline - \ct{IDERIV} & Integer & Section~\ref{info:TRNX} & & \\ \hline - \ct{MESH_NUMBER} & Integer & Section~\ref{info:TRNX} & & \\ \hline - \ct{PC} & Real & Section~\ref{info:TRNX} & & \\ \hline +\caption[MESH transformation parameters (\ct{TRN*} namelist groups)]{For more information see Section~\ref{info:TRNX}.} +\label{tbl:TRNX} \\ +\hline +\multicolumn{5}{|c|}{\ct{TRNX, TRNY, TRNZ} (Mesh Transformations)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{TRNX, TRNY, TRNZ} (Mesh Transformations)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CC} & Real & Section~\ref{info:TRNX} & m & \\ \hline +\ct{ID} & Character & Section~\ref{info:TRNX} & & \\ \hline +\ct{IDERIV} & Integer & Section~\ref{info:TRNX} & & \\ \hline +\ct{MESH_NUMBER} & Integer & Section~\ref{info:TRNX} & & \\ \hline +\ct{PC} & Real & Section~\ref{info:TRNX} & & \\ \hline \end{xltabular} \clearpage % needed to remove spurious \hline above VENT table @@ -13732,50 +13740,50 @@ \section{\texorpdfstring{{\tt VENT}}{VENT} (Vent Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|l|X|} - \caption[Vent parameters (\ct{VENT} namelist group)]{For more information see Section~\ref{info:VENT}.} - \label{tbl:VENT} \\ - \hline - \multicolumn{5}{|c|}{\ct{VENT} (Vent Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{VENT} (Vent Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{AREA_ADJUST} & Logical & Section~\ref{spreading_fire} & & \ct{F} \\ \hline - \ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline - \ct{CTRL_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline - \ct{DB} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline - \ct{DEVC_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline - \ct{DYNAMIC_PRESSURE} & Real & Section~\ref{info:pressure_boundary} & Pa & 0. \\ \hline - \ct{GEOM} & Logical & Section~\ref{info:level_set} & & \ct{F} \\ \hline - \ct{ID} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline - \ct{IOR} & Integer & Section~\ref{info:VENT_Trouble} & & \\ \hline - \ct{L_EDDY} & Real & Section~\ref{info:synthetic_turbulence} & m & 0. \\ \hline - \ct{L_EDDY_IJ(3,3)} & Real Array & Section~\ref{info:synthetic_turbulence} & m & 0. \\ \hline - \ct{MB} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline - \ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline - \ct{N_EDDY} & Integer & Section~\ref{info:synthetic_turbulence} & & 0 \\ \hline - \ct{OBST_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline - \ct{OUTLINE} & Logical & Section~\ref{info:VENT_Basics} & & \ct{F} \\ \hline - \ct{PBX, PBY, PBZ} & Real & Section~\ref{info:VENT_Basics} & & \\ \hline - \ct{PRESSURE_RAMP} & Character & Section~\ref{info:pressure_boundary} & & \\ \hline - \ct{RADIUS} & Real & Section~\ref{sec:circvents} & m & \\ \hline - \ct{REYNOLDS_STRESS(3,3)} & Real Array & Section~\ref{info:synthetic_turbulence} & \unit{m^2/s^2} & 0. \\ \hline - \ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \\ \hline - \ct{SPREAD_RATE} & Real & Section~\ref{info:spread} & m/s & 0.05 \\ \hline - \ct{SURF_ID} & Character & Section~\ref{info:VENT_Basics} & & \ct{'INERT'} \\ \hline - \ct{TEXTURE_ORIGIN(3)} & Real Array & Section~\ref{info:texture_map} & m & (0.,0.,0.) \\ \hline - \ct{TMP_EXTERIOR} & Real & Section~\ref{info:Special_VENTS} & \unit{\degreeCelsius} & \\ \hline - \ct{TMP_EXTERIOR_RAMP} & Character & Section~\ref{info:Special_VENTS} & & \\ \hline - \ct{TRANSPARENCY} & Real & Section~\ref{info:colors} & & 1.0 \\ \hline - \ct{UVW(3)} & Real Array & Section~\ref{info:HVAClouvers} & & \\ \hline - \ct{VEL_RMS} & Real & Section~\ref{info:synthetic_turbulence} & m/s & 0. \\ \hline - \ct{XB(6)} & Real Array & Section~\ref{info:VENT_Basics} & m & \\ \hline - \ct{XYZ(3)} & Real Array & Section~\ref{info:spread} & m & \\ \hline +\caption[Vent parameters (\ct{VENT} namelist group)]{For more information see Section~\ref{info:VENT}.} +\label{tbl:VENT} \\ +\hline +\multicolumn{5}{|c|}{\ct{VENT} (Vent Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{VENT} (Vent Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{AREA_ADJUST} & Logical & Section~\ref{spreading_fire} & & \ct{F} \\ \hline +\ct{COLOR} & Character & Section~\ref{info:colors} & & \\ \hline +\ct{CTRL_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline +\ct{DB} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline +\ct{DEVC_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline +\ct{DYNAMIC_PRESSURE} & Real & Section~\ref{info:pressure_boundary} & Pa & 0 \\ \hline +\ct{GEOM} & Logical & Section~\ref{info:level_set} & & \ct{F} \\ \hline +\ct{ID} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline +\ct{IOR} & Integer & Section~\ref{info:VENT_Trouble} & & \\ \hline +\ct{L_EDDY} & Real & Section~\ref{info:synthetic_turbulence} & m & 0 \\ \hline +\ct{L_EDDY_IJ(3,3)} & Real Array & Section~\ref{info:synthetic_turbulence} & m & 0 \\ \hline +\ct{MB} & Character & Section~\ref{info:VENT_Basics} & & \\ \hline +\ct{MULT_ID} & Character & Section~\ref{info:MULT} & & \\ \hline +\ct{N_EDDY} & Integer & Section~\ref{info:synthetic_turbulence} & & 0 \\ \hline +\ct{OBST_ID} & Character & Section~\ref{info:activate_deactivate} & & \\ \hline +\ct{OUTLINE} & Logical & Section~\ref{info:VENT_Basics} & & \ct{F} \\ \hline +\ct{PBX, PBY, PBZ} & Real & Section~\ref{info:VENT_Basics} & & \\ \hline +\ct{PRESSURE_RAMP} & Character & Section~\ref{info:pressure_boundary} & & \\ \hline +\ct{RADIUS} & Real & Section~\ref{sec:circvents} & m & \\ \hline +\ct{REYNOLDS_STRESS(3,3)} & Real Array & Section~\ref{info:synthetic_turbulence} & \unit{m^2/s^2} & 0 \\ \hline +\ct{RGB(3)} & Integer Array & Section~\ref{info:colors} & & \\ \hline +\ct{SPREAD_RATE} & Real & Section~\ref{info:spread} & m/s & 0.05 \\ \hline +\ct{SURF_ID} & Character & Section~\ref{info:VENT_Basics} & & \ct{'INERT'} \\ \hline +\ct{TEXTURE_ORIGIN(3)} & Real Array & Section~\ref{info:texture_map} & m & (0.,0.,0.) \\ \hline +\ct{TMP_EXTERIOR} & Real & Section~\ref{info:Special_VENTS} & \unit{\degreeCelsius} & \\ \hline +\ct{TMP_EXTERIOR_RAMP} & Character & Section~\ref{info:Special_VENTS} & & \\ \hline +\ct{TRANSPARENCY} & Real & Section~\ref{info:colors} & & 1 \\ \hline +\ct{UVW(3)} & Real Array & Section~\ref{info:HVAClouvers} & & \\ \hline +\ct{VEL_RMS} & Real & Section~\ref{info:synthetic_turbulence} & m/s & 0 \\ \hline +\ct{XB(6)} & Real Array & Section~\ref{info:VENT_Basics} & m & \\ \hline +\ct{XYZ(3)} & Real Array & Section~\ref{info:spread} & m & \\ \hline \end{xltabular} @@ -13786,48 +13794,48 @@ \section{\texorpdfstring{{\tt VENT}}{VENT} (Vent Parameters)} \section{\texorpdfstring{{\tt WIND}}{WIND} (Wind and Atmospheric Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|l|l|X|X|} - \caption[Wind and atmospheric parameters (\ct{WIND} namelist group)]{For more information see Section~\ref{info:WIND}.} - \label{tbl:WIND} \\ - \hline - \multicolumn{5}{|c|}{\ct{WIND} (Wind and atmospheric parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{WIND} (Wind and atmospheric parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{CORIOLIS_VECTOR(3)} & Real & Section~\ref{info:coriolis_force} & & 0. \\ \hline - \ct{DIRECTION} & Real & Section~\ref{info:WIND} & degrees & 270 \\ \hline - \ct{FORCE_VECTOR(3)} & Real & Section~\ref{info:force_vector} & Pa/m & 0. \\ \hline - \ct{GEOSTROPHIC_WIND(2)} & Real & Section~\ref{info:geostrophic_wind} & m/s & \\ \hline - \ct{GROUND_LEVEL} & Real & Section~\ref{info:stratification} & m & 0. \\ \hline - \ct{L} & Real & Section~\ref{info:WIND} & m & 0 \\ \hline - \ct{LAPSE_RATE} & Real & Section~\ref{info:stratification} & \unit{\degreeCelsius}/m & 0 \\ \hline - \ct{LATITUDE} & Real & Section~\ref{info:coriolis_force} & degrees & \\ \hline - \ct{PRESSURE_GRADIENT_FORCE} & Real & Section~\ref{info:force_vector} & Pa/m & \\ \hline - \ct{RAMP_DIRECTION_T} & Character & Section~\ref{info:wind_ramps} & & \\ \hline - \ct{RAMP_DIRECTION_Z} & Character & Section~\ref{info:wind_ramps} & & \\ \hline - \ct{RAMP_FVX_T} & Character & Section~\ref{info:force_vector} & & \\ \hline - \ct{RAMP_FVY_T} & Character & Section~\ref{info:force_vector} & & \\ \hline - \ct{RAMP_FVZ_T} & Character & Section~\ref{info:force_vector} & & \\ \hline - \ct{RAMP_PGF_T} & Character & Section~\ref{info:force_vector} & & \\ \hline - \ct{RAMP_SPEED_T} & Character & Section~\ref{info:wind_ramps} & & \\ \hline - \ct{RAMP_SPEED_Z} & Character & Section~\ref{info:wind_ramps} & & \\ \hline - \ct{RAMP_TMP0_Z} & Character & Section~\ref{info:stratification} & & \\ \hline - \ct{SIGMA_THETA} & Real & Section~\ref{info:wind_ramps} & degrees & \\ \hline - \ct{SPEED} & Real & Section~\ref{info:wind_ramps} & m/s & 0. \\ \hline - \ct{STRATIFICATION} & Logical & Section~\ref{info:stratification} & & \ct{T} \\ \hline - \ct{TAU_THETA} & Real & Section~\ref{info:wind_ramps} & s & 300 \\ \hline - \ct{THETA_STAR} & Real & Section~\ref{info:WIND} & K & \\ \hline - \ct{TMP_REF} & Real & Section~\ref{info:WIND} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline - \ct{U_STAR} & Real & Section~\ref{info:WIND} & m/s & \\ \hline - \ct{U0,V0,W0} & Reals & Section~\ref{info:WIND} & m/s & 0. \\ \hline - \ct{USE_ATMOSPHERIC_INTERPOLATION} & Logical & FDS Tech Guide~\cite{FDS_Math_Guide} & & \ct{T} \\ \hline - \ct{Z_0} & Real & Section~\ref{info:WIND} & m & 0.03 \\ \hline - \ct{Z_REF} & Real & Section~\ref{info:WIND} & m & 10. \\ \hline +\caption[Wind and atmospheric parameters (\ct{WIND} namelist group)]{For more information see Section~\ref{info:WIND}.} +\label{tbl:WIND} \\ +\hline +\multicolumn{5}{|c|}{\ct{WIND} (Wind and atmospheric parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{WIND} (Wind and atmospheric parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{CORIOLIS_VECTOR(3)} & Real & Section~\ref{info:coriolis_force} & & 0 \\ \hline +\ct{DIRECTION} & Real & Section~\ref{info:WIND} & degrees & 270 \\ \hline +\ct{FORCE_VECTOR(3)} & Real & Section~\ref{info:force_vector} & Pa/m & 0 \\ \hline +\ct{GEOSTROPHIC_WIND(2)} & Real & Section~\ref{info:geostrophic_wind} & m/s & \\ \hline +\ct{GROUND_LEVEL} & Real & Section~\ref{info:stratification} & m & 0 \\ \hline +\ct{L} & Real & Section~\ref{info:WIND} & m & 0 \\ \hline +\ct{LAPSE_RATE} & Real & Section~\ref{info:stratification} & \unit{\degreeCelsius}/m & 0 \\ \hline +\ct{LATITUDE} & Real & Section~\ref{info:coriolis_force} & degrees & \\ \hline +\ct{PRESSURE_GRADIENT_FORCE} & Real & Section~\ref{info:force_vector} & Pa/m & \\ \hline +\ct{RAMP_DIRECTION_T} & Character & Section~\ref{info:wind_ramps} & & \\ \hline +\ct{RAMP_DIRECTION_Z} & Character & Section~\ref{info:wind_ramps} & & \\ \hline +\ct{RAMP_FVX_T} & Character & Section~\ref{info:force_vector} & & \\ \hline +\ct{RAMP_FVY_T} & Character & Section~\ref{info:force_vector} & & \\ \hline +\ct{RAMP_FVZ_T} & Character & Section~\ref{info:force_vector} & & \\ \hline +\ct{RAMP_PGF_T} & Character & Section~\ref{info:force_vector} & & \\ \hline +\ct{RAMP_SPEED_T} & Character & Section~\ref{info:wind_ramps} & & \\ \hline +\ct{RAMP_SPEED_Z} & Character & Section~\ref{info:wind_ramps} & & \\ \hline +\ct{RAMP_TMP0_Z} & Character & Section~\ref{info:stratification} & & \\ \hline +\ct{SIGMA_THETA} & Real & Section~\ref{info:wind_ramps} & degrees & \\ \hline +\ct{SPEED} & Real & Section~\ref{info:wind_ramps} & m/s & 0 \\ \hline +\ct{STRATIFICATION} & Logical & Section~\ref{info:stratification} & & \ct{T} \\ \hline +\ct{TAU_THETA} & Real & Section~\ref{info:wind_ramps} & s & 300 \\ \hline +\ct{THETA_STAR} & Real & Section~\ref{info:WIND} & K & \\ \hline +\ct{TMP_REF} & Real & Section~\ref{info:WIND} & \unit{\degreeCelsius} & \ct{TMPA} \\ \hline +\ct{U_STAR} & Real & Section~\ref{info:WIND} & m/s & \\ \hline +\ct{U0,V0,W0} & Reals & Section~\ref{info:WIND} & m/s & 0 \\ \hline +\ct{USE_ATMOSPHERIC_INTERPOLATION} & Logical & FDS Tech Guide~\cite{FDS_Math_Guide} & & \ct{T} \\ \hline +\ct{Z_0} & Real & Section~\ref{info:WIND} & m & 0.03 \\ \hline +\ct{Z_REF} & Real & Section~\ref{info:WIND} & m & 10 \\ \hline \end{xltabular} \vspace{\baselineskip} @@ -13836,25 +13844,25 @@ \section{\texorpdfstring{{\tt WIND}}{WIND} (Wind and Atmospheric Parameters)} \section{\texorpdfstring{{\tt ZONE}}{ZONE} (Pressure Zone Parameters)} \begin{xltabular}{\textwidth}{|p{6cm}|X|X|X|X|} - \caption[Pressure zone parameters (\ct{ZONE} namelist group)]{For more information see Section~\ref{info:ZONE}.} - \label{tbl:ZONE} \\ - \hline - \multicolumn{5}{|c|}{\ct{ZONE} (Pressure Zone Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endfirsthead - \caption[]{Continued} \\ - \hline - \multicolumn{5}{|c|}{\ct{ZONE} (Pressure Zone Parameters)} \\ - \hline - Keyword & Type & Description & Units & Default \\ \hline \hline - \endhead - \ct{DISCHARGE_COEFFICIENT(N)} & Real & Section~\ref{info:Leaks} & & 1. \\ \hline - \ct{ID} & Character & Section~\ref{info:ZONE_Basics} & & \\ \hline - \ct{LEAK_AREA(N)} & Real & Section~\ref{info:Leaks} & \unit{m^2} & 0 \\ \hline - \ct{LEAK_PRESSURE_EXPONENT(N)} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline - \ct{LEAK_REFERENCE_PRESSURE(N)} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline - \ct{XYZ(3,:)} & Real Array & Section~\ref{info:ZONE_Basics} & m & \\ \hline +\caption[Pressure zone parameters (\ct{ZONE} namelist group)]{For more information see Section~\ref{info:ZONE}.} +\label{tbl:ZONE} \\ +\hline +\multicolumn{5}{|c|}{\ct{ZONE} (Pressure Zone Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endfirsthead +\caption[]{Continued} \\ +\hline +\multicolumn{5}{|c|}{\ct{ZONE} (Pressure Zone Parameters)} \\ +\hline +Keyword & Type & Description & Units & Default \\ \hline \hline +\endhead +\ct{DISCHARGE_COEFFICIENT(N)} & Real & Section~\ref{info:Leaks} & & 1 \\ \hline +\ct{ID} & Character & Section~\ref{info:ZONE_Basics} & & \\ \hline +\ct{LEAK_AREA(N)} & Real & Section~\ref{info:Leaks} & \unit{m^2} & 0 \\ \hline +\ct{LEAK_PRESSURE_EXPONENT(N)} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline +\ct{LEAK_REFERENCE_PRESSURE(N)} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline +\ct{XYZ(3,:)} & Real Array & Section~\ref{info:ZONE_Basics} & m & \\ \hline \end{xltabular} @@ -13867,600 +13875,601 @@ \chapter{Error Codes} \begin{tabbing} - \hspace{0.4in} \= \hspace{5.2in} \= \hspace{1in} \\ - 101 \> \ct{Problem with ... line.} \> Chapter~\ref{info:Errors} \\ - 102 \> \ct{Input file ... not found in the current directory.} \> Section~\ref{info:launching} \\ - 103 \> \ct{CATF file ... not found.} \> Section~\ref{info:CATF} \\ - 104 \> \ct{OVERWRITE=F and concatenated file ... exists.} \> Section~\ref{info:OVERWRITE} \\ - 105 \> \ct{Input file ... has line with ... characters.} \> Section~\ref{info:CATF} \\ - 106 \> \ct{CATF file ... has line with ... characters.} \> Section~\ref{info:CATF} \\ - 107 \> \ct{Hidden carriage return character in line starting with ...} \> Section~\ref{info:namelist_formatting} \\ - 108 \> \ct{No periods allowed in CHID.} \> Section~\ref{info:input_file_rules} \\ - 109 \> \ct{Remove the file ... from the current directory.} \> Section~\ref{info:restart} \\ - 110 \> \ct{All meshes must be CYLINDRICAL ...} \> Section~\ref{info:2D} \\ - 111 \> \ct{MULT_ID ... on MESH line ... not found.} \> Section~\ref{info:multimesh} \\ - 112 \> \ct{The number of MPI processes ... exceeds the number of meshes} \> Section~\ref{info:parallelprocessing} \\ - 113 \> \ct{No MESH line(s) defined.} \> Section~\ref{info:MESH_Basics} \\ - 114 \> \ct{MPI_PROCESS for MESH ... greater than total ...} \> Section~\ref{info:multimesh} \\ - 115 \> \ct{Number of meshes exceeds number of MPI processes ...} \> Section~\ref{info:parallelprocessing} \\ - 116 \> \ct{IJK(2) must be 1 for all grids in 2D Calculation.} \> Section~\ref{info:2D} \\ - 117 \> \ct{MPI_PROCESS must be continuous and monotonically increasing.} \> Section~\ref{info:multimesh} \\ - 118 \> \ct{MESH 1 must be assigned to MPI_PROCESS 0.} \> Section~\ref{info:multimesh} \\ - 119 \> \ct{XB(:)=XB(:) on MESH ...} \> Section~\ref{info:MESH_Basics} \\ - 120 \> \ct{XB(1)<0 with CYLINDRICAL on MESH ...} \> Section~\ref{info:2D} \\ - 121 \> \ct{J>1 with CYLINDRICAL on MESH ...} \> Section~\ref{info:2D} \\ - 122 \> \ct{Too many MPI processes have been assigned to this job.} \> Section~\ref{info:parallelprocessing} \\ - 123 \> \ct{... timed out for MPI process ...} \> Section~\ref{info:Errors} \\ - - 124 \> \ct{Problem with grid transformation.} \> Section~\ref{info:TRNX} \\ - 125 \> \ct{Do not specify endpoints in linear grid transformation.} \> Section~\ref{info:TRNX} \\ - 126 \> \ct{x (y,z) transformation not monotonic, MESH ...} \> Section~\ref{info:TRNX} \\ - \> \> \\ - 127 \> \ct{TURBULENCE_MODEL ... is not appropriate for DNS.} \> Section~\ref{info:LES} \\ - 128 \> \ct{SIMULATION_MODE ... is not an option.} \> Section~\ref{Sim_Mode} \\ - 129 \> \ct{TURBULENCE_MODEL ... is not recognized.} \> Section~\ref{info:LES} \\ - 130 \> \ct{FLUX_LIMITER ... is not recognized.} \> Section~\ref{info:flux_limiters} \\ - 131 \> \ct{GEOSTROPHIC_WIND requires Coriolis force ...} \> Section~\ref{info:geostrophic_wind} \\ - \> \> \\ - 132 \> \ct{SPEC ...: N_BINS must be >=2.} \> Section~\ref{info:agglomeration} \\ - 133 \> \ct{SPEC ...: AEROSOL must be .TRUE. to use N_BINS.} \> Section~\ref{info:agglomeration} \\ - 134 \> \ct{SPEC ...: Do not specify MEAN_DIAMETER and N_BINS.} \> Section~\ref{info:agglomeration} \\ - 135 \> \ct{SPEC ...: MAX(MIN)_DIAMETER not set.} \> Section~\ref{info:agglomeration} \\ - 136 \> \ct{SPEC ...: MAX_DIAMETER <= MIN_DIAMETER.} \> Section~\ref{info:agglomeration} \\ - 137 \> \ct{SPEC ...: LUMPED_COMPONENT_ONLY must be .TRUE. to use N_BINS.} \> Section~\ref{info:agglomeration} \\ - 138 \> \ct{SPEC ...: Cannot set N_BINS for a condensable species.} \> Section~\ref{info:condensation} \\ - 139 \> \ct{SPEC ...: Condensable species cannot be LUMPED_SPECIES_ONLY.} \> Section~\ref{info:condensation} \\ - 140 \> \ct{SPEC ...: Condensable species cannot be a lumped species.} \> Section~\ref{info:condensation} \\ - 141 \> \ct{Species ... is primitive but more than one SPEC_ID given.} \> Section~\ref{info:lumped} \\ - 142 \> \ct{SPEC ... cannot specify both COPY_LUMPED and N_BINS.} \> Section~\ref{info:lumped} \\ - 143 \> \ct{SPEC ... cannot specify both COPY_LUMPED and BACKGROUND.} \> Section~\ref{info:lumped} \\ - 144 \> \ct{Only one BACKGROUND SPECies can be defined.} \> Section~\ref{info:primitive} \\ - 145 \> \ct{Cannot define a LUMPED_COMPONENT_ONLY ...} \> Section~\ref{info:lumped} \\ - 146 \> \ct{Cannot define a BACKGROUND species or redefine AIR ...} \> Section~\ref{info:lumped} \\ - 147 \> \ct{Species ... needs a name (ID=...).} \> Section~\ref{info:SPEC_Basics} \\ - 148 \> \ct{SPEC ... cannot redefine AIR unless ...} \> Section~\ref{info:AIR} \\ - 149 \> \ct{SPEC ... cannot specify both SPECIFIC_HEAT and RAMP_CP.} \> Section~\ref{user_defined_gas_species_props} \\ - 150 \> \ct{SPEC ... cannot specify both SPECIFIC_HEAT_LIQUID and RAMP_C_L} \> Section~\ref{user_defined_gas_species_props} \\ - 151 \> \ct{SPEC ... cannot specify both CONDUCTIVITY and RAMP_K.} \> Section~\ref{user_defined_gas_species_props} \\ - 152 \> \ct{SPEC ... cannot specify both DIFFUSIVITY and RAMP_D.} \> Section~\ref{user_defined_gas_species_props} \\ - 153 \> \ct{SPEC ... cannot specify both VISCOSITY and RAMP_MU.} \> Section~\ref{user_defined_gas_species_props} \\ - 154 \> \ct{SPEC ... cannot define both REFERENCE_ENTHALPY and} \> Section~\ref{user_defined_gas_species_props} \\ - \> \ct{ENTHALPY_OF_FORMATION.} \\ - 155 \> \ct{Species ... has the same ID as species ...} \> Section~\ref{info:SPEC_Basics} \\ - 156 \> \ct{Cannot define MASS_FRACTION_0 for a LUMPED ...} \> Section~\ref{info:MASS_FRACTION_0} \\ - 157 \> \ct{SPEC ...: If one of SPECIFIC_HEAT_LIQUID ...} \> Section~\ref{info:liquid_props} \\ - 158 \> \ct{SPEC ...: No MEAN_DIAMETER given.} \> Section~\ref{info:deposition} \\ - 159 \> \ct{SPEC ... cannot specify both MASS and VOLUME_FRACTION.} \> Section~\ref{info:lumped} \\ - 160 \> \ct{SPEC ... cannot specify both FORMULA and C,H,O, or N.} \> Section~\ref{info:FORMULA} \\ - 161 \> \ct{Simple chemistry FUEL ... not defined on REAC or SPEC.} \> Section~\ref{info:simple_chemistry} \\ - 162 \> \ct{SPEC ... has the same names as a predefined lumped species.} \> Section~\ref{info:simple_chemistry} \\ - 163 \> \ct{REAC ...: FORMULA limited to C,H,O,N for simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ - 164 \> \ct{REAC ...: Specify C and/or H for simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ - 165 \> \ct{Cannot use simple chemistry with SOOT_OXIDATION.} \> Section~\ref{info:SOOT_OXIDATION} \\ - 166 \> \ct{SOOT_OXIDATION set without SOOT as a species.} \> Section~\ref{info:SOOT_OXIDATION} \\ - 167 \> \ct{SOOT_OXIDATION set without SOOT defined as an AEROSOL species.} \> Section~\ref{info:SOOT_OXIDATION} \\ - 168 \> \ct{SPEC ...: Subspecies ... not found.} \> Section~\ref{info:lumped} \\ - 169 \> \ct{SPEC ...: Mass or volume fraction for subspecies ...} \> Section~\ref{info:lumped} \\ - 170 \> \ct{SPEC ...: Cannot have duplicate species in SPEC_ID.} \> Section~\ref{info:lumped} \\ - \> \> \\ - 171 \> \ct{REAC, Not enough carbon for the CO_YIELD ...} \> Section~\ref{info:simple_chemistry} \\ - 172 \> \ct{REAC, Not enough hydrogen for the SOOT_YIELD ...} \> Section~\ref{info:simple_chemistry} \\ - 173 \> \ct{REAC, Not enough nitrogen for the HCN_YIELD.} \> Section~\ref{info:simple_chemistry} \\ - 174 \> \ct{REAC, Not enough nitrogen for the FUEL_N_TO_HCN_FRACTION.} \> Section~\ref{info:simple_chemistry} \\ - 175 \> \ct{REAC, Not enough carbon for the FUEL_C_TO_CO_FRACTION ...} \> Section~\ref{info:simple_chemistry} \\ - 176 \> \ct{REAC, Not enough hydrogen for the FUEL_H_TO_H2_FRACTION ...} \> Section~\ref{info:simple_chemistry} \\ - 179 \> \ct{BACK tracked species ... not found.} \> Section~\ref{info:BACKGROUND_SPECIES} \\ - 180 \> \ct{SPEC ... does not have a SPECIFIC_HEAT_LIQUID ...} \> Section~\ref{info:liquid_props} \\ - 181 \> \ct{SPEC ... does not have a MELTING_TEMPERATURE.} \> Section~\ref{info:liquid_props} \\ - 182 \> \ct{SPEC ... does not have a VAPORIZATION_TEMPERATURE.} \> Section~\ref{info:liquid_props} \\ - 183 \> \ct{SPEC ... MELTING_TEMPERATURE must be less than} \> Section~\ref{info:liquid_props} \\ - \> \ct{VAPORIZATION_TEMPERATURE.} \\ - 184 \> \ct{SPEC ... does not have a HEAT_OF_VAPORIZATION.} \> Section~\ref{info:liquid_props} \\ - 185 \> \ct{SPEC ... does not have a DENSITY_LIQUID.} \> Section~\ref{info:liquid_props} \\ - 187 \> \ct{SPEC ... is used for droplets and does not have liquid props.} \> Section~\ref{info:liquid_props} \\ - 188 \> \ct{EXTINCTION_MODEL ... is not recognized.} \> Section~\ref{info:extinction} \\ - 189 \> \ct{REAC ... cannot use both finite rate and simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ - 190 \> \ct{REAC ... requires a FUEL.} \> Section~\ref{info:simple_chemistry} \\ - 191 \> \ct{FORMULA for SIMPLE_CHEMISTRY can only contain C,H,O, and N.} \> Section~\ref{info:simple_chemistry} \\ - 192 \> \ct{Specify fuel using C and/or H when using simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ - 193 \> \ct{FUEL_C_TO_CO_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ - 194 \> \ct{FUEL_H_TO_H2O_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ - 195 \> \ct{FUEL_N_TO_HCN_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ - 196 \> \ct{REAC ... SPEC_ID_NU and NU arrays or EQUATION must be defined.} \> Section~\ref{info:finite} \\ - 197 \> \ct{REAC ... THIRD_EFF values must be >= 0.} \> Section~\ref{info:third_body} \\ - 198 \> \ct{REAC ... invalid EQUATION specified.} \> Section~\ref{info:EQUATION} \\ - 199 \> \ct{REAC ... uses simple chemistry and has a duplicate fuel ...} \> Section~\ref{info:simple_chemistry} \\ - 200 \> \ct{Fuel for simple chemistry has NU_O2<= 0 and requires air ...} \> Section~\ref{info:simple_chemistry} \\ - 201 \> \ct{REAC ... Cannot set NUs if an EQUATION is specified.} \> Section~\ref{info:EQUATION} \\ - 202 \> \ct{REAC ... Tracked species ... not found.} \> Section~\ref{info:finite} \\ - 204 \> \ct{REAC ... Primitive species ... not found.} \> Section~\ref{info:finite} \\ - 205 \> \ct{REAC ... Products not specified.} \> Section~\ref{info:finite} \\ - 206 \> \ct{REAC ... Reactants not specified.} \> Section~\ref{info:finite} \\ - 207 \> \ct{REAC ... Mass of products does not equal mass of reactants.} \> Section~\ref{info:REAC_Diagnostics} \\ - 208 \> \ct{REAC ... THIRD_EFF primitive species ... not found.} \> Section~\ref{info:third_body} \\ - 209 \> \ct{Name of ODE_SOLVER is not recognized.} \> Section~\ref{info:chem_integration} \\ - 210 \> \ct{REAC ... Missing an ENTHALPY_OF_FORMATION.} \> Section~\ref{info:liquid_props} \\ - 212 \> \ct{REAC ... Reversible reaction SPEC ... missing RAMP_G_F.} \> Section~\ref{info:gibbs_energy} \\ - \> \> \\ - 213 \> \ct{PART ... cannot have both a specified DIAMETER and a SURF_ID.} \> Section~\ref{info:PART_SURF} \\ - 214 \> \ct{PART ... requires a specified DIAMETER.} \> Section~\ref{info:particle_size} \\ - 215 \> \ct{Cannot have MASSLESS=.TRUE. with evaporating PARTICLEs.} \> Section~\ref{info:MASSLESS} \\ - 216 \> \ct{PART ... needs a SURF_ID.} \> Section~\ref{info:PART_SURF} \\ - 217 \> \ct{PART SPEC_ID ... not found.} \> Section~\ref{thermal_part_props} \\ - 218 \> \ct{PART ... Particles cannot evaporate to a lumped species.} \> Section~\ref{info:liquid_droplets} \\ - 219 \> \ct{PART ... No DRAG_COEFFICIENT when using a DRAG_LAW.} \> Section~\ref{info:particle_drag} \\ - 220 \> \ct{PART ... Specify exactly one ORIENTATION for a SCREEN.} \> Section~\ref{info:particle_screen} \\ - 221 \> \ct{PART ... Specify FREE_AREA_FRACTION for a SCREEN.} \> Section~\ref{info:particle_screen} \\ - 222 \> \ct{PART ... Specify all components for DRAG_COEFFICIENT and ...} \> Section~\ref{info:porous_media} \\ - 223 \> \ct{PART ... Unrecognized drag law.} \> Section~\ref{info:particle_drag} \\ - 224 \> \ct{PART ... Invalid EVAP_MODEL.} \> Section~\ref{info:liquid_droplets} \\ - 225 \> \ct{HEAT_TRANSFER_MODEL not appropriate for PART.} \> Section~\ref{info:convection} \\ - 226 \> \ct{PROP_ID for PART ... not found.} \> Section~\ref{info:PART_GEOMETRY} \\ - \> \> \\ - 231 \> \ct{PROP ... values for SPRAY_ANGLE cannot be the same.} \> Section~\ref{info:sprinklers} \\ - 232 \> \ct{PROP ... HISTOGRAM needs HISTOGRAM_NBINS>2.} \> Section~\ref{info:histograms} \\ - 233 \> \ct{PROP ... HISTOGRAM needs HISTOGRAM_LIMITS.} \> Section~\ref{info:histograms} \\ - 234 \> \ct{PROP ... FED_ACTIVITY out of range: ...} \> Section~\ref{info:FED} \\ - 235 \> \ct{PROP ... VELOCITY_COMPONENT > 3: ...} \> Section~\ref{info:velocity_patch} \\ - 236 \> \ct{PROP ... VELOCITY_PATCH requires P0.} \> Section~\ref{info:velocity_patch} \\ - 237 \> \ct{PROP ... specify PARTICLE_VELOCITY with MASS_FLOW_RATE.} \> Section~\ref{info:sprinklers} \\ - 238 \> \ct{PROP ... too few flow parameters.} \> Section~\ref{info:pressureramp} \\ - 239 \> \ct{PROP SPEC_ID ... not found.} \> Section~\ref{info:alternative_smoke} \\ - 240 \> \ct{PART_ID for PROP ... not found.} \> Section~\ref{info:sprinklers} \\ - 241 \> \ct{PART_ID for PROP ... cannot refer to MASSLESS particles.} \> Section~\ref{info:sprinklers} \\ - 242 \> \ct{Spray Pattern Table ... massflux <= 0 for line ...} \> Section~\ref{info:sprinklers} \\ - 243 \> \ct{PROP ... VIEW_ANGLE must be between 0 and 180} \> Section~\ref{info:sprinklers} \\ - \> \> \\ - 250 \> \ct{MATL ... REAC ... requires a HEAT_OF_REACTION.} \> Section~\ref{solid_phase_energy_conservation} \\ - 251 \> \ct{MATL ... REAC ... Set REFERENCE_TEMPERATURE or E, A.} \> Section~\ref{info:kinetic_parameters} \\ - 252 \> \ct{MATL ... HEAT_OF_REACTION should be greater than 0.} \> Section~\ref{info:HEAT_OF_REACTION} \\ - 253 \> \ct{MATL ... DENSITY=0.} \> Section~\ref{info:thermal_properties} \\ - 254 \> \ct{MATL ... CONDUCTIVITY=0.} \> Section~\ref{info:thermal_properties} \\ - 255 \> \ct{MATL ... SPECIFIC_HEAT=0.} \> Section~\ref{info:thermal_properties} \\ - 256 \> \ct{MATL ... SURFACE_OXIDATION_MODEL but no OXYGEN.} \> Section~\ref{veg_reaction_rates} \\ - 257 \> \ct{Residue ... of ... is not defined.} \> Section~\ref{info:solid_pyrolysis} \\ - 258 \> \ct{PARTicle ... corresponding to MATL ... cannot be MASSLESS.} \> Section~\ref{info:solid_pyrolysis} \\ - 259 \> \ct{MATL ... PART_ID ... not defined.} \> Section~\ref{info:solid_pyrolysis} \\ - 260 \> \ct{MATL ... PART_ID ... has a NU_PART<=0.} \> Section~\ref{info:solid_pyrolysis} \\ - 261 \> \ct{Duplicate material name: ...} \> Section~\ref{info:MATL} \\ - 262 \> \ct{MATL ... requires a SPEC_ID for yield ... of reaction ...} \> Section~\ref{info:solid_pyrolysis} \\ - 263 \> \ct{MATL ... can only specify one SPEC_ID for a liquid.} \> Section~\ref{info:liquid_fuels} \\ - 264 \> \ct{MATL ... SPEC_ID ... not a tracked.} \> Section~\ref{info:solid_pyrolysis} \\ - 265 \> \ct{MATL ... Sum of NU inputs more than 1.} \> Section~\ref{info:solid_pyrolysis} \\ - 266 \> \ct{REAC ... FUEL ... is not a predefined or tracked species.} \> Section~\ref{info:simple_chemistry} \\ - 267 \> \ct{REAC ... has no consumed species.} \> Section~\ref{info:REAC_Diagnostics} \\ - 268 \> \ct{BACK tracked species ... not found.} \> Section~\ref{info:BACKGROUND_SPECIES} \\ - 269 \> \ct{MATL ... The specified pyrolysis parameters result in A >...} \> Section~\ref{info:kinetic_parameters} \\ - \> \> \\ - 299 \> \ct{SURF ... has no solid or particle for TGA.} \> Section~\ref{info:TGA_DSC_MCC} \\ - 300 \> \ct{N_LAYER_CELLS_MAX should be at least ... for ...} \> Section~\ref{info:solid_phase_stability} \\ - 301 \> \ct{SURF line must have an ID.} \> Section~\ref{info:SURF} \\ - 302 \> \ct{SURF ID ... is used more than once.} \> Section~\ref{info:SURF} \\ - 303 \> \ct{MOISTURE_CONTENT on SURF ... exceeds theoretical limit.} \> Section~\ref{info:vegetation} \\ - 304 \> \ct{SURF ... One layer only for TGA_ANALYSIS=T.} \> Section~\ref{info:TGA_DSC_MCC} \\ - 305 \> \ct{SURF ... indicates a level set simulation ...} \> Section~\ref{info:level_set} \\ - 306 \> \ct{SURF ... cannot have a specified flux and a MATL_ID.} \> Section~\ref{info:MASS_FLUX} \\ - 307 \> \ct{SURF ... must have a specified THICKNESS for Layer ...} \> Section~\ref{info:MATL} \\ - 308 \> \ct{SURF ... needs a RADIUS or THICKNESS.} \> Section~\ref{info:GEOMETRY} \\ - 309 \> \ct{SURF ... BACKING ... not recognized.} \> Section~\ref{info:BACKING} \\ - 310 \> \ct{SURF ... must specify TMP_FRONT for CONVERT_VOLUME_TO_MASS.} \> Section~\ref{info:MASS_FLUX} \\ - 311 \> \ct{SURF ... cannot use velocity RAMP with CONVERT_VOLUME_TO_MASS.} \> Section~\ref{info:MASS_FLUX} \\ - 312 \> \ct{SURF ... GEOMETRY not recognized.} \> Section~\ref{info:GEOMETRY} \\ - 313 \> \ct{SURF ... HEAT_TRANSFER_MODEL not recognized.} \> Section~\ref{info:convection} \\ - 314 \> \ct{SURF ... must have a REAC line when using HRRPUA or MLRPUA.} \> Section~\ref{info:gas_burner} \\ - 315 \> \ct{SURF ... should have only one LEAK_PATH and LEAK_PATH_ID.} \> Section~\ref{info:Leaks} \\ - 316 \> \ct{SURF ... N_LAYER_CELLS_MAX must be > 0.} \> Section~\ref{info:solid_phase_stability} \\ - 317 \> \ct{SURF ... Specify either ROUGHNESS or Z_0, not both.} \> Section~\ref{info:WALL_MODEL} \\ - 318 \> \ct{SURF ... MASS_FLUX_TOTAL is only for outflow.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ - 319 \> \ct{SURF ... for use with HT3D must have a MATL_ID.} \> Section~\ref{info:HT3D_Limitations} \\ - 320 \> \ct{SURF ... cannot use both MASS_FLUX and MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ - 321 \> \ct{SURF ... MASS_FLUX cannot be less than zero.} \> Section~\ref{info:MASS_FLUX} \\ - 322 \> \ct{SURF ... cannot use both MASS_FLUX and VEL.} \> Section~\ref{info:MASS_FLUX} \\ - 323 \> \ct{SURF ... cannot use both MASS_FLUX and MASS_FLUX_TOTAL.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ - 324 \> \ct{SURF ... cannot use both MASS_FLUX_TOTAL and VEL.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ - 325 \> \ct{SURF ... cannot use a negative MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ - 326 \> \ct{SURF ... cannot use RAMP_MF with MLRPUA or HRRPUA.} \> Section~\ref{info:RAMP_Time} \\ - 327 \> \ct{SURF ... Must define SPEC_ID when using MASS_FLUX ...} \> Section~\ref{info:MASS_FLUX} \\ - 328 \> \ct{SURF ... SPEC ... not found.} \> Section~\ref{info:MASS_FLUX} \\ - 329 \> \ct{SURF ... sum of mass fractions greater than 1.} \> Section~\ref{info:MASS_FLUX} \\ - 330 \> \ct{SURF ... cannot use background species for MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ - 331 \> \ct{SURF ... cannot use a RAYLEIGH model with GRAV=0.} \> Section~\ref{info:convection} \\ - 332 \> \ct{SURF ... REFERENCE_HEAT_FLUX requires HRRPUA, ...} \> Section~\ref{info:scaled_burning} \\ - 333 \> \ct{SURF ... MATL_ID ... not found.} \> Section~\ref{info:MATL} \\ - 334 \> \ct{SURF ... has too many materials.} \> Section~\ref{info:solid_pyrolysis} \\ - 335 \> \ct{SURF ... cannot have a reacting MATL and IGNITION_TEMPERATURE.} \> Section~\ref{info:specified_burning} \\ - 336 \> \ct{SURF ... cannot use both ADIABATIC and NET and CONVECTIVE ...} \> Section~\ref{info:adiabatic} \\ - 337 \> \ct{SURF ... cannot use both NET and CONVECTIVE_HEAT_FLUX.} \> Section~\ref{info:net_and_convective_heat_flux} \\ - 338 \> \ct{SURF ... cannot use TMP_FRONT and NET_HEAT_FLUX.} \> Section~\ref{info:net_and_convective_heat_flux} \\ - 339 \> \ct{SURF ... RAMP_T_I cannot be used with HT3D.} \> Section~\ref{info:TMP_INNER} \\ - 340 \> \ct{SURF ... RAMP_T_I requires a thermally thick surface.} \> Section~\ref{info:TMP_INNER} \\ - 341 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_FRONT_INITIAL.} \> Section~\ref{info:TMP_INNER} \\ - 342 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_FRONT.} \> Section~\ref{info:TMP_INNER} \\ - 243 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_BACK.} \> Section~\ref{info:TMP_INNER} \\ - 344 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_INNER.} \> Section~\ref{info:TMP_INNER} \\ - 345 \> \ct{SURF ... VEL_BULK must be less than or equal to VEL.} \> Section~\ref{info:VEL_BULK} \\ - 346 \> \ct{SURF ... ZONE ID for LEAK_PATH_ID(1) not found.} \> Section~\ref{info:Leaks} \\ - 347 \> \ct{SURF ... ZONE ID for LEAK_PATH_ID(2) not found.} \> Section~\ref{info:Leaks} \\ - 348 \> \ct{SURF ... Cannot set the same ZONE for each leakage path.} \> Section~\ref{info:Leaks} \\ - 349 \> \ct{SURF ... LEAK_PATH greater than number of ZONEs.} \> Section~\ref{info:Leaks} \\ - 350 \> \ct{SURF ... needs a THICKNESS.} \> Section~\ref{info:GEOMETRY} \\ - 351 \> \ct{SURF ... needs a LENGTH.} \> Section~\ref{info:GEOMETRY} \\ - 352 \> \ct{SURF ... needs a WIDTH.} \> Section~\ref{info:GEOMETRY} \\ - 353 \> \ct{PART ... SURF_ID ... not found.} \> Section~\ref{info:PART_GEOMETRY} \\ - 354 \> \ct{SURF ... PART_ID ... not found.} \> Section~\ref{info:particle_flux} \\ - 355 \> \ct{SURF ... not Cartesian and cannot have a MATL with ...} \> Section~\ref{info:thermal_properties} \\ - 356 \> \ct{SURF ... zero emissivity of MATL ... is inconsistent ...} \> Section~\ref{info:thermal_properties} \\ - 357 \> \ct{SURF ... has a specified HRRPUA/MLRPUA and a pyrolysis model.} \> Section~\ref{info:gas_burner} \\ - 359 \> \ct{SURF ... cannot have a specified velocity or volume flux.} \> Section~\ref{info:gas_burner} \\ - 360 \> \ct{SURF ... uses HRRPUA and species ... is the FUEL for ...} \> Section~\ref{info:gas_burner} \\ - 361 \> \ct{SURF ... uses HRRPUA and MASS_FRACTION but no REAC ...} \> Section~\ref{info:gas_burner} \\ - 362 \> \ct{SURF ... uses MLRPUA and species ... is the FUEL for ...} \> Section~\ref{info:gas_burner} \\ - 363 \> \ct{SURF ... uses MLRPUA and MASS_FRACTION but no REAC ...} \> Section~\ref{info:gas_burner} \\ - 364 \> \ct{SURF ... cannot specify mass fraction with mass flux ...} \> Section~\ref{info:MASS_FLUX} \\ - 365 \> \ct{SURF ... cannot specify mass fraction and outflow velocity.} \> Section~\ref{info:MASS_FLUX} \\ - 366 \> \ct{SURF ... cannot leak and specify flow or pyrolysis ...} \> Section~\ref{info:Leaks} \\ - 367 \> \ct{SURF ... cannot have both a mass flux and specified velocity.} \> Section~\ref{info:MASS_FLUX} \\ - 368 \> \ct{SURF ... has a problem with VARIABLE_THICKNESS or HT3D.} \> Section~\ref{info:HT3D_Limitations} \\ - 369 \> \ct{SURF ... cannot have both HT3D and BURN_AWAY.} \> Section~\ref{info:HT3D_Limitations} \\ - 370 \> \ct{SURF ... No wall or particle for TGA_ANALYSIS.} \> Section~\ref{tga_analysis} \\ - \> \> \\ - 371 \> \ct{Pressure solver ... not known.} \> Section~\ref{optional_pressure_solver} \\ - 372 \> \ct{Cannot use FISHPAK_BC for multiple mesh simulations.} \> Section~\ref{sec:periodic} \\ - 373 \> \ct{Cannot have FISHPAK_BC>0.} \> Section~\ref{sec:periodic} \\ - 374 \> \ct{Numerical Instability - FDS stopped.} \> Section~\ref{info:Errors} \\ - 375 \> \ct{OBST ... is VARIABLE_THICKNESS or HT3D and needs a MATL_ID.} \> Section~\ref{info:HT3D_Limitations} \\ - 376 \> \ct{Meshes must have the same y/z bounds for TUNNEL_PRECONDITIONER.} \> Section~\ref{tunnel_solver} \\ - 377 \> \ct{SURF ... IMPINGING JET model requires ...} \> Section~\ref{info:impinging_jet} \\ - 378 \> \ct{SURF ... cannot be applied to a 3-D conducting solid.} \> Section~\ref{info:BACKING} \\ - 379 \> \ct{SURF ... NODE_ID does not exist.} \> Section~\ref{info:hvac_geom} \\ - \> \> \\ - 381 \> \ct{Need more spectral band limits.} \> Section~\ref{info:RADI_Wide_Band} \\ - 382 \> \ct{Spectral band limits should be given in ascending order.} \> Section~\ref{info:RADI_Wide_Band} \\ - \> \> \\ - 390 \> \ct{RAMP ... is externally controlled, requires INITIAL_VALUE.} \> Section~\ref{info:external_control} \\ - 391 \> \ct{RAMP ... not found.} \> Chapter~\ref{info:RAMP} \\ - 392 \> \ct{RAMP ... has only one point.} \> Chapter~\ref{info:RAMP} \\ - 393 \> \ct{RAMP ... cannot specify both CTRL_ID and DEVC_ID.} \> Chapter~\ref{info:RAMPDEVC} \\ - 394 \> \ct{RAMP ... variable T must be monotonically increasing.} \> Chapter~\ref{info:RAMP} \\ - 395 \> \ct{RAMP with EXTERNAL_FILE is present but no EXTERNAL_FILENAME.} \> Section~\ref{info:external_control} \\ - 396 \> \ct{Row ... of ... has a bad 1st latitude.} \> Section~\ref{info:spraypattern} \\ - 397 \> \ct{Row ... of ... has a bad 2nd latitude.} \> Section~\ref{info:spraypattern} \\ - 398 \> \ct{Row ... of ... has a bad 1st longitude.} \> Section~\ref{info:spraypattern} \\ - 399 \> \ct{Row ... of ... has a bad 2nd longitude.} \> Section~\ref{info:spraypattern} \\ - 400 \> \ct{Row ... of ... has a bad velocity.} \> Section~\ref{info:spraypattern} \\ - 401 \> \ct{Row ... of ... has a bad mass flow.} \> Section~\ref{info:spraypattern} \\ - 402 \> \ct{Row ... of ... has a bad wavelength.} \> Section~\ref{radiative_part_props} \\ - 403 \> \ct{Row ... of ... has a bad real index.} \> Section~\ref{radiative_part_props} \\ - 404 \> \ct{Row ... of ... has a bad complex index.} \> Section~\ref{radiative_part_props} \\ - 405 \> \ct{RAMP ... CYCLING is only for time RAMPs.} \> Section~\ref{info:RAMP_Time} \\ - 407 \> \ct{TABLE ... not found.} \> Section~\ref{info:spraypattern} \\ - \> \> \\ - 421 \> \ct{SURF ... cannot be applied to a thin obstruction ...} \> Section~\ref{info:thin_obstructions} \\ - 422 \> \ct{VENT ... cannot be applied to a thin obstruction ...} \> Section~\ref{info:thin_obstructions} \\ - 423 \> \ct{HT3D solid must have at least one face exposed ...} \> Section~\ref{info:HT3D_Limitations} \\ - 424 \> \ct{HT3D thin solid must have at least one face exposed ...} \> Section~\ref{info:HT3D_Limitations} \\ - 425 \> \ct{MESH ... can stretch in at most 2 coordinate directions.} \> Section~\ref{info:TRNX} \\ - 426 \> \ct{MESH ... Poisson initialization error: ...} \> Section~\ref{info:Errors} \\ - 427 \> \ct{DEVC ... requires repositioning.} \> Section~\ref{info:DEVC_position} \\ - 428 \> \ct{DEVC ... must be associated with a heat-conducting surface.} \> Section~\ref{info:solidoutputquantities} \\ - 429 \> \ct{PROF ... requires repositioning.} \> Section~\ref{info:PROF} \\ - 430 \> \ct{PROF ... must be associated with a heat-conducting surface.} \> Section~\ref{info:solidoutputquantities} \\ - 431 \> \ct{MESH ... is not in alignment with MESH ...} \> Section~\ref{info:mesh_alignment} \\ - 432 \> \ct{SURF ... must specify velocity boundary condition ...} \> Section~\ref{info:MASS_FLUX} \\ - 433 \> \ct{SURF ... cannot be applied below GROUND_LEVEL.} \> Section~\ref{info:wall_of_wind} \\ - 434 \> \ct{RAMP_V_X assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ - 435 \> \ct{RAMP_V_Y assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ - 436 \> \ct{RAMP_V_Z assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ - 437 \> \ct{SURF ... cannot be applied to an exterior boundary.} \> Section~\ref{info:HT3D_Limitations} \\ - 438 \> \ct{SURF ... layers are thicker than the underlying obstruction.} \> Section~\ref{info:linings} \\ - 439 \> \ct{MESH ... UVWFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ - 440 \> \ct{MESH ... TMPFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ - 441 \> \ct{MESH ... SPECFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ - 442 \> \ct{SURF ... has more RAMP_Q than REFERENCE_HEAT_FLUX.} \> Section~\ref{info:scaled_burning} \\ - 443 \> \ct{SURF ... has more REFERENCE_HEAT_FLUX than RAMP_Q.} \> Section~\ref{info:scaled_burning} \\ - 444 \> \ct{SURF ... If one REFERENCE_THICKNESS is set, all must be set.} \> Section~\ref{info:scaled_burning} \\ - 445 \> \ct{SURF ... REFERENCE_HEAT_FLUX values must increase} \> Section~\ref{info:scaled_burning} \\ - \> \ct{for each thickness.} \\ - 446 \> \ct{SURF REFERENCE_THICKNESS values must increase for each} \> Section~\ref{info:scaled_burning} \\ - \> \ct{new group of REFERENCE_HEAT_FLUX.} \\ - 447 \> \ct{RAMP ... used with REFERENCE_HEAT_FLUX must start at T = 0.} \> Section~\ref{info:scaled_burning} \\ - 448 \> \ct{PROF ... MATL_ID ... not a part of surface type ...} \> Section~\ref{info:PROF} \\ - \> \> \\ - 501 \> \ct{No ID provided ...} \> Section~\ref{info:HVAC} \\ - 502 \> \ct{Invalid TYPE_ID provided ...} \> Section~\ref{info:HVAC} \\ - 503 \> \ct{Must have both DUCTs and NODEs in the input file.} \> Section~\ref{info:HVAC} \\ - 504 \> \ct{Duct has no ID ...} \> Section~\ref{info:HVAC} \\ - 505 \> \ct{Duct has no AREA, DIAMETER, or PERIMETER ...} \> Section~\ref{info:HVACduct} \\ - 506 \> \ct{Duct without AREA has no DIAMETER ...} \> Section~\ref{info:HVACduct} \\ - 507 \> \ct{If both ROUND and SQUARE are FALSE, Duct with DIAMETER must} \> Section~\ref{info:HVACduct} \\ - \> \ct{also have PERIMETER ...} \\ - 508 \> \ct{Duct cannot input both PERIMETER and DIAMETER with AREA ...} \> Section~\ref{info:HVACduct} \\ - 509 \> \ct{Can only specify one of CTRL_ID or DEVC_ID. ...} \> Section~\ref{info:HVACduct} \\ - 510 \> \ct{Duct can only have one of damper, fan or aircoil ...} \> Section~\ref{info:HVACduct} \\ - 511 \> \ct{Duct has fan specified but no fans have been defined ...} \> Section~\ref{info:HVACduct} \\ - 512 \> \ct{Duct has both MASS_FLOW and VOLUME_FLOW defined ...} \> Section~\ref{info:HVACduct} \\ - 513 \> \ct{Ductnode has no ID ...} \> Section~\ref{info:HVAC} \\ - 514 \> \ct{Ambient or internal ductnode requires an elevation, XYZ(3) ...} \> Section~\ref{info:HVACnode} \\ - 515 \> \ct{Non-AMBIENT or non VENT-connected ductnode needs >=2 ducts} \> Section~\ref{info:HVACnode} \\ - 516 \> \ct{AMBIENT or VENT-connected ductnode must have 1 duct ...} \> Section~\ref{info:HVACnode} \\ - 517 \> \ct{No ducts specified for ductnode ...} \> Section~\ref{info:HVACnode} \\ - 518 \> \ct{Ductnode with a filter must have 2 ducts ...} \> Section~\ref{info:HVACfilter} \\ - 519 \> \ct{Fan has no ID ...} \> Section~\ref{info:HVAC} \\ - 520 \> \ct{FAN can only be one of constant volume, quadratic or ramp ...} \> Section~\ref{info:HVACfan} \\ - 521 \> \ct{IF one of MAX_PRESSURE or MAX_FLOW given, both must be} \> Section~\ref{info:HVACfan}\\ - \> \ct{specified ...} \\ - 522 \> \ct{MAX_PRESSURE must be > 0 ...} \> Section~\ref{info:HVACfan} \\ - 523 \> \ct{MAX_FLOW must be > 0 ...} \> Section~\ref{info:HVACfan} \\ - 524 \> \ct{Filter has no ID ...} \> Section~\ref{info:HVAC} \\ - 525 \> \ct{Problem with filter ... SPEC ... not found} \> Section~\ref{info:HVACfilter} \\ - 526 \> \ct{Aircoil has no ID ...} \> Section~\ref{info:HVAC} \\ - 527 \> \ct{Localized leakage has no ID ...} \> Section~\ref{info:local_leakage} \\ - 528 \> \ct{Leakage path must have VENT_ID defined ...} \> Section~\ref{info:local_leakage} \\ - 529 \> \ct{Leakage to AMBIENT must have VENT2_ID for the AMBIENT node ...} \> Section~\ref{info:local_leakage} \\ - 530 \> \ct{Leakage path must have VENT2_ID defined ...} \> Section~\ref{info:local_leakage} \\ - 531 \> \ct{Leakage has no AREA ...} \> Section~\ref{info:local_leakage} \\ - 532 \> \ct{Can only have one HVAC input with TYPE_ID of} \> Section~\ref{info:hvacoutputquantities} \\ - \> \ct{DUCT QUANTITY LIST ...} \\ - 533 \> \ct{Can only have one HVAC input with TYPE_ID of} \> Section~\ref{info:hvacoutputquantities} \\ - \> \ct{NODE QUANTITY LIST ...} \\ - 534 \> \ct{Both nodes have the same ID ...} \> Section~\ref{info:HVACduct} \\ - 535 \> \ct{Two ducts with the same ID ...} \> Section~\ref{info:HVAC} \\ - 536 \> \ct{Duct ... Node ... does not contain the duct in its duct list.} \> Section~\ref{info:HVACnode} \\ - 537 \> \ct{... ductnode not located for duct} \> Section~\ref{info:HVACduct} \\ - 538 \> \ct{Fan not located ...} \> Section~\ref{info:HVACduct} \\ - 539 \> \ct{Aircoil not located ...} \> Section~\ref{info:HVACduct} \\ - 540 \> \ct{Two duct nodes with the same ID ...} \> Section~\ref{info:HVAC} \\ - 541 \> \ct{VENT for ductnode has a DEVC_ID or CTRL_ID ...} \> Section~\ref{info:HVACnode} \\ - 542 \> \ct{Ductnode attached to VENT without SURF_ID HVAC ...} \> Section~\ref{info:HVACnode} \\ - 543 \> \ct{Cannot leak and specify flow or pyrolysis at the same time ...} \> Section~\ref{info:local_leakage} \\ - 544 \> \ct{Cannot specify custom leakage and zone leakage with the same} \> Section~\ref{info:local_leakage} \\ - \> \ct{surface ...} \\ - 545 \> \ct{Cannot find VENT_ID: ... for Ductnode: ...} \> Section~\ref{info:HVACnode} \\ - 546 \> \ct{Ductnode cannot be AMBIENT and have an assigned VENT_ID} \> Section~\ref{info:HVACnode} \\ - 547 \> \ct{Internal ductnode must have at least two attached ducts ...} \> Section~\ref{info:HVACnode} \\ - 548 \> \ct{External ductnode can only have one attached duct. Ductnode: ...} \> Section~\ref{info:HVACnode} \\ - 559 \> \ct{Duct ... not found. Ductnode: ... Ductnode ID: ...} \> Section~\ref{info:HVACnode} \\ - 550 \> \ct{Duct: ... does not contain Ductnode: ...} \> Section~\ref{info:HVACduct} \\ - 551 \> \ct{Problem with ductnode: ... FILTER ... not found} \> Section~\ref{info:HVACfilter} \\ - 552 \> \ct{Ductnode must lie with a single pressure zone. Node: ...} \> Section~\ref{info:HVACnode} \\ - 553 \> \ct{Cannot specify fixed flows for all branches of internal} \> Section~\ref{info:hvacspecified} \\ - \> \ct{ductnode ...} \\ - 554 \> \ct{Duct has no LENGTH and one node lacks an XYZ. Duct: ...} \> Section~\ref{info:HVACduct} \\ - 555 \> \ct{Problem with HVAC network. Insufficient LOSS definitions for} \> Section~\ref{info:hvacspecified}\\ - \> \ct{DUCTs and NODEs} \\ - 556 \> \ct{Duct ... has N_CELLS=0 and is in a duct run with ducts that} \> Section~\ref{info:hvacmasstransport}\\ - \> \ct{have N_CELLS>0.} \\ - 557 \> \ct{SPEC_ID ... is not explicitly specified for QUANTITY ...} \> Section~\ref{info:hvacoutputquantities} \\ - 558 \> \ct{Output QUANTITY ... requires a SPEC_ID} \> Section~\ref{info:hvacoutputquantities} \\ - 559 \> \ct{Output QUANTITY ... SPEC_ID ... not found} \> Section~\ref{info:hvacoutputquantities} \\ - 560 \> \ct{HVAC_SMV QUANTITY ... not appropriate for .hvac file.} \> Section~\ref{info:hvacoutputquantities} \\ - 561 \> \ct{HVAC_SMV QUANTITY ... not found} \> Section~\ref{info:hvacoutputquantities} \\ - 562 \> \ct{VENT ID ... used for localized leakage has SURF_ID HVAC.} \> Section~\ref{info:local_leakage} \\ - 563 \> \ct{VENT ID ... used for localized leakage has a DEVC_ID or CTRL_ID.} \> Section~\ref{info:local_leakage} \\ - 564 \> \ct{VENT: ... is used for HVAC and attached to a removable OBST.} \> Section~\ref{info:HVACnode} \\ - 565 \> \ct{REAC: ... FALLOFF-LINDEMANN reactions must have A_LOW_PR and} \> Section~\ref{info:falloff_reactions} \\ - \> \ct{E_LOW_PR} \\ - 566 \> \ct{REAC: ... FALLOFF-TROE reactions must have A_LOW_PR, E_LOW_PR,} \> Section~\ref{info:falloff_reactions} \\ - \> \ct{A_TROE, T1_TROE, and T3_TROE.} \\ - 567 \> \ct{REAC: ... Tracked species ... used in a finite rate reaction} \> Section~\ref{info:finite} \\ - \> \ct{without N_S defined is not a primitive species.} \\ - 568 \> \ct{Ductnode with GEOM cannot have a VENT_ID. Ductnode ID:...} \> Section~\ref{info:hvac_geom} \\ - 569 \> \ct{Ductnode with one duct needs either AMBIENT, GEOM, or VENT_ID.} \> Section~\ref{info:hvac_geom} \\ - \> \ct{ Ductnode ID:...} \\ - 570 \> \ct{Problem with ductnode:..., cannot assign to both VENT and GEOM.} \> Section~\ref{info:hvac_geom} \\ - 571 \> \ct{VENT_ID for leakage cannot be AMBIENT if GEOM is set. Leak ID:...} \> Section~\ref{info:hvac_geom} \\ - 572 \> \ct{VENT2_ID for leakage cannot be AMBIENT if GEOM2 is set. Leak ID:...}\> Section~\ref{info:hvac_geom} \\ - 573 \> \ct{Ductnode:...,Ductnode ID:... defined with GEOM had no CFACE found.}\> Section~\ref{info:hvac_geom} \\ - \> \> \\ - 601 \> \ct{OBST ... MULT_ID ... not found.} \> Section~\ref{info:MULT} \\ - 602 \> \ct{OBST ... SHAPE requires RADIUS.} \> Section~\ref{info:multobst} \\ - 603 \> \ct{OBST ... SHAPE requires HEIGHT.} \> Section~\ref{info:multobst} \\ - 604 \> \ct{OBST ... BOX SHAPE requires LENGTH, WIDTH, HEIGHT.} \> Section~\ref{info:multobst} \\ - 605 \> \ct{SURF_ID ... does not exist.} \> Section~\ref{info:OBST_Basics} \\ - 606 \> \ct{SURF_ID_INTERIOR ... does not exist.} \> Section~\ref{info:BURN_AWAY} \\ - 607 \> \ct{OBST ... needs a BULK_DENSITY if it is to BURN_AWAY.} \> Section~\ref{info:BURN_AWAY} \\ - 608 \> \ct{MATL_ID ... not found.} \> Section~\ref{info:ht1d} \\ - 609 \> \ct{MULT_ID ... not found on HOLE line ...} \> Section~\ref{info:MULT} \\ - 610 \> \ct{HOLE ... Cannot overlap HOLEs with a DEVC or CTRL_ID.} \> Section~\ref{info:HOLE} \\ - 611 \> \ct{OBST ... has a BULK_DENSITY but zero volume.} \> Section~\ref{info:BURN_AWAY} \\ - 612 \> \ct{OBST ... must have a volume to be assigned HT3D.} \> Section~\ref{checkerboard} \\ - 614 \> \ct{OBST_ID ... cannot have a SURF with NODE_ID} \> Section~\ref{info:hvac_geom} \\ - 615 \> \ct{OBST ... cannot overlap OBST ...} \> Section~\ref{info:OVERLAY} \\ - \> \> \\ - 701 \> \ct{problem with GEOM, local SURF_ID index ... out of bounds.} \> Section~\ref{info:GEOM_Basics} \\ - 702 \> \ct{problem with GEOM, SURF_IDS not defined properly.} \> Section~\ref{info:first_geom} \\ - 703 \> \ct{missing SURF_ID in \&GEOM line ...} \> Section~\ref{subsec:readbin} \\ - 704 \> \ct{problem with GEOM, number of surfaces in SURF_ID field ...} \> Section~\ref{subsec:readbin} \\ - 705 \> \ct{could not read binary connectivity for GEOM ...} \> Section~\ref{subsec:readbin} \\ - 706 \> \ct{GEOM Expected ... Z values, found ...} \> Section~\ref{info:terrain_geom} \\ - 707 \> \ct{GEOM IJK(1) and IJK(2) on \&GEOM line needs to be at least 2.} \> Section~\ref{info:terrain_geom} \\ - 708 \> \ct{GEOM At least 4 XB values ... required when using ZVALS.} \> Section~\ref{info:terrain_geom} \\ - 709 \> \ct{For terrain GEOM, unconnected boundary edge at node number ...} \> Section~\ref{info:terrain_geom} \\ - 710 \> \ct{For terrain GEOM, unconnected boundary edge at nodes ...} \> Section~\ref{info:terrain_geom} \\ - 711 \> \ct{For terrain GEOM, same boundary vertex ...} \> Section~\ref{info:terrain_geom} \\ - 712 \> \ct{For extruded Polygon GEOM, extrusion distance ...} \> Section~\ref{info:extrpolys} \\ - 713 \> \ct{For extruded Polygon GEOM, Number of POLY indexes ...} \> Section~\ref{info:extrpolys} \\ - 714 \> \ct{For extruded Polygon GEOM, Repeated vertex ...} \> Section~\ref{info:extrpolys} \\ - 715 \> \ct{For extruded Polygon GEOM, Vertices X, Y have same position.} \> Section~\ref{info:extrpolys} \\ - 716 \> \ct{problem with GEOM, the surface ID, is not defined.} \> Section~\ref{info:GEOM_Basics} \\ - 717 \> \ct{problem with GEOM, vertex index out of bounds.} \> Section~\ref{info:GEOM_Basics} \\ - 718 \> \ct{Out of Bounds.GEOM, FACE=, has vertex index I less than 1.} \> Section~\ref{info:GEOM_Basics} \\ - 719 \> \ct{Out of Bounds.GEOM, FACE=, has vertex index I higher than ...} \> Section~\ref{info:GEOM_Basics} \\ - 720 \> \ct{GEOM has currently unsupported BURN_AWAY feature ...} \> Section~\ref{info:geom_limitations} \\ - 721 \> \ct{For extruded Polygon GEOM, Node I not in the plane of ...} \> Section~\ref{info:extrpolys} \\ - 722 \> \ct{GEOM Segments ... intersect in average POLY plane.} \> Section~\ref{info:extrpolys} \\ - 723 \> \ct{For extruded Polygon GEOM, Not enough valid vertices ...} \> Section~\ref{info:extrpolys} \\ - 724 \> \ct{For extruded Polygon GEOM, Could not triangulate polygon.} \> Section~\ref{info:extrpolys} \\ - 725 \> \ct{\&GEOM, MOVE_ID is not recognized.} \> Section~\ref{info:transform_geom} \\ - 726 \> \ct{GEOM ID Unknown: Face normals are probably pointing in ...} \> Section~\ref{info:GEOM_Basics} \\ - 727 \> \ct{GEOM ID=, Edge length too small at ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 728 \> \ct{GEOM ID=, Face area too small at ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 729 \> \ct{GEOM ID=, Geometry volume too small.} \> Section~\ref{triangulated_surfaces_quality} \\ - 730 \> \ct{GEOM ID=, Open geometry at edge with nodes ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 731 \> \ct{GEOM ID=, Non manifold geometry in adjacent faces at edge ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 732 \> \ct{GEOM ID=, Opposite normals on triangles sharing edge with ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 733 \> \ct{GEOM ID=, Open geometry at edge with nodes ...} \> Section~\ref{triangulated_surfaces_quality} \\ - 734 \> \ct{Mismatched mesh boundary location between meshes ...} \> Section~\ref{info:GEOM_Basics} \\ - \> \> \\ - 801 \> \ct{VENT ... cannot use MULT_ID because it involves HVAC.} \> Section~\ref{info:HVAC} \\ - 802 \> \ct{VENT ... needs an explicit ID because it involves HVAC.} \> Section~\ref{info:HVAC} \\ - 803 \> \ct{VENT ... cannot use MULT_ID because it uses PBX, PBY or PBZ.} \> Section~\ref{info:MULT} \\ - 804 \> \ct{VENT ... should use PBX, PBY, PBZ or XB if it is PERIODIC.} \> Section~\ref{sec:periodic} \\ - 805 \> \ct{VENT ... cannot use MULT_ID because it uses MB.} \> Section~\ref{info:MULT} \\ - 806 \> \ct{VENT ... must set MB to XMIN, XMAX, YMIN, YMAX, ZMIN, or ZMAX.} \> Section~\ref{info:VENT_Basics} \\ - 807 \> \ct{VENT ... cannot use MULT_ID because it uses DB.} \> Section~\ref{info:MULT} \\ - 808 \> \ct{VENT ... must set DB to XMIN, XMAX, YMIN, YMAX, ZMIN, or ZMAX.} \> Section~\ref{info:VENT_Basics} \\ - 809 \> \ct{VENT ... cannot be specified on a y boundary in a 2D calc.} \> Section~\ref{info:2D} \\ - 810 \> \ct{VENT ... must be a plane.} \> Section~\ref{info:VENT_Basics} \\ - 811 \> \ct{VENT ... MULT_ID ... not found.} \> Section~\ref{info:MULT} \\ - 812 \> \ct{VENT ... SURF_ID ... not found.} \> Section~\ref{info:VENT_Basics} \\ - 813 \> \ct{VENT ... cannot be controlled by a device.} \> Section~\ref{info:Special_VENTS} \\ - 814 \> \ct{VENT ... requires center point XYZ.} \> Section~\ref{sec:circvents} \\ - 815 \> \ct{VENT ... L_EDDY = 0 in Synthetic Eddy Method.} \> Section~\ref{info:synthetic_turbulence} \\ - 816 \> \ct{VENT ... VEL_RMS = 0 in Synthetic Eddy Method.} \> Section~\ref{info:synthetic_turbulence} \\ - 817 \> \ct{VENT ... Synthetic Eddy Method not permitted with HVAC.} \> Section~\ref{info:synthetic_turbulence} \\ - 818 \> \ct{VENT ... is not attached or may require ...} \> Section~\ref{info:VENT_Trouble} \\ - 819 \> \ct{VENT ... is OPEN, MIRROR OR PERIODIC ... exterior boundary.} \> Section~\ref{info:Special_VENTS} \\ - 820 \> \ct{VENT ... is not attached to any solid surface.} \> Section~\ref{info:VENT_Basics} \\ - 821 \> \ct{VENT ... cannot have normal component of UVW equal to 0.} \> Section~\ref{info:HVAClouvers} \\ - 822 \> \ct{VENT ... has the same ID as another VENT.} \> Section~\ref{info:HVAC} \\ - 823 \> \ct{VENT ... cannot have SURF_ID=HVAC and GEOM=T.} \> Section~\ref{info:hvac_geom} \\ - \> \> \\ - 841 \> \ct{INIT ... has an unknown MULT_ID ...} \> Section~\ref{info:MULT} \\ - 842 \> \ct{INIT ... cannot have both MASS and VOLUME_FRACTION.} \> Section~\ref{info:init_species} \\ - 843 \> \ct{INIT ... requires a PART_ID.} \> Section~\ref{info:initial_droplets} \\ - 844 \> \ct{INIT ... requires a SPEC_ID.} \> Section~\ref{info:init_species} \\ - 845 \> \ct{INIT ... cannot find SPEC_ID ...} \> Section~\ref{info:init_species} \\ - 846 \> \ct{INIT ... cannot have sum of specified mass fractions > 1.} \> Section~\ref{info:init_species} \\ - 847 \> \ct{INIT ... cannot use background species for MASS_FRACTION.} \> Section~\ref{info:init_species} \\ - 848 \> \ct{INIT ... cannot use N_PARTICLES and N_PARTICLES_PER_CELL.} \> Section~\ref{info:initial_droplets} \\ - 849 \> \ct{INIT ... XB has no volume.} \> Section~\ref{info:init_species} \\ - 850 \> \ct{INIT ... cannot find PART_ID ...} \> Section~\ref{info:initial_droplets} \\ - 851 \> \ct{INIT ... requires N_PARTICLES=1 for a PATH_RAMP.} \> Section~\ref{info:path_ramp} \\ - 852 \> \ct{INIT ... PATH_RAMP(N) not found.} \> Section~\ref{info:path_ramp} \\ - 853 \> \ct{INIT ... ORIENTATION_RAMP(N) not found.} \> Section~\ref{info:path_ramp} \\ - 854 \> \ct{INIT ... ORIENTATION_RAMP components must all be defined.} \> Section~\ref{info:path_ramp} \\ - 855 \> \ct{INIT ... DEVC_ID ... cannot use a SPATIAL_STATISTIC.} \> Section~\ref{info:initial_droplets} \\ - 856 \> \ct{The INIT_ID for DEVC ... cannot be found.} \> Section~\ref{info:PART_SURF} \\ - 857 \> \ct{INIT ... PARTicle class ... requires a density.} \> Section~\ref{info:initial_droplets} \\ - 858 \> \ct{INIT ... PARTicle class ... requires a ...} \> Section~\ref{info:initial_droplets} \\ - \> \> \\ - 871 \> \ct{LEAK_AREA specified twice for ZONE ... and ...} \> Section~\ref{info:Leaks} \\ - 872 \> \ct{ZONE ... overlaps ZONE ... in MESH ...} \> Section~\ref{info:ZONE_Basics} \\ - 873 \> \ct{ZONE ... meets ZONE ... at the boundary of MESH ...} \> Section~\ref{info:ZONE_Basics} \\ - \> \> \\ - 881 \> \ct{DEVC ... has QUANTITY_RANGE(2) <= QUANTITY_RANGE(1).} \> Section~\ref{info:statistics} \\ - 882 \> \ct{DEVC ... MOVE_ID is not recognized.} \> Section~\ref{info:MOVE_ID} \\ - 883 \> \ct{DEVC ... must have coordinates given in terms of XBP.} \> Section~\ref{info:line_file} \\ - 884 \> \ct{DEVC ... components of ORIENTATION are all zero.} \> Section~\ref{info:DEVC} \\ - 885 \> \ct{DEVC ... must have coordinates, even if not a point quantity.} \> Section~\ref{info:DEVC} \\ - 886 \> \ct{DEVC ... must have either an output QUANTITY or PROP_ID.} \> Section~\ref{info:DEVC} \\ - 887 \> \ct{DEVC ... must have an ORIENTATION.} \> Section~\ref{info:heat_flux} \\ - \> \> or Section~\ref{info:bidir_probe} \\ - 888 \> \ct{DEVC ... TEMPORAL_STATISTIC is not recognized.} \> Section~\ref{info:statistics} \\ - 889 \> \ct{DEVC ... SPATIAL_STATISTIC is not recognized.} \> Section~\ref{info:statistics} \\ - 890 \> \ct{DEVC ... STATISTICS is not recognized.} \> Section~\ref{info:statistics} \\ - 891 \> \ct{DEVC ... HVAC outputs specified with no HVAC inputs.} \> Section~\ref{info:HVAC} \\ - 892 \> \ct{DEVC ... or PROP ... must have a QUANTITY.} \> Section~\ref{info:HVAC} \\ - 893 \> \ct{DEVC ... QUANTITY ... requires XB coordinates.} \> Section~\ref{info:statistics} \\ - 894 \> \ct{DEVC ... uses invalid solid phase SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ - 895 \> \ct{DEVC ... uses invalid gas phase SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ - 896 \> \ct{DEVC ... requires XB for SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ - 897 \> \ct{DEVC ... NODE 1 = NODE 2.} \> Section~\ref{info:hvacoutputquantities} \\ - 898 \> \ct{DEVC ... should not use XYZ or XB for an HVAC output QUANTITY.} \> Section~\ref{info:hvacoutputquantities} \\ - 899 \> \ct{DEVC ... ID should not contain a comma.} \> Section~\ref{info:DEVC} \\ - \> \> \\ - 901 \> \ct{CTRL ... must have a FUNCTION_TYPE.} \> Section~\ref{info:basic_control} \\ - 902 \> \ct{CTRL ... PID controller must be given a TARGET_VALUE.} \> Section~\ref{info:CONTROL_PID} \\ - 903 \> \ct{CTRL ... FUNCTION_TYPE not recognized.} \> Section~\ref{info:CTRL} \\ - 904 \> \ct{CTRL ... FUNCTION_TYPE=EXTERNAL but no EXTERNAL_FILENAME given.} \> Section~\ref{info:external_control} \\ - 905 \> \ct{CTRL ... must have at least one input.} \> Section~\ref{info:CTRL} \\ - 906 \> \ct{CTRL ... must have only one input.} \> Section~\ref{info:CTRL} \\ - 907 \> \ct{CTRL ... cannot use a CONSTANT INPUT_ID.} \> Section~\ref{info:CTRL} \\ - 908 \> \ct{CTRL ... must have at least two inputs.} \> Section~\ref{info:CTRL} \\ - 909 \> \ct{CTRL ... must have only two inputs.} \> Section~\ref{info:CTRL} \\ - 910 \> \ct{CTRL ... cannot use a control function as an input to itself.} \> Section~\ref{info:CTRL} \\ - 911 \> \ct{CTRL ... can only specify one input as a constant value.} \> Section~\ref{info:CONTROL_MATH} \\ - 912 \> \ct{CTRL ... has no CONSTANT specified.} \> Section~\ref{info:CONTROL_MATH} \\ - 913 \> \ct{CTRL ... uses PERCENTILE and must have a DEVC as input.} \> Section~\ref{info:PERCENTILE} \\ - 914 \> \ct{CTRL ... is CUSTOM and must have a DEVC or math CTRL as input.} \> Section~\ref{info:CUSTOM} \\ - 915 \> \ct{CTRL ... input ... is the ID for both a DEVC and a CTRL.} \> Section~\ref{info:CTRL} \\ - 916 \> \ct{CTRL ... cannot locate INPUT_ID ...} \> Section~\ref{info:CTRL} \\ - \> \> \\ - 931 \> \ct{DEVC ... is a smoke detector and must have a PROP_ID.} \> Section~\ref{info:smoke_detector} \\ - 932 \> \ct{DEVC ... is a smoke detector and requires a smoke source.} \> Section~\ref{info:smoke_detector} \\ - 933 \> \ct{DEVC ... must have a PROP_ID.} \> Section~\ref{info:sprinklers} \\ - 934 \> \ct{DEVC ... PROP ... needs an ACTIVATION_TEMPERATURE.} \> Section~\ref{info:sprinklers} \\ - 935 \> \ct{DEVC ... is a THERMOCOUPLE and cannot use SPATIAL_STATISTIC.} \> Section~\ref{info:THERMOCOUPLE} \\ - 936 \> \ct{DEVC ... must have a MATL_ID.} \> Section~\ref{info:DEPTH} \\ - 937 \> \ct{DEVC ... is partially outside of the domain.} \> Section~\ref{info:layerheight} \\ - 938 \> \ct{DEVC ... CTRL_ID ... does not exist.} \> Section~\ref{info:RAMPDEVC} \\ - 939 \> \ct{DEVC ... CTRL_ID ... is a logic only function ...} \> Section~\ref{info:RAMPDEVC} \\ - 940 \> \ct{DEVC ... must use QUANTITY='DENSITY' and a SPEC_ID.} \> Section~\ref{info:aspiration_detector} \\ - 941 \> \ct{DEVC ... must be listed after all of its inputs.} \> Section~\ref{info:aspiration_detector} \\ - 942 \> \ct{DEVC ... is a FED detector and requires an activity.} \> Section~\ref{info:FED} \\ - 943 \> \ct{DEVC ... is a PATCH and needs a DEVC_ID to control it.} \> Section~\ref{info:velocity_patch} \\ - \> \> \\ - 951 \> \ct{PROF ... requires an orientation index, IOR.} \> Section~\ref{info:PROF} \\ - 952 \> \ct{PROF ... is not valid.} \> Section~\ref{info:PROF} \\ - 953 \> \ct{PROF ... requires a PART_ID.} \> Section~\ref{info:PROF} \\ - 954 \> \ct{PROF ... MATL_ID ... not found.} \> Section~\ref{info:PROF} \\ - \> \> \\ - 961 \> \ct{CELL_CENTERED not allowed with AGL_SLICE.} \> Section~\ref{info:complex_terrain} \\ - 962 \> \ct{BNDF ... CPUA_Z, MPUA_Z, and AMPUA_Z require liquid droplets.} \> Section~\ref{bucket_test_1} \\ - \> \> \\ - 1001 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. must be a tracked species.} \> Section~\ref{info:soot} \\ - 1002 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. cannot be a lumped species.} \> Section~\ref{info:soot} \\ - 1003 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. is not an AEROSOL.} \> Section~\ref{info:soot} \\ - 1004 \> \ct{SPEC_ID ... is not explicitly specified for QUANTITY ...} \> Section~\ref{info:gasoutputquantities} \\ - 1005 \> \ct{Output QUANTITY ... requires a DUCT_ID.} \> Section~\ref{info:hvacoutputquantities} \\ - 1006 \> \ct{CELL_L used for output QUANTITY ... is outside of DUCT_ID ...} \> Section~\ref{info:hvacoutputquantities} \\ - 1007 \> \ct{SPEC_ID ... for FILTER LOADING is not a tracked species.} \> Section~\ref{info:hvacoutputquantities} \\ - 1008 \> \ct{SPEC_ID ... for EQUIL. VAP. FRAC. is not a tracked species.} \> Section~\ref{info:hvacoutputquantities} \\ - 1009 \> \ct{SPEC_ID ... for EQUIL. VAP. FRAC. is not an evap. species.} \> Section~\ref{info:hvacoutputquantities} \\ - 1010 \> \ct{REAC ... MIXTURE FRACTION requires reaction A + B -> C.} \> Section~\ref{info:gasoutputquantities} \\ - 1011 \> \ct{HRRPUV REAC requires a REAC_ID.} \> Section~\ref{info:gasoutputquantities} \\ - 1012 \> \ct{REAC_ID ... not found for HRRPUV REAC.} \> Section~\ref{info:gasoutputquantities} \\ - 1013 \> \ct{Output QUANTITY2 ... requires a SPEC_ID.} \> Section~\ref{info:gasoutputquantities} \\ - 1014 \> \ct{Output QUANTITY2 ... needs to be a SLCF appropriate quantity.} \> Section~\ref{info:gasoutputquantities} \\ - 1016 \> \ct{Output QUANTITY ... requires a SPEC_ID.} \> Section~\ref{info:gasoutputquantities} \\ - 1017 \> \ct{Output QUANTITY ... SPEC_ID ... not found.} \> Section~\ref{info:gasoutputquantities} \\ - 1018 \> \ct{Output QUANTITY ... requires a MATL_ID.} \> Section~\ref{info:solidoutputquantities} \\ - 1019 \> \ct{Output QUANTITY ... MATL_ID ... not found.} \> Section~\ref{info:solidoutputquantities} \\ - 1020 \> \ct{Output QUANTITY ... requires a PART_ID.} \> Section~\ref{info:gasoutputquantities} \\ - 1021 \> \ct{Output QUANTITY ... PART_ID ... not found.} \> Section~\ref{info:gasoutputquantities} \\ - 1022 \> \ct{Output QUANTITY ... requires a DUCT_ID.} \> Section~\ref{info:hvacoutputquantities} \\ - 1023 \> \ct{Output QUANTITY ... DUCT_ID ... not found.} \> Section~\ref{info:hvacoutputquantities} \\ - 1024 \> \ct{Output QUANTITY ... requires a positive CELL_L.} \> Section~\ref{info:hvacoutputquantities} \\ - 1025 \> \ct{Output QUANTITY ... DUCT_ID ... requires pos. CELL_L.} \> Section~\ref{info:hvacoutputquantities} \\ - 1026 \> \ct{Output QUANTITY ... DUCT_ID ... requires HVAC_MASS_TRAN.} \> Section~\ref{info:hvacoutputquantities} \\ - 1027 \> \ct{Output QUANTITY ... requires a NODE_ID'} \> Section~\ref{info:hvacoutputquantities} \\ - 1028 \> \ct{Output QUANTITY ... NODE_ID ... not found.} \> Section~\ref{info:hvacoutputquantities} \\ - 1029 \> \ct{HUMIDITY requires SPEC_ID WATER VAPOR.} \> Section~\ref{info:humidity} \\ - 1030 \> \ct{DIFFUSIVITY requires a tracked SPEC_ID when using DNS.} \> Section~\ref{info:diffusivity} \\ - 1031 \> \ct{BACKGROUND species inappropriate for deposition.} \> Section~\ref{info:deposition} \\ - 1032 \> \ct{SPEC_ID ... for SURF. DEP. is not an aerosol species.} \> Section~\ref{info:deposition} \\ - 1033 \> \ct{SPEC_ID ... for SURF. DEP. is not an aerosol tracked species.} \> Section~\ref{info:deposition} \\ - 1034 \> \ct{QUANTITY ... requires liquid droplets.} \> Section~\ref{info:solidoutputquantities} \\ - 1035 \> \ct{QUANTITY ... is not appropriate for SLCF.} \> Section~\ref{info:gasoutputquantities} \\ - 1036 \> \ct{QUANTITY ... is not appropriate for DEVC.} \> Section~\ref{info:gasoutputquantities} \\ - 1037 \> \ct{QUANTITY ... is not a particle output QUANTITY.} \> Section~\ref{info:particleoutputquantities} \\ - 1038 \> \ct{QUANTITY ... is not appropriate for BNDF.} \> Section~\ref{info:solidoutputquantities} \\ - 1039 \> \ct{QUANTITY ... is not appropriate for isosurface.} \> Section~\ref{info:gasoutputquantities} \\ - 1040 \> \ct{QUANTITY ... is not appropriate for gas phase.} \> Section~\ref{info:gasoutputquantities} \\ - 1041 \> \ct{QUANTITY ... is not appropriate for Plot3D.} \> Section~\ref{info:gasoutputquantities} \\ - 1042 \> \ct{QUANTITY ... not found.} \> Section~\ref{info:gasoutputquantities} \\ - 1043 \> \ct{PROP_ID ... not found.} \> Section~\ref{info:THERMOCOUPLE} \\ - 1044 \> \ct{Cannot set EXTERNAL_FILE=T for a RAMP used for an output clock ...} \> Section~\ref{info:external_control} \\ - 1045 \> \ct{QUANTITY ... requires a PART_ID for particles with mass.} \> Section~\ref{tab:particleoutputquantities} \\ - \\ - 1050 \> \ct{The file ... does not exist. Set RESTART=.FALSE.} \> Section~\ref{info:restart} \\ - 1051 \> \ct{RESTART initial time equals T_END.} \> Section~\ref{info:restart} \\ - 1052 \> \ct{On TIME, do not set both RAMP_TIME and RAMP_DT.} \> Section~\ref{info:simulation_time_ramp} \\ - 1053 \> \ct{On TIME, if one of DT_EXTERNAL_HEARTBEAT or} \> Section~\ref{info:external_control} \\ - \> \ct{EXTERNAL_HEARTBEAT_FILENAME is set, both must be set.} \\ - \\ - 1054 \> \ct{On MULT, must set DX if I_UPPER-I_LOWER>0, etc.} \> Section~\ref{info:MULT} \\ +\hspace{0.4in} \= \hspace{5.2in} \= \hspace{1in} \\ +101 \> \ct{Problem with ... line.} \> Chapter~\ref{info:Errors} \\ +102 \> \ct{Input file ... not found in the current directory.} \> Section~\ref{info:launching} \\ +103 \> \ct{CATF file ... not found.} \> Section~\ref{info:CATF} \\ +104 \> \ct{OVERWRITE=F and concatenated file ... exists.} \> Section~\ref{info:OVERWRITE} \\ +105 \> \ct{Input file ... has line with ... characters.} \> Section~\ref{info:CATF} \\ +106 \> \ct{CATF file ... has line with ... characters.} \> Section~\ref{info:CATF} \\ +107 \> \ct{Hidden carriage return character in line starting with ...} \> Section~\ref{info:namelist_formatting} \\ +108 \> \ct{No periods allowed in CHID.} \> Section~\ref{info:input_file_rules} \\ +109 \> \ct{Remove the file ... from the current directory.} \> Section~\ref{info:restart} \\ +110 \> \ct{All meshes must be CYLINDRICAL ...} \> Section~\ref{info:2D} \\ +111 \> \ct{MULT_ID ... on MESH line ... not found.} \> Section~\ref{info:multimesh} \\ +112 \> \ct{The number of MPI processes ... exceeds the number of meshes} \> Section~\ref{info:parallelprocessing} \\ +113 \> \ct{No MESH line(s) defined.} \> Section~\ref{info:MESH_Basics} \\ +114 \> \ct{MPI_PROCESS for MESH ... greater than total ...} \> Section~\ref{info:multimesh} \\ +115 \> \ct{Number of meshes exceeds number of MPI processes ...} \> Section~\ref{info:parallelprocessing} \\ +116 \> \ct{IJK(2) must be 1 for all grids in 2D Calculation.} \> Section~\ref{info:2D} \\ +117 \> \ct{MPI_PROCESS must be continuous and monotonically increasing.} \> Section~\ref{info:multimesh} \\ +118 \> \ct{MESH 1 must be assigned to MPI_PROCESS 0.} \> Section~\ref{info:multimesh} \\ +119 \> \ct{XB(:)=XB(:) on MESH ...} \> Section~\ref{info:MESH_Basics} \\ +120 \> \ct{XB(1)<0 with CYLINDRICAL on MESH ...} \> Section~\ref{info:2D} \\ +121 \> \ct{J>1 with CYLINDRICAL on MESH ...} \> Section~\ref{info:2D} \\ +122 \> \ct{Too many MPI processes have been assigned to this job.} \> Section~\ref{info:parallelprocessing} \\ +123 \> \ct{... timed out for MPI process ...} \> Section~\ref{info:Errors} \\ + +124 \> \ct{Problem with grid transformation.} \> Section~\ref{info:TRNX} \\ +125 \> \ct{Do not specify endpoints in linear grid transformation.} \> Section~\ref{info:TRNX} \\ +126 \> \ct{x (y,z) transformation not monotonic, MESH ...} \> Section~\ref{info:TRNX} \\ +\> \> \\ +127 \> \ct{TURBULENCE_MODEL ... is not appropriate for DNS.} \> Section~\ref{info:LES} \\ +128 \> \ct{SIMULATION_MODE ... is not an option.} \> Section~\ref{Sim_Mode} \\ +129 \> \ct{TURBULENCE_MODEL ... is not recognized.} \> Section~\ref{info:LES} \\ +130 \> \ct{FLUX_LIMITER ... is not recognized.} \> Section~\ref{info:flux_limiters} \\ +131 \> \ct{GEOSTROPHIC_WIND requires Coriolis force ...} \> Section~\ref{info:geostrophic_wind} \\ +\> \> \\ +132 \> \ct{SPEC ...: N_BINS must be >=2.} \> Section~\ref{info:agglomeration} \\ +133 \> \ct{SPEC ...: AEROSOL must be .TRUE. to use N_BINS.} \> Section~\ref{info:agglomeration} \\ +134 \> \ct{SPEC ...: Do not specify MEAN_DIAMETER and N_BINS.} \> Section~\ref{info:agglomeration} \\ +135 \> \ct{SPEC ...: MAX(MIN)_DIAMETER not set.} \> Section~\ref{info:agglomeration} \\ +136 \> \ct{SPEC ...: MAX_DIAMETER <= MIN_DIAMETER.} \> Section~\ref{info:agglomeration} \\ +137 \> \ct{SPEC ...: LUMPED_COMPONENT_ONLY must be .TRUE. to use N_BINS.} \> Section~\ref{info:agglomeration} \\ +138 \> \ct{SPEC ...: Cannot set N_BINS for a condensable species.} \> Section~\ref{info:condensation} \\ +139 \> \ct{SPEC ...: Condensable species cannot be LUMPED_SPECIES_ONLY.} \> Section~\ref{info:condensation} \\ +140 \> \ct{SPEC ...: Condensable species cannot be a lumped species.} \> Section~\ref{info:condensation} \\ +141 \> \ct{Species ... is primitive but more than one SPEC_ID given.} \> Section~\ref{info:lumped} \\ +142 \> \ct{SPEC ... cannot specify both COPY_LUMPED and N_BINS.} \> Section~\ref{info:lumped} \\ +143 \> \ct{SPEC ... cannot specify both COPY_LUMPED and BACKGROUND.} \> Section~\ref{info:lumped} \\ +144 \> \ct{Only one BACKGROUND SPECies can be defined.} \> Section~\ref{info:primitive} \\ +145 \> \ct{Cannot define a LUMPED_COMPONENT_ONLY ...} \> Section~\ref{info:lumped} \\ +146 \> \ct{Cannot define a BACKGROUND species or redefine AIR ...} \> Section~\ref{info:lumped} \\ +147 \> \ct{Species ... needs a name (ID=...).} \> Section~\ref{info:SPEC_Basics} \\ +148 \> \ct{SPEC ... cannot redefine AIR unless ...} \> Section~\ref{info:AIR} \\ +149 \> \ct{SPEC ... cannot specify both SPECIFIC_HEAT and RAMP_CP.} \> Section~\ref{user_defined_gas_species_props} \\ +150 \> \ct{SPEC ... cannot specify both SPECIFIC_HEAT_LIQUID and RAMP_C_L} \> Section~\ref{user_defined_gas_species_props} \\ +151 \> \ct{SPEC ... cannot specify both CONDUCTIVITY and RAMP_K.} \> Section~\ref{user_defined_gas_species_props} \\ +152 \> \ct{SPEC ... cannot specify both DIFFUSIVITY and RAMP_D.} \> Section~\ref{user_defined_gas_species_props} \\ +153 \> \ct{SPEC ... cannot specify both VISCOSITY and RAMP_MU.} \> Section~\ref{user_defined_gas_species_props} \\ +154 \> \ct{SPEC ... cannot define both REFERENCE_ENTHALPY and} \> Section~\ref{user_defined_gas_species_props} \\ +\> \ct{ENTHALPY_OF_FORMATION.} \\ +155 \> \ct{Species ... has the same ID as species ...} \> Section~\ref{info:SPEC_Basics} \\ +156 \> \ct{Cannot define MASS_FRACTION_0 for a LUMPED ...} \> Section~\ref{info:MASS_FRACTION_0} \\ +157 \> \ct{SPEC ...: If one of SPECIFIC_HEAT_LIQUID ...} \> Section~\ref{info:liquid_props} \\ +158 \> \ct{SPEC ...: No MEAN_DIAMETER given.} \> Section~\ref{info:deposition} \\ +159 \> \ct{SPEC ... cannot specify both MASS and VOLUME_FRACTION.} \> Section~\ref{info:lumped} \\ +160 \> \ct{SPEC ... cannot specify both FORMULA and C,H,O, or N.} \> Section~\ref{info:FORMULA} \\ +161 \> \ct{Simple chemistry FUEL ... not defined on REAC or SPEC.} \> Section~\ref{info:simple_chemistry} \\ +162 \> \ct{SPEC ... has the same names as a predefined lumped species.} \> Section~\ref{info:simple_chemistry} \\ +163 \> \ct{REAC ...: FORMULA limited to C,H,O,N for simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ +164 \> \ct{REAC ...: Specify C and/or H for simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ +165 \> \ct{Cannot use simple chemistry with SOOT_OXIDATION.} \> Section~\ref{info:SOOT_OXIDATION} \\ +166 \> \ct{SOOT_OXIDATION set without SOOT as a species.} \> Section~\ref{info:SOOT_OXIDATION} \\ +167 \> \ct{SOOT_OXIDATION set without SOOT defined as an AEROSOL species.} \> Section~\ref{info:SOOT_OXIDATION} \\ +168 \> \ct{SPEC ...: Subspecies ... not found.} \> Section~\ref{info:lumped} \\ +169 \> \ct{SPEC ...: Mass or volume fraction for subspecies ...} \> Section~\ref{info:lumped} \\ +170 \> \ct{SPEC ...: Cannot have duplicate species in SPEC_ID.} \> Section~\ref{info:lumped} \\ +\> \> \\ +171 \> \ct{REAC, Not enough carbon for the CO_YIELD ...} \> Section~\ref{info:simple_chemistry} \\ +172 \> \ct{REAC, Not enough hydrogen for the SOOT_YIELD ...} \> Section~\ref{info:simple_chemistry} \\ +173 \> \ct{REAC, Not enough nitrogen for the HCN_YIELD.} \> Section~\ref{info:simple_chemistry} \\ +174 \> \ct{REAC, Not enough nitrogen for the FUEL_N_TO_HCN_FRACTION.} \> Section~\ref{info:simple_chemistry} \\ +175 \> \ct{REAC, Not enough carbon for the FUEL_C_TO_CO_FRACTION ...} \> Section~\ref{info:simple_chemistry} \\ +176 \> \ct{REAC, Not enough hydrogen for the FUEL_H_TO_H2_FRACTION ...} \> Section~\ref{info:simple_chemistry} \\ +179 \> \ct{BACK tracked species ... not found.} \> Section~\ref{info:BACKGROUND_SPECIES} \\ +180 \> \ct{SPEC ... does not have a SPECIFIC_HEAT_LIQUID ...} \> Section~\ref{info:liquid_props} \\ +181 \> \ct{SPEC ... does not have a MELTING_TEMPERATURE.} \> Section~\ref{info:liquid_props} \\ +182 \> \ct{SPEC ... does not have a VAPORIZATION_TEMPERATURE.} \> Section~\ref{info:liquid_props} \\ +183 \> \ct{SPEC ... MELTING_TEMPERATURE must be less than} \> Section~\ref{info:liquid_props} \\ +\> \ct{VAPORIZATION_TEMPERATURE.} \\ +184 \> \ct{SPEC ... does not have a HEAT_OF_VAPORIZATION.} \> Section~\ref{info:liquid_props} \\ +185 \> \ct{SPEC ... does not have a DENSITY_LIQUID.} \> Section~\ref{info:liquid_props} \\ +187 \> \ct{SPEC ... is used for droplets and does not have liquid props.} \> Section~\ref{info:liquid_props} \\ +188 \> \ct{EXTINCTION_MODEL ... is not recognized.} \> Section~\ref{info:extinction} \\ +189 \> \ct{REAC ... cannot use both finite rate and simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ +190 \> \ct{REAC ... requires a FUEL.} \> Section~\ref{info:simple_chemistry} \\ +191 \> \ct{FORMULA for SIMPLE_CHEMISTRY can only contain C,H,O, and N.} \> Section~\ref{info:simple_chemistry} \\ +192 \> \ct{Specify fuel using C and/or H when using simple chemistry.} \> Section~\ref{info:simple_chemistry} \\ +193 \> \ct{FUEL_C_TO_CO_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ +194 \> \ct{FUEL_H_TO_H2O_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ +195 \> \ct{FUEL_N_TO_HCN_FRACTION must be between 0 and 1.} \> Section~\ref{info:two-step_simple_chemistry} \\ +196 \> \ct{REAC ... SPEC_ID_NU and NU arrays or EQUATION must be defined.} \> Section~\ref{info:finite} \\ +197 \> \ct{REAC ... THIRD_EFF values must be >= 0.} \> Section~\ref{info:third_body} \\ +198 \> \ct{REAC ... invalid EQUATION specified.} \> Section~\ref{info:EQUATION} \\ +199 \> \ct{REAC ... uses simple chemistry and has a duplicate fuel ...} \> Section~\ref{info:simple_chemistry} \\ +200 \> \ct{Fuel for simple chemistry has NU_O2<= 0 and requires air ...} \> Section~\ref{info:simple_chemistry} \\ +201 \> \ct{REAC ... Cannot set NUs if an EQUATION is specified.} \> Section~\ref{info:EQUATION} \\ +202 \> \ct{REAC ... Tracked species ... not found.} \> Section~\ref{info:finite} \\ +204 \> \ct{REAC ... Primitive species ... not found.} \> Section~\ref{info:finite} \\ +205 \> \ct{REAC ... Products not specified.} \> Section~\ref{info:finite} \\ +206 \> \ct{REAC ... Reactants not specified.} \> Section~\ref{info:finite} \\ +207 \> \ct{REAC ... Mass of products does not equal mass of reactants.} \> Section~\ref{info:REAC_Diagnostics} \\ +208 \> \ct{REAC ... THIRD_EFF primitive species ... not found.} \> Section~\ref{info:third_body} \\ +209 \> \ct{Name of ODE_SOLVER is not recognized.} \> Section~\ref{info:chem_integration} \\ +210 \> \ct{REAC ... Missing an ENTHALPY_OF_FORMATION.} \> Section~\ref{info:liquid_props} \\ +212 \> \ct{REAC ... Reversible reaction SPEC ... missing RAMP_G_F.} \> Section~\ref{info:gibbs_energy} \\ +\> \> \\ +213 \> \ct{PART ... cannot have both a specified DIAMETER and a SURF_ID.} \> Section~\ref{info:PART_SURF} \\ +214 \> \ct{PART ... requires a specified DIAMETER.} \> Section~\ref{info:particle_size} \\ +215 \> \ct{Cannot have MASSLESS=.TRUE. with evaporating PARTICLEs.} \> Section~\ref{info:MASSLESS} \\ +216 \> \ct{PART ... needs a SURF_ID.} \> Section~\ref{info:PART_SURF} \\ +217 \> \ct{PART SPEC_ID ... not found.} \> Section~\ref{thermal_part_props} \\ +218 \> \ct{PART ... Particles cannot evaporate to a lumped species.} \> Section~\ref{info:liquid_droplets} \\ +219 \> \ct{PART ... No DRAG_COEFFICIENT when using a DRAG_LAW.} \> Section~\ref{info:particle_drag} \\ +220 \> \ct{PART ... Specify exactly one ORIENTATION for a SCREEN.} \> Section~\ref{info:particle_screen} \\ +221 \> \ct{PART ... Specify FREE_AREA_FRACTION for a SCREEN.} \> Section~\ref{info:particle_screen} \\ +222 \> \ct{PART ... Specify all components for DRAG_COEFFICIENT and ...} \> Section~\ref{info:porous_media} \\ +223 \> \ct{PART ... Unrecognized drag law.} \> Section~\ref{info:particle_drag} \\ +224 \> \ct{PART ... Invalid EVAP_MODEL.} \> Section~\ref{info:liquid_droplets} \\ +225 \> \ct{HEAT_TRANSFER_MODEL not appropriate for PART.} \> Section~\ref{info:convection} \\ +226 \> \ct{PROP_ID for PART ... not found.} \> Section~\ref{info:PART_GEOMETRY} \\ +\> \> \\ +231 \> \ct{PROP ... values for SPRAY_ANGLE cannot be the same.} \> Section~\ref{info:sprinklers} \\ +232 \> \ct{PROP ... HISTOGRAM needs HISTOGRAM_NBINS>2.} \> Section~\ref{info:histograms} \\ +233 \> \ct{PROP ... HISTOGRAM needs HISTOGRAM_LIMITS.} \> Section~\ref{info:histograms} \\ +234 \> \ct{PROP ... FED_ACTIVITY out of range: ...} \> Section~\ref{info:FED} \\ +235 \> \ct{PROP ... VELOCITY_COMPONENT > 3: ...} \> Section~\ref{info:velocity_patch} \\ +236 \> \ct{PROP ... VELOCITY_PATCH requires P0.} \> Section~\ref{info:velocity_patch} \\ +237 \> \ct{PROP ... specify PARTICLE_VELOCITY with MASS_FLOW_RATE.} \> Section~\ref{info:sprinklers} \\ +238 \> \ct{PROP ... too few flow parameters.} \> Section~\ref{info:pressureramp} \\ +239 \> \ct{PROP SPEC_ID ... not found.} \> Section~\ref{info:alternative_smoke} \\ +240 \> \ct{PART_ID for PROP ... not found.} \> Section~\ref{info:sprinklers} \\ +241 \> \ct{PART_ID for PROP ... cannot refer to MASSLESS particles.} \> Section~\ref{info:sprinklers} \\ +242 \> \ct{Spray Pattern Table ... massflux <= 0 for line ...} \> Section~\ref{info:sprinklers} \\ +243 \> \ct{PROP ... VIEW_ANGLE must be between 0 and 180} \> Section~\ref{info:sprinklers} \\ +\> \> \\ +250 \> \ct{MATL ... REAC ... requires a HEAT_OF_REACTION.} \> Section~\ref{solid_phase_energy_conservation} \\ +251 \> \ct{MATL ... REAC ... Set REFERENCE_TEMPERATURE or E, A.} \> Section~\ref{info:kinetic_parameters} \\ +252 \> \ct{MATL ... HEAT_OF_REACTION should be greater than 0.} \> Section~\ref{info:HEAT_OF_REACTION} \\ +253 \> \ct{MATL ... DENSITY=0.} \> Section~\ref{info:thermal_properties} \\ +254 \> \ct{MATL ... CONDUCTIVITY=0.} \> Section~\ref{info:thermal_properties} \\ +255 \> \ct{MATL ... SPECIFIC_HEAT=0.} \> Section~\ref{info:thermal_properties} \\ +256 \> \ct{MATL ... SURFACE_OXIDATION_MODEL but no OXYGEN.} \> Section~\ref{veg_reaction_rates} \\ +257 \> \ct{Residue ... of ... is not defined.} \> Section~\ref{info:solid_pyrolysis} \\ +258 \> \ct{PARTicle ... corresponding to MATL ... cannot be MASSLESS.} \> Section~\ref{info:solid_pyrolysis} \\ +259 \> \ct{MATL ... PART_ID ... not defined.} \> Section~\ref{info:solid_pyrolysis} \\ +260 \> \ct{MATL ... PART_ID ... has a NU_PART<=0.} \> Section~\ref{info:solid_pyrolysis} \\ +261 \> \ct{Duplicate material name: ...} \> Section~\ref{info:MATL} \\ +262 \> \ct{MATL ... requires a SPEC_ID for yield ... of reaction ...} \> Section~\ref{info:solid_pyrolysis} \\ +263 \> \ct{MATL ... can only specify one SPEC_ID for a liquid.} \> Section~\ref{info:liquid_fuels} \\ +264 \> \ct{MATL ... SPEC_ID ... not a tracked.} \> Section~\ref{info:solid_pyrolysis} \\ +265 \> \ct{MATL ... Sum of NU inputs more than 1.} \> Section~\ref{info:solid_pyrolysis} \\ +266 \> \ct{REAC ... FUEL ... is not a predefined or tracked species.} \> Section~\ref{info:simple_chemistry} \\ +267 \> \ct{REAC ... has no consumed species.} \> Section~\ref{info:REAC_Diagnostics} \\ +268 \> \ct{BACK tracked species ... not found.} \> Section~\ref{info:BACKGROUND_SPECIES} \\ +269 \> \ct{MATL ... The specified pyrolysis parameters result in A >...} \> Section~\ref{info:kinetic_parameters} \\ +\> \> \\ +299 \> \ct{SURF ... has no solid or particle for TGA.} \> Section~\ref{info:TGA_DSC_MCC} \\ +300 \> \ct{N_LAYER_CELLS_MAX should be at least ... for ...} \> Section~\ref{info:solid_phase_stability} \\ +301 \> \ct{SURF line must have an ID.} \> Section~\ref{info:SURF} \\ +302 \> \ct{SURF ID ... is used more than once.} \> Section~\ref{info:SURF} \\ +303 \> \ct{MOISTURE_CONTENT on SURF ... exceeds theoretical limit.} \> Section~\ref{info:vegetation} \\ +304 \> \ct{SURF ... One layer only for TGA_ANALYSIS=T.} \> Section~\ref{info:TGA_DSC_MCC} \\ +305 \> \ct{SURF ... indicates a level set simulation ...} \> Section~\ref{info:level_set} \\ +306 \> \ct{SURF ... cannot have a specified flux and a MATL_ID.} \> Section~\ref{info:MASS_FLUX} \\ +307 \> \ct{SURF ... must have a specified THICKNESS for Layer ...} \> Section~\ref{info:MATL} \\ +308 \> \ct{SURF ... needs a RADIUS or THICKNESS.} \> Section~\ref{info:GEOMETRY} \\ +309 \> \ct{SURF ... BACKING ... not recognized.} \> Section~\ref{info:BACKING} \\ +310 \> \ct{SURF ... must specify TMP_FRONT for CONVERT_VOLUME_TO_MASS.} \> Section~\ref{info:MASS_FLUX} \\ +311 \> \ct{SURF ... cannot use velocity RAMP with CONVERT_VOLUME_TO_MASS.} \> Section~\ref{info:MASS_FLUX} \\ +312 \> \ct{SURF ... GEOMETRY not recognized.} \> Section~\ref{info:GEOMETRY} \\ +313 \> \ct{SURF ... HEAT_TRANSFER_MODEL not recognized.} \> Section~\ref{info:convection} \\ +314 \> \ct{SURF ... must have a REAC line when using HRRPUA or MLRPUA.} \> Section~\ref{info:gas_burner} \\ +315 \> \ct{SURF ... should have only one LEAK_PATH and LEAK_PATH_ID.} \> Section~\ref{info:Leaks} \\ +316 \> \ct{SURF ... N_LAYER_CELLS_MAX must be > 0.} \> Section~\ref{info:solid_phase_stability} \\ +317 \> \ct{SURF ... Specify either ROUGHNESS or Z_0, not both.} \> Section~\ref{info:WALL_MODEL} \\ +318 \> \ct{SURF ... MASS_FLUX_TOTAL is only for outflow.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ +319 \> \ct{SURF ... for use with HT3D must have a MATL_ID.} \> Section~\ref{info:HT3D_Limitations} \\ +320 \> \ct{SURF ... cannot use both MASS_FLUX and MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ +321 \> \ct{SURF ... MASS_FLUX cannot be less than zero.} \> Section~\ref{info:MASS_FLUX} \\ +322 \> \ct{SURF ... cannot use both MASS_FLUX and VEL.} \> Section~\ref{info:MASS_FLUX} \\ +323 \> \ct{SURF ... cannot use both MASS_FLUX and MASS_FLUX_TOTAL.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ +324 \> \ct{SURF ... cannot use both MASS_FLUX_TOTAL and VEL.} \> Section~\ref{info:MASS_FLUX_TOTAL} \\ +325 \> \ct{SURF ... cannot use a negative MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ +326 \> \ct{SURF ... cannot use RAMP_MF with MLRPUA or HRRPUA.} \> Section~\ref{info:RAMP_Time} \\ +327 \> \ct{SURF ... Must define SPEC_ID when using MASS_FLUX ...} \> Section~\ref{info:MASS_FLUX} \\ +328 \> \ct{SURF ... SPEC ... not found.} \> Section~\ref{info:MASS_FLUX} \\ +329 \> \ct{SURF ... sum of mass fractions greater than 1.} \> Section~\ref{info:MASS_FLUX} \\ +330 \> \ct{SURF ... cannot use background species for MASS_FRACTION.} \> Section~\ref{info:MASS_FLUX} \\ +331 \> \ct{SURF ... cannot use a RAYLEIGH model with GRAV=0.} \> Section~\ref{info:convection} \\ +332 \> \ct{SURF ... REFERENCE_HEAT_FLUX requires HRRPUA, ...} \> Section~\ref{info:scaled_burning} \\ +333 \> \ct{SURF ... MATL_ID ... not found.} \> Section~\ref{info:MATL} \\ +334 \> \ct{SURF ... has too many materials.} \> Section~\ref{info:solid_pyrolysis} \\ +335 \> \ct{SURF ... cannot have a reacting MATL and IGNITION_TEMPERATURE.} \> Section~\ref{info:specified_burning} \\ +336 \> \ct{SURF ... cannot use both ADIABATIC and NET and CONVECTIVE ...} \> Section~\ref{info:adiabatic} \\ +337 \> \ct{SURF ... cannot use both NET and CONVECTIVE_HEAT_FLUX.} \> Section~\ref{info:net_and_convective_heat_flux} \\ +338 \> \ct{SURF ... cannot use TMP_FRONT and NET_HEAT_FLUX.} \> Section~\ref{info:net_and_convective_heat_flux} \\ +339 \> \ct{SURF ... RAMP_T_I cannot be used with HT3D.} \> Section~\ref{info:TMP_INNER} \\ +340 \> \ct{SURF ... RAMP_T_I requires a thermally thick surface.} \> Section~\ref{info:TMP_INNER} \\ +341 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_FRONT_INITIAL.} \> Section~\ref{info:TMP_INNER} \\ +342 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_FRONT.} \> Section~\ref{info:TMP_INNER} \\ +243 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_BACK.} \> Section~\ref{info:TMP_INNER} \\ +344 \> \ct{SURF ... RAMP_T_I cannot be used with TMP_INNER.} \> Section~\ref{info:TMP_INNER} \\ +345 \> \ct{SURF ... VEL_BULK must be less than or equal to VEL.} \> Section~\ref{info:VEL_BULK} \\ +346 \> \ct{SURF ... ZONE ID for LEAK_PATH_ID(1) not found.} \> Section~\ref{info:Leaks} \\ +347 \> \ct{SURF ... ZONE ID for LEAK_PATH_ID(2) not found.} \> Section~\ref{info:Leaks} \\ +348 \> \ct{SURF ... Cannot set the same ZONE for each leakage path.} \> Section~\ref{info:Leaks} \\ +349 \> \ct{SURF ... LEAK_PATH greater than number of ZONEs.} \> Section~\ref{info:Leaks} \\ +350 \> \ct{SURF ... needs a THICKNESS.} \> Section~\ref{info:GEOMETRY} \\ +351 \> \ct{SURF ... needs a LENGTH.} \> Section~\ref{info:GEOMETRY} \\ +352 \> \ct{SURF ... needs a WIDTH.} \> Section~\ref{info:GEOMETRY} \\ +353 \> \ct{PART ... SURF_ID ... not found.} \> Section~\ref{info:PART_GEOMETRY} \\ +354 \> \ct{SURF ... PART_ID ... not found.} \> Section~\ref{info:particle_flux} \\ +355 \> \ct{SURF ... not Cartesian and cannot have a MATL with ...} \> Section~\ref{info:thermal_properties} \\ +356 \> \ct{SURF ... zero emissivity of MATL ... is inconsistent ...} \> Section~\ref{info:thermal_properties} \\ +357 \> \ct{SURF ... has a specified HRRPUA/MLRPUA and a pyrolysis model.} \> Section~\ref{info:gas_burner} \\ +359 \> \ct{SURF ... cannot have a specified velocity or volume flux.} \> Section~\ref{info:gas_burner} \\ +360 \> \ct{SURF ... uses HRRPUA and species ... is the FUEL for ...} \> Section~\ref{info:gas_burner} \\ +361 \> \ct{SURF ... uses HRRPUA and MASS_FRACTION but no REAC ...} \> Section~\ref{info:gas_burner} \\ +362 \> \ct{SURF ... uses MLRPUA and species ... is the FUEL for ...} \> Section~\ref{info:gas_burner} \\ +363 \> \ct{SURF ... uses MLRPUA and MASS_FRACTION but no REAC ...} \> Section~\ref{info:gas_burner} \\ +364 \> \ct{SURF ... cannot specify mass fraction with mass flux ...} \> Section~\ref{info:MASS_FLUX} \\ +365 \> \ct{SURF ... cannot specify mass fraction and outflow velocity.} \> Section~\ref{info:MASS_FLUX} \\ +366 \> \ct{SURF ... cannot leak and specify flow or pyrolysis ...} \> Section~\ref{info:Leaks} \\ +367 \> \ct{SURF ... cannot have both a mass flux and specified velocity.} \> Section~\ref{info:MASS_FLUX} \\ +368 \> \ct{SURF ... has a problem with VARIABLE_THICKNESS or HT3D.} \> Section~\ref{info:HT3D_Limitations} \\ +369 \> \ct{SURF ... cannot have both HT3D and BURN_AWAY.} \> Section~\ref{info:HT3D_Limitations} \\ +370 \> \ct{SURF ... No wall or particle for TGA_ANALYSIS.} \> Section~\ref{tga_analysis} \\ +\> \> \\ +371 \> \ct{Pressure solver ... not known.} \> Section~\ref{optional_pressure_solver} \\ +372 \> \ct{Cannot use FISHPAK_BC for multiple mesh simulations.} \> Section~\ref{sec:periodic} \\ +373 \> \ct{Cannot have FISHPAK_BC>0.} \> Section~\ref{sec:periodic} \\ +374 \> \ct{Numerical Instability - FDS stopped.} \> Section~\ref{info:Errors} \\ +375 \> \ct{OBST ... is VARIABLE_THICKNESS or HT3D and needs a MATL_ID.} \> Section~\ref{info:HT3D_Limitations} \\ +376 \> \ct{Meshes must have the same y/z bounds for TUNNEL_PRECONDITIONER.} \> Section~\ref{tunnel_solver} \\ +377 \> \ct{SURF ... IMPINGING JET model requires ...} \> Section~\ref{info:impinging_jet} \\ +378 \> \ct{SURF ... cannot be applied to a 3-D conducting solid.} \> Section~\ref{info:BACKING} \\ +379 \> \ct{SURF ... NODE_ID does not exist.} \> Section~\ref{info:hvac_geom} \\ +\> \> \\ +381 \> \ct{Need more spectral band limits.} \> Section~\ref{info:RADI_Wide_Band} \\ +382 \> \ct{Spectral band limits should be given in ascending order.} \> Section~\ref{info:RADI_Wide_Band} \\ +\> \> \\ +390 \> \ct{RAMP ... is externally controlled, requires INITIAL_VALUE.} \> Section~\ref{info:external_control} \\ +391 \> \ct{RAMP ... not found.} \> Chapter~\ref{info:RAMP} \\ +392 \> \ct{RAMP ... has only one point.} \> Chapter~\ref{info:RAMP} \\ +393 \> \ct{RAMP ... cannot specify both CTRL_ID and DEVC_ID.} \> Chapter~\ref{info:RAMPDEVC} \\ +394 \> \ct{RAMP ... variable T must be monotonically increasing.} \> Chapter~\ref{info:RAMP} \\ +395 \> \ct{RAMP with EXTERNAL_FILE is present but no EXTERNAL_FILENAME.} \> Section~\ref{info:external_control} \\ +396 \> \ct{Row ... of ... has a bad 1st latitude.} \> Section~\ref{info:spraypattern} \\ +397 \> \ct{Row ... of ... has a bad 2nd latitude.} \> Section~\ref{info:spraypattern} \\ +398 \> \ct{Row ... of ... has a bad 1st longitude.} \> Section~\ref{info:spraypattern} \\ +399 \> \ct{Row ... of ... has a bad 2nd longitude.} \> Section~\ref{info:spraypattern} \\ +400 \> \ct{Row ... of ... has a bad velocity.} \> Section~\ref{info:spraypattern} \\ +401 \> \ct{Row ... of ... has a bad mass flow.} \> Section~\ref{info:spraypattern} \\ +402 \> \ct{Row ... of ... has a bad wavelength.} \> Section~\ref{radiative_part_props} \\ +403 \> \ct{Row ... of ... has a bad real index.} \> Section~\ref{radiative_part_props} \\ +404 \> \ct{Row ... of ... has a bad complex index.} \> Section~\ref{radiative_part_props} \\ +405 \> \ct{RAMP ... CYCLING is only for time RAMPs.} \> Section~\ref{info:RAMP_Time} \\ +407 \> \ct{TABLE ... not found.} \> Section~\ref{info:spraypattern} \\ +\> \> \\ +421 \> \ct{SURF ... cannot be applied to a thin obstruction ...} \> Section~\ref{info:thin_obstructions} \\ +422 \> \ct{VENT ... cannot be applied to a thin obstruction ...} \> Section~\ref{info:thin_obstructions} \\ +423 \> \ct{HT3D solid must have at least one face exposed ...} \> Section~\ref{info:HT3D_Limitations} \\ +424 \> \ct{HT3D thin solid must have at least one face exposed ...} \> Section~\ref{info:HT3D_Limitations} \\ +425 \> \ct{MESH ... can stretch in at most 2 coordinate directions.} \> Section~\ref{info:TRNX} \\ +426 \> \ct{MESH ... Poisson initialization error: ...} \> Section~\ref{info:Errors} \\ +427 \> \ct{DEVC ... requires repositioning.} \> Section~\ref{info:DEVC_position} \\ +428 \> \ct{DEVC ... must be associated with a heat-conducting surface.} \> Section~\ref{info:solidoutputquantities} \\ +429 \> \ct{PROF ... requires repositioning.} \> Section~\ref{info:PROF} \\ +430 \> \ct{PROF ... must be associated with a heat-conducting surface.} \> Section~\ref{info:solidoutputquantities} \\ +431 \> \ct{MESH ... is not in alignment with MESH ...} \> Section~\ref{info:mesh_alignment} \\ +432 \> \ct{SURF ... must specify velocity boundary condition ...} \> Section~\ref{info:MASS_FLUX} \\ +433 \> \ct{SURF ... cannot be applied below GROUND_LEVEL.} \> Section~\ref{info:wall_of_wind} \\ +434 \> \ct{RAMP_V_X assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ +435 \> \ct{RAMP_V_Y assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ +436 \> \ct{RAMP_V_Z assigned to SURF ...} \> Section~\ref{info:RAMP_Vel_Prof} \\ +437 \> \ct{SURF ... cannot be applied to an exterior boundary.} \> Section~\ref{info:HT3D_Limitations} \\ +438 \> \ct{SURF ... layers are thicker than the underlying obstruction.} \> Section~\ref{info:linings} \\ +439 \> \ct{MESH ... UVWFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ +440 \> \ct{MESH ... TMPFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ +441 \> \ct{MESH ... SPECFILE ... does not exist.} \> Section~\ref{info:CSVF} \\ +442 \> \ct{SURF ... has more RAMP_Q than REFERENCE_HEAT_FLUX.} \> Section~\ref{info:scaled_burning} \\ +443 \> \ct{SURF ... has more REFERENCE_HEAT_FLUX than RAMP_Q.} \> Section~\ref{info:scaled_burning} \\ +444 \> \ct{SURF ... If one REFERENCE_THICKNESS is set, all must be set.} \> Section~\ref{info:scaled_burning} \\ +445 \> \ct{SURF ... REFERENCE_HEAT_FLUX values must increase} \> Section~\ref{info:scaled_burning} \\ +\> \ct{for each thickness.} \\ +446 \> \ct{SURF REFERENCE_THICKNESS values must increase for each} \> Section~\ref{info:scaled_burning} \\ +\> \ct{new group of REFERENCE_HEAT_FLUX.} \\ +447 \> \ct{RAMP ... used with REFERENCE_HEAT_FLUX must start at T = 0.} \> Section~\ref{info:scaled_burning} \\ +448 \> \ct{PROF ... MATL_ID ... not a part of surface type ...} \> Section~\ref{info:PROF} \\ +\> \> \\ +501 \> \ct{No ID provided ...} \> Section~\ref{info:HVAC} \\ +502 \> \ct{Invalid TYPE_ID provided ...} \> Section~\ref{info:HVAC} \\ +503 \> \ct{Must have both DUCTs and NODEs in the input file.} \> Section~\ref{info:HVAC} \\ +504 \> \ct{Duct has no ID ...} \> Section~\ref{info:HVAC} \\ +505 \> \ct{Duct has no AREA, DIAMETER, or PERIMETER ...} \> Section~\ref{info:HVACduct} \\ +506 \> \ct{Duct without AREA has no DIAMETER ...} \> Section~\ref{info:HVACduct} \\ +507 \> \ct{If both ROUND and SQUARE are FALSE, Duct with DIAMETER must} \> Section~\ref{info:HVACduct} \\ +\> \ct{also have PERIMETER ...} \\ +508 \> \ct{Duct cannot input both PERIMETER and DIAMETER with AREA ...} \> Section~\ref{info:HVACduct} \\ +509 \> \ct{Can only specify one of CTRL_ID or DEVC_ID. ...} \> Section~\ref{info:HVACduct} \\ +510 \> \ct{Duct can only have one of damper, fan or aircoil ...} \> Section~\ref{info:HVACduct} \\ +511 \> \ct{Duct has fan specified but no fans have been defined ...} \> Section~\ref{info:HVACduct} \\ +512 \> \ct{Duct has both MASS_FLOW and VOLUME_FLOW defined ...} \> Section~\ref{info:HVACduct} \\ +513 \> \ct{Ductnode has no ID ...} \> Section~\ref{info:HVAC} \\ +514 \> \ct{Ambient or internal ductnode requires an elevation, XYZ(3) ...} \> Section~\ref{info:HVACnode} \\ +515 \> \ct{Non-AMBIENT or non VENT-connected ductnode needs >=2 ducts} \> Section~\ref{info:HVACnode} \\ +516 \> \ct{AMBIENT or VENT-connected ductnode must have 1 duct ...} \> Section~\ref{info:HVACnode} \\ +517 \> \ct{No ducts specified for ductnode ...} \> Section~\ref{info:HVACnode} \\ +518 \> \ct{Ductnode with a filter must have 2 ducts ...} \> Section~\ref{info:HVACfilter} \\ +519 \> \ct{Fan has no ID ...} \> Section~\ref{info:HVAC} \\ +520 \> \ct{FAN can only be one of constant volume, quadratic or ramp ...} \> Section~\ref{info:HVACfan} \\ +521 \> \ct{IF one of MAX_PRESSURE or MAX_FLOW given, both must be} \> Section~\ref{info:HVACfan}\\ +\> \ct{specified ...} \\ +522 \> \ct{MAX_PRESSURE must be > 0 ...} \> Section~\ref{info:HVACfan} \\ +523 \> \ct{MAX_FLOW must be > 0 ...} \> Section~\ref{info:HVACfan} \\ +524 \> \ct{Filter has no ID ...} \> Section~\ref{info:HVAC} \\ +525 \> \ct{Problem with filter ... SPEC ... not found} \> Section~\ref{info:HVACfilter} \\ +526 \> \ct{Aircoil has no ID ...} \> Section~\ref{info:HVAC} \\ +527 \> \ct{Localized leakage has no ID ...} \> Section~\ref{info:local_leakage} \\ +528 \> \ct{Leakage path must have VENT_ID defined ...} \> Section~\ref{info:local_leakage} \\ +529 \> \ct{Leakage to AMBIENT must have VENT2_ID for the AMBIENT node ...} \> Section~\ref{info:local_leakage} \\ +530 \> \ct{Leakage path must have VENT2_ID defined ...} \> Section~\ref{info:local_leakage} \\ +531 \> \ct{Leakage has no AREA ...} \> Section~\ref{info:local_leakage} \\ +532 \> \ct{Can only have one HVAC input with TYPE_ID of} \> Section~\ref{info:hvacoutputquantities} \\ +\> \ct{DUCT QUANTITY LIST ...} \\ +533 \> \ct{Can only have one HVAC input with TYPE_ID of} \> Section~\ref{info:hvacoutputquantities} \\ +\> \ct{NODE QUANTITY LIST ...} \\ +534 \> \ct{Both nodes have the same ID ...} \> Section~\ref{info:HVACduct} \\ +535 \> \ct{Two ducts with the same ID ...} \> Section~\ref{info:HVAC} \\ +536 \> \ct{Duct ... Node ... does not contain the duct in its duct list.} \> Section~\ref{info:HVACnode} \\ +537 \> \ct{... ductnode not located for duct} \> Section~\ref{info:HVACduct} \\ +538 \> \ct{Fan not located ...} \> Section~\ref{info:HVACduct} \\ +539 \> \ct{Aircoil not located ...} \> Section~\ref{info:HVACduct} \\ +540 \> \ct{Two duct nodes with the same ID ...} \> Section~\ref{info:HVAC} \\ +541 \> \ct{VENT for ductnode has a DEVC_ID or CTRL_ID ...} \> Section~\ref{info:HVACnode} \\ +542 \> \ct{Ductnode attached to VENT without SURF_ID HVAC ...} \> Section~\ref{info:HVACnode} \\ +543 \> \ct{Cannot leak and specify flow or pyrolysis at the same time ...} \> Section~\ref{info:local_leakage} \\ +544 \> \ct{Cannot specify custom leakage and zone leakage with the same} \> Section~\ref{info:local_leakage} \\ +\> \ct{surface ...} \\ +545 \> \ct{Cannot find VENT_ID: ... for Ductnode: ...} \> Section~\ref{info:HVACnode} \\ +546 \> \ct{Ductnode cannot be AMBIENT and have an assigned VENT_ID} \> Section~\ref{info:HVACnode} \\ +547 \> \ct{Internal ductnode must have at least two attached ducts ...} \> Section~\ref{info:HVACnode} \\ +548 \> \ct{External ductnode can only have one attached duct. Ductnode: ...} \> Section~\ref{info:HVACnode} \\ +559 \> \ct{Duct ... not found. Ductnode: ... Ductnode ID: ...} \> Section~\ref{info:HVACnode} \\ +550 \> \ct{Duct: ... does not contain Ductnode: ...} \> Section~\ref{info:HVACduct} \\ +551 \> \ct{Problem with ductnode: ... FILTER ... not found} \> Section~\ref{info:HVACfilter} \\ +552 \> \ct{Ductnode must lie with a single pressure zone. Node: ...} \> Section~\ref{info:HVACnode} \\ +553 \> \ct{Cannot specify fixed flows for all branches of internal} \> Section~\ref{info:hvacspecified} \\ +\> \ct{ductnode ...} \\ +554 \> \ct{Duct has no LENGTH and one node lacks an XYZ. Duct: ...} \> Section~\ref{info:HVACduct} \\ +555 \> \ct{Problem with HVAC network. Insufficient LOSS definitions for} \> Section~\ref{info:hvacspecified}\\ +\> \ct{DUCTs and NODEs} \\ +556 \> \ct{Duct ... has N_CELLS=0 and is in a duct run with ducts that} \> Section~\ref{info:hvacmasstransport}\\ +\> \ct{have N_CELLS>0.} \\ +557 \> \ct{SPEC_ID ... is not explicitly specified for QUANTITY ...} \> Section~\ref{info:hvacoutputquantities} \\ +558 \> \ct{Output QUANTITY ... requires a SPEC_ID} \> Section~\ref{info:hvacoutputquantities} \\ +559 \> \ct{Output QUANTITY ... SPEC_ID ... not found} \> Section~\ref{info:hvacoutputquantities} \\ +560 \> \ct{HVAC_SMV QUANTITY ... not appropriate for .hvac file.} \> Section~\ref{info:hvacoutputquantities} \\ +561 \> \ct{HVAC_SMV QUANTITY ... not found} \> Section~\ref{info:hvacoutputquantities} \\ +562 \> \ct{VENT ID ... used for localized leakage has SURF_ID HVAC.} \> Section~\ref{info:local_leakage} \\ +563 \> \ct{VENT ID ... used for localized leakage has a DEVC_ID or CTRL_ID.} \> Section~\ref{info:local_leakage} \\ +564 \> \ct{VENT: ... is used for HVAC and attached to a removable OBST.} \> Section~\ref{info:HVACnode} \\ +565 \> \ct{REAC: ... FALLOFF-LINDEMANN reactions must have A_LOW_PR and} \> Section~\ref{info:falloff_reactions} \\ +\> \ct{E_LOW_PR} \\ +566 \> \ct{REAC: ... FALLOFF-TROE reactions must have A_LOW_PR, E_LOW_PR,} \> Section~\ref{info:falloff_reactions} \\ +\> \ct{A_TROE, T1_TROE, and T3_TROE.} \\ +567 \> \ct{REAC: ... Tracked species ... used in a finite rate reaction} \> Section~\ref{info:finite} \\ +\> \ct{without N_S defined is not a primitive species.} \\ +568 \> \ct{Ductnode with GEOM cannot have a VENT_ID. Ductnode ID:...} \> Section~\ref{info:hvac_geom} \\ +569 \> \ct{Ductnode with one duct needs either AMBIENT, GEOM, or VENT_ID.} \> Section~\ref{info:hvac_geom} \\ +\> \ct{ Ductnode ID:...} \\ +570 \> \ct{Problem with ductnode:..., cannot assign to both VENT and GEOM.} \> Section~\ref{info:hvac_geom} \\ +571 \> \ct{VENT_ID for leakage cannot be AMBIENT if GEOM is set. Leak ID:...} \> Section~\ref{info:hvac_geom} \\ +572 \> \ct{VENT2_ID for leakage cannot be AMBIENT if GEOM2 is set. Leak ID:...}\> Section~\ref{info:hvac_geom} \\ +573 \> \ct{Ductnode:...,Ductnode ID:... defined with GEOM had no CFACE found.}\> Section~\ref{info:hvac_geom} \\ +\> \> \\ +601 \> \ct{OBST ... MULT_ID ... not found.} \> Section~\ref{info:MULT} \\ +602 \> \ct{OBST ... SHAPE requires RADIUS.} \> Section~\ref{info:multobst} \\ +603 \> \ct{OBST ... SHAPE requires HEIGHT.} \> Section~\ref{info:multobst} \\ +604 \> \ct{OBST ... BOX SHAPE requires LENGTH, WIDTH, HEIGHT.} \> Section~\ref{info:multobst} \\ +605 \> \ct{SURF_ID ... does not exist.} \> Section~\ref{info:OBST_Basics} \\ +606 \> \ct{SURF_ID_INTERIOR ... does not exist.} \> Section~\ref{info:BURN_AWAY} \\ +607 \> \ct{OBST ... needs a BULK_DENSITY if it is to BURN_AWAY.} \> Section~\ref{info:BURN_AWAY} \\ +608 \> \ct{MATL_ID ... not found.} \> Section~\ref{info:ht1d} \\ +609 \> \ct{MULT_ID ... not found on HOLE line ...} \> Section~\ref{info:MULT} \\ +610 \> \ct{HOLE ... Cannot overlap HOLEs with a DEVC or CTRL_ID.} \> Section~\ref{info:HOLE} \\ +611 \> \ct{OBST ... has a BULK_DENSITY but zero volume.} \> Section~\ref{info:BURN_AWAY} \\ +612 \> \ct{OBST ... must have a volume to be assigned HT3D.} \> Section~\ref{checkerboard} \\ +614 \> \ct{OBST_ID ... cannot have a SURF with NODE_ID} \> Section~\ref{info:hvac_geom} \\ +615 \> \ct{OBST ... cannot overlap OBST ...} \> Section~\ref{info:OVERLAY} \\ +\> \> \\ +701 \> \ct{problem with GEOM, local SURF_ID index ... out of bounds.} \> Section~\ref{info:GEOM_Basics} \\ +702 \> \ct{problem with GEOM, SURF_IDS not defined properly.} \> Section~\ref{info:first_geom} \\ +703 \> \ct{missing SURF_ID in \&GEOM line ...} \> Section~\ref{subsec:readbin} \\ +704 \> \ct{problem with GEOM, number of surfaces in SURF_ID field ...} \> Section~\ref{subsec:readbin} \\ +705 \> \ct{could not read binary connectivity for GEOM ...} \> Section~\ref{subsec:readbin} \\ +706 \> \ct{GEOM Expected ... Z values, found ...} \> Section~\ref{info:terrain_geom} \\ +707 \> \ct{GEOM IJK(1) and IJK(2) on \&GEOM line needs to be at least 2.} \> Section~\ref{info:terrain_geom} \\ +708 \> \ct{GEOM At least 4 XB values ... required when using ZVALS.} \> Section~\ref{info:terrain_geom} \\ +709 \> \ct{For terrain GEOM, unconnected boundary edge at node number ...} \> Section~\ref{info:terrain_geom} \\ +710 \> \ct{For terrain GEOM, unconnected boundary edge at nodes ...} \> Section~\ref{info:terrain_geom} \\ +711 \> \ct{For terrain GEOM, same boundary vertex ...} \> Section~\ref{info:terrain_geom} \\ +712 \> \ct{For extruded Polygon GEOM, extrusion distance ...} \> Section~\ref{info:extrpolys} \\ +713 \> \ct{For extruded Polygon GEOM, Number of POLY indexes ...} \> Section~\ref{info:extrpolys} \\ +714 \> \ct{For extruded Polygon GEOM, Repeated vertex ...} \> Section~\ref{info:extrpolys} \\ +715 \> \ct{For extruded Polygon GEOM, Vertices X, Y have same position.} \> Section~\ref{info:extrpolys} \\ +716 \> \ct{problem with GEOM, the surface ID, is not defined.} \> Section~\ref{info:GEOM_Basics} \\ +717 \> \ct{problem with GEOM, vertex index out of bounds.} \> Section~\ref{info:GEOM_Basics} \\ +718 \> \ct{Out of Bounds.GEOM, FACE=, has vertex index I less than 1.} \> Section~\ref{info:GEOM_Basics} \\ +719 \> \ct{Out of Bounds.GEOM, FACE=, has vertex index I higher than ...} \> Section~\ref{info:GEOM_Basics} \\ +720 \> \ct{GEOM has currently unsupported BURN_AWAY feature ...} \> Section~\ref{info:geom_limitations} \\ +721 \> \ct{For extruded Polygon GEOM, Node I not in the plane of ...} \> Section~\ref{info:extrpolys} \\ +722 \> \ct{GEOM Segments ... intersect in average POLY plane.} \> Section~\ref{info:extrpolys} \\ +723 \> \ct{For extruded Polygon GEOM, Not enough valid vertices ...} \> Section~\ref{info:extrpolys} \\ +724 \> \ct{For extruded Polygon GEOM, Could not triangulate polygon.} \> Section~\ref{info:extrpolys} \\ +725 \> \ct{\&GEOM, MOVE_ID is not recognized.} \> Section~\ref{info:transform_geom} \\ +726 \> \ct{GEOM ID Unknown: Face normals are probably pointing in ...} \> Section~\ref{info:GEOM_Basics} \\ +727 \> \ct{GEOM ID=, Edge length too small at ...} \> Section~\ref{triangulated_surfaces_quality} \\ +728 \> \ct{GEOM ID=, Face area too small at ...} \> Section~\ref{triangulated_surfaces_quality} \\ +729 \> \ct{GEOM ID=, Geometry volume too small.} \> Section~\ref{triangulated_surfaces_quality} \\ +730 \> \ct{GEOM ID=, Open geometry at edge with nodes ...} \> Section~\ref{triangulated_surfaces_quality} \\ +731 \> \ct{GEOM ID=, Non manifold geometry in adjacent faces at edge ...} \> Section~\ref{triangulated_surfaces_quality} \\ +732 \> \ct{GEOM ID=, Opposite normals on triangles sharing edge with ...} \> Section~\ref{triangulated_surfaces_quality} \\ +733 \> \ct{GEOM ID=, Open geometry at edge with nodes ...} \> Section~\ref{triangulated_surfaces_quality} \\ +734 \> \ct{Mismatched mesh boundary location between meshes ...} \> Section~\ref{info:GEOM_Basics} \\ +\> \> \\ +801 \> \ct{VENT ... cannot use MULT_ID because it involves HVAC.} \> Section~\ref{info:HVAC} \\ +802 \> \ct{VENT ... needs an explicit ID because it involves HVAC.} \> Section~\ref{info:HVAC} \\ +803 \> \ct{VENT ... cannot use MULT_ID because it uses PBX, PBY or PBZ.} \> Section~\ref{info:MULT} \\ +804 \> \ct{VENT ... should use PBX, PBY, PBZ or XB if it is PERIODIC.} \> Section~\ref{sec:periodic} \\ +805 \> \ct{VENT ... cannot use MULT_ID because it uses MB.} \> Section~\ref{info:MULT} \\ +806 \> \ct{VENT ... must set MB to XMIN, XMAX, YMIN, YMAX, ZMIN, or ZMAX.} \> Section~\ref{info:VENT_Basics} \\ +807 \> \ct{VENT ... cannot use MULT_ID because it uses DB.} \> Section~\ref{info:MULT} \\ +808 \> \ct{VENT ... must set DB to XMIN, XMAX, YMIN, YMAX, ZMIN, or ZMAX.} \> Section~\ref{info:VENT_Basics} \\ +809 \> \ct{VENT ... cannot be specified on a y boundary in a 2D calc.} \> Section~\ref{info:2D} \\ +810 \> \ct{VENT ... must be a plane.} \> Section~\ref{info:VENT_Basics} \\ +811 \> \ct{VENT ... MULT_ID ... not found.} \> Section~\ref{info:MULT} \\ +812 \> \ct{VENT ... SURF_ID ... not found.} \> Section~\ref{info:VENT_Basics} \\ +813 \> \ct{VENT ... cannot be controlled by a device.} \> Section~\ref{info:Special_VENTS} \\ +814 \> \ct{VENT ... requires center point XYZ.} \> Section~\ref{sec:circvents} \\ +815 \> \ct{VENT ... L_EDDY = 0 in Synthetic Eddy Method.} \> Section~\ref{info:synthetic_turbulence} \\ +816 \> \ct{VENT ... VEL_RMS = 0 in Synthetic Eddy Method.} \> Section~\ref{info:synthetic_turbulence} \\ +817 \> \ct{VENT ... Synthetic Eddy Method not permitted with HVAC.} \> Section~\ref{info:synthetic_turbulence} \\ +818 \> \ct{VENT ... is not attached or may require ...} \> Section~\ref{info:VENT_Trouble} \\ +819 \> \ct{VENT ... is OPEN, MIRROR OR PERIODIC ... exterior boundary.} \> Section~\ref{info:Special_VENTS} \\ +820 \> \ct{VENT ... is not attached to any solid surface.} \> Section~\ref{info:VENT_Basics} \\ +821 \> \ct{VENT ... cannot have normal component of UVW equal to 0.} \> Section~\ref{info:HVAClouvers} \\ +822 \> \ct{VENT ... has the same ID as another VENT.} \> Section~\ref{info:HVAC} \\ +823 \> \ct{VENT ... cannot have SURF_ID=HVAC and GEOM=T.} \> Section~\ref{info:hvac_geom} \\ +\> \> \\ +841 \> \ct{INIT ... has an unknown MULT_ID ...} \> Section~\ref{info:MULT} \\ +842 \> \ct{INIT ... cannot have both MASS and VOLUME_FRACTION.} \> Section~\ref{info:init_species} \\ +843 \> \ct{INIT ... requires a PART_ID.} \> Section~\ref{info:initial_droplets} \\ +844 \> \ct{INIT ... requires a SPEC_ID.} \> Section~\ref{info:init_species} \\ +845 \> \ct{INIT ... cannot find SPEC_ID ...} \> Section~\ref{info:init_species} \\ +846 \> \ct{INIT ... cannot have sum of specified mass fractions > 1.} \> Section~\ref{info:init_species} \\ +847 \> \ct{INIT ... cannot use background species for MASS_FRACTION.} \> Section~\ref{info:init_species} \\ +848 \> \ct{INIT ... cannot use N_PARTICLES and N_PARTICLES_PER_CELL.} \> Section~\ref{info:initial_droplets} \\ +849 \> \ct{INIT ... XB has no volume.} \> Section~\ref{info:init_species} \\ +850 \> \ct{INIT ... cannot find PART_ID ...} \> Section~\ref{info:initial_droplets} \\ +851 \> \ct{INIT ... requires N_PARTICLES=1 for a PATH_RAMP.} \> Section~\ref{info:path_ramp} \\ +852 \> \ct{INIT ... PATH_RAMP(N) not found.} \> Section~\ref{info:path_ramp} \\ +853 \> \ct{INIT ... ORIENTATION_RAMP(N) not found.} \> Section~\ref{info:path_ramp} \\ +854 \> \ct{INIT ... ORIENTATION_RAMP components must all be defined.} \> Section~\ref{info:path_ramp} \\ +855 \> \ct{INIT ... DEVC_ID ... cannot use a SPATIAL_STATISTIC.} \> Section~\ref{info:initial_droplets} \\ +856 \> \ct{The INIT_ID for DEVC ... cannot be found.} \> Section~\ref{info:PART_SURF} \\ +857 \> \ct{INIT ... PARTicle class ... requires a density.} \> Section~\ref{info:initial_droplets} \\ +858 \> \ct{INIT ... PARTicle class ... requires a ...} \> Section~\ref{info:initial_droplets} \\ +\> \> \\ +871 \> \ct{LEAK_AREA specified twice for ZONE ... and ...} \> Section~\ref{info:Leaks} \\ +872 \> \ct{ZONE ... overlaps ZONE ... in MESH ...} \> Section~\ref{info:ZONE_Basics} \\ +873 \> \ct{ZONE ... meets ZONE ... at the boundary of MESH ...} \> Section~\ref{info:ZONE_Basics} \\ +\> \> \\ +881 \> \ct{DEVC ... has QUANTITY_RANGE(2) <= QUANTITY_RANGE(1).} \> Section~\ref{info:statistics} \\ +882 \> \ct{DEVC ... MOVE_ID is not recognized.} \> Section~\ref{info:MOVE_ID} \\ +883 \> \ct{DEVC ... must have coordinates given in terms of XBP.} \> Section~\ref{info:line_file} \\ +884 \> \ct{DEVC ... components of ORIENTATION are all zero.} \> Section~\ref{info:DEVC} \\ +885 \> \ct{DEVC ... must have coordinates, even if not a point quantity.} \> Section~\ref{info:DEVC} \\ +886 \> \ct{DEVC ... must have either an output QUANTITY or PROP_ID.} \> Section~\ref{info:DEVC} \\ +887 \> \ct{DEVC ... must have an ORIENTATION.} \> Section~\ref{info:heat_flux} \\ +\> \> or Section~\ref{info:bidir_probe} \\ +888 \> \ct{DEVC ... TEMPORAL_STATISTIC is not recognized.} \> Section~\ref{info:statistics} \\ +889 \> \ct{DEVC ... SPATIAL_STATISTIC is not recognized.} \> Section~\ref{info:statistics} \\ +890 \> \ct{DEVC ... STATISTICS is not recognized.} \> Section~\ref{info:statistics} \\ +891 \> \ct{DEVC ... HVAC outputs specified with no HVAC inputs.} \> Section~\ref{info:HVAC} \\ +892 \> \ct{DEVC ... or PROP ... must have a QUANTITY.} \> Section~\ref{info:HVAC} \\ +893 \> \ct{DEVC ... QUANTITY ... requires XB coordinates.} \> Section~\ref{info:statistics} \\ +894 \> \ct{DEVC ... uses invalid solid phase SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ +895 \> \ct{DEVC ... uses invalid gas phase SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ +896 \> \ct{DEVC ... requires XB for SPATIAL_STATISTIC.} \> Section~\ref{info:statistics} \\ +897 \> \ct{DEVC ... NODE 1 = NODE 2.} \> Section~\ref{info:hvacoutputquantities} \\ +898 \> \ct{DEVC ... should not use XYZ or XB for an HVAC output QUANTITY.} \> Section~\ref{info:hvacoutputquantities} \\ +899 \> \ct{DEVC ... ID should not contain a comma.} \> Section~\ref{info:DEVC} \\ +\> \> \\ +901 \> \ct{CTRL ... must have a FUNCTION_TYPE.} \> Section~\ref{info:basic_control} \\ +902 \> \ct{CTRL ... PID controller must be given a TARGET_VALUE.} \> Section~\ref{info:CONTROL_PID} \\ +903 \> \ct{CTRL ... FUNCTION_TYPE not recognized.} \> Section~\ref{info:CTRL} \\ +904 \> \ct{CTRL ... FUNCTION_TYPE=EXTERNAL but no EXTERNAL_FILENAME given.} \> Section~\ref{info:external_control} \\ +905 \> \ct{CTRL ... must have at least one input.} \> Section~\ref{info:CTRL} \\ +906 \> \ct{CTRL ... must have only one input.} \> Section~\ref{info:CTRL} \\ +907 \> \ct{CTRL ... cannot use a CONSTANT INPUT_ID.} \> Section~\ref{info:CTRL} \\ +908 \> \ct{CTRL ... must have at least two inputs.} \> Section~\ref{info:CTRL} \\ +909 \> \ct{CTRL ... must have only two inputs.} \> Section~\ref{info:CTRL} \\ +910 \> \ct{CTRL ... cannot use a control function as an input to itself.} \> Section~\ref{info:CTRL} \\ +911 \> \ct{CTRL ... can only specify one input as a constant value.} \> Section~\ref{info:CONTROL_MATH} \\ +912 \> \ct{CTRL ... has no CONSTANT specified.} \> Section~\ref{info:CONTROL_MATH} \\ +913 \> \ct{CTRL ... uses PERCENTILE and must have a DEVC as input.} \> Section~\ref{info:PERCENTILE} \\ +914 \> \ct{CTRL ... is CUSTOM and must have a DEVC or math CTRL as input.} \> Section~\ref{info:CUSTOM} \\ +915 \> \ct{CTRL ... input ... is the ID for both a DEVC and a CTRL.} \> Section~\ref{info:CTRL} \\ +916 \> \ct{CTRL ... cannot locate INPUT_ID ...} \> Section~\ref{info:CTRL} \\ +\> \> \\ +931 \> \ct{DEVC ... is a smoke detector and must have a PROP_ID.} \> Section~\ref{info:smoke_detector} \\ +932 \> \ct{DEVC ... is a smoke detector and requires a smoke source.} \> Section~\ref{info:smoke_detector} \\ +933 \> \ct{DEVC ... must have a PROP_ID.} \> Section~\ref{info:sprinklers} \\ +934 \> \ct{DEVC ... PROP ... needs an ACTIVATION_TEMPERATURE.} \> Section~\ref{info:sprinklers} \\ +935 \> \ct{DEVC ... is a THERMOCOUPLE and cannot use SPATIAL_STATISTIC.} \> Section~\ref{info:THERMOCOUPLE} \\ +936 \> \ct{DEVC ... must have a MATL_ID.} \> Section~\ref{info:DEPTH} \\ +937 \> \ct{DEVC ... is partially outside of the domain.} \> Section~\ref{info:layerheight} \\ +938 \> \ct{DEVC ... CTRL_ID ... does not exist.} \> Section~\ref{info:RAMPDEVC} \\ +939 \> \ct{DEVC ... CTRL_ID ... is a logic only function ...} \> Section~\ref{info:RAMPDEVC} \\ +940 \> \ct{DEVC ... must use QUANTITY='DENSITY' and a SPEC_ID.} \> Section~\ref{info:aspiration_detector} \\ +941 \> \ct{DEVC ... must be listed after all of its inputs.} \> Section~\ref{info:aspiration_detector} \\ +942 \> \ct{DEVC ... is a FED detector and requires an activity.} \> Section~\ref{info:FED} \\ +943 \> \ct{DEVC ... is a PATCH and needs a DEVC_ID to control it.} \> Section~\ref{info:velocity_patch} \\ +\> \> \\ +951 \> \ct{PROF ... requires an orientation index, IOR.} \> Section~\ref{info:PROF} \\ +952 \> \ct{PROF ... is not valid.} \> Section~\ref{info:PROF} \\ +953 \> \ct{PROF ... requires a PART_ID.} \> Section~\ref{info:PROF} \\ +954 \> \ct{PROF ... MATL_ID ... not found.} \> Section~\ref{info:PROF} \\ +\> \> \\ +961 \> \ct{CELL_CENTERED not allowed with AGL_SLICE.} \> Section~\ref{info:complex_terrain} \\ +962 \> \ct{BNDF ... CPUA_Z, MPUA_Z, and AMPUA_Z require liquid droplets.} \> Section~\ref{bucket_test_1} \\ +\> \> \\ +1001 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. must be a tracked species.} \> Section~\ref{info:soot} \\ +1002 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. cannot be a lumped species.} \> Section~\ref{info:soot} \\ +1003 \> \ct{SPEC_ID ... for AERO. VOL. FRAC. is not an AEROSOL.} \> Section~\ref{info:soot} \\ +1004 \> \ct{SPEC_ID ... is not explicitly specified for QUANTITY ...} \> Section~\ref{info:gasoutputquantities} \\ +1005 \> \ct{Output QUANTITY ... requires a DUCT_ID.} \> Section~\ref{info:hvacoutputquantities} \\ +1006 \> \ct{CELL_L used for output QUANTITY ... is outside of DUCT_ID ...} \> Section~\ref{info:hvacoutputquantities} \\ +1007 \> \ct{SPEC_ID ... for FILTER LOADING is not a tracked species.} \> Section~\ref{info:hvacoutputquantities} \\ +1008 \> \ct{SPEC_ID ... for EQUIL. VAP. FRAC. is not a tracked species.} \> Section~\ref{info:hvacoutputquantities} \\ +1009 \> \ct{SPEC_ID ... for EQUIL. VAP. FRAC. is not an evap. species.} \> Section~\ref{info:hvacoutputquantities} \\ +1010 \> \ct{REAC ... MIXTURE FRACTION requires reaction A + B -> C.} \> Section~\ref{info:gasoutputquantities} \\ +1011 \> \ct{HRRPUV REAC requires a REAC_ID.} \> Section~\ref{info:gasoutputquantities} \\ +1012 \> \ct{REAC_ID ... not found for HRRPUV REAC.} \> Section~\ref{info:gasoutputquantities} \\ +1013 \> \ct{Output QUANTITY2 ... requires a SPEC_ID.} \> Section~\ref{info:gasoutputquantities} \\ +1014 \> \ct{Output QUANTITY2 ... needs to be a SLCF appropriate quantity.} \> Section~\ref{info:gasoutputquantities} \\ +1015 \> \ct{Output QUANTITY ... requires a QUANTITY2.} \> Section~\ref{info:gasoutputquantities} \\ +1016 \> \ct{Output QUANTITY ... requires a SPEC_ID.} \> Section~\ref{info:gasoutputquantities} \\ +1017 \> \ct{Output QUANTITY ... SPEC_ID ... not found.} \> Section~\ref{info:gasoutputquantities} \\ +1018 \> \ct{Output QUANTITY ... requires a MATL_ID.} \> Section~\ref{info:solidoutputquantities} \\ +1019 \> \ct{Output QUANTITY ... MATL_ID ... not found.} \> Section~\ref{info:solidoutputquantities} \\ +1020 \> \ct{Output QUANTITY ... requires a PART_ID.} \> Section~\ref{info:gasoutputquantities} \\ +1021 \> \ct{Output QUANTITY ... PART_ID ... not found.} \> Section~\ref{info:gasoutputquantities} \\ +1022 \> \ct{Output QUANTITY ... requires a DUCT_ID.} \> Section~\ref{info:hvacoutputquantities} \\ +1023 \> \ct{Output QUANTITY ... DUCT_ID ... not found.} \> Section~\ref{info:hvacoutputquantities} \\ +1024 \> \ct{Output QUANTITY ... requires a positive CELL_L.} \> Section~\ref{info:hvacoutputquantities} \\ +1025 \> \ct{Output QUANTITY ... DUCT_ID ... requires pos. CELL_L.} \> Section~\ref{info:hvacoutputquantities} \\ +1026 \> \ct{Output QUANTITY ... DUCT_ID ... requires HVAC_MASS_TRAN.} \> Section~\ref{info:hvacoutputquantities} \\ +1027 \> \ct{Output QUANTITY ... requires a NODE_ID'} \> Section~\ref{info:hvacoutputquantities} \\ +1028 \> \ct{Output QUANTITY ... NODE_ID ... not found.} \> Section~\ref{info:hvacoutputquantities} \\ +1029 \> \ct{HUMIDITY requires SPEC_ID WATER VAPOR.} \> Section~\ref{info:humidity} \\ +1030 \> \ct{DIFFUSIVITY requires a tracked SPEC_ID when using DNS.} \> Section~\ref{info:diffusivity} \\ +1031 \> \ct{BACKGROUND species inappropriate for deposition.} \> Section~\ref{info:deposition} \\ +1032 \> \ct{SPEC_ID ... for SURF. DEP. is not an aerosol species.} \> Section~\ref{info:deposition} \\ +1033 \> \ct{SPEC_ID ... for SURF. DEP. is not an aerosol tracked species.} \> Section~\ref{info:deposition} \\ +1034 \> \ct{QUANTITY ... requires liquid droplets.} \> Section~\ref{info:solidoutputquantities} \\ +1035 \> \ct{QUANTITY ... is not appropriate for SLCF.} \> Section~\ref{info:gasoutputquantities} \\ +1036 \> \ct{QUANTITY ... is not appropriate for DEVC.} \> Section~\ref{info:gasoutputquantities} \\ +1037 \> \ct{QUANTITY ... is not a particle output QUANTITY.} \> Section~\ref{info:particleoutputquantities} \\ +1038 \> \ct{QUANTITY ... is not appropriate for BNDF.} \> Section~\ref{info:solidoutputquantities} \\ +1039 \> \ct{QUANTITY ... is not appropriate for isosurface.} \> Section~\ref{info:gasoutputquantities} \\ +1040 \> \ct{QUANTITY ... is not appropriate for gas phase.} \> Section~\ref{info:gasoutputquantities} \\ +1041 \> \ct{QUANTITY ... is not appropriate for Plot3D.} \> Section~\ref{info:gasoutputquantities} \\ +1042 \> \ct{QUANTITY ... not found.} \> Section~\ref{info:gasoutputquantities} \\ +1043 \> \ct{PROP_ID ... not found.} \> Section~\ref{info:THERMOCOUPLE} \\ +1044 \> \ct{Cannot set EXTERNAL_FILE=T for a RAMP used for an output clock ...} \> Section~\ref{info:external_control} \\ +1045 \> \ct{QUANTITY ... requires a PART_ID for particles with mass.} \> Section~\ref{tab:particleoutputquantities} \\ +\\ +1050 \> \ct{The file ... does not exist. Set RESTART=.FALSE.} \> Section~\ref{info:restart} \\ +1051 \> \ct{RESTART initial time equals T_END.} \> Section~\ref{info:restart} \\ +1052 \> \ct{On TIME, do not set both RAMP_TIME and RAMP_DT.} \> Section~\ref{info:simulation_time_ramp} \\ +1053 \> \ct{On TIME, if one of DT_EXTERNAL_HEARTBEAT or} \> Section~\ref{info:external_control} \\ +\> \ct{EXTERNAL_HEARTBEAT_FILENAME is set, both must be set.} \\ +\\ +1054 \> \ct{On MULT, must set DX if I_UPPER-I_LOWER>0, etc.} \> Section~\ref{info:MULT} \\ \end{tabbing} @@ -14477,13 +14486,13 @@ \chapter{The FDS and Smokeview Repositories} \vskip\baselineskip \begin{tabular}{ll} - fds & FDS source code, verification and validation tests, wikis, and documentation \\ - smv & Smokeview source code, integration tests, and documentation \\ - exp & Experimental data repository for FDS validation \\ - fig & Figures used by various manuals \\ - out & FDS output results for validation \\ - bot & Firebot (continuous integration system) source \\ - fds-smv & Web page html source +fds & FDS source code, verification and validation tests, wikis, and documentation \\ +smv & Smokeview source code, integration tests, and documentation \\ +exp & Experimental data repository for FDS validation \\ +fig & Figures used by various manuals \\ +out & FDS output results for validation \\ +bot & Firebot (continuous integration system) source \\ +fds-smv & Web page html source \end{tabular} \vskip\baselineskip @@ -14502,56 +14511,56 @@ \section{FDS Source Code} Table~\ref{tab:sourcefiles} lists the files that make up the FDS source code. Files with the ``.f90'' suffix contain free-form Fortran~90 instructions conforming to the ANSI and ISO standards (2018 edition). A \ct{makefile} is available in the \href{https://github.com/firemodels/fds/tree/master/Build}{Build directory of the FDS GitHub repository} that contains platform specific options for compilation. Note the following: \begin{itemize} - \item The source code consists entirely of Fortran statements organized into 32 files. Some compilers have a standard optimization level, plus various degrees of ``aggressive'' optimization. Be cautious in using the highest levels of optimization. - \item To compile FDS, you need a Fortran compiler (2018 or greater) and MPI libraries. - \item To compile routines for the ULMAT and UGLMAT pressure solvers, Intel Math Kernel Libraries (MKL) are required. - \item To compile routines for the HYPRE (iterative linear solvers), the HYPRE Library \cite{HYPRE} from Lawrence Livermore National Laboratory is required. - \item To compile routines for the CVODE (finite-rate chemistry), the Sundials Library \cite{cvodeDoc:2024} from Lawrence Livermore National Laboratory is required. +\item The source code consists entirely of Fortran statements organized into 32 files. Some compilers have a standard optimization level, plus various degrees of ``aggressive'' optimization. Be cautious in using the highest levels of optimization. +\item To compile FDS, you need a Fortran compiler (2018 or greater) and MPI libraries. +\item To compile routines for the ULMAT and UGLMAT pressure solvers, Intel Math Kernel Libraries (MKL) are required. +\item To compile routines for the HYPRE (iterative linear solvers), the HYPRE Library \cite{HYPRE} from Lawrence Livermore National Laboratory is required. +\item To compile routines for the CVODE (finite-rate chemistry), the Sundials Library \cite{cvodeDoc:2024} from Lawrence Livermore National Laboratory is required. \end{itemize} \begin{table}[ht] - \begin{center} - \caption[FDS source code files]{FDS source code files} - \label{tab:sourcefiles} - \vspace{.1in} - \begin{tabular}{|l|l|} - \hline - File Name & Description \\ \hline \hline - \ct{ccib.f90} & Complex geometry physics routines \\ \hline - \ct{chem.f90} & Finite-rate chemistry routines \\ \hline - \ct{cons.f90} & Global arrays and constants \\ \hline - \ct{ctrl.f90} & Definitions and routines for control functions \\ \hline - \ct{data.f90} & Data for output quantities and thermo-physical properties\\ \hline - \ct{devc.f90} & Derived type definitions and constants for devices \\ \hline - \ct{divg.f90} & Compute the flow divergence \\ \hline - \ct{dump.f90} & Output data dumps into files \\ \hline - \ct{fire.f90} & Combustion routines \\ \hline - \ct{func.f90} & Global functions and subroutines \\ \hline - \ct{geom.f90} & Complex computational geometry engine \\ \hline - \ct{gsmv.f90} & Complex geometry visualization routines \\ \hline - \ct{hvac.f90} & Heating, Ventilation, and Air Conditioning \\ \hline - \ct{imkl.f90} & Bindings for the Intel MKL library \\ \hline - \ct{init.f90} & Initialize variables and Poisson solver \\ \hline - \ct{main.f90} & Main program \\ \hline - \ct{mass.f90} & Mass equation(s) and thermal boundary conditions \\ \hline - \ct{mesh.f90} & Arrays and constants associated with each mesh \\ \hline - \ct{part.f90} & Lagrangian particle transport and sprinkler activation \\ \hline - \ct{pois.f90} & Poisson (pressure) solver \\ \hline - \ct{prec.f90} & Specification of numerical precision \\ \hline - \ct{pres.f90} & Spatial discretization of pressure (Poisson) equation \\ \hline - \ct{prop.f90} & Gas and liquid property data \\ \hline - \ct{radi.f90} & Radiation solver \\ \hline - \ct{rcal.f90} & Functions needed for radiation solver, including RadCal \\ \hline - \ct{read.f90} & Read input parameters \\ \hline - \ct{smvv.f90} & Routines for computing and outputting 3D smoke and isosurfaces \\ \hline - \ct{soot.f90} & Soot agglomeration and aerosol deposition \\ \hline - \ct{turb.f90} & Turbulence models and manufactured solutions \\ \hline - \ct{type.f90} & Derived type definitions \\ \hline - \ct{vege.f90} & Experimental vegetation model \\ \hline - \ct{velo.f90} & Momentum equations \\ \hline - \ct{wall.f90} & Wall boundary conditions \\ \hline - \end{tabular} - \end{center} +\begin{center} + \caption[FDS source code files]{FDS source code files} + \label{tab:sourcefiles} + \vspace{.1in} + \begin{tabular}{|l|l|} + \hline + File Name & Description \\ \hline \hline + \ct{ccib.f90} & Complex geometry physics routines \\ \hline + \ct{chem.f90} & Finite-rate chemistry routines \\ \hline + \ct{cons.f90} & Global arrays and constants \\ \hline + \ct{ctrl.f90} & Definitions and routines for control functions \\ \hline + \ct{data.f90} & Data for output quantities and thermo-physical properties\\ \hline + \ct{devc.f90} & Derived type definitions and constants for devices \\ \hline + \ct{divg.f90} & Compute the flow divergence \\ \hline + \ct{dump.f90} & Output data dumps into files \\ \hline + \ct{fire.f90} & Combustion routines \\ \hline + \ct{func.f90} & Global functions and subroutines \\ \hline + \ct{geom.f90} & Complex computational geometry engine \\ \hline + \ct{gsmv.f90} & Complex geometry visualization routines \\ \hline + \ct{hvac.f90} & Heating, Ventilation, and Air Conditioning \\ \hline + \ct{imkl.f90} & Bindings for the Intel MKL library \\ \hline + \ct{init.f90} & Initialize variables and Poisson solver \\ \hline + \ct{main.f90} & Main program \\ \hline + \ct{mass.f90} & Mass equation(s) and thermal boundary conditions \\ \hline + \ct{mesh.f90} & Arrays and constants associated with each mesh \\ \hline + \ct{part.f90} & Lagrangian particle transport and sprinkler activation \\ \hline + \ct{pois.f90} & Poisson (pressure) solver \\ \hline + \ct{prec.f90} & Specification of numerical precision \\ \hline + \ct{pres.f90} & Spatial discretization of pressure (Poisson) equation \\ \hline + \ct{prop.f90} & Gas and liquid property data \\ \hline + \ct{radi.f90} & Radiation solver \\ \hline + \ct{rcal.f90} & Functions needed for radiation solver, including RadCal \\ \hline + \ct{read.f90} & Read input parameters \\ \hline + \ct{smvv.f90} & Routines for computing and outputting 3D smoke and isosurfaces \\ \hline + \ct{soot.f90} & Soot agglomeration and aerosol deposition \\ \hline + \ct{turb.f90} & Turbulence models and manufactured solutions \\ \hline + \ct{type.f90} & Derived type definitions \\ \hline + \ct{vege.f90} & Experimental vegetation model \\ \hline + \ct{velo.f90} & Momentum equations \\ \hline + \ct{wall.f90} & Wall boundary conditions \\ \hline + \end{tabular} +\end{center} \end{table} @@ -14570,16 +14579,16 @@ \section{Diagnostic Output ({\tt .out})} The file \ct{CHID.out} contains diagnostic output, including an accounting of various important quantities, including CPU usage. Typically, diagnostic information is printed out every 100 time steps as follows: \begin{lstlisting} - Time Step 137431 December 27, 2015 00:29:49 - Step Size: 0.563E-01 s, Total Time: 1800.04 s - Pressure Iterations: 1 - Maximum Velocity Error: 0.30E-01 on Mesh 1 at ( 0 44 3) - --------------------------------------------------------------- - Max CFL number: 0.94E+00 at ( 1, 46, 1) - Max divergence: 0.13E+00 at ( 66, 12, 1) - Min divergence: -0.20E+00 at ( 66, 13, 1) - Max VN number: 0.51E+00 at ( 1, 25, 18) - No. of Lagrangian Particles: 27 +Time Step 137431 December 27, 2015 00:29:49 +Step Size: 0.563E-01 s, Total Time: 1800.04 s +Pressure Iterations: 1 +Maximum Velocity Error: 0.30E-01 on Mesh 1 at ( 0 44 3) +--------------------------------------------------------------- +Max CFL number: 0.94E+00 at ( 1, 46, 1) +Max divergence: 0.13E+00 at ( 66, 12, 1) +Min divergence: -0.20E+00 at ( 66, 13, 1) +Max VN number: 0.51E+00 at ( 1, 25, 18) +No. of Lagrangian Particles: 27 \end{lstlisting} The \ct{Time Step} indicates the total number of iterations. The date and time indicate the current wall clock time. The \ct{STEP SIZE} indicates the size of the numerical time step. The \ct{Total Time} indicates the total simulation time calculated up to that point. The \ct{Pressure Iterations} are the number of iterations of the pressure solver for the corrector (second) half of the time step. The pressure solver iterations are designed to minimize the error in the normal component of velocity at solid walls or the interface of two meshes. The \ct{Maximum Velocity Error} indicates this error and in which grid cell it occurs. \ct{Max/Min divergence} is the max/min value of the function $\nabla \cdot \bu$ and is used as a diagnostic when the flow is incompressible (i.e., no heating); \ct{Max CFL number} is the maximum value of the CFL number, the primary time step constraint; \ct{Max VN number} is the maximum value of the Von Neumann number, the secondary time step constraint. The \ct{No. of Lagrangian Particles} refers to the number of particles in the current mesh. @@ -14607,11 +14616,11 @@ \section{Control Output Data} Data associated with particular control functions specified in the input file under the namelist group \ct{CTRL} is output in comma delimited format in a file called \ct{CHID_ctrl.csv}. The format of the file is as follows: \begin{lstlisting} - s , status , status , ... , status - Time , ID(1) , ID(2) , ... , ID(N_CTRL) - T(1) , -001 , 001 , ... , -001 - . - . +s , status , status , ... , status +Time , ID(1) , ID(2) , ... , ID(N_CTRL) +T(1) , -001 , 001 , ... , -001 +. +. \end{lstlisting} where \ct{N_CTRL} is the number of controllers, \ct{ID(I)} is the user-defined ID of the \ct{I}th control function, and plus or minus 1's represent the state \ct{-1 = F and +1 = T} of the \ct{I}th control function at the particular time. The files can be imported into Microsoft Excel or almost any other spreadsheet program. If the number of control columns exceeds \ct{CTRL_COLUMN_LIMIT}, the file will automatically be split into smaller files. The frequency of output is controlled by either \ct{DT_CTRL} or \ct{RAMP_CTRL} on the \ct{DUMP} line. @@ -14620,10 +14629,10 @@ \section{Device and Control Log File} Each time a device or control function changes its logical state, an event is recorded in a comma delimited format in a file called \ct{CHID_devc_ctrl_log.csv}. A row is created for each state change. The format of the file is as follows: \begin{lstlisting} - Time (s) , Type , ID , State , Value , Units - T(1) , Type(1) , ID(1) , State(1), Val(1), Units(1) - . - . +Time (s) , Type , ID , State , Value , Units +T(1) , Type(1) , ID(1) , State(1), Val(1), Units(1) +. +. \end{lstlisting} where for the \ct{I}th state change \ct{T(I)} is the time of the state change, \ct{Type(I)} is type of the item that changed state (either \ct{DEVC} or \ct{CTRL}), \ct{ID(I)} is the \ct{ID} of item, \ct{State(I)} is the logical state of the item after the state change (\ct{T} for true or \ct{F} for false), \ct{Val(I)} is item value at the state change, and \ct{Units(I)} are the units associated with the value. No \ct{Value} is written for a logical control function (e.g. a \ct{FUNCTION_TYPE} or \ct{ALL}, \ct{ANY}, \ct{ONLY}, \ct{AT_LEAST}, \ct{X_OF_N}, \ct{KILL}, or \ct{RESTART}). For \ct{FUNCTION_TYPE}s of \ct{DEADBAND} and \ct{CUSTOM} the input value to the function is written. No \ct{Units} value is written for a control function. If the device or control function does not have an \ct{ID} defined, then the number of the device or control function is written (i.e, if the item was the 5th device in the input file, then 5 would be written). @@ -14632,38 +14641,38 @@ \section{CPU Usage Data} The file called \ct{CHID_cpu.csv} records the CPU time spent by each MPI process in the various major subroutines. \begin{lstlisting} - Rank,MAIN,DIVG, ... , Total T_USED (s) - 0, 2.052E+00, 1.058E+01, ... , 5.143+01 - 1, 2.432E+00, 1.062E+01, ... , 5.123+01 - . - . +Rank,MAIN,DIVG, ... , Total T_USED (s) +0, 2.052E+00, 1.058E+01, ... , 5.143+01 +1, 2.432E+00, 1.062E+01, ... , 5.123+01 +. +. \end{lstlisting} where \ct{Rank} is the number of the MPI process (starting at 0), \ct{MAIN}, \ct{DIVG}, and so on, are major routines, and \ct{'Total T_USED (s)'} is the total CPU time consumed by that particular MPI process. A brief description of each column is given in Table~\ref{tab:CPU_usage}. The time spent in \ct{MAIN} is essentially overhead -- time spent {\em not} working on the calculation. If you want to know if your work load is balanced, take a look at the time spent in \ct{MAIN}. It should be similar for all MPI processes. If one of the MPI processes has a noticeably smaller value for \ct{MAIN}, then that process is working on the core routines while the other processes sit idle in \ct{MAIN}. \begin{table}[ht] - \centering - \caption[Major FDS routines in the CPU usage file]{Major FDS routines listed in the CPU usage output file.} - \label{tab:CPU_usage} - \begin{tabular}{|l|l|} - \hline - Routine & Description \\ \hline \hline - \ct{MAIN} & Time not spent in the subroutines listed below \\ \hline - \ct{DIVG} & Computation of divergence \\ \hline - \ct{MASS} & Mass transport \\ \hline - \ct{VELO} & Momentum transport \\ \hline - \ct{PRES} & Pressure solver \\ \hline - \ct{WALL} & Solid phase \\ \hline - \ct{DUMP} & Input and output \\ \hline - \ct{PART} & Lagrangian particles \\ \hline - \ct{RADI} & Radiation transport \\ \hline - \ct{FIRE} & Combustion \\ \hline - \ct{COMM} & MPI communication \\ \hline - \ct{BLNK} & Blank, not used \\ \hline - \ct{HVAC} & Heating, Ventilation, Air Conditioning \\ \hline - \ct{GEOM} & Complex geometry \\ \hline - \ct{VEGE} & Wildland fire spread \\ \hline - \ct{CHEM} & Complex chemistry \\ \hline - \end{tabular} +\centering +\caption[Major FDS routines in the CPU usage file]{Major FDS routines listed in the CPU usage output file.} +\label{tab:CPU_usage} +\begin{tabular}{|l|l|} + \hline + Routine & Description \\ \hline \hline + \ct{MAIN} & Time not spent in the subroutines listed below \\ \hline + \ct{DIVG} & Computation of divergence \\ \hline + \ct{MASS} & Mass transport \\ \hline + \ct{VELO} & Momentum transport \\ \hline + \ct{PRES} & Pressure solver \\ \hline + \ct{WALL} & Solid phase \\ \hline + \ct{DUMP} & Input and output \\ \hline + \ct{PART} & Lagrangian particles \\ \hline + \ct{RADI} & Radiation transport \\ \hline + \ct{FIRE} & Combustion \\ \hline + \ct{COMM} & MPI communication \\ \hline + \ct{BLNK} & Blank, not used \\ \hline + \ct{HVAC} & Heating, Ventilation, Air Conditioning \\ \hline + \ct{GEOM} & Complex geometry \\ \hline + \ct{VEGE} & Wildland fire spread \\ \hline + \ct{CHEM} & Complex chemistry \\ \hline +\end{tabular} \end{table} The \ct{CHID_cpu.csv} file is printed out at the end of the simulation. To force it to be printed out periodically during the simulation, set \ct{DT_CPU} or \ct{RAMP_CPU} on the \ct{DUMP} line. The latter parameter allows you to write out the files at specified times. @@ -14673,10 +14682,10 @@ \section{Time Step Data} The file called \ct{CHID_steps.csv} records data on the size of time steps and the amount of elapsed CPU time. \begin{lstlisting} - Time Step,Wall Time,Step Size,Simulation Time,CPU Time - 1,2020-04-29T10:23:13.631-04:00, 0.100E+00, 0.10000, 0.23438 - . - . +Time Step,Wall Time,Step Size,Simulation Time,CPU Time +1,2020-04-29T10:23:13.631-04:00, 0.100E+00, 0.10000, 0.23438 +. +. \end{lstlisting} where \ct{Time Step} is the current time step, \ct{Wall Time} is the date and time for the indicated time step, \ct{Step Size} is the size of the current time step in seconds, \ct{Simulation Time} is the current time of the simulation in seconds, and \ct{CPU Time} is the elapsed CPU time since starting FDS. Note that the first time step will include time spent reading the input file and initializing FDS. @@ -14692,16 +14701,16 @@ \section{Slice Files ({\tt .sf})} The slice files defined under the namelist group \ct{SLCF} are named \ct{CHID_M_N.sf} where \ct{M} is the mesh index and \ct{N} is the quantity index. The files are unformatted and written from \ct{dump.f90} with the following lines: \begin{lstlisting} - WRITE(LUSF) QUANTITY - WRITE(LUSF) SHORT_NAME - WRITE(LUSF) UNITS - WRITE(LUSF) I1,I2,J1,J2,K1,K2 - WRITE(LUSF) TIME - WRITE(LUSF) (((QQ(I,J,K),I=I1,I2),J=J1,J2),K=K1,K2) - . - . - WRITE(LUSF) TIME - WRITE(LUSF) (((QQ(I,J,K),I=I1,I2),J=J1,J2),K=K1,K2) +WRITE(LUSF) QUANTITY +WRITE(LUSF) SHORT_NAME +WRITE(LUSF) UNITS +WRITE(LUSF) I1,I2,J1,J2,K1,K2 +WRITE(LUSF) TIME +WRITE(LUSF) (((QQ(I,J,K),I=I1,I2),J=J1,J2),K=K1,K2) +. +. +WRITE(LUSF) TIME +WRITE(LUSF) (((QQ(I,J,K),I=I1,I2),J=J1,J2),K=K1,K2) \end{lstlisting} \ct{QUANTITY}, \ct{SHORT_NAME} and \ct{UNITS} are character strings of length 30. The sextuplet (\ct{I1,I2,J1,J2,K1,K2}) denotes the bounding mesh cell nodes. The sextuplet indices correspond to mesh cell nodes, or corners, thus the entire mesh would be represented by the sextuplet (\ct{0,IBAR,0,JBAR,0,KBAR}). @@ -14712,19 +14721,19 @@ \section{Plot3D Data ({\tt .xyz,.q})} Quantities over the entire mesh can be output in a format used by the graphics package Plot3D. The Plot3D data sets are single precision (32 bit reals), whole and unformatted. Note that there is blanking, that is, blocked out data points are not plotted. If the statement \ct{WRITE_XYZ=T} is included on the \ct{DUMP} line, then the mesh data is written out to a file called \ct{CHID_M.xyz} \begin{lstlisting} - WRITE(LU13) IBAR+1,JBAR+1,KBAR+1 - WRITE(LU13) (((X(I),I=0,IBAR),J=0,JBAR),K=0,KBAR), & - (((Y(J),I=0,IBAR),J=0,JBAR),K=0,KBAR), & - (((Z(K),I=0,IBAR),J=0,JBAR),K=0,KBAR), & - (((IBLK(I,J,K),I=0,IBAR),J=0,JBAR),K=0,KBAR) +WRITE(LU13) IBAR+1,JBAR+1,KBAR+1 +WRITE(LU13) (((X(I),I=0,IBAR),J=0,JBAR),K=0,KBAR), & +(((Y(J),I=0,IBAR),J=0,JBAR),K=0,KBAR), & +(((Z(K),I=0,IBAR),J=0,JBAR),K=0,KBAR), & +(((IBLK(I,J,K),I=0,IBAR),J=0,JBAR),K=0,KBAR) \end{lstlisting} where \ct{X, Y} and \ct{Z} are the coordinates of the cell corners, and \ct{IBLK} is an indicator of whether or not the cell is blocked. If the point (\ct{X,Y,Z}) is completely embedded within a solid region, then \ct{IBLK} is 0. Otherwise, \ct{IBLK} is 1. Normally, the mesh file is not dumped. The flow variables are written to a file called \ct{CHID_M_