38 '$Id: Fresnel.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 39 REAL(fp),
PARAMETER ::
zero = 0.0_fp
40 REAL(fp),
PARAMETER ::
point5 = 0.5_fp
41 REAL(fp),
PARAMETER ::
one = 1.0_fp
42 REAL(fp),
PARAMETER ::
two = 2.0_fp
128 COMPLEX(fp),
INTENT(IN) :: permittivity
129 REAL(fp),
INTENT(IN) :: cos_i
130 REAL(fp),
INTENT(OUT) :: rv
131 REAL(fp),
INTENT(OUT) :: rh
138 ivar%z1 = sqrt(permittivity -
one + (cos_i*cos_i))
139 ivar%z2 = permittivity * cos_i
140 zrh = (cos_i -ivar%z1) / (cos_i +ivar%z1)
141 zrv = (ivar%z2-ivar%z1) / (ivar%z2+ivar%z1)
144 ivar%rzRv =
REAL(zrv,
fp)
145 ivar%izRv = aimag(zrv)
146 rv = ivar%rzRv**2 + ivar%izRv**2
149 ivar%rzRh =
REAL(zrh,
fp)
150 ivar%izRh = aimag(zrh)
151 rh = ivar%rzRh**2 + ivar%izRh**2
223 COMPLEX(fp),
INTENT(IN) :: permittivity_tl
224 REAL(fp),
INTENT(IN) :: cos_i
225 REAL(fp),
INTENT(OUT) :: rv_tl
226 REAL(fp),
INTENT(OUT) :: rh_tl
229 COMPLEX(fp) :: z1_tl, z2_tl
230 COMPLEX(fp) :: zrv_tl
231 COMPLEX(fp) :: zrh_tl
232 REAL(fp) :: rzrv_tl,izrv_tl
233 REAL(fp) :: rzrh_tl,izrh_tl
236 z1_tl =
point5 * permittivity_tl / ivar%z1
237 z2_tl = cos_i * permittivity_tl
238 zrh_tl = -
two * cos_i * z1_tl / (cos_i+ivar%z1)**2
239 zrv_tl =
two * (ivar%z1*z2_tl - ivar%z2*z1_tl) / (ivar%z2+ivar%z1)**2
242 rzrv_tl =
REAL(zrv_tl,
fp)
243 izrv_tl = aimag(zrv_tl)
244 rv_tl =
two * (ivar%rzRv*rzrv_tl + ivar%izRv*izrv_tl)
247 rzrh_tl =
REAL(zrh_tl,
fp)
248 izrh_tl = aimag(zrh_tl)
249 rh_tl =
two * (ivar%rzRh*rzrh_tl + ivar%izRh*izrh_tl)
322 permittivity_AD, & ! Output
325 REAL(fp),
INTENT(IN OUT) :: rv_ad
326 REAL(fp),
INTENT(IN OUT) :: rh_ad
327 REAL(fp),
INTENT(IN) :: cos_i
328 COMPLEX(fp),
INTENT(IN OUT) :: permittivity_ad
331 COMPLEX(fp) :: z1_ad, z2_ad
332 COMPLEX(fp) :: zrv_ad
333 COMPLEX(fp) :: zrh_ad
334 REAL(fp) :: rzrv_ad,izrv_ad
335 REAL(fp) :: rzrh_ad,izrh_ad
339 izrh_ad =
two*ivar%izRh*rh_ad
340 rzrh_ad =
two*ivar%rzRh*rh_ad
342 zrh_ad = cmplx(rzrh_ad, -izrh_ad,
fp)
345 izrv_ad =
two*ivar%izRv*rv_ad
346 rzrv_ad =
two*ivar%rzRv*rv_ad
348 zrv_ad = cmplx(rzrv_ad, -izrv_ad,
fp)
351 denom = (ivar%z2+ivar%z1)**2
352 z1_ad = -
two*ivar%z2*zrv_ad / denom
353 z2_ad =
two*ivar%z1*zrv_ad / denom
356 z1_ad = z1_ad - (
two*cos_i*zrh_ad / (cos_i+ivar%z1)**2 )
359 permittivity_ad = permittivity_ad + conjg(cos_i*z2_ad)
360 permittivity_ad = permittivity_ad + conjg(
point5*z1_ad/ivar%z1)
real(fp), parameter, public zero
integer, parameter, public fp
subroutine, public fresnel_reflectivity_ad(Rv_AD, Rh_AD, cos_i, permittivity_AD, iVar)
real(fp), parameter point5
character(*), parameter module_rcs_id
real(fp), parameter, public one
real(fp), parameter, public two
subroutine, public fresnel_reflectivity(permittivity, cos_i, Rv, Rh, iVar)
subroutine, public fresnel_reflectivity_tl(permittivity_TL, cos_i, Rv_TL, Rh_TL, iVar)