Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE > Class Template Reference

MapMatrixMixed is a generalised, STL-map-based, sparse(ish) matrix class with mixed indices. More...

#include <map_matrix.h>

+ Inheritance diagram for oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >:

Public Types

typedef std::map< KEY_TYPE_COL, VALUE_TYPEInnerMapMixed
 Typedef to keep the code more readable.
 
typedef InnerMapMixed::iterator InnerMixedIt
 Typedef to keep the code more readable.
 
typedef InnerMapMixed::const_iterator ConstInnerMixedIt
 Typedef to keep the code more readable const version.
 
typedef std::map< KEY_TYPE_ROW, std::map< KEY_TYPE_COL, VALUE_TYPE > * > OuterMapMixed
 Typedef to keep the code more readable.
 
typedef OuterMapMixed::iterator OuterMixedIt
 Typedef to keep the code more readable.
 
typedef OuterMapMixed::const_iterator ConstOuterMixedIt
 Typedef to keep the code more readable const version.
 

Public Member Functions

 MapMatrixMixed ()
 Default (empty) constructor.
 
void operator= (const MapMatrixMixed &)=delete
 Broken assignment operator.
 
 MapMatrixMixed (const MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE > &map_mat)
 Copy constructor.
 
void copy_column (const KEY_TYPE_COL &j, std::map< KEY_TYPE_ROW, VALUE_TYPE > &copied_map)
 Copy a single column into its own map.
 
virtual ~MapMatrixMixed ()
 Destructor.
 
void clear ()
 Wipe all entries.
 
VALUE_TYPEoperator() (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j)
 Return (reference to) entry. Careful: If the entry does not exist then it is created and set to zero.
 
VALUE_TYPE get (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j) const
 Get an element corresponding to the key (i,j) Searches the container for an element with a key equivalent to (i,j) and returns the element if found, otherwise the default 0 value for the value type is returned. The container is not modified.
 
void output (std::ostream &outfile)
 Dump all non-‘zero’ entries to file. Output is in the format ‘i’, ‘j’, ‘entry[i][j]’.
 
unsigned long nnz ()
 Work out number of non-‘zero’ entries.
 
unsigned long nnz () const
 Work out number of non-‘zero’ entries, const version.
 
unsigned long size ()
 Work out total number of entries.
 
unsigned long size () const
 Work out total number of entries const version.
 

Protected Member Functions

VALUE_TYPEentry_pt (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j)
 Return pointer to entry.
 

Protected Attributes

std::map< KEY_TYPE_ROW, std::map< KEY_TYPE_COL, VALUE_TYPE > * > Row_pt
 Here's the generalised matrix structure: A map of pointers to the maps that hold the entries in each row.
 

Detailed Description

template<class KEY_TYPE_ROW, class KEY_TYPE_COL, class VALUE_TYPE>
class oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >

MapMatrixMixed is a generalised, STL-map-based, sparse(ish) matrix class with mixed indices.

The matrix is indexed by indices of type KEY_TYPE_ROW and KEY_TYPE_COL and has entries of type VALUE_TYPE.

Careful: If a zero entry is referenced then it is created in memory. Therefore this isn't really a practical sparse matrix scheme. Do not loop over ‘all’ possible indices as even looking at them will inflate the matrix until it occupies as much space as a full one – use (modification of) output routine to retrieve all nonzero entries.

However, this is not a serious restriction, as the main purpose of this class is to allow non-integer indices.

Example of usage:

// Assume we have a Vector of pointers to objects:
Vector<Rubbish*> object_pt;
[...]
// Number of objects
int nentry=object_pt.size();
// Use the pointers to the objects and associated integers as indices
// in a MapMatrixMixed whose entries are of type int
for (int i=1;i<nentry;i++)
{
for (int j=1;j<nentry;j++)
{
int number=100*i+j;
like_a_matrix(object_pt[i],j)=number;
}
}
oomph_info << "Matrix has nnz() " << like_a_matrix.nnz() <<
" and size() " << like_a_matrix.size() << std::endl;
oomph_info << "\n\n\n Here are the nonzero entries: i, j, a(i,j)\n";
like_a_matrix.output(oomph_info);
// Can be used like a normal matrix:
like_a_matrix(object_pt[1],20)+=13;
like_a_matrix(object_pt[1],1)+=13;
oomph_info << "\n\n\n Here are the nonzero entries: i, j, a(i,j)\n";
like_a_matrix.output(oomph_info);
cstr elem_len * i
Definition cfortran.h:603
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
Definition elements.cc:4320
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
void output(std::ostream &outfile)
Output function: x,y,u or x,y,z,u.
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...

Definition at line 108 of file map_matrix.h.

Member Typedef Documentation

◆ ConstInnerMixedIt

typedef InnerMapMixed::const_iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::ConstInnerMixedIt

Typedef to keep the code more readable const version.

Definition at line 124 of file map_matrix.h.

◆ ConstOuterMixedIt

typedef OuterMapMixed::const_iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::ConstOuterMixedIt

Typedef to keep the code more readable const version.

Definition at line 134 of file map_matrix.h.

◆ InnerMapMixed

Typedef to keep the code more readable.

Definition at line 118 of file map_matrix.h.

◆ InnerMixedIt

Typedef to keep the code more readable.

Definition at line 121 of file map_matrix.h.

◆ OuterMapMixed

Typedef to keep the code more readable.

Definition at line 128 of file map_matrix.h.

◆ OuterMixedIt

Typedef to keep the code more readable.

Definition at line 131 of file map_matrix.h.

Constructor & Destructor Documentation

◆ MapMatrixMixed() [1/2]

Default (empty) constructor.

Definition at line 112 of file map_matrix.h.

◆ MapMatrixMixed() [2/2]

Copy constructor.

Definition at line 138 of file map_matrix.h.

◆ ~MapMatrixMixed()

Member Function Documentation

◆ clear()

Wipe all entries.

Definition at line 209 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ copy_column()

Copy a single column into its own map.

Definition at line 170 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ entry_pt()

◆ get()

Get an element corresponding to the key (i,j) Searches the container for an element with a key equivalent to (i,j) and returns the element if found, otherwise the default 0 value for the value type is returned. The container is not modified.

Definition at line 236 of file map_matrix.h.

References i, and oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ nnz() [1/2]

Work out number of non-‘zero’ entries.

Definition at line 295 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ nnz() [2/2]

Work out number of non-‘zero’ entries, const version.

Definition at line 325 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ operator()()

Return (reference to) entry. Careful: If the entry does not exist then it is created and set to zero.

Definition at line 227 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::entry_pt(), and i.

◆ operator=()

Broken assignment operator.

◆ output()

void oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::output ( std::ostream &  outfile)
inline

Dump all non-‘zero’ entries to file. Output is in the format ‘i’, ‘j’, ‘entry[i][j]’.

Definition at line 262 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ size() [1/2]

Work out total number of entries.

Definition at line 357 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

◆ size() [2/2]

Work out total number of entries const version.

Definition at line 383 of file map_matrix.h.

References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.

Member Data Documentation

◆ Row_pt


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