3 #include <amdis/Operations.hpp> 4 #include <amdis/gridfunctions/ComposerGridFunction.hpp> 5 #include <amdis/operations/Arithmetic.hpp> 6 #include <amdis/operations/FieldMatVec.hpp> 20 REQUIRES(Concepts::AnyGridFunction<Lhs>)>
27 template <
class Lhs,
class Rhs,
28 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
35 template <
class Lhs,
class Rhs,
36 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
43 template <
class Lhs,
class Rhs,
44 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
47 if constexpr(Dune::IsNumber<TYPEOF(lhs)>::value)
49 else if constexpr(Dune::IsNumber<TYPEOF(rhs)>::value)
56 template <
class Lhs,
class Rhs,
57 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
60 if constexpr(Dune::IsNumber<TYPEOF(rhs)>::value)
68 template <
class Lhs,
class Rhs,
69 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
70 auto max(Lhs&& lhs, Rhs&& rhs)
76 template <
class Lhs,
class Rhs,
77 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
78 auto min(Lhs&& lhs, Rhs&& rhs)
84 template <
class Lhs,
class Rhs,
85 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
92 template <
class Lhs,
class Rhs,
93 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
100 template <
class V,
class T,
101 REQUIRES(Concepts::AnyGridFunction<V>)>
102 auto clamp(V&& v, T
const& lo, T
const& hi)
108 REQUIRES(Concepts::AnyGridFunction<T>)>
111 return invokeAtQP([](
auto const& v) {
using std::abs;
return abs(v); }, FWD(value));
116 REQUIRES(Concepts::AnyGridFunction<T>)>
119 return invokeAtQP(Operation::Sqr{}, FWD(value));
123 template <
int p,
class T,
124 REQUIRES(Concepts::AnyGridFunction<T>)>
127 return invokeAtQP(Operation::Pow<p>{}, FWD(value));
132 REQUIRES(Concepts::AnyGridFunction<T>)>
133 auto pow(T&& value,
double p)
139 template <std::size_t I,
class T,
140 REQUIRES(Concepts::AnyGridFunction<T>)>
148 REQUIRES(Concepts::AnyGridFunction<T>)>
149 auto get(T&& value, std::size_t i)
175 REQUIRES(Concepts::AnyGridFunction<Vec>)>
178 return invokeAtQP([](
auto const& v) {
return sum(v); }, FWD(vec));
183 REQUIRES(Concepts::AnyGridFunction<Vec>)>
191 REQUIRES(Concepts::AnyGridFunction<Vec>)>
194 return invokeAtQP([](
auto const& v) {
return one_norm(v); }, FWD(vec));
199 REQUIRES(Concepts::AnyGridFunction<Vec>)>
206 template <
int p,
class Vec,
207 REQUIRES(Concepts::AnyGridFunction<Vec>)>
210 return invokeAtQP([](
auto const& v) {
return p_norm<p>(v); }, FWD(vec));
215 REQUIRES(Concepts::AnyGridFunction<Vec>)>
218 return invokeAtQP([](
auto const& v) {
return infty_norm(v); }, FWD(vec));
223 REQUIRES(Concepts::AnyGridFunction<Mat>)>
236 template <
class Lhs,
class Rhs,
237 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
238 auto dot(Lhs&& lhs, Rhs&& rhs)
245 template <
class Lhs,
class Rhs,
246 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
249 using namespace Operation;
250 return invokeAtQP(compose(TwoNorm{}, Minus{}),
255 template <
class Lhs,
class Rhs,
256 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
259 return invokeAtQP([](
auto const& v,
auto const& w) {
return outer(v,w); },
auto operator*(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Multiplies to GridFunctions.
Definition: Operations.hpp:45
auto infty_norm(Vec &&vec)
Applies a infty_norm() functor to a vector-valued GridFunction.
Definition: Operations.hpp:216
auto min(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Min to GridFunctions.
Definition: Operations.hpp:78
Operation that represents min(A,B)
Definition: MaxMin.hpp:20
Definition: Basic.hpp:202
auto dot(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Dot to two vector-valued GridFunctions.
Definition: Operations.hpp:238
auto max(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Max to GridFunctions.
Definition: Operations.hpp:70
auto operator-(Lhs &&lhs)
Applies Operation::Negate to GridFunctions.
Definition: Operations.hpp:21
Definition: Basic.hpp:188
Functor that represents A-B.
Definition: Arithmetic.hpp:208
Functor that represents f*A.
Definition: Arithmetic.hpp:147
Functor representing a constant value.
Definition: Basic.hpp:119
Operation that represents max(A,B)
Definition: MaxMin.hpp:8
auto one_norm(Vec &&vec)
Applies a one_norm() functor to a vector-valued GridFunction.
Definition: Operations.hpp:192
auto sum(Vec &&vec)
Applies a sum() functor to a vector-valued GridFunction.
Definition: Operations.hpp:176
auto operator-(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Minus to GridFunctions.
Definition: Operations.hpp:37
Definition: AdaptBase.hpp:6
Definition: FieldMatVec.hpp:85
auto pow(T &&value, double p)
Applies Operation::Power to GridFunction.
Definition: Operations.hpp:133
Operation that represents max(|A|,|B|)
Definition: MaxMin.hpp:32
Functor that represents A*B.
Definition: Arithmetic.hpp:100
Functor that represents A+B.
Definition: Arithmetic.hpp:19
auto distance(Lhs &&lhs, Rhs &&rhs)
Applies a distance-functor to two vector-valued GridFunctions.
Definition: Operations.hpp:247
auto trans(Mat &&mat)
Applies Operation::Trans to a matrix-valued GridFunction.
Definition: Operations.hpp:224
auto operator+(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Plus to GridFunctions.
Definition: Operations.hpp:29
auto abs_max(Lhs &&lhs, Rhs &&rhs)
Applies Operation::AbsMax to GridFunctions.
Definition: Operations.hpp:86
auto sqr(T &&value)
Applies Operation::Sqr to GridFunction.
Definition: Operations.hpp:117
auto two_norm(Vec &&vec)
Applies Operation::TwoNorm to a vector-valued GridFunction.
Definition: Operations.hpp:200
Functor that represents A/B.
Definition: Arithmetic.hpp:187
auto pow(T &&value)
Applies Operation::Pow.
Definition: Operations.hpp:125
(Binary-)Functor representing the euclidean dot-product
Definition: FieldMatVec.hpp:18
auto p_norm(Vec &&vec)
Applies a p_norm() functor to a vector-valued GridFunction.
Definition: Operations.hpp:208
auto abs_min(Lhs &&lhs, Rhs &&rhs)
Applies Operation::AbsMin to GridFunctions.
Definition: Operations.hpp:94
(Unary-)Functor representing the euclidean 2-norm
Definition: FieldMatVec.hpp:68
Functor that represents A-B.
Definition: Arithmetic.hpp:61
Operation that represents min(|A|,|B|)
Definition: MaxMin.hpp:45
auto unary_dot(Vec &&vec)
Applies Operation::UnaryDot to a vector-valued GridFunction.
Definition: Operations.hpp:184
Functor representing a constant value.
Definition: Basic.hpp:87
auto clamp(V &&v, T const &lo, T const &hi)
Applies Operation::Clamp to GridFunction.
Definition: Operations.hpp:102
Functor that represents x^p,.
Definition: Arithmetic.hpp:321
(Unary-)Functor representing the euclidean dot-product
Definition: FieldMatVec.hpp:45
auto operator/(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Divides to GridFunctions.
Definition: Operations.hpp:58
auto constant(T const &value)
Return a reference-wrapper as GridFunction.
Definition: Operations.hpp:156
auto outer(Lhs &&lhs, Rhs &&rhs)
Applies an outer() functor to two vector-valued GridFunctions.
Definition: Operations.hpp:257
Definition: CMath.hpp:110
auto reference(T &value)
Return a reference-wrapper as GridFunction.
Definition: Operations.hpp:163