da_setup_firstguess_kma.inc

References to this file elsewhere.
1 subroutine da_setup_firstguess_kma(xbx, grid)
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Define/allocate components of WRF model state.
5    !---------------------------------------------------------------------------
6 
7    implicit none
8 
9    type (xbx_type),intent(out)         :: xbx    ! Header & non-gridded vars.
10 
11    type (domain), intent(inout)        :: grid
12 
13    integer           :: i, j
14    integer           :: is, ie, js, je, ks, ke
15    integer           :: max_wavenumber
16 
17    if (trace_use) call da_trace_entry("da_setup_firstguess_kma")
18 
19    is = grid%xp % its
20    ie = grid%xp % ite
21    js = grid%xp % jts
22    je = grid%xp % jte
23    ks = grid%xp % kts
24    ke = grid%xp % kte
25 
26    !------------------------------------------------------------------------
27    ! [2.0] Copy header info:
28    !------------------------------------------------------------------------
29 
30    ! rizvi set it to 1 . Actually it should be decided by KMA 
31    grid%map_proj = 0
32    map_projection = grid%map_proj
33    coarse_ix = grid%e_we - grid%s_we + 1
34    coarse_jy = grid%e_sn - grid%s_sn + 1
35 
36    grid%xb % mix = grid%xp%ide - grid%xp%ids + 1
37    grid%xb % mjy = grid%xp%jde - grid%xp%jds + 1
38    grid%xb % mkz = grid%xp%kde - grid%xp%kds + 1
39 
40    mix = grid%xb % mix
41    mjy = grid%xb % mjy
42    mkz = grid%xb % mkz
43 
44    grid%xb % ds  = 0.001 * grid%dx
45 
46    start_x = 1.0
47    start_y = 1.0
48    start_lat = -90.0
49    start_lon = -180.0
50    delt_lat = 180.0/real(grid%e_sn - grid%s_sn - 1)
51    delt_lon = 360.0/real(grid%e_we - grid%s_we)
52 
53    phic        = 0.0
54    xlonc       = 0.0
55    cone_factor = 0.0
56 
57 
58    do j = js,je
59       do i = is,ie
60          grid%xlat(i,j) = start_lat + real(j-1)*delt_lat
61          grid%xlong(i,j) = start_lon + real(i-1)*delt_lon
62       end do
63    end do
64 
65    ! Avoid assigning -90,90 value                                           
66    if (grid%xb%jts == grid%xb%jds) then
67       grid%xlat(is:ie,j) = -89.9                               
68    end if
69 
70    if (grid%xb%jte == grid%xb%jde) then
71       grid%xlat(is:ie,j) = 89.9                               
72    end if
73 
74    ! fix map factor and coriolis parameter
75       
76    grid%f(is:ie,js:je) = 2.0 *earth_omega*sin(pi*grid%xlat(is:ie,js:je)/180.0)
77 
78    xbx%inc = 1
79    xbx%ni  = grid%e_we - grid%s_we
80    xbx%nj  = grid%e_sn - grid%s_sn
81    xbx%nk  = grid%e_vert - 1
82    xbx% lenwrk    = xbx%ni
83    xbx% lenr           = xbx%inc * (xbx%ni - 1) + 1
84    max_wavenumber = xbx%ni/2-1
85    xbx % alp_size = (xbx%nj+1)*(max_wavenumber+1)*(max_wavenumber+2)/4
86 
87    call da_transfer_kmatoxb(xbx, grid)
88 
89    if (trace_use) call da_trace_exit("da_setup_firstguess_kma")
90 
91 end subroutine da_setup_firstguess_kma
92 
93