Skip to content

Commit

Permalink
Merge pull request #13529 from mcgratta/master
Browse files Browse the repository at this point in the history
FDS Source: Issues #13361 and #13516. Add placeholder MATL for HT3D
  • Loading branch information
mcgratta authored Oct 5, 2024
2 parents 4240ac0 + cfd945f commit 1035341
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 7 deletions.
2 changes: 2 additions & 0 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2513,6 +2513,7 @@ \subsection{Limitations}
\item If your 3-D obstruction extends beyond meshes that abut, FDS uses a special algorithm to identify all the meshes where this obstruction lives, and also those obstructions connected to it. However, if this algorithm fails to detect all the meshes and you recieve an error stating that there is a problem, add the parameter {\ct NEIGHBOR\_SEPARATION\_DISTANCE} to the {\ct MISC} line. Any mesh within this distance of another mesh will share geometry information for use in the 3-D heat conduction calculation. If you set this parameter to a value larger than the width of the computational domain, then all meshes will establish communication channels for exchanging boundary information.
\item By default, the interior nodes are clustered near the surface and stretched out deeper within the solid. If you want to maintain uniform spacing, set {\ct CELL\_SIZE} on the {\ct SURF} or {\ct OBST} line to indicate the desired interior node spacing. The {\ct CELL\_SIZE} is typically chosen to be comparable to the gas phase cells. If the obstruction is thin; that is, less than one gas phase cell thick, the specified {\ct CELL\_SIZE} will only apply to the heat conduction in the transverse, not normal, direction. The normal direction gridding will be controlled by the parameters {\ct STRETCH\_FACTOR} and {\ct CELL\_SIZE\_FACTOR}. This may be useful in cases where the specified {\ct CELL\_SIZE} is too coarse to resolve variations in surface definition along the normal dimension (see Section~\ref{checkerboard} for an example).
\item {\ct HT3D} cannot be applied to an {\ct OBST} that is to {\ct BURN\_AWAY}.
\item If a {\ct SURF} line specifies either {\ct HT3D=T} or {\ct VARIABLE\_THICKNESS=T} and also specifies an {\ct HRRPUA}, {\ct MLPUA}, or {\ct MASS\_FLUX}, you must specify a {\ct MATL\_ID} on the {\ct SURF} line and the appropriate {\ct OBST} lines. The reason for doubly specifying the {\ct MATL\_ID} is so that the {\ct SURF} line can be set up properly. Note that the specification of {\ct HRRPUA} or similar on the surface of a 3-D or variably thick solid means that no obstruction making up the solid can have specified internal reactions, i.e. pyrolysis.
\end{enumerate}

\subsubsection{Example: Steel Assembly}
Expand Down Expand Up @@ -13856,6 +13857,7 @@ \chapter{Error Codes}
316 \> {\ct SURF \ldots\ N\_LAYER\_CELLS\_MAX must be > 0. } \> Section~\ref{info:solid_phase_stability} \\
317 \> {\ct SURF \ldots\ Specify either ROUGHNESS or Z\_0, not both. } \> Section~\ref{info:WALL_MODEL} \\
318 \> {\ct SURF \ldots\ MASS\_FLUX\_TOTAL is only for outflow. } \> Section~\ref{info:MASS_FLUX_TOTAL} \\
319 \> {\ct SURF \ldots\ must have a MATL\_ID. } \> Section~\ref{info:HT3D_Limitations} \\
320 \> {\ct SURF \ldots\ cannot use both MASS\_FLUX and MASS\_FRACTION. } \> Section~\ref{info:MASS_FLUX} \\
321 \> {\ct SURF \ldots\ MASS\_FLUX cannot be less than zero. } \> Section~\ref{info:MASS_FLUX} \\
322 \> {\ct SURF \ldots\ cannot use both MASS\_FLUX and VEL. } \> Section~\ref{info:MASS_FLUX} \\
Expand Down
5 changes: 4 additions & 1 deletion Source/init.f90
Original file line number Diff line number Diff line change
Expand Up @@ -4132,7 +4132,10 @@ SUBROUTINE FIND_WALL_BACK_INDEX(NM,IW)
DO NN=1,ONE_D%N_MATL
ALLOCATE(ONE_D%MATL_COMP(NN)%MASS_FRACTION(ONE_D%N_LAYERS))
ONE_D%MATL_INDEX(NN) = MATL_INDEX(NN)
IF (MATERIAL(ONE_D%MATL_INDEX(NN))%PYROLYSIS_MODEL/=PYROLYSIS_NONE) ONE_D%PYROLYSIS_MODEL = PYROLYSIS_PREDICTED
IF (MATERIAL(ONE_D%MATL_INDEX(NN))%PYROLYSIS_MODEL/=PYROLYSIS_NONE) THEN
ONE_D%PYROLYSIS_MODEL = PYROLYSIS_PREDICTED
SF%SPECIES_BC_INDEX = SPECIFIED_MASS_FLUX
ENDIF
DO NL=1,ONE_D%N_LAYERS
ONE_D%MATL_COMP(NN)%MASS_FRACTION(NL) = MATL_MASS_FRACTION(NL,NN)
ENDDO
Expand Down
28 changes: 22 additions & 6 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -6858,9 +6858,11 @@ SUBROUTINE READ_MATL

! Add reserved materials if necessary

