Skip to content
Snippets Groups Projects
calibration.m 2.7 KiB
Newer Older
function calibration( hMainFig )
%
% Calibrate :
% CNDC ...... Conductivity
% SSJT ...... Jacket temperature
% SSTP ...... Precise temperature
%
% Compute salinity from calibrated conductivity and jacket temperature 
%
% Bug :
% 1 - tsg.SSPS_CAL = sw_salt( cond/sw_c3515(),t90TOt68(temp),zeros(size(cond)));
%     replaced by
%     tsg.SSPS_CAL = sw_salt( cond/sw_c3515(),temp,zeros(size(cond)));
%
%     CSIRO toolbox modified sw_salt modified to use temprature ITS90
%
%

% Get tsg application data
% ------------------------
tsg = getappdata( hMainFig, 'tsg_data' );

% Variables
% ---------
PARA = [ 'CNDC'; 'SSJT'; 'SSTP' ];

for i = 1:3

  if ~isempty( tsg.(PARA(i,:)) )

    para1 = [PARA(i,:) '_LINCOEF'];
    para2 = [PARA(i,:) '_CAL'];
    
    % If the Slope = 1 and the offset = 0 : No calibration
    % The variable _CAL must be emptied
    % ---------------------------------------------------------------------
    if abs(1-tsg.(para1)(1)) > .00000001 || abs(0-tsg.(para1)(2)) > .00000001
      tsg.(para2) = tsg.(para1)(1) * tsg.(PARA(i,:)) + tsg.(para1)(2);
    else
      tsg.(para2) = [];
    end

  elseif strcmp( PARA(i,:), 'CNDC' ) || strcmp( PARA(i,:), 'SSJT' )
    msgbox( [ '    No ' PARA(i,:) ' data'],...
      'Function ''Calibration''',...
      'warn', 'modal');
    return
  end
end

% Compute salinity - Use CSIRO functions
% --------------------------------------

% Test if Conductivity or temperature has been calibrated
% -------------------------------------------------------
indC = find( isnan( tsg.CNDC_CAL ) == 0 );
indT = find( isnan( tsg.SSJT_CAL ) == 0 );
if ~isempty( indC ) || ~isempty( indT ) 

  % If SSJT has not been calibrated used SSJT and not SSJT_CAL to compute
  % SSPS_CAL
  % ---------------------------------------------------------------------
  temp = tsg.SSJT_CAL;
  ind = find( isnan( temp ) == 0 );
  if isempty(ind)
    temp = tsg.SSJT;
  end

  % If CNDC has not been calibrated used CNDC and not CNDC_CAL to compute
  % SSPS_CAL
  % ---------------------------------------------------------------------
  cond = tsg.CNDC_CAL;
  ind = find( isnan( cond ) == 0 );
  if isempty(ind)
    cond = tsg.CNDC;
  end
  
  if ~isempty( temp ) && ~isempty( cond )

% Modification du 13/02/2009
% tsg.SSPS_CAL = sw_salt( ...
%       cond/sw_c3515(), t90TOt68(temp), zeros(size(cond)));
    tsg.SSPS_CAL = sw_salt( cond/sw_c3515(), temp, zeros(size(cond)));
  end

else
  
  % If CNDC_CAL is empty SSPS_CAL must be also empty
  % ------------------------------------------------
  tsg.SSPS_CAL = [];
  
end

% Save tsg application data
% --------------------------
setappdata( hMainFig, 'tsg_data', tsg );

end