ENH: merge polyPatchID and ZoneID together into DynamicID

This commit is contained in:
Mark Olesen
2010-08-05 14:47:49 +02:00
parent 2d93b5c202
commit dc237f20a8
7 changed files with 86 additions and 198 deletions

View File

@ -329,7 +329,7 @@ $(cellShape)/cellShapeEqual.C
$(cellShape)/cellShapeIO.C $(cellShape)/cellShapeIO.C
$(cellShape)/cellShapeIOList.C $(cellShape)/cellShapeIOList.C
meshes/patchIdentifier/patchIdentifier.C meshes/Identifiers/patch/patchIdentifier.C
polyMesh = meshes/polyMesh polyMesh = meshes/polyMesh

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) 1991-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -22,43 +22,40 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class Class
Foam::ZoneID Foam::DynamicID
Description Description
A class that holds the data needed to identify a zone in a dynamic mesh. A class that holds the data needed to identify things (zones, patches)
in a dynamic mesh.
The zone is identified by name. The thing is identified by name.
Its index in the zoneMesh is updated if the mesh has changed. Its indices are updated if the mesh has changed.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef ZoneID_H #ifndef DynamicID_H
#define ZoneID_H #define DynamicID_H
#include "keyType.H" #include "keyType.H"
#include "labelList.H" #include "labelList.H"
#include "polyMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
template<class ZoneType, class MeshType> class ZoneMesh;
// Forward declaration of friend functions and operators // Forward declaration of friend functions and operators
template<class> class DynamicID;
template<class ZoneType> class ZoneID; template<class ObjectType>
Ostream& operator<<(Ostream&, const DynamicID<ObjectType>&);
template<class ZoneType>
Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&);
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class ZoneID Declaration Class DynamicID Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
template<class ZoneType> template<class ObjectType>
class ZoneID class DynamicID
{ {
// Private data // Private data
@ -74,17 +71,17 @@ public:
// Constructors // Constructors
//- Construct from name //- Construct from name
ZoneID(const keyType& key, const ZoneMesh<ZoneType, polyMesh>& zm) DynamicID(const keyType& key, const ObjectType& obj)
: :
key_(key), key_(key),
indices_(zm.findIndices(key_)) indices_(obj.findIndices(key_))
{} {}
//- Construct from Istream //- Construct from Istream
ZoneID(Istream& is, const ZoneMesh<ZoneType, polyMesh>& zm) DynamicID(Istream& is, const ObjectType& obj)
: :
key_(is), key_(is),
indices_(zm.findIndices(key_)) indices_(obj.findIndices(key_))
{} {}
@ -123,30 +120,30 @@ public:
// Edit // Edit
//- Update //- Update
void update(const ZoneMesh<ZoneType, polyMesh>& zm) void update(const ObjectType& obj)
{ {
indices_ = zm.findIndices(key_); indices_ = obj.findIndices(key_);
} }
// IOstream Operators // IOstream Operators
friend Ostream& operator<< <ZoneType> friend Ostream& operator<< <ObjectType>
(Ostream&, const ZoneID<ZoneType>&); (Ostream&, const DynamicID<ObjectType>&);
}; };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
template<class ZoneType> template<class ObjectType>
Ostream& operator<<(Ostream& os, const ZoneID<ZoneType>& p) Ostream& operator<<(Ostream& os, const DynamicID<ObjectType>& dynId)
{ {
os << token::BEGIN_LIST os << token::BEGIN_LIST
<< p.name() << token::SPACE << p.index() << dynId.name() << token::SPACE << dynId.index()
<< token::END_LIST; << token::END_LIST;
// Check state of Ostream // Check state of Ostream
os.check("Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&)"); os.check("Ostream& operator<<(Ostream&, const DynamicID<ObjectType>&)");
return os; return os;
} }

View File

@ -0,0 +1,44 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#ifndef polyPatchID_H
#define polyPatchID_H
#include "DynamicID.H"
#include "polyBoundaryMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
//- Foam::polyPatchID
typedef DynamicID<polyBoundaryMesh> polyPatchID;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

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) 1991-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -26,21 +26,26 @@ License
#ifndef ZoneIDs_H #ifndef ZoneIDs_H
#define ZoneIDs_H #define ZoneIDs_H
#include "ZoneID.H" #include "DynamicID.H"
#include "pointZone.H"
#include "faceZone.H" #include "cellZoneMeshFwd.H"
#include "cellZone.H" #include "faceZoneMeshFwd.H"
#include "pointZoneMeshFwd.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
//- Foam::pointZoneID
typedef ZoneID<pointZone> pointZoneID;
//- Foam::faceZoneID
typedef ZoneID<faceZone> faceZoneID;
//- Foam::cellZoneID //- Foam::cellZoneID
typedef ZoneID<cellZone> cellZoneID; typedef DynamicID<cellZoneMesh> cellZoneID;
//- Foam::faceZoneID
typedef DynamicID<faceZoneMesh> faceZoneID;
//- Foam::pointZoneID
typedef DynamicID<pointZoneMesh> pointZoneID;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -1,158 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::polyPatchID
Description
A class holds the data needed to identify a patch in a dynamic mesh.
The patch is identified by name and its index in the boundary mesh
is updated if the mesh has changed.
\*---------------------------------------------------------------------------*/
#ifndef polyPatchID_H
#define polyPatchID_H
#include "keyType.H"
#include "labelList.H"
#include "polyBoundaryMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of friend functions and operators
class polyPatchID;
Ostream& operator<<(Ostream&, const polyPatchID&);
/*---------------------------------------------------------------------------*\
Class polyPatchID Declaration
\*---------------------------------------------------------------------------*/
class polyPatchID
{
// Private data
//- Patch name
keyType key_;
//- Patch indices
labelList indices_;
public:
// Constructors
//- Construct from name
polyPatchID(const keyType& key, const polyBoundaryMesh& bm)
:
key_(key),
index_(bm.findIndices(key_))
{}
//- Construct from Istream
polyPatchID(Istream& is, const polyBoundaryMesh& bm)
:
key_(is),
index_(bm.findIndices(key_))
{}
// Destructor - default
// Member Functions
// Access
//- Return name
const keyType& name() const
{
return key_;
}
//- Return indices of matching patches
const labelList& indices() const
{
return indices_;
}
//- Return index of first matching patch
label index() const
{
return indices_.empty() ? -1 : indices_[0];
}
//- Has the patch been found
bool active() const
{
return !indices_.empty();
}
// Edit
//- Update
void update(const polyBoundaryMesh& bm)
{
indices_ = bm.findIndices(key_);
}
// Ostream Operator
friend Ostream& operator<<(Ostream&, const polyPatchID&);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Ostream& operator<<(Ostream& os, const polyPatchID& p)
{
os << token::BEGIN_LIST
<< p.name() << token::SPACE << p.index()
<< token::END_LIST;
// Check state of Ostream
os.check("Ostream& operator<<(Ostream&, const polyPatchID&)");
return os;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //