3 dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil)
44 real (r8),
intent(in) :: sa, p, w_ih
45 real (r8),
intent(out) :: dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil
47 real (r8) :: bracket1, bracket2, cp_ih, gamma_ih, h, h_ih, part, rec_bracket3
48 real (r8) :: tf, wcp, h_hat_sa, h_hat_ct, tf_sa, tf_p, ctf, ctf_sa, ctf_p
50 real (r8),
parameter :: saturation_fraction = 0.0_r8
62 wcp = cp_ih*w_ih/(1.0_r8 - w_ih)
63 part = (tf_p - gamma_ih)/ctf_p
65 bracket1 = h_hat_ct + wcp*part
66 bracket2 = h - h_ih - sa*(h_hat_sa + wcp*(tf_sa - part*ctf_sa))
67 rec_bracket3 = 1.0_r8/(h - h_ih - sa*(h_hat_sa + h_hat_ct*ctf_sa + wcp*tf_sa))
69 dsa_dct_frazil = sa*(bracket1/bracket2)
70 dsa_dp_frazil = sa*ctf_p*bracket1*rec_bracket3
71 dct_dp_frazil = ctf_p*bracket2*rec_bracket3
elemental subroutine gsw_frazil_ratios_adiabatic_poly(sa, p, w_ih, dsa_dct_frazil, dsa_dp_frazil, dct_dp_frazil)