Skip to content

Commit 5bf5029

Browse files
authored
Merge pull request #15197 from ericvmueller/master
FDS Source: fix bug in Rothermel wind factor with multiple level set …
2 parents 29f6c93 + 766bb21 commit 5bf5029

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

Source/type.f90

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,8 @@ MODULE TYPES
10151015
REAL(EB) :: VEG_LSET_IGNITE_T,VEG_LSET_ROS_HEAD,VEG_LSET_ROS_00,VEG_LSET_QCON,VEG_LSET_ROS_FLANK,VEG_LSET_ROS_BACK, &
10161016
VEG_LSET_WIND_EXP,VEG_LSET_SIGMA,VEG_LSET_HT,VEG_LSET_BETA,&
10171017
VEG_LSET_M1,VEG_LSET_M10,VEG_LSET_M100,VEG_LSET_MLW,VEG_LSET_MLH,VEG_LSET_SURF_LOAD,VEG_LSET_FIREBASE_TIME, &
1018-
VEG_LSET_CHAR_FRACTION,VEG_LSET_WIND_HEIGHT
1018+
VEG_LSET_CHAR_FRACTION,VEG_LSET_WIND_HEIGHT, &
1019+
B_ROTH,C_ROTH,BETA_ROTH
10191020
INTEGER :: VEG_LSET_FUEL_INDEX,I_RAMP_LS_WIND=-1
10201021

10211022
END TYPE SURFACE_TYPE

Source/vege.f90

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ MODULE VEGE
1212
PUBLIC INITIALIZE_LEVEL_SET_FIRESPREAD_1,INITIALIZE_LEVEL_SET_FIRESPREAD_2,LEVEL_SET_FIRESPREAD,UPDATE_FIRE_SPREAD_OUTPUTS
1313
INTEGER :: IZERO
1414
INTEGER :: LIMITER_LS
15-
REAL(EB) :: B_ROTH,BETA_OP_ROTH,C_ROTH,E_ROTH,T_NOW
15+
REAL(EB) :: BETA_OP_ROTH,E_ROTH,T_NOW
1616
REAL(EB), POINTER, DIMENSION(:,:) :: PHI_LS_P
1717
REAL(EB), PARAMETER :: PHI_LS_MIN=-1._EB, PHI_LS_MAX=1._EB
1818
TYPE(MESH_TYPE), POINTER :: M
@@ -294,10 +294,12 @@ SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD_2(NM,MODE)
294294

295295
! Variables used in Phi_W slope factor formulas below (Rothermel model)
296296

297-
B_ROTH = 0.15988_EB * (SF%VEG_LSET_SIGMA**0.54_EB)
298-
C_ROTH = 7.47_EB * EXP(-0.8711_EB * (SF%VEG_LSET_SIGMA**0.55_EB))
297+
SF%B_ROTH = 0.15988_EB * (SF%VEG_LSET_SIGMA**0.54_EB)
298+
SF%C_ROTH = 7.47_EB * EXP(-0.8711_EB * (SF%VEG_LSET_SIGMA**0.55_EB))
299299
E_ROTH = 0.715_EB * EXP(-0.01094_EB * SF%VEG_LSET_SIGMA)
300300
BETA_OP_ROTH = 0.20395_EB * (SF%VEG_LSET_SIGMA**(-0.8189_EB))! Optimum packing ratio
301+
! Beta contribution to Rothermel wind factor
302+
SF%BETA_ROTH = (SF%VEG_LSET_BETA/BETA_OP_ROTH)**(-E_ROTH)
301303

302304
! Slope vector
303305
DZTDX_DUM = DZTDX(IIG,JJG)
@@ -460,7 +462,7 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
460462
IF (SF%I_RAMP_LS_WIND>0) THEN
461463
WIND_FACTOR = EVALUATE_RAMP(UMF_MAG/60._EB,SF%I_RAMP_LS_WIND)
462464
ELSE
463-
WIND_FACTOR = C_ROTH * ((3.281_EB * UMF_MAG)**B_ROTH) * (SF%VEG_LSET_BETA/BETA_OP_ROTH)**(-E_ROTH) ! Bova et al., Eq. A1
465+
WIND_FACTOR = SF%C_ROTH * ((3.281_EB * UMF_MAG)**SF%B_ROTH) * SF%BETA_ROTH ! Bova et al., Eq. A1
464466
ENDIF
465467

466468

@@ -499,7 +501,7 @@ SUBROUTINE LEVEL_SET_FIRESPREAD(T,DT,NM)
499501
! 0.3048 ~= 1/3.281
500502

501503
UMF_TMP = &
502-
0.3048_EB/PHI_S*(((SF%VEG_LSET_BETA / BETA_OP_ROTH)**E_ROTH)*PHI_S/C_ROTH)**(1._EB/B_ROTH)
504+
0.3048_EB/PHI_S*(SF%BETA_ROTH*PHI_S/SF%C_ROTH)**(1._EB/SF%B_ROTH)
503505

504506
UMF_X = UMF_X + UMF_TMP*PHI_S_X(IIG,JJG)
505507
UMF_Y = UMF_Y + UMF_TMP*PHI_S_Y(IIG,JJG)

0 commit comments

Comments
 (0)