1 | subroutine radar_simulator_init(freq,k2,use_gas_abs,do_ray,undef, & |
---|
2 | nhclass, & |
---|
3 | hclass_type,hclass_phase, & |
---|
4 | hclass_dmin,hclass_dmax, & |
---|
5 | hclass_apm,hclass_bpm,hclass_rho, & |
---|
6 | hclass_p1,hclass_p2,hclass_p3, & |
---|
7 | load_scale_LUTs_flag,update_scale_LUTs_flag,LUT_file_name, & |
---|
8 | hp & ! output |
---|
9 | ) |
---|
10 | use radar_simulator_types |
---|
11 | implicit none |
---|
12 | |
---|
13 | ! Purpose: |
---|
14 | ! |
---|
15 | ! Initialize variables used by the radar simulator. |
---|
16 | ! Part of QuickBeam v3.0 by John Haynes and Roj Marchand |
---|
17 | ! |
---|
18 | ! |
---|
19 | ! Inputs: |
---|
20 | ! [] from data in hydrometeor class input |
---|
21 | ! |
---|
22 | ! [freq] radar frequency (GHz) |
---|
23 | ! |
---|
24 | ! [k2] |K|^2, the dielectric constant, set to -1 to use the |
---|
25 | ! frequency dependent default |
---|
26 | ! |
---|
27 | ! [use_gas_abs] 1=do gaseous abs calcs, 0=no gasesous absorbtion calculated, |
---|
28 | ! 2=calculate (and use) absorption for first profile on all profiles |
---|
29 | ! |
---|
30 | ! [undef] mising data value |
---|
31 | ! [nhclass] number of hydrometeor types |
---|
32 | ! |
---|
33 | ! For each hydrometero type: |
---|
34 | ! hclass_type Type of distribution (see quickbeam documentation) |
---|
35 | ! hclass_phase 1==ice, 0=liquid |
---|
36 | ! |
---|
37 | ! hclass_dmin minimum diameter allowed is drop size distribution N(D<Dmin)=0 |
---|
38 | ! hclass_dmax maximum diameter allowed is drop size distribution N(D>Dmax)=0 |
---|
39 | ! |
---|
40 | ! hclass_apm,hclass_bpm Density of partical apm*D^bpm or constant = rho |
---|
41 | ! hclass_rho, |
---|
42 | ! |
---|
43 | ! hclass_p1,hclass_p2, Default values of DSD parameters (see quickbeam documentation) |
---|
44 | ! hclass_p3, |
---|
45 | ! |
---|
46 | ! load_scale_LUTs_flag Flag, load scale factors Look Up Table from file at start of run |
---|
47 | ! update_scale_LUTs_flag Flag, save new scale factors calculated during this run to LUT |
---|
48 | ! LUT_file_name Name of file containing LUT |
---|
49 | ! |
---|
50 | ! Outputs: |
---|
51 | ! [hp] structure that define hydrometeor types |
---|
52 | ! |
---|
53 | ! Modified: |
---|
54 | ! 08/23/2006 placed into subroutine form (Roger Marchand) |
---|
55 | ! June 2010 New interface to support "radar_simulator_params" structure |
---|
56 | |
---|
57 | ! ----- INPUT ----- |
---|
58 | |
---|
59 | real, intent(in) :: freq,k2 |
---|
60 | integer, intent(in) :: nhclass ! number of hydrometeor classes in use |
---|
61 | integer, intent(in) :: use_gas_abs,do_ray |
---|
62 | real :: undef |
---|
63 | real,dimension(nhclass),intent(in) :: hclass_dmin,hclass_dmax, & |
---|
64 | hclass_apm,hclass_bpm,hclass_rho, & |
---|
65 | hclass_p1,hclass_p2,hclass_p3 |
---|
66 | integer,dimension(nhclass),intent(in) :: hclass_type,hclass_phase |
---|
67 | |
---|
68 | logical, intent(in) :: load_scale_LUTs_flag,update_scale_LUTs_flag |
---|
69 | character*240, intent(in) :: LUT_file_name |
---|
70 | |
---|
71 | ! ----- OUTPUTS ----- |
---|
72 | type(class_param), intent(out) :: hp |
---|
73 | |
---|
74 | ! ----- INTERNAL ----- |
---|
75 | integer :: i,j |
---|
76 | real*8 :: delt, deltp |
---|
77 | |
---|
78 | ! |
---|
79 | ! set radar simulation properites |
---|
80 | ! |
---|
81 | hp%freq=freq |
---|
82 | hp%k2=k2 |
---|
83 | hp%use_gas_abs=use_gas_abs |
---|
84 | hp%do_ray=do_ray |
---|
85 | hp%nhclass=nhclass |
---|
86 | |
---|
87 | hp%load_scale_LUTs=load_scale_LUTs_flag |
---|
88 | hp%update_scale_LUTs=update_scale_LUTs_flag |
---|
89 | hp%scale_LUT_file_name=LUT_file_name |
---|
90 | |
---|
91 | ! |
---|
92 | ! Store settings for hydrometeor types in hp (class_parameter) structure. |
---|
93 | ! |
---|
94 | do i = 1,nhclass |
---|
95 | hp%dtype(i) = hclass_type(i) |
---|
96 | hp%phase(i) = hclass_phase(i) |
---|
97 | hp%dmin(i) = hclass_dmin(i) |
---|
98 | hp%dmax(i) = hclass_dmax(i) |
---|
99 | hp%apm(i) = hclass_apm(i) |
---|
100 | hp%bpm(i) = hclass_bpm(i) |
---|
101 | hp%rho(i) = hclass_rho(i) |
---|
102 | hp%p1(i) = hclass_p1(i) |
---|
103 | hp%p2(i) = hclass_p2(i) |
---|
104 | hp%p3(i) = hclass_p3(i) |
---|
105 | enddo |
---|
106 | |
---|
107 | ! |
---|
108 | ! initialize scaling array |
---|
109 | ! |
---|
110 | hp%N_scale_flag = .false. |
---|
111 | hp%fc = undef |
---|
112 | hp%rho_eff = undef |
---|
113 | |
---|
114 | hp%Z_scale_flag = .false. |
---|
115 | hp%Ze_scaled = 0.0 |
---|
116 | hp%Zr_scaled = 0.0 |
---|
117 | hp%kr_scaled = 0.0 |
---|
118 | |
---|
119 | ! |
---|
120 | ! set up Re bin "structure" for z_scaling |
---|
121 | ! |
---|
122 | hp%base_list(1)=0; |
---|
123 | do j=1,Re_MAX_BIN |
---|
124 | hp%step_list(j)=0.1+0.1*((j-1)**1.5); |
---|
125 | if(hp%step_list(j)>Re_BIN_LENGTH) then |
---|
126 | hp%step_list(j)=Re_BIN_LENGTH; |
---|
127 | endif |
---|
128 | if(j>1) then |
---|
129 | hp%base_list(j)=hp%base_list(j-1)+floor(Re_BIN_LENGTH/hp%step_list(j-1)); |
---|
130 | endif |
---|
131 | enddo |
---|
132 | |
---|
133 | ! |
---|
134 | ! set up Temperature bin structure used for z scaling |
---|
135 | ! |
---|
136 | do i=1,cnt_ice |
---|
137 | hp%mt_tti(i)=(i-1)*5-90 + 273.15 |
---|
138 | enddo |
---|
139 | |
---|
140 | do i=1,cnt_liq |
---|
141 | hp%mt_ttl(i)=(i-1)*5-60 + 273.15 |
---|
142 | enddo |
---|
143 | |
---|
144 | ! |
---|
145 | ! define array discrete diameters used in mie calculations |
---|
146 | ! |
---|
147 | delt = (log(dmax)-log(dmin))/(nd-1) |
---|
148 | deltp = exp(delt) |
---|
149 | |
---|
150 | hp%D(1) = dmin |
---|
151 | do i=2,nd |
---|
152 | hp%D(i) = hp%D(i-1)*deltp |
---|
153 | enddo |
---|
154 | |
---|
155 | |
---|
156 | end subroutine radar_simulator_init |
---|