FEI Version of the Day
Namespaces | Classes | Typedefs | Enumerations | Functions
fei Namespace Reference

Namespaces

namespace  impl_utils
namespace  utils

Classes

class  BlockLinearProblemManager
struct  CommMap
class  MessageHandler
class  ConnectivityBlock
class  CSRMat
class  CSVec
class  ctg_set
class  Dof
struct  less_rank_id_field
struct  less_field_rank_id
class  DofMapper
struct  EqnRecord
class  Factory
class  FEI_Impl
class  FieldDofMap
class  FieldMask
class  Graph
class  Graph_Impl
class  GraphReducer
class  IndexTable
class  LinearProblemManager
class  LinearSystem
class  LogFile
class  Logger
class  LogManager
class  Lookup_Impl
class  Matrix
class  Matrix_Impl
class  MatrixGraph
class  MatrixGraph_Impl2
struct  MatrixTraits
struct  MatrixTraits< FiniteElementData >
struct  MatrixTraits< FillableMat >
struct  MatrixTraits< fei::LinearProblemManager >
struct  MatrixTraits< LinearSystemCore >
class  Param
class  ParameterSet
class  Pattern
class  Record
class  Record_Operator
class  ReverseMapper
class  SharedIDs
class  SharedPtr
class  Solver
class  SparseRowGraph
class  Vector
class  Vector_core
class  Vector_Impl
class  VectorSpace
struct  VectorTraits
struct  VectorTraits< FiniteElementData >
struct  VectorTraits< fei::LinearProblemManager >
struct  VectorTraits< LinearSystemCore >

Typedefs

typedef snl_fei::Constraint
< fei::Record< int > * > 
ConstraintType

Enumerations

enum  OutputLevel

Functions

