da_control.f90
References to this file elsewhere.
1 module da_control
2
3 !--------------------------------------------------------------------------
4 ! Purpose: Common reference point for WRFVAR control.
5 !--------------------------------------------------------------------------
6
7 use module_driver_constants, only : max_domains, max_eta, max_moves, &
8 max_outer_iterations, max_instruments
9
10 implicit none
11
12 #include "namelist_defines.inc"
13
14 ! switches set from other namelist options
15 logical :: use_obsgts
16 logical :: use_rad
17
18 !---------------------------------------------------------------------------
19 ! [1.0] Physical parameter constants (all NIST standard values):
20 !---------------------------------------------------------------------------
21
22 ! Fundamental constants:
23 real, parameter :: pi = 3.1415926 ! Value used in WRF.
24 real, parameter :: gas_constant = 287.0 ! Value used in WRF.
25 real, parameter :: gas_constant_v = 461.6 ! Value used in WRF.
26 real, parameter :: cp = 7.0*gas_constant/2.0 ! Value used in WRF.
27 real, parameter :: t_kelvin = 273.15
28 real, parameter :: t_triple = 273.16 ! triple point of water
29 ! The imported code for ssmi and radiance uses 273.0 in a way that suggests
30 ! it may not be a lazy definition of the melting point of water, so keep the
31 ! value separate for the moment
32 real, parameter :: t_roughem = 273.0
33 real, parameter :: t_landem = 273.0
34
35 real, parameter :: kappa = gas_constant / cp
36 real, parameter :: rd_over_rv = gas_constant / gas_constant_v
37 real, parameter :: rd_over_rv1 = 1.0 - rd_over_rv
38 real, parameter :: L_over_Rv = 5418.12
39
40 real, parameter :: gamma = 1.4
41
42 ! Earth constants:
43 real, parameter :: gravity = 9.81 ! m/s - value used in WRF.
44 ! real, parameter :: earth_radius = 6378.15
45 real, parameter :: earth_radius = 6370.0 ! Be consistant with WRF
46 ! real, parameter :: earth_omega = 2.0*pi/86400.0 ! Omega
47 real, parameter :: earth_omega = 0.000072921 ! Omega 7.2921*10**-5
48
49 ! Saturation Vapour Pressure Constants(Rogers & Yau, 1989)
50 real, parameter :: es_alpha = 611.2
51 real, parameter :: es_beta = 17.67
52 real, parameter :: es_gamma = 243.5
53 real, parameter :: es_gammabeta = es_gamma * es_beta
54 real, parameter :: es_gammakelvin = es_gamma - t_kelvin
55
56 ! Explicit moist constants:
57 real, parameter :: SVP1=0.6112, SVP2=17.67, SVP3=29.65
58 real, parameter :: SVPT0=t_kelvin, TO=t_kelvin
59 real, parameter :: N0R=8.0E6, N0S=2.0E7, RHOS=0.1
60 real, parameter :: AVT=841.99667, BVT=0.8, BVT2=2.5+0.5*BVT, BVT3=3.0+BVT
61 real, parameter :: PPI=1.0/(pi*N0R), PPIS=1.0/(pi*N0S*RHOS)
62 real, parameter :: XLV1=2370.0, XLF0=0.3337E6, XLV0=3.15E6
63 real, parameter :: XLS=XLV0-XLV1*t_triple+XLF0
64
65 ! Planetary boundary physics constants
66 real, parameter :: k_kar = 0.4 ! Von Karman constant
67
68 ! GPS Refractivity constant
69 real, parameter :: coeff = 3.73e5 / 77.6
70
71 #if RWORDSIZE==8
72 real, parameter :: da_zero = 0D0
73 #else
74 real, parameter :: da_zero = 0.0
75 #endif
76
77 complex, parameter :: da_zero_complex = (da_zero,da_zero)
78
79 !---------------------------------------------------------------------------
80 ! [2.0] WRF-Var parameter constants:
81 !---------------------------------------------------------------------------
82
83 ! Missing values and the index number of the quality control
84
85 integer, parameter :: missing = -888888
86 real , parameter :: missing_r = -888888.0
87 real , parameter :: Max_StHeight_Diff = 100.0
88
89 integer, parameter :: cv_options_hum_specific_humidity = 1
90 integer, parameter :: cv_options_hum_relative_humidity = 2
91
92 ! No-one explains what these options means anywhere
93 integer, parameter :: vert_corr_1 = 1
94 integer, parameter :: vert_corr_2 = 2
95
96 integer, parameter :: vertical_ip_0 = 0
97 integer, parameter :: vertical_ip_sqrt_delta_p = 1
98 integer, parameter :: vertical_ip_delta_p = 2
99
100 integer, parameter :: vert_evalue_global = 1
101 integer, parameter :: vert_evalue_local = 2
102
103 integer, parameter :: alphacv_method_vp = 1
104 integer, parameter :: alphacv_method_xa = 2
105
106 integer, parameter :: sfc_assi_options_1 = 1
107 integer, parameter :: sfc_assi_options_2 = 2
108
109 integer, parameter :: check_rh_simple = 1
110 integer, parameter :: check_rh_tpw = 2
111
112 logical :: anal_type_verify=.false.
113 logical :: anal_type_randomcv=.false.
114 logical :: anal_type_qcobs=.false.
115
116 integer,parameter :: monitor_on = 1
117 integer,parameter :: monitor_off = 0
118
119 integer,parameter :: qc_good = 1
120 integer,parameter :: qc_bad = -1
121
122 integer, parameter :: bufr_satellite_id = 1
123 integer, parameter :: bufr_ifov = 2
124 integer, parameter :: bufr_year = 3
125 integer, parameter :: bufr_month = 4
126 integer, parameter :: bufr_day = 5
127 integer, parameter :: bufr_hour = 6
128 integer, parameter :: bufr_minute = 7
129 integer, parameter :: bufr_second = 8
130 integer, parameter :: bufr_lat = 9
131 integer, parameter :: bufr_lon = 10
132 integer, parameter :: bufr_satzen = 11
133 integer, parameter :: bufr_solzen = 12
134 integer, parameter :: bufr_station_height = 13
135 integer, parameter :: bufr_landsea_mask = 14
136
137 integer, parameter :: nchan_amsua = 15
138 integer, parameter :: nchan_amsub = 5
139 integer, parameter :: nchan_mhs = 5
140 integer, parameter :: nchan_msu = 4
141 integer, parameter :: nchan_hirs2 = 19
142 integer, parameter :: nchan_hirs3 = 19
143 integer, parameter :: nchan_hirs4 = 19
144
145 ! WRFVAR Minimisation:
146
147 integer :: iter
148 integer, parameter :: MP = 6
149 integer, parameter :: LP = 6
150 integer, parameter :: MAXFEV = 10
151 real, parameter :: FTOL = 1.0E-4
152 real, parameter :: GTOL = 0.9
153 real, parameter :: XTOL = 1.0E-17
154 real, parameter :: STPMIN = 1.0E-20
155 real, parameter :: STPMAX = 1.0E+20
156
157 ! Background errors:
158 real, parameter :: pplow = 1.0e-8 ! Machine lowest number?
159 real, parameter :: pp_umin = 1.0e-2 ! Minimum u back. error (m/s).
160 real, parameter :: pp_vmin = 1.0e-2 ! Minimum v back. error (m/s).
161 real, parameter :: pp_tmin = 1.0e-2 ! Minimum t back. error (K).
162 real, parameter :: pp_qmin = 1.0e-6 ! Minimum q back. error (kg/kg)
163 real, parameter :: pp_pmin= 1.0e+1 ! Minimum pp back. error (Pa).
164
165 ! FFTs:
166 integer, parameter :: Forward_FFT = -1 ! Grid to spectral
167 integer, parameter :: Inverse_FFT = 1 ! Spectral to grid.
168 integer, parameter :: num_fft_factors = 10 ! Max number of factors.
169
170 ! Balance:
171 integer, parameter :: balance_geo = 1 ! Geostrophic balance.
172 integer, parameter :: balance_cyc = 2 ! Cyclostrophic balance.
173 integer, parameter :: balance_geocyc = 3 ! Geo/cyclostrophic balance.
174
175 ! Adjoint tests:
176 real, parameter :: typical_u_rms = 2.0 ! m/s
177 real, parameter :: typical_v_rms = 2.0 ! m/s
178 real, parameter :: typical_speed_rms = 2.0 ! m/s
179 real, parameter :: typical_tb19v_rms = 1.0 ! K
180 real, parameter :: typical_tb19h_rms = 1.0 ! K
181 real, parameter :: typical_tb22v_rms = 1.0 ! K
182 real, parameter :: typical_tb37v_rms = 1.0 ! K
183 real, parameter :: typical_tb37h_rms = 1.0 ! K
184 real, parameter :: typical_tb85v_rms = 1.0 ! K
185 real, parameter :: typical_tb85h_rms = 1.0 ! K
186 real, parameter :: typical_t_rms = 1.0 ! K
187 real, parameter :: typical_p_rms = 100.0 ! Pa
188 real, parameter :: typical_q_rms = 0.00001 ! g/kg
189 real, parameter :: typical_rho_rms = 0.01 ! kg/m^3
190 real, parameter :: typical_tpw_rms = 0.2 ! cm
191 real, parameter :: typical_ref_rms = 5.0 ! N unit
192 real, parameter :: typical_rh_rms = 20.0 ! %
193 real, parameter :: typical_thickness_rms = 50.0 ! m
194 real, parameter :: typical_qrn_rms = 0.00001 ! g/kg
195 real, parameter :: typical_qcw_rms = 0.00001 ! g/kg
196 real, parameter :: typical_w_rms = 0.1 ! m/s
197 real, parameter :: typical_rv_rms = 1.0 ! m/s
198 real, parameter :: typical_rf_rms = 1.0 ! dBZ
199
200 ! The following typical mean squared values depend on control variable. They
201 ! are calculated in da_setup_background_errors and used in the VvToVp adjoint
202 ! test:
203
204 real, parameter :: inv_typ_vp1_sumsq = 0.00001 ! 1/sum(psi**2)
205 real, parameter :: inv_typ_vp2_sumsq = 0.00001 ! 1/sum(chi**2)
206 real, parameter :: inv_typ_vp3_sumsq = 0.00001 ! 1/sum(phi_u**2)
207 real, parameter :: inv_typ_vp4_sumsq = 10000.0 ! 1/sum(q**2)
208 real, parameter :: inv_typ_vp5_sumsq = 0.00001 ! 1/sum(?**2)
209 real, parameter :: inv_typ_vpalpha_sumsq = 1.0 ! 1/sum(?**2)
210
211 #include "version_decl"
212
213 integer, parameter :: fg_format_wrf = 1
214 integer, parameter :: fg_format_kma_global = 3
215
216 integer, parameter :: ob_format_bufr = 1
217 integer, parameter :: ob_format_ascii = 2
218
219 integer, parameter :: convert_fd2uv = 1
220 integer, parameter :: convert_uv2fd = -1
221
222 ! Fortran unit parameters:
223
224 ! stdout, stderr, trace_unit all controlled from namelist
225
226 ! Units 9,10 are used for reading and writing namelist.input/output in WRF
227
228 ! Do not use get_unit/free_unit because tracing is too low level
229 integer, parameter :: trace_csv_unit = 8
230
231 integer :: y_unit, yp_unit, cost_unit, grad_unit, stats_unit, jo_unit
232 integer :: check_max_iv_unit, rand_unit, omb_unit, filtered_obs_unit
233 integer :: biasprep_unit
234
235 integer,parameter :: filename_len = 200
236
237 integer, parameter :: num_alpha_corr_types = 3
238
239 integer, parameter :: alpha_corr_type_exp = 1
240 integer, parameter :: alpha_corr_type_soar = 2
241 integer, parameter :: alpha_corr_type_gaussian = 3
242
243 integer :: alpha_corr_unit1(num_alpha_corr_types)
244 integer :: alpha_corr_unit2(num_alpha_corr_types)
245
246 integer, parameter :: max_num_of_var = 200 ! Maximum # of stored fields.
247
248 integer, parameter :: unit_start = 20
249 integer, parameter :: unit_end = 500
250 logical :: unit_used(unit_start:unit_end) = .false.
251
252 ! grid properties
253
254 character(len=3), parameter :: grid_ordering = "xyz"
255 character(len=3), parameter :: grid_stagger = "xyz"
256
257 !---------------------------------------------------------------------------
258 ! [3.0] Variables used in MM5 part of code:
259 !---------------------------------------------------------------------------
260
261 integer :: map_projection ! 1=LamConf/2=PolarSte/3=Mercator
262 real :: ycntr
263 integer :: coarse_ix ! coarse domain dim in i direction.
264 integer :: coarse_jy ! coarse domain dim in y direction.
265 real :: coarse_ds ! Coarse domain gridlength (km)
266 real :: start_x ! i posn. of (1,1) in coarse domain.
267 real :: start_y ! j posn. of (1,1) in coarse domain.
268 real :: start_lat ! Latitude coresponds to start_(x,y)
269 real :: start_lon ! Longitude coresponds to start_(x,y)
270 real :: delt_lat ! Latitude increments for global grids
271 real :: delt_lon ! Longitude increments for global grids
272
273 real :: phic ! coarse domain central lat(degree)
274 real :: xlonc ! coarse domain central lon(degree)
275 real :: cone_factor ! Cone Factor
276 real :: truelat1_3dv ! True latitude 1 (degrees)
277 real :: truelat2_3dv ! True latitude 2 (degrees)
278 real :: pole ! Pole latitude (degrees)
279 real :: dsm ! Current domain gridlength (km)
280 real :: psi1 ! ?
281 real :: c2 ! earth_radius * COS(psi1)
282
283 real :: ptop
284 real, parameter :: t0 = 300.0
285
286 !------------------------------------------------------------------------------
287 ! 4.0 vertical interpolation options
288 !------------------------------------------------------------------------------
289
290 integer, parameter :: v_interp_not_specified = missing, &
291 v_interp_p = 1, &
292 v_interp_h = 2
293
294 !------------------------------------------------------------------------------
295 ! WRFVAR scalar constants:
296 !------------------------------------------------------------------------------
297
298 integer :: Anal_Space ! Space of analysis
299 ! ( 1 = Full model,
300 ! 2 = Transformed grid,
301 ! 3 = Ob space (PSAS) )
302
303 integer :: mix ! 1st dimension of analysis grid.
304 integer :: mjy ! 2nd dimension of analysis grid.
305 integer :: mkz ! 3rd dimension of analysis grid.
306
307 ! Recursive filter:
308
309 real, allocatable :: rf_turnconds(:) ! RF turning conditions.
310
311 integer, parameter :: max_ob_levels = 1001 ! Maximum levels for single ob
312 integer, parameter :: max_fgat_time = 100 ! Maximum levels for FGAT.
313
314 integer :: time
315
316 logical :: gaussian_lats
317
318
319 integer :: cv_size_domain_jb ! Total jb cv size.
320 integer :: cv_size_domain_je ! Total je cv size.
321 integer :: cv_size_domain ! Total cv size.
322
323
324
325 ! Namelist variables in future?:
326 real, parameter :: maximum_rh = 100.0
327 real, parameter :: minimum_rh = 10.0
328
329 ! other
330
331 integer, parameter :: jperr = 6
332
333 ! NCEP errors (U in m/s, V in m/s, T in K, H in %, P in Pa)
334 ! rh has been divided by 2
335
336 real, parameter :: err_k(0:jperr+1) = &
337 (/200000.0, 100100.0,70000.0,50000.0,30000.0,10000.0,5000.0, 1.0/)
338 real, parameter :: err_u(0:jperr+1) = &
339 (/ 1.4, 1.4, 2.4, 2.8, 3.4, 2.5, 2.7, 2.7/)
340 real, parameter :: err_v(0:jperr+1) = &
341 (/ 1.4, 1.4, 2.4, 2.8, 3.4, 2.5, 2.7 , 2.7 /)
342 real, parameter :: err_t(0:jperr+1) = &
343 (/ 1.8, 1.8, 1.3, 1.3, 2.0, 3.1, 4.0 , 4.0 /)
344 real, parameter :: err_rh(0:jperr+1) = &
345 (/ 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0/)
346 real, parameter :: err_p(0:jperr+1) = &
347 (/ 100.0,100.0, 100.0, 100.0, 100.0, 100.0,100.0,100.0 /)
348
349 ! Maximum error check factors: inV > (Obs_error*factor) --> fails_error_max
350
351 real, parameter :: max_error_t = 5.0, &
352 max_error_uv = 5.0, &
353 max_error_pw = 5.0, &
354 max_error_ref = 5.0, &
355 max_error_rh = 5.0, &
356 max_error_q = 5.0, &
357 max_error_p = 5.0, &
358 max_error_tb = 5.0, &
359 max_error_thickness = 5.0, &
360 max_error_rv = 5.0, &
361 max_error_rf = 5.0, &
362 max_error_buv = 500.0, &
363 max_error_bt = 500.0, &
364 max_error_bq = 500.0, &
365 max_error_slp = 500.0
366
367 ! Define various ways for bad data to be flagged.
368
369 integer, parameter :: &
370 missing_data = -88, & ! Data is missing with the value of
371 ! missing_r
372 outside_of_domain = -77, & ! Data outside horizontal domain
373 ! or time window, data set to missing_r
374 wrong_direction = -15, & ! Wind vector direction <0 or> 360
375 ! => direction set to missing_r
376 negative_spd = -14, & ! Wind vector norm is negative
377 ! => norm set to missing_r
378 zero_spd = -13, & ! Wind vector norm is zero
379 ! => norm set to missing_r
380 wrong_wind_data = -12, & ! Spike in wind profile
381 ! =>direction and norm set to missing_r
382 zero_t_td = -11, & ! t or td = 0 => t or td, rh and qv
383 ! are set to missing_r,
384 t_fail_supa_inver = -10, & ! superadiabatic temperature
385 !
386 wrong_t_sign = - 9, & ! Spike in Temperature profile
387 !
388 above_model_lid = - 8, & ! heigh above model lid
389 ! => no action
390 far_below_model_surface = - 7, & ! heigh far below model surface
391 ! => no action
392 below_model_surface = - 6, & ! height below model surface
393 ! => no action
394 standard_atmosphere = - 5, & ! Missing h, p or t
395 ! =>Datum interpolated from standard atm
396 from_background = - 4, & ! Missing h, p or t
397 ! =>Datum interpolated from model
398 fails_error_max = - 3, & ! Datum Fails error max check
399 ! => no action
400 fails_buddy_check = - 2, & ! Datum Fails buddy check
401 ! => no action
402 no_buddies = - 1, & ! Datum has no buddies
403 ! => no action
404 good_quality = 0, & ! OBS datum has good quality
405 !
406 convective_adjustment = 1, & ! convective adjustement check
407 ! =>apply correction on t, td, rh and qv
408 surface_correction = 2, & ! Surface datum
409 ! => apply correction on datum
410 Hydrostatic_recover = 3, & ! Height from hydrostaic assumption with
411 ! the OBS data calibration
412 Reference_OBS_recover = 4, & ! Height from reference state with OBS
413 ! data calibration
414 Other_check = 88 ! passed other quality check
415
416 ! Observations:
417
418 integer :: num_procs ! Number of total processors.
419 integer :: myproc ! My processor ID.
420 integer, parameter :: root = 0 ! Number of root processor
421 logical :: rootproc ! Am I the root processor
422
423 integer, parameter :: var4d_coupling_disk_linear = 1
424 integer, parameter :: var4d_coupling_disk_simul = 2
425
426 integer, parameter :: rtm_option_rttov = 1
427 integer, parameter :: rtm_option_crtm = 2
428
429 ! rtm_init setup parameter
430
431 integer, parameter :: maxsensor = 30
432
433 ! Tracing
434
435 integer :: trace_start_points=0 ! Number of routines to initiate trace
436
437 integer, parameter :: num_ob_indexes = 24
438
439 integer, parameter :: sound = 1
440 integer, parameter :: synop = 2
441 integer, parameter :: pilot = 3
442 integer, parameter :: satem = 4
443 integer, parameter :: geoamv = 5
444 integer, parameter :: polaramv = 6
445 integer, parameter :: airep = 7
446 integer, parameter :: gpspw = 8
447 integer, parameter :: gpsref = 9
448 integer, parameter :: metar = 10
449 integer, parameter :: ships = 11
450 integer, parameter :: ssmi_rv = 12
451 integer, parameter :: ssmi_tb = 13
452 integer, parameter :: ssmt1 = 14
453 integer, parameter :: ssmt2 = 15
454 integer, parameter :: qscat = 16
455 integer, parameter :: profiler = 17
456 integer, parameter :: buoy = 18
457 integer, parameter :: bogus = 19
458 integer, parameter :: pseudo = 20
459 integer, parameter :: radar = 21
460 integer, parameter :: radiance = 22
461 integer, parameter :: airsr = 23
462 integer, parameter :: sonde_sfc = 24
463
464 character(len=14), parameter :: obs_names(num_ob_indexes) = (/ &
465 "sound ", &
466 "synop ", &
467 "pilot ", &
468 "satem ", &
469 "geo amv ", &
470 "polar amv ", &
471 "airep ", &
472 "gpspw ", &
473 "gpsrf ", &
474 "metar ", &
475 "ship ", &
476 "ssmi_rv ", &
477 "ssmi_tb ", &
478 "ssmt1 ", &
479 "ssmt2 ", &
480 "qscat ", &
481 "profiler ", &
482 "buoy ", &
483 "bogus ", &
484 "pseudo ", &
485 "radar ", &
486 "radiance ", &
487 "airs retrieval", &
488 "sonde_sfc " &
489 /)
490
491 integer, parameter :: max_no_fm = 290
492
493 integer, parameter :: num_ob_vars=9
494
495 logical, parameter :: in_report(num_ob_vars,2) = reshape((/&
496 .false.,.false.,.false.,.false.,.false.,.false.,.false.,.false.,.false., & ! sound
497 .true.,.true.,.true.,.true.,.true.,.true.,.false.,.false.,.false./), &
498 (/num_ob_vars,2/))
499
500 integer, parameter :: report_h = 1
501 integer, parameter :: report_u = 2
502 integer, parameter :: report_v = 3
503 integer, parameter :: report_t = 4
504 integer, parameter :: report_q = 5
505 integer, parameter :: report_p = 6
506 integer, parameter :: report_rh = 7
507 integer, parameter :: report_slp = 8
508 integer, parameter :: report_zk = 9
509
510 logical :: obs_use(num_ob_indexes) = .false.
511
512 ! Special cases
513
514 integer, parameter :: fm_satem = 86
515 integer, parameter :: fm_amv = 88
516
517 integer, parameter :: fm_index(max_no_fm) = (/ &
518 0,0,0,0,0,0,0,0,0,0, & ! 1-10
519 0,Synop,Ships,0,Metar, & ! 11-15
520 Metar,Ships,buoy,buoy,0, & ! 16-20
521 0,0,0,0,0,0,0,0,0,0, & ! 21-30
522 0,pilot,pilot,pilot,sound, & ! 31-35
523 sound,sound,sound,0,0, & ! 36-40
524 0,airep,0,0,0,0,0,0,0,0, & ! 41-50
525 0,0,0,0,0,0,0,0,0,0, & ! 51-60
526 0,0,0,0,0,0,0,0,0,0, & ! 61-70
527 0,0,0,0,0,0,0,0,0,0, & ! 71-80
528 0,0,0,0,0,satem,0,geoamv,0,0, & ! 81-90
529 0,0,0,0,0,airep,airep,0,0,0, & ! 91-100
530 0,0,0,0,0,0,0,0,0,0, & ! 101-110
531 gpspw,0,0,gpspw,0,gpsref,0,0,0,0, & ! 111-120
532 ssmt1,ssmt2,0,0,0,0,0,0,0,0, & ! 121-130
533 0,profiler,airsr,0,bogus,0,0,0,0,0, & ! 131-140
534 0,0,0,0,0,0,0,0,0,0, & ! 141-150
535 0,0,0,0,0,0,0,0,0,0, & ! 151-160
536 0,0,0,0,0,0,0,0,0,0, & ! 161-170
537 0,0,0,0,0,0,0,0,0,0, & ! 171-180
538 0,0,0,0,0,0,0,0,0,0, & ! 181-190
539 0,0,0,0,0,0,0,0,0,0, & ! 191-200
540 0,0,0,0,0,0,0,0,0,0, & ! 201-210
541 0,0,0,0,0,0,0,0,0,0, & ! 211-220
542 0,0,0,0,0,0,0,0,0,0, & ! 231-230
543 0,0,0,0,0,0,0,0,0,0, & ! 231-240
544 0,0,0,0,0,0,0,0,0,0, & ! 241-250
545 0,0,0,0,0,0,0,0,0,0, & ! 251-260
546 0,0,0,0,0,0,0,0,0,0, & ! 261-270
547 0,0,0,0,0,0,0,0,0,0, & ! 271-280
548 qscat,0,0,0,0,0,0,0,0,0 /) ! 281-290
549
550 character(len=120) :: fmt_info ='(a12,1x,a19,1x,a40,1x,i6,3(f12.3,11x),6x,a5)'
551 character(len=120) :: fmt_srfc = '(7(:,f12.3,i4,f7.2))'
552 character(len=120) :: fmt_each = &
553 '(3(f12.3,i4,f7.2),11x,3(f12.3,i4,f7.2),11x,1(f12.3,i4,f7.2))'
554
555 ! lat/long information calculated in da_setup_firstguess_wrf
556
557 real, parameter :: deg_to_rad = pi/180.0
558
559 real, allocatable :: cos_xls(:)
560 real, allocatable :: sin_xls(:)
561 real, allocatable :: cos_xle(:)
562 real, allocatable :: sin_xle(:)
563
564 integer :: ierr ! General error code
565 integer :: comm ! MPI communicator
566
567 integer :: ids,ide,jds,jde,kds,kde
568 integer :: ims,ime,jms,jme,kms,kme
569 integer :: its,ite,jts,jte,kts,kte
570 integer :: ips,ipe,jps,jpe,kps,kpe
571 integer :: itsy,itey,jtsy,jtey,ktsy,ktey
572 integer :: itsx,itex,jtsx,jtex,ktsx,ktex
573
574 end module da_control