Skip to content

Commit

Permalink
FDS Source: Add ability to create complex ZONEs across multiple meshes
Browse files Browse the repository at this point in the history
  • Loading branch information
mcgratta committed Sep 28, 2018
1 parent d6d8248 commit d29ec58
Show file tree
Hide file tree
Showing 10 changed files with 228 additions and 74 deletions.
51 changes: 18 additions & 33 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Expand Up @@ -4184,42 +4184,26 @@ \subsection{HVAC Mass Transport}
\section{Pressure-Related Effects: The \texorpdfstring{{\tt ZONE}}{ZONE} Namelist Group (Table \ref{tbl:VENT})}
\label{info:ZONE}

FDS assumes pressure to be composed of a ``background'' component, $\bp(z,t)$, plus a perturbation pressure, $\tp(\bx,t)$. Most
often, $\bp$ is just the hydrostatic pressure, and $\tp$ is the flow-induced spatially-resolved perturbation.
You can specify any number of sealed compartments within the computational
domain that can have their own ``background'' pressures, and these compartments, or ``pressure zones,'' can be connected via leakage and duct paths whose
flow rates are tied to the pressure of the adjacent zones.
FDS assumes pressure to be composed of a ``background'' component, $\bp(z,t)$, plus a perturbation pressure, $\tp(\bx,t)$. Most often, $\bp$ is just the hydrostatic pressure, and $\tp$ is the flow-induced spatially-resolved perturbation. You can specify any number of sealed compartments within the computational domain that can have their own ``background'' pressures, and these compartments, or ``pressure zones,'' can be connected via leakage and duct paths whose flow rates are tied to the pressure of the adjacent zones.



\subsection{Specifying Pressure Zones}
\label{info:ZONE_Basics}

A pressure zone can be any region within the computational domain that is separated from the rest of the domain, or the exterior,
by solid obstructions. There is currently no algorithm within FDS to identify these zones based solely on your specified obstructions. Consequently, it is
necessary that you identify these zones explicitly in the input file. The basic syntax for a pressure {\ct ZONE} is:
A pressure zone can be any region within the computational domain that is separated from the rest of the domain, or the exterior, by solid obstructions. There is currently no algorithm within FDS to identify these zones based solely on your specified obstructions. Consequently, it is necessary that you identify these zones explicitly in the input file. The basic syntax for a pressure {\ct ZONE} is:
\begin{lstlisting}
&ZONE XB=0.3,1.2,0.4,2.9,0.3,4.5 /
\end{lstlisting}
This means that the rectangular region, $0.3<x<1.2$, $0.4<y<2.9$, $0.3<z<4.5$, is assumed to be within a sealed compartment. There can be multiple {\ct ZONE}s
declared. The indices of the zones, which are required for the specification of leaks and fans, are determined simply by the order in which they are specified in the input file.
By default, the exterior of the computational
domain is Zone~0. If there are no {\ct OPEN} boundaries, the entire computational domain will be assumed to be Zone~1.

There are several restrictions to assigning pressure zones. First, the declared pressure zones must be completely within a region of the
domain that is bordered by solid obstructions. If the sealed region is not rectangular, FDS will extend the specified {\ct ZONE} boundaries to
conform to the non-rectangular region. It is possible to ``break'' pressure zones by removing
obstructions between them. An example of how to break pressure zones is given below.
Second, pressure zones can span multiple meshes, but it is recommended that you check the pressure in each mesh to ensure consistency. Also, if the {\ct ZONE} does span multiple
meshes, make sure that the specified rectangular coordinates do so as well. This allows FDS to determine the actual extent of the {\ct ZONE} independently for each
mesh.

Note that if you plan to have one zone open up to another via the removal of an obstruction, make sure that the coordinates of the two
zones abut (i.e., touch) even if one of the zones includes the solid obstruction that separates them. FDS recognizes that a zone boundary has been removed when
two adjacent cells belonging to two different zones have no solid obstruction between them. It is recommended that you extend at least one
of the zone boundaries {\em into} the solid obstruction separating the two zones. That way, when the obstruction is removed, the newly created
gas phase cells will be assigned to one or the other zone and it will become obvious that two adjacent gas phase cells are of two different zones, at
which point the zones will merge and no longer have distinct background pressures.
This means that the rectangular region, $0.3<x<1.2$, $0.4<y<2.9$, $0.3<z<4.5$, is assumed to be within a sealed compartment. There can be multiple {\ct ZONE}s declared. The indices of the zones, which are required for the specification of leaks and fans, are determined simply by the order in which they are specified in the input file. By default, the exterior of the computational domain is Zone~0. If there are no {\ct OPEN} boundaries, the entire computational domain will be assumed to be Zone~1.

