Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -10144,6 +10144,8 @@ \section{SMOKE3D: Realistic Smoke and Fire}

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 can change the scale of \ct{HRRPUV} via the parameter \ct{HRRPUV_MAX_SMV} (default 1200~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~$^\circ$C and 2000~$^\circ$C).

\newpage

\section{Particle Output Quantities}
Expand Down Expand Up @@ -12173,6 +12175,7 @@ \section{\texorpdfstring{{\tt DUMP}}{DUMP} (Output Parameters)}
\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:DUMP} & & \ct{T} \\ \hline
\ct{HRRPUV_MAX_SMV} & Real & Section~\ref{info:SMOKE3D} & kW/m$^3$ & 1200 \\ \hline
\ct{MASS_FILE} & Logical & Section~\ref{info:DUMP} & & \ct{F} \\ \hline
\ct{MAXIMUM_PARTICLES} & Integer & Section~\ref{info:controlling_droplets}& & 1000000 \\ \hline
\ct{NFRAMES} & Integer & Section~\ref{info:DUMP} & & 1000 \\ \hline
Expand Down Expand Up @@ -12207,6 +12210,8 @@ \section{\texorpdfstring{{\tt DUMP}}{DUMP} (Output Parameters)}
\ct{SMOKE3D} & Logical & Section~\ref{info:SMOKE3D} & & \ct{T} \\ \hline
\ct{STATUS_FILES} & Logical & Section~\ref{info: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} & $^\circ$C & 2000 \\ \hline
\ct{TEMP_MIN_SMV} & Real & Section~\ref{info:SMOKE3D} & $^\circ$C & 2000 \\ \hline
\ct{VELOCITY_ERROR_FILE} & Logical & Section~\ref{info:TIMING} & & \ct{F} \\ \hline
\ct{WRITE_XYZ} & Logical & Section~\ref{info:PL3D} & & \ct{F} \\ \hline
\end{longtable}
Expand Down
1 change: 1 addition & 0 deletions Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,7 @@ MODULE GLOBAL_CONSTANTS
REAL(EB) :: FINITE_RATE_MIN_TEMP=-273.15 !< When FR is present, min temp. to compute combustion (C->K)
REAL(FB) :: HRRPUV_MAX_SMV=1200._FB !< Clipping value used by Smokeview (kW/m3)
REAL(FB) :: TEMP_MAX_SMV=2000._FB !< Clipping value used by Smokeview (C)
REAL(FB) :: TEMP_MIN_SMV=20._FB !< Clipping value used by Smokeview (C)

INTEGER :: N_SPECIES=0 !< Number of total gas phase primitive species
INTEGER :: N_REACTIONS !< Number of gas phase reactions
Expand Down
14 changes: 14 additions & 0 deletions Source/dump.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1662,11 +1662,25 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
ENDIF

! Write out smoke albedo

CALL EOL
WRITE(MYSTR,'(A)') 'ALBEDO'; CALL ADDSTR
WRITE(MYSTR,'(F13.5)') SMOKE_ALBEDO; CALL ADDSTR

! Write out threshold for HRRPUV Smoke3d rendering

CALL EOL
WRITE(MYSTR,'(A)') 'HRRPUV_MINMAX'; CALL ADDSTR
WRITE(MYSTR,'(2F13.5)') 0._FB,HRRPUV_MAX_SMV; CALL ADDSTR

! Write out threshold for TEMPERATURE Smoke3d rendering

CALL EOL
WRITE(MYSTR,'(A)') 'TEMP_MINMAX'; CALL ADDSTR
WRITE(MYSTR,'(2F13.5)') TEMP_MIN_SMV,TEMP_MAX_SMV; CALL ADDSTR

! Write out smokeview IBLANK parameter

