Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Protected Attributes | Private Attributes | Friends | List of all members
AMP::LinearAlgebra::VectorData Class Referenceabstract

A class used to hold vector data. More...

#include <VectorData.h>

Inheritance diagram for AMP::LinearAlgebra::VectorData:
Inheritance graph
[legend]

Public Member Functions

template<class TYPE >
void addGhostValuesByGlobalID (size_t num, const size_t *indices, const TYPE *vals)
 Add shared values using global identifier.
 
virtual void addGhostValuesByGlobalID (size_t num, const size_t *indices, const void *vals, const typeID &id)=0
 Add shared values using global identifier.
 
template<class TYPE >
void addValuesByGlobalID (size_t num, const size_t *indices, const TYPE *vals)
 Add owned or shared values using global identifier.
 
template<class TYPE >
void addValuesByLocalID (size_t num, const size_t *indices, const TYPE *vals)
 Add values to vector entities by their local offset.
 
virtual void addValuesByLocalID (size_t num, const size_t *indices, const void *vals, const typeID &id)=0
 Add values to vector entities by their local offset.
 
virtual void assemble ()
 This method is used to implement the assemble interface of PETSc.
 
template<class TYPE = double>
VectorDataIterator< TYPE > begin ()
 Return an iterator to the beginning of the data.
 
template<class TYPE = double>
VectorDataIterator< const TYPE > begin () const
 Return an iterator to the beginning of the data.
 
virtual std::shared_ptr< VectorDatacloneData (const std::string &name="") const =0
 Clone the data.
 
template<class TYPE = double>
VectorDataIterator< const TYPE > constBegin () const
 Return an iterator to the beginning of the data.
 
template<class TYPE = double>
VectorDataIterator< const TYPE > constEnd () const
 Return an iterator to the end of the data.
 
virtual bool containsGlobalElement (size_t GID) const =0
 
virtual void copyGhostValues (const VectorData &rhs)=0
 Copy ghosted vlues to a vector.
 
virtual void dataChanged ()=0
 Notify listeners that data has changed in this vector.
 
virtual void deregisterListener (DataChangeListener *listener)
 Deregister a listener with this DataChangeFirer.
 
virtual void dumpGhostedData (std::ostream &out, size_t offset=0) const =0
 Write data owned by other processors to an std::ostream.
 
virtual void dumpOwnedData (std::ostream &out, size_t GIDoffset=0, size_t LIDoffset=0) const
 Write owned data to an std::ostream.
 
template<class TYPE = double>
VectorDataIterator< TYPE > end ()
 Return an iterator to the end of the data.
 
template<class TYPE = double>
VectorDataIterator< const TYPE > end () const
 Return an iterator to the end of the data.
 
virtual void fillGhosts (const Scalar &x)=0
 Zero all ghost data (does not modify consistent status)
 
virtual void fireDataChange ()
 Notify all listeners of a data change event.
 
template<class TYPE >
size_t getAllGhostValues (TYPE *vals) const
 Get all ghost values.
 
virtual size_t getAllGhostValues (void *vals, const typeID &id) const =0
 Get all ghost values in the vector.
 
virtual const AMP_MPIgetComm () const =0
 Get the communicator.
 
virtual std::shared_ptr< CommunicationListgetCommunicationList () const =0
 Get the CommunicationList for this Vector.
 
virtual std::shared_ptr< VectorDatagetComponent (size_t i=0)
 Number of elements in the ith component.
 
virtual std::shared_ptr< const VectorDatagetComponent (size_t i=0) const
 Number of elements in the ith component.
 
virtual uint64_t getDataID () const =0
 A unique id for the underlying data allocation.
 
template<class TYPE >
void getGhostAddValuesByGlobalID (size_t num, const size_t *indices, TYPE *vals) const
 get ghosted values to add to off-proc elements
 
virtual void getGhostAddValuesByGlobalID (size_t num, const size_t *indices, void *vals, const typeID &id) const =0
 get ghosted values to add to off-proc elements
 
virtual size_t getGhostSize () const =0
 Number of entries "owned" by other cores stored on this core.
 
template<class TYPE >
void getGhostValuesByGlobalID (size_t num, const size_t *indices, TYPE *vals) const
 Get ghost values in the vector by their global offset.
 
virtual void getGhostValuesByGlobalID (size_t num, const size_t *indices, void *vals, const typeID &id) const =0
 Get ghost values in the vector by their global offset.
 
size_t getGlobalSize () const
 Number of total entries in this vector across all cores.
 
UpdateState getGlobalUpdateStatus () const
 Return the current update state of the Vector.
 
uint64_t getID () const
 Get a unique id hash for the vector.
 
