! WRF:MEDIATION_LAYER:FIRE_MODEL
#define DEBUG_OUT
module module_fr_fire_driver_wrf 2
! wrf-specific driver
use module_fr_fire_driver
use module_fr_fire_atm
implicit none
contains
subroutine fire_driver_em_init (grid , config_flags & 1,6
,ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe)
! stub to call fire_driver_em with irun=0 and omit last 3 args
USE module_domain
, only: domain , get_ijk_from_subgrid
USE module_configure
, only : grid_config_rec_type
implicit none
TYPE(domain) , TARGET :: grid ! data
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
integer, intent(in):: &
ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe
! local
integer :: & ! fire mesh sizes
ifds,ifde, kfds,kfde, jfds,jfde, &
ifms,ifme, kfms,kfme, jfms,jfme, &
ifps,ifpe, kfps,kfpe, jfps,jfpe
! dummies
real,dimension(1,1,1)::rho,z_at_w,dz8w
call message
('fire_driver_em_init: FIRE initialization start')
! get fire mesh dimensions
CALL get_ijk_from_subgrid
( grid , &
ifds,ifde, jfds,jfde,kfds,kfde, &
ifms,ifme, jfms,jfme,kfms,kfme, &
ifps,ifpe, jfps,jfpe,kfps,kfpe)
call fire_driver_em
( grid , config_flags &
,1,3,0 & ! ifun start, end, test steps
,ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe &
,ifds,ifde, jfds,jfde &
,ifms,ifme, jfms,jfme &
,ifps,ifpe, jfps,jfpe &
)
call message
('fire_driver_em_init: FIRE initialization complete')
end subroutine fire_driver_em_init
!
!***
!
subroutine fire_driver_em_step (grid , config_flags & 1,10
,ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe &
,rho,z_at_w,dz8w )
! stub to call fire_driver_em
USE module_domain
, only: domain , get_ijk_from_subgrid
USE module_configure
, only : grid_config_rec_type
USE module_fr_fire_util
, only : fire_test_steps
implicit none
TYPE(domain) , TARGET :: grid ! data
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
integer, intent(in):: &
ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe
real,dimension(ims:ime, kms:kme, jms:jme),intent(in)::rho,z_at_w,dz8w
! local
integer :: & ! fire mesh sizes
ifds,ifde, kfds,kfde, jfds,jfde, &
ifms,ifme, kfms,kfme, jfms,jfme, &
ifps,ifpe, kfps,kfpe, jfps,jfpe
integer :: its,ite,jts,jte,kts,kte ! atm tile
integer:: ij
call message
('fire_driver_em_step: FIRE step start')
! get fire mesh dimensions
CALL get_ijk_from_subgrid
( grid , &
ifds,ifde, jfds,jfde,kfds,kfde, &
ifms,ifme, jfms,jfme,kfms,kfme, &
ifps,ifpe, jfps,jfpe,kfps,kfpe)
call fire_driver_em
( grid , config_flags &
,3,6,fire_test_steps &
,ids,ide, kds,kde, jds,jde &
,ims,ime, kms,kme, jms,jme &
,ips,ipe, kps,kpe, jps,jpe &
,ifds,ifde, jfds,jfde &
,ifms,ifme, jfms,jfme &
,ifps,ifpe, jfps,jfpe &
)
! --- add heat and moisture fluxes to tendency variables by postulated decay
do ij=1,grid%num_tiles
! FIRE works on domain by 1 smaller, in last row&col winds are not set properly
its = grid%i_start(ij) ! start atmospheric tile in i
ite = min(grid%i_end(ij),ide-1) ! end atmospheric tile in i
jts = grid%j_start(ij) ! start atmospheric tile in j
jte = min(grid%j_end(ij),jde-1) ! end atmospheric tile in j
kts=kds
kte=kde
call fire_tendency
( &
ids,ide-1, kds,kde, jds,jde-1, & ! domain dimensions
ims,ime, kms,kme, jms,jme, &
its,ite, kts,kte, jts,jte, & !
grid%grnhfx,grid%grnqfx,grid%canhfx,grid%canqfx, & ! fluxes on atm grid
config_flags%fire_ext_grnd,config_flags%fire_ext_crwn,config_flags%fire_crwn_hgt, &
grid%ht,z_at_w,dz8w,grid%mut,rho, &
grid%rthfrten,grid%rqvfrten) ! out
enddo
! debug print to compare
call print_3d_stats
(its,ite,kts,kte,jts,jte,ims,ime,kms,kme,jms,jme,grid%rthfrten,'fire_driver_phys:rthfrten')
call print_3d_stats
(its,ite,kts,kte,jts,jte,ims,ime,kms,kme,jms,jme,grid%rqvfrten,'fire_driver_phys:rqvfrten')
call message
('fire_driver_em_step: FIRE step complete')
end subroutine fire_driver_em_step
end module module_fr_fire_driver_wrf