There are several restrictions to assigning pressure zones. First, the declared pressure zones must be completely within a region of the domain that is bordered by solid obstructions. If the sealed region is not rectangular, FDS will extend the specified {\ct ZONE} boundaries to conform to the non-rectangular region. It is possible to ``break'' pressure zones by removing obstructions between them. An example of how to break pressure zones is given below. Second, pressure zones can span multiple meshes, but it is recommended that you check the pressure in each mesh to ensure consistency. Also, if the {\ct ZONE} does span multiple meshes, make sure that the specified rectangular coordinates do so as well. This allows FDS to determine the actual extent of the {\ct ZONE} independently for each mesh. If the pressure zone has a non-rectangular shape such that it winds its way in and out of multiple meshes and you cannot create a single rectangular region to span it, you may use a series of points, one in each mesh touched by the pressure zone:
\begin{lstlisting}
&ZONE XYZ=1.0,2.0,2.3, 3.1,4.2,5.6, ... /
\end{lstlisting}
Each point should be clear of solid obstructions. A search algorithm will determine all other grid cells within the particular mesh belonging to that pressure zone.

Note that if you plan to have one zone open up to another via the removal of an obstruction, make sure that the coordinates of the two zones abut (i.e., touch) even if one of the zones includes the solid obstruction that separates them. FDS recognizes that a zone boundary has been removed when two adjacent cells belonging to two different zones have no solid obstruction between them. It is recommended that you extend at least one of the zone boundaries {\em into} the solid obstruction separating the two zones. That way, when the obstruction is removed, the newly created gas phase cells will be assigned to one or the other zone and it will become obvious that two adjacent gas phase cells are of two different zones, at which point the zones will merge and no longer have distinct background pressures.

For the special case where a zone has periodic boundaries ({\ct SURF\_ID='PERIODIC'} on {\ct VENT}), you must add {\ct PERIODIC=.TRUE.} on the {\ct ZONE} line.

Expand Down Expand Up @@ -10800,12 +10784,13 @@ \section{\texorpdfstring{{\tt ZONE}}{ZONE} (Pressure Zone Parameters)}
\multicolumn{5}{|c|}{{\ct ZONE} (Pressure Zone Parameters)} \\
\hline \hline
\endhead
{\ct ID} & Character & Section~\ref{info:ZONE_Basics} & & \\ \hline
{\ct LEAK\_AREA(N)} & Real & Section~\ref{info:Leaks} & m$^2$ & 0 \\ \hline
{\ct LEAK\_PRESSURE\_EXPONENT(N)} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline
{\ct LEAK\_REFERENCE\_PRESSURE(N)} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline
{\ct PERIODIC} & Logical & Section~\ref{info:ZONE_Basics} & & {\ct .FALSE.} \\ \hline
{\ct XB(6)} & Real Sextuplet & Section~\ref{info:ZONE_Basics} & m & \\ \hline
{\ct ID} & Character & Section~\ref{info:ZONE_Basics} & & \\ \hline
{\ct LEAK\_AREA(N)} & Real & Section~\ref{info:Leaks} & m$^2$ & 0 \\ \hline
{\ct LEAK\_PRESSURE\_EXPONENT(N)} & Real & Section~\ref{info:Leaks} & & 0.5 \\ \hline
{\ct LEAK\_REFERENCE\_PRESSURE(N)} & Real & Section~\ref{info:Leaks} & Pa & 4 \\ \hline
{\ct PERIODIC} & Logical & Section~\ref{info:ZONE_Basics} & & {\ct .FALSE.} \\ \hline
{\ct XB(6)} & Real Sextuplet & Section~\ref{info:ZONE_Basics} & m & \\ \hline
{\ct XYZ(3:N)} & Real Triplet Array & Section~\ref{info:ZONE_Basics} & m & \\ \hline
\end{longtable}