size_t getLocalSize () const
 Number of elements "owned" by this core.
 
virtual std::vector< size_t > getLocalSizes () const
 The local sizes on each rank.
 
size_t getLocalStartID () const
 get local start id core.
 
virtual UpdateState getLocalUpdateStatus () const =0
 Return the current update state of the Vector.
 
virtual AMP::Utilities::MemoryType getMemoryLocation () const
 returns the memory location for data
 
virtual size_t getNumberOfComponents () const
 Return integer number of data components.
 
template<class TYPE >
void getRawData (TYPE *buf) const
 Copy data out of this vector.
 
virtual void getRawData (void *buf, const typeID &id) const =0
 Copy data out of this vector.
 
template<typename RETURN_TYPE >
RETURN_TYPE * getRawDataBlock (size_t i=0)
 Obtain a particular contiguous block of data cast to RETURN_TYPE.
 
template<typename RETURN_TYPE >
const RETURN_TYPE * getRawDataBlock (size_t i=0) const
 Obtain a particular contiguous block of data cast to RETURN_TYPE.
 
virtual const void * getRawDataBlockAsVoid (size_t i) const =0
 Return a pointer to a particular block of memory in the vector.
 
virtual void * getRawDataBlockAsVoid (size_t i)=0
 Return a pointer to a particular block of memory in the vector.
 
virtual typeID getType (size_t block) const =0
 Return the typeid of the given block.
 
virtual std::shared_ptr< UpdateStategetUpdateStatusPtr () const =0
 Return the current update state of this Vector.
 
template<class TYPE >
void getValuesByGlobalID (size_t num, const size_t *indices, TYPE *vals) const
 get values in the vector by their local offset
 
template<class TYPE >
void getValuesByLocalID (size_t num, const size_t *indices, TYPE *vals) const
 Get local values in the vector by their global offset.
 
virtual void getValuesByLocalID (size_t num, const size_t *indices, void *vals, const typeID &id) const =0
 Get local values in the vector by their global offset.
 
virtual bool hasContiguousData () const
 returns whether all data for the vector on a single process is contiguous
 
virtual bool hasGhosts () const =0
 Check if any entries "owned" by other cores are stored on this core.
 
virtual bool isAnAliasOf (const VectorData &rhs) const
 Check if the two VectorData objects are alias of each other.
 
template<typename TYPE >
bool isBlockType (size_t i=0) const
 Check if the data is of the given type.
 
template<typename TYPE >
bool isType () const
 Check if the data is of the given type.
 
bool isType (const typeID &id, size_t block) const
 Is the data of the given type.
 
virtual void makeConsistent ()
 Update shared values on entire communicator.
 
virtual void makeConsistent (ScatterType t)=0
 Update shared values on entire communicator.
 
virtual size_t numberOfDataBlocks () const =0
 Number of blocks of contiguous data in the Vector.
 
virtual void print (std::ostream &os, const std::string &name="A", const std::string &prefix="") const
 
template<class TYPE >
void putRawData (const TYPE *buf)
 Copy data into this vector.
 
virtual void putRawData (const void *buf, const typeID &id)=0
 Copy data into this vector.
 
virtual void registerChildObjects (AMP::IO::RestartManager *manager) const
 Register any child objects.
 
virtual void registerListener (DataChangeListener *listener)
 Register a listener with this DataChangeFirer.
 
virtual void registerListener (std::shared_ptr< DataChangeListener > listener)
 Register a listener with this DataChangeFirer.
 
virtual void reset ()
 reset the vector data object
 
virtual void setCommunicationList (std::shared_ptr< CommunicationList > comm)=0
 Set the CommunicationList for this Vector.
 
template<class TYPE >
void setGhostValuesByGlobalID (size_t num, const size_t *indices, const TYPE *vals)
 Set ghost values using global identifier.
 
virtual void setGhostValuesByGlobalID (size_t num, const size_t *indices, const void *vals, const typeID &id)=0
 Set ghost values using global identifier.
 
virtual void setNoGhosts ()
 Ensure this vector has no ghosts.
 
virtual void setUpdateStatus (UpdateState state)=0
 Sets the current update state of the Vector.
 
virtual void setUpdateStatusPtr (std::shared_ptr< UpdateState > rhs)=0
 Tie the current update state to another.
 
template<class TYPE >
void setValuesByGlobalID (size_t num, const size_t *indices, const TYPE *vals)
 Set owned or shared values using global identifier.
 
template<class TYPE >
void setValuesByLocalID (size_t num, const size_t *indices, const TYPE *vals)
 Set values in the vector by their local offset.
 
