NeoN
WIP Prototype of a modern OpenFOAM core
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
NeoN::Vector< ValueType > Class Template Reference

A class to contain the data and executors for a field and define some basic operations. More...

#include <vector.hpp>

Public Types

using VectorValueType = ValueType
 

Public Member Functions

 Vector (const Executor &exec, size_t size)
 Create an uninitialized Vector with a given size on an executor.
 
 Vector (const Executor &exec, const ValueType *in, size_t size, Executor hostExec=SerialExecutor())
 Create a Vector with a given size from existing memory on an executor.
 
 Vector (const Executor &exec, size_t size, ValueType value)
 Create a Vector with a given size on an executor and uniform value.
 
 Vector (const Executor &exec, std::vector< ValueType > in)
 Create a Vector from a given vector of values on an executor.
 
 Vector (const Executor &exec, const Vector< ValueType > &in)
 Create a Vector as a copy of a Vector on a specified executor.
 
 Vector (const Vector< ValueType > &rhs)
 Copy constructor, creates a new field with the same size and data as the parsed field.
 
 Vector (Vector< ValueType > &&rhs) noexcept
 Move constructor, moves the data from the parsed field to the new field.
 
 ~Vector ()
 Destroy the Vector object.
 
template<typename func >
void apply (func f)
 applies a functor, transformation, to the field
 
Vector< ValueType > copyToExecutor (Executor dstExec) const
 Copies the data to a new field on a specific executor.
 
Vector< ValueType > copyToHost () const
 Returns a copy of the field back to the host.
 
void copyToHost (Vector< ValueType > &result)
 Copies the data (from anywhere) to a parsed host field.
 
ValueType & operator[] (const size_t i)=delete
 
const ValueType & operator[] (const size_t i) const =delete
 
void operator= (const ValueType &rhs)
 Assignment operator, Sets the field values to that of the passed value.
 
void operator= (const Vector< ValueType > &rhs)
 Assignment operator, Sets the field values to that of the parsed field.
 
Vector< ValueType > & operator+= (const Vector< ValueType > &rhs)
 Arithmetic add operator, addition of a second field.
 
Vector< ValueType > & operator-= (const Vector< ValueType > &rhs)
 Arithmetic subtraction operator, subtraction by a second field.
 
Vector< ValueType > operator* (const Vector< scalar > &rhs)
 Arithmetic multiply operator, multiply by a second field.
 
Vector< ValueType > operator* (const scalar rhs)
 Arithmetic multiply operator, multiplies every cell in the field by a scalar.
 
Vector< ValueType > & operator*= (const Vector< scalar > &rhs)
 Arithmetic multiply operator, multiplies this field by another field element-wise.
 
Vector< ValueType > & operator*= (const scalar rhs)
 Arithmetic multiply-assignment operator, multiplies every cell in the field by a scalar and updates the field in place.
 
void resize (const size_t size)
 Resizes the field to a new size.
 
ValueType * data ()
 Direct access to the underlying field data.
 
const ValueType * data () const
 Direct access to the underlying field data.
 
const Executorexec () const
 Gets the executor associated with the field.
 
size_t size () const
 Gets the size of the field.
 
label ssize () const
 Gets the size of the field.
 
bool empty () const
 Checks if the field is empty.
 
View< ValueType > view () &&=delete
 
View< const ValueType > view () const &&=delete
 
View< ValueType > view () &
 Gets the field as a view.
 
View< const ValueType > view () const &
 Gets the field as a view.
 
View< ValueType > view (std::pair< size_t, size_t > range) &&=delete
 
View< const ValueType > view (std::pair< size_t, size_t > range) const &&=delete
 
View< ValueType > view (std::pair< size_t, size_t > range) &
 Gets a sub view of the field as a view.
 
View< const ValueType > view (std::pair< size_t, size_t > range) const &
 Gets a sub view of the field as a view.
 
std::pair< size_t, size_trange () const
 Gets the range of the field.
 

Detailed Description

template<typename ValueType>
class NeoN::Vector< ValueType >

A class to contain the data and executors for a field and define some basic operations.

Definition at line 50 of file vector.hpp.

Member Typedef Documentation

◆ VectorValueType

template<typename ValueType >
using NeoN::Vector< ValueType >::VectorValueType = ValueType

Definition at line 55 of file vector.hpp.

Constructor & Destructor Documentation

◆ Vector() [1/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Executor exec,
size_t  size 
)
inline

Create an uninitialized Vector with a given size on an executor.

Parameters
execExecutor associated to the field
sizesize of the field

Definition at line 62 of file vector.hpp.

◆ Vector() [2/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Executor exec,
const ValueType *  in,
size_t  size,
Executor  hostExec = SerialExecutor() 
)
inline

Create a Vector with a given size from existing memory on an executor.

Parameters
execExecutor associated to the field
inPointer to existing data
sizesize of the field
hostExecExecutor where the original data is located

