3#ifndef OPENSWMM_MOMENTUM_PHYSICS_2D_HPP
4#define OPENSWMM_MOMENTUM_PHYSICS_2D_HPP
31 static constexpr double kappa = 0.41;
32 double last_limit = std::numeric_limits<double>::infinity();
41 const std::vector<int>& slots,
const std::vector<double>& h,
42 const std::vector<double>& eta, std::vector<double>& qx,
43 std::vector<double>& qy,
double dry,
double seconds,
bool vfr);
45 static void rotate(std::vector<double>& qx, std::vector<double>& qy,
double angle);
55 const std::vector<double>& eta,
const std::vector<double>& qx,
56 const std::vector<double>& qy,
double dry,
double cs, std::vector<double>& rx,
57 std::vector<double>& ry,
double fixed_viscosity = -1,
double background = 0,
58 double depth_coefficient = 0);
66 const std::vector<double>& eta, std::vector<double>& qx, std::vector<double>& qy,
67 double dry,
double cs,
double seconds,
double background = 0,
68 double depth_coefficient = 0);
73 static double energy(
const MeshData& m,
const std::vector<double>& h,
74 const std::vector<double>& qx,
const std::vector<double>& qy,
double dry);
78 std::array<int, 5> ids{};
79 std::array<double, 5> gx{}, gy{};
82 std::vector<Stencil> stencils_;
83 std::vector<uint8_t> connected_;
84 std::vector<double> bound_x_, bound_y_, rx_, ry_, sx_, sy_, tx_, ty_;
Definition MomentumPhysics2D.hpp:25
static double energy(const MeshData &m, const std::vector< double > &h, const std::vector< double > &qx, const std::vector< double > &qy, double dry)
Definition MomentumPhysics2D.cpp:290
uint64_t substeps
Definition MomentumPhysics2D.hpp:33
double evaluate(const MeshData &m, const InertialEdges &edges, const std::vector< double > &h, const std::vector< double > &eta, const std::vector< double > &qx, const std::vector< double > &qy, double dry, double cs, std::vector< double > &rx, std::vector< double > &ry, double fixed_viscosity=-1, double background=0, double depth_coefficient=0)
Definition MomentumPhysics2D.cpp:22
uint64_t retries
Definition MomentumPhysics2D.hpp:33
double last_limit
Definition MomentumPhysics2D.hpp:32
void computeWallDistance(const MeshData &m)
Definition MomentumPhysics2D.cpp:268
std::vector< double > strain
Definition MomentumPhysics2D.hpp:27
std::vector< double > vorticity
Definition MomentumPhysics2D.hpp:27
static double wallDrag(const MeshData &m, const BoundaryData &b, const std::vector< int > &slots, const std::vector< double > &h, const std::vector< double > &eta, std::vector< double > &qx, std::vector< double > &qy, double dry, double seconds, bool vfr)
Definition MomentumPhysics2D.cpp:302
static constexpr double kappa
Definition MomentumPhysics2D.hpp:31
static void rotate(std::vector< double > &qx, std::vector< double > &qy, double angle)
Definition MomentumPhysics2D.cpp:11
std::vector< double > viscosity
Definition MomentumPhysics2D.hpp:27
std::vector< double > wall_distance
Definition MomentumPhysics2D.hpp:30
void advance(const MeshData &m, const InertialEdges &edges, const std::vector< double > &h, const std::vector< double > &eta, std::vector< double > &qx, std::vector< double > &qy, double dry, double cs, double seconds, double background=0, double depth_coefficient=0)
Definition MomentumPhysics2D.cpp:208
Definition ExchangeLaw.hpp:60
SoA storage for per-edge boundary conditions.
Definition BoundaryData.hpp:73
Canonical unique interior-edge layout + per-cell incidence for the local-inertial scheme.
Definition InertialEdges.hpp:60
SoA storage for 2D mixed triangle/quad mesh geometry and topology.
Definition MeshData.hpp:65