Skip to content

Commit

Permalink
Merge pull request #5 from johodges/FireX
Browse files Browse the repository at this point in the history
Add VTK functionality
  • Loading branch information
marcosvanella authored Jan 8, 2024
2 parents 9e64ec7 + a421092 commit ca43fbf
Show file tree
Hide file tree
Showing 10 changed files with 13,991 additions and 213 deletions.
20 changes: 14 additions & 6 deletions Build/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ endif # PETSc test

obj_mpi = prec.o cons.o prop.o devc.o type.o data.o mesh.o func.o gsmv.o smvv.o rcal.o turb.o soot.o \
pois.o geom.o ccib.o radi.o part.o vege.o ctrl.o hvac.o mass.o imkl.o \
wall.o fire.o velo.o pres.o init.o dump.o read.o divg.o main.o
wall.o fire.o velo.o pres.o init.o vtkf.o dump.o read.o divg.o main.o

objwin_mpi = $(obj_mpi:.o=.obj)

Expand All @@ -169,7 +169,7 @@ setup_win:
$(FCOMPL) -c $(FFLAGS) $<
.f90.obj:
$(FCOMPL) -c $(FFLAGS) $<

# Files which have OpenMP compiler directives are compiled using the FOPENMPFLAG and can be enabled/disabled on a per-file basis.

divg.o: FFLAGS += $(FOPENMPFLAGS)
Expand All @@ -192,6 +192,12 @@ velo.obj: FFLAGS += $(FOPENMPFLAGS)
radi.obj: FFLAGS += $(FOPENMPFLAGS)
main.obj: FFLAGS += $(FOPENMPFLAGS)

# Add flags for VTKF compilation
#vtkf.o: FFLAGS += -D_R16P
#vtkf.obj: FFLAGS += -D_R16P
#vtkf.o: FFLAGS += -D_R_P_IS_R4P -D_ASCII_SUPPORTED


# Windows Intel Fortran Compiler and Intel MPI
#*** Note: the script, Build\Scripts\setup_intel_compilers.bat, must be run before running make with this target

Expand Down Expand Up @@ -444,10 +450,11 @@ fire.o : func.o prec.o cons.o type.o mesh.o mass.o soot.o radi.o
velo.o : func.o prec.o cons.o type.o mesh.o turb.o geom.o ccib.o
pres.o : func.o prec.o cons.o type.o mesh.o pois.o velo.o geom.o ccib.o imkl.o
init.o : func.o prec.o cons.o type.o mesh.o devc.o radi.o pois.o data.o pres.o geom.o
dump.o : func.o prec.o cons.o type.o mesh.o devc.o smvv.o turb.o data.o radi.o soot.o geom.o ccib.o fire.o
vtkf.o : func.o prec.o cons.o type.o mesh.o data.o
dump.o : func.o prec.o cons.o type.o mesh.o devc.o smvv.o turb.o data.o radi.o soot.o geom.o ccib.o fire.o vtkf.o
read.o : func.o prec.o cons.o type.o mesh.o devc.o ctrl.o radi.o hvac.o data.o geom.o mass.o soot.o prop.o
divg.o : func.o prec.o cons.o type.o mesh.o mass.o ccib.o
main.o : func.o prec.o cons.o type.o mesh.o devc.o smvv.o mass.o divg.o velo.o wall.o fire.o radi.o part.o vege.o dump.o read.o init.o pres.o pois.o ctrl.o turb.o hvac.o data.o geom.o ccib.o soot.o prop.o
main.o : func.o prec.o cons.o type.o mesh.o devc.o smvv.o mass.o divg.o velo.o wall.o fire.o radi.o part.o vege.o dump.o read.o init.o pres.o pois.o ctrl.o turb.o hvac.o data.o geom.o ccib.o soot.o prop.o vtkf.o

