SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
DataVector Class Reference

Stores a collection of function values. More...

#include <DataVector.hpp>

Public Types

using BaseType = VectorImpl<double, DataVector>
Public Types inherited from VectorImpl< double, DataVector >
using value_type
using size_type
using difference_type
using BaseType
using ElementType
using TransposeType
using CompositeType
using iterator
using const_iterator

Public Member Functions

 DataVector (const DataVector &)=default
 DataVector (DataVector &&)=default
DataVectoroperator= (const DataVector &)=default
DataVectoroperator= (DataVector &&)=default
VectorImploperator= (const double &rhs)
 VectorImpl (size_t set_size)
 Create with the given size. In debug mode, the vector is initialized to 'NaN' by default. If not initialized to 'NaN', the memory is allocated but not initialized.
 VectorImpl (size_t set_size, double value)
 Create with the given size and value.
 VectorImpl (const Container &container)
 Create from a copy of the given container.
 VectorImpl (double *start, size_t set_size)
 Create a non-owning VectorImpl that points to start
 VectorImpl (std::initializer_list< U > list)
 Create from an initializer list of T.
 VectorImpl ()=default
 Empty VectorImpl.
Public Member Functions inherited from VectorImpl< double, DataVector >
 VectorImpl (size_t set_size)
 Create with the given size. In debug mode, the vector is initialized to 'NaN' by default. If not initialized to 'NaN', the memory is allocated but not initialized.
 VectorImpl (size_t set_size, double value)
 Create with the given size and value.
 VectorImpl (const Container &container)
 Create from a copy of the given container.
 VectorImpl (double *start, size_t set_size)
 Create a non-owning VectorImpl that points to start
 VectorImpl (std::initializer_list< U > list)
 Create from an initializer list of T.
 VectorImpl ()=default
 Empty VectorImpl.
VectorImploperator= (const double &rhs)
decltype(auto) operator[] (const size_t index)
decltype(auto) operator[] (const size_t index) const
void destructive_resize (const size_t new_size)
 A common operation for checking the size and resizing a memory buffer if needed to ensure that it has the desired size. This operation is not permitted on a non-owning vector.
bool is_owning () const
 Returns true if the class owns the data.
void clear ()
 Put the class in the default-constructed state.
void pup (PUP::er &p)
 Serialization for Charm++.
const BaseType & operator* () const
 Upcast to BaseType
BaseType & operator* ()
 Upcast to BaseType
void set_data_ref (gsl::not_null< DataVector * > rhs)
 Set the VectorImpl to be a reference to another VectorImpl object.
void set_data_ref (double *const start, const size_t set_size)
 Set the VectorImpl to be a reference to another VectorImpl object.

Additional Inherited Members

Static Public Attributes inherited from VectorImpl< double, DataVector >
static constexpr bool transpose_flag
static constexpr size_t static_size
Protected Member Functions inherited from VectorImpl< double, DataVector >
void reset_pointer_vector (const size_t set_size)
std::unique_ptr< value_type[]> heap_alloc_if_necessary (const size_t set_size)
Protected Attributes inherited from VectorImpl< double, DataVector >
std::unique_ptr< value_type[]> owned_data_
std::array< double, default_vector_impl_static_sizestatic_owned_data_
bool owning_

Detailed Description

Stores a collection of function values.

Details

Use DataVector to represent function values on the computational domain. Note that interpreting the data also requires knowledge of the points that these function values correspond to.

A DataVector holds an array of contiguous data. The DataVector can be owning, meaning the array is deleted when the DataVector goes out of scope, or non-owning, meaning it just has a pointer to an array.

Refer to the Data Structures documentation for a list of other available types. In particular, to represent a generic vector that supports common vector and matrix operations and whose meaning may not be of function values at points, use any of the Blaze vector types instead.

DataVectors support a variety of mathematical operations that are applicable to nodal coefficients. In addition to common arithmetic operations such as elementwise addition, subtraction, multiplication and division, the elementwise operations on blaze vectors of doubles are supported. See [blaze-wiki/Vector_Operations] (https://bitbucket.org/blaze-lib/blaze/wiki/Vector%20Operations).

In addition, the Heaviside step function step_function is supported for DataVectors.

Member Function Documentation

◆ VectorImpl() [1/3]

VectorImpl< double, DataVector, default_vector_impl_static_size >::VectorImpl ( const Container & container)
inlineexplicit

Create from a copy of the given container.

Parameters
containerA container with a value_type that is the same as T. Currently restricted to std::vector<T> and std::array<T>.

◆ VectorImpl() [2/3]

VectorImpl< double, DataVector, default_vector_impl_static_size >::VectorImpl ( size_t set_size)
inlineexplicit

Create with the given size. In debug mode, the vector is initialized to 'NaN' by default. If not initialized to 'NaN', the memory is allocated but not initialized.

  • set_size number of values

◆ VectorImpl() [3/3]

VectorImpl< double, DataVector, default_vector_impl_static_size >::VectorImpl ( size_t set_size,
double value )
inline

Create with the given size and value.

  • set_size number of values
  • value the value to initialize each element

The documentation for this class was generated from the following file:
  • src/DataStructures/DataVector.hpp