Skip to content

Commit ad3869a

Browse files
authored
Merge pull request #14668 from cxp484/FireX
FireX Merge: Merge with firemodels/master
2 parents ab1cccc + afaf99e commit ad3869a

File tree

21 files changed

+701
-595
lines changed

21 files changed

+701
-595
lines changed

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7741,6 +7741,26 @@ \section{Level Set Model for Wildland Fire Spread}
77417741
For all models, the total mineral content $S_{\rm t}=0.056$, the effective mineral content $S_{\rm e}=0.01$, the heat of combustion $\Delta H=18600$~kW/kg, density $\rho_{\rm p}=510$~kg/m$^3$, moisture content of fine, medium, and large dead vegetation, $M_{\rm d,1}=0.03$, $M_{\rm d,2}=0.04$, $M_{\rm d,3}=0.05$, moisture content of live woody and herbaceous vegetation $M_{\rm l,w}=M_{\rm l,h}= 0.70$.
77427742
\end{sidewaystable}
77437743

7744+
\subsection{Custom Wind Speed Function}
7745+
The default Rothermel-Albini formulation~\cite{Rothermel:1972,Albini:1976} represents the influence of wind on the head fire spread rate as
7746+
\be
7747+
R = R_{\rm 0} \, (1+\phi_{\rm W})
7748+
\ee
7749+
where the no-wind, no-slope spread rate, $R_{\rm 0}$, is increased by a factor $\phi_W$, which is a function of the wind speed. In the default model the wind speed is taken as the value at mid-flame height, $U_{\rm mf}$.
7750+
7751+
This introduces two complications. The first is determining the functional form of $\phi_W$. The default formulation is an empirical function which depends on fuel bed properties. However, this has not been rigorously validated for all possible fuel configurations - the original fit was determined with just three fuel bed types~\cite{Rothermel:1972}. In addition, the relationship assumes a reference wind which is unaffected by the fire, which can be contradictory to the approach of \ct{LEVEL_SET_MODE=4}. Therefore, it may be preferable to specify a custom function $\phi_W$ to better match observational data for a given fuel type. This can be done by specifying a \ct{RAMP} using \ct{VEG_LSET_WIND_RAMP}:
7752+
\begin{lstlisting}
7753+
&SURF ..., VEG_LSET_WIND_RAMP='WR' /
7754+
7755+
&RAMP ID='WR', Z = 0, F=0 /
7756+
&RAMP ID='WR', Z = 10, F=4 /
7757+
\end{lstlisting}
7758+
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}.
7759+
7760+
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}.
7761+
7762+
7763+
77447764
\subsection{Level Set Vegetation Drag}
77457765
When a surface is defined using level set fuel parameters, a drag force is applied in the gas phase grid cell adjacent to the boundary following the same approach described for the Boundary Fuel Model in Section~\ref{info:boundary_fuel_model}. In this case, the fuel surface-area to volume ratio (\ct{VEG_LSET_SIGMA}), packing ratio (\ct{VEG_LSET_BETA}), and depth (\ct{VEG_LSET_HT}) are either obtained from the default fuel models or specified by the user for a custom fuel. The shape factor (\ct{SHAPE_FACTOR}) and drag coefficient (\ct{DRAG_COEFFICIENT}) can also be modified from their default values of 0.25 and 2.8, respectively. A comparison of the consistency of the level set drag with the particle and boundary models is included in Figure~\ref{ground_vegetation_drag_fig}.
77467766