virtual void setValuesByLocalID (size_t num, const size_t *indices, const void *vals, const typeID &id)=0
 Set values in the vector by their local offset.
 
std::shared_ptr< VectorDatashared_from_this ()
 
std::shared_ptr< const VectorDatashared_from_this () const
 
virtual size_t sizeOfDataBlock (size_t i=0) const =0
 Number of elements in a data block.
 
virtual size_t sizeofDataBlockType (size_t i) const =0
 Return the result of sizeof(TYPE) for the given data block.
 
virtual void swapData (VectorData &rhs)=0
 Swap the data with another VectorData object.
 
 VectorData ()=default
 Default constructors.
 
 VectorData (const VectorData &)=delete
 
 VectorData (int64_t fid, AMP::IO::RestartManager *manager)
 
virtual std::string VectorDataName () const =0
 Get the type name.
 
virtual void writeRestart (int64_t fid) const
 Write restart data to file.
 
virtual ~VectorData ()
 Virtual destructor.
 

Protected Attributes

size_t d_globalSize = 0
 Number of local values.
 
size_t d_localSize = 0
 
size_t d_localStart = 0
 Number of global values.
 
std::weak_ptr< VectorDataweak_ptr_
 

Private Attributes

std::vector< DataChangeListener * > d_listeners
 

Friends

class VectorOperations
 Index of first local value.
 

Detailed Description

A class used to hold vector data.

VectorData is a class to helping disassociate data storage and vector operations such as dot product, norms, etc. When indexing VectorData (and Vector) the local index runs from [0,getLocalSize()) and the global indexing (for the local elements) runs from [getLocalStartID(),getLocalStartID+getLocalSize())

Definition at line 37 of file VectorData.h.

Constructor & Destructor Documentation

◆ ~VectorData()

virtual AMP::LinearAlgebra::VectorData::~VectorData ( )
inlinevirtual

Virtual destructor.

Definition at line 41 of file VectorData.h.

◆ VectorData() [1/3]

AMP::LinearAlgebra::VectorData::VectorData ( int64_t  fid,
AMP::IO::RestartManager manager 
)

◆ VectorData() [2/3]

AMP::LinearAlgebra::VectorData::VectorData ( )
default

Default constructors.

◆ VectorData() [3/3]

AMP::LinearAlgebra::VectorData::VectorData ( const VectorData )
delete

Member Function Documentation

◆ addGhostValuesByGlobalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::addGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Add shared values using global identifier.

Parameters
[in]numnumber of values to add
[in]indicesthe indices of the values to add
[in]valsthe values to place in the vector

◆ addGhostValuesByGlobalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::addGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
const void *  vals,
const typeID id 
)
pure virtual

◆ addValuesByGlobalID()

template<class TYPE >
void AMP::LinearAlgebra::VectorData::addValuesByGlobalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Add owned or shared values using global identifier.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

Since the shared buffer and owned buffer are separate, this function must sort the data by buffer before setting values.

◆ addValuesByLocalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::addValuesByLocalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Add values to vector entities by their local offset.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

This will set the owned values for this core. All indices are from 0. \( \mathit{this}_{\mathit{indices}_i} = \mathit{this}_{\mathit{indices}_i} + \mathit{vals}_i \)

◆ addValuesByLocalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::addValuesByLocalID ( size_t  num,
const size_t *  indices,
const void *  vals,
const typeID id 
)
pure virtual

Add values to vector entities by their local offset.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector
[in]idtypeID of raw data

This will set the owned values for this core. All indices are from 0. \( \mathit{this}_{\mathit{indices}_i} = \mathit{this}_{\mathit{indices}_i} + \mathit{vals}_i \)

Implemented in AMP::LinearAlgebra::VectorDataNull, AMP::LinearAlgebra::ArrayVectorData< T, FUN, Allocator >, AMP::LinearAlgebra::VectorDataDevice< TYPE, Allocator >, AMP::LinearAlgebra::VectorDataDefault< TYPE, Allocator >, AMP::LinearAlgebra::VectorDataDefault< double, AMP::HostAllocator< void > >, AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, AMP::LinearAlgebra::SubsetCommSelfVectorData, AMP::LinearAlgebra::SubsetVectorData, AMP::LinearAlgebra::NativePetscVectorData, AMP::LinearAlgebra::EpetraVectorData, AMP::LinearAlgebra::NativeThyraVectorData, and AMP::LinearAlgebra::TpetraVectorData< ST, LO, GO, NT >.

◆ assemble()

virtual void AMP::LinearAlgebra::VectorData::assemble ( )
inlinevirtual

This method is used to implement the assemble interface of PETSc.

This method is empty except for instantiations of NativePetscVectorData

