3 #include <amdis/Operations.hpp> 4 #include <amdis/gridfunctions/FunctorGridFunction.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>)>
52 template <
class Lhs,
class Value,
53 REQUIRES(Concepts::ConstantToGridFunction<Value>)>
54 auto divideAtQP(Lhs&& lhs, Value value)
59 template <
class Lhs,
class Rhs,
61 auto divideAtQP(Lhs&& lhs, Rhs&& rhs)
68 template <
class Lhs,
class Rhs,
69 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
72 return Impl::divideAtQP(FWD(lhs), FWD(rhs));
77 template <
class Lhs,
class Rhs,
78 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
79 auto max(Lhs&& lhs, Rhs&& rhs)
85 template <
class Lhs,
class Rhs,
86 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
87 auto min(Lhs&& lhs, Rhs&& rhs)
93 template <
class Lhs,
class Rhs,
94 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
101 template <
class Lhs,
class Rhs,
102 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
109 template <
class V,
class T,
110 REQUIRES(Concepts::AnyGridFunction<V>)>
111 auto clamp(V&& v, T
const& lo, T
const& hi)
117 REQUIRES(Concepts::AnyGridFunction<T>)>
120 return invokeAtQP([](
auto const& v) {
using std::abs;
return abs(v); }, FWD(value));
125 REQUIRES(Concepts::AnyGridFunction<T>)>
128 return invokeAtQP(Operation::Sqr{}, FWD(value));
132 template <
int p,
class T,
133 REQUIRES(Concepts::AnyGridFunction<T>)>
136 return invokeAtQP(Operation::Pow<p>{}, FWD(value));
141 REQUIRES(Concepts::AnyGridFunction<T>)>
142 auto pow(T&& value,
int p)
148 template <std::size_t I,
class T,
149 REQUIRES(Concepts::AnyGridFunction<T>)>
157 REQUIRES(Concepts::AnyGridFunction<T>)>
158 auto get(T&& value, std::size_t i)
170 REQUIRES(Concepts::AnyGridFunction<Vec>)>
173 return invokeAtQP([](
auto const& v) {
return sum(v); }, FWD(vec));
178 REQUIRES(Concepts::AnyGridFunction<Vec>)>
186 REQUIRES(Concepts::AnyGridFunction<Vec>)>
189 return invokeAtQP([](
auto const& v) {
return one_norm(v); }, FWD(vec));
194 REQUIRES(Concepts::AnyGridFunction<Vec>)>
201 template <
int p,
class Vec,
202 REQUIRES(Concepts::AnyGridFunction<Vec>)>
205 return invokeAtQP([](
auto const& v) {
return p_norm<p>(v); }, FWD(vec));
210 REQUIRES(Concepts::AnyGridFunction<Vec>)>
213 return invokeAtQP([](
auto const& v) {
return infty_norm(v); }, FWD(vec));
218 REQUIRES(Concepts::AnyGridFunction<Mat>)>
231 template <
class Lhs,
class Rhs,
232 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
233 auto dot(Lhs&& lhs, Rhs&& rhs)
240 template <
class Lhs,
class Rhs,
241 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
244 using namespace Operation;
245 return invokeAtQP(compose(TwoNorm{}, Minus{}),
250 template <
class Lhs,
class Rhs,
251 REQUIRES(Concepts::AnyGridFunction<Lhs,Rhs>)>
254 return invokeAtQP([](
auto const& v,
auto const& w) {
return outer(v,w); },
auto operator*(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Multiplies to GridFunctions.
Definition: OperationsGridFunction.hpp:45
auto infty_norm(Vec &&vec)
Applies a infty_norm() functor to a vector-valued GridFunction.
Definition: OperationsGridFunction.hpp:211
auto min(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Min to GridFunctions.
Definition: OperationsGridFunction.hpp:87
Operation that represents min(A,B)
Definition: MaxMin.hpp:20
Definition: Basic.hpp:170
auto dot(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Dot to two vector-valued GridFunctions.
Definition: OperationsGridFunction.hpp:233
auto max(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Max to GridFunctions.
Definition: OperationsGridFunction.hpp:79
auto operator-(Lhs &&lhs)
Applies Operation::Negate to GridFunctions.
Definition: OperationsGridFunction.hpp:21
Definition: Basic.hpp:156
Functor that represents A-B.
Definition: Arithmetic.hpp:167
typename remove_cvref< T >::type remove_cvref_t
Helper alias template for remove_cvref.
Definition: TypeTraits.hpp:24
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: OperationsGridFunction.hpp:187
auto sum(Vec &&vec)
Applies a sum() functor to a vector-valued GridFunction.
Definition: OperationsGridFunction.hpp:171
auto operator-(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Minus to GridFunctions.
Definition: OperationsGridFunction.hpp:37
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Definition: FieldMatVec.hpp:85
auto pow(T &&value, int p)
Applies Operation::Pow_ to GridFunction.
Definition: OperationsGridFunction.hpp:142
Functor that represents x^p,.
Definition: Arithmetic.hpp:280
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: OperationsGridFunction.hpp:242
auto trans(Mat &&mat)
Applies Operation::Trans to a matrix-valued GridFunction.
Definition: OperationsGridFunction.hpp:219
auto operator+(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Plus to GridFunctions.
Definition: OperationsGridFunction.hpp:29
auto abs_max(Lhs &&lhs, Rhs &&rhs)
Applies Operation::AbsMax to GridFunctions.
Definition: OperationsGridFunction.hpp:95
auto sqr(T &&value)
Applies Operation::Sqr to GridFunction.
Definition: OperationsGridFunction.hpp:126
auto two_norm(Vec &&vec)
Applies Operation::TwoNorm to a vector-valued GridFunction.
Definition: OperationsGridFunction.hpp:195
Functor that represents A/B.
Definition: Arithmetic.hpp:146
auto pow(T &&value)
Applies Operation::Pow.
Definition: OperationsGridFunction.hpp:134
(Binary-)Functor representing the euclidean dot-product
Definition: FieldMatVec.hpp:18
constexpr bool ConstantToGridFunction
Concepts that is true for all ''simple'' types that can be converted automatically to a GridFunction...
Definition: ConstantGridFunction.hpp:165
auto p_norm(Vec &&vec)
Applies a p_norm() functor to a vector-valued GridFunction.
Definition: OperationsGridFunction.hpp:203
auto abs_min(Lhs &&lhs, Rhs &&rhs)
Applies Operation::AbsMin to GridFunctions.
Definition: OperationsGridFunction.hpp:103
(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: OperationsGridFunction.hpp:179
auto clamp(V &&v, T const &lo, T const &hi)
Applies Operation::Clamp to GridFunction.
Definition: OperationsGridFunction.hpp:111
(Unary-)Functor representing the euclidean dot-product
Definition: FieldMatVec.hpp:45
auto operator/(Lhs &&lhs, Rhs &&rhs)
Applies Operation::Divides to GridFunctions.
Definition: OperationsGridFunction.hpp:70
auto outer(Lhs &&lhs, Rhs &&rhs)
Applies an outer() functor to two vector-valued GridFunctions.
Definition: OperationsGridFunction.hpp:252
Definition: CMath.hpp:110