Loading...
Searching...
No Matches
smoothSolver.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2013 OpenFOAM Foundation
9 Copyright (C) 2019 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27Class
28 Foam::smoothSolver
29
30Group
31 grpLduMatrixSolvers
32
33Description
34 Iterative solver for symmetric and asymmetric matrices which uses a
35 run-time selected smoother e.g. GaussSeidel to converge the solution to
36 the required tolerance.
37
38 To improve efficiency, the residual is evaluated after every nSweeps
39 smoothing iterations.
40
41SourceFiles
42 smoothSolver.C
43
44\*---------------------------------------------------------------------------*/
45
46#ifndef Foam_smoothSolver_H
47#define Foam_smoothSolver_H
48
49#include "lduMatrix.H"
50
51// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52
53namespace Foam
54{
56/*---------------------------------------------------------------------------*\
57 Class smoothSolver Declaration
58\*---------------------------------------------------------------------------*/
59
60class smoothSolver
61:
63{
64protected:
65
66 // Protected Data
67
68 //- Number of sweeps before the evaluation of residual
69 label nSweeps_;
70
71 //- Read the control parameters from the controlDict_
72 virtual void readControls();
73
74
75public:
76
77 //- Runtime type information
78 TypeName("smoothSolver");
80
81 // Constructors
82
83 //- Construct from matrix components and solver controls
85 (
86 const word& fieldName,
87 const lduMatrix& matrix,
91 const dictionary& solverControls
92 );
93
94
95 //- Destructor
96 virtual ~smoothSolver() = default;
97
98
99 // Member Functions
100
101 //- Solve the matrix with this solver
103 (
105 const scalarField& source,
106 const direction cmpt=0
107 ) const;
108};
109
110
111// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
112
113} // End namespace Foam
114
115// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116
117#endif
118
119// ************************************************************************* //
A field of fields is a PtrList of fields with reference counting.
Definition FieldField.H:77
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Abstract base-class for lduMatrix solvers.
Definition lduMatrix.H:152
const FieldField< Field, scalar > & interfaceIntCoeffs() const noexcept
Definition lduMatrix.H:338
const lduInterfaceFieldPtrsList & interfaces() const noexcept
Definition lduMatrix.H:343
const lduMatrix & matrix() const noexcept
Definition lduMatrix.H:328
const FieldField< Field, scalar > & interfaceBouCoeffs() const noexcept
Definition lduMatrix.H:333
const word & fieldName() const noexcept
Definition lduMatrix.H:323
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Definition lduMatrix.H:81
smoothSolver(const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
Construct from matrix components and solver controls.
virtual ~smoothSolver()=default
Destructor.
label nSweeps_
Number of sweeps before the evaluation of residual.
TypeName("smoothSolver")
Runtime type information.
virtual void readControls()
Read the control parameters from the controlDict_.
A class for handling words, derived from Foam::string.
Definition word.H:66
const volScalarField & psi
Namespace for OpenFOAM.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
uint8_t direction
Definition direction.H:49
UPtrList< const lduInterfaceField > lduInterfaceFieldPtrsList
List of coupled interface fields to be used in coupling.
SolverPerformance< scalar > solverPerformance
SolverPerformance instantiated for a scalar.
CEqn solve()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68