3 v_sa_ct, v_ct_ct, v_sa_p, v_ct_p, iflag)
35 real (r8),
intent(in) :: sa, ct, p
36 integer,
intent(in),
optional :: iflag
37 real (r8),
intent(out),
optional :: v_sa_sa, v_sa_ct, v_ct_ct, v_sa_p, v_ct_p
41 real (r8) :: v_ct_ct_part, v_ct_p_part, v_sa_ct_part, v_sa_p_part
42 real (r8) :: v_sa_sa_part, xs, xs2, ys, z
49 if (
present(iflag))
then 51 flags(i) = btest(iflag,i)
57 if (
present(v_sa_sa) .and. flags(1))
then 73 if (
present(v_sa_ct) .and. flags(2))
then 83 v_sa_ct = 0.025_r8*0.5_r8*
gsw_sfac*v_sa_ct_part
87 if (
present(v_ct_ct) .and. flags(3))
then 98 v_ct_ct = 0.025_r8*0.025_r8*v_ct_ct_part
102 if (
present(v_sa_p) .and. flags(4))
then 111 v_sa_p = 1e-8_r8*0.5_r8*
gsw_sfac*v_sa_p_part
115 if (
present(v_ct_p) .and. flags(5))
then 124 v_ct_p = 1e-8_r8*0.025_r8*v_ct_p_part
elemental subroutine gsw_specvol_second_derivatives(sa, ct, p, v_sa_sa, v_sa_ct, v_ct_ct, v_sa_p, v_ct_p, iflag)
real(r8), parameter offset
real(r8), parameter gsw_sfac