Commit 51fd6327 authored by Mark Olesen's avatar Mark Olesen
Browse files

use PackedBoolList typedef instead of PackedList<1>

Note:

PackedList constructor initializes to zero, faster not to do it
ourselves.
ie,
    PackedList foo(nPoints);
vs.
    PackedList foo(nPoints, 0);

saves an extra nPoints operations with shifts/masks etc.

If speed is important, change this type of code

    PackedList isMaster(nPoints, 1u);
    for (loop)
    {
        if (condition)
        {
            isMaster.set(i, 0u);   // unset bit
        }
    }
    return isMaster;

into this:

    PackedList notMaster(nPoints);
    for (loop)
    {
        if (!condition)
        {
            notMaster.set(i, 1u);
        }
    }
    notMaster.flip();
    return notMaster;

or this:

    PackedList isMaster(nPoints);
    isMaster.flip();

    for (loop)
    {
        if (condition)
        {
            isMaster.set(i, 0u);
        }
    }
    return isMaster;
parent 99b293ff
......@@ -75,8 +75,8 @@ void Foam::syncTools::checkTransform
// Determines for every point whether it is coupled and if so sets only one.
Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh)
{
PackedBoolList isMasterPoint(mesh.nPoints(), 0);
PackedBoolList donePoint(mesh.nPoints(), 0);
PackedBoolList isMasterPoint(mesh.nPoints());
PackedBoolList donePoint(mesh.nPoints());
// Do multiple shared points. Min. proc is master
......@@ -194,8 +194,8 @@ Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh)
// Determines for every edge whether it is coupled and if so sets only one.
Foam::PackedBoolList Foam::syncTools::getMasterEdges(const polyMesh& mesh)
{
PackedBoolList isMasterEdge(mesh.nEdges(), 0);
PackedBoolList doneEdge(mesh.nEdges(), 0);
PackedBoolList isMasterEdge(mesh.nEdges());
PackedBoolList doneEdge(mesh.nEdges());
// Do multiple shared edges. Min. proc is master
......
......@@ -35,9 +35,6 @@ Description
#include "pointData.H"
#include "PointEdgeWave.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Calculate inverse sum of edge weights (currently always 1.0)
......@@ -240,7 +237,7 @@ void Foam::autoLayerDriver::smoothNormals
const edgeList& edges = mesh.edges();
// Points that do not change.
PackedBoolList isFixedPoint(mesh.nPoints(), 0);
PackedBoolList isFixedPoint(mesh.nPoints());
// Internal points that are fixed
forAll(fixedPoints, i)
......
......@@ -47,12 +47,7 @@ Description
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(autoSnapDriver, 0);
} // End namespace Foam
defineTypeNameAndDebug(Foam::autoSnapDriver, 0);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
......@@ -1308,7 +1303,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoSnapDriver::repatchToSurface
// Faces that do not move
PackedBoolList isZonedFace(mesh.nFaces(), 0);
PackedBoolList isZonedFace(mesh.nFaces());
{
// 1. All faces on zoned surfaces
const wordList& faceZoneNames = surfaces.faceZoneNames();
......
......@@ -1274,7 +1274,7 @@ Foam::labelList Foam::meshRefinement::intersectedPoints() const
const faceList& faces = mesh_.faces();
// Mark all points on faces that will become baffles
PackedBoolList isBoundaryPoint(mesh_.nPoints(), 0u);
PackedBoolList isBoundaryPoint(mesh_.nPoints());
label nBoundaryPoints = 0;
forAll(surfaceIndex_, faceI)
......
......@@ -36,15 +36,19 @@ License
#include "IFstream.H"
#include "decompositionMethod.H"
#include "vectorList.H"
#include "PackedBoolList.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(distributedTriSurfaceMesh, 0);
addToRunTimeSelectionTable(searchableSurface, distributedTriSurfaceMesh, dict);
defineTypeNameAndDebug(distributedTriSurfaceMesh, 0);
addToRunTimeSelectionTable
(
searchableSurface,
distributedTriSurfaceMesh,
dict
);
}
......@@ -873,7 +877,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
bbs[procI].setSize(1);
//bbs[procI][0] = boundBox::invertedBox;
bbs[procI][0].min() = point( VGREAT, VGREAT, VGREAT);
bbs[procI][0].max() = point(-VGREAT, -VGREAT, -VGREAT);
bbs[procI][0].max() = point(-VGREAT, -VGREAT, -VGREAT);
}
forAll (s, triI)
......@@ -917,8 +921,7 @@ void Foam::distributedTriSurfaceMesh::calcBounds
// Unfortunately nPoints constructs meshPoints() so do compact version
// ourselves
PackedList<1> pointIsUsed(points().size());
pointIsUsed = 0U;
PackedBoolList pointIsUsed(points().size());
nPoints = 0;
bb.min() = point(VGREAT, VGREAT, VGREAT);
......@@ -933,7 +936,7 @@ void Foam::distributedTriSurfaceMesh::calcBounds
forAll(f, fp)
{
label pointI = f[fp];
if (pointIsUsed.set(pointI, 1))
if (pointIsUsed.set(pointI, 1u))
{
bb.min() = ::Foam::min(bb.min(), points()[pointI]);
bb.max() = ::Foam::max(bb.max(), points()[pointI]);
......
......@@ -82,8 +82,8 @@ bool Foam::rawTopoChangerFvMesh::update()
// - internal faces inflated out of nothing
// - patch faces created out of previously internal faces
// Is face mapped in any way
PackedList<1> mappedFace(nFaces());
// Is face mapped in any way?
PackedBoolList mappedFace(nFaces());
const label nOldInternal = topoChangeMap().oldPatchStarts()[0];
......
......@@ -40,7 +40,7 @@ SourceFiles
#define rawTopoChangerFvMesh_H
#include "topoChangerFvMesh.H"
#include "PackedList.H"
#include "PackedBoolList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
......@@ -64,12 +64,12 @@ class rawTopoChangerFvMesh
static void setUnmappedValues
(
GeometricField<Type, PatchField, GeoMesh>& fld,
const PackedList<1>& mappedFace,
const PackedBoolList& mappedFace,
const GeometricField<Type, PatchField, GeoMesh>& baseFld
);
template<class Type, template<class> class PatchField, class GeoMesh>
void zeroUnmappedValues(const PackedList<1>&) const;
void zeroUnmappedValues(const PackedBoolList&) const;
//- Disallow default bitwise copy construct
rawTopoChangerFvMesh(const rawTopoChangerFvMesh&);
......
......@@ -33,7 +33,7 @@ template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::rawTopoChangerFvMesh::setUnmappedValues
(
GeometricField<Type, PatchField, GeoMesh>& fld,
const PackedList<1>& mappedFace,
const PackedBoolList& mappedFace,
const GeometricField<Type, PatchField, GeoMesh>& baseFld
)
{
......@@ -65,7 +65,7 @@ void Foam::rawTopoChangerFvMesh::setUnmappedValues
template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::rawTopoChangerFvMesh::zeroUnmappedValues
(
const PackedList<1>& mappedFace
const PackedBoolList& mappedFace
) const
{
typedef GeometricField<Type, PatchField, GeoMesh> FieldType;
......
Markdown is supported
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