1 subroutine da_setup_firstguess_wrf_nmm_regional(xbx, grid)
3 !---------------------------------------------------------------------------
4 ! Purpose: Define/allocate components of WRF model state.
5 !---------------------------------------------------------------------------
9 type (xbx_type), intent(out) :: xbx ! Header & non-gridded vars.
11 type (domain), intent(inout) :: grid
13 integer :: map_util_project
14 real :: x, y, xxc, yyc, lat_cen, lon_cen
18 character(len=24) :: xb_date, an_date
19 integer :: len, seconds, i_grid, j_grid, m_expand
20 real :: latinc, loninc
22 if (trace_use) call da_trace_entry("da_setup_firstguess_wrf_nmm_regional")
24 !-----------------------------------------------------------------------
25 ! [0.0] check the xb_date for 3DVAR
26 !-----------------------------------------------------------------------
28 write(unit=xb_date,fmt='(i4.4,2("-",i2.2),"_",i2.2,2(":",i2.2),".0000")') &
29 grid%start_year, grid%start_month, grid%start_day, &
30 grid%start_hour, grid%start_minute,grid%start_second
32 len = len_trim(ANALYSIS_DATE)
34 write(unit=an_date(1:len), fmt='(a)') trim(ANALYSIS_DATE)
36 seconds = int(da_diff_seconds(an_date, xb_date))
38 if (seconds > ANALYSIS_ACCU) then
39 write(unit=message(1),fmt='(A,A,A,A)') &
40 "xb_date=",xb_date," an_date=", an_date
41 write(unit=message(2),fmt='(A,I6,A,I6)') &
42 "diff=",seconds," ANALYSIS_ACCU=",ANALYSIS_ACCU
43 message(3)="=======> Wrong xb time found???"
44 call da_warning(__FILE__,__LINE__,message(1:3))
47 !------------------------------------------------------------------------
48 ! [1.0] Read original WRF format first guess:
49 !------------------------------------------------------------------------
51 !------------------------------------------------------------------------
52 ! [2.0] Copy header info:
53 !------------------------------------------------------------------------
55 if ((grid%xp%its == grid%xp%ids) .and. (grid%xp%jts == grid%xp%jds)) then
56 buf(1) = grid%xlat(grid%xp%its, grid%xp%jts)
57 buf(2) = grid%xlong(grid%xp%its, grid%xp%jts)
60 call wrf_dm_bcast_real(buf, 2)
64 !------------------------------------------------------------------------
66 !------------------------------------------------------------------------
68 call nl_get_map_proj (grid%id , grid%map_proj)
69 call nl_get_truelat1 (grid%id , grid%truelat1)
70 call nl_get_truelat2 (grid%id , grid%truelat2)
71 call nl_get_dx (grid%id , grid%dx)
72 call nl_get_cen_lat (grid%id , grid%cen_lat)
73 call nl_get_cen_lon (grid%id , grid%cen_lon)
74 call nl_get_moad_cen_lat (grid%id , grid%moad_cen_lat)
75 call nl_get_stand_lon (grid%id , grid%stand_lon)
77 phic = grid%moad_cen_lat
82 truelat1_3dv = grid%truelat1
83 truelat2_3dv = grid%truelat2
87 map_util_project = grid%map_proj
88 ! Set map projection in WRFSI world.
90 if (grid%map_proj == 0 .or. grid%map_proj == 6) then
91 map_util_project = PROJ_LATLON
92 else if (grid%map_proj == 1) then
93 map_util_project = PROJ_LC
94 else if (grid%map_proj == 2) then
95 map_util_project = PROJ_PS
96 else if (grid%map_proj == 3) then
97 map_util_project = PROJ_MERC
100 call da_map_set(map_util_project,grid%cen_lat,grid%cen_lon, &
101 real(grid%xp%ide-grid%xp%ids+2)/2.0, real(grid%xp%jde-grid%xp%jds+2)/2.0, &
102 grid%dx,grid%stand_lon,grid%truelat1,grid%truelat2,latinc,loninc,map_info)
103 ! Need to set map projection in WRF world.
104 map_projection = grid%map_proj
105 cone_factor = map_info%cone
107 if (print_detail_map) then
108 write(unit=stdout, fmt='(a, i6)') &
109 'map_proj =', grid%map_proj
111 write(unit=stdout, fmt='(a, e16.6)') &
112 'cen_lat =', grid%cen_lat, &
113 'cen_lon =', grid%cen_lon, &
114 'truelat1 =', grid%truelat1, &
115 'truelat2 =', grid%truelat2, &
116 'start_lat =', start_lat, &
117 'start_lon =', start_lon, &
118 'latinc =', latinc , &
119 'loninc =', loninc , &
120 'cone_fact =', cone_factor, &
125 mix = grid%xp%ide - grid%xp%ids + 1
126 mjy = grid%xp%jde - grid% xp%jds + 1
127 mkz = grid%xp%kde - grid%xp%kds + 1
129 call da_transfer_wrf_nmm_regional_toxb(xbx, grid)
131 if (trace_use) call da_trace_exit("da_setup_firstguess_wrf_nmm_regional")
133 end subroutine da_setup_firstguess_wrf_nmm_regional