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);
255 FieldContainer(
const shards::Array<Scalar,shards::NaturalOrder>& data,
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;
459 void resize(
const int dim0);
467 void resize(
const int dim0,
477 void resize(
const int dim0,
489 void resize(
const int dim0,
503 void resize(
const int dim0,
515 void resize(
const Teuchos::Array<int>& newDimensions);
564 void resize(
const int numPoints,
566 const EFunctionSpace spaceType,
567 const EOperator operatorType,
586 Scalar
getValue(
const Teuchos::Array<int>& multiIndex)
const;
594 void setValue(
const Scalar dataValue,
595 const Teuchos::Array<int>& multiIndex);
603 void setValue(
const Scalar dataValue,
612 void setValues(
const Teuchos::ArrayView<Scalar>& dataArray);
634 Teuchos::ArrayRCP<const Scalar>
getData()
const {
747 const Scalar &
operator [] (
const int address)
const;
772 template<
class Scalar,
int ArrayTypeId>
773 std::ostream& operator << (std::ostream& os, const FieldContainer<Scalar, ArrayTypeId>& container);
778 template<
class FadType,
class Scalar>
779 struct Return_Type< Intrepid::FieldContainer<FadType>, Scalar>{
780 typedef FadType& return_type;
781 typedef FadType const_return_type;
784 template<
class FadType,
class Scalar>
785 struct Return_Type<const Intrepid::FieldContainer<FadType>, Scalar>{
786 typedef FadType& return_type;
787 typedef FadType const_return_type;
int size() const
Returns size of the FieldContainer defined as the product of its dimensions.
const Scalar & operator[](const int address) const
Overloaded [] operator. Returns value based on its enumeration. Data cannot be modified.
FieldContainer & operator=(const FieldContainer &right)
Assignment operator *this = right.
Scalar scalar_type
The template parameter of this class; the type of objects stored.
int dim3_
4th dimension of the array
Teuchos::Array< int > dimensions_
Array to store dimensions (dimensions) for the multi-indices. Admissible range (dimension) for the k-...
void clear()
Clears FieldContainer to trivial container (one with rank = 0 and size = 0)
int dim1_
2nd dimension of the array
int dimension(const int whichDim) const
Returns the specified dimension.
int dim2_
3rd dimension of the array
Teuchos::ArrayRCP< Scalar > data_
Array to store the multi-indexed quantity.
Contains definitions of custom data types in Intrepid.
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...
int rank() const
Return rank of the FieldContainer = number of indices used to tag the multi-indexed value...
int getEnumeration(const int i0) const
Returns enumeration of a value (its order relative to the container), based on its multi-index...
const Scalar & operator()(const int i0) const
Overloaded () operators for rank-1 containers. Data cannot be modified.
void setValue(const Scalar dataValue, const Teuchos::Array< int > &multiIndex)
Assign value by its multi-index.
void setValues(const Teuchos::ArrayView< Scalar > &dataArray)
Fills an existing FieldContainer with Scalars stored in a Teuchos::Array without changing rank and di...
~FieldContainer()
Default destructor.
Implementation of a templated lexicographical container for a multi-indexed scalar quantity...
void resize(const int dim0)
Resizes FieldContainer to a rank-1 container with the specified dimension, initialized by 0...
FieldContainer()
Default constructor.
void initialize(const Scalar value=0)
Initializes a field container by assigning value to all its elements.
Teuchos::ArrayRCP< const Scalar > getData() const
Exposes data of FieldContainer, data cannot be modified.
Teuchos::ArrayRCP< Scalar > getData()
Exposes data of FieldContainer, data can be modified.
int dim0_
1st dimension of the array
Definition file for utility class to provide multidimensional containers.
int dim4_
5th dimension of the array
Scalar getValue(const Teuchos::Array< int > &multiIndex) const
Retrieve value by its multi-index. To retrieve it by enumeration use the overloaded []...
void dimensions(Vector &dimensions) const
Returns array with the dimensions of the container.