FEI Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
fei::MatrixReducer Class Reference

#include <fei_MatrixReducer.hpp>

Inheritance diagram for fei::MatrixReducer:

Public Member Functions

 MatrixReducer (fei::SharedPtr< fei::Reducer > reducer, fei::SharedPtr< fei::Matrix > target)
virtual ~MatrixReducer ()
fei::SharedPtr< fei::MatrixgetTargetMatrix ()
const char * typeName ()
int parameters (const fei::ParameterSet &paramset)
fei::SharedPtr< fei::MatrixGraphgetMatrixGraph () const
void setMatrixGraph (fei::SharedPtr< fei::MatrixGraph > matrixGraph)
int getGlobalNumRows () const
int getLocalNumRows () const
int putScalar (double scalar)
int getRowLength (int row, int &length) const
int copyOutRow (int row, int len, double *coefs, int *indices) const
int sumIn (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)
int copyIn (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)
int sumInFieldData (int fieldID, int idType, int rowID, int colID, const double *const *data, int format=0)
int sumInFieldData (int fieldID, int idType, int rowID, int colID, const double *data, int format=0)
int sumIn (int blockID, int connectivityID, const double *const *values, int format=0)
int globalAssemble ()
int multiply (fei::Vector *x, fei::Vector *y)
void setCommSizes ()
int gatherFromOverlap (bool accumulate=true)
int writeToFile (const char *filename, bool matrixMarketFormat=true)
int writeToStream (FEI_OSTREAM &ostrm, bool matrixMarketFormat=true)
bool usingBlockEntryStorage ()
int giveToUnderlyingMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)
int giveToUnderlyingBlockMatrix (int row, int rowDim, int numCols, const int *cols, const int *LDAs, const int *colDims, const double *const *values, bool sumInto)
void markState ()
bool changedSinceMark ()
Public Member Functions inherited from fei::Matrix
virtual ~Matrix ()
virtual double * getBeginPointer ()
virtual int getOffset (int row, int col)

Private Member Functions

int giveToMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)
int giveToBlockMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto)

Private Attributes

fei::SharedPtr< fei::Reducerreducer_
fei::SharedPtr< fei::Matrixtarget_
bool globalAssembleCalled_
bool changedSinceMark_

Detailed Description

Definition at line 27 of file fei_MatrixReducer.hpp.

Constructor & Destructor Documentation

◆ MatrixReducer()

fei::MatrixReducer::MatrixReducer ( fei::SharedPtr< fei::Reducer > reducer,
fei::SharedPtr< fei::Matrix > target )

◆ ~MatrixReducer()

fei::MatrixReducer::~MatrixReducer ( )
virtual

Destructor

Definition at line 40 of file fei_MatrixReducer.cpp.

Member Function Documentation

◆ getTargetMatrix()

fei::SharedPtr< fei::Matrix > fei::MatrixReducer::getTargetMatrix ( )
inline

◆ typeName()

const char * fei::MatrixReducer::typeName ( )
inlinevirtual

Return a name describing the run-time type of this object.

Implements fei::Matrix.

Definition at line 43 of file fei_MatrixReducer.hpp.

References target_.

◆ parameters()

int fei::MatrixReducer::parameters ( const fei::ParameterSet & paramset)
virtual

Parameters method

Implements fei::Matrix.

Definition at line 45 of file fei_MatrixReducer.cpp.

References target_.

◆ getMatrixGraph()

fei::SharedPtr< fei::MatrixGraph > fei::MatrixReducer::getMatrixGraph ( ) const
inlinevirtual

Obtain the fei::MatrixGraph associated with this matrix

Implements fei::Matrix.

Definition at line 49 of file fei_MatrixReducer.hpp.

References target_.

Referenced by sumIn(), and writeToFile().

◆ setMatrixGraph()

void fei::MatrixReducer::setMatrixGraph ( fei::SharedPtr< fei::MatrixGraph > matrixGraph)
virtual

Set the fei::MatrixGraph associated with this matrix

Implements fei::Matrix.

Definition at line 51 of file fei_MatrixReducer.cpp.

References target_.

◆ getGlobalNumRows()

int fei::MatrixReducer::getGlobalNumRows ( ) const
virtual

Get the global number of rows in the matrix.

Implements fei::Matrix.

Definition at line 57 of file fei_MatrixReducer.cpp.

References target_.

◆ getLocalNumRows()

int fei::MatrixReducer::getLocalNumRows ( ) const
virtual

Get the local number of rows in the matrix.

Implements fei::Matrix.