@@ -11484,6 +11504,7 @@ \section{Gas Phase Output Quantities}
1148411504
\ct{TOTAL MASS FLUX X}$^1$ & Section~\ref{info:mass_flow} & kg/s/m$^2$ & D,I,P,S \\ \hline
1148511505
\ct{TOTAL MASS FLUX Y}$^1$ & Section~\ref{info:mass_flow} & kg/s/m$^2$ & D,I,P,S \\ \hline
1148611506
\ct{TOTAL MASS FLUX Z}$^1$ & Section~\ref{info:mass_flow} & kg/s/m$^2$ & D,I,P,S \\ \hline
11507+
\ct{U_LS, V_LS} & Velocity for level set spread~\ref{info:level_set}& m/s & D,I,P,S \\ \hline
1148711508
\ct{U-VELOCITY} & Gas velocity component, $u$ & m/s & D,I,P,S \\ \hline
1148811509
\ct{V-VELOCITY} & Gas velocity component, $v$ & m/s & D,I,P,S \\ \hline
1148911510
\ct{W-VELOCITY} & Gas velocity component, $w$ & m/s & D,I,P,S \\ \hline
@@ -13608,6 +13629,8 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
1360813629
\ct{VEG_LSET_SURF_LOAD} & Real & Section~\ref{info:level_set} & kg/m$^2$ & 1.0 \\ \hline
1360913630
\ct{VEG_LSET_TAN2} & Real & Section~\ref{info:level_set} & & \\ \hline
1361013631
\ct{VEG_LSET_WIND_EXP} & Real & Section~\ref{info:level_set} & & 1. \\ \hline
13632+
\ct{VEG_LSET_WIND_HEIGHT} & Real & Section~\ref{info:level_set} & m & 6.1 \\ \hline
13633+
\ct{VEG_LSET_WIND_RAMP} & Character & Section~\ref{info:level_set} & & \\ \hline
1361113634
\ct{VEL} & Real & Section~\ref{info:Velocity_BC} & m/s & \\ \hline
1361213635
\ct{VEL_BULK} & Real & Section~\ref{info:profiles} & m/s & \\ \hline
1361313636
\ct{VEL_GRAD} & Real & Section~\ref{info:vel_grad} & 1/s & \\ \hline

Manuals/FDS_Verification_Guide/FDS_Verification_Guide.tex

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5022,6 +5022,39 @@ \section{SFPE Verification Cases}
50225022

50235023
The Society of Fire Protection Engineers (SFPE) has developed a standard entitled {\em S.02 -- Calculation Methods to Predict the Thermal Performance of Structures \& Fire Resistive Assemblies}~\cite{SFPE_S.02} that contains an appendix with verification cases to benchmark basic heat transfer calculations. This section contains several of these cases.
50245024

5025+
\subsection{Case 1: Lumped Mass Subjected to Standard Fire}
5026+
\label{SFPE_Case_1}
5027+
5028+
A plate ($\rho=7850$~kg/m$^3$, $c=0.52$~kJ/(kg~K), $\epsilon=0.7$) that has a thickness of 4~cm and an initial temperature of 20~°C is heated on the top and bottom surfaces according to the standard ISO~834 fire curve
5029+
\be
5030+
T(t) = T_\infty + 345 \, \ln \left( 8t/60 + 1 \right) \label{ISO_834}
5031+
\ee
5032+
where the time, $t$, is in seconds. If the thermal conductivity of the material is relatively large, the temperature in the section can be taken as uniform. For the convection heat transfer coefficient, $h=25$~W/(m$^2$~K), calculate the temperature of the plate as a function of time (Fig.~\ref{fig:SFPE_Case_1}).
5033+
5034+
\begin{figure}[ht]
5035+
\centering
5036+
\includegraphics[height=2.2in]{SCRIPT_FIGURES/SFPE_Case_1}
5037+
\caption[The SFPE heat transfer verification Case 1]{Temperature of a 4~cm thick plate that is heated top and bottom by the standard fire curve.}
5038+
\label{fig:SFPE_Case_1}
5039+
\end{figure}
5040+
5041+
\FloatBarrier
5042+
5043+
\subsection{Case 2: Lumped Mass Subjected to Incident Flux}
5044+
\label{SFPE_Case_2}
5045+
5046+
A 1~cm thick horizontal flat plate ($\rho=7850$~kg/m$^3$, $c=0.56$~kJ/(kg~K), $\epsilon=0.9$) with an initial temperature of 20~°C is exposed from above with a radiant heater set to an incident flux of 50~kW/m$^2$. The gas temperature is 20~°C and $h=12$~W/(m$^2$~K). Assuming that the bottom and sides of the plate are perfectly insulated, and that the thermal conductivity of the material is sufficiently large to assume a uniform temperature with depth, calculate the temperature of the plate as a function of time (Fig.~\ref{fig:SFPE_Case_2}).
5047+
5048+
\begin{figure}[ht]
5049+
\centering
5050+
\includegraphics[height=2.2in]{SCRIPT_FIGURES/SFPE_Case_2}
5051+
\caption[The SFPE heat transfer verification Case 2]{Temperature of a 1~cm thick plate that is heated on top via an incident flux and insulated below.}
5052+
\label{fig:SFPE_Case_2}
5053+
\end{figure}
5054+
5055+
\FloatBarrier
5056+
5057+
50255058
\subsection{Case 6: 2-D Heat Transfer with Cooling by Convection}
50265059
\label{SFPE_Case_6}
50275060

