00001
00002
00008 #if !defined(__geom_mesh_simplicial_topology_h__)
00009 #define __geom_mesh_simplicial_topology_h__
00010
00011 #include "SimpMeshRed.h"
00012
00013 BEGIN_NAMESPACE_GEOM
00014
00016
00019 template<class SMR>
00020 inline
00021 bool
00022 isOnBoundary(const typename SMR::ConstFace& f) {
00023 return f.first->getNeighbor(f.second) == 0;
00024 }
00025
00026
00028
00031 template<class SMR>
00032 inline
00033 bool
00034 isOnBoundary(const typename SMR::Face& f) {
00035 return f.first->getNeighbor(f.second) == 0;
00036 }
00037
00038
00040
00043 template<class SMR>
00044 inline
00045 bool
00046 isOnBoundary(const typename SMR::FaceConstIterator& f) {
00047 return isOnBoundary<SMR>(*f);
00048 }
00049
00050
00052
00055 template<class SMR>
00056 inline
00057 bool
00058 isOnBoundary(const typename SMR::FaceIterator& f) {
00059 return isOnBoundary<SMR>(*f);
00060 }
00061
00062
00064
00080 template<class SMR>
00081 bool
00082 areMirrorNodes(typename SMR::NodeConstIterator x,
00083 typename SMR::NodeConstIterator y);
00084
00085
00087 template<class SMR>
00088 bool
00089 doNodesShareACell(typename SMR::NodeConstIterator x,
00090 typename SMR::NodeConstIterator y);
00091
00092
00094
00100 template<typename SMR, typename CellIteratorOutputIterator>
00101 void
00102 determineCellsIncidentToEdge(typename SMR::CellIterator c,
00103 const int i, const int j,
00104 CellIteratorOutputIterator output);
00105
00106
00108
00113 template<typename SMR, typename NodeIteratorInsertIterator>
00114 void
00115 determineNodesInLink(typename SMR::NodeIterator node,
00116 NodeIteratorInsertIterator nodesInLink);
00117
00118
00119 END_NAMESPACE_GEOM
00120
00121 #define __geom_mesh_simplicial_topology_ipp__
00122 #include "topology.ipp"
00123 #undef __geom_mesh_simplicial_topology_ipp__
00124
00125 #endif