FV3 Bundle
gsw_ct_freezing_poly.f90
Go to the documentation of this file.
1 !==========================================================================
2 elemental function gsw_ct_freezing_poly (sa, p, saturation_fraction)
3 !==========================================================================
4 !
5 ! Calculates the Conservative Temperature at which seawater freezes.
6 ! The error of this fit ranges between -5e-4 K and 6e-4 K when compared
7 ! with the Conservative Temperature calculated from the exact in-situ
8 ! freezing temperature which is found by a Newton-Raphson iteration of the
9 ! equality of the chemical potentials of water in seawater and in ice.
10 ! Note that the Conservative temperature freezing temperature can be found
11 ! by this exact method using the function gsw_CT_freezing.
12 !
13 ! SA = Absolute Salinity [ g/kg ]
14 ! p = sea pressure [ dbar ]
15 ! ( i.e. absolute pressure - 10.1325 dbar )
16 ! saturation_fraction = the saturation fraction of dissolved air in
17 ! seawater
18 !
19 ! CT_freezing = Conservative Temperature at freezing of seawater [ deg C ]
20 ! That is, the freezing temperature expressed in
21 ! terms of Conservative Temperature (ITS-90).
22 !--------------------------------------------------------------------------
23 
25 
27 
28 use gsw_mod_kinds
29 
30 implicit none
31 
32 real (r8), intent(in) :: sa, p, saturation_fraction
33 
34 real (r8) :: gsw_ct_freezing_poly
35 
36 real (r8) :: p_r, sa_r, x
37 
38 sa_r = sa*1e-2_r8
39 x = sqrt(sa_r)
40 p_r = p*1e-4_r8
41 
43  + sa_r*(c1 + x*(c2 + x*(c3 + x*(c4 + x*(c5 + c6*x))))) &
44  + p_r*(c7 + p_r*(c8 + c9*p_r)) + sa_r*p_r*(c10 + p_r*(c12 &
45  + p_r*(c15 + c21*sa_r)) + sa_r*(c13 + c17*p_r + c19*sa_r) &
46  + x*(c11 + p_r*(c14 + c18*p_r) + sa_r*(c16 + c20*p_r + c22*sa_r)))
47 
48 ! Adjust for the effects of dissolved air
49 gsw_ct_freezing_poly = gsw_ct_freezing_poly - saturation_fraction* &
50  (1e-3_r8)*(2.4_r8 - a*sa)*(1.0_r8 + b*(1.0_r8 - sa/gsw_sso))
51 
52 return
53 end function
elemental real(r8) function gsw_ct_freezing_poly(sa, p, saturation_fraction)