prec.obj :
imkl.obj : prec.obj
Expand Down Expand Up @@ -477,10 +484,11 @@ fire.obj : func.obj prec.obj cons.obj type.obj mesh.obj mass.obj soot.obj radi.o
velo.obj : func.obj prec.obj cons.obj type.obj mesh.obj turb.obj geom.obj ccib.obj
pres.obj : func.obj prec.obj cons.obj type.obj mesh.obj pois.obj velo.obj geom.obj ccib.obj imkl.obj
init.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj pois.obj data.obj pres.obj geom.obj
dump.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj smvv.obj turb.obj data.obj radi.obj soot.obj geom.obj ccib.obj fire.obj
vtkf.obj : func.obj prec.obj cons.obj type.obj mesh.obj data.obj
dump.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj smvv.obj turb.obj data.obj radi.obj soot.obj geom.obj ccib.obj fire.obj vtkf.obj
read.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj ctrl.obj radi.obj hvac.obj data.obj geom.obj mass.obj soot.obj prop.obj
divg.obj : func.obj prec.obj cons.obj type.obj mesh.obj mass.obj ccib.obj
main.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj smvv.obj mass.obj divg.obj velo.obj wall.obj fire.obj radi.obj part.obj vege.obj dump.obj read.obj init.obj pres.obj pois.obj ctrl.obj turb.obj hvac.obj data.obj geom.obj ccib.obj soot.obj prop.obj
main.obj : func.obj prec.obj cons.obj type.obj mesh.obj devc.obj smvv.obj mass.obj divg.obj velo.obj wall.obj fire.obj radi.obj part.obj vege.obj dump.obj read.obj init.obj pres.obj pois.obj ctrl.obj turb.obj hvac.obj data.obj geom.obj ccib.obj soot.obj prop.obj vtkf.obj

#*** Clean Target to remove Object and Module files ***

Expand Down
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 @@ -9654,6 +9654,10 @@ \section{Plot3D Static Data Dumps}

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}

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}
Expand Down Expand Up @@ -11644,6 +11648,7 @@ \section{\texorpdfstring{{\tt DUMP}}{DUMP} (Output Parameters)}
{\ct STATUS\_FILES} & Logical & Section~\ref{info:DUMP} & & {\ct F} \\ \hline
{\ct SUPPRESS\_DIAGNOSTICS} & Logical & Section~\ref{info:monitoring_progress} & & {\ct F} \\ \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{longtable}

Expand Down
66 changes: 38 additions & 28 deletions Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ MODULE GLOBAL_CONSTANTS
LOGICAL :: SUPPRESSION=.TRUE. !< Indicates if gas-phase combustion extinction is modeled
LOGICAL :: ACCUMULATE_WATER=.FALSE. !< Indicates that integrated liquid outputs are specified
LOGICAL :: WRITE_XYZ=.FALSE. !< Indicates that a Plot3D geometry file is specified by user
LOGICAL :: WRITE_STL=.FALSE. !< Indicates that a STL geometry file is specified by user
LOGICAL :: CHECK_POISSON=.FALSE. !< Check the accuracy of the Poisson solver
LOGICAL :: TWO_D=.FALSE. !< Perform a 2-D simulation
LOGICAL :: SETUP_ONLY=.FALSE. !< Indicates that the calculation should be stopped before time-stepping
Expand Down Expand Up @@ -264,6 +265,7 @@ MODULE GLOBAL_CONSTANTS
LOGICAL :: SMOKE3D_16=.FALSE. !< Output 3D smoke values using 16 bit integers
LOGICAL :: CHECK_BOUNDARY_ONE_D_ARRAYS=.FALSE. !< Flag that indicates that ONE_D array dimensions need to be checked
LOGICAL :: TENSOR_DIFFUSIVITY=.FALSE. !< If true, use experimental tensor diffusivity model for spec and tmp
LOGICAL :: VTK_BINARY=.TRUE. !< Flag that indicates VTK outputs should be binary or ascii