template<typename T >
int lowerBound (const T &item, const T *list, int len)
template<typename T >
int binarySearch (const T &item, const T *list, int len)
template<typename T >
void insertion_sort_with_companions (int len, int *array, T *companions)
template<typename T >
int binarySearch (const T &item, const T *list, int len, int &insertPoint)
template<typename T >
int binarySearch (const T &item, const std::vector< T > &list, int &insertPoint)
template<typename T >
int binarySearch (const T &item, const std::vector< T > &list)
template<typename T >
int binarySearch (const T &item, const T *list, int, int start, int end, int &insertPoint)
template<typename T >
int binarySearch (int numItems, const T *items, int *offsets, const T *list, int listLength)
template<class T >
int sortedListInsert (const T &item, std::vector< T > &list)
template<class T >
int sortedListInsert (const T &item, T *&list, int &len, int &allocLen)
template<class T >
int listInsert (const T &item, int offset, T *&list, int &usedLength, int &allocatedLength, int allocChunkSize=200)
template<class T >
int searchList (const T &item, const T *list, int len)
template<typename T >
void addItemsToCommMap (int proc, size_t numItems, const T *items, typename CommMap< T >::Type &comm_map, bool keep_sorted_and_unique=true)
int localProc (MPI_Comm comm)
int numProcs (MPI_Comm comm)
int mirrorProcs (MPI_Comm comm, std::vector< int > &toProcs, std::vector< int > &fromProcs)
int mirrorCommPattern (MPI_Comm comm, comm_map *inPattern, comm_map *&outPattern)
int exchangeIntData (MPI_Comm comm, const std::vector< int > &sendProcs, std::vector< int > &sendData, const std::vector< int > &recvProcs, std::vector< int > &recvData)
int Allreduce (MPI_Comm comm, bool localBool, bool &globalBool)
template<class T >
int GlobalMax (MPI_Comm comm, std::vector< T > &local, std::vector< T > &global)
template<class T >
int GlobalMax (MPI_Comm comm, T local, T &global)
template<class T >
int GlobalMin (MPI_Comm comm, T local, T &global)
template<class T >
int GlobalSum (MPI_Comm comm, std::vector< T > &local, std::vector< T > &global)
template<class T >
int GlobalSum (MPI_Comm comm, T local, T &global)
template<class T >
int Allgatherv (MPI_Comm comm, std::vector< T > &sendbuf, std::vector< int > &recvLengths, std::vector< T > &recvbuf)
template<typename T >
int exchangeCommMapData (MPI_Comm comm, const typename CommMap< T >::Type &sendCommMap, typename CommMap< T >::Type &recvCommMap, bool recvProcsKnownOnEntry=false, bool recvLengthsKnownOnEntry=false)
void set_console_ostream (std::ostream &os)
std::ostream & console_out ()
void multiply_CSRMat_CSVec (const CSRMat &A, const CSVec &x, CSVec &y)
void multiply_trans_CSRMat_CSVec (const CSRMat &A, const CSVec &x, CSVec &y)
void multiply_CSRMat_CSRMat (const CSRMat &A, const CSRMat &B, CSRMat &C, bool storeResultZeros)
void multiply_trans_CSRMat_CSRMat (const CSRMat &A, const CSRMat &B, CSRMat &C, bool storeResultZeros)
void add_CSVec_CSVec (const CSVec &u, CSVec &v)
void print (std::ostream &os, const FillableMat &mat)
int count_nnz (const FillableMat &mat)
void get_row_numbers (const FillableMat &mat, std::vector< int > &rows)
void set_shared_ids (MPI_Comm comm, const snl_fei::RecordCollection &records, fei::SharedIDs< int > &sharedIDs)
template<typename T , typename U >
bool operator== (const SharedPtr< T > &a, const SharedPtr< U > &b)
template<typename T , typename U >
bool operator!= (const SharedPtr< T > &a, const SharedPtr< U > &b)
int find_row_start (int row, const SparseRowGraph &srg)
template<typename SET_TYPE >
void copySetToArray (const SET_TYPE &set_obj, int lenList, int *list)
template<typename T >
void copySetToVector (const std::set< T > &set_obj, std::vector< T > &vec)
template<typename MAP_TYPE >
void copyKeysToArray (const MAP_TYPE &map_obj, unsigned lenList, int *list)
template<typename MAP_TYPE >
void copyKeysToVector (const MAP_TYPE &map_obj, std::vector< int > &keyvector)
template<typename MAP_TYPE >
void copyToArrays (MAP_TYPE &map_obj, int lenList, int *keylist, int *vallist)
template<typename MAP_TYPE >
void destroyValues (MAP_TYPE &map_obj)
template<typename MAP_TYPE , typename SET_TYPE >
void writeToStream (snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &table, FEI_OSTREAM &os, const char *lineprefix=NULL)
template<typename MAP_TYPE , typename SET_TYPE >
fei::SharedPtr
< fei::SparseRowGraph
createSparseRowGraph (const std::vector< snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > * > &tables)
template<typename MAP_TYPE , typename SET_TYPE >
void copyToSparseRowGraph (snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &table, fei::SparseRowGraph &srg)
template<typename MAP_TYPE , typename SET_TYPE >
fei::SharedPtr
< fei::SparseRowGraph
createSparseRowGraph (snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &table)
template<typename MAP_TYPE , typename SET_TYPE >
int countNonzeros (snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &table)
fei::SharedPtr< LibraryWrapper > create_LibraryWrapper (MPI_Comm comm, const char *libraryName)
fei::SharedPtr< fei::Factorycreate_fei_Factory (MPI_Comm comm, const char *libraryName)

Detailed Description

The fei namespace contains public functions, classes and interfaces.


Typedef Documentation

alias for constraint type

Definition at line 60 of file fei_MatrixGraph.hpp.


Enumeration Type Documentation

enumeration for various output levels

Definition at line 81 of file fei_fwd.hpp.


Function Documentation

template<typename T >
int fei::lowerBound ( const T &  item,
const T *  list,
int  len 
) [inline]

Lower bound finds the first entry in list that is not less than item. A binary search is used, and list is assumed to be sorted.