N_MATL_RESERVED = 1
N_MATL_RESERVED = 3
ALLOCATE(SEARCH_PHRASE(N_MATL_RESERVED)) ; ALLOCATE(MATL_NAME_RESERVED(N_MATL_RESERVED))
SEARCH_PHRASE(1) = 'MOISTURE_FRACTION' ; MATL_NAME_RESERVED(1) = 'MOISTURE'
SEARCH_PHRASE(1) = 'MOISTURE_FRACTION' ; MATL_NAME_RESERVED(1) = 'MOISTURE'
SEARCH_PHRASE(2) = 'VARIABLE_THICKNESS' ; MATL_NAME_RESERVED(2) = 'MATERIAL PLACEHOLDER'
SEARCH_PHRASE(3) = 'HT3D' ; MATL_NAME_RESERVED(3) = 'MATERIAL PLACEHOLDER'

DO NN=1,N_MATL_RESERVED
CALL SEARCH_INPUT_FILE(LU_INPUT,TRIM(SEARCH_PHRASE(NN)),FOUND)
Expand Down Expand Up @@ -6910,6 +6912,11 @@ SUBROUTINE READ_MATL
NU_SPEC(1,1) = 1._EB
HEAT_OF_REACTION(1) = 2295._EB
MOISTURE_INDEX = N
CASE('MATERIAL PLACEHOLDER')
ID = 'MATERIAL PLACEHOLDER'
DENSITY = 1000._EB
CONDUCTIVITY = 1._EB
SPECIFIC_HEAT = 1._EB
END SELECT
ENDIF

Expand Down Expand Up @@ -7071,6 +7078,8 @@ SUBROUTINE READ_MATL

IF (N_REACTIONS==0) ML%PYROLYSIS_MODEL = PYROLYSIS_NONE

IF (ML%PYROLYSIS_MODEL/=PYROLYSIS_NONE) INCLUDE_PYROLYSIS = .TRUE.

! If oxygen is consumed in the reaction, set a global variable for
! use in calculating the heat release rate based on oxygen consumption

Expand Down Expand Up @@ -7608,8 +7617,7 @@ END SUBROUTINE PROC_MATL


!> \brief Read the SURF namelist lines

!> \brief Read the SURF namelist lines
!> \param QUICK_READ Flag indicating that this routine is to be run only to search for HT3D surfaces

SUBROUTINE READ_SURF(QUICK_READ)

Expand Down Expand Up @@ -7806,11 +7814,19 @@ SUBROUTINE READ_SURF(QUICK_READ)
SURF_DEFAULT = TRIM(ID)
ENDIF

! Set up a dummy surface for VARIABLE_THICKNESS and HT3D. The properties will be changed later.
! Specify a dummy material for a VARIABLE_THICKNESS or HT3D surface unless the user has also specified a mass flux, in which
! case throw an error. If no mass flux is specified, the material properties will be changed later.

IF ((VARIABLE_THICKNESS .OR. HT3D) .AND. THICKNESS(1)>TWO_EPSILON_EB .AND. MATL_ID(1,1)/='null') SF%LINING = .TRUE.
IF ((VARIABLE_THICKNESS .OR. HT3D) .AND. THICKNESS(1)<TWO_EPSILON_EB) THICKNESS(1) = 0.1_EB
IF ((VARIABLE_THICKNESS .OR. HT3D) .AND. MATL_ID(1,1)=='null') MATL_ID(1,1) = MATERIAL(1)%ID
IF ((VARIABLE_THICKNESS .OR. HT3D) .AND. MATL_ID(1,1)=='null') THEN
IF (ANY(MASS_FLUX>0._EB) .OR. HRRPUA>0._EB .OR. MLRPUA>0._EB) THEN
WRITE (MESSAGE,'(A,A,A)') 'ERROR(319): SURF ',TRIM(SF%ID),' must have a MATL_ID.'
CALL SHUTDOWN(MESSAGE) ; RETURN
ELSE
MATL_ID(1,1) = 'MATERIAL PLACEHOLDER'
ENDIF
ENDIF

! Load RAMP parameters into appropriate array

Expand Down
1 change: 1 addition & 0 deletions Verification/Fires/box_burn_away3.fds
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ The gas species here is mixture fraction fuel, burning rate specified.
COLOR = 'TOMATO 3'
VARIABLE_THICKNESS = T
BURN_AWAY = T
MATL_ID = 'FOAM'
HRRPUA = 4000. /

&REAC FUEL='METHANE', AUTO_IGNITION_TEMPERATURE=10000. /
Expand Down
1 change: 1 addition & 0 deletions Verification/Fires/box_burn_away4.fds
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ The gas species here is mixture fraction fuel, burning rate specified.
COLOR = 'TOMATO 3'
VARIABLE_THICKNESS = T
BURN_AWAY = T
MATL_ID = 'FOAM'
HRRPUA = 2200. /

&REAC FUEL='ETHYLENE'
Expand Down
1 change: 1 addition & 0 deletions Verification/Fires/box_burn_away8.fds
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ The gas species here is mixture fraction fuel, burning rate specified.
COLOR = 'TOMATO 3'
VARIABLE_THICKNESS = T
BURN_AWAY = T
MATL_ID = 'FOAM'
MLRPUA = 0.0733333 /

&REAC FUEL='ETHYLENE'
Expand Down

0 comments on commit 1035341

Please sign in to comment.