%%*************************************************************************
%% sqlparameters.m: set OPTIONS structure to specify default
%%                  parameters for sqlp.m
%%
%% OPTIONS.vers        : version of direction to use.  
%%                       1 for HKM direction
%%                       2 for NT direction
%%                       0 for the default (which uses the HKM direction if 
%%                       semidefinite blocks exist; and NT direction of SOCP problms)
%% OPTIONS.gam         : step-length parameter,
%% OPTIONS.predcorr    : whether to use Mehrotra predictor-corrector. 
%% OPTIONS.expon       : exponent in decrease of centering parameter sigma. 
%% OPTIONS.gaptol      : tolerance for duality gap as a fraction of the 
%%                       value of the objective functions. 
%% OPTIONS.inftol      : tolerance for stopping due to suspicion of 
%%                       infeasibility.
%% OPTIONS.steptol     : toloerance for stopping due to small steps.
%% OPTIONS.maxit       : maximum number of iteration allowed 
%% OPTIONS.printlevel  : 3, if want to display result in each iteration, 
%%                       2, if want to display only summary,
%%                       1, if want to display warning message,
%%                       0, no display at all.  
%% OPTIONS.stoplevel   : 2, if want to automatically detect termination; 
%%                       1, if want to automatically detect termination, but
%%                          restart automatically with a new iterate
%%                          when the algorithm stagnants because of tiny step-lengths. 
%%                       0, if want the algorithm to continue forever except for 
%%                          successful completion, maximum number of iterations, or 
%%                          numerical failures. Note, do not change this field unless  
%%                          you very sure. 
%% OPTIONS.scale_data  : 1, if want to scale the data before solving the problem, 
%%                          else = 0
%% OPTIONS.rmdepconstr : 1, if want to remove nearly dependent constraints,
%%                          else = 0. 
%% OPTIONS.smallblkdim : block-size threshold determining what method to compute the 
%%                       schur complement matrix corresponding to semidefintie block.
%%                       NOTE: this number should be small, say less than 20. 
%% OPTIONS.parbarrier  : parameter values of the log-barrier terms in the SQLP problem. 
%%                       Default = [],  meaning that the parameter values are all 0.
%% OPTIONS.schurfun    : [], if no user supplied routine to compute the Schur matrix, 
%%                       else, it is a cell array where each cell is either [],
%%                       or contains a string that is the file name where the Schur matrix
%%                       of the associated block data is computed. 
%%                       For example, if the SQLP data has the block structure
%%                       blk{1,1} = '1'; blk{1,2} = 10;
%%                       blk{2,1} = 's'; blk{2,2} = 50;
%%                       and 
%%                       OPTIONS.schurfun{1} = []; 
%%                       OPTIONS.schurfun{2} = 'myownschur', where
%%                             'myownschur' is a function with the calling sequence: 
%%                              function   schur = myownschur(X2,Z2inv,schurfun_par(2,:)); 
%%                       This means that for the first block, the Schur
%%                       matrix is computed by the default method in SDPT3,
%%                       and for the second block, the user supplies the
%%                       routine to compute the associated Schur matrix. 
%% OPTIONS.schurfun_par: [], if no user supplied routine to compute the Schur matrix, 
%%                       else, it is a cell array where the p-th row is either [],  
%%                       or is a cell array containing the parameters needed in 
%%                       the user supplied Schur routine OPTIONS.schurfun{p}.  
%%                       For example, for the block structure described
%%                       above, we may have: 
%%                       OPTIONS.schurfun_par{1} = [];
%%                       OPTIONS.schurfun_par{2,1} = par1;
%%                       OPTIONS.schurfun_par{2,2} = par2;
%%*****************************************************************
%% SDPT3: version 4.0
%% Copyright (c) 1997 by
%% Kim-Chuan Toh, Michael J. Todd, Reha H. Tutuncu
%% Last Modified: 16 Sep 2004
%%*****************************************************************

   function OPTIONS = sqlparameters 

   OPTIONS.vers           = 0; 
   OPTIONS.gam            = 0;  
   OPTIONS.predcorr       = 1;
   OPTIONS.expon          = 1; 
   OPTIONS.gaptol         = 1e-8;
   OPTIONS.inftol         = 1e-8; 
   OPTIONS.steptol        = 1e-6; 
   OPTIONS.maxit          = 100; 
   OPTIONS.printlevel     = 3; 
   OPTIONS.stoplevel      = 1; %% do not change this field unless you very sure. 
   OPTIONS.scale_data     = 0; 
   OPTIONS.spdensity      = 0.4; 
   OPTIONS.rmdepconstr    = 0; 
   OPTIONS.smallblkdim    = 50;
   OPTIONS.parbarrier     = []; 
   OPTIONS.schurfun       = [];
   OPTIONS.schurfun_par   = [];
%%*************************************************************************
