OpenFOAM 2.2.0: Matrix Solvers
Vector-Coupled Solver
A block-matrix and solver framework is included in this release, allowing the coupled solution of vector, tensor and other multi-component entities. The coupled solution can be selected at run-time, through the fvSolution file, by a conversion algorithm that maps the standard segregated matrix form to the new block-matrix form for coupled solution. The user can select the coupled
solution in the solvers
entries in the fvSolution through a new, optional type
keyword. The default option is the conventional segregated
solution. An example entry for coupled solution of the U
field is:
solvers { U { type coupled; // optional, defaults to segregated solver PBiCCCG; preconditioner DILU; tolerance (1e-05 1e-05 1e-05); relTol (0 0 0); } ... }
In this example, where coupled
is selected, the tolerance must be specified as a vector and the choice of solver
includes coupled (C
) forms of conventional solvers, e.g. PBiCICG
:
Valid asymmetric matrix solvers are : 4 ( smoothSolver PBiCICG diagonal PBiCCCG )
Block-coupled solution of vectors can provide performance benefits by taking advantage of the preconditioning of the matrix being the same for each component, particularly if the number of iterations for each component in the segregated solver are similar. The block-matrix structure can also be used to support implicit handling of sources which couple components, e.g. SRF, MRF, etc. although this requires some changes to the respective applications.
Example
- cavity with coupled velocity solution –
$FOAM
_TUTORIALS/incompressible/pisoFoam/ras/cavityCoupledU
GAMG Solver
The GAMG solver includes the following new solvers/smoothers:
symGaussSeidel
: symmetric Gauss-Seidel, which is “stronger” than the standard Gauss-Seidel but requires one additional sweep. This smoother can prove beneficial for some classes of problems, either as a smoother forGAMG
or as a smooth solver.FDIC
: slightly faster implementation of theDIC
smoother.
The following controls over the number of smoother pre- and post-sweeps have been added for the GAMG V-cycle to limit the communications overhead of smoothing the coarser levels:
nPreSweeps
: number of pre-sweeps at first coarser level;preSweepsLevelMultiplier
: level multiplier for additional pre-sweeps at subsequent coarser levels;maxPreSweeps
: cut-off on the number of pre-sweeps;nPostSweeps
: number of post-sweeps at first coarser level;postSweepsLevelMultiplier
: level multiplier for additional post-sweeps at subsequent coarser levels;maxPostSweeps
: cut-off on the number of post-sweeps;nFinestSweeps
: number of sweeps at the finest level.
An optional first-order interpolation of the injected prolongation of the coarse correction into the finer level has been added. This is controlled with the interpolateCorrection
entry which defaults to no
. This can be beneficial if more aggressive agglomeration is used, but not cost-effective with pair-wise agglomeration without level-merging.