Expand Down
20 changes: 19 additions & 1 deletion Manuals/FDS_Verification_Guide/FDS_Verification_Guide.tex
Expand Up @@ -5116,7 +5116,7 @@ \subsection{Single Zone Leakage (\texorpdfstring{\textct{leak\_test}}{leak\_test
\label{leak_test_fig}
\end{figure}

\subsection{Multiple zone leakage (\texorpdfstring{\textct{leak\_test\_2}}{leak\_test\_2})}
\subsection{Multiple Zone Leakage (\texorpdfstring{\textct{leak\_test\_2}}{leak\_test\_2})}
\label{leak_test_2}

This case starts with the same input as \textct{leak\_test}. A second leakage vent is added to the floor of the discharge side of the fan. This vent leaks to the ambient. When the simulation starts the fan pushes air from one compartment to the other. As the pressure rises, the leakage increases until the leakage flow rate is equal to the fan flow rate. Since some air from the interior compartment is being discharged to the ambient, the average pressure of the two compartments decreases until the pressure of the interior compartment is equal to that of the ambient. At this point in time, there is no more leakage to the outside and the fan flow rate equals the leakage flow rate between the two compartments. Given the leakage area and the fan curve, this occurs when the pressure difference between the two compartments is the same as the pressure difference from \textct{leak\_test}, only now the discharge side should be at 0~Pa.
Expand All @@ -5130,6 +5130,24 @@ \subsection{Multiple zone leakage (\texorpdfstring{\textct{leak\_test\_2}}{leak\
\label{fig_HVAC_leak_fan}
\end{figure}

\subsection{Multiple Zone, Multiple Mesh Leakage (\texorpdfstring{\textct{zone\_shape\_2}}{zone\_shape\_2})}
\label{zone_shape_2}

A duct with a square 1~m cross section winds its way through a 2 by 2 by 2 array of meshes that span a sealed 6.2~m cubic domain. A fan forces air into one end of the duct at a rate of $\dot{V}=0.1$~m$^3$/s. The other end of the duct has a leak with effective area $A_\mathrm{L}=0.007746$~m$^2$. The expected pressure difference between the interior and exterior of the duct is
\be
\Delta p = \frac{\rho}{2} \left( \frac{\dot{V}}{A_\mathrm{L}} \right)^2 \approx 100 \; \mathrm{Pa}
\ee
The overall mass in the domain should not change. Figure~\ref{fig_zone_shape_2} displays the pressure difference and overall mass.
\begin{figure}[ht]
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}
\scalebox{1.0}{ \includegraphics[height=2.2in]{SCRIPT_FIGURES/zone_shape_2_pres} } &
\scalebox{1.0}{ \includegraphics[height=2.2in]{SCRIPT_FIGURES/zone_shape_2_mass} }
\end{tabular*}
\caption[The \textct{zone\_shape\_2} test case]{(Left) Pressure difference between interior and exterior of the duct. (Right) Overall mass.}
\label{fig_zone_shape_2}
\end{figure}


\subsection{Leak Pressure Exponent (\texorpdfstring{\textct{HVAC\_leak\_exponent}}{HVAC\_leak\_exponent})}
\label{HVAC_leak_exponent}

Expand Down
4 changes: 4 additions & 0 deletions Source/func.f90
Expand Up @@ -1243,6 +1243,10 @@ SUBROUTINE ASSIGN_PRESSURE_ZONE(NM,XX,YY,ZZ,I_ZONE,I_ZONE_OVERLAP)
M=>MESHES(NM)
I_ZONE_OVERLAP = 0

IF (XX<M%XS-TWO_EPSILON_EB .OR. XX>M%XF+TWO_EPSILON_EB .OR. &
YY<M%YS-TWO_EPSILON_EB .OR. YY>M%YF+TWO_EPSILON_EB .OR. &
ZZ<M%ZS-TWO_EPSILON_EB .OR. ZZ>M%ZF+TWO_EPSILON_EB) RETURN

ALLOCATE(Q_I(M%IBAR*M%JBAR*M%KBAR))
ALLOCATE(Q_J(M%IBAR*M%JBAR*M%KBAR))
ALLOCATE(Q_K(M%IBAR*M%JBAR*M%KBAR))
Expand Down
61 changes: 39 additions & 22 deletions Source/init.f90
Expand Up @@ -442,38 +442,55 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_1(DT,NM)

! Initialize pressure ZONEs

ALLOCATE(M%PRESSURE_ZONE(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO)
CALL ChkMemErr('INIT','PRESSURE_ZONE',IZERO)
ALLOCATE(M%PRESSURE_ZONE(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','PRESSURE_ZONE',IZERO)

M%PRESSURE_ZONE = 0

ZONE_LOOP: DO N=1,N_ZONE
PZ => P_ZONE(N)
IF (EVACUATION_ONLY(NM) .OR. PZ%EVACUATION) CYCLE ZONE_LOOP
DO K=0,KBP1
DO J=0,JBP1
DO I=0,IBP1
IF (M%PRESSURE_ZONE(I,J,K)==N) CYCLE
IF (M%XC(I) > PZ%X1 .AND. M%XC(I) < PZ%X2 .AND. &
M%YC(J) > PZ%Y1 .AND. M%YC(J) < PZ%Y2 .AND. &
M%ZC(K) > PZ%Z1 .AND. M%ZC(K) < PZ%Z2) THEN
IF (.NOT.M%SOLID(M%CELL_INDEX(I,J,K)) .AND. M%PRESSURE_ZONE(I,J,K)>0) THEN
WRITE(LU_ERR,'(A,I2,A,I2)') 'ERROR: ZONE ',N,' overlaps ZONE ',M%PRESSURE_ZONE(I,J,K)
STOP_STATUS = SETUP_STOP
RETURN
ENDIF
M%PRESSURE_ZONE(I,J,K) = N
IF (.NOT.M%SOLID(M%CELL_INDEX(I,J,K))) THEN
CALL ASSIGN_PRESSURE_ZONE(NM,M%XC(I),M%YC(J),M%ZC(K),N,N_OVERLAP)
IF (N_OVERLAP>0) THEN
WRITE(LU_ERR,'(A,I2,A,I2)') 'ERROR: ZONE ',N,' overlaps ZONE ',N_OVERLAP

BLOCK_IF: IF (PZ%PROCESS_XB) THEN
DO K=0,KBP1
DO J=0,JBP1
DO I=0,IBP1
IF (M%PRESSURE_ZONE(I,J,K)==N) CYCLE
IF (M%XC(I) > PZ%X1 .AND. M%XC(I) < PZ%X2 .AND. &
M%YC(J) > PZ%Y1 .AND. M%YC(J) < PZ%Y2 .AND. &
M%ZC(K) > PZ%Z1 .AND. M%ZC(K) < PZ%Z2) THEN
IF (.NOT.M%SOLID(M%CELL_INDEX(I,J,K)) .AND. M%PRESSURE_ZONE(I,J,K)>0) THEN
WRITE(LU_ERR,'(A,I2,A,I2)') 'ERROR: ZONE ',N,' overlaps ZONE ',M%PRESSURE_ZONE(I,J,K)
STOP_STATUS = SETUP_STOP
RETURN
ENDIF
ENDIF
ENDIF
M%PRESSURE_ZONE(I,J,K) = N
IF (.NOT.M%SOLID(M%CELL_INDEX(I,J,K))) THEN
CALL ASSIGN_PRESSURE_ZONE(NM,M%XC(I),M%YC(J),M%ZC(K),N,N_OVERLAP)
IF (N_OVERLAP>0) THEN
WRITE(LU_ERR,'(A,I2,A,I2)') 'ERROR: ZONE ',N,' overlaps ZONE ',N_OVERLAP
STOP_STATUS = SETUP_STOP
RETURN
ENDIF
ENDIF
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF BLOCK_IF

POINT_LOOP: DO NN=1,PZ%N_XYZ
CALL ASSIGN_PRESSURE_ZONE(NM,PZ%X(NN),PZ%Y(NN),PZ%Z(NN),N,N_OVERLAP)
IF (N_OVERLAP>0) THEN
WRITE(LU_ERR,'(A,I2,A,I2)') 'ERROR: ZONE ',N,' overlaps ZONE ',N_OVERLAP
STOP_STATUS = SETUP_STOP
RETURN
ENDIF
ENDDO POINT_LOOP

ENDDO ZONE_LOOP

! Evacuation only

EVACUATION_ZONE_LOOP: DO N=1,N_ZONE
PZ => P_ZONE(N)
IF (.NOT.PZ%EVACUATION .OR. .NOT.EVACUATION_ONLY(NM)) CYCLE EVACUATION_ZONE_LOOP
Expand Down
66 changes: 52 additions & 14 deletions Source/read.f90
Expand Up @@ -11206,15 +11206,18 @@ END SUBROUTINE READ_INIT
SUBROUTINE READ_ZONE

REAL(EB), ALLOCATABLE, DIMENSION(:) :: LEAK_AREA, LEAK_REFERENCE_PRESSURE, LEAK_PRESSURE_EXPONENT
REAL(EB) :: XYZ(3,20)
INTEGER :: N,NM,NN,N_EVAC_ZONE,N_EVAC_MESH,NM_EVAC
LOGICAL :: SEALED,READ_ZONE_LINES,PERIODIC
CHARACTER(LABEL_LENGTH) :: ID
NAMELIST /ZONE/ ID,LEAK_AREA,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,XB,PERIODIC
NAMELIST /ZONE/ ID,LEAK_AREA,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,XB,PERIODIC,XYZ

ALLOCATE (LEAK_AREA(0:MAX_LEAK_PATHS))
ALLOCATE (LEAK_REFERENCE_PRESSURE(0:MAX_LEAK_PATHS))
ALLOCATE (LEAK_PRESSURE_EXPONENT(0:MAX_LEAK_PATHS))

! Count the ZONE lines

N_ZONE = 0
REWIND(LU_INPUT) ; INPUT_FILE_LINE_NUMBER = 0
COUNT_ZONE_LOOP: DO
Expand All @@ -11229,7 +11232,7 @@ SUBROUTINE READ_ZONE
ENDDO COUNT_ZONE_LOOP
11 REWIND(LU_INPUT) ; INPUT_FILE_LINE_NUMBER = 0

! Check to see if there are any OPEN vents. If there are not, and there are no declared pressure ZONEs, stop with an error.
! Check to see if there are any OPEN vents. If there are not, and there are no declared pressure ZONEs, assume the whole domain

SEALED = .TRUE.

Expand Down Expand Up @@ -11296,6 +11299,8 @@ SUBROUTINE READ_ZONE
ALLOCATE(P_ZONE(N)%LEAK_REFERENCE_PRESSURE(0:N_ZONE),STAT=IZERO)
CALL ChkMemErr('READ','LEAK_REFERENCE_PRESSURE',IZERO)

! Default ZONE parameters

IF (N<1000) WRITE(ID,'(A,I3)') 'ZONE_',N
IF (N<100) WRITE(ID,'(A,I2)') 'ZONE_',N
IF (N<10) WRITE(ID,'(A,I1)') 'ZONE_',N
Expand All @@ -11309,39 +11314,72 @@ SUBROUTINE READ_ZONE
XB(5) = -1000000._EB
XB(6) = 1000000._EB
PERIODIC = .FALSE.
XYZ = -1000000._EB

! Read the ZONE line(s)

IF (READ_ZONE_LINES) THEN
CALL CHECKREAD('ZONE',LU_INPUT,IOS)
IF (IOS==1) EXIT READ_ZONE_LOOP
READ(LU_INPUT,ZONE)
ENDIF

! Reorder XB coords if necessary

CALL CHECK_XB(XB)

! Assign parameters to P_ZONE dervied type variable

P_ZONE(N)%ID = ID
DO NN=0,N_ZONE
P_ZONE(N)%LEAK_AREA(NN) = LEAK_AREA(NN)
P_ZONE(N)%LEAK_REFERENCE_PRESSURE(NN) = LEAK_REFERENCE_PRESSURE(NN)
P_ZONE(N)%LEAK_PRESSURE_EXPONENT(NN) = LEAK_PRESSURE_EXPONENT(NN)
ENDDO
P_ZONE(N)%EVACUATION = .FALSE.
P_ZONE(N)%PERIODIC = PERIODIC

P_ZONE(N)%X1 = XB(1)
P_ZONE(N)%X2 = XB(2)
P_ZONE(N)%Y1 = XB(3)
P_ZONE(N)%Y2 = XB(4)
P_ZONE(N)%Z1 = XB(5)
P_ZONE(N)%Z2 = XB(6)
P_ZONE(N)%EVACUATION = .FALSE.
P_ZONE(N)%PERIODIC = PERIODIC

P_ZONE(N)%N_XYZ = 0
IF (XYZ(1,1)>-999999._EB) THEN ! Process the XYZ input
ALLOCATE(P_ZONE(N)%X(20))
ALLOCATE(P_ZONE(N)%Y(20))
ALLOCATE(P_ZONE(N)%Z(20))
DO NN=1,20
IF (XYZ(1,NN)>-999999._EB) THEN
P_ZONE(N)%X(NN) = XYZ(1,NN)
P_ZONE(N)%Y(NN) = XYZ(2,NN)
P_ZONE(N)%Z(NN) = XYZ(3,NN)
P_ZONE(N)%N_XYZ = P_ZONE(N)%N_XYZ + 1
ELSE
EXIT
ENDIF
ENDDO
ENDIF

! If the user specifies XYZ but not XB, then do not use the default XB values

IF (P_ZONE(N)%N_XYZ>0 .AND. XB(1)<-999999._EB) P_ZONE(N)%PROCESS_XB = .FALSE.

! Check the leakage paths and logic

DO NN=0,N_ZONE
P_ZONE(N)%LEAK_AREA(NN) = LEAK_AREA(NN)
P_ZONE(N)%LEAK_REFERENCE_PRESSURE(NN) = LEAK_REFERENCE_PRESSURE(NN)
P_ZONE(N)%LEAK_PRESSURE_EXPONENT(NN) = LEAK_PRESSURE_EXPONENT(NN)
ENDDO

IF (N > 1) THEN
DO NN = 1,N-1
IF(P_ZONE(NN)%LEAK_AREA(N)>0._EB) THEN
IF(P_ZONE(N)%LEAK_AREA(NN) > 0._EB) THEN
DO NN=1,N-1
IF (P_ZONE(NN)%LEAK_AREA(N)>0._EB) THEN
IF (P_ZONE(N)%LEAK_AREA(NN) > 0._EB) THEN
WRITE(MESSAGE,'(A,I0,A,I0)') 'ERROR: LEAK_AREA specified twice for ZONE ',N,' and ',NN
CALL SHUTDOWN(MESSAGE) ; RETURN
ELSE
P_ZONE(N)%LEAK_AREA(NN) = P_ZONE(NN)%LEAK_AREA(N)
P_ZONE(N)%LEAK_AREA(NN) = P_ZONE(NN)%LEAK_AREA(N)
P_ZONE(N)%LEAK_REFERENCE_PRESSURE(NN) = P_ZONE(NN)%LEAK_REFERENCE_PRESSURE(N)
P_ZONE(N)%LEAK_PRESSURE_EXPONENT(NN) = P_ZONE(NN)%LEAK_PRESSURE_EXPONENT(N)
P_ZONE(N)%LEAK_PRESSURE_EXPONENT(NN) = P_ZONE(NN)%LEAK_PRESSURE_EXPONENT(N)
ENDIF
ENDIF
ENDDO
Expand Down
6 changes: 3 additions & 3 deletions Source/type.f90
Expand Up @@ -729,9 +729,9 @@ MODULE TYPES

TYPE P_ZONE_TYPE
REAL(EB) :: X1,X2,Y1,Y2,Z1,Z2,DPSTAR=0._EB
REAL(EB), ALLOCATABLE, DIMENSION(:) :: LEAK_AREA, LEAK_REFERENCE_PRESSURE, LEAK_PRESSURE_EXPONENT
INTEGER :: N_DUCTNODES,MESH_INDEX=0
LOGICAL :: EVACUATION=.FALSE.,PERIODIC=.FALSE.
REAL(EB), ALLOCATABLE, DIMENSION(:) :: LEAK_AREA,LEAK_REFERENCE_PRESSURE,LEAK_PRESSURE_EXPONENT,X,Y,Z
INTEGER :: N_DUCTNODES,MESH_INDEX=0,N_XYZ=0
LOGICAL :: EVACUATION=.FALSE.,PERIODIC=.FALSE.,PROCESS_XB=.TRUE.
INTEGER, ALLOCATABLE, DIMENSION(:) :: NODE_INDEX
CHARACTER(LABEL_LENGTH) :: ID
END TYPE P_ZONE_TYPE
Expand Down

0 comments on commit d29ec58

Please sign in to comment.