49#ifndef INTREPID_FIELDCONTAINER_HPP
50#define INTREPID_FIELDCONTAINER_HPP
52#include "Intrepid_ConfigDefs.hpp"
55#include "Teuchos_Array.hpp"
56#include "Teuchos_ArrayRCP.hpp"
57#include "Teuchos_ArrayView.hpp"
58#include "Shards_Array.hpp"
59#include "Teuchos_RCP.hpp"
60#include "Teuchos_BLAS.hpp"
61#include "Teuchos_oblackholestream.hpp"
62#include "Teuchos_Assert.hpp"
77 template<
class Scalar,
int ArrayTypeId=0>
87 Teuchos::ArrayRCP<Scalar>
data_;
89 typedef typename Teuchos::ArrayRCP<Scalar>::iterator data_ptr_t;
126 data_ptr_ = Teuchos::NullIteratorTraits<data_ptr_t>::getNull();
212 const Teuchos::ArrayView<Scalar>& data);
226 const Teuchos::ArrayRCP<Scalar>& data);
242 const bool deep_copy =
false,
243 const bool owns_mem =
false);
256 const bool deep_copy =
false,
257 const bool owns_mem =
false);
280 template<
class Vector>
366 const int valueEnum)
const;
378 const int valueEnum)
const;
392 const int valueEnum)
const;
408 const int valueEnum)
const;
426 const int valueEnum)
const;
439 template<
class Vector>
441 const int valueEnum)
const;
515 void resize(
const Teuchos::Array<int>& newDimensions);
566 const EFunctionSpace spaceType,
567 const EOperator operatorType,
586 Scalar
getValue(
const Teuchos::Array<int>& multiIndex)
const;
595 const Teuchos::Array<int>& multiIndex);
612 void setValues(
const Teuchos::ArrayView<Scalar>& dataArray);
634 Teuchos::ArrayRCP<const Scalar>
getData()
const {
772 template<
class Scalar,
int ArrayTypeId>
922#if defined(Intrepid_SHOW_DEPRECATED_WARNINGS)
924#warning "The Intrepid package is deprecated"
Definition file for utility class to provide multidimensional containers.
Contains definitions of custom data types in Intrepid.
FieldContainer()
Default constructor.
Implementation of a templated lexicographical container for a multi-indexed scalar quantity....
Teuchos::Array< int > dimensions_
void setValues(const Scalar *dataPtr, const int numData)
Fills an existing FieldContainer with Scalars referenced by dataPtr without changing rank and dimensi...
int size() const
Returns size of the FieldContainer defined as the product of its dimensions.
const Scalar & operator()(const int i0) const
Overloaded () operators for rank-1 containers. Data cannot be modified.
void dimensions(Vector &dimensions) const
void resize(const int dim0, const int dim1, const int dim2, const int dim3)
Resizes FieldContainer to a rank-4 container with specified dimensions, initialized by 0.
void resize(const Teuchos::Array< int > &newDimensions)
Resizes FieldContainer to arbitrary rank container, initialized by 0, with dimensions specified in th...
void resize(const int dim0, const int dim1, const int dim2)
Resizes FieldContainer to a rank-3 container with specified dimensions, initialized by 0.
Teuchos::ArrayRCP< Scalar > getData()
Exposes data of FieldContainer, data can be modified.
FieldContainer(const int dim0)
Creates a rank-1 FieldContainer with the specified dimension, initialized by 0.
void resize(const FieldContainer< Scalar, ArrayTypeId > &anotherContainer)
Resizes FieldContainer to have the same rank and dimensions as another FieldContainer,...
int getEnumeration(const int i0, const int i1, const int i2, const int i3, const int i4) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
void resize(const int dim0)
Resizes FieldContainer to a rank-1 container with the specified dimension, initialized by 0.
void getMultiIndex(int &i0, int &i1, int &i2, int &i3, int &i4, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a list, for rank-5 containers.
int getEnumeration(const int i0, const int i1, const int i2, const int i3) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
FieldContainer(const int dim0, const int dim1, const int dim2, const int dim3)
Creates a rank-4 FieldContainer with the specified dimensions, initialized by 0.
void resize(const int dim0, const int dim1)
Resizes FieldContainer to a rank-2 container with specified dimensions, initialized by 0.
void getMultiIndex(int &i0, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a list, for rank-1 containers.
void resize(const int numPoints, const int numFields, const EFunctionSpace spaceType, const EOperator operatorType, const int spaceDim)
Resizes FieldContainer to a container whose rank depends on the specified field and operator types an...
Teuchos::ArrayRCP< double > data_
FieldContainer(const int dim0, const int dim1, const int dim2)
Creates a rank-3 FieldContainer with the specified dimensions, initialized by 0.
void clear()
Clears FieldContainer to trivial container (one with rank = 0 and size = 0).
void getMultiIndex(int &i0, int &i1, int &i2, int &i3, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a list, for rank-4 containers.
void setValue(const Scalar dataValue, const Teuchos::Array< int > &multiIndex)
Assign value by its multi-index.
void getMultiIndex(Vector &multiIndex, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a vector, for containers of arbitrar...
FieldContainer(const shards::Array< Scalar, shards::NaturalOrder > &data, const bool deep_copy=false, const bool owns_mem=false)
Creates a FieldContainer either as a wrapper of the shards::Array<Scalar,shards::NaturalOrder> array ...
void resize(const int dim0, const int dim1, const int dim2, const int dim3, const int dim4)
Resizes FieldContainer to a rank-5 container with specified dimensions, initialized by 0.
int getEnumeration(const int i0) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
FieldContainer(const Teuchos::Array< int > &dimensions, const Teuchos::ArrayRCP< Scalar > &data)
Creates a FieldContainer of arbitrary rank, using dimensions specified in the dimensions array,...
int rank() const
Return rank of the FieldContainer = number of indices used to tag the multi-indexed value.
Teuchos::ArrayRCP< const Scalar > getData() const
Exposes data of FieldContainer, data cannot be modified.
FieldContainer & operator=(const FieldContainer &right)
Assignment operator *this = right.
int getEnumeration(const Teuchos::Array< int > &multiIndex) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
FieldContainer(const Teuchos::Array< int > &dimensions)
Creates a FieldContainer of arbitrary rank,, initialized by 0, using dimensions specified in an array...
void getMultiIndex(int &i0, int &i1, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a list, for rank-2 containers.
const Scalar & operator[](const int address) const
Overloaded [] operator. Returns value based on its enumeration. Data cannot be modified.
void setValues(const Teuchos::ArrayView< Scalar > &dataArray)
Fills an existing FieldContainer with Scalars stored in a Teuchos::Array without changing rank and di...
void getMultiIndex(int &i0, int &i1, int &i2, const int valueEnum) const
Returns the multi-index of a value, based on its enumeration, as a list, for rank-3 containers.
void initialize(const Scalar value=0)
Initializes a field container by assigning value to all its elements.
FieldContainer(const int dim0, const int dim1)
Creates a rank-2 FieldContainer with the specified dimensions, initialized by 0.
FieldContainer(const FieldContainer &right)
Copy constructor.
int dimension(const int whichDim) const
Returns the specified dimension.
int getEnumeration(const int i0, const int i1, const int i2) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
FieldContainer(const Teuchos::Array< int > &dimensions, const Teuchos::ArrayView< Scalar > &data)
Creates a FieldContainer of arbitrary rank, using dimensions specified in the dimensions array,...
FieldContainer()
Default constructor.
void setValue(const Scalar dataValue, const int order)
Assign value by its enumeration (order relative to the FieldContainer).
Scalar scalar_type
The template parameter of this class; the type of objects stored.
int getEnumeration(const int i0, const int i1) const
Returns enumeration of a value (its order relative to the container), based on its multi-index,...
FieldContainer(const int dim0, const int dim1, const int dim2, const int dim3, const int dim4)
Creates a rank-5 FieldContainer with the specified dimensions, initialized by 0.
Scalar getValue(const Teuchos::Array< int > &multiIndex) const
Retrieve value by its multi-index. To retrieve it by enumeration use the overloaded [].
FieldContainer(const Teuchos::Array< int > &dimensions, Scalar *data, const bool deep_copy=false, const bool owns_mem=false)
Creates a FieldContainer of arbitrary rank, using dimensions specified in the dimensions array,...
~FieldContainer()
Default destructor.