NeoN
A framework for CFD software
Loading...
Searching...
No Matches
vectorFreeFunctions.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// SPDX-FileCopyrightText: 2025 NeoN authors
3#pragma once
4
6
7#include <type_traits>
8
9namespace NeoN
10{
11
12template<typename ValueType>
13class Vector;
14
15template<typename ValueType>
16void scalarMul(Vector<ValueType>& vect, const scalar value)
17 requires requires(ValueType a, scalar b) { a* b; };
18
19namespace detail
20{
21
22template<typename ValueType, typename BinaryOp>
24 Vector<ValueType>& vect1, const Vector<std::type_identity_t<ValueType>>& vect2, BinaryOp op
25);
26
27}
28
29template<typename ValueType>
30void add(Vector<ValueType>& vect, const std::type_identity_t<ValueType>& value);
31
32template<typename ValueType>
33void add(Vector<ValueType>& vect1, const Vector<std::type_identity_t<ValueType>>& vect2);
34
35template<typename ValueType>
36void sub(Vector<ValueType>& vect, const std::type_identity_t<ValueType>& value);
37
38template<typename ValueType>
39void sub(Vector<ValueType>& vect1, const Vector<std::type_identity_t<ValueType>>& vect2);
40
41template<typename ValueType>
42void mul(Vector<ValueType>& vect, const std::type_identity_t<ValueType>& value)
43 requires requires(ValueType a, ValueType b) { a* b; };
44
45template<typename ValueType>
46void mul(Vector<ValueType>& vect1, const Vector<std::type_identity_t<ValueType>>& vect2)
47 requires requires(ValueType a, ValueType b) { a* b; };
48
49} // namespace NeoN
A class to contain the data and executors for a field and define some basic operations.
Definition vector.hpp:28
auto deepCopyVisitor(localIdx ssize, const ValueType *srcPtr, ValueType *dstPtr)
A helper function to simplify the common pattern of copying between and to executor.
void fieldBinaryOp(Vector< ValueType > &vect1, const Vector< std::type_identity_t< ValueType > > &vect2, BinaryOp op)
Definition array.hpp:19
void sub(Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value)
void add(Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value)
void mul(Vector< ValueType > &vect, const std::type_identity_t< ValueType > &value)
void scalarMul(Vector< ValueType > &vect, const scalar value)
float scalar
Definition scalar.hpp:14