@@ -5039,11 +5072,7 @@ \subsection{Case 6: 2-D Heat Transfer with Cooling by Convection}
50395072
\subsection{Case 7: 2-D Heat Transfer by Convection and Radiation}
50405073
\label{SFPE_Case_7}
50415074

5042-
A 0.2 m by 0.2 m square column ($k=1$~W/(m~K), $\rho=2400$~kg/m$^3$, $c=1$~kJ/(kg~K), $\epsilon=0.8$) is heated according to the ISO~834 time-temperature curve
5043-
\be
5044-
T(t) = T_\infty + 345 \, \ln \left( 8t/60 + 1 \right) \label{ISO_834}
5045-
\ee
5046-
where the time, $t$, is in seconds. Assuming that $h=10$~W/(m$^2$~K) and that the initial temperature is $T_\infty=273$~K, calculate the temperature at the column center, corner and middle side surface as a function of time (Fig.~\ref{fig:SFPE_Case_7}).
5075+
A 0.2 m by 0.2 m square column ($k=1$~W/(m~K), $\rho=2400$~kg/m$^3$, $c=1$~kJ/(kg~K), $\epsilon=0.8$) is heated according to the ISO~834 time-temperature curve, Eq.~(\ref{ISO_834}). Assuming that $h=10$~W/(m$^2$~K) and that the initial temperature is $T_\infty=273$~K, calculate the temperature at the column center, corner and middle side surface as a function of time (Fig.~\ref{fig:SFPE_Case_7}).
50475076

50485077
\begin{figure}[ht]
50495078
\centering
@@ -7087,6 +7116,35 @@ \subsection{Elliptical Fire Spread}
70877116
\label{fig:level_set_ellipse_error}
70887117
\end{figure}
70897118

7119+
\subsection{Custom Wind Fuction (\texorpdfstring{\ct{LS\_wind\_ramp}}{LS\_wind\_ramp})}
7120+
\label{LS_wind_ramp}
7121+
7122+
The level set model determines a wind-aided head fire spread rate based on the function
7123+
\be
7124+
R = R_{\rm 0} \, (1+\phi_{\rm W})
7125+
\ee
7126+
where the no-wind, no-slope spread rate, $R_{\rm 0}$, is increased by a factor $\phi_W$, which is a function of the wind speed. Note that there may be an additional term accounting for slope, $\phi_{\rm S}$, but this is excluded for simplicity in this example. The ability to customize the form of $\phi_W$ as a function of the reference wind speed, using \ct{VEG_LSET_WIND_RAMP}, is tested here. A line fire is ignited on a level set surface with a no-wind, no-slope spread rate, \ct{VEG_LSET_ROS_00}, of 0.03~m/s. The wind speed, using a flat wind profile, is progressively increased from 0~m/s to 5~m/s. In the first case,\ct{LS_wind_ramp_lin.fds}, the wind ramp is set to reproduce a linear function
7127+
\be
7128+
R = R_{\rm 0} \, (1+0.4 \, U)
7129+
\ee
7130+
and in the second case, \ct{LS_wind_ramp_quad.fds}, it is set to match a quadratic function
7131+
\be
7132+
R = R_{\rm 0} \, (1+ 0.1 \, U^2)
7133+
\ee
7134+
The maximum spread rate as a function of wind speed is plotted in Figure~\ref{fig:LS_wind_ramp} to confirm that the functions are properly applied.
7135+
7136+
7137+
\begin{figure}[h]
7138+
\begin{center}
7139+
\begin{tabular}{cc}
7140+
\includegraphics[height=2.2in]{SCRIPT_FIGURES/LS_wind_ramp.pdf}
7141+
\end{tabular}
7142+
\end{center}
7143+
\caption[Level set wind ramp]{Expected versus predicted spread rate as a function of linear and quadratic wind speed functions.}
7144+
\label{fig:LS_wind_ramp}
7145+
\end{figure}
7146+
7147+
70907148
\subsection{Ember Generation (\texorpdfstring{\ct{LS4\_ember\_yield}}{LS4\_ember\_yield})}
70917149
\label{LS4_ember_yield}
70927150

