26 k_to_c => standard_temperature
47 '$Id: Guillou.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 48 REAL(fp),
PARAMETER ::
zero = 0.0_fp
49 REAL(fp),
PARAMETER ::
point5 = 0.5_fp
50 REAL(fp),
PARAMETER ::
one = 1.0_fp
51 REAL(fp),
PARAMETER ::
two = 2.0_fp
52 REAL(fp),
PARAMETER ::
three = 3.0_fp
53 REAL(fp),
PARAMETER ::
four = 4.0_fp
54 REAL(fp),
PARAMETER ::
five = 5.0_fp
61 REAL(fp),
PARAMETER ::
ps_to_s = 1.0e-12_fp
71 REAL(fp),
PARAMETER ::
d1_coeff(0:2) = (/ 0.086374_fp, &
74 REAL(fp),
PARAMETER ::
d2_coeff(0:2) = (/ 0.077454_fp, &
81 REAL(fp),
PARAMETER ::
a1_coeff(0:5) = (/ 81.820_fp, &
87 REAL(fp),
PARAMETER ::
a2_coeff(0:5) = (/ 0.12544_fp, &
97 REAL(fp),
PARAMETER ::
b1_coeff(0:5) = (/ 6.4587_fp , &
107 REAL(fp),
PARAMETER ::
c1_coeff(0:5) = (/ 17.303_fp , &
113 REAL(fp),
PARAMETER ::
c2_coeff(0:5) = (/-6.272e-03_fp , &
204 Temperature , & ! Input
206 Frequency , & ! Input
207 Permittivity, & ! Output
210 REAL(fp),
INTENT(IN) :: temperature
211 REAL(fp),
INTENT(IN) :: salinity
212 REAL(fp),
INTENT(IN) :: frequency
223 ivar%t = temperature - k_to_c
235 sigma = ivar%d1 + ivar%s*ivar%d2
254 ivar%es = ivar%a1 - ivar%s*ivar%a2
284 tau = ivar%c1 + ivar%s*ivar%c2
294 ivar%f2po =
one+ivar%f2
297 re = (ivar%es + ivar%einf*ivar%f2)/ivar%f2po
300 ie = ivar%f*(ivar%es - ivar%einf)/ivar%f2po + sigma/ivar%f0
366 Temperature_TL , & ! Input
367 Salinity_TL , & ! Input
368 Frequency , & ! Input
369 Permittivity_TL, & ! Output
372 REAL(fp),
INTENT(IN) :: temperature_tl
373 REAL(fp),
INTENT(IN) :: salinity_tl
374 REAL(fp),
INTENT(IN) :: frequency
375 COMPLEX(fp),
INTENT(OUT) :: permittivity_tl
378 REAL(fp) :: d1_tl, d2_tl, sigma_tl
379 REAL(fp) :: a1_tl, a2_tl, es_tl
381 REAL(fp) :: c1_tl, c2_tl, tau_tl
382 REAL(fp) :: f_tl, f2_tl, f2po_tl
384 REAL(fp) :: re_tl, ie_tl
396 sigma_tl = d1_tl + ivar%s*d2_tl + salinity_tl*ivar%d2
414 es_tl = a1_tl - ivar%s*a2_tl - salinity_tl*ivar%a2
442 tau_tl = c1_tl + ivar%s*c2_tl + salinity_tl*ivar%c2
449 f2_tl =
two * ivar%f * f_tl
452 inv_f2po =
one/ivar%f2po
455 re_tl = inv_f2po*(ivar%f2*einf_tl + &
457 inv_f2po*(ivar%es-ivar%einf)*f2po_tl)
460 ie_tl = inv_f2po*(ivar%f*es_tl - &
462 inv_f2po*(ivar%es-ivar%einf)*(
one-ivar%f2)*f_tl) + &
466 permittivity_tl = cmplx(re_tl, -ie_tl,
fp)
534 Permittivity_AD, & ! Input
535 Frequency , & ! Input
536 Temperature_AD , & ! Output
537 Salinity_AD , & ! Output
540 COMPLEX(fp),
INTENT(IN OUT) :: permittivity_ad
541 REAL(fp),
INTENT(IN) :: frequency
542 REAL(fp),
INTENT(IN OUT) :: temperature_ad
543 REAL(fp),
INTENT(IN OUT) :: salinity_ad
546 REAL(fp) :: ie_ad, re_ad
548 REAL(fp) :: a1_ad, a2_ad, es_ad
550 REAL(fp) :: c1_ad, c2_ad, tau_ad
551 REAL(fp) :: d1_ad, d2_ad, sigma_ad
552 REAL(fp) :: f2_ad, f_ad
558 ie_ad = -aimag(permittivity_ad)
559 re_ad =
REAL(permittivity_ad,
fp)
560 permittivity_ad =
zero 564 sigma_ad = ie_ad/ivar%f0
565 f2_ad = -ie_ad*ivar%f*(ivar%es-ivar%einf)/f2po2
566 einf_ad = -ie_ad*ivar%f/ivar%f2po
567 es_ad = ie_ad*ivar%f/ivar%f2po
568 f_ad = ie_ad*(ivar%es-ivar%einf)/ivar%f2po
572 f2_ad = f2_ad - re_ad*(ivar%es-ivar%einf)/f2po2
573 einf_ad = einf_ad + re_ad*ivar%f2/ivar%f2po
574 es_ad = es_ad + re_ad/ivar%f2po
578 f_ad = f_ad +
two*ivar%f*f2_ad
588 salinity_ad = salinity_ad + ivar%c2*tau_ad
589 c2_ad = ivar%s * tau_ad
619 salinity_ad = salinity_ad - ivar%a2*es_ad
620 a2_ad = -ivar%s * es_ad
639 salinity_ad = salinity_ad + ivar%d2*sigma_ad
640 d2_ad = ivar%s * sigma_ad
real(fp), parameter, public zero
real(fp), parameter, public four
integer, parameter, public fp
real(fp), parameter, public three
real(fp), dimension(0:5), parameter c2_coeff
real(fp), dimension(0:5), parameter a2_coeff
real(fp), dimension(0:2), parameter d2_coeff
real(fp), dimension(0:5), parameter b1_coeff
real(fp), parameter ghz_to_hz
subroutine, public guillou_ocean_permittivity_ad(Permittivity_AD, Frequency, Temperature_AD, Salinity_AD, iVar)
real(fp), parameter, public one
real(fp), parameter, public twopi
real(fp), parameter point5
real(fp), dimension(0:5), parameter c1_coeff
real(fp), parameter, public two
real(fp), parameter, public permittivity
subroutine, public guillou_ocean_permittivity(Temperature, Salinity, Frequency, Permittivity, iVar)
real(fp), dimension(0:5), parameter a1_coeff
character(*), parameter module_version_id
real(fp), parameter scale_factor
real(fp), parameter, public five
real(fp), parameter ps_to_s
subroutine, public guillou_ocean_permittivity_tl(Temperature_TL, Salinity_TL, Frequency, Permittivity_TL, iVar)
real(fp), parameter, public pi
real(fp), dimension(0:2), parameter d1_coeff