Skip to content
Snippets Groups Projects
Commit 56192f21 authored by Henry's avatar Henry
Browse files

lduMatrixOperations: Added support for scaling symmetric matrices

Note: non-uniform scaling of a symmetric matrix generates an asymmetric matrix
parent dd3fe18a
No related merge requests found
......@@ -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++)
{
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment