Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef ZoneID_H
00036 #define ZoneID_H
00037
00038 #include <OpenFOAM/label.H>
00039 #include <OpenFOAM/word.H>
00040 #include <OpenFOAM/polyMesh.H>
00041
00042
00043
00044 namespace Foam
00045 {
00046
00047 template<class ZoneType, class MeshType> class ZoneMesh;
00048
00049
00050
00051 template<class ZoneType> class ZoneID;
00052
00053 template<class ZoneType>
00054 Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&);
00055
00056
00057
00058
00059
00060 template<class ZoneType>
00061 class ZoneID
00062 {
00063
00064
00065
00066 word name_;
00067
00068
00069 label index_;
00070
00071
00072 public:
00073
00074
00075
00076
00077 ZoneID(const word& name, const ZoneMesh<ZoneType, polyMesh>& zm)
00078 :
00079 name_(name),
00080 index_(zm.findZoneID(name))
00081 {}
00082
00083
00084 ZoneID(Istream& is, const ZoneMesh<ZoneType, polyMesh>& zm)
00085 :
00086 name_(is),
00087 index_(zm.findZoneID(name_))
00088 {}
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 const word& name() const
00100 {
00101 return name_;
00102 }
00103
00104
00105 label index() const
00106 {
00107 return index_;
00108 }
00109
00110
00111 bool active() const
00112 {
00113 return index_ > -1;
00114 }
00115
00116
00117
00118
00119 void update(const ZoneMesh<ZoneType, polyMesh>& zm)
00120 {
00121 index_ = zm.findZoneID(name_);
00122 }
00123
00124
00125
00126
00127 friend Ostream& operator<< <ZoneType>
00128 (
00129 Ostream& os, const ZoneID<ZoneType>& p
00130 );
00131 };
00132
00133
00134
00135
00136 template<class ZoneType>
00137 Ostream& operator<<
00138 (
00139 Ostream& os, const ZoneID<ZoneType>& p
00140 )
00141 {
00142 os << token::BEGIN_LIST
00143 << p.name_ << token::SPACE
00144 << p.index_
00145 << token::END_LIST;
00146
00147
00148 os.check("Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&)");
00149
00150 return os;
00151 }
00152
00153
00154
00155
00156 }
00157
00158
00159
00160 #endif
00161
00162