da_effang_tl.inc

References to this file elsewhere.
1 subroutine da_effang_tl(ifreq,theta,gx2,sigma,effangv,effangh,     &
2                       TGL_gx2,TGL_sigma,TGL_effangv,TGL_effangh )
3  
4    !--------------------------------------------------------------------------
5    ! Purpose : Calculate the effective zenith angle of reflected microwave 
6    ! radiation at SSM/I frequencies for vertical and horizontal polarization
7    !
8    ! Input  :: TGL_gx2, TGL_sigma
9    ! Output :: TGL_effangv,TGL_effangh,effangv,effangh
10    !--------------------------------------------------------------------------
11 
12    implicit none
13 
14    integer, intent(in  ) :: ifreq
15    real   , intent(in  ) :: theta,gx2,sigma,TGL_gx2, TGL_sigma
16    real   , intent( out) :: TGL_effangv,TGL_effangh,effangv,effangh
17 
18    real c19v,c19h,c22v,c22h,c37v,c37h,c85v,c85h
19    real s19v(6),s19h(6),s22v(6),s22h(6), &
20         s37v(6),s37h(6),s85v(6),s85h(6)
21 
22    real :: alnsig,gg,ggg,xd,xx
23    real :: z1,z2,z3,z4,z5,z6,alnthv
24    real :: y,dth,angh,angv,alnthh
25    real :: TGL_alnsig,TGL_gg,TGL_ggg,TGL_xd
26    real :: TGL_z1,TGL_z2,TGL_z3,TGL_z4,TGL_z5,TGL_z6,TGL_alnthv
27    real :: TGL_y,TGL_dth,TGL_angh,TGL_angv,TGL_xx,TGL_alnthh
28 
29    data c19v,c19h,c22v,c22h,c37v,c37h,c85v,c85h &
30      /-.5108,.5306,-.5108,.5306,-.6931,.1823,-.9163,.3000/
31    data s19v /.225E+2,.698E+2,-.238E+2,-.648E+1,.402E+0,.262E+1/
32    data s19h /.743E+1,.507E+2,-.206E+2,-.191E+1,.648E-1,.291E+1/
33    data s22v /.249E+2,.701E+2,-.240E+2,-.714E+1,.405E+0,.256E+1/
34    data s22h /.498E+1,.442E+2,-.190E+2,-.129E+1,.803E-2,.277E+1/
35    data s37v /.215E+2,.573E+2,-.211E+2,-.670E+1,.443E+0,.253E+1/
36    data s37h /.869E+1,.571E+2,-.257E+2,-.302E+1,.237E+0,.386E+1/
37    data s85v /.116E+2,.263E+2,-.101E+2,-.358E+1,.270E+0,.175E+1/
38    data s85h /.736E+1,.568E+2,-.254E+2,-.248E+1,.196E+0,.387E+1/
39 
40    if (gx2 .le. 0.0 .or. sigma .le. 0.0) then
41          effangv = theta
42      TGL_effangv = 0.
43          effangh = theta
44      TGL_effangh = 0.
45      return
46    end if
47    alnsig = alog(sigma)
48    if (abs(sigma) .gt. 0.) then
49       TGL_alnsig = TGL_sigma/sigma
50    else
51       TGL_alnsig = 0.
52    end if
53        gg  = gx2*gx2
54    TGL_gg  = 2.*gx2*TGL_gx2
55        ggg = gg*gx2
56    TGL_ggg = TGL_gg*gx2 + gg*TGL_gx2
57 
58    if (ifreq .eq. 1) then 
59 
60           xd =      alnsig - c19v
61       TGL_xd =  TGL_alnsig
62           xx =  xd*xd
63       TGL_xx =  2.*xd*TGL_xd
64           z1 =  xx*ggg
65       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
66           z2 =  xd*ggg
67       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
68           z3 =  xd*gg
69       TGL_z3 =  TGL_xd*gg + xd*TGL_gg
70           z4 =  xx*gg
71       TGL_z4 =  TGL_xx*gg + xx*TGL_gg
72           z5 =  xx*gx2
73       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
74           z6 =  xd*gx2
75       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
76       alnthv =  s19v(1)*z1 + s19v(2)*z2 + s19v(3)*z3 + &
77                 s19v(4)*z4 + s19v(5)*z5 + s19v(6)*z6
78       TGL_alnthv = s19v(1)*TGL_z1 + s19v(2)*TGL_z2 + s19v(3)*TGL_z3 + &
79                    s19v(4)*TGL_z4 + s19v(5)*TGL_z5 + s19v(6)*TGL_z6
80       alnthv     =     alnthv + 3.611
81 
82           xd =      alnsig - c19h
83       TGL_xd =  TGL_alnsig
84           xx =  xd*xd
85       TGL_xx =  2.*xd*TGL_xd
86           z1 =  xx*ggg
87       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
88           z2 =  xd*ggg
89       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
90           z3 =  xd*gg
91       TGL_z3 =  TGL_xd*gg + xd*TGL_gg
92           z4 =  xx*gg
93       TGL_z4 =  TGL_xx*gg + xx*TGL_gg
94           z5 =  xx*gx2
95       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
96           z6 =  xd*gx2
97       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
98       
99       alnthh =  s19h(1)*z1 + s19h(2)*z2 + s19h(3)*z3 + &
100                 s19h(4)*z4 + s19h(5)*z5 + s19h(6)*z6
101       TGL_alnthh = s19h(1)*TGL_z1 + s19h(2)*TGL_z2 + s19h(3)*TGL_z3 + &
102                    s19h(4)*TGL_z4 + s19h(5)*TGL_z5 + s19h(6)*TGL_z6
103 
104       alnthh     =     alnthh + 3.611
105 
106    else if (ifreq .eq. 2) then 
107           xd =      alnsig - c22v
108       TGL_xd =  TGL_alnsig
109           xx =  xd*xd
110       TGL_xx =  2.*xd*TGL_xd
111           z1 =  xx*ggg
112       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg 
113           z2 =  xd*ggg
114       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
115           z3 =  xd*gg
116       TGL_z3 =  TGL_xd*gg + xd*TGL_gg
117           z4 =  xx*gg
118       TGL_z4 =  TGL_xx*gg + xx*TGL_gg
119           z5 =  xx*gx2
120       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
121           z6 =  xd*gx2
122       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
123       alnthv =  s22v(1)*z1 + s22v(2)*z2 + s22v(3)*z3 + &
124                 s22v(4)*z4 + s22v(5)*z5 + s22v(6)*z6
125       TGL_alnthv = s22v(1)*TGL_z1 + s22v(2)*TGL_z2 + s22v(3)*TGL_z3 + &
126                    s22v(4)*TGL_z4 + s22v(5)*TGL_z5 + s22v(6)*TGL_z6
127       alnthv     =     alnthv + 3.611
128       ! TGL_alnthv = TGL_alnthv
129 
130           xd =      alnsig - c22h
131       TGL_xd =  TGL_alnsig
132           xx =  xd*xd
133       TGL_xx =  2.*xd*TGL_xd
134           z1 =  xx*ggg
135       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
136           z2 =  xd*ggg
137       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
138           z3 =  xd*gg
139       TGL_z3 =  TGL_xd*gg + xd*TGL_gg
140           z4 =  xx*gg
141       TGL_z4 =  TGL_xx*gg + xx*TGL_gg
142           z5 =  xx*gx2
143       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
144           z6 =  xd*gx2
145       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
146       alnthh =  s22h(1)*z1 + s22h(2)*z2 + s22h(3)*z3 + &
147                 s22h(4)*z4 + s22h(5)*z5 + s22h(6)*z6
148       TGL_alnthh = s22h(1)*TGL_z1 + s22h(2)*TGL_z2 + s22h(3)*TGL_z3 + &
149                    s22h(4)*TGL_z4 + s22h(5)*TGL_z5 + s22h(6)*TGL_z6
150       alnthh     =     alnthh + 3.611
151       ! TGL_alnthh = TGL_alnthh
152    else if (ifreq .eq. 3) then 
153           xd =      alnsig - c37v
154       TGL_xd =  TGL_alnsig
155           xx =  xd*xd
156       TGL_xx =  2.*xd*TGL_xd
157           z1 =  xx*ggg
158       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
159           z2 =  xd*ggg
160       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
161           z3 =  xd*gg
162       TGL_z3 =  TGL_xd*gg  + xd*TGL_gg
163           z4 =  xx*gg
164       TGL_z4 =  TGL_xx*gg  + xx*TGL_gg
165        z5 =  xx*gx2
166       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
167           z6 =  xd*gx2
168       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
169       alnthv =  s37v(1)*z1 + s37v(2)*z2 + s37v(3)*z3 + &
170                 s37v(4)*z4 + s37v(5)*z5 + s37v(6)*z6
171       TGL_alnthv = s37v(1)*TGL_z1 + s37v(2)*TGL_z2 + s37v(3)*TGL_z3 + &
172                    s37v(4)*TGL_z4 + s37v(5)*TGL_z5 + s37v(6)*TGL_z6
173       alnthv     =     alnthv + 3.611
174       ! TGL_alnthv = TGL_alnthv 
175 
176           xd =      alnsig - c37h
177       TGL_xd =  TGL_alnsig
178           xx =  xd*xd
179       TGL_xx =  2.*xd*TGL_xd
180           z1 =  xx*ggg
181       TGL_z1 =  TGL_xx*ggg +  xx*TGL_ggg
182           z2 =  xd*ggg
183       TGL_z2 =  TGL_xd*ggg +  xd*TGL_ggg
184           z3 =  xd*gg
185       TGL_z3 =  TGL_xd*gg  +  xd*TGL_gg
186           z4 =  xx*gg
187       TGL_z4 =  TGL_xx*gg  +  xx*TGL_gg
188           z5 =  xx*gx2
189       TGL_z5 =  TGL_xx*gx2 +  xx*TGL_gx2
190           z6 =  xd*gx2
191       TGL_z6 =  TGL_xd*gx2 +  xd*TGL_gx2
192       alnthh =  s37h(1)*z1 + s37h(2)*z2 + s37h(3)*z3 + &
193                 s37h(4)*z4 + s37h(5)*z5 + s37h(6)*z6
194       TGL_alnthh = s37h(1)*TGL_z1 + s37h(2)*TGL_z2 + s37h(3)*TGL_z3 + &
195                    s37h(4)*TGL_z4 + s37h(5)*TGL_z5 + s37h(6)*TGL_z6
196       alnthh     =     alnthh + 3.611
197       ! TGL_alnthh = TGL_alnthh
198    else if (ifreq .eq. 4) then 
199           xd =      alnsig - c85v
200       TGL_xd =  TGL_alnsig
201           xx =  xd*xd
202       TGL_xx =  2.*xd*TGL_xd 
203           z1 =  xx*ggg
204       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
205           z2 =  xd*ggg
206       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
207           z3 =  xd*gg
208       TGL_z3 =  TGL_xd*gg  + xd*TGL_gg
209           z4 =  xx*gg
210       TGL_z4 =  TGL_xx*gg  + xx*TGL_gg
211           z5 =  xx*gx2
212       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
213           z6 =  xd*gx2
214       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
215       alnthv =  s85v(1)*z1 + s85v(2)*z2 + s85v(3)*z3 + &
216                    s85v(4)*z4 + s85v(5)*z5 + s85v(6)*z6
217       TGL_alnthv = s85v(1)*TGL_z1 + s85v(2)*TGL_z2 + s85v(3)*TGL_z3 + &
218                    s85v(4)*TGL_z4 + s85v(5)*TGL_z5 + s85v(6)*TGL_z6
219       alnthv     =     alnthv + 3.611
220       ! TGL_alnthv = TGL_alnthv 
221 
222           xd =      alnsig - c85h
223       TGL_xd =  TGL_alnsig
224           xx =  xd*xd
225       TGL_xx =  2.*xd*TGL_xd
226           z1 =  xx*ggg
227       TGL_z1 =  TGL_xx*ggg + xx*TGL_ggg
228           z2 =  xd*ggg
229       TGL_z2 =  TGL_xd*ggg + xd*TGL_ggg
230           z3 =  xd*gg
231       TGL_z3 =  TGL_xd*gg  + xd*TGL_gg
232           z4 =  xx*gg
233       TGL_z4 =  TGL_xx*gg  + xx*TGL_gg
234           z5 =  xx*gx2
235       TGL_z5 =  TGL_xx*gx2 + xx*TGL_gx2
236           z6 =  xd*gx2
237       TGL_z6 =  TGL_xd*gx2 + xd*TGL_gx2
238       alnthh =  s85h(1)*z1 + s85h(2)*z2 + s85h(3)*z3 + &
239                 s85h(4)*z4 + s85h(5)*z5 + s85h(6)*z6
240       TGL_alnthh = s85h(1)*TGL_z1 + s85h(2)*TGL_z2 + s85h(3)*TGL_z3 + &
241                    s85h(4)*TGL_z4 + s85h(5)*TGL_z5 + s85h(6)*TGL_z6
242       alnthh     =     alnthh + 3.611
243       ! TGL_alnthh = TGL_alnthh
244    end if
245        angv =   90.0 - exp(alnthv)
246    TGL_angv = - TGL_alnthv*exp(alnthv)
247        angh =   90.0 - exp(alnthh)
248    TGL_angh = - TGL_alnthh*exp(alnthh)
249        y    =   1.0 - 28.0*gx2
250    TGL_y    = - 28.0*TGL_gx2
251    if (y .lt. 0.0) then
252           y = 0.0
253       TGL_y = 0.0
254    end if
255        dth     = (theta - 53.0)*y
256    TGL_dth     = (theta - 53.0)*TGL_y
257        effangv =     angv +     dth
258    TGL_effangv = TGL_angv + TGL_dth
259        effangh =     angh +     dth
260    TGL_effangh = TGL_angh + TGL_dth
261 
262 end subroutine da_effang_tl
263 
264