3 saturation_fraction, ctfreezing_sa, ctfreezing_p)
34 real (r8),
intent(in) :: sa, p, saturation_fraction
35 real (r8),
intent(out),
optional :: ctfreezing_sa, ctfreezing_p
37 real (r8) :: p_r, sa_r, x
39 real (r8),
parameter :: d = -a - a*
b - 2.4_r8*
b/
gsw_sso 40 real (r8),
parameter :: e = 2.0_r8*a*
b/
gsw_sso 46 if (
present(ctfreezing_sa)) ctfreezing_sa = &
47 (
c1 + x*(1.5_r8*
c2 + x*(2.0_r8*
c3 + x*(2.5_r8*
c4 + x*(3.0_r8*
c5 &
48 + 3.5_r8*
c6*x)))) + p_r*(
c10 + x*(1.5_r8*
c11 + x*(2.0_r8*
c13 &
49 + x*(2.5_r8*
c16 + x*(3.0_r8*
c19 + 3.5_r8*
c22*x)))) &
50 + p_r*(
c12 + x*(1.5_r8*
c14 + x*(2.0_r8*
c17 + 2.5_r8*
c20*x)) &
51 + p_r*(
c15 + x*(1.5_r8*
c18 + 2.0_r8*
c21*x)))))*1e-2_r8 &
52 - saturation_fraction*1e-3_r8*(d - sa*e)
54 if (
present(ctfreezing_p)) ctfreezing_p = &
56 + p_r*(2.0_r8*
c8 + sa_r*(2.0_r8*
c12 + x*(2.0_r8*
c14 + x*(2.0_r8*
c17 &
57 + 2.0_r8*
c20*x))) + p_r*(3.0_r8*
c9 + sa_r*(3.0_r8*
c15 + x*(3.0_r8*
c18 &
58 + 3.0_r8*
c21*x)))))*1e-8_r8
real(r8), parameter gsw_sso
elemental subroutine gsw_ct_freezing_first_derivatives_poly(sa, p, saturation_fraction, ctfreezing_sa, ctfreezing_p)