Source/data.f90

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,6 +1304,14 @@ SUBROUTINE DEFINE_OUTPUT_QUANTITIES
13041304
OUTPUT_QUANTITY(551)%UNITS = '1/s'
13051305
OUTPUT_QUANTITY(551)%SHORT_NAME = 'cart_div'
13061306

1307+
OUTPUT_QUANTITY(552)%NAME = 'U_LS'
1308+
OUTPUT_QUANTITY(552)%UNITS = 'm/s'
1309+
OUTPUT_QUANTITY(552)%SHORT_NAME = 'U_LS'
1310+
1311+
OUTPUT_QUANTITY(553)%NAME = 'V_LS'
1312+
OUTPUT_QUANTITY(553)%UNITS = 'm/s'
1313+
OUTPUT_QUANTITY(553)%SHORT_NAME = 'V_LS'
1314+
13071315
! Boundary Quantities (Negative indices)
13081316

13091317
OUTPUT_QUANTITY(-1)%NAME = 'RADIATIVE HEAT FLUX'

Source/dump.f90

Lines changed: 134 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,7 +1776,7 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
17761776
USE TRAN, ONLY: TRAN_TYPE,TRANS
17771777
USE MISC_FUNCTIONS, ONLY : ACCUMULATE_STRING
17781778
INTEGER :: N,NN,I,J,K,NM,NX,NY,NZ,NIN,NXL,NYL,NZL,COLOR_INDEX,IZERO,STATE_INDEX,SURF_INDEX,&
1779-
TYPE_INDEX,HI1,HI2,VI1,VI2,VRGB(3),N_CVENT
1779+
TYPE_INDEX,HI1,HI2,VI1,VI2,FACE_INDEX,VRGB(3),N_CVENT
17801780
INTEGER, ALLOCATABLE, DIMENSION(:,:,:) :: VENT_INDICES
17811781
REAL(EB) :: X1,Y1,Z1,X2,Y2,Z2,XX,YY,ZZ,PERT1(4),PERT2(4),XMIN,YMIN,ZMIN,XA,YA,ZA
17821782
TYPE SEGMENT_TYPE
@@ -2566,6 +2566,123 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE
25662566
IF (VT%RADIUS>0._EB) N_CVENT=N_CVENT+1
25672567
ENDDO
25682568

2569+
! Create EXTERIOR_PATCHes with which Smokeview colors, textures, or contours exterior mesh boundaries.
2570+
2571+
ALLOCATE(M%EXTERIOR_PATCH(10*(6+N_VENT_TOTAL))) ; M%N_EXTERIOR_PATCH = 0
2572+
ALLOCATE(VENT_INDICES(MAX(M%IBAR,M%JBAR),MAX(M%JBAR,M%KBAR),6)) ; VENT_INDICES = 0
2573+
2574+
VENT_LOOP: DO N=1,M%N_VENT
2575+
2576+
VT=>M%VENTS(N)
2577+
2578+
IF (VT%RADIUS>0._EB) CYCLE VENT_LOOP
2579+
2580+
FACE_INDEX = 0
2581+
IF (VT%I1==0 .AND. VT%I2==0 ) FACE_INDEX = 1
2582+
IF (VT%I1==M%IBAR .AND. VT%I2==M%IBAR) FACE_INDEX = 2
2583+
IF (VT%J1==0 .AND. VT%J2==0 ) FACE_INDEX = 3
2584+
IF (VT%J1==M%JBAR .AND. VT%J2==M%JBAR) FACE_INDEX = 4
2585+
IF (VT%K1==0 .AND. VT%K2==0 ) FACE_INDEX = 5
2586+
IF (VT%K1==M%KBAR .AND. VT%K2==M%KBAR) FACE_INDEX = 6
2587+
2588+
SELECT CASE(FACE_INDEX) ! Get vent cell indices
2589+
CASE(0)
2590+
CYCLE VENT_LOOP
2591+
CASE(1:2)
2592+
HI1 = MAX(1,VT%J1+1)
2593+
HI2 = MIN(M%JBAR,VT%J2)
2594+
VI1 = MAX(1,VT%K1+1)
2595+
VI2 = MIN(M%KBAR,VT%K2)
2596+
CASE(3:4)
2597+
HI1 = MAX(1,VT%I1+1)
2598+
HI2 = MIN(M%IBAR,VT%I2)
2599+
VI1 = MAX(1,VT%K1+1)
2600+
VI2 = MIN(M%KBAR,VT%K2)
2601+
CASE(5:6)
2602+
HI1 = MAX(1,VT%I1+1)
2603+
HI2 = MIN(M%IBAR,VT%I2)
2604+
VI1 = MAX(1,VT%J1+1)
2605+
VI2 = MIN(M%JBAR,VT%J2)
2606+
END SELECT
2607+
2608+
IF (VT%BOUNDARY_TYPE==MIRROR_BOUNDARY .OR. &
2609+
VT%BOUNDARY_TYPE==OPEN_BOUNDARY .OR. &
2610+
VT%BOUNDARY_TYPE==PERIODIC_BOUNDARY .OR. &
2611+
VT%TYPE_INDICATOR==2) THEN ! Render this vent invisible in Smokeview
2612+
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = -1
2613+
ELSE ! Tag user-specified vents
2614+
WHERE (VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX)==0) VENT_INDICES(HI1:HI2,VI1:VI2,FACE_INDEX) = N
2615+
IF (.NOT.VT%DRAW) THEN ! a dummy vent will be created and drawn rather than the actual vent.
2616+
VT%COLOR_INDICATOR = 8
2617+
VT%TYPE_INDICATOR = -2
2618+
VT%TRANSPARENCY = 0._EB
2619+
ENDIF
2620+
ENDIF
2621+
2622+
! Render GEOM vents using SURF properties (that is, do not draw GEOM vents in Smokeview)
2623+
2624+
IF (VT%GEOM) VT%TYPE_INDICATOR = -2
2625+
2626+
ENDDO VENT_LOOP
2627+
2628+
! Look for interpolated mesh boundaries and ensure that Smokeview leaves these blank (VENT_INDICES=-1).
2629+
2630+
DO K=1,M%KBAR
2631+
DO J=1,M%JBAR
2632+
YY = 0.5_EB*(M%Y(J)+M%Y(J-1))
2633+
ZZ = 0.5_EB*(M%Z(K)+M%Z(K-1))
2634+
XX = M%X(0) - 0.001_EB*M%DX(0)
2635+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2636+
IF (NOM>0 .AND. VENT_INDICES(J,K,1)<1) VENT_INDICES(J,K,1)=-1
2637+
IF (M%WALL(M%CELL(M%CELL_INDEX(1,J,K))%WALL_INDEX(-1))%OBST_INDEX>0) VENT_INDICES(J,K,1)=-1
2638+
XX = M%X(M%IBAR) + 0.001_EB*M%DX(M%IBAR)
2639+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2640+
IF (NOM>0 .AND. VENT_INDICES(J,K,2)<1) VENT_INDICES(J,K,2)=-1
2641+
IF (M%WALL(M%CELL(M%CELL_INDEX(M%IBAR,J,K))%WALL_INDEX(1))%OBST_INDEX>0) VENT_INDICES(J,K,2)=-1
2642+
ENDDO
2643+
ENDDO
2644+
2645+
DO K=1,M%KBAR
2646+
DO I=1,M%IBAR
2647+
XX = 0.5_EB*(M%X(I)+M%X(I-1))
2648+
ZZ = 0.5_EB*(M%Z(K)+M%Z(K-1))
2649+
YY = M%Y(0) - 0.001_EB*M%DY(0)
2650+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2651+
IF (NOM>0 .AND. VENT_INDICES(I,K,3)<1) VENT_INDICES(I,K,3)=-1
2652+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,1,K))%WALL_INDEX(-2))%OBST_INDEX>0) VENT_INDICES(I,K,3)=-1
2653+
YY = M%Y(M%JBAR) + 0.001_EB*M%DY(M%JBAR)
2654+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2655+
IF (NOM>0 .AND. VENT_INDICES(I,K,4)<1) VENT_INDICES(I,K,4)=-1
2656+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,M%JBAR,K))%WALL_INDEX(2))%OBST_INDEX>0) VENT_INDICES(I,K,4)=-1
2657+
ENDDO
2658+
ENDDO
2659+
2660+
DO J=1,M%JBAR
2661+
DO I=1,M%IBAR
2662+
XX = 0.5_EB*(M%X(I)+M%X(I-1))
2663+
YY = 0.5_EB*(M%Y(J)+M%Y(J-1))
2664+
ZZ = M%Z(0) - 0.001_EB*M%DZ(0)
2665+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2666+
IF (NOM>0 .AND. VENT_INDICES(I,J,5)<1) VENT_INDICES(I,J,5)=-1
2667+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,1))%WALL_INDEX(-3))%OBST_INDEX>0) VENT_INDICES(I,J,5)=-1
2668+
ZZ = M%Z(M%KBAR) + 0.001_EB*M%DZ(M%KBAR)
2669+
CALL SEARCH_OTHER_MESHES(XX,YY,ZZ,NOM,IIO,JJO,KKO)
2670+
IF (NOM>0 .AND. VENT_INDICES(I,J,6)<1) VENT_INDICES(I,J,6)=-1
2671+
IF (M%WALL(M%CELL(M%CELL_INDEX(I,J,M%KBAR))%WALL_INDEX(3))%OBST_INDEX>0) VENT_INDICES(I,J,6)=-1
2672+
ENDDO
2673+
ENDDO
2674+
2675+
! Create EXTERIOR_PATCHes to fill in areas around actual specified vents
2676+
2677+
CALL DUMMY_VENTS(1,M%JBAR,M%KBAR)
2678+
CALL DUMMY_VENTS(2,M%JBAR,M%KBAR)
2679+
CALL DUMMY_VENTS(3,M%IBAR,M%KBAR)
2680+
CALL DUMMY_VENTS(4,M%IBAR,M%KBAR)
2681+
CALL DUMMY_VENTS(5,M%IBAR,M%JBAR)
2682+
CALL DUMMY_VENTS(6,M%IBAR,M%JBAR)
2683+
2684+
DEALLOCATE(VENT_INDICES)
2685+
25692686
! Write out information about vents to Smokeview file
25702687

