/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/model/numflux.hh Source File#
|
DiFfRG
|
numflux.hh
Go to the documentation of this file.
26 template <int dim, typename NumberType, typename Solutions_s, typename Solutions_n, typename M = Model>
61 const auto alpha = max(abs(dot<dim, NumberType>(dflux_s[i], normal) - dot<dim, NumberType>(F_s[i], normal)),
92 template <uint dependent, int dim, typename NumberType, typename Solutions_s, typename Solutions_n,
94 void ldg_numflux(std::array<Tensor<1, dim, NumberType>, M::Components::count_fe_functions(dependent)> &NF,
101 static_assert(dependent >= 1, "ldg_numflux requires dependent >= 1 (use numflux for dependent == 0).");
105 static_assert(Dirs::size == UD::size && UD::size >= M::Components::count_fe_functions(dependent),
106 "LDG numflux: FlowDirections::size and UpDown::size must both be >= count_fe_functions(dependent).");
113 std::array<std::array<Tensor<1, dim, NumberType>, Components::count_fe_functions(dependent)>, 2> F;
114 // normals are facing outwards! Therefore, the first case is the one where the normal points to the left
115 // (smaller field values), the second case is the one where the normal points to the right (larger field
118 // F[0] takes the flux from the right (inside the cell), F[1] takes the flux from the left (the other cell)
135 template <int dim, typename NumberType, typename Solutions_s, typename Solutions_n, typename M = Model>
152 void boundary_numflux(std::array<Tensor<1, dim, NumberType>, M::Components::count_fe_functions(0)> &F,
163 ldg_boundary_numflux(std::array<Tensor<1, dim, NumberType>, M::Components::count_fe_functions(dependent)> &BNF,
Definition numflux.hh:146
void ldg_boundary_numflux(std::array< Tensor< 1, dim, NumberType >, M::Components::count_fe_functions(dependent)> &BNF, const Tensor< 1, dim > &, const Point< dim > &p, const Solutions &u) const
Definition numflux.hh:163
void boundary_numflux(std::array< Tensor< 1, dim, NumberType >, M::Components::count_fe_functions(0)> &F, const Tensor< 1, dim > &, const Point< dim > &p, const Solutions &sol) const
Definition numflux.hh:152
Definition numflux.hh:86
typename std::tuple_element< i, std::tuple< Collections... > >::type C
Definition numflux.hh:89
void ldg_numflux(std::array< Tensor< 1, dim, NumberType >, M::Components::count_fe_functions(dependent)> &NF, const Tensor< 1, dim > &normal, const Point< dim > &p, const Solutions_s &u_s, const Solutions_n &u_n) const
Definition numflux.hh:94
Definition numflux.hh:21
void numflux(std::array< Tensor< 1, dim, NumberType >, M::Components::count_fe_functions(0)> &NF, const Tensor< 1, dim > &normal, const Point< dim > &p, const Solutions_s &sol_s, const Solutions_n &sol_n) const
Definition numflux.hh:27
Definition numflux.hh:133
void numflux(std::array< Tensor< 1, dim, NumberType >, M::Components::count_fe_functions(0)> &, const Tensor< 1, dim > &, const Point< dim > &, const Solutions_s &, const Solutions_n &) const
Definition numflux.hh:136
Definition complex_math.hh:10
constexpr auto tuple_tail(const std::tuple< Head, Tail... > &t)
Definition tuples.hh:223
NT dot(const A1 &a1, const A2 &a2)
A dot product which takes the dot product between a1 and a2, assuming each has n entries which can be...
Definition math.hh:211
constexpr auto & get(named_tuple< tuple_type, strSet > &ob)
get a reference to the element with the given name
Definition tuples.hh:111
Definition complex_math.hh:19
Definition numflux.hh:77
static constexpr std::array< int, sizeof...(n)> value
Definition numflux.hh:78
Definition numflux.hh:74
typename std::tuple_element< i, std::tuple< T... > >::type value
Definition numflux.hh:75
Definition numflux.hh:81
static constexpr std::array< int, sizeof...(n)> value
Definition numflux.hh:82
Generated by