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
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()
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
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
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
125 end module module_domain