1 ! A simple program to initialize a test case for wrf-fire standalone driver.
2 ! It will create a netcdf file called fire_input.nc containing initial
3 ! conditions for the fire simulation, somewhat compatible with wrfinput_d01
4 ! for WRF, created by ideal.exe or real.exe
6 program model_test_init
10 use module_fr_sfire_util, only : crash
16 !real,parameter::wind=1.,alpha=0.0
17 real::windx,windy,slopex,slopey
18 type(grid_config_rec_type)::config_flags ! for the namelist
20 namelist /uniform_init/ windx,windy,slopex,slopey
28 print*,'Reading ',trim(nmlfile)
29 open(iu,file=nmlfile,err=99)
30 read(iu,uniform_init,err=99,end=99)
35 print*,'Error in reading namelist uniform_init, using defaults'
38 ! read namelist parameters
39 call read_namelist(config_flags)
41 ! get grid information
42 info%nstagx=config_flags%e_we-config_flags%s_we+1
43 info%nstagy=config_flags%e_sn-config_flags%s_sn+1
44 !info%natmz=config_flags%e_vert-config_flags%s_vert+1
45 info%sr_x=config_flags%sr_x
46 info%sr_y=config_flags%sr_y
47 info%nfirex=(info%nstagx)*config_flags%sr_x
48 info%nfirey=(info%nstagy)*config_flags%sr_y
49 info%io_nfirex=info%nfirex
50 info%io_nfirey=info%nfirey
51 info%len_time_string=19
52 info%fdx=config_flags%dx / info%sr_x
53 info%fdy=config_flags%dy / info%sr_y
54 info%dt=real(config_flags%time_step)+real(config_flags%time_step_fract_num)/real(config_flags%time_step_fract_den)
55 info%times='1980-01-01_00:00:00'
57 ! allocate space for input variables
58 allocate(grid%nfuel_cat(info%nfirex,info%nfirey))
59 allocate(grid%dzdxf(info%nfirex,info%nfirey))
60 allocate(grid%dzdyf(info%nfirex,info%nfirey))
61 allocate(grid%zsf(info%nfirex,info%nfirey))
62 allocate(grid%uf(info%nfirex,info%nfirey))
63 allocate(grid%vf(info%nfirex,info%nfirey))
64 allocate(grid%fxlat(info%nfirex,info%nfirey))
65 allocate(grid%fxlong(info%nfirex,info%nfirey))
66 allocate(grid%fmc_g(info%nfirex,info%nfirey))
68 ! initialize input variables
71 grid%fxlat(i,j)=(j-1)*info%fdy
72 grid%fxlong(i,j)=(i-1)*info%fdx
73 grid%zsf(i,j)=grid%fxlong(i,j)*slopex + grid%fxlat(i,j)*slopey
74 grid%dzdxf(i,j)=slopex
75 grid%dzdyf(i,j)=slopey
84 ! write variables to the file
85 call write_inputs(inputfile,grid,info)
88 deallocate(grid%nfuel_cat,grid%dzdxf,grid%dzdyf,grid%uf,grid%vf,grid%zsf,&
89 grid%fxlat,grid%fxlong,grid%fmc_g)
93 end program model_test_init