Discontinuous Galerkin Library
#include "dg/algorithm.h"
|
Vector Tag base class, indicates the basic Vector/container concept. More...
Vector Tag base class, indicates the basic Vector/container concept.
The vector tag has two functions. First, it describes how the data in a Vector type is layed out in memory. We distinguish between a simple, contiguous chunk of data in a shared memory system (dg::SharedVectorTag), a dataset that is part of a larger dataset on a distributed memory system (dg::MPIVectorTag), and a dataset that consists of a number of subsets (dg::RecursiveVectorTag). Both the MPIVectorTag and the RecursiveVectorTag allow recursion, that is for example a RecursiveVector can consist itself of many shared vectors or of many RecursiveVector again. The innermost type must always be a shared vector however. The second function of the Vector tag is to describe how the data in the vector has to be accessed.For example how do we get the pointer to the first element, the size, or how to access the MPI communicator? This is described in Derived Tags from the fundamental Tags, e.g. the ThrustVectorTag
.
size
and a swap
member function dg::TensorTraits<Vector>
has member typedefs value_type
, execution_policy
, tensor_category