Reimplemented in AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, and AMP::LinearAlgebra::NativePetscVectorData.

Definition at line 631 of file VectorData.h.

◆ begin() [1/2]

template<class TYPE = double>
VectorDataIterator< TYPE > AMP::LinearAlgebra::VectorData::begin ( )
inline

Return an iterator to the beginning of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ begin() [2/2]

template<class TYPE = double>
VectorDataIterator< const TYPE > AMP::LinearAlgebra::VectorData::begin ( ) const
inline

Return an iterator to the beginning of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ cloneData()

virtual std::shared_ptr< VectorData > AMP::LinearAlgebra::VectorData::cloneData ( const std::string &  name = "") const
pure virtual

◆ constBegin()

template<class TYPE = double>
VectorDataIterator< const TYPE > AMP::LinearAlgebra::VectorData::constBegin ( ) const
inline

Return an iterator to the beginning of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ constEnd()

template<class TYPE = double>
VectorDataIterator< const TYPE > AMP::LinearAlgebra::VectorData::constEnd ( ) const
inline

Return an iterator to the end of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ containsGlobalElement()

virtual bool AMP::LinearAlgebra::VectorData::containsGlobalElement ( size_t  GID) const
pure virtual

◆ copyGhostValues()

virtual void AMP::LinearAlgebra::VectorData::copyGhostValues ( const VectorData rhs)
pure virtual

◆ dataChanged()

virtual void AMP::LinearAlgebra::VectorData::dataChanged ( )
pure virtual

◆ deregisterListener()

virtual void AMP::LinearAlgebra::DataChangeFirer::deregisterListener ( DataChangeListener listener)
virtualinherited

Deregister a listener with this DataChangeFirer.

Parameters
[in]listenerThe listener to remove from the list

Removes a listener from itself.

◆ dumpGhostedData()

virtual void AMP::LinearAlgebra::VectorData::dumpGhostedData ( std::ostream &  out,
size_t  offset = 0 
) const
pure virtual

◆ dumpOwnedData()

virtual void AMP::LinearAlgebra::VectorData::dumpOwnedData ( std::ostream &  out,
size_t  GIDoffset = 0,
size_t  LIDoffset = 0 
) const
virtual

Write owned data to an std::ostream.

Parameters
[in]outThe output stream to write to.
[in]GIDoffsetA number to add to the global ID when writing information
[in]LIDoffsetA number to add to the local ID when writing information

Reimplemented in AMP::LinearAlgebra::MultiVectorData.

◆ end() [1/2]

template<class TYPE = double>
VectorDataIterator< TYPE > AMP::LinearAlgebra::VectorData::end ( )
inline

Return an iterator to the end of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ end() [2/2]

template<class TYPE = double>
VectorDataIterator< const TYPE > AMP::LinearAlgebra::VectorData::end ( ) const
inline

Return an iterator to the end of the data.

Returns
A VectorDataIterator

Since the Vector presents an interface to a contiguous block of data, it is natural for it to provide a random access iterator.

Warning
The non-const version of the iterators will automatically leave the vector in a non-consistent state. The user may be required to call makeConsistent.

◆ fillGhosts()

virtual void AMP::LinearAlgebra::VectorData::fillGhosts ( const Scalar x)
pure virtual

◆ fireDataChange()

virtual void AMP::LinearAlgebra::DataChangeFirer::fireDataChange ( )
virtualinherited

Notify all listeners of a data change event.

Iterates through the list of DataChangeListeners and invokes the receiveDataChanged() method.

Referenced by AMP::LinearAlgebra::ManagedVectorData::receiveDataChanged(), and AMP::LinearAlgebra::MultiVectorData::receiveDataChanged().

◆ getAllGhostValues() [1/2]

template<class TYPE >
size_t AMP::LinearAlgebra::VectorData::getAllGhostValues ( TYPE *  vals) const

Get all ghost values.

Parameters
[out]valsthe values to place in the vector

This will get any value owned by this core.

◆ getAllGhostValues() [2/2]

virtual size_t AMP::LinearAlgebra::VectorData::getAllGhostValues ( void *  vals,
const typeID id 
) const
pure virtual

◆ getComm()

virtual const AMP_MPI & AMP::LinearAlgebra::VectorData::getComm ( ) const
pure virtual

◆ getCommunicationList()

virtual std::shared_ptr< CommunicationList > AMP::LinearAlgebra::VectorData::getCommunicationList ( ) const
pure virtual

◆ getComponent() [1/2]

virtual std::shared_ptr< VectorData > AMP::LinearAlgebra::VectorData::getComponent ( size_t  i = 0)
virtual

Number of elements in the ith component.

