da_epsalt_tl.inc
References to this file elsewhere.
1 subroutine da_epsalt_tl(f,t,ssw,epsr,epsi,TGL_t, TGL_epsr, TGL_epsi)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: returns the complex dielectric constant of sea water, using the
5 ! model of Klein and Swift (1977)
6 !
7 ! Input f = frequency (GHz)
8 ! t = temperature (C)
9 ! ssw = salinity (permil) (if ssw < 0, ssw = 32.54)
10 ! Output epsr,epsi = real and imaginary parts of dielectric constant
11 ! Input : TGL_t (ssw is treated as a constant now)
12 ! Output : TGL_epsr, TGL_epsi, epsr, epsi
13 !-----------------------------------------------------------------------
14
15 implicit none
16
17 real, intent(in) :: f, t, TGL_t
18 real, intent(inout) :: ssw
19 real, intent(out) :: TGL_epsr, TGL_epsi, epsr, epsi
20
21 complex :: cdum1,cdum2,cdum3
22 complex :: TGL_cdum1,TGL_cdum2,TGL_cdum3
23 real :: ssw2,ssw3,t2,t3,es,a,esnew,tau,b,sig,taunew
24 real :: delt,delt2,beta,signew,om
25 real :: TGL_t2,TGL_t3,TGL_es,TGL_a,TGL_esnew,TGL_tau,TGL_b,TGL_taunew
26 real :: TGL_delt,TGL_delt2,TGL_beta,TGL_signew
27
28 if (trace_use) call da_trace_entry("da_epsalt_tl")
29
30 if (ssw .lt. 0.0) ssw = 32.54
31 ssw2 = ssw*ssw
32 ssw3 = ssw2*ssw
33 t2 = t*t
34 TGL_t2 = 2.0*t*TGL_t
35 t3 = t2*t
36 TGL_t3 = TGL_t2*t + t2*TGL_t
37 es = 87.134 - 1.949e-1*t - 1.276e-2*t2 + 2.491e-4*t3
38 TGL_es = - 1.949e-1*TGL_t - 1.276e-2*TGL_t2 + 2.491e-4*TGL_t3
39
40 a = 1.0 + 1.613e-5*ssw*t - 3.656e-3*ssw + 3.21e-5*ssw2 - &
41 4.232e-7*ssw3
42 TGL_a = 1.613e-5*ssw*TGL_t
43 esnew = es*a
44 TGL_esnew = TGL_es*a + es*TGL_a
45
46 tau = 1.768e-11 - 6.086e-13*t + 1.104e-14*t2 - 8.111e-17*t3
47 TGL_tau = - 6.086e-13*TGL_t + 1.104e-14*TGL_t2 - 8.111e-17*TGL_t3
48 b = 1.0 + 2.282e-5*ssw*t - 7.638e-4*ssw - 7.760e-6*ssw2 + &
49 1.105e-8*ssw3
50 TGL_b = 2.282e-5*ssw*TGL_t
51 taunew = tau*b
52 TGL_taunew = TGL_tau*b + tau*TGL_b
53
54 sig = ssw*(0.182521 - 1.46192e-3*ssw + 2.09324e-5*ssw2 - &
55 1.28205e-7*ssw3)
56 delt = 25.0 - t
57 TGL_delt = - TGL_t
58 delt2 = delt*delt
59 TGL_delt2 = 2.0*delt*TGL_delt
60 beta = 2.033e-2 + 1.266e-4*delt + 2.464e-6*delt2 &
61 - ssw*(1.849e-5 - 2.551e-7*delt + 2.551e-8*delt2)
62 TGL_beta = 1.266e-4*TGL_delt + 2.464e-6*TGL_delt2 &
63 - ssw*(-2.551e-7*TGL_delt + 2.551e-8*TGL_delt2)
64 signew = sig*exp(-beta*delt)
65 TGL_signew = - signew*(TGL_beta*delt+beta*TGL_delt)
66
67 om = 2.0e9*pi*f
68 cdum1 = cmplx(0.0,om*taunew)
69 TGL_cdum1 = cmplx(0.0,om*TGL_taunew)
70 cdum2 = cmplx(0.0,signew/(om*8.854e-12))
71 TGL_cdum2 = cmplx(0.0,TGL_signew/(om*8.854e-12))
72
73 cdum3 = 4.9 + (esnew-4.9)/(1.0 + cdum1) - cdum2
74 TGL_cdum3 = TGL_esnew/(1.0 + cdum1) &
75 - TGL_cdum1*(esnew-4.9)/((1.0 + cdum1)*(1.0 + cdum1)) &
76 - TGL_cdum2
77 epsr = real(cdum3)
78 TGL_epsr = real(TGL_cdum3)
79 epsi = -aimag(cdum3)
80 TGL_epsi = -aimag(TGL_cdum3)
81
82 if (trace_use) call da_trace_exit("da_epsalt_tl")
83
84 end subroutine da_epsalt_tl
85
86