function [minerror] = tsg_accuracy(hMainFig, PARA, dtTsg) % % Give the accuracy of TSG salinity/temperature measurement based on % SeaBird specifications, to use as the minimum error on measurements % see http://www.seabird.com/products/spec_sheets/38data.htm % http://www.seabird.com/products/spec_sheets/3Sdata.htm % http://www.seabird.com/products/spec_sheets/21data.htm % http://www.seabird.com/products/spec_sheets/45data.htm % % Get the tsg and sample structures from the application % ------------------------------------------------------ tsg = getappdata( hMainFig, 'tsg_data'); if strcmp( PARA, 'SSTP') if strcmp( tsg.TYPE_TINT, 'SBE38') | strcmp( tsg.TYPE_TINT, 'SBE3S') % Accuracy of intake temperature is 0.001�C for SBE38/SBE3S sensors minerror=0.001; else % Assume the same for other sensors minerror=0.001; end end if strcmp( PARA, 'SSJT') if strcmp( tsg.TYPE_TSG, 'SBE45') % Accuracy of jacket temperature is 0.002�C for SBE45 TSG minerror=0.002; else % Accuracy of jacket temperature is 0.01�C for SBE21 TSG minerror=0.01; end end if strcmp( PARA, 'SSPS') if strcmp( tsg.TYPE_TSG, 'SBE45') % Accuracy of temperature/conductivity is 0.002�C/0.005mS/cm for SBE45 TSG errT=0.002; errC=0.005; else % Accuracy of temperature/conductivity is 0.01�C/0.01mS/cm for SBE21 TSG errT=0.01; errC=0.01; end if ~isempty( tsg.SSJT_CAL) T = tsg.SSJT_CAL(dtTsg); else T = tsg.SSJT(dtTsg); end if ~isempty( tsg.CNDC_CAL) C = tsg.CNDC_CAL(dtTsg); else C = tsg.CNDC(dtTsg); end % salinity error is computed from temperature/conductivity errors % by error propagation in the salinity equation % see Emery and Thomson, Data analysis methods in phys. oceano., p.273 R=C/sw_c3515(); rt = sw_salrt(T); Rt=R./rt; %Rt is a function of C,T %error on Rt : err(Rt)^2=(d(Rt)/dC*errC)^2+(d(Rt)/dT*errT)^2 dRtdC=1./(rt*sw_c3515()); c68 = 1.00024; c0 = 0.6766097; c1 = 2.00564e-2; c2 = 1.104259e-4; c3 = -6.9698e-7; c4 = 1.0031e-9; dRtdT=c68*R.*(c1+(2*c2+(3*c3+4*c4*T).*T*c68).*T*c68)./(rt.^2); errRt=sqrt((dRtdC*errC).^2+(dRtdT*errT).^2); %S is a function of Rt,T %error on S: err(S)^2=(dS/dRt*errRt)^2+(dS/dT*errT)^2 del_T68 = T * 1.00024 - 15; Rtx = sqrt(Rt); a0 = 0.0080; a1 = -0.1692; a2 = 25.3851; a3 = 14.0941; a4 = -7.0261; a5 = 2.7081; b0 = 0.0005; b1 = -0.0056; b2 = -0.0066; b3 = -0.0375; b4 = 0.0636; b5 = -0.0144; k = 0.0162; dSdRt=(a1+(2*a2+(3*a3+(4*a4+5*a5*Rtx).*Rtx).*Rtx).*Rtx)./(2*Rtx)... +(del_T68./(1+k*del_T68)).*(b1+(2*b2+(3*b3+(4*b4+5*b5*Rtx).*Rtx).*Rtx).*Rtx)./(2*Rtx); dSdT=(b0+(b1+(b2+(b3+(b4+b5.*Rtx).*Rtx).*Rtx).*Rtx).*Rtx)./((1+k*del_T68).^2); errS=sqrt((dSdRt.*errRt).^2+(dSdT.*errT).^2); minerror=errS; end end