Parameters
[in]iparticular data block
Returns
The number of elements in the ith component

Reimplemented in AMP::LinearAlgebra::MultiVectorData.

◆ getComponent() [2/2]

virtual std::shared_ptr< const VectorData > AMP::LinearAlgebra::VectorData::getComponent ( size_t  i = 0) const
virtual

Number of elements in the ith component.

Parameters
[in]iparticular data block
Returns
The number of elements in the ith component

Reimplemented in AMP::LinearAlgebra::MultiVectorData.

◆ getDataID()

virtual uint64_t AMP::LinearAlgebra::VectorData::getDataID ( ) const
pure virtual

A unique id for the underlying data allocation.

This is a unique id that is associated with the data data allocation. Views of a vector should preserve the id of the original vector. Vectors that are not allocated, or contain multiple vectors (such as Multivector) should return 0. Note: this id is not consistent across multiple processors.

Implemented in AMP::LinearAlgebra::ArrayVectorData< T, FUN, Allocator >, AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, AMP::LinearAlgebra::SubsetCommSelfVectorData, AMP::LinearAlgebra::SubsetVectorData, AMP::LinearAlgebra::VectorDataDefault< TYPE, Allocator >, AMP::LinearAlgebra::VectorDataDefault< double, AMP::HostAllocator< void > >, AMP::LinearAlgebra::VectorDataNull, AMP::LinearAlgebra::NativePetscVectorData, AMP::LinearAlgebra::EpetraVectorData, AMP::LinearAlgebra::NativeThyraVectorData, and AMP::LinearAlgebra::TpetraVectorData< ST, LO, GO, NT >.

◆ getGhostAddValuesByGlobalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::getGhostAddValuesByGlobalID ( size_t  num,
const size_t *  indices,
TYPE *  vals 
) const

get ghosted values to add to off-proc elements

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

This will get the ghosted updates this processor has made. All indices are from global 0.

◆ getGhostAddValuesByGlobalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::getGhostAddValuesByGlobalID ( size_t  num,
const size_t *  indices,
void *  vals,
const typeID id 
) const
pure virtual

◆ getGhostSize()

virtual size_t AMP::LinearAlgebra::VectorData::getGhostSize ( ) const
pure virtual

◆ getGhostValuesByGlobalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::getGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
TYPE *  vals 
) const

Get ghost values in the vector by their global offset.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[out]valsthe values to place in the vector

This will get any value owned by this core.

◆ getGhostValuesByGlobalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::getGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
void *  vals,
const typeID id 
) const
pure virtual

◆ getGlobalSize()

size_t AMP::LinearAlgebra::VectorData::getGlobalSize ( ) const
inline

Number of total entries in this vector across all cores.

Returns
Number of entries stored across all cores in this

Definition at line 71 of file VectorData.h.

References d_globalSize.

◆ getGlobalUpdateStatus()

UpdateState AMP::LinearAlgebra::VectorData::getGlobalUpdateStatus ( ) const

Return the current update state of the Vector.

This returns the effective update state of the vector, including any vectors it contains. The effective state is defined as: UNCHANGED - All data and sub vectors are unchanged LOCAL_CHANGED - Local data may be modified, sub vectors must either be UNCHANGED or LOCAL_CHANGED. ADDING - Local and ghost data may be modified through add operations, sub vectors must be UNCHANGED, LOCAL_CHANGED, or ADDING SETTING - Local and ghost data may be modified through set operations, sub vectors must be UNCHANGED, LOCAL_CHANGED, or SETTING If different subvectors have incompatible states ADDING and SETTING, this function will return MIXED This version returns the global state and requires a collective communication

◆ getID()

uint64_t AMP::LinearAlgebra::VectorData::getID ( ) const

Get a unique id hash for the vector.

◆ getLocalSize()

size_t AMP::LinearAlgebra::VectorData::getLocalSize ( ) const
inline

Number of elements "owned" by this core.

Returns
Number of entries stored on this processor

This function returns the number of locally stored values under contiguous indexing.

Definition at line 66 of file VectorData.h.

◆ getLocalSizes()

virtual std::vector< size_t > AMP::LinearAlgebra::VectorData::getLocalSizes ( ) const
virtual

The local sizes on each rank.

Returns
The local sizes on each rank

Reimplemented in AMP::LinearAlgebra::MultiVectorData.

◆ getLocalStartID()

size_t AMP::LinearAlgebra::VectorData::getLocalStartID ( ) const
inline

get local start id core.

Returns
The first entry "owned" by this core

Definition at line 76 of file VectorData.h.

References d_localStart.

◆ getLocalUpdateStatus()

virtual UpdateState AMP::LinearAlgebra::VectorData::getLocalUpdateStatus ( ) const
pure virtual

