Merge branch 'master' into devel
[wrffire.git] / standalone / module_domain.F
blobc10740dfdc6b3008dd15a0074ca60ff4ed56c1cc
1 module module_domain
2 ! define the main datastructure passed to the model
3 ! follows WRFV3/frame/module_domain.F but only fields needed here are defined
4    integer, parameter:: max_tiles=10
6    type domain
8       ! inputs to the fire model
10       ! changes every time step
11       real, pointer, dimension(:,:)::uf => null()              ! winds on the fire mesh 
12       real, pointer, dimension(:,:)::vf => null()              ! winds on the fire mesh
14       ! constant arrays - set once at initialization
15       real, pointer, dimension(:,:)::zsf => null()             ! terrain height
16       real, pointer, dimension(:,:)::dzdxf => null()           ! terrain gradient 
17       real, pointer, dimension(:,:)::dzdyf => null()           ! terrain gradient 
18       real, pointer, dimension(:,:)::fxlong=>null()            ! fire mesh nodes coordinates
19       real, pointer, dimension(:,:)::fxlat =>null()            ! fire mesh nodes coordinates
20       real, pointer, dimension(:,:)::nfuel_cat => null()       ! index to fuel data table
21       ! nfuel_cat is expanded to the coefficient arrays below from the table in namelist.fire
22       real, pointer, dimension(:,:)::bbb => null()             ! fire spread formula coefficients
23       real, pointer, dimension(:,:)::betafl => null()
24       real, pointer, dimension(:,:)::phiwc => null()
25       real, pointer, dimension(:,:)::r_0 => null()
26       real, pointer, dimension(:,:)::fgip  => null()
27       real, pointer, dimension(:,:)::ischap => null()          ! fire spread formula coefficients
28       real, pointer, dimension(:,:)::fuel_time => null()       ! fuel coefficient  
29       real, pointer, dimension(:,:)::u_2 => null()
30       real, pointer, dimension(:,:)::v_2 => null()
31       real, pointer, dimension(:,:)::w_2 => null()             ! vertical wind, not used
32       real, pointer, dimension(:,:)::ph_2 => null()
33       real, pointer, dimension(:,:)::phb => null()
34       real, pointer, dimension(:,:)::z0 => null()
35       real, pointer, dimension(:,:)::ht => null()
36       real, pointer, dimension(:,:)::xlong => null()
37       real, pointer, dimension(:,:)::xlat => null()
38       real, pointer, dimension(:,:)::avg_fuel_frac => null()
39       real, pointer, dimension(:,:)::grnhfx => null()
40       real, pointer, dimension(:,:)::grnqfx => null()
41       real, pointer, dimension(:,:)::canhfx => null()
42       real, pointer, dimension(:,:)::canqfx => null()
43       real, pointer, dimension(:,:)::uah => null()
44       real, pointer, dimension(:,:)::vah => null()
45       real, pointer, dimension(:,:)::rainc => null()
46       real, pointer, dimension(:,:)::rainnc => null()
47       real, pointer, dimension(:,:)::t2 => null()
48       real, pointer, dimension(:,:)::q2 => null()
49       real, pointer, dimension(:,:)::psfc => null()
50       real, pointer, dimension(:,:)::rain_old => null()
51       real, pointer, dimension(:,:)::t2_old => null()
52       real, pointer, dimension(:,:)::q2_old => null()
53       real, pointer, dimension(:,:)::psfc_old => null()
54       real, pointer, dimension(:,:)::rh_fire => null()
55       real, pointer, dimension(:,:)::h_fire => null()
56       real, pointer, dimension(:,:)::ndwi => null()
57       real, pointer, dimension(:,:)::fndwi => null()
58       real, pointer, dimension(:,:,:)::fmc_lag => null()
59       real, pointer, dimension(:,:,:)::fmc_gc => null()
60       real, pointer, dimension(:,:,:)::fmc_equi => null()
61       real, pointer, dimension(:,:,:)::fmep => null()
62       real, pointer, dimension(:,:,:,:)::chem => null()
63       real, pointer, dimension(:,:,:,:)::tracer => null()
65       ! scalars
66       ! mesh and housekeeping
68       real:: sr_x, sr_y                                        ! atmosphere/fire refinement ratio
69       integer::itimestep                                       ! time step number
70       real:: xtime                                             ! minutes since simulation start
71       integer:: num_tiles                                      ! parallel execution tiles info
72       integer, dimension(max_tiles):: i_start,i_end,j_start,j_end
73       real:: dt,dx,dy                                          ! time and space stepsizes (atmosphere scale)
74       real:: u_frame,v_frame                                   ! must be zero, for compatibility
75       real:: unit_fxlong,unit_fxlat
76       real:: fmoist_nexttime,fmoist_lasttime
78       ! fire model state arrays 
79        
80       ! because of WRF architecture, the fire model may not maintain any state internally
81       ! all state arrays must be passed in every call
82       real, pointer, dimension(:,:)::lfn => null()             ! level set function
83       real, pointer, dimension(:,:)::tign_g => null()          ! time of ignintion
84       real, pointer, dimension(:,:)::tign_in => null()         ! given fire arrival time
85       real, pointer, dimension(:,:)::fuel_frac => null()       ! remaining fuel fraction
86       real, pointer, dimension(:,:)::fuel_frac_burnt => null() ! fuel fraction burned in the time step
87       real, pointer, dimension(:,:)::lfn_out  => null()        ! a copy of the level set function
88       real, pointer, dimension(:,:)::fire_area  => null()      ! fraction of cell area burning
90       ! fire model outputs
92       real, pointer, dimension(:,:)::fgrnhfx  => null()        ! ground sensible heat flux
93       real, pointer, dimension(:,:)::fgrnqfx  => null()        ! ground latent heat flux
94       real, pointer, dimension(:,:)::fcanhfx  => null()        ! canopy sensible heat flux
95       real, pointer, dimension(:,:)::fcanqfx  => null()        ! canopy latent heat flux
97       ! other fire model arrays
98       real, pointer, dimension(:,:)::ros  => null()            ! rate of spread - for diagnostics only
99       real, pointer, dimension(:,:)::phisc  => null()          ! spread formula coeff
100       real, pointer, dimension(:,:)::fz0  => null()            ! 
101       real, pointer, dimension(:,:)::fwh  => null()            ! 
102       real, pointer, dimension(:,:)::fmc_g  => null()          ! fuel moisture, ground
103       real, pointer, dimension(:,:)::flineint  => null()       !
104       real, pointer, dimension(:,:)::flineint2  => null()      ! 
105       real, pointer, dimension(:,:)::f_lineint  => null()      !
106       real, pointer, dimension(:,:)::f_lineint2  => null()     ! 
107       real, pointer, dimension(:,:)::f_int  => null()          ! 
108       real, pointer, dimension(:,:)::f_ros  => null()          ! 
109       real, pointer, dimension(:,:)::f_ros0  => null()         ! 
110       real, pointer, dimension(:,:)::f_rosx  => null()         ! 
111       real, pointer, dimension(:,:)::f_rosy  => null()         ! 
112       real, pointer, dimension(:,:)::fire_hfx  => null()       ! 
113       real, pointer, dimension(:,:)::f_ros11  => null()            ! rate of spread - for diagnostics only
114       real, pointer, dimension(:,:)::f_ros12  => null()            ! rate of spread - for diagnostics only
115       real, pointer, dimension(:,:)::f_ros13  => null()            ! rate of spread - for diagnostics only
116       real, pointer, dimension(:,:)::f_ros21  => null()            ! rate of spread - for diagnostics only
117       real, pointer, dimension(:,:)::f_ros23  => null()            ! rate of spread - for diagnostics only
118       real, pointer, dimension(:,:)::f_ros31  => null()            ! rate of spread - for diagnostics only
119       real, pointer, dimension(:,:)::f_ros32  => null()            ! rate of spread - for diagnostics only
120       real, pointer, dimension(:,:)::f_ros33  => null()            ! rate of spread - for diagnostics only
123    end type domain
125 end module module_domain