ENH: topoSet: added pointToCell/Face with edge option

This commit is contained in:
mattijs
2012-03-20 14:12:51 +00:00
parent 7df1e91179
commit c440f4fbb9
5 changed files with 62 additions and 17 deletions

View File

@ -86,6 +86,7 @@ FoamFile
// set p0; // set p0;
// option any; // cell with any point in pointSet // option any; // cell with any point in pointSet
// //option all; // cell with all points in pointSet // //option all; // cell with all points in pointSet
// //option edge; // cell with an edge with both points in pointSet
// } // }
// //
// // Select based on cellShape // // Select based on cellShape
@ -198,6 +199,7 @@ FoamFile
// set p0; // set p0;
// option any; // Faces using any point in pointSet // option any; // Faces using any point in pointSet
// //option all // Faces with all points in pointSet // //option all // Faces with all points in pointSet
// //option edge // Faces with two consecutive points in pointSet
// } // }
// //
// // Select by explicitly providing face labels // // Select by explicitly providing face labels

View File

@ -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 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -41,10 +41,11 @@ namespace Foam
const char* Foam::NamedEnum const char* Foam::NamedEnum
< <
Foam::pointToCell::pointAction, Foam::pointToCell::pointAction,
1 2
>::names[] = >::names[] =
{ {
"any" "any",
"edge"
}; };
} }
@ -52,11 +53,12 @@ namespace Foam
Foam::topoSetSource::addToUsageTable Foam::pointToCell::usage_ Foam::topoSetSource::addToUsageTable Foam::pointToCell::usage_
( (
pointToCell::typeName, pointToCell::typeName,
"\n Usage: pointToCell <pointSet> any\n\n" "\n Usage: pointToCell <pointSet> any|edge\n\n"
" Select all cells with any point in the pointSet\n\n" " Select all cells with any point ('any') or any edge ('edge')"
" in the pointSet\n\n"
); );
const Foam::NamedEnum<Foam::pointToCell::pointAction, 1> const Foam::NamedEnum<Foam::pointToCell::pointAction, 2>
Foam::pointToCell::pointActionNames_; Foam::pointToCell::pointActionNames_;
@ -82,6 +84,26 @@ void Foam::pointToCell::combine(topoSet& set, const bool add) const
} }
} }
} }
else if (option_ == EDGE)
{
const faceList& faces = mesh_.faces();
forAll(faces, faceI)
{
const face& f = faces[faceI];
forAll(f, fp)
{
if (loadedSet.found(f[fp]) && loadedSet.found(f.nextLabel(fp)))
{
addOrDelete(set, mesh_.faceOwner()[faceI], add);
if (mesh_.isInternalFace(faceI))
{
addOrDelete(set, mesh_.faceNeighbour()[faceI], add);
}
}
}
}
}
} }

View File

@ -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 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -55,7 +55,8 @@ public:
//- Enumeration defining the valid options //- Enumeration defining the valid options
enum pointAction enum pointAction
{ {
ANY // Cells using any point in set ANY, // Cells using any point in set
EDGE // Cells using an edge with both points in set
//ALL // Possible extension: cells whose all points are in set //ALL // Possible extension: cells whose all points are in set
}; };
@ -64,7 +65,7 @@ private:
//- Add usage string //- Add usage string
static addToUsageTable usage_; static addToUsageTable usage_;
static const NamedEnum<pointAction, 1> pointActionNames_; static const NamedEnum<pointAction, 2> pointActionNames_;
//- Name of set to use //- Name of set to use
word setName_; word setName_;

View File

@ -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 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -41,11 +41,12 @@ namespace Foam
const char* Foam::NamedEnum const char* Foam::NamedEnum
< <
Foam::pointToFace::pointAction, Foam::pointToFace::pointAction,
2 3
>::names[] = >::names[] =
{ {
"any", "any",
"all" "all",
"edge"
}; };
} }
@ -53,13 +54,14 @@ namespace Foam
Foam::topoSetSource::addToUsageTable Foam::pointToFace::usage_ Foam::topoSetSource::addToUsageTable Foam::pointToFace::usage_
( (
pointToFace::typeName, pointToFace::typeName,
"\n Usage: pointToFace <pointSet> any|all\n\n" "\n Usage: pointToFace <pointSet> any|all|edge\n\n"
" Select faces with\n" " Select faces with\n"
" -any point in the pointSet\n" " -any point in the pointSet\n"
" -all points in the pointSet\n\n" " -all points in the pointSet\n\n"
" -two consecutive points (an edge) in the pointSet\n\n"
); );
const Foam::NamedEnum<Foam::pointToFace::pointAction, 2> const Foam::NamedEnum<Foam::pointToFace::pointAction, 3>
Foam::pointToFace::pointActionNames_; Foam::pointToFace::pointActionNames_;
@ -126,6 +128,23 @@ void Foam::pointToFace::combine(topoSet& set, const bool add) const
} }
} }
} }
else if (option_ == EDGE)
{
const faceList& faces = mesh_.faces();
forAll(faces, faceI)
{
const face& f = faces[faceI];
forAll(f, fp)
{
if (loadedSet.found(f[fp]) && loadedSet.found(f.nextLabel(fp)))
{
addOrDelete(set, faceI, add);
break;
}
}
}
}
} }

View File

@ -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 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -58,7 +58,8 @@ public:
enum pointAction enum pointAction
{ {
ANY, ANY,
ALL ALL,
EDGE
}; };
@ -67,7 +68,7 @@ private:
//- Add usage string //- Add usage string
static addToUsageTable usage_; static addToUsageTable usage_;
static const NamedEnum<pointAction, 2> pointActionNames_; static const NamedEnum<pointAction, 3> pointActionNames_;
//- Name of set to use //- Name of set to use
word setName_; word setName_;