INTEGER, ALLOCATABLE, DIMENSION(:) :: CHANGE_TIME_STEP_INDEX !< Flag to indicate if a mesh needs to change time step
INTEGER, ALLOCATABLE, DIMENSION(:) :: SETUP_PRESSURE_ZONES_INDEX !< Flag to indicate if a mesh needs to keep searching for ZONEs
Expand Down Expand Up @@ -546,9 +548,9 @@ MODULE GLOBAL_CONSTANTS
LU_CATF=9
INTEGER :: LU_MASS,LU_HRR,LU_STEPS,LU_NOTREADY,LU_VELOCITY_ERROR,LU_CFL,LU_LINE=-1,LU_CUTCELL
INTEGER :: LU_HISTOGRAM,LU_HVAC
INTEGER :: LU_GEOC=-1,LU_TGA,LU_INFO,LU_DEVC_CTRL=-1
INTEGER :: LU_GEOC=-1,LU_TGA,LU_INFO,LU_DEVC_CTRL=-1,LU_STL
INTEGER, ALLOCATABLE, DIMENSION(:) :: LU_PART,LU_PROF,LU_XYZ,LU_TERRAIN,LU_PL3D,LU_DEVC,LU_STATE,LU_CTRL,LU_CORE,LU_RESTART
INTEGER, ALLOCATABLE, DIMENSION(:) :: LU_VEG_OUT,LU_GEOM,LU_CFACE_GEOM
INTEGER, ALLOCATABLE, DIMENSION(:) :: LU_VEG_OUT,LU_GEOM,LU_CFACE_GEOM,LU_SL3D_VTK,LU_SMOKE3D_VTK
INTEGER :: LU_GEOM_TRAN
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: LU_SLCF,LU_SLCF_GEOM,LU_BNDF,LU_BNDG,LU_ISOF,LU_ISOF2, &
LU_SMOKE3D,LU_RADF
Expand All @@ -557,11 +559,13 @@ MODULE GLOBAL_CONSTANTS
CHARACTER(250) :: FN_INPUT='null'
CHARACTER(80) :: FN_STOP='null',FN_CPU,FN_CFL,FN_OUTPUT='null'
CHARACTER(80) :: FN_MASS,FN_HRR,FN_STEPS,FN_SMV,FN_END,FN_ERR,FN_NOTREADY,FN_VELOCITY_ERROR,FN_GIT
CHARACTER(80) :: FN_LINE,FN_HISTOGRAM,FN_CUTCELL,FN_TGA,FN_DEVC_CTRL,FN_HVAC
CHARACTER(80) :: FN_LINE,FN_HISTOGRAM,FN_CUTCELL,FN_TGA,FN_DEVC_CTRL,FN_HVAC,FN_STL
CHARACTER(80), ALLOCATABLE, DIMENSION(:) :: FN_PART,FN_PROF,FN_XYZ,FN_TERRAIN,FN_PL3D,FN_DEVC,FN_STATE,FN_CTRL,FN_CORE,FN_RESTART
CHARACTER(80), ALLOCATABLE, DIMENSION(:) :: FN_VEG_OUT,FN_GEOM, FN_CFACE_GEOM
CHARACTER(80), ALLOCATABLE, DIMENSION(:,:) :: FN_SLCF,FN_SLCF_GEOM,FN_BNDF,FN_BNDG, &
FN_ISOF,FN_ISOF2,FN_SMOKE3D,FN_RADF
CHARACTER(200), ALLOCATABLE, DIMENSION(:) :: FN_SL3D_VTK,FN_SMOKE3D_VTK,FN_BNDF_VTK
CHARACTER(200), ALLOCATABLE, DIMENSION(:,:):: FN_PART_VTK

CHARACTER(9) :: FMT_R
LOGICAL :: OUT_FILE_OPENED=.FALSE.
Expand Down Expand Up @@ -763,43 +767,49 @@ MODULE OUTPUT_CLOCKS
USE PRECISION_PARAMETERS
IMPLICIT NONE (TYPE,EXTERNAL)

