diff --git a/Manuals/FDS_User_Guide/FDS_User_Guide.tex b/Manuals/FDS_User_Guide/FDS_User_Guide.tex index 8ee34d7b19e..b185d2ff66c 100644 --- a/Manuals/FDS_User_Guide/FDS_User_Guide.tex +++ b/Manuals/FDS_User_Guide/FDS_User_Guide.tex @@ -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} @@ -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 @@ -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} diff --git a/Source/cons.f90 b/Source/cons.f90 index cd3b00b66c7..db49627eb30 100644 --- a/Source/cons.f90 +++ b/Source/cons.f90 @@ -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 diff --git a/Source/dump.f90 b/Source/dump.f90 index edbe64004b1..6eac8328a5b 100644 --- a/Source/dump.f90 +++ b/Source/dump.f90 @@ -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 diff --git a/Source/read.f90 b/Source/read.f90 index 4b024e484e2..ce02d9d2ba2 100644 --- a/Source/read.f90 +++ b/Source/read.f90 @@ -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 diff --git a/Source/smvv.f90 b/Source/smvv.f90 index debf00b103e..9342ca7547e 100644 --- a/Source/smvv.f90 +++ b/Source/smvv.f90 @@ -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 @@ -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