Merge branch 'master' into devel
[wrffire.git] / standalone / init.F
blob069e51e3c06953d5e6da5d8d2d46dd7fa7495f09
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
8 use module_configure
9 use wrf_netcdf
10 use module_fr_sfire_util, only : crash
11 implicit none
13 type(domain)::grid
14 type(grid_info)::info
15 integer::ierr,i,j,iu
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
22 iu=97
23 windx=10
24 windy=0
25 slopex=0
26 slopey=0
28 print*,'Reading ',trim(nmlfile)
29 open(iu,file=nmlfile,err=99)
30 read(iu,uniform_init,err=99,end=99)
31 close(iu,err=99)
32 goto 100
34 99 continue
35 print*,'Error in reading namelist uniform_init, using defaults'
36 100 continue
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
69 do j=1,info%nfirey
70   do i=1,info%nfirex
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
76     grid%nfuel_cat(i,j)=3
77     grid%fmc_g(i,j)=.08
78   enddo
79 enddo
81 grid%uf(:,:)=windx
82 grid%vf(:,:)=windy
84 ! write variables to the file
85 call write_inputs(inputfile,grid,info)
87 ! clean up and exit
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