105 }
else if ( j <= 0 ) {
106 OOFEM_ERROR(
"matrix error on columns : %d <= 0", j);
107 }
else if ( i >
nRows ) {
127 virtual std::unique_ptr<SparseMtrx>
clone()
const
173 for (
int i = 1; i <= m.
giveSize(); ++i ) {
174 this->
at(i, i) += x * m.
at(i);
265 virtual double &
at(
int i,
int j) = 0;
267 virtual double at(
int i,
int j)
const = 0;
292 this->
times(x, answer);
Vector operator*(const Vector &a, double b)
Index giveSize() const
Returns the size of receiver.
virtual int assemble(const IntArray &rloc, const IntArray &cloc, const FloatMatrix &mat)=0
long SparseMtrxVersionType
SparseMtrxVersionType giveVersion()
Return receiver version.
virtual double & at(int i, int j)=0
Returns coefficient at position (i,j).
int nColumns
Number of columns.
virtual SparseMtrxType giveType() const =0
Sparse matrix type identification.
virtual void writeToFile(const char *fname) const
Helpful for debugging, writes the matrix to given file.
SparseMtrxVersionType version
virtual bool canBeFactorized() const =0
Determines, whether receiver can be factorized.
void checkBounds(int i, int j) const
virtual SparseMtrx * factorized()
virtual void add(double x, SparseMtrx &m)
virtual void toFloatMatrix(FloatMatrix &answer) const
Converts receiving sparse matrix to a dense float matrix.
int giveNumberOfRows() const
Returns number of rows of receiver.
virtual FloatArray * backSubstitutionWith(FloatArray &y) const
int giveNumberOfColumns() const
Returns number of columns of receiver.
virtual void addDiagonal(double x, FloatArray &m)
virtual const char * giveClassName() const =0
virtual std::unique_ptr< SparseMtrx > giveSubMatrix(const IntArray &rows, const IntArray &cols)
virtual void timesT(const FloatArray &x, FloatArray &answer) const
virtual bool isAsymmetric() const =0
Returns true if asymmetric.
virtual std::unique_ptr< SparseMtrx > clone() const
virtual int buildInternalStructure(EngngModel *eModel, int n, int m, const IntArray &I, const IntArray &J)
virtual int buildInternalStructure(EngngModel *eModel, int di, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s)
std::string errorInfo(const char *func) const
Error printing helper.
SparseMtrx(int n=0, int m=0)
bool isSquare() const
Returns nonzero if receiver is square matrix.
virtual void timesT(const FloatMatrix &B, FloatMatrix &answer) const
virtual void times(double x)
virtual double at(int i, int j) const =0
Returns coefficient at position (i,j).
virtual int assembleBegin()
Starts assembling the elements.
virtual ~SparseMtrx()
Destructor.
FloatArray trans_mult(const FloatArray &x) const
IML compatibility, .
virtual void printYourself() const
Prints receiver to stdout. Works only for relatively small matrices.
virtual void times(const FloatMatrix &B, FloatMatrix &answer) const
virtual int assemble(const IntArray &loc, const FloatMatrix &mat)=0
bool isNotEmpty() const
Tests for empty matrix.
virtual int assembleEnd()
Returns when assemble is completed.
virtual bool isAllocatedAt(int i, int j) const
Checks whether memory is allocated at position (i,j).
virtual int buildInternalStructure(EngngModel *eModel, int di, const UnknownNumberingScheme &s)=0
virtual double computeNorm() const
Returns the norm of receiver.
virtual void zero()=0
Zeroes the receiver.
virtual void times(const FloatArray &x, FloatArray &answer) const
virtual void printStatistics() const
Prints the receiver statistics (one-line) to stdout.
#define OOFEM_LOG_INFO(...)