Return the current update state of the Vector.

This returns the effective update state of the vector, including any vectors it contains. The effective state is defined as: UNCHANGED - All data and sub vectors are unchanged LOCAL_CHANGED - Local data may be modified, sub vectors must either be UNCHANGED or LOCAL_CHANGED. ADDING - Local and ghost data may be modified through add operations, sub vectors must be UNCHANGED, LOCAL_CHANGED, or ADDING SETTING - Local and ghost data may be modified through set operations, sub vectors must be UNCHANGED, LOCAL_CHANGED, or SETTING If different subvectors have incompatible states ADDING and SETTING, this function will return MIXED This version returns the local state only and does not involve communication

Implemented in AMP::LinearAlgebra::GhostDataHelper< TYPE, Allocator >, AMP::LinearAlgebra::GhostDataHelper< double >, AMP::LinearAlgebra::GhostDataHelper< double, AMP::HostAllocator< void > >, AMP::LinearAlgebra::GhostDataHelper< PetscScalar >, AMP::LinearAlgebra::GhostDataHelper< T, AMP::HostAllocator< void > >, AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, AMP::LinearAlgebra::SubsetCommSelfVectorData, and AMP::LinearAlgebra::VectorDataNull.

◆ getMemoryLocation()

virtual AMP::Utilities::MemoryType AMP::LinearAlgebra::VectorData::getMemoryLocation ( ) const
inlinevirtual

◆ getNumberOfComponents()

virtual size_t AMP::LinearAlgebra::VectorData::getNumberOfComponents ( ) const
virtual

Return integer number of data components.

Reimplemented in AMP::LinearAlgebra::MultiVectorData.

◆ getRawData() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::getRawData ( TYPE *  buf) const

Copy data out of this vector.

Parameters
[out]bufBuffer to copy to

The Vector should be pre-allocated to the correct size (getLocalSize())

◆ getRawData() [2/2]

virtual void AMP::LinearAlgebra::VectorData::getRawData ( void *  buf,
const typeID id 
) const
pure virtual

◆ getRawDataBlock() [1/2]

template<typename RETURN_TYPE >
RETURN_TYPE * AMP::LinearAlgebra::VectorData::getRawDataBlock ( size_t  i = 0)

Obtain a particular contiguous block of data cast to RETURN_TYPE.

Template Parameters
RETURN_TYPEThe pointer type of the return
Parameters
[in]iWhich block
Returns
A contiguous array of type RETURN_TYPE

◆ getRawDataBlock() [2/2]

template<typename RETURN_TYPE >
const RETURN_TYPE * AMP::LinearAlgebra::VectorData::getRawDataBlock ( size_t  i = 0) const

Obtain a particular contiguous block of data cast to RETURN_TYPE.

Template Parameters
RETURN_TYPEThe pointer type of the return
Parameters
[in]iWhich block
Returns
A const contiguous array of type RETURN_TYPE

◆ getRawDataBlockAsVoid() [1/2]

virtual const void * AMP::LinearAlgebra::VectorData::getRawDataBlockAsVoid ( size_t  i) const
pure virtual

◆ getRawDataBlockAsVoid() [2/2]

virtual void * AMP::LinearAlgebra::VectorData::getRawDataBlockAsVoid ( size_t  i)
pure virtual

◆ getType()

virtual typeID AMP::LinearAlgebra::VectorData::getType ( size_t  block) const
pure virtual

◆ getUpdateStatusPtr()

virtual std::shared_ptr< UpdateState > AMP::LinearAlgebra::VectorData::getUpdateStatusPtr ( ) const
pure virtual

◆ getValuesByGlobalID()

template<class TYPE >
void AMP::LinearAlgebra::VectorData::getValuesByGlobalID ( size_t  num,
const size_t *  indices,
TYPE *  vals 
) const

get values in the vector by their local offset

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[out]valsthe values to place in the vector

This will get the owned values for this core. All indices are from 0.

◆ getValuesByLocalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::getValuesByLocalID ( size_t  num,
const size_t *  indices,
TYPE *  vals 
) const

Get local values in the vector by their global offset.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[out]valsthe values to place in the vector

This will get any value used by this core.

◆ getValuesByLocalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::getValuesByLocalID ( size_t  num,
const size_t *  indices,
void *  vals,
const typeID id 
) const
pure virtual

◆ hasContiguousData()

virtual bool AMP::LinearAlgebra::VectorData::hasContiguousData ( ) const
inlinevirtual

returns whether all data for the vector on a single process is contiguous

Reimplemented in AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, AMP::LinearAlgebra::SubsetCommSelfVectorData, and AMP::LinearAlgebra::SubsetVectorData.

