ENH: lduMatrix: added external resizing

This commit is contained in:
mattijs
2013-04-03 16:27:05 +01:00
parent 48092f651c
commit 450e9dfeb9
2 changed files with 82 additions and 27 deletions

View File

@ -209,6 +209,53 @@ Foam::scalarField& Foam::lduMatrix::upper()
}
Foam::scalarField& Foam::lduMatrix::lower(const label nCoeffs)
{
if (!lowerPtr_)
{
if (upperPtr_)
{
lowerPtr_ = new scalarField(*upperPtr_);
}
else
{
lowerPtr_ = new scalarField(nCoeffs, 0.0);
}
}
return *lowerPtr_;
}
Foam::scalarField& Foam::lduMatrix::diag(const label size)
{
if (!diagPtr_)
{
diagPtr_ = new scalarField(size, 0.0);
}
return *diagPtr_;
}
Foam::scalarField& Foam::lduMatrix::upper(const label nCoeffs)
{
if (!upperPtr_)
{
if (lowerPtr_)
{
upperPtr_ = new scalarField(*lowerPtr_);
}
else
{
upperPtr_ = new scalarField(nCoeffs, 0.0);
}
}
return *upperPtr_;
}
const Foam::scalarField& Foam::lduMatrix::lower() const
{
if (!lowerPtr_ && !upperPtr_)
@ -320,33 +367,33 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const InfoProxy<lduMatrix>& ip)
}
if (hasLow)
{
os << "lower contents:" << endl;
forAll(ldum.lower(), i)
{
os << "i:" << i << "\t" << ldum.lower()[i] << endl;
}
os << endl;
}
if (hasDiag)
{
os << "diag contents:" << endl;
forAll(ldum.diag(), i)
{
os << "i:" << i << "\t" << ldum.diag()[i] << endl;
}
os << endl;
}
if (hasUp)
{
os << "upper contents:" << endl;
forAll(ldum.upper(), i)
{
os << "i:" << i << "\t" << ldum.upper()[i] << endl;
}
os << endl;
}
//if (hasLow)
//{
// os << "lower contents:" << endl;
// forAll(ldum.lower(), i)
// {
// os << "i:" << i << "\t" << ldum.lower()[i] << endl;
// }
// os << endl;
//}
//if (hasDiag)
//{
// os << "diag contents:" << endl;
// forAll(ldum.diag(), i)
// {
// os << "i:" << i << "\t" << ldum.diag()[i] << endl;
// }
// os << endl;
//}
//if (hasUp)
//{
// os << "upper contents:" << endl;
// forAll(ldum.upper(), i)
// {
// os << "i:" << i << "\t" << ldum.upper()[i] << endl;
// }
// os << endl;
//}
os.check("Ostream& operator<<(Ostream&, const lduMatrix&");

View File

@ -563,6 +563,14 @@ public:
scalarField& diag();
scalarField& upper();
// Size with externally provided sizes (for constructing with 'fake'
// mesh in GAMG)
scalarField& lower(const label size);
scalarField& diag(const label nCoeffs);
scalarField& upper(const label nCoeffs);
const scalarField& lower() const;
const scalarField& diag() const;
const scalarField& upper() const;