HalfPeriodicEdgeMotion.cpp
1 #include "HalfPeriodicEdgeMotion.hpp"
2 
3 HalfPeriodicEdgeVelocities::HalfPeriodicEdgeVelocities(void) {}
4 
6  const vector<Vector2D>& point_velocities) const
7 {
8  const vector<Edge>& edge_list = tess.getAllEdges();
9  vector<Vector2D> res(edge_list.size());
10  for (size_t i = 0; i < res.size(); ++i)
11  {
12  const Edge& edge = edge_list.at(i);
13  if (tess.GetOriginalIndex(edge.neighbors.first) == tess.GetOriginalIndex(edge.neighbors.second))
14  res.at(i) = Vector2D();
15  else
16  {
17  res.at(i) = tess.CalcFaceVelocity
18  (point_velocities.at(static_cast<size_t>(tess.GetOriginalIndex(edge.neighbors.first))),
19  point_velocities.at(static_cast<size_t>(tess.GetOriginalIndex(edge.neighbors.second))),
20  tess.GetMeshPoint(edge.neighbors.first),
21  tess.GetMeshPoint(edge.neighbors.second),
22  calc_centroid(edge));
23  }
24  }
25  return res;
26 }
Abstract class for tessellation.
virtual int GetOriginalIndex(int point) const
Returns the original index of the duplicated point.
Definition: tessellation.cpp:5
Interface between two cells.
Definition: Edge.hpp:13
virtual Vector2D GetMeshPoint(int index) const =0
Returns Position of mesh generating point.
virtual const vector< Edge > & getAllEdges(void) const =0
Returns reference to the list of all edges.
std::pair< int, int > neighbors
Neighboring cells.
Definition: Edge.hpp:21
Vector3D calc_centroid(const Face &face)
Calculates the centroid of aa face.
Definition: Face.cpp:32
virtual Vector2D CalcFaceVelocity(Vector2D wl, Vector2D wr, Vector2D rL, Vector2D rR, Vector2D f) const =0
Calculates the velocity of a single edge.
2D Mathematical vector
Definition: geometry.hpp:15
vector< Vector2D > operator()(const Tessellation &tess, const vector< Vector2D > &point_velocities) const
Calculates the velocity of the edges.