Definition at line 113 of file VectorData.h.

◆ hasGhosts()

virtual bool AMP::LinearAlgebra::VectorData::hasGhosts ( ) const
pure virtual

◆ isAnAliasOf()

virtual bool AMP::LinearAlgebra::VectorData::isAnAliasOf ( const VectorData rhs) const
virtual

Check if the two VectorData objects are alias of each other.

This function checks if two VectorData objects are alias of each other. Two VectorData objects are alias if their data blocks are the same size and point to the same memory blocks.

Parameters
[in]rhsVectorData to compare
See also
makeConsistent

Reimplemented in AMP::LinearAlgebra::ManagedVectorData.

◆ isBlockType()

template<typename TYPE >
bool AMP::LinearAlgebra::VectorData::isBlockType ( size_t  i = 0) const

Check if the data is of the given type.

Returns
true if the ith block of data is of the given type

◆ isType() [1/2]

template<typename TYPE >
bool AMP::LinearAlgebra::VectorData::isType ( ) const

Check if the data is of the given type.

Returns
true if all data is of the given type

◆ isType() [2/2]

bool AMP::LinearAlgebra::VectorData::isType ( const typeID id,
size_t  block 
) const
inline

Is the data of the given type.

Parameters
idThe typeid
blockThe block id to check

◆ makeConsistent() [1/2]

virtual void AMP::LinearAlgebra::VectorData::makeConsistent ( )
virtual

◆ makeConsistent() [2/2]

virtual void AMP::LinearAlgebra::VectorData::makeConsistent ( ScatterType  t)
pure virtual

Update shared values on entire communicator.

Parameters
tThe type of scatter used to compute values

There are two algorithms used by makeConsistent

  • If t = CONSISTENT_SET, then owned values are sent to processors that share the value. Shared values are overwritten
  • If t = CONSISTENT_ADD, then shared values are accumulated on the core that owns it and applied as determined, either add or set. Then, the values are broadcast out.

Generally, when adding to a vector, the GATHER_SCATTER should be used to make consistent. When setting entries in a vector the BROADCAST should be used.

Implemented in AMP::LinearAlgebra::GhostDataHelper< TYPE, Allocator >, AMP::LinearAlgebra::GhostDataHelper< double >, AMP::LinearAlgebra::GhostDataHelper< double, AMP::HostAllocator< void > >, AMP::LinearAlgebra::GhostDataHelper< PetscScalar >, AMP::LinearAlgebra::GhostDataHelper< T, AMP::HostAllocator< void > >, AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::MultiVectorData, AMP::LinearAlgebra::NativePetscVectorData, AMP::LinearAlgebra::GhostDataHelper< TYPE, Allocator >, AMP::LinearAlgebra::GhostDataHelper< double >, AMP::LinearAlgebra::GhostDataHelper< double, AMP::HostAllocator< void > >, AMP::LinearAlgebra::GhostDataHelper< PetscScalar >, AMP::LinearAlgebra::GhostDataHelper< T, AMP::HostAllocator< void > >, AMP::LinearAlgebra::ManagedVectorData, AMP::LinearAlgebra::VectorDataNull, AMP::LinearAlgebra::SubsetCommSelfVectorData, and AMP::LinearAlgebra::VectorDataNull.

◆ numberOfDataBlocks()

virtual size_t AMP::LinearAlgebra::VectorData::numberOfDataBlocks ( ) const
pure virtual

◆ print()

virtual void AMP::LinearAlgebra::VectorData::print ( std::ostream &  os,
const std::string &  name = "A",
const std::string &  prefix = "" 
) const
virtual

◆ putRawData() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::putRawData ( const TYPE *  buf)

Copy data into this vector.

Parameters
[in]bufBuffer to copy from

◆ putRawData() [2/2]

virtual void AMP::LinearAlgebra::VectorData::putRawData ( const void *  buf,
const typeID id 
)
pure virtual

◆ registerChildObjects()

virtual void AMP::LinearAlgebra::VectorData::registerChildObjects ( AMP::IO::RestartManager manager) const
virtual

◆ registerListener() [1/2]

virtual void AMP::LinearAlgebra::DataChangeFirer::registerListener ( DataChangeListener listener)
virtualinherited

Register a listener with this DataChangeFirer.

Parameters
[in]listenerThe listener to be alerted to data change events

Adds a listener to itself.

◆ registerListener() [2/2]

virtual void AMP::LinearAlgebra::DataChangeFirer::registerListener ( std::shared_ptr< DataChangeListener listener)
virtualinherited

Register a listener with this DataChangeFirer.