Definition at line 58 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( const T &  item,
const T *  list,
int  len 
) [inline]

Binary search of a list that's assumed to be sorted.

Parameters:
itemto be searched for.
listList to be searched.
lenLength of list.
Returns:
offset Offset at which item was found, or -1 if not found.

Definition at line 103 of file fei_ArrayUtils.hpp.

template<typename T >
void fei::insertion_sort_with_companions ( int  len,
int *  array,
T *  companions 
) [inline]

sort the specified array, and move the contents of the specified companions array to match the new order. This is an implementation of the insertion sort algorithm.

Definition at line 117 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( const T &  item,
const T *  list,
int  len,
int &  insertPoint 
) [inline]

Binary search of a list that's assumed to be sorted.

Parameters:
itemto be searched for.
listList to be searched.
lenLength of list.
insertPointIf item is not found, this is the offset into list at which item could be inserted while maintaining sortedness. Not referenced if item is found.
Returns:
offset Offset at which item was found, or -1 if not found.

Definition at line 150 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( const T &  item,
const std::vector< T > &  list,
int &  insertPoint 
) [inline]

Binary search of an std::vector that's assumed to be sorted.

Definition at line 166 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( const T &  item,
const std::vector< T > &  list 
) [inline]

Binary search of an std::vector that's assumed to be sorted.

Definition at line 178 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( const T &  item,
const T *  list,
int  ,
int  start,
int  end,
int &  insertPoint 
) [inline]

Perform a binary search but limit the search to a given range.

