A special matrix type and solver, designed for finite area solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise. More...
Classes | |
class | faSolver |
Solver class returned by the solver function. More... | |
Public Types | |
typedef GeometricField< Type, faePatchField, edgeMesh > * | edgeTypeFieldPtr |
Declare return type of the faceFluxCorrectionPtr() function. More... | |
Public Member Functions | |
ClassName ("faMatrix") | |
faMatrix (const GeometricField< Type, faPatchField, areaMesh > &, const dimensionSet &) | |
Construct given a field to solve for. More... | |
faMatrix (const faMatrix< Type > &) | |
Construct as copy. More... | |
faMatrix (const GeometricField< Type, faPatchField, areaMesh > &, Istream &) | |
Construct from Istream given field to solve for. More... | |
tmp< faMatrix< Type > > | clone () const |
Clone. More... | |
virtual | ~faMatrix () |
Destructor. More... | |
const GeometricField< Type, faPatchField, areaMesh > & | psi () const |
const dimensionSet & | dimensions () const |
Field< Type > & | source () |
const Field< Type > & | source () const |
FieldField< Field, Type > & | internalCoeffs () |
faBoundary scalar field containing pseudo-matrix coeffs More... | |
FieldField< Field, Type > & | boundaryCoeffs () |
faBoundary scalar field containing pseudo-matrix coeffs More... | |
edgeTypeFieldPtr & | faceFluxCorrectionPtr () |
Return pointer to face-flux non-orthogonal correction field. More... | |
void | setValues (const labelUList &faces, const UList< Type > &values) |
Set solution in given cells and eliminate corresponding. More... | |
void | setReference (const label facei, const Type &value) |
Set reference level for solution. More... | |
void | setComponentReference (const label patchi, const label facei, const direction cmpt, const scalar value) |
Set reference level for a component of the solution. More... | |
void | relax (const scalar alpha) |
Relax matrix (for steady-state solution). More... | |
void | relax () |
Relax matrix (for steady-state solution). More... | |
SolverPerformance< Type > | solve (const dictionary &) |
Solve returning the solution statistics. More... | |
SolverPerformance< Type > | solve () |
Solve returning the solution statistics. More... | |
tmp< Field< Type > > | residual () const |
Return the matrix residual. More... | |
tmp< scalarField > | D () const |
Return the matrix diagonal. More... | |
tmp< areaScalarField > | A () const |
Return the central coefficient. More... | |
tmp< GeometricField< Type, faPatchField, areaMesh > > | H () const |
Return the H operation source. More... | |
tmp< GeometricField< Type, faePatchField, edgeMesh > > | flux () const |
Return the face-flux field from the matrix. More... | |
void | operator= (const faMatrix< Type > &) |
void | operator= (const tmp< faMatrix< Type >> &) |
void | negate () |
void | operator+= (const faMatrix< Type > &) |
void | operator+= (const tmp< faMatrix< Type >> &) |
void | operator-= (const faMatrix< Type > &) |
void | operator-= (const tmp< faMatrix< Type >> &) |
void | operator+= (const GeometricField< Type, faPatchField, areaMesh > &) |
void | operator+= (const tmp< GeometricField< Type, faPatchField, areaMesh >> &) |
void | operator-= (const GeometricField< Type, faPatchField, areaMesh > &) |
void | operator-= (const tmp< GeometricField< Type, faPatchField, areaMesh >> &) |
void | operator+= (const dimensioned< Type > &) |
void | operator-= (const dimensioned< Type > &) |
void | operator*= (const areaScalarField &) |
void | operator*= (const tmp< areaScalarField > &) |
void | operator*= (const dimensioned< scalar > &) |
template<> | |
void | setComponentReference (const label patchI, const label edgeI, const direction, const scalar value) |
template<> | |
Foam::solverPerformance | solve (const dictionary &solverControls) |
template<> | |
Foam::tmp< Foam::scalarField > | residual () const |
template<> | |
Foam::tmp< Foam::areaScalarField > | H () const |
template<> | |
void | setComponentReference (const label patchi, const label facei, const direction, const scalar value) |
template<> | |
SolverPerformance< scalar > | solve (const dictionary &) |
template<> | |
tmp< scalarField > | residual () const |
template<> | |
tmp< areaScalarField > | H () const |
Friends | |
Ostream & | operator (Ostream &, const faMatrix< Type > &) |
A special matrix type and solver, designed for finite area solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
Finite-Area matrix.
Author Zeljko Tukovic, FMENA Hrvoje Jasak, Wikki Ltd.
Definition at line 60 of file faMatrix.H.
typedef GeometricField<Type, faePatchField, edgeMesh>* edgeTypeFieldPtr |
Declare return type of the faceFluxCorrectionPtr() function.
Definition at line 258 of file faMatrix.H.
faMatrix | ( | const GeometricField< Type, faPatchField, areaMesh > & | psi, |
const dimensionSet & | ds | ||
) |
Construct given a field to solve for.
Definition at line 181 of file faMatrix.C.
References GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), DebugInFunction, Foam::endl(), forAll, psi, and Foam::Zero.
Construct as copy.
Definition at line 233 of file faMatrix.C.
References DebugInFunction, and Foam::endl().
faMatrix | ( | const GeometricField< Type, faPatchField, areaMesh > & | psi, |
Istream & | is | ||
) |
Construct from Istream given field to solve for.
Definition at line 261 of file faMatrix.C.
References DebugInFunction, Foam::endl(), forAll, psi, and Foam::Zero.
|
virtual |
Destructor.
Definition at line 319 of file faMatrix.C.
References DebugInFunction, Foam::deleteDemandDrivenData(), and Foam::endl().
ClassName | ( | "faMatrix< Type >" | ) |
Foam::tmp< Foam::faMatrix< Type > > clone | ( | ) | const |
Clone.
Definition at line 306 of file faMatrix.C.
|
inline |
Definition at line 221 of file faMatrix.H.
Referenced by Foam::checkMethod(), and faMatrix< Type >::solve().
|
inline |
Definition at line 226 of file faMatrix.H.
Referenced by Foam::checkMethod(), and faMatrix< Type >::operator*=().
|
inline |
Definition at line 231 of file faMatrix.H.
|
inline |
Definition at line 236 of file faMatrix.H.
|
inline |
faBoundary scalar field containing pseudo-matrix coeffs
for internal cells
Definition at line 243 of file faMatrix.H.
|
inline |
faBoundary scalar field containing pseudo-matrix coeffs
for boundary cells
Definition at line 250 of file faMatrix.H.
|
inline |
Return pointer to face-flux non-orthogonal correction field.
Definition at line 261 of file faMatrix.H.
Referenced by gaussLaplacianScheme< Type >::famLaplacian().
void setValues | ( | const labelUList & | faces, |
const UList< Type > & | values | ||
) |
Set solution in given cells and eliminate corresponding.
equations from the matrix
Definition at line 333 of file faMatrix.C.
References fvMesh::boundary(), Foam::constant::universal::c, Foam::diag(), primitiveMesh::faceEdges(), forAll, HashTable< T, Key, Hash >::insert(), Foam::stringOps::lower(), mesh, fvMesh::neighbour(), fvMesh::owner(), psi, Foam::stringOps::upper(), and Foam::HashTableOps::values().
void setReference | ( | const label | facei, |
const Type & | value | ||
) |
Set reference level for solution.
Definition at line 427 of file faMatrix.C.
References Foam::diag(), and UPstream::master().
void setComponentReference | ( | const label | patchi, |
const label | facei, | ||
const direction | cmpt, | ||
const scalar | value | ||
) |
Set reference level for a component of the solution.
on a given patch face
Definition at line 38 of file faMatrixSolve.C.
References Foam::diag().
void relax | ( | const scalar | alpha | ) |
Relax matrix (for steady-state solution).
alpha = 1 : diagonally equal alpha < 1 : ,, dominant alpha = 0 : do nothing
Definition at line 444 of file faMatrix.C.
References Foam::constant::atomic::alpha, Foam::cmptMag(), Foam::cmptMin(), Foam::cmptMultiply(), Foam::component(), faPatchField< Type >::coupled(), D, Foam::diag(), forAll, Foam::mag(), Foam::max(), and Foam::Zero.
void relax | ( | ) |
Relax matrix (for steady-state solution).
alpha is read from controlDict
Definition at line 534 of file faMatrix.C.
References DebugInFunction, Foam::endl(), and relax().
Foam::SolverPerformance< Type > solve | ( | const dictionary & | solverControls | ) |
Solve returning the solution statistics.
Solver controls read Istream
Definition at line 55 of file faMatrixSolve.C.
References Field< Type >::component(), DebugInFunction, Foam::diag(), Foam::endl(), Foam::Info, Foam::New(), SolverPerformance< Type >::print(), psi, PrecisionAdaptor< Type, InputType, Container >::ref(), solve(), and SolverPerformance< Type >::solverName().
Foam::SolverPerformance< Type > solve | ( | ) |
Solve returning the solution statistics.
Solver controls read from faSolution
Definition at line 170 of file faMatrixSolve.C.
References mesh, Foam::name(), and faMatrix< Type >::psi().
Foam::tmp< Foam::Field< Type > > residual | ( | ) | const |
Return the matrix residual.
Definition at line 177 of file faMatrixSolve.C.
References Field< Type >::component(), tmp< T >::ref(), Field< Type >::replace(), lduMatrix::residual(), and Foam::Zero.
Foam::tmp< Foam::scalarField > D | ( | ) | const |
Return the matrix diagonal.
Definition at line 550 of file faMatrix.C.
References Foam::diag(), and tmp< T >::ref().
Foam::tmp< Foam::areaScalarField > A | ( | ) | const |
Return the central coefficient.
Definition at line 559 of file faMatrix.C.
References GeometricField< Type, PatchField, GeoMesh >::correctBoundaryConditions(), D, Foam::dimArea, GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), and tmp< T >::ref().
Foam::tmp< Foam::GeometricField< Type, Foam::faPatchField, Foam::areaMesh > > H | ( | ) | const |
Return the H operation source.
Definition at line 586 of file faMatrix.C.
References GeometricField< Type, PatchField, GeoMesh >::correctBoundaryConditions(), Foam::dimArea, lduMatrix::H(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), tmp< T >::ref(), and Foam::Zero.
Foam::tmp< Foam::GeometricField< Type, Foam::faePatchField, Foam::edgeMesh > > flux | ( | ) | const |
Return the face-flux field from the matrix.
Definition at line 630 of file faMatrix.C.
References Foam::abort(), GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), Foam::cmptMultiply(), lduMatrix::faceH(), Foam::FatalError, FatalErrorInFunction, forAll, GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), and tmp< T >::ref().
Definition at line 712 of file faMatrix.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and lduMatrix::operator=().
Definition at line 745 of file faMatrix.C.
void negate | ( | ) |
Definition at line 753 of file faMatrix.C.
References lduMatrix::negate().
Definition at line 768 of file faMatrix.C.
References Foam::checkMethod(), and lduMatrix::operator+=().
Definition at line 794 of file faMatrix.C.
Definition at line 802 of file faMatrix.C.
References Foam::checkMethod(), and lduMatrix::operator-=().
Definition at line 826 of file faMatrix.C.
void operator+= | ( | const GeometricField< Type, faPatchField, areaMesh > & | su | ) |
Definition at line 835 of file faMatrix.C.
References Foam::checkMethod().
void operator+= | ( | const tmp< GeometricField< Type, faPatchField, areaMesh >> & | tsu | ) |
Definition at line 846 of file faMatrix.C.
void operator-= | ( | const GeometricField< Type, faPatchField, areaMesh > & | su | ) |
Definition at line 857 of file faMatrix.C.
References Foam::checkMethod().
void operator-= | ( | const tmp< GeometricField< Type, faPatchField, areaMesh >> & | tsu | ) |
Definition at line 868 of file faMatrix.C.
void operator+= | ( | const dimensioned< Type > & | su | ) |
Definition at line 879 of file faMatrix.C.
void operator-= | ( | const dimensioned< Type > & | su | ) |
Definition at line 889 of file faMatrix.C.
void operator*= | ( | const areaScalarField & | vsf | ) |
Definition at line 899 of file faMatrix.C.
References Foam::abort(), faMatrix< Type >::dimensions(), Foam::FatalError, FatalErrorInFunction, forAll, and lduMatrix::operator*=().
void operator*= | ( | const tmp< areaScalarField > & | tvsf | ) |
Definition at line 925 of file faMatrix.C.
void operator*= | ( | const dimensioned< scalar > & | ds | ) |
Definition at line 936 of file faMatrix.C.
References lduMatrix::operator*=().
void setComponentReference | ( | const label | patchI, |
const label | edgeI, | ||
const | direction, | ||
const scalar | value | ||
) |
Definition at line 40 of file faScalarMatrix.C.
References Foam::diag().
Foam::solverPerformance solve | ( | const dictionary & | solverControls | ) |
Definition at line 57 of file faScalarMatrix.C.
References Foam::expressions::patchExpr::debug, DebugInFunction, Foam::diag(), Foam::endl(), Foam::Info, Foam::New(), SolverPerformance< Type >::print(), psi, and solve().
Foam::tmp< Foam::scalarField > residual | ( | ) | const |
Definition at line 101 of file faScalarMatrix.C.
References psi, tmpNrc< Container< Type > >::ref(), and Foam::Zero.
Foam::tmp< Foam::areaScalarField > H | ( | ) | const |
Definition at line 130 of file faScalarMatrix.C.
References GeometricField< Type, PatchField, GeoMesh >::correctBoundaryConditions(), Foam::dimArea, H(), DimensionedField< Type, GeoMesh >::mesh(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), tmp< T >::ref(), and GeometricField< Type, PatchField, GeoMesh >::ref().
void setComponentReference | ( | const label | patchi, |
const label | facei, | ||
const | direction, | ||
const scalar | value | ||
) |
SolverPerformance< scalar > solve | ( | const dictionary & | ) |
tmp< scalarField > residual | ( | ) | const |
tmp< areaScalarField > H | ( | ) | const |