1#ifndef included_AMP_VectorBuider
2#define included_AMP_VectorBuider
4#include "AMP/AMP_TPLs.h"
5#include "AMP/discretization/DOF_Manager.h"
6#include "AMP/utils/Backend.h"
7#include "AMP/utils/Memory.h"
8#include "AMP/utils/Utilities.h"
9#include "AMP/vectors/Vector.h"
10#include "AMP/vectors/data/VectorDataDefault.h"
11#include "AMP/vectors/operations/default/VectorOperationsDefault.h"
18typedef struct _p_Vec *
Vec;
20#if defined( AMP_USE_TRILINOS )
26 #if defined( AMP_USE_TRILINOS_THYRA )
39class EpetraVectorEngineParameters;
50template<
typename TYPE = double,
51 typename OPS = VectorOperationsDefault<TYPE>,
52 typename DATA = VectorDataDefault<TYPE>>
54createVector( std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
55 std::shared_ptr<AMP::LinearAlgebra::Variable> variable,
61template<
typename TYPE =
double,
typename DATA = VectorDataDefault<TYPE>>
63createVector( std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
64 std::shared_ptr<AMP::LinearAlgebra::Variable> variable,
77template<
typename TYPE =
double>
79createVector( std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
80 std::shared_ptr<AMP::LinearAlgebra::Variable> variable,
94template<
typename TYPE =
double>
96createVector( std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
97 std::shared_ptr<AMP::LinearAlgebra::Variable> variable,
108template<
typename TYPE =
double>
131template<
typename TYPE =
double>
161 std::shared_ptr<Variable> var =
nullptr );
171 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
172 std::shared_ptr<VectorData> p =
nullptr );
182 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
183 std::shared_ptr<VectorData> p =
nullptr );
185#if defined( AMP_USE_TRILINOS ) && defined( AMP_USE_TRILINOS_THYRA )
198 std::shared_ptr<Variable> var =
nullptr );
206template<
typename TYPE,
217template<
typename TYPE,
229template<
typename TYPE,
243template<
typename TYPE,
247 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
248 std::shared_ptr<CommunicationList> commlist );
256template<
typename T,
typename FUN = FunctionTable<T>,
typename Allocator = AMP::HostAllocator<
void>>
265template<
typename T,
typename FUN = FunctionTable<T>,
typename Allocator = AMP::HostAllocator<
void>>
276template<
typename T,
typename FUN = FunctionTable<T>,
typename Allocator = AMP::HostAllocator<
void>>
280 std::shared_ptr<Variable> var );
287 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
Provides C++ wrapper around MPI routines.
Simple class to store the array dimensions.
A class used to hold vector data.
A default set of vector operations.
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< Vector > createTpetraVector(std::shared_ptr< CommunicationList > commList, std::shared_ptr< AMP::Discretization::DOFManager > DOFs, std::shared_ptr< VectorData > p=nullptr)
Create a Tpetra vector.
std::shared_ptr< Vector > createEpetraVector(std::shared_ptr< CommunicationList > commList, std::shared_ptr< AMP::Discretization::DOFManager > DOFs, std::shared_ptr< VectorData > p=nullptr)
Create an epetra vector.
Vector::shared_ptr createArrayVector(const ArraySize &localSize, const std::string &var)
Create a ArrayVector.
Vector::shared_ptr createVectorAdaptor(const std::string &name, std::shared_ptr< AMP::Discretization::DOFManager > DOFs, T *data)
Create a view to raw vector data.
AMP::LinearAlgebra::Vector::shared_ptr createVector(std::shared_ptr< AMP::Discretization::DOFManager > DOFs, std::shared_ptr< AMP::LinearAlgebra::Variable > variable, bool split=true)
This function will create a vector from an arbitrary DOFManager.
Vector::shared_ptr createSimpleVector(size_t localSize, const std::string &var)
Create a simple AMP vector.
Backend
Enum to store the backend used for gpu acceleration.
MemoryType
Enum to store pointer type.