25712688
CALL EOL
@@ -9691,11 +9808,18 @@ REAL(EB) RECURSIVE FUNCTION GAS_PHASE_OUTPUT(T,DT,NM,II,JJ,KK,IND,IND2,Y_INDEX,Z
96919808
(ADV_FZ(II,JJ,KK,1:N_TRACKED_SPECIES) + DIF_FZ(II,JJ,KK,1:N_TRACKED_SPECIES)) )
96929809
ENDIF
96939810
ENDIF
9694-
CASE(550) ! CUTCELL VELOCITY DIVERGENCE
9695-
GAS_PHASE_OUTPUT_RES = CARTVELDIV(II,JJ,KK)
96969811

9697-
CASE(551) ! CARTESIAN VELOCITY DIVERGENCE
9698-
GAS_PHASE_OUTPUT_RES = CARTVELDIV(II,JJ,KK)
9812+
CASE(550) ! CUTCELL VELOCITY DIVERGENCE
9813+
GAS_PHASE_OUTPUT_RES = CARTVELDIV(II,JJ,KK)
9814+
9815+
CASE(551) ! CARTESIAN VELOCITY DIVERGENCE
9816+
GAS_PHASE_OUTPUT_RES = CARTVELDIV(II,JJ,KK)
9817+
9818+
CASE(552) ! U_LS
9819+
GAS_PHASE_OUTPUT_RES = U_LS(II,JJ)
9820+
9821+
CASE(553) ! V_LS
9822+
GAS_PHASE_OUTPUT_RES = V_LS(II,JJ)
96999823

97009824
END SELECT IND_SELECT
97019825

@@ -9953,7 +10077,11 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
995310077
CASE( 3) ; SOLID_PHASE_OUTPUT = -W(BC%IIG,BC%JJG,BC%KKG-1)
995410078
CASE(-3) ; SOLID_PHASE_OUTPUT = W(BC%IIG,BC%JJG,BC%KKG )
995510079
END SELECT
9956-
IF (ICF>0) THEN
10080+
IF(PRESENT(OPT_CFACE_INDEX)) THEN
10081+
IND1 = CFA%CUT_FACE_IND1
10082+
IND2 = CFA%CUT_FACE_IND2
10083+
SOLID_PHASE_OUTPUT = CUT_FACE(IND1)%VEL(IND2)
10084+
ELSEIF (ICF>0) THEN
995710085
SOLID_PHASE_OUTPUT_CTF = 0._EB
995810086
CUT_FACE_AREA = 0._EB
995910087
NFACE=CUT_FACE(ICF)%NFACE

0 commit comments

Comments
 (0)