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