5#ifndef _TARCH_LA_VECTOR_H_
6#define _TARCH_LA_VECTOR_H_
7#include "tarch/TarchDefinitions.h"
11#include <Kokkos_Core.hpp>
15template <
int size,
class T>
class Vector;
30 KOKKOS_FUNCTION Vector() {}
36 for (
int i = 0; i < size; i++) {
44 KOKKOS_FUNCTION
Vector(
const T& t0,
const T& t1) {
45 static_assert(size == 2,
"ERROR Vector(t0,t1) only valid for 2D vectors!");
54 KOKKOS_FUNCTION
Vector(
const T& t0,
const T& t1,
const T& t2) {
55 static_assert(size == 3,
"ERROR Vector(t0,t1,t2) only valid for 3D vectors!");
63 KOKKOS_FUNCTION
Vector(
const Vector<size, T>& v) {
64 for (
int i = 0; i < size; i++) {
71 KOKKOS_FUNCTION
void assign(
const T& t) {
72 for (
int i = 0; i < size; i++) {
79 KOKKOS_FUNCTION Vector<size, T>&
operator=(
const Vector<size, T>& v) {
80 for (
int i = 0; i < size; i++) {
90#if (TARCH_DEBUG == TARCH_YES)
91 if (i < 0 || i > size - 1) {
92 Kokkos::abort(
"ERROR Vector T& operator[]: i out of range!\n");
102#if (TARCH_DEBUG == TARCH_YES)
103 if (i < 0 || i > size - 1) {
104 Kokkos::abort(
"ERROR Vector const T& operator[]: i out of range!\n");
112 KOKKOS_FUNCTION Vector<size, T>&
operator+=(
const Vector<size, T>& v) {
113 for (
int i = 0; i < size; i++) {
122 KOKKOS_FUNCTION Vector<size, T>&
operator-=(
const Vector<size, T>& v) {
123 for (
int i = 0; i < size; i++) {
130 template <
class convert_to_T>
explicit KOKKOS_FUNCTION
operator Vector<size, convert_to_T>()
const {
131 Vector<size, convert_to_T> ans;
132 for (
unsigned int i = 0; i < size; i++) {
133 ans[i] =
static_cast<convert_to_T
>(_entries[i]);
139#include "VectorOperations.cpph"
KOKKOS_FUNCTION Vector(const T &t0, const T &t1, const T &t2)
special constructor for 3D; left empty for general purpose vector
Definition Vector.h:54
KOKKOS_FUNCTION T & operator[](int i)
operator overloading; access to vector entries; both () and [] are allowed
Definition Vector.h:89
KOKKOS_FUNCTION Vector< size, T > & operator+=(const Vector< size, T > &v)
operator overloading; add a vector to this existing one (this)
Definition Vector.h:112
KOKKOS_FUNCTION Vector(const Vector< size, T > &v)
constructor init. vector from vector
Definition Vector.h:63
KOKKOS_FUNCTION const T & operator[](int i) const
operator overloading; access to vector entries; both () and [] are allowed; !!! Attention: const
Definition Vector.h:101
KOKKOS_FUNCTION Vector(const T &t)
init. vector with a scalar value.
Definition Vector.h:35
KOKKOS_FUNCTION Vector< size, T > & operator-=(const Vector< size, T > &v)
operator overloading; subtracts a vector from the existing one (this)
Definition Vector.h:122
KOKKOS_FUNCTION Vector< size, T > & operator=(const Vector< size, T > &v)
operator overloading for vector assignment
Definition Vector.h:79
KOKKOS_FUNCTION Vector(const T &t0, const T &t1)
special constructor for 2D left empty for general purpose vector
Definition Vector.h:44
KOKKOS_FUNCTION void assign(const T &t)
assigns a value to all vector entries.
Definition Vector.h:71
Definition Configuration.h:11