CALL EOL
WRITE(MYSTR,'(A)') 'IBLANK'; CALL ADDSTR
IF (IBLANK_SMV) THEN
Expand Down
4 changes: 2 additions & 2 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2321,12 +2321,12 @@ SUBROUTINE READ_DUMP
DIAGNOSTICS_INTERVAL,&
DT_BNDF,DT_CPU,DT_CTRL,DT_DEVC,DT_FLUSH,DT_HRR,DT_HVAC,DT_ISOF,DT_MASS,DT_PART,DT_PL3D,DT_PROF,&
DT_RADF,DT_RESTART,DT_SL3D,DT_SLCF,DT_SMOKE3D,DT_UVW,DT_TMP,DT_SPEC,&
FLUSH_FILE_BUFFERS,GET_CUTCELLS_VERBOSE,MASS_FILE,MAXIMUM_PARTICLES,MMS_TIMER,&
FLUSH_FILE_BUFFERS,GET_CUTCELLS_VERBOSE,HRRPUV_MAX_SMV,MASS_FILE,MAXIMUM_PARTICLES,MMS_TIMER,&
NFRAMES,PLOT3D_PART_ID,PLOT3D_QUANTITY,PLOT3D_SPEC_ID,PLOT3D_VELO_INDEX,&
RAMP_BNDF,RAMP_CPU,RAMP_CTRL,RAMP_DEVC,RAMP_FLUSH,RAMP_HRR,RAMP_HVAC,RAMP_ISOF,RAMP_MASS,&
RAMP_PART,RAMP_PL3D,RAMP_PROF,RAMP_RADF,RAMP_RESTART,RAMP_SLCF,RAMP_SL3D,RAMP_SMOKE3D,&
RAMP_SPEC,RAMP_TMP,RAMP_UVW,RENDER_FILE,RESULTS_DIR,SIG_FIGS,SIG_FIGS_EXP,SMOKE3D,SMV_PARALLEL_WRITE,&
STATUS_FILES,SUPPRESS_DIAGNOSTICS,TURB_INIT_CLOCK,VELOCITY_ERROR_FILE,WRITE_XYZ
STATUS_FILES,SUPPRESS_DIAGNOSTICS,TEMP_MAX_SMV,TEMP_MIN_SMV,TURB_INIT_CLOCK,VELOCITY_ERROR_FILE,WRITE_XYZ

! Set defaults

Expand Down
9 changes: 4 additions & 5 deletions Source/smvv.f90
Original file line number Diff line number Diff line change
Expand Up @@ -924,12 +924,12 @@ END SUBROUTINE SLICE_TO_RLEFILE
SUBROUTINE SMOKE3D_TO_FILE(NM,TIME,DX,SMOKE3D_INDEX,VALS,NX,NY,NZ)

USE OUTPUT_DATA, ONLY: SMOKE3D_TYPE,SMOKE3D_FILE,N_SMOKE3D
USE GLOBAL_CONSTANTS, ONLY: TMPA,TMPM,LU_SMOKE3D,FN_SMOKE3D,TEMP_MAX_SMV,HRRPUV_MAX_SMV
USE GLOBAL_CONSTANTS, ONLY: LU_SMOKE3D,FN_SMOKE3D,TEMP_MIN_SMV,TEMP_MAX_SMV,HRRPUV_MAX_SMV
INTEGER, INTENT(IN) :: NX,NY,NZ,NM,SMOKE3D_INDEX
REAL(FB), INTENT(IN) :: TIME, DX
REAL(FB), INTENT(IN), DIMENSION(NX*NY*NZ) :: VALS
CHARACTER(LEN=1), DIMENSION(:), ALLOCATABLE :: BUFFER_IN, BUFFER_OUT, BUFFER_DENSITY_IN, BUFFER_DENSITY_OUT
REAL(FB) :: FACTOR,TEMP_MIN,VAL_FDS,VAL_SMV,MAX_VAL,MAX_DENSITY_VAL
REAL(FB) :: FACTOR,VAL_FDS,VAL_SMV,MAX_VAL,MAX_DENSITY_VAL
INTEGER :: I,NCHARS_OUT,NVALS,NCHARS_IN,NCHARS_DENSITY_OUT
TYPE(SMOKE3D_TYPE), POINTER :: S3

Expand Down Expand Up @@ -981,10 +981,9 @@ SUBROUTINE SMOKE3D_TO_FILE(NM,TIME,DX,SMOKE3D_INDEX,VALS,NX,NY,NZ)

ELSEIF (S3%DISPLAY_TYPE=='TEMPERATURE') THEN

TEMP_MIN = REAL(TMPA-TMPM,FB)
DO I=1,NVALS
VAL_FDS = MIN(TEMP_MAX_SMV,MAX(TEMP_MIN,VALS(I)))
VAL_SMV = 254*((VAL_FDS-TEMP_MIN)/(TEMP_MAX_SMV-TEMP_MIN))
VAL_FDS = MIN(TEMP_MAX_SMV,MAX(TEMP_MIN_SMV,VALS(I)))
VAL_SMV = 254*((VAL_FDS-TEMP_MIN_SMV)/(TEMP_MAX_SMV-TEMP_MIN_SMV))
BUFFER_IN(I) = CHAR(INT(VAL_SMV))
MAX_VAL = MAX(VAL_FDS,MAX_VAL)
ENDDO
Expand Down