rigid_wall_1d.cpp
1 #include "rigid_wall_1d.hpp"
2 #include "../../misc/universal_error.hpp"
3 #include "flux_conversion.hpp"
4 
5 namespace {
6  Primitive reverse_velocity(const Primitive& p)
7  {
8  Primitive res = p;
9  res.Velocity.x *= -1;
10  return res;
11  }
12 }
13 
14 Extensive RigidWall1D::operator()
15  (const SimulationState1D& ss,
16  const EquationOfState& eos,
17  const RiemannSolver& rs,
18  const vector<double>& vertex_velocity,
19  const bool side) const
20 {
21  const vector<double>& vertices = ss.getVertices();
22  if(side){
23  const ComputationalCell& cell = ss.getCells().back();
24  const Primitive left = cc2primitive(cell, eos);
25  const Primitive right = reverse_velocity(left);
26  const double vv = vertex_velocity.at(vertices.size()-1);
27  return flux2extensive
28  (rs(left, right, vv),
29  cell);
30  }
31  else{
32  const ComputationalCell& cell = ss.getCells().front();
33  const Primitive right = cc2primitive(cell, eos);
34  const Primitive left = reverse_velocity(right);
35  const double vv = vertex_velocity[0];
36  return flux2extensive
37  (rs(left, right, vv),
38  cell);
39  }
40 }
Extensive variables.
Definition: extensive.hpp:18
Vector2D Velocity
Velocity.
const vector< double > & getVertices(void) const
Access to vertices.
Base class for Riemann solver.
const vector< ComputationalCell > & getCells(void) const
Access to hydro cells.
Base class for equation of state.
Rigid wall boundary conditions.
Primitive hydrodynamic variables.
Package for computational domain and hydro cells.
double x
Component in the x direction.
Definition: geometry.hpp:45
Computational cell.