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
00036 #ifndef edge_H
00037 #define edge_H
00038
00039 #include <OpenFOAM/FixedList.H>
00040 #include <OpenFOAM/pointField.H>
00041 #include <OpenFOAM/linePointRef.H>
00042
00043
00044
00045 namespace Foam
00046 {
00047
00048
00049
00050 class edge;
00051 inline bool operator==(const edge& a, const edge& b);
00052 inline bool operator!=(const edge& a, const edge& b);
00053
00054
00055
00056
00057
00058
00059 class edge
00060 :
00061 public FixedList<label, 2>
00062 {
00063
00064 public:
00065
00066
00067
00068 static const char* const typeName;
00069
00070
00071
00072
00073
00074 inline edge();
00075
00076
00077 inline edge(const label a, const label b);
00078
00079
00080 inline edge(const FixedList<label, 2>&);
00081
00082
00083 inline edge(Istream&);
00084
00085
00086
00087
00088
00089 inline label start() const;
00090
00091
00092 inline label& start();
00093
00094
00095 inline label end() const;
00096
00097
00098 inline label& end();
00099
00100
00101 inline label otherVertex(const label a) const;
00102
00103
00104 inline label commonVertex(const edge& a) const;
00105
00106
00107 inline edge reverseEdge() const;
00108
00109
00110 inline point centre(const pointField&) const;
00111
00112
00113 inline vector vec(const pointField&) const;
00114
00115
00116 inline scalar mag(const pointField&) const;
00117
00118
00119 inline linePointRef line(const pointField&) const;
00120
00121
00122
00123
00124
00125 static inline int compare(const edge&, const edge&);
00126
00127
00128
00129
00130 friend bool operator==(const edge& a, const edge& b);
00131 friend bool operator!=(const edge& a, const edge& b);
00132 };
00133
00134
00135
00136
00137 template<>
00138 inline unsigned Hash<edge>::operator()(const edge& e, unsigned seed) const
00139 {
00140 unsigned val = seed;
00141
00142 if (e[0] < e[1])
00143 {
00144 val = Hash<label>()(e[0], val);
00145 val = Hash<label>()(e[1], val);
00146 }
00147 else
00148 {
00149 val = Hash<label>()(e[1], val);
00150 val = Hash<label>()(e[0], val);
00151 }
00152
00153 return val;
00154 }
00155
00156
00157
00158
00159 template<>
00160 inline unsigned Hash<edge>::operator()(const edge& e) const
00161 {
00162 return Hash<edge>()(e, 0);
00163 }
00164
00165
00166 template<>
00167 inline bool contiguous<edge>() {return true;}
00168
00169
00170
00171
00172 }
00173
00174
00175
00176 #include <OpenFOAM/edgeI.H>
00177
00178
00179
00180 #endif
00181
00182