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.



Figure 1. The CG - Set preconditioner and solver options dialog.

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.

For these specific solutions, advanced users could apply the CG card after consultation with Feko technical support. Nevertheless convergence of the iterative techniques cannot be guaranteed. In addition the memory requirements could be higher than what is desired.
Warning: Any models derived from models containing a CG card should also be re-considered if they contain a CG card.

Parameters:

Matrix solution method:
  • 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 out-of-core solution is performed).
  • CGM (Parallel Iterative Method)
  • BCG (Parallel Iterative Method)
  • CGS (Parallel Iterative Method)
  • Bi-CGSTAB (Parallel Iterative Method)
  • RBi-CGSTAB (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 LU-decomposition (with ScaLAPACK routines). The parallel LU decomposition with ScaLAPACK (solution in main memory) or with out-of-core 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.
Block-Jacobi preconditioning using inverses
The inverses of the preconditioner are calculated and applied during every iteration step. For performance reasons Block-Jacobi preconditioning using LU-decomposition is recommended.
Neumann polynomial preconditioning
Self explanatory.
Block-Jacobi preconditioning using LU-decomposition
Block-Jacobi preconditioning where for each block an LU-decomposition is computed in advance, and during the iterations a fast backward substitution is applied.
Incomplete LU-decomposition
Use an incomplete LU-decomposition of the matrix as a preconditioner.
Block-Jacobi preconditioning of MLFMM one-level-up
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 LU-decomposition with thresholding and controlled fill-in 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 FEM-MLFMM 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 FEM-MLFMM 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 FEM-MLFMM 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 FEM-MLFMM diagonal domain LU decomposition
Preconditioner for a hybrid FEM/MLFMM solution. A block-diagonal sparse LU decomposition of the combined FEM-MLFMM system is applied as preconditioner. It will require less memory than the Multilevel FEM-MLFMM 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, pre-iteration using Fletcher’s method
  • Fletcher’s method, pre-iteration using Jacob’s method
  • Jabob’s method, pre-iteration using Fletcher’s method
Block size (Block-Jacobi)
The block size to be used for Block-Jacobi 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.
Level-of-fill
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 level-of-fill. It should be noted that a lower level-of-fill might result in a slower convergence or even divergence in the iterative solution. This preconditioner can only be used in a sequential solution.
Fill-in 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 LU-decomposition 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 full-rank factorisation or block low-rank (BLR) factorisation. Using block low-rank (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 LU-based 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 full-rank factorisation
If this option is selected, standard full-rank factorisation is applied.
Use block low-rank (BLR) factorisation
If this option is selected, block low-rank (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.
Iterative solutions are used in for example the MLFMM and the FEM. There could be cases where the residuum decreases but at a very low rate. Instead of waiting very long until the maximum number of iterations is reached, the user can press Ctrl+C or Ctrl+Break (under Windows) or send the SIGINT/SIGTERM signals (under UNIX) so that Feko will stop with the iterations and resume with the further processing (for example the far field computations) using the solution associated with the best residuum obtained so far. To really interrupt a Feko job Ctrl+C or Ctrl+Break must be pressed a second time (or the corresponding signal must be sent once more).