Parameters
[in]listenerThe listener to be alerted to data change events

Adds a listener to itself.

◆ reset()

virtual void AMP::LinearAlgebra::VectorData::reset ( )
virtual

reset the vector data object

At present this interface is primarily meant for vector data over AMR hierarchies, where the number of AMR levels and vector data has to be reallocated

◆ setCommunicationList()

virtual void AMP::LinearAlgebra::VectorData::setCommunicationList ( std::shared_ptr< CommunicationList comm)
pure virtual

◆ setGhostValuesByGlobalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::setGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Set ghost values using global identifier.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

\( \mathit{this}_{\mathit{indices}_i} = \mathit{vals}_i \)

◆ setGhostValuesByGlobalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::setGhostValuesByGlobalID ( size_t  num,
const size_t *  indices,
const void *  vals,
const typeID id 
)
pure virtual

◆ setNoGhosts()

virtual void AMP::LinearAlgebra::VectorData::setNoGhosts ( )
virtual

◆ setUpdateStatus()

virtual void AMP::LinearAlgebra::VectorData::setUpdateStatus ( UpdateState  state)
pure virtual

◆ setUpdateStatusPtr()

virtual void AMP::LinearAlgebra::VectorData::setUpdateStatusPtr ( std::shared_ptr< UpdateState rhs)
pure virtual

◆ setValuesByGlobalID()

template<class TYPE >
void AMP::LinearAlgebra::VectorData::setValuesByGlobalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Set owned or shared values using global identifier.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

Since the shared buffer and owned buffer are separate, this function must sort the data by buffer before setting values.

◆ setValuesByLocalID() [1/2]

template<class TYPE >
void AMP::LinearAlgebra::VectorData::setValuesByLocalID ( size_t  num,
const size_t *  indices,
const TYPE *  vals 
)

Set values in the vector by their local offset.

Parameters
[in]numnumber of values to set
[in]indicesthe indices of the values to set
[in]valsthe values to place in the vector

This will set the owned values for this core. All indices are from 0. \( \mathit{this}_{\mathit{indices}_i} = \mathit{vals}_i \)

◆ setValuesByLocalID() [2/2]

virtual void AMP::LinearAlgebra::VectorData::setValuesByLocalID ( size_t  num,
const size_t *  indices,
const void *  vals,
const typeID id 
)
pure virtual

◆ shared_from_this() [1/2]

std::shared_ptr< VectorData > AMP::enable_shared_from_this< VectorData >::shared_from_this ( )
inlineinherited

Definition at line 28 of file enable_shared_from_this.h.

◆ shared_from_this() [2/2]

std::shared_ptr< const VectorData > AMP::enable_shared_from_this< VectorData >::shared_from_this ( ) const
inlineinherited

Definition at line 46 of file enable_shared_from_this.h.

◆ sizeOfDataBlock()

virtual size_t AMP::LinearAlgebra::VectorData::sizeOfDataBlock ( size_t  i = 0) const
pure virtual

◆ sizeofDataBlockType()

virtual size_t AMP::LinearAlgebra::VectorData::sizeofDataBlockType ( size_t  i) const
pure virtual

◆ swapData()

virtual void AMP::LinearAlgebra::VectorData::swapData ( VectorData rhs)
pure virtual

◆ VectorDataName()

virtual std::string AMP::LinearAlgebra::VectorData::VectorDataName ( ) const
pure virtual

◆ writeRestart()

virtual void AMP::LinearAlgebra::VectorData::writeRestart ( int64_t  fid) const
virtual

Friends And Related Symbol Documentation

◆ VectorOperations

friend class VectorOperations
friend

Index of first local value.

Definition at line 679 of file VectorData.h.

Member Data Documentation

◆ d_globalSize

size_t AMP::LinearAlgebra::VectorData::d_globalSize = 0
protected

Number of local values.

Definition at line 675 of file VectorData.h.

Referenced by getGlobalSize().

◆ d_listeners

std::vector<DataChangeListener *> AMP::LinearAlgebra::DataChangeFirer::d_listeners
privateinherited

Definition at line 89 of file DataChangeFirer.h.

◆ d_localSize

size_t AMP::LinearAlgebra::VectorData::d_localSize = 0
protected

◆ d_localStart

size_t AMP::LinearAlgebra::VectorData::d_localStart = 0
protected

Number of global values.

Definition at line 676 of file VectorData.h.

Referenced by getLocalStartID().

◆ weak_ptr_

std::weak_ptr<VectorData > AMP::enable_shared_from_this< VectorData >::weak_ptr_
mutableprotectedinherited

Definition at line 69 of file enable_shared_from_this.h.


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



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:43.
Comments on this page