Definition at line 80 of file vector.hpp.

◆ Vector() [3/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Executor exec,
size_t  size,
ValueType  value 
)
inline

Create a Vector with a given size on an executor and uniform value.

Parameters
execExecutor associated to the field
sizesize of the field
valuethe default value

Definition at line 101 of file vector.hpp.

◆ Vector() [4/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Executor exec,
std::vector< ValueType >  in 
)
inline

Create a Vector from a given vector of values on an executor.

Parameters
execExecutor associated to the field
ina vector of elements to copy over

Definition at line 117 of file vector.hpp.

◆ Vector() [5/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Executor exec,
const Vector< ValueType > &  in 
)
inline

Create a Vector as a copy of a Vector on a specified executor.

Parameters
execExecutor associated to the field
ina Vector of elements to copy over

Definition at line 124 of file vector.hpp.

◆ Vector() [6/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( const Vector< ValueType > &  rhs)
inline

Copy constructor, creates a new field with the same size and data as the parsed field.

Parameters
rhsThe field to copy from.

Definition at line 132 of file vector.hpp.

◆ Vector() [7/7]

template<typename ValueType >
NeoN::Vector< ValueType >::Vector ( Vector< ValueType > &&  rhs)
inlinenoexcept

Move constructor, moves the data from the parsed field to the new field.

Parameters
rhsThe field to move from.

Definition at line 138 of file vector.hpp.

◆ ~Vector()

template<typename ValueType >
NeoN::Vector< ValueType >::~Vector ( )
inline

Destroy the Vector object.

Definition at line 147 of file vector.hpp.

Member Function Documentation

◆ apply()

template<typename ValueType >
template<typename func >
void NeoN::Vector< ValueType >::apply ( func  f)
inline

applies a functor, transformation, to the field

Parameters
fThe functor to map over the field.
Note
Ideally the f should be a KOKKOS_LAMBA

Definition at line 159 of file vector.hpp.

◆ copyToExecutor()

template<typename ValueType >
Vector< ValueType > NeoN::Vector< ValueType >::copyToExecutor ( Executor  dstExec) const
inline

Copies the data to a new field on a specific executor.

Parameters
dstExecThe executor on which the data should be copied.
Returns
A copy of the field on the host.

Definition at line 169 of file vector.hpp.

◆ copyToHost() [1/2]

template<typename ValueType >
Vector< ValueType > NeoN::Vector< ValueType >::copyToHost ( ) const
inline

Returns a copy of the field back to the host.

Returns
A copy of the field on the host.

Definition at line 183 of file vector.hpp.

◆ copyToHost() [2/2]

template<typename ValueType >
void NeoN::Vector< ValueType >::copyToHost ( Vector< ValueType > &  result)
inline

Copies the data (from anywhere) to a parsed host field.

Parameters
resultThe field into which the data must be copied. Must be sized.
Warning
exits if the size of the result field is not the same as the source field.

Definition at line 193 of file vector.hpp.

◆ data() [1/2]

template<typename ValueType >
ValueType * NeoN::Vector< ValueType >::data ( )
inline

Direct access to the underlying field data.

Returns
Pointer to the first cell data in the field.

Definition at line 336 of file vector.hpp.

◆ data() [2/2]

template<typename ValueType >
const ValueType * NeoN::Vector< ValueType >::data ( ) const
inline

Direct access to the underlying field data.

Returns
Pointer to the first cell data in the field.

Definition at line 342 of file vector.hpp.

◆ empty()

template<typename ValueType >
bool NeoN::Vector< ValueType >::empty ( ) const
inline

Checks if the field is empty.

Returns
True if the field is empty, false otherwise.

Definition at line 366 of file vector.hpp.

◆ exec()

template<typename ValueType >
const Executor & NeoN::Vector< ValueType >::exec ( ) const
inline

Gets the executor associated with the field.

Returns
Reference to the executor.

Definition at line 348 of file vector.hpp.

◆ operator*() [1/2]

template<typename ValueType >
Vector< ValueType > NeoN::Vector< ValueType >::operator* ( const scalar  rhs)
inline

Arithmetic multiply operator, multiplies every cell in the field by a scalar.

Parameters
rhsThe scalar to multiply with the field.
Returns
The result of the multiplication.

Definition at line 273 of file vector.hpp.

◆ operator*() [2/2]

template<typename ValueType >
Vector< ValueType > NeoN::Vector< ValueType >::operator* ( const Vector< scalar > &  rhs)
inline

Arithmetic multiply operator, multiply by a second field.

Parameters
rhsThe field to subtract from this field.
Returns
The result of the multiply.

Definition at line 258 of file vector.hpp.

◆ operator*=() [1/2]

template<typename ValueType >
Vector< ValueType > & NeoN::Vector< ValueType >::operator*= ( const scalar  rhs)
inline

Arithmetic multiply-assignment operator, multiplies every cell in the field by a scalar and updates the field in place.

Parameters
rhsThe scalar to multiply with the field.

Definition at line 299 of file vector.hpp.

◆ operator*=() [2/2]

template<typename ValueType >
Vector< ValueType > & NeoN::Vector< ValueType >::operator*= ( const Vector< scalar > &  rhs)
inline

Arithmetic multiply operator, multiplies this field by another field element-wise.

Parameters
rhsThe field to multiply with this field.
Returns
The result of the element-wise multiplication.

Definition at line 286 of file vector.hpp.

◆ operator+=()

template<typename ValueType >
Vector< ValueType > & NeoN::Vector< ValueType >::operator+= ( const Vector< ValueType > &  rhs)
inline

Arithmetic add operator, addition of a second field.

Parameters
rhsThe field to add with this field.
Returns
The result of the addition.

Definition at line 234 of file vector.hpp.

◆ operator-=()

template<typename ValueType >
Vector< ValueType > & NeoN::Vector< ValueType >::operator-= ( const Vector< ValueType > &  rhs)
inline

Arithmetic subtraction operator, subtraction by a second field.

Parameters
rhsThe field to subtract from this field.
Returns
The result of the subtraction.

Definition at line 246 of file vector.hpp.

◆ operator=() [1/2]

template<typename ValueType >
void NeoN::Vector< ValueType >::operator= ( const ValueType &  rhs)
inline

Assignment operator, Sets the field values to that of the passed value.

Parameters
rhsThe value to set the field to.

Definition at line 211 of file vector.hpp.

◆ operator=() [2/2]

template<typename ValueType >
void NeoN::Vector< ValueType >::operator= ( const Vector< ValueType > &  rhs)
inline

Assignment operator, Sets the field values to that of the parsed field.

Parameters
rhsThe field to copy from.
Warning
This field will be sized to the size of the parsed field.

Definition at line 219 of file vector.hpp.

◆ operator[]() [1/2]

template<typename ValueType >
const ValueType & NeoN::Vector< ValueType >::operator[] ( const size_t  i) const
delete

◆ operator[]() [2/2]

template<typename ValueType >
ValueType & NeoN::Vector< ValueType >::operator[] ( const size_t  i)
delete

◆ range()

template<typename ValueType >
std::pair< size_t, size_t > NeoN::Vector< ValueType >::range ( ) const
inline

Gets the range of the field.

Returns
The range of the field {0, size()}.

Definition at line 417 of file vector.hpp.

◆ resize()

template<typename ValueType >
void NeoN::Vector< ValueType >::resize ( const size_t  size)
inline

Resizes the field to a new size.

Parameters
sizeThe new size to set the field to.

Definition at line 310 of file vector.hpp.

◆ size()

template<typename ValueType >
size_t NeoN::Vector< ValueType >::size ( ) const
inline

Gets the size of the field.

Returns
The size of the field.

Definition at line 354 of file vector.hpp.

◆ ssize()

template<typename ValueType >
label NeoN::Vector< ValueType >::ssize ( ) const
inline

Gets the size of the field.

Returns
The size of the field.

Definition at line 360 of file vector.hpp.

◆ view() [1/8]

template<typename ValueType >
View< ValueType > NeoN::Vector< ValueType >::view ( ) &
inline

Gets the field as a view.

Returns
View of the field.

Definition at line 378 of file vector.hpp.

◆ view() [2/8]

template<typename ValueType >
View< ValueType > NeoN::Vector< ValueType >::view ( ) &&
delete

◆ view() [3/8]

template<typename ValueType >
View< const ValueType > NeoN::Vector< ValueType >::view ( ) const &
inline

Gets the field as a view.

Returns
View of the field.

Definition at line 384 of file vector.hpp.

◆ view() [4/8]

template<typename ValueType >
View< const ValueType > NeoN::Vector< ValueType >::view ( ) const &&
delete

◆ view() [5/8]

template<typename ValueType >
View< ValueType > NeoN::Vector< ValueType >::view ( std::pair< size_t, size_t range) &
inline

Gets a sub view of the field as a view.

Returns
View of the field.

Definition at line 399 of file vector.hpp.

◆ view() [6/8]

template<typename ValueType >
View< ValueType > NeoN::Vector< ValueType >::view ( std::pair< size_t, size_t range) &&
delete

◆ view() [7/8]

template<typename ValueType >
View< const ValueType > NeoN::Vector< ValueType >::view ( std::pair< size_t, size_t range) const &
inline

Gets a sub view of the field as a view.

Returns
View of the field.

Definition at line 408 of file vector.hpp.

◆ view() [8/8]

template<typename ValueType >
View< const ValueType > NeoN::Vector< ValueType >::view ( std::pair< size_t, size_t range) const &&
delete

The documentation for this class was generated from the following files: