Skip to content

Commit 7171f72

Browse files
committed
FDS Source: allow a combination of cut-faces and cartesian wall cells to make up topography for level set fire spread
1 parent fe2fbee commit 7171f72

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

Source/vege.f90

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -110,24 +110,27 @@ SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD_1(NM)
110110
ENDDO
111111
ENDDO
112112
DEALLOCATE(SUM_AREA)
113+
ENDIF
113114

114-
ELSE
115-
116-
DO IW=1,N_EXTERNAL_WALL_CELLS+N_INTERNAL_WALL_CELLS
117-
WC => WALL(IW)
118-
BC => BOUNDARY_COORD(WC%BC_INDEX)
119-
IF (BC%IOR==3 .AND. WC%BOUNDARY_TYPE==SOLID_BOUNDARY) THEN
120-
IF (WC%OBST_INDEX>0) THEN
121-
Z_LS(BC%IIG,BC%JJG) = OBSTRUCTION(WC%OBST_INDEX)%Z2
122-
ELSE
123-
Z_LS(BC%IIG,BC%JJG) = Z(BC%KKG-1)
124-
ENDIF
125-
K_LS(BC%IIG,BC%JJG) = BC%KKG
126-
LS_SURF_INDEX(BC%IIG,BC%JJG)= WC%SURF_INDEX
115+
! Set up level set on cartesian faces only where they are not under a GEOM
116+
DO IW=1,N_EXTERNAL_WALL_CELLS+N_INTERNAL_WALL_CELLS
117+
WC => WALL(IW)
118+
BC => BOUNDARY_COORD(WC%BC_INDEX)
119+
IF (BC%IOR==3 .AND. WC%BOUNDARY_TYPE==SOLID_BOUNDARY) THEN
120+
IF (WC%OBST_INDEX>0) THEN
121+
IF (OBSTRUCTION(WC%OBST_INDEX)%Z2<Z_LS(BC%IIG,BC%JJG)) CYCLE
122+
Z_LS(BC%IIG,BC%JJG) = OBSTRUCTION(WC%OBST_INDEX)%Z2
123+
ELSE
124+
IF (Z(BC%KKG-1)<Z_LS(BC%IIG,BC%JJG)) CYCLE
125+
Z_LS(BC%IIG,BC%JJG) = Z(BC%KKG-1)
127126
ENDIF
128-
ENDDO
129-
130-
ENDIF
127+
K_LS(BC%IIG,BC%JJG) = BC%KKG
128+
IF (CC_IBM) THEN
129+
LS_KLO_TERRAIN(BC%IIG,BC%JJG) = BC%KKG; LS_KHI_TERRAIN(BC%IIG,BC%JJG) = BC%KKG
130+
ENDIF
131+
LS_SURF_INDEX(BC%IIG,BC%JJG)= WC%SURF_INDEX
132+
ENDIF
133+
ENDDO
131134

132135
Z_LS(1:IBAR, 0) = 2._EB*Z_LS(1:IBAR, 1) - Z_LS(1:IBAR, 2)
133136
Z_LS(1:IBAR,JBP1) = 2._EB*Z_LS(1:IBAR,JBAR) - Z_LS(1:IBAR,JBM1)
@@ -309,6 +312,7 @@ SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD_2(NM,MODE)
309312
ENDDO
310313
ENDDO
311314

315+
312316
T_USED(15) = T_USED(15) + CURRENT_TIME() - T_NOW
313317
END SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD_2
314318

@@ -509,14 +513,25 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
509513
IF (.NOT. SF%VEG_LSET_SPREAD) CYCLE
510514
DO IKT=LS_KLO_TERRAIN(IIG,JJG),LS_KHI_TERRAIN(IIG,JJG)
511515
! Loop over all CFACEs corresponding to IIG,JJG and set B1%T_IGN and B2%PHI_LS as below
512-
ICF = CCVAR(IIG,JJG,IKT,3); IF(ICF<1) CYCLE ! CC_IDCF = 3 CUT_FACE container for this cell.
513-
DO IW=1,CUT_FACE(ICF)%NFACE ! All CC_INBOUNDARY CFACES on this cell.
514-
CFA => CFACE(CUT_FACE(ICF)%CFACE_INDEX(IW))
515-
B1 => BOUNDARY_PROP1(CFA%B1_INDEX)
516+
ICF = CCVAR(IIG,JJG,IKT,3) ! CC_IDCF = 3 CUT_FACE container for this cell.
517+
IF (ICF<1) THEN
518+
IF (K_LS(IIG,JJG)<1) CYCLE
519+
IC = CELL_INDEX(IIG,JJG,K_LS(IIG,JJG))
520+
IW = CELL(IC)%WALL_INDEX(-3)
521+
WC => WALL(IW)
522+
B1 => BOUNDARY_PROP1(WC%B1_INDEX)
516523
IF (PHI_LS(IIG,JJG)>=0._EB .AND. B1%T_IGN>9.E5_EB) CALL IGNITE_GRID_CELL
517-
B2 => BOUNDARY_PROP2(CFA%B2_INDEX)
524+
B2 => BOUNDARY_PROP2(WC%B2_INDEX)
518525
B2%PHI_LS = PHI_LS(IIG,JJG)
519-
ENDDO
526+
ELSE
527+
DO IW=1,CUT_FACE(ICF)%NFACE ! All CC_INBOUNDARY CFACES on this cell.
528+
CFA => CFACE(CUT_FACE(ICF)%CFACE_INDEX(IW))
529+
B1 => BOUNDARY_PROP1(CFA%B1_INDEX)
530+
IF (PHI_LS(IIG,JJG)>=0._EB .AND. B1%T_IGN>9.E5_EB) CALL IGNITE_GRID_CELL
531+
B2 => BOUNDARY_PROP2(CFA%B2_INDEX)
532+
B2%PHI_LS = PHI_LS(IIG,JJG)
533+
ENDDO
534+
ENDIF
520535
ENDDO
521536
ENDDO
522537
ENDDO

0 commit comments

Comments
 (0)