CustomMotion.cpp
1 #include "CustomMotion.hpp"
2 
4 
5 CustomMotion::CustomMotion(PointMotion const& otherpm, CustomMotionCriteria const& criteria) : pm_(otherpm),
6 criteria_(criteria){}
7 
8 vector<Vector2D> CustomMotion::operator()(const Tessellation& tess, const vector<ComputationalCell>& cells,
9  double time, TracerStickerNames const& tracerstickernames) const
10 {
11  return pm_.operator()(tess, cells, time,tracerstickernames);
12 }
13 
14 vector<Vector2D> CustomMotion::ApplyFix(Tessellation const& tess, vector<ComputationalCell> const& cells, double time,
15  double dt, vector<Vector2D> const& velocities, TracerStickerNames const& tracerstickernames)const
16 {
17  vector<Vector2D> res = pm_.ApplyFix(tess, cells, time, dt, velocities,tracerstickernames);
18  for (size_t i = 0; i < res.size(); ++i)
19  {
20  if (criteria_.SatisfyCriteria(i, tess, cells, time,velocities,dt,tracerstickernames))
21  res[i] = criteria_.CustomVelocityResult(i, tess, cells, time,velocities,dt,tracerstickernames);
22  }
23  return res;
24 }
Abstract class for tessellation.
vector< Vector2D > ApplyFix(Tessellation const &tess, vector< ComputationalCell > const &cells, double time, double dt, vector< Vector2D > const &velocities, TracerStickerNames const &tracerstickernames) const
Applies a small fix to the velocity of all mesh points once the time step is known.
Abstract class for motion of mesh generating points.
virtual bool SatisfyCriteria(size_t index, Tessellation const &tess, vector< ComputationalCell > const &cells, double time, vector< Vector2D > const &velocities, double dt, TracerStickerNames const &ts) const =0
Check if a point satisfies a certain criterion.
Abstract class for a custom motion of the mesh generating points.
virtual Vector2D CustomVelocityResult(size_t index, Tessellation const &tess, vector< ComputationalCell > const &cells, double time, vector< Vector2D > const &velocities, double dt, TracerStickerNames const &ts) const =0
Calculates custom velocity.
Class for keeping the names of the tracers and stickers.
vector< Vector2D > operator()(const Tessellation &tess, const vector< ComputationalCell > &cells, double time, TracerStickerNames const &tracerstickernames) const
Calculates the velocity of all mesh points.
Definition: CustomMotion.cpp:8
virtual vector< Vector2D > ApplyFix(Tessellation const &tess, vector< ComputationalCell > const &cells, double time, double dt, vector< Vector2D > const &velocities, TracerStickerNames const &tracerstickernames) const
Applies a small fix to the velocity of all mesh points once the time step is known.
Definition: point_motion.cpp:5
Class for checking if the criteria for custom motion is applied.
CustomMotion(PointMotion const &otherpm, CustomMotionCriteria const &criteria)
Class constructor.
Definition: CustomMotion.cpp:5
virtual ~CustomMotionCriteria(void)
Class destructor.
Definition: CustomMotion.cpp:3