Definition at line 63 of file fei_MatrixReducer.cpp.

References target_.

◆ putScalar()

int fei::MatrixReducer::putScalar ( double scalar)
virtual

Set a specified scalar throughout the matrix.

Implements fei::Matrix.

Definition at line 68 of file fei_MatrixReducer.cpp.

References target_.

◆ getRowLength()

int fei::MatrixReducer::getRowLength ( int row,
int & length ) const
virtual

Get the length of a row of the matrix.

Parameters
rowGlobal 0-based equation number
lengthOutput. Length of the row.
Returns
error-code non-zero if any error occurs.

Implements fei::Matrix.

Definition at line 72 of file fei_MatrixReducer.cpp.

References FEI_OSTRINGSTREAM, reducer_, and target_.

◆ copyOutRow()

int fei::MatrixReducer::copyOutRow ( int row,
int len,
double * coefs,
int * indices ) const
virtual

Obtain a copy of the coefficients and indices for a row of the matrix.

Parameters
rowGlobal 0-based equation number
lenLength of the caller-allocated coefs and indices arrays
coefsCaller-allocated array, length 'len', to be filled with coefficients
indicesCaller-allocated array, length 'len', to be filled with indices. (These indices will be global 0-based equation numbers.)
Returns
error-code non-zero if any error occurs.

Implements fei::Matrix.

Definition at line 85 of file fei_MatrixReducer.cpp.

References FEI_OSTRINGSTREAM, reducer_, and target_.

◆ sumIn() [1/2]

int fei::MatrixReducer::sumIn ( int numRows,
const int * rows,
int numCols,
const int * cols,
const double *const * values,
int format = 0 )
virtual

Sum coefficients into the matrix, adding them to any coefficients that may already exist at the specified row/column locations.

Parameters
numRows
rows
numCols
cols
values
formatFor compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized

Implements fei::Matrix.

Definition at line 103 of file fei_MatrixReducer.cpp.

References reducer_, and target_.

Referenced by sumIn().

◆ copyIn()

int fei::MatrixReducer::copyIn ( int numRows,
const int * rows,
int numCols,
const int * cols,
const double *const * values,
int format = 0 )
virtual

Copy coefficients into the matrix, overwriting any coefficients that may already exist at the specified row/column locations.

Parameters
numRows
rows
numCols
cols
values
formatFor compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized

Implements fei::Matrix.

Definition at line 114 of file fei_MatrixReducer.cpp.

References reducer_, and target_.

◆ sumInFieldData() [1/2]

int fei::MatrixReducer::sumInFieldData ( int fieldID,
int idType,
int rowID,
int colID,
const double *const * data,
int format = 0 )
virtual

Sum coefficients into the matrix, specifying row/column locations by identifier/fieldID pairs.

Parameters
fieldIDInput. field-identifier for which data is being input.
idTypeInput. The identifier-type of the identifiers.
rowIDInput. Identifier in row-space, for which data is being input.
colIDInput. Identifier in column-space, for which data is being input.
dataInput. C-style table of data. num-rows is the field-size (i.e., number of scalar components that make up the field) of 'fieldID', as is num-columns.
formatFor compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized
Returns
error-code 0 if successful

Implements fei::Matrix.

Definition at line 125 of file fei_MatrixReducer.cpp.

References FEI_DENSE_ROW, reducer_, and target_.

Referenced by sumInFieldData().

◆ sumInFieldData() [2/2]

int fei::MatrixReducer::sumInFieldData ( int fieldID,
int idType,
int rowID,
int colID,
const double * data,
int format = 0 )
virtual

Sum coefficients into the matrix, specifying row/column locations by identifier/fieldID pairs.

Parameters
fieldIDInput. field-identifier for which data is being input.
idTypeInput. The identifier-type of the identifiers.
rowIDInput. Identifier in row-space, for which data is being input.
colIDInput. Identifier in column-space, for which data is being input.
dataInput. 1-D list representing a packed table of data. Data may be backed in row-major or column-major order and this may be specified with the 'format' argument. The "table" of data is of size num-rows X num-columns and num-rows is the field-size (i.e., number of scalar components that make up the field) of 'fieldID', as is num-columns.
formatFor compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized
Returns
error-code 0 if successful

Implements fei::Matrix.

Definition at line 156 of file fei_MatrixReducer.cpp.

References sumInFieldData(), and target_.

◆ sumIn() [2/2]

int fei::MatrixReducer::sumIn ( int blockID,
int connectivityID,
const double *const * values,
int format = 0 )
virtual

