// ///////////////////////////////////////////////////////////////////
//
//   	    Fully custom configuration of sequential DPRIMME 
//
// ///////////////////////////////////////////////////////////////////
// The following must be assigned in the program after the matrix is read
// primme.n 
// primme.matrixMatvec
// primme.applyPreconditioner  (No need to set if primme.precondition = 0)
// ///////////////////////////////////////////////////////////////////
// WORK ARRAYS
// primme.intWorkSize/realWorkSize   (better left for dprimme to 
// primme.intWork/realWork             allocate these internally)
// ///////////////////////////////////////////////////////////////////
// With sequential runs, no need to set the folloing provided that
// primme_initialize() is called first
// primme.nLocal               
// primme.numProcs            
// primme.procID 	
// primme.globalSumDouble      
// ///////////////////////////////////////////////////////////////////

// Output and reporting
primme.printLevel         = 4                      // Choices 0, ..., 5

// Solver parameters
primme.numEvals           = 10
primme.aNorm		  = 0.0                    // if aNorm <= 0 dynamic
primme.eps                = 1.0e-12
primme.maxBasisSize       = 15
primme.minRestartSize     = 7
primme.maxBlockSize       = 2
primme.maxOuterIterations = 10000          
primme.maxMatvecs         = 300000
primme.target             = primme_smallest        
//   all target choices
//   primme_smallest    
//   primme_largest     
//   primme_closest_geq 
//   primme_closest_leq
//   primme_closest_abs
primme.numTargetShifts    = 0
primme.targetShifts       = 1.0 2.0
primme.locking            = 1
primme.initSize           = 1
primme.numOrthoConst      = 0
primme.iseed              = 3 5 101 4027

// Restarting
primme.restarting.scheme        = primme_thick    // primme_thick or primme_dtr
primme.restarting.maxPrevRetain = 2

// Correction parameters
primme.correction.precondition       = 1
primme.correction.robustShifts       = 1
primme.correction.maxInnerIterations = -1
primme.correction.relTolBase         = 1.5
primme.correction.convTest           = primme_adaptive_ETolerance
//    convTest choices
//    primme_adaptive_ETolerance
//    primme_adaptive
//    primme_full_LTolerance
//    primme_decreasing_LTolerance

// projectors for JD cor.eq.
primme.correction.projectors.LeftQ  = 0
primme.correction.projectors.LeftX  = 1
primme.correction.projectors.RightQ = 0
primme.correction.projectors.SkewQ  = 0
primme.correction.projectors.RightX = 0
primme.correction.projectors.SkewX  = 0
