lduMatrixOperations: Added support for scaling symmetric matrices
Note: non-uniform scaling of a symmetric matrix generates an asymmetric matrix
This commit is contained in:
parent
35af64bf39
commit
237e6f4fa5
1 changed files with 7 additions and 10 deletions
|
|
@ -2,7 +2,7 @@
|
|||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
|
|
@ -306,23 +306,20 @@ void Foam::lduMatrix::operator*=(const scalarField& sf)
|
|||
*diagPtr_ *= sf;
|
||||
}
|
||||
|
||||
if (upperPtr_)
|
||||
// Non-uniform scaling causes a symmetric matrix
|
||||
// to become asymmetric
|
||||
if (symmetric() || asymmetric())
|
||||
{
|
||||
scalarField& upper = *upperPtr_;
|
||||
scalarField& upper = this->upper();
|
||||
scalarField& lower = this->lower();
|
||||
|
||||
const labelUList& l = lduAddr().lowerAddr();
|
||||
const labelUList& u = lduAddr().upperAddr();
|
||||
|
||||
for (register label face=0; face<upper.size(); face++)
|
||||
{
|
||||
upper[face] *= sf[l[face]];
|
||||
}
|
||||
}
|
||||
|
||||
if (lowerPtr_)
|
||||
{
|
||||
scalarField& lower = *lowerPtr_;
|
||||
|
||||
const labelUList& u = lduAddr().upperAddr();
|
||||
|
||||
for (register label face=0; face<lower.size(); face++)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue