本文整理汇总了C++中returnReduce函数的典型用法代码示例。如果您正苦于以下问题:C++ returnReduce函数的具体用法?C++ returnReduce怎么用?C++ returnReduce使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了returnReduce函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: linearMomentumOfSystem
void Foam::KinematicCloud<CloudType>::info() const
{
vector linearMomentum = linearMomentumOfSystem();
reduce(linearMomentum, sumOp<vector>());
scalar linearKineticEnergy = linearKineticEnergyOfSystem();
reduce(linearKineticEnergy, sumOp<scalar>());
scalar rotationalKineticEnergy = rotationalKineticEnergyOfSystem();
reduce(rotationalKineticEnergy, sumOp<scalar>());
Info<< "Cloud: " << this->name() << nl
<< " Current number of parcels = "
<< returnReduce(this->size(), sumOp<label>()) << nl
<< " Current mass in system = "
<< returnReduce(massInSystem(), sumOp<scalar>()) << nl
<< " Linear momentum = "
<< linearMomentum << nl
<< " |Linear momentum| = "
<< mag(linearMomentum) << nl
<< " Linear kinetic energy = "
<< linearKineticEnergy << nl
<< " Rotational kinetic energy = "
<< rotationalKineticEnergy << nl;
this->injection().info(Info);
this->surfaceFilm().info(Info);
this->patchInteraction().info(Info);
}
示例2: phiName_
Foam::swirlFlowRateInletVelocityFvPatchVectorField::
swirlFlowRateInletVelocityFvPatchVectorField
(
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF,
const dictionary& dict
)
:
fixedValueFvPatchField<vector>(p, iF, dict),
phiName_(dict.lookupOrDefault<word>("phi", "phi")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
origin_
(
dict.lookupOrDefault
(
"origin",
returnReduce(patch().size(), maxOp<label>())
? gSum(patch().Cf()*patch().magSf())/gSum(patch().magSf())
: Zero
)
),
axis_
(
dict.lookupOrDefault
(
"axis",
returnReduce(patch().size(), maxOp<label>())
? -gSum(patch().Sf())/gSum(patch().magSf())
: Zero
)
),
flowRate_(Function1<scalar>::New("flowRate", dict)),
rpm_(Function1<scalar>::New("rpm", dict))
{}
开发者ID:mattijsjanssens,项目名称:mattijs-extensions,代码行数:34,代码来源:swirlFlowRateInletVelocityFvPatchVectorField.C
示例3: returnReduce
void Foam::InjectionModel<CloudType>::postInjectCheck
(
const label parcelsAdded,
const scalar massAdded
)
{
const label allParcelsAdded = returnReduce(parcelsAdded, sumOp<label>());
if (allParcelsAdded > 0)
{
Info<< nl
<< "--> Cloud: " << owner_.name() << nl
<< " Added " << allParcelsAdded << " new parcels" << nl << endl;
}
// Increment total number of parcels added
parcelsAddedTotal_ += allParcelsAdded;
// Increment total mass injected
massInjected_ += returnReduce(massAdded, sumOp<scalar>());
// Update time for start of next injection
time0_ = owner_.db().time().value();
// Increment number of injections
nInjections_++;
// Write current state to properties file
writeProps();
}
示例4: returnReduce
void Foam::StandardWallInteraction<CloudType>::info(Ostream& os)
{
label npe0 = this->template getBaseProperty<scalar>("nEscape");
label npe = npe0 + returnReduce(nEscape_, sumOp<label>());
scalar mpe0 = this->template getBaseProperty<scalar>("massEscape");
scalar mpe = mpe0 + returnReduce(massEscape_, sumOp<scalar>());
label nps0 = this->template getBaseProperty<scalar>("nStick");
label nps = nps0 + returnReduce(nStick_, sumOp<label>());
scalar mps0 = this->template getBaseProperty<scalar>("massStick");
scalar mps = mps0 + returnReduce(massStick_, sumOp<scalar>());
os << " Parcel fate (number, mass)" << nl
<< " - escape = " << npe << ", " << mpe << nl
<< " - stick = " << nps << ", " << mps << nl;
if (this->outputTime())
{
this->setModelProperty("nEscape", npe);
// nEscape_ = 0;
this->setModelProperty("massEscape", mpe);
// massEscape_ = 0.0;
this->setModelProperty("nStick", nps);
// nStick_ = 0;
this->setModelProperty("massStick", mps);
// massStick_ = 0.0;
}
}
示例5: returnReduce
void phaseChangeModel::info(Ostream& os) const
{
const scalar massPCRate =
returnReduce(latestMassPC_, sumOp<scalar>())
/owner_.time().deltaTValue();
os << indent << "mass phase change = "
<< returnReduce(totalMassPC_, sumOp<scalar>()) << nl
<< indent << "vapourisation rate = " << massPCRate << nl;
}
示例6: returnReduce
void phaseChangeModel::info(Ostream& os) const
{
const scalar massPCRate =
returnReduce(latestMassPC_, sumOp<scalar>())
/filmModel_.time().deltaTValue();
scalar phaseChangeMass = getModelProperty<scalar>("phaseChangeMass");
phaseChangeMass += returnReduce(totalMassPC_, sumOp<scalar>());
os << indent << "mass phase change = " << phaseChangeMass << nl
<< indent << "vapourisation rate = " << massPCRate << nl;
}
示例7: returnReduce
void Foam::KinematicCloud<ParcelType>::info() const
{
Info<< "Cloud: " << this->name() << nl
<< " Total number of parcels added = "
<< this->injection().parcelsAddedTotal() << nl
<< " Total mass introduced = "
<< this->injection().massInjected() << nl
<< " Current number of parcels = "
<< returnReduce(this->size(), sumOp<label>()) << nl
<< " Current mass in system = "
<< returnReduce(massInSystem(), sumOp<scalar>()) << nl;
}
示例8: returnReduce
void Foam::StandardWallInteraction<CloudType>::info(Ostream& os) const
{
label npe = returnReduce(nEscape_, sumOp<label>()) + nEscape0_;
scalar mpe = returnReduce(massEscape_, sumOp<scalar>()) + massEscape0_;
label nps = returnReduce(nStick_, sumOp<label>()) + nStick0_;
scalar mps = returnReduce(massStick_, sumOp<scalar>()) + massStick0_;
os << " Parcel fates:" << nl
<< " - escape = " << npe << ", " << mpe << nl
<< " - stick = " << nps << ", " << mps << nl;
writeProps(npe, mpe, nps, mps);
}
示例9: faces
Foam::label Foam::checkMeshQuality
(
const polyMesh& mesh,
const dictionary& dict
)
{
label noFailedChecks = 0;
{
faceSet faces(mesh, "meshQualityFaces", mesh.nFaces()/100+1);
motionSmoother::checkMesh(false, mesh, dict, faces);
label nFaces = returnReduce(faces.size(), sumOp<label>());
if (nFaces > 0)
{
noFailedChecks++;
Info<< " <<Writing " << nFaces
<< " faces in error to set " << faces.name() << endl;
faces.instance() = mesh.pointsInstance();
faces.write();
}
}
return noFailedChecks;
}
示例10: sum
void phaseChangeModel::correct
(
const scalar dt,
scalarField& availableMass,
volScalarField& dMass,
volScalarField& dEnergy
)
{
if (!active())
{
return;
}
correctModel
(
dt,
availableMass,
dMass,
dEnergy
);
latestMassPC_ = sum(dMass.primitiveField());
totalMassPC_ += latestMassPC_;
availableMass -= dMass;
dMass.correctBoundaryConditions();
if (writeTime())
{
scalar phaseChangeMass = getModelProperty<scalar>("phaseChangeMass");
phaseChangeMass += returnReduce(totalMassPC_, sumOp<scalar>());
setModelProperty<scalar>("phaseChangeMass", phaseChangeMass);
totalMassPC_ = 0.0;
}
}
示例11: returnReduce
label meshOptimizer::findLowQualityFaces
(
labelHashSet& badFaces,
const boolList& changedFace
) const
{
badFaces.clear();
polyMeshGenChecks::checkFaceDotProduct
(
mesh_,
false,
70.0,
&badFaces
);
polyMeshGenChecks::checkFaceSkewness
(
mesh_,
false,
2.0,
&badFaces
);
const label nBadFaces = returnReduce(badFaces.size(), sumOp<label>());
return nBadFaces;
}
示例12: returnReduce
Foam::scalar Foam::getRefCellValue
(
const volScalarField& field,
const label refCelli
)
{
scalar refCellValue = (refCelli >= 0 ? field[refCelli] : 0.0);
return returnReduce(refCellValue, sumOp<scalar>());
}
示例13: firstOldPoint
// Calculate geometrically collocated points, Requires PackedList to be
// sized and initalised!
Foam::label Foam::autoSnapDriver::getCollocatedPoints
(
const scalar tol,
const pointField& points,
PackedBoolList& isCollocatedPoint
)
{
labelList pointMap;
label nUnique = mergePoints
(
points, // points
tol, // mergeTol
false, // verbose
pointMap
);
bool hasMerged = (nUnique < points.size());
if (!returnReduce(hasMerged, orOp<bool>()))
{
return 0;
}
// Determine which merged points are referenced more than once
label nCollocated = 0;
// Per old point the newPoint. Or -1 (not set yet) or -2 (already seen
// twice)
labelList firstOldPoint(nUnique, -1);
forAll(pointMap, oldPointI)
{
label newPointI = pointMap[oldPointI];
if (firstOldPoint[newPointI] == -1)
{
// First use of oldPointI. Store.
firstOldPoint[newPointI] = oldPointI;
}
else if (firstOldPoint[newPointI] == -2)
{
// Third or more reference of oldPointI -> non-manifold
isCollocatedPoint.set(oldPointI, 1u);
nCollocated++;
}
else
{
// Second reference of oldPointI -> non-manifold
isCollocatedPoint.set(firstOldPoint[newPointI], 1u);
nCollocated++;
isCollocatedPoint.set(oldPointI, 1u);
nCollocated++;
// Mark with special value to save checking next time round
firstOldPoint[newPointI] = -2;
}
}
示例14: while
// Find position in values so between minIndex and this position there
// are wantedSize elements.
void Foam::hierarchGeomDecomp::findBinary
(
const label sizeTol,
const List<scalar>& values,
const label minIndex, // index of previous value
const scalar minValue, // value at minIndex
const scalar maxValue, // global max of values
const scalar wantedSize, // wanted size
label& mid, // index where size of bin is
// wantedSize (to within sizeTol)
scalar& midValue // value at mid
)
{
label low = minIndex;
scalar lowValue = minValue;
scalar highValue = maxValue;
// (one beyond) index of highValue
label high = values.size();
//while (low <= high)
while (true)
{
label size = returnReduce(mid-minIndex, sumOp<label>());
if (debug)
{
Pout<< "low:" << low << " lowValue:" << lowValue
<< " high:" << high << " highValue:" << highValue
<< " mid:" << mid << " midValue:" << midValue << nl
<< "globalSize:" << size << " wantedSize:" << wantedSize
<< " sizeTol:" << sizeTol << endl;
}
if (wantedSize < size - sizeTol)
{
high = mid;
highValue = midValue;
}
else if (wantedSize > size + sizeTol)
{
low = mid;
lowValue = midValue;
}
else
{
break;
}
// Update mid, midValue
midValue = 0.5*(lowValue+highValue);
mid = findLower(values, midValue, low, high);
}
}
开发者ID:Unofficial-Extend-Project-Mirror,项目名称:openfoam-extend-Core-OpenFOAM-1.5-dev,代码行数:57,代码来源:hierarchGeomDecomp.C
示例15: switch
void Foam::fieldValues::cellSource::setCellZoneCells()
{
switch (source_)
{
case stCellZone:
{
label zoneId = mesh().cellZones().findZoneID(sourceName_);
if (zoneId < 0)
{
FatalErrorIn("cellSource::cellSource::setCellZoneCells()")
<< "Unknown cell zone name: " << sourceName_
<< ". Valid cell zones are: " << mesh().cellZones().names()
<< nl << exit(FatalError);
}
cellId_ = mesh().cellZones()[zoneId];
nCells_ = returnReduce(cellId_.size(), sumOp<label>());
break;
}
case stAll:
{
cellId_ = identity(mesh().nCells());
nCells_ = returnReduce(cellId_.size(), sumOp<label>());
break;
}
default:
{
FatalErrorIn("cellSource::setCellZoneCells()")
<< "Unknown source type. Valid source types are:"
<< sourceTypeNames_ << nl << exit(FatalError);
}
}
if (debug)
{
Pout<< "Selected source size = " << cellId_.size() << endl;
}
}