INTEGER :: RAMP_BNDF_INDEX=0 !< Ramp index for boundary file time series
INTEGER :: RAMP_CTRL_INDEX=0 !< Ramp index for control file time series
INTEGER :: RAMP_CPU_INDEX =0 !< Ramp index for CPU file time series
INTEGER :: RAMP_DEVC_INDEX=0 !< Ramp index for device file time series
INTEGER :: RAMP_FLSH_INDEX=0 !< Ramp index for flush time series
INTEGER :: RAMP_GEOM_INDEX=0 !< Ramp index for geometry output
INTEGER :: RAMP_HRR_INDEX =0 !< Ramp index for hrr file time series
INTEGER :: RAMP_HVAC_INDEX=0 !< Ramp index for hvac file time series
INTEGER :: RAMP_ISOF_INDEX=0 !< Ramp index for isosurface file time series
INTEGER :: RAMP_MASS_INDEX=0 !< Ramp index for mass file time series
INTEGER :: RAMP_PART_INDEX=0 !< Ramp index for particle file time series
INTEGER :: RAMP_PL3D_INDEX=0 !< Ramp index for Plot3D file time series
INTEGER :: RAMP_PROF_INDEX=0 !< Ramp index for profile file time series
INTEGER :: RAMP_RADF_INDEX=0 !< Ramp index for radiation file time series
INTEGER :: RAMP_RSRT_INDEX=0 !< Ramp index for restart file time series
INTEGER :: RAMP_SLCF_INDEX=0 !< Ramp index for slice file time series
INTEGER :: RAMP_SL3D_INDEX=0 !< Ramp index for 3D slice file time series
INTEGER :: RAMP_SM3D_INDEX=0 !< Ramp index for smoke3d file time series
INTEGER :: RAMP_UVW_INDEX =0 !< Ramp index for velocity file time series
INTEGER :: RAMP_TMP_INDEX =0 !< Ramp index for temperature file time series
INTEGER :: RAMP_SPEC_INDEX=0 !< Ramp index for species file time series
INTEGER :: RAMP_BNDF_INDEX=0 !< Ramp index for boundary file time series
INTEGER :: RAMP_CTRL_INDEX=0 !< Ramp index for control file time series
INTEGER :: RAMP_CPU_INDEX =0 !< Ramp index for CPU file time series
INTEGER :: RAMP_DEVC_INDEX=0 !< Ramp index for device file time series
INTEGER :: RAMP_FLSH_INDEX=0 !< Ramp index for flush time series
INTEGER :: RAMP_GEOM_INDEX=0 !< Ramp index for geometry output
INTEGER :: RAMP_HRR_INDEX =0 !< Ramp index for hrr file time series
INTEGER :: RAMP_HVAC_INDEX=0 !< Ramp index for hvac file time series
INTEGER :: RAMP_ISOF_INDEX=0 !< Ramp index for isosurface file time series
INTEGER :: RAMP_MASS_INDEX=0 !< Ramp index for mass file time series
INTEGER :: RAMP_PART_INDEX=0 !< Ramp index for particle file time series
INTEGER :: RAMP_PL3D_INDEX=0 !< Ramp index for Plot3D file time series
INTEGER :: RAMP_PROF_INDEX=0 !< Ramp index for profile file time series
INTEGER :: RAMP_RADF_INDEX=0 !< Ramp index for radiation file time series
INTEGER :: RAMP_RSRT_INDEX=0 !< Ramp index for restart file time series
INTEGER :: RAMP_SLCF_INDEX=0 !< Ramp index for slice file time series
INTEGER :: RAMP_SL3D_INDEX=0 !< Ramp index for 3D slice file time series
INTEGER :: RAMP_SM3D_INDEX=0 !< Ramp index for smoke3d file time series
INTEGER :: RAMP_UVW_INDEX =0 !< Ramp index for velocity file time series
INTEGER :: RAMP_TMP_INDEX =0 !< Ramp index for temperature file time series
INTEGER :: RAMP_SPEC_INDEX=0 !< Ramp index for species file time series
INTEGER :: RAMP_SL3D_VTK_INDEX=0 !< Ramp index for vtk file time series
INTEGER :: RAMP_SM3D_VTK_INDEX=0 !< Ramp index for vtk file time series
INTEGER :: RAMP_BNDF_VTK_INDEX=0 !< Ramp index for boundary file time series
INTEGER :: RAMP_PART_VTK_INDEX=0 !< Ramp index for boundary file time series
REAL(EB), ALLOCATABLE, DIMENSION(:) :: BNDF_CLOCK, CPU_CLOCK,CTRL_CLOCK,DEVC_CLOCK,FLSH_CLOCK,GEOM_CLOCK, HRR_CLOCK,HVAC_CLOCK,&
ISOF_CLOCK,MASS_CLOCK,PART_CLOCK,PL3D_CLOCK,PROF_CLOCK,RADF_CLOCK,RSRT_CLOCK,&
SLCF_CLOCK,SL3D_CLOCK,SM3D_CLOCK,UVW_CLOCK ,TMP_CLOCK ,SPEC_CLOCK
SLCF_CLOCK,SL3D_CLOCK,SM3D_CLOCK,UVW_CLOCK ,TMP_CLOCK ,SPEC_CLOCK,&
SL3D_VTK_CLOCK,SM3D_VTK_CLOCK,BNDF_VTK_CLOCK,PART_VTK_CLOCK
INTEGER, ALLOCATABLE, DIMENSION(:) :: BNDF_COUNTER, CPU_COUNTER,CTRL_COUNTER,DEVC_COUNTER,FLSH_COUNTER,GEOM_COUNTER, HRR_COUNTER,&
HVAC_COUNTER,ISOF_COUNTER,MASS_COUNTER,PART_COUNTER,PL3D_COUNTER,PROF_COUNTER,RADF_COUNTER,&
RSRT_COUNTER,SLCF_COUNTER,SL3D_COUNTER,SM3D_COUNTER,UVW_COUNTER ,TMP_COUNTER ,SPEC_COUNTER
RSRT_COUNTER,SLCF_COUNTER,SL3D_COUNTER,SM3D_COUNTER,UVW_COUNTER ,TMP_COUNTER ,SPEC_COUNTER,&
SL3D_VTK_COUNTER,SM3D_VTK_COUNTER,BNDF_VTK_COUNTER,PART_VTK_COUNTER
REAL(EB) :: TURB_INIT_CLOCK=-1.E10_EB
REAL(EB) :: MMS_TIMER=1.E10_EB
REAL(EB) :: DT_SLCF,DT_BNDF,DT_DEVC,DT_PL3D,DT_PART,DT_RESTART,DT_ISOF,DT_HRR,DT_HVAC,DT_MASS,DT_PROF,DT_CTRL,&
DT_FLUSH,DT_SL3D,DT_GEOM,DT_CPU,DT_RADF,DT_SMOKE3D,DT_UVW ,DT_TMP,DT_SPEC
DT_FLUSH,DT_SL3D,DT_GEOM,DT_CPU,DT_RADF,DT_SMOKE3D,DT_UVW ,DT_TMP,DT_SPEC,DT_VTK
REAL(EB) :: DT_SLCF_SPECIFIED =-1._EB,DT_BNDF_SPECIFIED =-1._EB,DT_DEVC_SPECIFIED=-1._EB,DT_PL3D_SPECIFIED=-1._EB,&
DT_PART_SPECIFIED =-1._EB,DT_RESTART_SPECIFIED=-1._EB,DT_ISOF_SPECIFIED=-1._EB,DT_HRR_SPECIFIED =-1._EB,&
DT_HVAC_SPECIFIED =-1._EB,DT_MASS_SPECIFIED =-1._EB,DT_PROF_SPECIFIED=-1._EB,DT_CTRL_SPECIFIED=-1._EB,&
DT_FLUSH_SPECIFIED=-1._EB,DT_SL3D_SPECIFIED =-1._EB,DT_GEOM_SPECIFIED=-1._EB,DT_CPU_SPECIFIED =-1._EB,&
DT_RADF_SPECIFIED =-1._EB,DT_SMOKE3D_SPECIFIED=-1._EB,DT_UVW_SPECIFIED =-1._EB,DT_TMP_SPECIFIED =-1._EB,&
DT_SPEC_SPECIFIED =-1._EB
DT_SPEC_SPECIFIED =-1._EB,DT_VTK_SPECIFIED =-1._EB

END MODULE OUTPUT_CLOCKS

Expand Down
Loading

0 comments on commit ca43fbf

Please sign in to comment.