Sum coefficients, associated with a connectivity-block that was initialized on the MatrixGraph object, into this matrix.

Parameters
blockID
connectivityID
values
formatFor compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized

Implements fei::Matrix.

Definition at line 177 of file fei_MatrixReducer.cpp.

References getMatrixGraph(), and sumIn().

◆ globalAssemble()

int fei::MatrixReducer::globalAssemble ( )
virtual

Perform any necessary internal communications/synchronizations or other operations appropriate at end of data input. For some implementations this will be a no-op.

Implements fei::Matrix.

Definition at line 198 of file fei_MatrixReducer.cpp.

References reducer_, and target_.

◆ multiply()

int fei::MatrixReducer::multiply ( fei::Vector * x,
fei::Vector * y )
virtual

Form a matrix-vector product y = 'this' * x

Implements fei::Matrix.

Definition at line 204 of file fei_MatrixReducer.cpp.

References target_.

◆ setCommSizes()

void fei::MatrixReducer::setCommSizes ( )
inlinevirtual

perform initial communication to establish message sizes that will be needed for exchanging shared-node data. Called from within gatherFromOverlap usually, doesn't usually need to be explicitly called by client code. (Power users only...)

Implements fei::Matrix.

Definition at line 186 of file fei_MatrixReducer.hpp.

References target_.

◆ gatherFromOverlap()

int fei::MatrixReducer::gatherFromOverlap ( bool accumulate = true)
virtual

After local overlapping data has been input, (e.g., element-data for a finite-element application) call this method to have data that corresponds to shared identifiers be communicated from sharing-but-not- owning processors, to owning processors.

Implements fei::Matrix.

Definition at line 207 of file fei_MatrixReducer.cpp.

References reducer_, and target_.

◆ writeToFile()

int fei::MatrixReducer::writeToFile ( const char * filename,
bool matrixMarketFormat = true )
virtual

◆ writeToStream()

int fei::MatrixReducer::writeToStream ( FEI_OSTREAM & ostrm,
bool matrixMarketFormat = true )
virtual

Implementation of fei::Matrix::writeToStream

Implements fei::Matrix.

Definition at line 292 of file fei_MatrixReducer.cpp.

References FEI_OSTREAM, and target_.

◆ usingBlockEntryStorage()

bool fei::MatrixReducer::usingBlockEntryStorage ( )
inlinevirtual

Query whether the underlying matrix object is a block-entry matrix.

Implements fei::Matrix.

Definition at line 204 of file fei_MatrixReducer.hpp.

References target_.

◆ giveToUnderlyingMatrix()

int fei::MatrixReducer::giveToUnderlyingMatrix ( int numRows,
const int * rows,
int numCols,
const int * cols,
const double *const * values,
bool sumInto,
int format )

for experts only

◆ giveToUnderlyingBlockMatrix()

int fei::MatrixReducer::giveToUnderlyingBlockMatrix ( int row,
int rowDim,
int numCols,
const int * cols,
const int * LDAs,
const int * colDims,
const double *const * values,
bool sumInto )

for experts only

◆ markState()

void fei::MatrixReducer::markState ( )
virtual

Set a "mark" point on the current state of the matrix, so that later a query can be made to see if the matrix has changed since this mark was set.

Implements fei::Matrix.

Definition at line 298 of file fei_MatrixReducer.cpp.

References target_.

◆ changedSinceMark()

bool fei::MatrixReducer::changedSinceMark ( )
virtual

Query whether the matrix has changed since markState() was called. If markState() hasn't been called since the matrix was constructed, then this query will return true.

Implements fei::Matrix.

Definition at line 301 of file fei_MatrixReducer.cpp.

References target_.

◆ giveToMatrix()

int fei::MatrixReducer::giveToMatrix ( int numRows,
const int * rows,
int numCols,
const int * cols,
const double *const * values,
bool sumInto,
int format )
private

◆ giveToBlockMatrix()

int fei::MatrixReducer::giveToBlockMatrix ( int numRows,
const int * rows,
int numCols,
const int * cols,
const double *const * values,
bool sumInto )
private

Member Data Documentation

◆ reducer_

◆ target_

◆ globalAssembleCalled_

bool fei::MatrixReducer::globalAssembleCalled_
private

Definition at line 242 of file fei_MatrixReducer.hpp.

Referenced by MatrixReducer().

◆ changedSinceMark_

bool fei::MatrixReducer::changedSinceMark_
private

Definition at line 243 of file fei_MatrixReducer.hpp.

Referenced by MatrixReducer().


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