CG Card
The CG card defines the method to solve the matrix equation.
On the Solve/Run tab, in the Solution settings group, click the Preconditioner icon.
Normally the CG card should not be used. Feko automatically selects optimal solution techniques, preconditioners and other options depending on the problem type. These algorithms should be sufficient in all cases, but they might not be optimal for specific MLFMM and FEM configurations that use iterative solvers.
Parameters:
 Default solver selection (recommended). When this option is selected, then Feko will automatically select a suitable solver along with all its required parameters. The choice depends on whether Feko is executed sequentially or in parallel, but also which solution method is employed (for example direct LU decomposition solver for the MoM while an iterative solver is used for MLFMM or FEM). This option has, regarding the solver type, the same effect as not using a CG card, but still allows the user to change the default termination criteria for the iterative solver types, or to change the preconditioner.
 Gauss elimination (LINPACK routines) Use Gauss elimination from the LINPACK routines.
 Conjugate Gradient Method (CGM)
 Biconjugate gradient method (BCG)
 Iterative solution with band matrix decomposition
 Gauss elimination (LAPACK routines) Use Gauss elimination from the LAPACK routines.
 Block Gauss algorithm (matrix saved to disk) The block Gauss algorithm is used (in case the matrix has to be saved on the hard disk, for example when a sequential outofcore solution is performed).
 CGM (Parallel Iterative Method)
 BCG (Parallel Iterative Method)
 CGS (Parallel Iterative Method)
 BiCGSTAB (Parallel Iterative Method)
 RBiCGSTAB (Parallel Iterative Method)
 RGMRES (Parallel Iterative Method)
 RGMRESEV (Parallel Iterative Method)
 RCGR (Parallel Iterative Method)
 CGNR (Parallel Iterative Method)
 CGNE (Parallel Iterative Method)
 QMR (Parallel Iterative Method)
 TFQMR (Parallel Iterative Method)
 Parallel LUdecomposition (with ScaLAPACK routines). The parallel LU decomposition with ScaLAPACK (solution in main memory) or with outofcore ScaLAPACK (solution with the matrix stored to hard disk). This is the default option for parallel solutions and normally the user need not change it.
 QMR (QMRPACK routines)
 Direct sparse solver. Direct solution method for the ACA or FEM
(no preconditioning).
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 Maximum number of iterations
 The maximum number of iterations for the iterative techniques.
 Stopping criterion for residuum
 Termination criterion for the normalised residue when using iterative methods. The iterative solver will stop when the normalised residue is smaller than this value.
 Stop at maximum residuum
 For the parallel iterative methods, the solution is terminated when the residuum becomes larger than this value. The iterative solution will stop with an error message indicating that the solution has diverged.
 Preconditioners

 Default preconditioner
 Feko will automatically select a suitable preconditioner and its required parameters. The choice depends on whether a parallel solution is performed and the solver method. This option has the same effect as not using a CG card, but still allows selecting other options, for example the residuum settings.
 No preconditioning
 No preconditioning is used. This is option is not recommended with methods that use iterative solvers.
 Scaling the matrix A
 Scaling the matrix [A], so that the elements on the main diagonal are all normalised to one.
 Scaling the matrix [A]^{H}[A]
 Scaling the matrix [A]^{H}[A], so that the elements on the main diagonal are all normalised to one.
 BlockJacobi preconditioning using inverses
 The inverses of the preconditioner are calculated and applied during every iteration step. For performance reasons BlockJacobi preconditioning using LUdecomposition is recommended.
 Neumann polynomial preconditioning
 Self explanatory.
 BlockJacobi preconditioning using LUdecomposition
 BlockJacobi preconditioning where for each block an LUdecomposition is computed in advance, and during the iterations a fast backward substitution is applied.
 Incomplete LUdecomposition
 Use an incomplete LUdecomposition of the matrix as a preconditioner.
 BlockJacobi preconditioning of MLFMM onelevelup
 Special preconditioner for the MLFMM, where additional information is included in the preconditioner.
 LU decomposition of FEM matrix
 An LU decomposition of the FEM matrix is used
as preconditioner. This option will require more memory than the default iterative
solution.
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 ILUT decomposition of FEM matrix
 An incomplete LU decomposition with thresholding of the FEM matrix is used as preconditioner.
 Multilevel ILUT/Diagonal decomposition of the FEM matrix
 Preconditioner for a hybrid FEM/MoM solution. A multilevel sparse incomplete LUdecomposition with thresholding and controlled fillin is applied as preconditioner.
 Multilevel ILUT/ILUT decomposition of the FEM matrix
 Self explanatory
 Multilevel LU/Diagonal decomposition of the FEM matrix
 Preconditioner for a hybrid FEM/MoM solution. A multilevel sparse LU decomposition of
the partitioned system is applied as preconditioner.
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 Multilevel FEMMLFMM LU/diagonal decomposition
 Preconditioner for a hybrid FEM/MLFMM solution. A multilevel sparse LU decomposition
of the combined, partitioned, FEM/MLFMM system is applied as preconditioner.
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 Multilevel FEMMLFMM ILUT/diagonal decomposition
 Preconditioner for a hybrid FEM/MLFMM solution. A multilevel sparse incomplete LU decomposition with thresholding of the combined FEM/MLFMM system is applied as preconditioner. It should employ less memory than the Multilevel FEM/MLFMM LU/diagonal decomposition, but at risk of slower or no convergence.
 Multilevel FEMMLFMM ILU(k)/diagonal decomposition
 Preconditioner for a hybrid FEM/MLFMM solution. A multilevel sparse incomplete LU decomposition, with controlled level of fill, of the combined FEM/MoM system is applied as preconditioner. It should require less memory than the Multilevel FEM/MLFMM LU/diagonal decomposition, but at the risk of slower or no convergence.
 Multilevel FEMMLFMM diagonal domain LU decomposition
 Preconditioner for a hybrid FEM/MLFMM solution. A blockdiagonal sparse LU
decomposition of the combined FEMMLFMM system is applied as preconditioner. It will
require less memory than the Multilevel FEMMLFMM LU/diagonal decomposition, but at a
high risk of slower or no convergence.
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 Sparse Approximate Inverse (SPAI) preconditioner
 Preconditioner which can be used in connection with the MLFMM.
 Sparse LU preconditioning for MLFMM
 Use a sparse LU decomposition of the matrix (MLFMM/ACA) as a
preconditioner.
When using the parallel Solver, the factorisation type, which slightly impacts runtime and memory, can be specified.
 Accelerated SPAI (faster, possibly more iterations)
 This option enables the use of the accelerated SPAI preconditioner. It is faster, but could require more iterations for convergence.
 Options for the Biconjugate Gradient Method

 Fletcher’s method
 Jacob’s method
 Fletcher’s method, preiteration using Fletcher’s method
 Fletcher’s method, preiteration using Jacob’s method
 Jabob’s method, preiteration using Fletcher’s method
 Block size (BlockJacobi)
 The block size to be used for BlockJacobi preconditioning. When the input field is left empty, appropriate standard values are used for the block preconditioners.
 Threshold value for ILUT
 This is the thresholding value used for the FEM in connection with the ILUT preconditioners.
 Leveloffill
 This is used by the MLFMM during the iterative matrix solution in connection with the incomplete LU preconditioner. The recommended range for this parameter is between 0 and 12. Feko will choose the value for the best preconditioning, but if the size of the incomplete LU preconditioner is too large to fit into memory, it can be reduced by reducing the leveloffill. It should be noted that a lower leveloffill might result in a slower convergence or even divergence in the iterative solution. This preconditioner can only be used in a sequential solution.
 Fillin per row
 This is used by the FEM during the iterative matrix solution in connection with the incomplete LU preconditioners with thresholding. It sets a limit on the number of entries per row that will be included in the incomplete LUdecomposition of the preconditioner matrix.
 Stabilisation factor (FEM)
 This applies only to the incomplete LU preconditioners of the FEM and can be used to get better convergence for the FEM in critical cases (the value range is between 0 and 1).
 Factorisation for parallel execution
 This advanced option only applies when using the parallel Solver and allows you to select between using standard
fullrank factorisation or block lowrank (BLR) factorisation. Using block
lowrank (BLR) factorisation for some classes of models with the MLFMM or FEM
solution methods, can reduce the factorisation complexity and the memory footprint
of the sparse LUbased preconditioners.
 Default
 If this option is selected, the predefined factorisation type adopted by the Solver is applied.
 Auto
 If this option is selected, the factorisation type is determined automatically based on the model.
 Use standard fullrank factorisation
 If this option is selected, standard fullrank factorisation is applied.
 Use block lowrank (BLR) factorisation
 If this option is selected, block lowrank (BLR) factorisation is applied.
 Save/read preconditioner
 For the incomplete LU preconditioners used with the FEM the preconditioner can be computed only once and written to a .pcr file. Then for a subsequent solution it can be read from this file saving runtime. Since the FEM preconditioners depend only on the FEM part of the matrix, this method is useful when only the MoM part of a FEM/MoM problem has changed.