simple_extensive_updater.cpp
2 
3 namespace
4 {
5  bool bracketed(int low, int arg, int high)
6  {
7  return arg>=low && high>arg;
8  }
9 }
10 
11 void SimpleExtensiveUpdater::operator()
12  (const vector<Extensive>& fluxes,
13  const PhysicalGeometry& /*pg*/,
14  const Tessellation& tess,
15  const double dt,
16  const CacheData& cd,
17  const vector<ComputationalCell>& /*cells*/,
18  vector<Extensive>& extensives,
19  double /*time*/, TracerStickerNames const& /*tracerstickersnames*/) const
20 {
21  const vector<Edge>& edge_list = tess.getAllEdges();
22  Extensive delta = dt*cd.areas[0] * fluxes[0];
23  for(size_t i=0;i<edge_list.size();++i)
24  {
25  const Edge& edge = edge_list[i];
26  ReplaceExtensive(delta,fluxes[i]);
27  delta *= dt*cd.areas[i];
28  if(bracketed(0,edge.neighbors.first,tess.GetPointNo()))
29  extensives[static_cast<size_t>(edge.neighbors.first)] -=
30  delta;
31  if(bracketed(0,edge.neighbors.second,tess.GetPointNo()))
32  extensives[static_cast<size_t>(edge.neighbors.second)] +=
33  delta;
34  }
35 }
Extensive variables.
Definition: extensive.hpp:18
Abstract class for tessellation.
Interface between two cells.
Definition: Edge.hpp:13
void ReplaceExtensive(Extensive &toreplace, Extensive const &other)
Replaces the data in the extensive. The tracers should already be allocated.
Definition: extensive.cpp:47
Container for cache data.
Definition: cache_data.hpp:14
Class for keeping the names of the tracers and stickers.
std::pair< int, int > neighbors
Neighboring cells.
Definition: Edge.hpp:21
Base class for physical geometry.
Simple extensive variable updater.