@@ -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
132135Z_LS(1 :IBAR, 0 ) = 2._EB * Z_LS(1 :IBAR, 1 ) - Z_LS(1 :IBAR, 2 )
133136Z_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
310313ENDDO
311314
315+
312316T_USED(15 ) = T_USED(15 ) + CURRENT_TIME() - T_NOW
313317END 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