Discontinuous Galerkin Library
#include "dg/algorithm.h"
dg::AnyVectorTag Struct Reference

Vector Tag base class, indicates the basic Vector/container concept. More...

Inheritance diagram for dg::AnyVectorTag:
[legend]

Detailed Description

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.

Note
in any case we assume that the class has a default constructor, is copyable/assignable and has a size and a swap member function
dg::TensorTraits<Vector> has member typedefs value_type, execution_policy, tensor_category
any vector can serve as a diagonal matrix
See also
The dg dispatch system

The documentation for this struct was generated from the following file: