28 k_to_c => standard_temperature
49 '$Id: Ellison.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 50 REAL(fp),
PARAMETER ::
zero = 0.0_fp
51 REAL(fp),
PARAMETER ::
point5 = 0.5_fp
52 REAL(fp),
PARAMETER ::
one = 1.0_fp
53 REAL(fp),
PARAMETER ::
two = 2.0_fp
54 REAL(fp),
PARAMETER ::
three = 3.0_fp
55 REAL(fp),
PARAMETER ::
four = 4.0_fp
56 REAL(fp),
PARAMETER ::
five = 5.0_fp
63 REAL(fp),
PARAMETER ::
ps_to_s = 1.0e-12_fp
86 REAL(fp),
PARAMETER ::
einf_coeff(0:1) = (/ 5.31250_fp, &
172 Temperature , & ! Input
173 Frequency , & ! Input
174 Permittivity, & ! Output
177 REAL(fp),
INTENT(IN) :: temperature
178 REAL(fp),
INTENT(IN) :: frequency
185 REAL(fp) :: sigma, iesigma
192 ivar%t = temperature - k_to_c
225 ivar%d1 =
one + ivar%f2*ivar%tau1**2
226 ivar%d2 =
one + ivar%f2*ivar%tau2**2
229 re1 = ivar%delta1 / ivar%d1
230 re2 = ivar%delta2 / ivar%d2
233 ie1 = ivar%delta1 * ivar%f * ivar%tau1 / ivar%d1
234 ie2 = ivar%delta2 * ivar%f * ivar%tau2 / ivar%d2
238 iesigma = sigma / ivar%f0
241 re = re1 + re2 + einf
242 ie = ie1 + ie2 + iesigma
297 Temperature_TL , & ! Input
298 Permittivity_TL, & ! Output
301 REAL(fp),
INTENT(IN) :: temperature_tl
302 COMPLEX(fp),
INTENT(OUT) :: permittivity_tl
306 REAL(fp) :: tau1_tl, tau2_tl
307 REAL(fp) :: delta1_tl, delta2_tl, einf_tl
308 REAL(fp) :: d1_tl, d2_tl
310 REAL(fp) :: re1_tl, re2_tl
311 REAL(fp) :: ie1_tl, ie2_tl
312 REAL(fp) :: sigma_tl, iesigma_tl
313 REAL(fp) :: re_tl, ie_tl
320 t_tl = temperature_tl
342 d1_tl =
two*ivar%f2*ivar%tau1*tau1_tl
343 d2_tl =
two*ivar%f2*ivar%tau2*tau2_tl
348 re1_tl = (ivar%d1*delta1_tl - ivar%delta1*d1_tl) / d12
349 re2_tl = (ivar%d2*delta2_tl - ivar%delta2*d2_tl) / d22
352 ie1_tl = ivar%f * (delta1_tl*ivar%tau1*ivar%d1 + ivar%delta1*tau1_tl*ivar%d1 - ivar%delta1*ivar%tau1*d1_tl) / d12
353 ie2_tl = ivar%f * (delta2_tl*ivar%tau2*ivar%d2 + ivar%delta2*tau2_tl*ivar%d2 - ivar%delta2*ivar%tau2*d2_tl) / d22
357 iesigma_tl = sigma_tl / ivar%f0
360 re_tl = re1_tl + re2_tl + einf_tl
361 ie_tl = ie1_tl + ie2_tl + iesigma_tl
362 permittivity_tl = cmplx(re_tl, -ie_tl,
fp)
421 Permittivity_AD, & ! Input
422 Temperature_AD , & ! Output
425 COMPLEX(fp),
INTENT(IN OUT) :: permittivity_ad
426 REAL(fp),
INTENT(IN OUT) :: temperature_ad
430 REAL(fp) :: tau1_ad, tau2_ad
431 REAL(fp) :: delta1_ad, delta2_ad, einf_ad
432 REAL(fp) :: d1_ad, d2_ad
435 REAL(fp) :: re1_ad, re2_ad
436 REAL(fp) :: ie1_ad, ie2_ad
437 REAL(fp) :: sigma_ad, iesigma_ad
438 REAL(fp) :: re_ad, ie_ad
445 ie_ad = -aimag(permittivity_ad)
446 re_ad =
REAL(permittivity_ad,
fp)
447 permittivity_ad =
zero 450 iesigma_ad = ie_ad; ie2_ad = ie_ad; ie1_ad = ie_ad
451 einf_ad = re_ad; re2_ad = re_ad; re1_ad = re_ad
454 sigma_ad = iesigma_ad / ivar%f0
458 d22 = ivar%d2**2; m2 = ivar%f / d22
459 d12 = ivar%d1**2; m1 = ivar%f / d12
461 d2_ad = -(ivar%delta2 * ivar%tau2 * m2 * ie2_ad )
462 tau2_ad = ivar%delta2 * ivar%d2 * m2 * ie2_ad
463 delta2_ad = ivar%tau2 * ivar%d2 * m2 * ie2_ad
465 d1_ad = -(ivar%delta1 * ivar%tau1 * m1 * ie1_ad )
466 tau1_ad = ivar%delta1 * ivar%d1 * m1 * ie1_ad
467 delta1_ad = ivar%tau1 * ivar%d1 * m1 * ie1_ad
470 d2_ad = d2_ad - (re2_ad * ivar%delta2 / d22)
471 delta2_ad = delta2_ad + (re2_ad / ivar%d2)
473 d1_ad = d1_ad - (re1_ad * ivar%delta1 / d12)
474 delta1_ad = delta1_ad + (re1_ad / ivar%d1)
477 tau2_ad = tau2_ad + (
two * ivar%f2 * ivar%tau2 * d2_ad)
478 tau1_ad = tau1_ad + (
two * ivar%f2 * ivar%tau1 * d1_ad)
502 temperature_ad = temperature_ad + t_ad
real(fp), dimension(0:2), parameter tau1_coeff
real(fp), parameter point5
subroutine, public ellison_ocean_permittivity(Temperature, Frequency, Permittivity, iVar)
integer, parameter, public fp
real(fp), parameter, public pi
real(fp), parameter ghz_to_hz
character(*), parameter module_version_id
real(fp), parameter ps_to_s
real(fp), dimension(0:1), parameter sigma_coeff
real(fp), dimension(0:3), parameter delta2_coeff
real(fp), parameter three
subroutine, public ellison_ocean_permittivity_tl(Temperature_TL, Permittivity_TL, iVar)
real(fp), dimension(0:3), parameter delta1_coeff
real(fp), dimension(0:3), parameter tau2_coeff
real(fp), dimension(0:1), parameter einf_coeff
real(fp), parameter twopi
real(fp), parameter, public permittivity
subroutine, public ellison_ocean_permittivity_ad(Permittivity_AD, Temperature_AD, iVar)
real(fp), parameter scale_factor