Skip to content

Commit

Permalink
"a update for smoke plumerise"
Browse files Browse the repository at this point in the history
  • Loading branch information
haiqinli committed Jun 14, 2024
1 parent ef788da commit 5ff184e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
24 changes: 13 additions & 11 deletions physics/smoke_dust/module_add_emiss_burn.F90
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,17 @@ subroutine add_emis_burn(dtstep,dz8w,rho_phy,pi,ebb_min, &
real(kind_phys) :: timeq, fire_age, age_hr, dt1,dt2,dtm ! For BB emis. diurnal cycle calculation

! For Gaussian diurnal cycle
real(kind_phys), INTENT(IN) :: sc_factor ! to scale up the wildfire emissions
real(kind_phys), INTENT(IN) :: sc_factor ! to scale up the wildfire emissions, Jordan please make this a namelist option
real(kind_phys), PARAMETER :: rinti=2.1813936e-8, ax2=3400., const2=130., &
coef2=10.6712963e-4, cx2=7200., timeq_max=3600.*24.
!>-- Fire parameters: Fores west, Forest east, Shrubland, Savannas, Grassland, Cropland
real(kind_phys), dimension(1:5), parameter :: avg_fire_dur = (/8.9, 4.2, 3.3, 3.0, 1.4/)
real(kind_phys), dimension(1:5), parameter :: sigma_fire_dur = (/8.7, 6.0, 5.5, 5.2, 2.4/)
! For fire diurnal cycle calculation
real(kind_phys), parameter :: avgx1=-2.0, sigmx1=0.7, C1=0.083 ! Ag fires
real(kind_phys), parameter :: avgx2=-0.1, sigmx2=0.8, C2=0.55 ! Grass fires, slash burns
!real(kind_phys), parameter :: avgx1=-2.0, sigmx1=0.7, C1=0.083 ! Ag fires
!real(kind_phys), parameter :: avgx2=-0.1, sigmx2=0.8, C2=0.55 ! Grass fires, slash burns
real(kind_phys), parameter :: avgx1=0., sigmx1=2.2, C1=0.2 ! Ag fires
real(kind_phys), parameter :: avgx2=0.5, sigmx2=0.8, C2=1.1 ! Grass fires, slash burns

timeq= gmt*3600._kind_phys + real(time_int,4)
timeq= mod(timeq,timeq_max)
Expand All @@ -73,7 +75,7 @@ subroutine add_emis_burn(dtstep,dz8w,rho_phy,pi,ebb_min, &

do j=jts,jte
do i=its,ite
fire_age= MAX(0.01_kind_phys,time_int/3600. + (fire_end_hr(i,j)-1.0)) !One hour delay is due to the latency of the RAVE files, hours
fire_age= MAX(0.01_kind_phys,time_int/3600. + (fire_end_hr(i,j)-2.0)) !One hour delay is due to the latency of the RAVE files, hours; one more hour subtracted to have fire_end_hr in the range of 0-24 instead of 0-25

SELECT CASE ( fire_type(i,j) ) !Ag, urban fires, bare land etc.
CASE (1)
Expand All @@ -87,7 +89,7 @@ subroutine add_emis_burn(dtstep,dz8w,rho_phy,pi,ebb_min, &
WRITE(6,*) 'coef_bb_dc(i,j) ',coef_bb_dc(i,j)
END IF

CASE (2:3) ! Savanna and grassland fires, or fires in the eastern US
CASE (2) ! Savanna and grassland fires, or fires in the eastern US
! coef_bb_dc(i,j) = coef_con*1._kind_phys/(sigma_fire_dur(4) *fire_age) * &
! exp(- ( log(fire_age) - avg_fire_dur(4))**2 /(2._kind_phys*sigma_fire_dur(4)**2 ))
coef_bb_dc(i,j)= C2/(sigmx2* fire_age)* exp(- (log(fire_age) - avgx2)**2 /(2.*sigmx2**2 ) )
Expand All @@ -97,7 +99,7 @@ subroutine add_emis_burn(dtstep,dz8w,rho_phy,pi,ebb_min, &
WRITE(6,*) 'coef_bb_dc(i,j) ',coef_bb_dc(i,j)
END IF

CASE (4) ! wildfires
CASE (3,4) ! wildfires
IF (swdown(i,j)<.1 .AND. fire_age> 12. .AND. fire_hist(i,j)>0.75) THEN
fire_hist(i,j)= 0.75_kind_phys
ENDIF
Expand All @@ -114,11 +116,11 @@ subroutine add_emis_burn(dtstep,dz8w,rho_phy,pi,ebb_min, &
dc_hwp= MIN(20._kind_phys,dc_hwp)

! RAR: Gaussian profile for wildfires, to be used later
dt1= abs(timeq - peak_hr(i,j))
dt2= timeq_max - peak_hr(i,j) + timeq ! peak hour is always <86400.
dtm= MIN(dt1,dt2)
dc_gp = rinti*( ax2 * exp(- dtm**2/(2._kind_phys*cx2**2) ) + const2 - coef2*timeq )
dc_gp = MAX(0._kind_phys,dc_gp)
!dt1= abs(timeq - peak_hr(i,j))
!dt2= timeq_max - peak_hr(i,j) + timeq ! peak hour is always <86400.
!dtm= MIN(dt1,dt2)
!dc_gp = rinti*( ax2 * exp(- dtm**2/(2._kind_phys*cx2**2) ) + const2 - coef2*timeq )
!dc_gp = MAX(0._kind_phys,dc_gp)

!dc_fn = MIN(dc_hwp/dc_gp,3._kind_phys)
coef_bb_dc(i,j) = sc_factor* fire_hist(i,j)* dc_hwp ! RAR: scaling factor is applied to the forest fires only, except the eastern US
Expand Down
10 changes: 5 additions & 5 deletions physics/smoke_dust/rrfs_smoke_wrapper.F90
Original file line number Diff line number Diff line change
Expand Up @@ -370,10 +370,10 @@ subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate,
fire_type(i,j) = 0
else if (lu_qfire(i,j)>0.9) then ! Ag. and urban fires
fire_type(i,j) = 1
else if (lu_sfire(i,j)>0.9) then ! savanna and grassland fires
fire_type(i,j) = 2
else if (xlong(i,j)>-100. .AND. xlat(i,j)>25. .AND. xlat(i,j)<41.) then
fire_type(i,j) = 3 ! slash burn and wildfires in the east, eastern temperate forest ecosystem
else if (xlong(i,j)>260. .AND. xlat(i,j)>25. .AND. xlat(i,j)<41.) then
fire_type(i,j) = 2 ! slash burn and wildfires in the east, eastern temperate forest ecosystem
else if (lu_sfire(i,j)>0.8) then
fire_type(i,j) = 3 ! savanna and grassland fires
else
fire_type(i,j) = 4 ! potential wildfires
end if
Expand Down Expand Up @@ -951,7 +951,7 @@ subroutine rrfs_smoke_prep( &

!---- Calculate HWP based on selected method
hwp_local = 0._kind_phys
precip_factor = 2.5_kind_phys + real(hour_int,type=kind_phys)*5._kind_phys/24._kind_phys
precip_factor = 2.5_kind_phys + real(hour_inti, kind=kind_phys)*2.5_kind_phys/24._kind_phys
! total precip is only in the SMOKE_RRFS_DATA if ebb_dcycle == 2 and should be
! filled here before calculating HWP
! !!WARNING!! IF EBB_DYCLE != 2 and HWP_METHOD = 1 | 3, HWP will not take into account totprcp_24hrs
Expand Down

0 comments on commit 5ff184e

Please sign in to comment.