mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: forces/forceCoeffs: added cumulative option to bin collection
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -178,6 +178,17 @@ void Foam::forceCoeffs::write()
|
|||||||
}
|
}
|
||||||
|
|
||||||
OFstream osCoeffs(forcesDir/"forceCoeffs_bins");
|
OFstream osCoeffs(forcesDir/"forceCoeffs_bins");
|
||||||
|
|
||||||
|
if (binCumulative_)
|
||||||
|
{
|
||||||
|
for (label i = 1; i < coeffs[0].size(); i++)
|
||||||
|
{
|
||||||
|
coeffs[0][i] += coeffs[0][i-1];
|
||||||
|
coeffs[1][i] += coeffs[1][i-1];
|
||||||
|
coeffs[2][i] += coeffs[2][i-1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binWriterPtr->write(axis, fieldNames, coeffs, osCoeffs);
|
binWriterPtr->write(axis, fieldNames, coeffs, osCoeffs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -241,11 +241,25 @@ void Foam::forces::writeBins() const
|
|||||||
|
|
||||||
wordList fieldNames(IStringStream("(pressure viscous)")());
|
wordList fieldNames(IStringStream("(pressure viscous)")());
|
||||||
|
|
||||||
|
List<Field<vector> > f(force_);
|
||||||
|
List<Field<vector> > m(moment_);
|
||||||
|
|
||||||
|
if (binCumulative_)
|
||||||
|
{
|
||||||
|
for (label i = 1; i < f[0].size(); i++)
|
||||||
|
{
|
||||||
|
f[0][i] += f[0][i-1];
|
||||||
|
f[1][i] += f[1][i-1];
|
||||||
|
m[0][i] += m[0][i-1];
|
||||||
|
m[1][i] += m[1][i-1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
OFstream osForce(forcesDir/"force_bins");
|
OFstream osForce(forcesDir/"force_bins");
|
||||||
binWriterPtr->write(axis, fieldNames, force_, osForce);
|
binWriterPtr->write(axis, fieldNames, f, osForce);
|
||||||
|
|
||||||
OFstream osMoment(forcesDir/"moment_bins");
|
OFstream osMoment(forcesDir/"moment_bins");
|
||||||
binWriterPtr->write(axis, fieldNames, moment_, osMoment);
|
binWriterPtr->write(axis, fieldNames, m, osMoment);
|
||||||
|
|
||||||
|
|
||||||
if (localSystem_)
|
if (localSystem_)
|
||||||
@ -257,6 +271,17 @@ void Foam::forces::writeBins() const
|
|||||||
localMoment[0] = coordSys_.localVector(moment_[0]);
|
localMoment[0] = coordSys_.localVector(moment_[0]);
|
||||||
localMoment[1] = coordSys_.localVector(moment_[1]);
|
localMoment[1] = coordSys_.localVector(moment_[1]);
|
||||||
|
|
||||||
|
if (binCumulative_)
|
||||||
|
{
|
||||||
|
for (label i = 1; i < localForce[0].size(); i++)
|
||||||
|
{
|
||||||
|
localForce[0][i] += localForce[0][i-1];
|
||||||
|
localForce[1][i] += localForce[1][i-1];
|
||||||
|
localMoment[0][i] += localMoment[0][i-1];
|
||||||
|
localMoment[1][i] += localMoment[1][i-1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
OFstream osLocalForce(forcesDir/"force_local");
|
OFstream osLocalForce(forcesDir/"force_local");
|
||||||
binWriterPtr->write(axis, fieldNames, localForce, osLocalForce);
|
binWriterPtr->write(axis, fieldNames, localForce, osLocalForce);
|
||||||
|
|
||||||
@ -298,7 +323,8 @@ Foam::forces::forces
|
|||||||
binDx_(0.0),
|
binDx_(0.0),
|
||||||
binMin_(GREAT),
|
binMin_(GREAT),
|
||||||
binPoints_(),
|
binPoints_(),
|
||||||
binFormat_("undefined")
|
binFormat_("undefined"),
|
||||||
|
binCumulative_(true)
|
||||||
{
|
{
|
||||||
// Check if the available mesh is an fvMesh otherise deactivate
|
// Check if the available mesh is an fvMesh otherise deactivate
|
||||||
if (!isA<fvMesh>(obr_))
|
if (!isA<fvMesh>(obr_))
|
||||||
@ -356,7 +382,8 @@ Foam::forces::forces
|
|||||||
binDx_(0.0),
|
binDx_(0.0),
|
||||||
binMin_(GREAT),
|
binMin_(GREAT),
|
||||||
binPoints_(),
|
binPoints_(),
|
||||||
binFormat_("undefined")
|
binFormat_("undefined"),
|
||||||
|
binCumulative_(true)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -448,9 +475,11 @@ void Foam::forces::read(const dictionary& dict)
|
|||||||
localSystem_ = true;
|
localSystem_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// read bin information if present
|
if (dict.found("binData"))
|
||||||
if (dict.readIfPresent<label>("nBin", nBin_))
|
|
||||||
{
|
{
|
||||||
|
const dictionary& binDict(dict.subDict("binData"));
|
||||||
|
binDict.lookup("nBin") >> nBin_;
|
||||||
|
|
||||||
if (nBin_ < 0)
|
if (nBin_ < 0)
|
||||||
{
|
{
|
||||||
FatalIOErrorIn
|
FatalIOErrorIn
|
||||||
@ -470,7 +499,7 @@ void Foam::forces::read(const dictionary& dict)
|
|||||||
|
|
||||||
if (nBin_ > 1)
|
if (nBin_ > 1)
|
||||||
{
|
{
|
||||||
dict.lookup("binDir") >> binDir_;
|
binDict.lookup("direction") >> binDir_;
|
||||||
binDir_ /= mag(binDir_);
|
binDir_ /= mag(binDir_);
|
||||||
|
|
||||||
binMin_ = GREAT;
|
binMin_ = GREAT;
|
||||||
@ -499,7 +528,9 @@ void Foam::forces::read(const dictionary& dict)
|
|||||||
binPoints_[i] = (i + 0.5)*binDir_*binDx_;
|
binPoints_[i] = (i + 0.5)*binDir_*binDx_;
|
||||||
}
|
}
|
||||||
|
|
||||||
dict.lookup("binFormat") >> binFormat_;
|
binDict.lookup("format") >> binFormat_;
|
||||||
|
|
||||||
|
binDict.lookup("cumulative") >> binCumulative_;
|
||||||
|
|
||||||
// allocate storage for forces and moments
|
// allocate storage for forces and moments
|
||||||
forAll(force_, i)
|
forAll(force_, i)
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -209,6 +209,9 @@ protected:
|
|||||||
//- Write format for bin data
|
//- Write format for bin data
|
||||||
word binFormat_;
|
word binFormat_;
|
||||||
|
|
||||||
|
//- Should bin data be cumulative?
|
||||||
|
bool binCumulative_;
|
||||||
|
|
||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user