27 use gsw_mod_toolbox
, only : gsw_ct_freezing_exact
29 implicit none ;
private 49 real,
intent(in) :: S, pres
50 real,
intent(out) :: T_Fr
51 real,
intent(in) :: TFr_S0_P0, dTFr_dS, dTFr_dp
65 t_fr = (tfr_s0_p0 + dtfr_ds*s) + dtfr_dp*pres
73 TFr_S0_P0, dTFr_dS, dTFr_dp)
74 real,
dimension(:),
intent(in) :: S
75 real,
dimension(:),
intent(in) :: pres
76 real,
dimension(:),
intent(out) :: T_Fr
77 integer,
intent(in) :: start
78 integer,
intent(in) :: npts
79 real,
intent(in) :: TFr_S0_P0
80 real,
intent(in) :: dTFr_dS
82 real,
intent(in) :: dTFr_dp
101 do j=start,start+npts-1
102 t_fr(j) = (tfr_s0_p0 + dtfr_ds*s(j)) + dtfr_dp*pres(j)
114 real,
intent(in) :: S
115 real,
intent(in) :: pres
116 real,
intent(out) :: T_Fr
128 real,
parameter :: cS1 = -0.0575, cs3_2 = 1.710523e-3, cs2 = -2.154996e-4
129 real,
parameter :: dTFr_dp = -7.75e-8
131 t_fr = s*(cs1 + (cs3_2 * sqrt(max(s,0.0)) + cs2 * s)) + dtfr_dp*pres
142 real,
dimension(:),
intent(in) :: S
143 real,
dimension(:),
intent(in) :: pres
144 real,
dimension(:),
intent(out) :: T_Fr
145 integer,
intent(in) :: start
146 integer,
intent(in) :: npts
159 real,
parameter :: cS1 = -0.0575, cs3_2 = 1.710523e-3, cs2 = -2.154996e-4
160 real,
parameter :: dTFr_dp = -7.75e-8
163 do j=start,start+npts-1
164 t_fr(j) = s(j)*(cs1 + (cs3_2 * sqrt(max(s(j),0.0)) + cs2 * s(j))) + &
174 real,
intent(in) :: S
175 real,
intent(in) :: pres
176 real,
intent(out) :: T_Fr
184 real,
dimension(1) :: S0, pres0
185 real,
dimension(1) :: tfr0
199 real,
dimension(:),
intent(in) :: S
200 real,
dimension(:),
intent(in) :: pres
201 real,
dimension(:),
intent(out) :: T_Fr
202 integer,
intent(in) :: start
203 integer,
intent(in) :: npts
214 real,
parameter :: Pa2db = 1.e-4
219 real,
parameter :: saturation_fraction = 0.0
221 do j=start,start+npts-1
226 if(s(j).lt.-1.0e-10) cycle
227 t_fr(j) = gsw_ct_freezing_exact(zs,zp,saturation_fraction)
subroutine calculate_tfreeze_linear_scalar(S, pres, T_Fr, TFr_S0_P0, dTFr_dS, dTFr_dp)
subroutine calculate_tfreeze_teos10_scalar(S, pres, T_Fr)
This subroutine computes the freezing point conservative temparature (in deg C) from absolute salinit...
subroutine calculate_tfreeze_millero_scalar(S, pres, T_Fr)
This subroutine computes the freezing point potential temparature (in deg C) from salinity (in psu)...
subroutine calculate_tfreeze_teos10_array(S, pres, T_Fr, start, npts)
This subroutine computes the freezing point conservative temparature (in deg C) from absolute salinit...
subroutine calculate_tfreeze_linear_array(S, pres, T_Fr, start, npts, TFr_S0_P0, dTFr_dS, dTFr_dp)
This subroutine computes the freezing point potential temparature (in deg C) from salinity (in psu)...
subroutine calculate_tfreeze_millero_array(S, pres, T_Fr, start, npts)
This subroutine computes the freezing point potential temparature (in deg C) from salinity (in psu)...