Parameters:
itemValue to be searched for.
list
listLength
startStarting offset of search 'window'.
endEnding offset of search 'window'. end should be less than listLength.
insertPoint
Returns:
offset position at which item was found. If not found, returns -1. (Since 0-based indexing is used, 'end' can't be greater than listLength-1.)

Definition at line 196 of file fei_ArrayUtils.hpp.

template<typename T >
int fei::binarySearch ( int  numItems,
const T *  items,
int *  offsets,
const T *  list,
int  listLength 
) [inline]

Perform a binary search for each item in a sorted input list.

Parameters:
numItemsnumber of items to be searched for
itemslist of items (length numItems) to be searched for
offsetslist (length numItems) allocated by caller. On exit, offsets[i] contains the offset of item in 'list', or -1 if item is not present in 'list'.
listarray (length 'listLength') to be searched
listLengthlength of input array 'list'

Definition at line 217 of file fei_ArrayUtils.hpp.

template<class T >
int fei::sortedListInsert ( const T &  item,
std::vector< T > &  list 
) [inline]

Insert an item into a sorted list, maintaining sortedness. If the item is inserted, return the offset at which it was inserted. If the item was already present, return -1.

Definition at line 244 of file fei_ArrayUtils.hpp.

template<class T >
int fei::sortedListInsert ( const T &  item,
T *&  list,
int &  len,
int &  allocLen 
) [inline]

Insert an item into a sorted list, maintaining sortedness.

Definition at line 260 of file fei_ArrayUtils.hpp.

template<class T >
int fei::listInsert ( const T &  item,
int  offset,
T *&  list,
int &  usedLength,
int &  allocatedLength,
int  allocChunkSize = 200 
) [inline]

Insert an item into a list at a specified position.

Definition at line 290 of file fei_ArrayUtils.hpp.

template<class T >
int fei::searchList ( const T &  item,
const T *  list,
int  len 
) [inline]

Simple exhaustive search of a list.

Returns:
offset at which item is found, or -1 if not found.

Definition at line 331 of file fei_ArrayUtils.hpp.

template<typename T >
void fei::addItemsToCommMap ( int  proc,
size_t  numItems,
const T *  items,
typename CommMap< T >::Type &  comm_map,
bool  keep_sorted_and_unique = true 
)

Given a proc and an array of items, add the mapping proc -> items to the given comm_map. Optionally ensure that the comm_map's vector of items for proc remains sorted and unique.

Definition at line 66 of file fei_CommMap.hpp.

int fei::localProc ( MPI_Comm  comm)

Return the MPI rank of the local processor. If the macro FEI_SER is defined, returns 0; otherwise calls MPI_Comm_rank.

Definition at line 55 of file fei_CommUtils.cpp.

int fei::numProcs ( MPI_Comm  comm)

Return the number of processors (number of MPI ranks). If the macro FEI_SER is defined, returns 1; otherwise calls MPI_Comm_size.

Definition at line 67 of file fei_CommUtils.cpp.

int fei::mirrorProcs ( MPI_Comm  comm,
std::vector< int > &  toProcs,
std::vector< int > &  fromProcs 
)

Scenario: The local processor has a list of processors to which data will be sent, but doesn't know which processors data will be received from. This method produces that list of processors to be received from. This is a collective method.

Definition at line 87 of file fei_CommUtils.cpp.

int fei::mirrorCommPattern ( MPI_Comm  comm,
comm_map *  inPattern,
comm_map *&  outPattern 
)

Given a comm-pattern, create and initialize its mirror...

Definition at line 140 of file fei_CommUtils.cpp.

int fei::exchangeIntData ( MPI_Comm  comm,
const std::vector< int > &  sendProcs,
std::vector< int > &  sendData,
const std::vector< int > &  recvProcs,
std::vector< int > &  recvData 
)

Given a list of processors to send to, a scalar to send to each, and a list of processors to receive from, perform the exchange.

Parameters:
sendProcsInput. List of processors to send to.
sendDataInput. List of data, same length as 'sendProcs', to be sent. (One item to be sent to each send proc.) Note: sendData is treated as const, but not declared const because it is passed to the MPI_Send routine which takes (non-const) void*.
recvProcsInput. List of processors to receive from. Note: if you don't know which procs will be recv'd from, see the 'mirrorProcs' function above.
recvDataOutput. On exit, contains one item received from each recv proc.
Returns:
error-code 0 if successful

Definition at line 257 of file fei_CommUtils.cpp.

int fei::Allreduce ( MPI_Comm  comm,
bool  localBool,
bool &  globalBool 
)

Perform a "global OR" to reduce the local-bool to a global-bool. i.e., if localBool is true on any processor, then on exit globalBool will be true on all processors.

Definition at line 307 of file fei_CommUtils.cpp.

template<class T >
int fei::GlobalMax ( MPI_Comm  comm,
std::vector< T > &  local,
std::vector< T > &  global 
)

Perform an MPI_Allreduce with op = MPI_MAX

Parameters:
localInput.
globalOutput.
Returns:
MPI error-code

Definition at line 124 of file fei_CommUtils.hpp.

template<class T >
int fei::GlobalMax ( MPI_Comm  comm,
local,
T &  global 
)

Perform an MPI_Allreduce with op = MPI_MAX

Parameters:
localInput.
globalOutput.
Returns:
MPI error-code

Definition at line 154 of file fei_CommUtils.hpp.

template<class T >
int fei::GlobalMin ( MPI_Comm  comm,
local,
T &  global 
)

Perform an MPI_Allreduce with op = MPI_MIN

Parameters:
localInput.
globalOutput.
Returns:
MPI error-code

Definition at line 173 of file fei_CommUtils.hpp.

template<class T >
int fei::GlobalSum ( MPI_Comm  comm,
std::vector< T > &  local,
std::vector< T > &  global 
)

Perform an MPI_Allreduce with op = MPI_SUM

Parameters:
localInput.
globalOutput.
Returns:
MPI error-code

Definition at line 192 of file fei_CommUtils.hpp.

template<class T >
int fei::GlobalSum ( MPI_Comm  comm,
local,
T &  global 
)

Single-scalar version of the GlobalSum function.

Definition at line 210 of file fei_CommUtils.hpp.

template<class T >
int fei::Allgatherv ( MPI_Comm  comm,
std::vector< T > &  sendbuf,
std::vector< int > &  recvLengths,
std::vector< T > &  recvbuf 
)

Allgatherv function that takes std::vectors.

Definition at line 226 of file fei_CommUtils.hpp.

template<typename T >
int fei::exchangeCommMapData ( MPI_Comm  comm,
const typename CommMap< T >::Type &  sendCommMap,
typename CommMap< T >::Type &  recvCommMap,
bool  recvProcsKnownOnEntry = false,
bool  recvLengthsKnownOnEntry = false 
)

Perform communication send data from one CommMap and receive into another CommMap.

Parameters:
commInput. MPI communicator.
sendCommMapInput. Maps destination processors to vectors of data to be sent to them.
recvCommMapOutput. On exit, will map source processors to vectors of data that was received from them.

Definition at line 306 of file fei_CommUtils.hpp.

void fei::set_console_ostream ( std::ostream &  os)

Set the output stream that fei writes output to. fei almost never writes console output, except when errors occur. This ostream is the ostream that is returned by the 'console_out()' function below.

Definition at line 56 of file fei_console_ostream.cpp.

std::ostream & fei::console_out ( )

Obtain an output-stream to write 'screen' output to. By default this output-stream is std::cerr, but can be set to any std::ostream using the above 'set_console_ostream' function.

Definition at line 61 of file fei_console_ostream.cpp.

void fei::multiply_CSRMat_CSVec ( const CSRMat &  A,
const CSVec &  x,
CSVec &  y 
)

form y = A*x

Definition at line 137 of file fei_CSRMat.cpp.

void fei::multiply_trans_CSRMat_CSVec ( const CSRMat &  A,
const CSVec &  x,
CSVec &  y 
)

form y = A^T*x

Definition at line 183 of file fei_CSRMat.cpp.

void fei::multiply_CSRMat_CSRMat ( const CSRMat &  A,
const CSRMat &  B,
CSRMat &  C,
bool  storeResultZeros = false 
)

form C = A*B

Definition at line 224 of file fei_CSRMat.cpp.

void fei::multiply_trans_CSRMat_CSRMat ( const CSRMat &  A,
const CSRMat &  B,
CSRMat &  C,
bool  storeResultZeros = false 
)

form C = A^T*B

Definition at line 303 of file fei_CSRMat.cpp.

void fei::add_CSVec_CSVec ( const CSVec &  u,
CSVec &  v 
)

form v = v + u

Definition at line 133 of file fei_CSVec.cpp.

void fei::print ( std::ostream &  os,
const FillableMat &  mat 
)

Print the contents of a FillableMat to the given std::ostream.

Definition at line 289 of file fei_FillableMat.cpp.

int fei::count_nnz ( const FillableMat &  mat)

Return the number of nonzeros in mat.

Definition at line 307 of file fei_FillableMat.cpp.

void fei::get_row_numbers ( const FillableMat &  mat,
std::vector< int > &  rows 
)

Fill a std::vector with the row-numbers from the given matrix.

Definition at line 324 of file fei_FillableMat.cpp.

void fei::set_shared_ids ( MPI_Comm  comm,
const snl_fei::RecordCollection records,
fei::SharedIDs< int > &  sharedIDs 
)

Given a record-collection, perform inter-processor communication to find out which IDs are shared among multiple processors, and fill the SharedIDs object with those mappings.

Definition at line 96 of file fei_set_shared_ids.cpp.

template<typename T , typename U >
bool fei::operator== ( const SharedPtr< T > &  a,
const SharedPtr< U > &  b 
) [inline]

Equals operator for shared pointers.

Definition at line 332 of file fei_SharedPtr.hpp.

template<typename T , typename U >
bool fei::operator!= ( const SharedPtr< T > &  a,
const SharedPtr< U > &  b 
) [inline]

Not equals operator for shared pointers.

Definition at line 339 of file fei_SharedPtr.hpp.

int fei::find_row_start ( int  row,
const SparseRowGraph &  srg 
) [inline]

Given a row-number and a SparseRowGraph object, return the offset at which that row's column-indices start in the SparseRowGraph object's packedColumnIndices vector.

If the given row-number is not found in the SparseRowGraph object's vector of row-numbers, return -1.

Definition at line 121 of file fei_SparseRowGraph.hpp.

template<typename SET_TYPE >
void fei::copySetToArray ( const SET_TYPE &  set_obj,
int  lenList,
int *  list 
)

dangerous function to copy a set to an array, assuming the set contents are of type int

Definition at line 65 of file fei_TemplateUtils.hpp.

template<typename T >
void fei::copySetToVector ( const std::set< T > &  set_obj,
std::vector< T > &  vec 
)

copy a set to a vector

Definition at line 83 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE >
void fei::copyKeysToArray ( const MAP_TYPE &  map_obj,
unsigned  lenList,
int *  list 
)

dangerous function to copy map keys to an array, assuming the keys are of type int

Definition at line 99 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE >
void fei::copyKeysToVector ( const MAP_TYPE &  map_obj,
std::vector< int > &  keyvector 
)

function to copy map keys to a vector, assuming the keys are of type int

Definition at line 117 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE >
void fei::copyToArrays ( MAP_TYPE &  map_obj,
int  lenList,
int *  keylist,
int *  vallist 
)

dangerous function to copy a map object to a pair of arrays, assuming the keys and values of the map are of type int.

Definition at line 151 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE >
void fei::destroyValues ( MAP_TYPE &  map_obj)

iterate a map object, destroying its contents

Definition at line 170 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE , typename SET_TYPE >
void fei::writeToStream ( snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &  table,
FEI_OSTREAM &  os,
const char *  lineprefix = NULL 
)

write a ragged-table to a specified ostream

Definition at line 183 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE , typename SET_TYPE >
fei::SharedPtr<fei::SparseRowGraph> fei::createSparseRowGraph ( const std::vector< snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > * > &  tables)

create fei::SparseRowGraph object from a vector of ragged-tables. user is responsible for destroying the fei::SparseRowGraph

Definition at line 253 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE , typename SET_TYPE >
void fei::copyToSparseRowGraph ( snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &  table,
fei::SparseRowGraph srg 
)

copy a ragged-table to an existing fei::SparseRowGraph object.

Definition at line 302 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE , typename SET_TYPE >
fei::SharedPtr<fei::SparseRowGraph> fei::createSparseRowGraph ( snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &  table)

create fei::SparseRowGraph object from a ragged-table.

Definition at line 350 of file fei_TemplateUtils.hpp.

template<typename MAP_TYPE , typename SET_TYPE >
int fei::countNonzeros ( snl_fei::RaggedTable< MAP_TYPE, SET_TYPE > &  table)

function to count the "nonzeros" in a ragged-table

Definition at line 361 of file fei_TemplateUtils.hpp.

fei::SharedPtr< LibraryWrapper > fei::create_LibraryWrapper ( MPI_Comm  comm,
const char *  libraryName 
)

Create an instance of LibraryWrapper. Throws std::runtime_error if the input libraryName is not recognized. (names are case-sensitive)

Parameters:
libraryNameInput name of the solver library that is to be used. Valid values of this parameter are:
  • Aztec
  • FETI
Returns:
shared-pointer holding newly-created LibraryWrapper instance.

Definition at line 65 of file LibraryFactory.cpp.

fei::SharedPtr< fei::Factory > fei::create_fei_Factory ( MPI_Comm  comm,
const char *  libraryName 
)

Create an instance of the fei::Factory interface. Throws std::runtime_error if the input libraryName is not recognized. (names are case-sensitive)

Parameters:
libraryNameInput name of solver library, same valid values as for 'create_LibraryWrapper' above, as well as allowing "Trilinos".
Returns:
shared-pointer holding newly-created fei::Factory instance.

Definition at line 112 of file LibraryFactory.cpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends