@@ -555,18 +555,18 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
555555 WC = > WALL(IW)
556556 B1 = > BOUNDARY_PROP1(WC% B1_INDEX)
557557 OUTPUT_INDEX = IW
558- IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
559558 B2 = > BOUNDARY_PROP2(WC% B2_INDEX)
560559 B2% PHI_LS = PHI_LS(IIG,JJG)
560+ IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
561561 ELSE
562562 DO IW= 1 ,CUT_FACE(ICF)% NFACE ! All CC_INBOUNDARY CFACES on this cell.
563563 CFA = > CFACE(CUT_FACE(ICF)% CFACE_INDEX(IW))
564564 B1 = > BOUNDARY_PROP1(CFA% B1_INDEX)
565565 OUTPUT_INDEX = CUT_FACE(ICF)% CFACE_INDEX(IW) - &
566566 INTERNAL_CFACE_CELLS_LB+ N_EXTERNAL_WALL_CELLS+ N_INTERNAL_WALL_CELLS
567- IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
568567 B2 = > BOUNDARY_PROP2(CFA% B2_INDEX)
569568 B2% PHI_LS = PHI_LS(IIG,JJG)
569+ IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
570570 ENDDO
571571 ENDIF
572572 ENDDO
@@ -583,9 +583,9 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
583583 WC = > WALL(IW)
584584 B1 = > BOUNDARY_PROP1(WC% B1_INDEX)
585585 OUTPUT_INDEX = IW
586- IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
587586 B2 = > BOUNDARY_PROP2(WC% B2_INDEX)
588587 B2% PHI_LS = PHI_LS(IIG,JJG)
588+ IF (PHI_LS(IIG,JJG)>= 0._EB .AND. B1% T_IGN> 9.E5_EB ) CALL IGNITE_GRID_CELL
589589 ENDDO
590590 ENDDO
591591 ENDIF
@@ -600,10 +600,10 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
600600
601601SUBROUTINE IGNITE_GRID_CELL
602602
603- REAL (EB) :: CROSSING_DISTANCE
603+ REAL (EB) :: CROSSING_DISTANCE,FIRE_DEPTH,TAU_2
604604
605605B1% T_IGN = T
606- ROS_MAG = MAX (0.01_EB ,SQRT (SR_X_LS(IIG,JJG)** 2 + SR_Y_LS(IIG,JJG)** 2 )) ! Rate Of Spread magnitude
606+ ROS_MAG = MAX (0.0001_EB ,SQRT (SR_X_LS(IIG,JJG)** 2 + SR_Y_LS(IIG,JJG)** 2 )) ! Rate Of Spread magnitude
607607IF (ABS (SR_X_LS(IIG,JJG))<TWO_EPSILON_EB) THEN
608608 CROSSING_DISTANCE = DY(JJG)
609609ELSEIF (ABS (SR_Y_LS(IIG,JJG))<TWO_EPSILON_EB) THEN
@@ -612,11 +612,23 @@ SUBROUTINE IGNITE_GRID_CELL
612612 CROSSING_DISTANCE = SQRT ( (MIN (DX(IIG),ABS (SR_X_LS(IIG,JJG)/ SR_Y_LS(IIG,JJG))* DY(JJG)))** 2 + &
613613 (MIN (DY(JJG),ABS (SR_Y_LS(IIG,JJG)/ SR_X_LS(IIG,JJG))* DX(IIG)))** 2 )
614614ENDIF
615- B1% BURN_DURATION = SF% BURN_DURATION + CROSSING_DISTANCE/ ROS_MAG
616- B1% AREA_ADJUST = SF% BURN_DURATION/ B1% BURN_DURATION
617- ! Adjust mass flux for TAU ramp to conserve total energy output
615+ FIRE_DEPTH = SF% BURN_DURATION* ROS_MAG
616+ IF (FIRE_DEPTH >= CROSSING_DISTANCE) THEN
617+ ! tau_1
618+ B2% TAU_LS = CROSSING_DISTANCE/ ROS_MAG
619+ ! tau_2
620+ TAU_2 = (FIRE_DEPTH - CROSSING_DISTANCE)/ ROS_MAG
621+ ELSE
622+ ! tau_1
623+ B2% TAU_LS = FIRE_DEPTH/ ROS_MAG
624+ ! tau_2
625+ TAU_2 = (CROSSING_DISTANCE - FIRE_DEPTH)/ ROS_MAG
626+ ENDIF
627+
628+ B1% BURN_DURATION = 2._EB * B2% TAU_LS + TAU_2
629+ ! Adjust mass flux to conserve total energy output
618630IF (LEVEL_SET_COUPLED_FIRE) B1% AREA_ADJUST = B1% AREA_ADJUST * &
619- B1 % BURN_DURATION/ (B1 % BURN_DURATION - TWTH * SF % RAMP(REACTION( 1 ) % FUEL_SMIX_INDEX) % TAU )
631+ SF % BURN_DURATION/ (B2 % TAU_LS + TAU_2 )
620632
621633IF (STORE_LS_SPREAD_RATE) LS_SPREAD_RATE(OUTPUT_INDEX) = SQRT (SR_X_LS(IIG,JJG)** 2 + SR_Y_LS(IIG,JJG)** 2 )
622634
0 commit comments