FEI Package Browser (Single Doxygen Collection)
Version of the Day
|
#include <fei_Vector_core.hpp>
Public Member Functions | |
Vector_core (fei::SharedPtr< fei::VectorSpace > vecSpace, int numLocalEqns) | |
virtual | ~Vector_core () |
int | copyOut (int numValues, const int *indices, double *values, int vectorIndex=0) const |
virtual int | sumIntoFEVector (int blockID, int connOffset, int numNodes, const int *nodeNumbers, const int *numIndicesPerNode, const int *dof_ids, const double *values)=0 |
virtual int | copyOut_FE (int nodeNumber, int dofOffset, double &value)=0 |
int | giveToVector (int numValues, const int *indices, const double *values, bool sumInto=true, int vectorIndex=0) |
virtual int | scatterToOverlap () |
void | setOverlap (int numRemoteEqns=0, const int *remoteEqns=NULL) |
Protected Member Functions | |
int | assembleFieldData (int fieldID, int idType, int numIDs, const int *IDs, const double *data, bool sumInto=true, int vectorIndex=0) |
int | assembleFieldDataLocalIDs (int fieldID, int idType, int numIDs, const int *localIDs, const double *data, bool sumInto=true, int vectorIndex=0) |
void | setCommSizes () |
virtual int | gatherFromOverlap (bool accumulate=true) |
virtual int | copyOutFieldData (int fieldID, int idType, int numIDs, const int *IDs, double *data, int vectorIndex=0) |
virtual int | giveToUnderlyingVector (int numValues, const int *indices, const double *values, bool sumInto=true, int vectorIndex=0)=0 |
virtual int | copyOutOfUnderlyingVector (int numValues, const int *indices, double *values, int vectorIndex=0) const =0 |
virtual int | writeToFile (const char *filename, bool matrixMarketFormat=true) |
virtual int | writeToStream (FEI_OSTREAM &ostrm, bool matrixMarketFormat=true) |
fei::SharedPtr< fei::VectorSpace > | get_vector_space () const |
void | set_vector_space (fei::SharedPtr< fei::VectorSpace > vspace) |
int | firstLocalOffset () const |
int | lastLocalOffset () const |
std::vector< int > & | work_indices () |
std::vector< int > & | work_indices2 () |
bool | haveFEVector () |
void | setFEVector (bool flag) |
std::vector< CSVec * > & | remotelyOwned () |
const std::vector< CSVec * > & | remotelyOwned () const |
std::vector< int > & | remotelyOwnedProcs () |
const std::vector< int > & | remotelyOwnedProcs () const |
fei::CSVec * | getRemotelyOwned (int proc) |
const fei::CSVec * | getRemotelyOwned (int proc) const |
Protected Member Functions inherited from fei::Logger | |
Logger () | |
virtual | ~Logger () |
void | setOutputLevel (OutputLevel olevel) |
void | addLogID (int ID) |
void | addLogEqn (int eqn) |
bool | isLogID (int ID) |
bool | isLogEqn (int eqn) |
std::set< int > & | getLogIDs () |
std::set< int > & | getLogEqns () |
Protected Attributes | |
fei::SharedPtr< fei::EqnComm > | eqnComm_ |
Protected Attributes inherited from fei::Logger | |
OutputLevel | output_level_ |
FEI_OSTREAM * | output_stream_ |
std::set< int > | logIDs_ |
std::set< int > | logEqns_ |
Private Member Functions | |
void | pack_send_buffers (const std::vector< int > &sendProcs, const std::vector< fei::CSVec * > &remotelyOwned, std::vector< std::vector< char > > &send_chars, bool resize_buffer, bool zeroRemotelyOwnedAfterPacking) |
Private Attributes | |
fei::SharedPtr< fei::VectorSpace > | vecSpace_ |
MPI_Comm | comm_ |
int | firstLocalOffset_ |
int | lastLocalOffset_ |
int | numLocal_ |
std::vector< int > | work_indices_ |
std::vector< int > | work_indices2_ |
bool | haveFEVector_ |
std::vector< int > | remotelyOwnedProcs_ |
std::vector< CSVec * > | remotelyOwned_ |
std::vector< int > | sendProcs_ |
std::vector< int > | recvProcs_ |
std::vector< int > | recv_sizes_ |
std::vector< std::vector< char > > | recv_chars_ |
std::vector< std::vector< char > > | send_chars_ |
bool | sendRecvProcsNeedUpdated_ |
bool | overlapAlreadySet_ |
std::string | dbgprefix_ |
Class to provide infrastructure for fei::Vector implementations.
Definition at line 23 of file fei_Vector_core.hpp.
fei::Vector_core::Vector_core | ( | fei::SharedPtr< fei::VectorSpace > | vecSpace, |
int | numLocalEqns | ||
) |
constructor
Definition at line 25 of file fei_Vector_core.cpp.
References fei::BRIEF_LOGS, comm_, dbgprefix_, eqnComm_, FEI_ENDL, FEI_OSTREAM, firstLocalOffset_, lastLocalOffset_, fei::localProc(), numLocal_, fei::Logger::output_level_, and fei::Logger::output_stream_.
|
virtual |
destructor
Definition at line 61 of file fei_Vector_core.cpp.
int fei::Vector_core::copyOut | ( | int | numValues, |
const int * | indices, | ||
double * | values, | ||
int | vectorIndex = 0 |
||
) | const |
Retrieve a copy of values from the vector for the specified indices. Note that if the specified indices are not local in the underlying non-overlapping data decomposition, these values are not guaranteed to be correct until after the scatterToOverlap() method has been called.
Definition at line 217 of file fei_Vector_core.cpp.
References fei::binarySearch(), CHK_ERR, fei::CSVec::coefs(), fei::console_out(), ERReturn, FEI_ENDL, fei::CSVec::indices(), and fei::localProc().
Referenced by fei::Vector_Impl< T >::copyOut().
|
pure virtual |
Sum in data for FiniteElementData-specific structure. Power users only.
Implemented in fei::Vector_Impl< T >.
|
pure virtual |
Another FiniteElementData-specific method. Power users only.
Implemented in fei::Vector_Impl< T >.
int fei::Vector_core::giveToVector | ( | int | numValues, |
const int * | indices, | ||
const double * | values, | ||
bool | sumInto = true , |
||
int | vectorIndex = 0 |
||
) |
Give specified data to underlying vector object.
Definition at line 254 of file fei_Vector_core.cpp.
References fei::add_entry(), fei::BRIEF_LOGS, fei::console_out(), ERReturn, FEI_ENDL, FEI_OSTREAM, and fei::put_entry().
|
virtual |
Scatter locally-owned vector data to remote sharing procs.
Reimplemented in fei::Vector_Impl< T >.
Definition at line 107 of file fei_Vector_core.cpp.
References fei::CSVec::coefs(), FEI_COUT, FEI_ENDL, fei::CSVec::indices(), fei::localProc(), fei::mirrorProcs(), fei::numProcs(), and fei::CSVec::size().
Referenced by fei::Vector_Impl< T >::scatterToOverlap().
void fei::Vector_core::setOverlap | ( | int | numRemoteEqns = 0 , |
const int * | remoteEqns = NULL |
||
) |
define the extent of the overlapping indices. If the optional arguments are not specified, remote eqns will be obtained from the internal fei::VectorSpace attribute.
Definition at line 68 of file fei_Vector_core.cpp.
References fei::add_entry(), fei::BRIEF_LOGS, FEI_ENDL, FEI_OSTREAM, and fei::localProc().
|
protected |
Assemble data specified by fieldID, idType, etc.
Definition at line 308 of file fei_Vector_core.cpp.
|
protected |
Definition at line 331 of file fei_Vector_core.cpp.
|
protected |
Definition at line 372 of file fei_Vector_core.cpp.
References fei::localProc(), and fei::mirrorProcs().
Referenced by fei::Vector_Impl< T >::setCommSizes().
|
protectedvirtual |
Gather shared data from remote procs for eqns that are locally-owned.
Reimplemented in fei::Vector_Impl< T >.
Definition at line 445 of file fei_Vector_core.cpp.
References fei::numProcs(), and fei::impl_utils::unpack_indices_coefs().
Referenced by fei::Vector_Impl< T >::gatherFromOverlap().
|
protectedvirtual |
Copy out data specified by fieldID, idType, etc.
Reimplemented in fei::Vector_Impl< T >.
Definition at line 507 of file fei_Vector_core.cpp.
References CHK_ERR, ERReturn, fei::FieldMask::getFieldEqnOffset(), fei::Record< GlobalIDType >::getFieldMask(), fei::Record< GlobalIDType >::getNumber(), fei::Record< GlobalIDType >::getOffsetIntoEqnNumbers(), and snl_fei::RecordCollection::getRecordWithID().
Referenced by fei::Vector_Impl< T >::copyOutFieldData().
|
protectedpure virtual |
Review this function. Is it redundant with other functions?
Implemented in fei::Vector_Impl< T >.
|
protectedpure virtual |
Review this function. Is it redundant with other functions?
Implemented in fei::Vector_Impl< T >.
|
protectedvirtual |
Establish basic information like sizes etc. Write data to specified filename.
Reimplemented in fei::Vector_Impl< T >.
Definition at line 560 of file fei_Vector_core.cpp.
References fei::Barrier(), CHK_ERR, FEI_ENDL, FEI_OFSTREAM, IOS_APP, IOS_FLOATFIELD, IOS_OUT, IOS_SCIENTIFIC, fei::localProc(), and fei::numProcs().
Referenced by fei::Vector_Impl< T >::writeToFile().
|
protectedvirtual |
Write data to specified ostream.
Reimplemented in fei::Vector_Impl< T >.
Definition at line 607 of file fei_Vector_core.cpp.
References fei::Barrier(), CHK_ERR, FEI_ENDL, IOS_FLOATFIELD, IOS_FMTFLAGS, IOS_SCIENTIFIC, fei::localProc(), and fei::numProcs().
Referenced by fei::Vector_Impl< T >::writeToStream().
|
inlineprotected |
Return vector-space that describes that size/layout of this vector.
Definition at line 121 of file fei_Vector_core.hpp.
References vecSpace_.
Referenced by fei::Vector_Impl< T >::getVectorSpace().
|
inlineprotected |
Set vector-space that describes the size/layout of this vector.
Definition at line 127 of file fei_Vector_core.hpp.
References vecSpace_.
Referenced by fei::Vector_Impl< T >::setVectorSpace().
|
inlineprotected |
Query for first locally-owned vector position.
Definition at line 133 of file fei_Vector_core.hpp.
References firstLocalOffset_.
|
inlineprotected |
Query for last locally-owned vector position.
Definition at line 136 of file fei_Vector_core.hpp.
References lastLocalOffset_.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
setFEVector
Definition at line 146 of file fei_Vector_core.hpp.
References haveFEVector_.
Referenced by fei::Vector_Impl< T >::Vector_Impl().
|
inlineprotected |
remotelyOwned
Definition at line 149 of file fei_Vector_core.hpp.
References remotelyOwned_.
Referenced by fei::Vector_Impl< T >::Vector_Impl().
|
inlineprotected |
Definition at line 150 of file fei_Vector_core.hpp.
References remotelyOwned_.
|
inlineprotected |
Definition at line 151 of file fei_Vector_core.hpp.
References remotelyOwnedProcs_.
|
inlineprotected |
Definition at line 152 of file fei_Vector_core.hpp.
References remotelyOwnedProcs_.
|
inlineprotected |
Definition at line 154 of file fei_Vector_core.hpp.
References remotelyOwned_, and remotelyOwnedProcs_.
|
inlineprotected |
Definition at line 170 of file fei_Vector_core.hpp.
References remotelyOwned_, and remotelyOwnedProcs_.
|
private |
Definition at line 354 of file fei_Vector_core.cpp.
References fei::CSVec::coefs(), fei::CSVec::indices(), fei::impl_utils::pack_indices_coefs(), and fei::set_values().
|
protected |
Definition at line 181 of file fei_Vector_core.hpp.
Referenced by Vector_core().
|
private |
Definition at line 190 of file fei_Vector_core.hpp.
Referenced by get_vector_space(), and set_vector_space().
|
private |
Definition at line 192 of file fei_Vector_core.hpp.
Referenced by Vector_core().
|
private |
Definition at line 194 of file fei_Vector_core.hpp.
Referenced by firstLocalOffset(), and Vector_core().
|
private |
Definition at line 194 of file fei_Vector_core.hpp.
Referenced by lastLocalOffset(), and Vector_core().
|
private |
Definition at line 194 of file fei_Vector_core.hpp.
Referenced by Vector_core().
|
private |
Definition at line 196 of file fei_Vector_core.hpp.
Referenced by work_indices().
|
private |
Definition at line 197 of file fei_Vector_core.hpp.
Referenced by work_indices2().
|
private |
Definition at line 199 of file fei_Vector_core.hpp.
Referenced by haveFEVector(), and setFEVector().
|
private |
Definition at line 201 of file fei_Vector_core.hpp.
Referenced by getRemotelyOwned(), and remotelyOwnedProcs().
|
private |
Definition at line 202 of file fei_Vector_core.hpp.
Referenced by getRemotelyOwned(), and remotelyOwned().
|
private |
Definition at line 203 of file fei_Vector_core.hpp.
|
private |
Definition at line 204 of file fei_Vector_core.hpp.
|
private |
Definition at line 205 of file fei_Vector_core.hpp.
|
private |
Definition at line 206 of file fei_Vector_core.hpp.
|
private |
Definition at line 207 of file fei_Vector_core.hpp.
|
private |
Definition at line 208 of file fei_Vector_core.hpp.
|
private |
Definition at line 210 of file fei_Vector_core.hpp.
|
private |
Definition at line 211 of file fei_Vector_core.hpp.
Referenced by Vector_core().