17 real (r8),
intent(in) :: p, saturation_fraction
18 real (r8),
intent(in),
optional :: ct, t
22 real (r8) :: ctx, ctsat, sa
25 real (r8),
parameter :: aa = 0.014289763856964_r8
26 real (r8),
parameter :: bb = 0.057000649899720_r8
28 real (r8),
parameter :: p0 = 2.570124672768757e-1_r8
29 real (r8),
parameter :: p1 = -1.917742353032266e1_r8
30 real (r8),
parameter :: p2 = -1.413382858617969e-2_r8
31 real (r8),
parameter :: p3 = -5.427484830917552e-1_r8
32 real (r8),
parameter :: p4 = -4.126621135193472e-4_r8
33 real (r8),
parameter :: p5 = -4.176407833276121e-7_r8
34 real (r8),
parameter :: p6 = 4.688217641883641e-5_r8
35 real (r8),
parameter :: p7 = -3.039808885885726e-8_r8
36 real (r8),
parameter :: p8 = -4.990118091261456e-11_r8
37 real (r8),
parameter :: p9 = -9.733920711119464e-9_r8
38 real (r8),
parameter :: p10 = -7.723324202726337e-12_r8
39 real (r8),
parameter :: p11 = 7.121854166249257e-16_r8
40 real (r8),
parameter :: p12 = 1.256474634100811e-12_r8
41 real (r8),
parameter :: p13 = 2.105103897918125e-15_r8
42 real (r8),
parameter :: p14 = 8.663811778227171e-19_r8
46 sa =
max(-(ct + 9e-4_r8*p)/0.06_r8, 0.0_r8)
48 else if (
present(t))
then 49 sa =
max(-(t + 9e-4_r8*p)/0.06_r8, 0.0_r8)
60 ctsat = ctx - (1.0_r8-saturation_fraction)* &
61 (1e-3_r8)*(2.4_r8-aa*sa)*(1.0_r8+bb*(1.0_r8-sa/
gsw_sso))
64 + p*(p2 + p4*ctsat + p*(p5 + ctsat*(p7 + p9*ctsat) &
65 + p*(p8 + ctsat*(p10 + p12*ctsat) + p*(p11 + p13*ctsat + p14*p)))) &
66 + ctsat*(p1 + ctsat*(p3 + p6*p))
real(r8), parameter gsw_sso
elemental real(r8) function gsw_sa_freezing_estimate(p, saturation_fraction, ct, t)