dune-istl
2.4
|
Namespaces | |
Amg | |
MatrixMarketImpl | |
Enumerations | |
enum | WithDiagType { withdiag =1, nodiag =0 } |
enum | WithRelaxType { withrelax =1, norelax =0 } |
Functions | |
template<class K , class A > | |
std::ostream & | operator<< (std::ostream &s, const BlockVector< K, A > &v) |
Send BlockVector to an output stream. More... | |
template<class F , class MRS > | |
void | copyToColCompMatrix (F &initializer, const MRS &mrs) |
template<class F , class M , class S > | |
void | copyToColCompMatrix (F &initializer, const MatrixRowSubset< M, S > &mrs) |
template<class M , class X , class Y > | |
void | bltsolve (const M &A, X &v, const Y &d) |
block lower triangular solve More... | |
template<class M , class X , class Y , class K > | |
void | bltsolve (const M &A, X &v, const Y &d, const K &w) |
relaxed block lower triangular solve More... | |
template<class M , class X , class Y > | |
void | ubltsolve (const M &A, X &v, const Y &d) |
unit block lower triangular solve More... | |
template<class M , class X , class Y , class K > | |
void | ubltsolve (const M &A, X &v, const Y &d, const K &w) |
relaxed unit block lower triangular solve More... | |
template<class M , class X , class Y > | |
void | butsolve (const M &A, X &v, const Y &d) |
block upper triangular solve More... | |
template<class M , class X , class Y , class K > | |
void | butsolve (const M &A, X &v, const Y &d, const K &w) |
relaxed block upper triangular solve More... | |
template<class M , class X , class Y > | |
void | ubutsolve (const M &A, X &v, const Y &d) |
unit block upper triangular solve More... | |
template<class M , class X , class Y , class K > | |
void | ubutsolve (const M &A, X &v, const Y &d, const K &w) |
relaxed unit block upper triangular solve More... | |
template<class M , class X , class Y , int l> | |
void | bltsolve (const M &A, X &v, const Y &d, BL< l >) |
block lower triangular solve More... | |
template<class M , class X , class Y , class K , int l> | |
void | bltsolve (const M &A, X &v, const Y &d, const K &w, BL< l >) |
relaxed block lower triangular solve More... | |
template<class M , class X , class Y , int l> | |
void | ubltsolve (const M &A, X &v, const Y &d, BL< l >) |
unit block lower triangular solve More... | |
template<class M , class X , class Y , class K , int l> | |
void | ubltsolve (const M &A, X &v, const Y &d, const K &w, BL< l >) |
relaxed unit block lower triangular solve More... | |
template<class M , class X , class Y , int l> | |
void | butsolve (const M &A, X &v, const Y &d, BL< l > bl) |
block upper triangular solve More... | |
template<class M , class X , class Y , class K , int l> | |
void | butsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl) |
relaxed block upper triangular solve More... | |
template<class M , class X , class Y , int l> | |
void | ubutsolve (const M &A, X &v, const Y &d, BL< l > bl) |
unit block upper triangular solve More... | |
template<class M , class X , class Y , class K , int l> | |
void | ubutsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl) |
relaxed unit block upper triangular solve More... | |
template<class M , class X , class Y > | |
void | bdsolve (const M &A, X &v, const Y &d) |
block diagonal solve, no relaxation More... | |
template<class M , class X , class Y , class K > | |
void | bdsolve (const M &A, X &v, const Y &d, const K &w) |
block diagonal solve, with relaxation More... | |
template<class M , class X , class Y , int l> | |
void | bdsolve (const M &A, X &v, const Y &d, BL< l >) |
block diagonal solve, no relaxation More... | |
template<class M , class X , class Y , class K , int l> | |
void | bdsolve (const M &A, X &v, const Y &d, const K &w, BL< l >) |
block diagonal solve, with relaxation More... | |
template<class M , class X , class Y , class K > | |
void | dbgs (const M &A, X &x, const Y &b, const K &w) |
GS step. More... | |
template<class M , class X , class Y , class K , int l> | |
void | dbgs (const M &A, X &x, const Y &b, const K &w, BL< l >) |
GS step. More... | |
template<class M , class X , class Y , class K > | |
void | bsorf (const M &A, X &x, const Y &b, const K &w) |
SOR step. More... | |
template<class M , class X , class Y , class K , int l> | |
void | bsorf (const M &A, X &x, const Y &b, const K &w, BL< l >) |
SOR step. More... | |
template<class M , class X , class Y , class K > | |
void | bsorb (const M &A, X &x, const Y &b, const K &w) |
SSOR step. More... | |
template<class M , class X , class Y , class K , int l> | |
void | bsorb (const M &A, X &x, const Y &b, const K &w, BL< l >) |
Backward SOR step. More... | |
template<class M , class X , class Y , class K > | |
void | dbjac (const M &A, X &x, const Y &b, const K &w) |
Jacobi step. More... | |
template<class M , class X , class Y , class K , int l> | |
void | dbjac (const M &A, X &x, const Y &b, const K &w, BL< l >) |
Jacobi step. More... | |
template<class M > | |
void | bilu0_decomposition (M &A) |
compute ILU decomposition of A. A is overwritten by its decomposition More... | |
template<class M , class X , class Y > | |
void | bilu_backsolve (const M &A, X &v, const Y &d) |
LU backsolve with stored inverse. More... | |
template<class M > | |
M::field_type & | firstmatrixelement (M &A) |
template<class K , int n, int m> | |
K & | firstmatrixelement (FieldMatrix< K, n, m > &A) |
template<class K > | |
K & | firstmatrixelement (FieldMatrix< K, 1, 1 > &A) |
template<class M > | |
void | bilu_decomposition (const M &A, int n, M &ILU) |
template<class V > | |
void | recursive_printvector (std::ostream &s, const V &v, std::string rowtext, int &counter, int columns, int width, int precision) |
Recursively print all the blocks. More... | |
template<class K , int n> | |
void | recursive_printvector (std::ostream &s, const FieldVector< K, n > &v, std::string rowtext, int &counter, int columns, int width, int precision) |
Recursively print all the blocks – specialization for FieldVector. More... | |
template<class V > | |
void | printvector (std::ostream &s, const V &v, std::string title, std::string rowtext, int columns=1, int width=10, int precision=2) |
Print an ISTL vector. More... | |
void | fill_row (std::ostream &s, int m, int width, int precision) |
Print a row of zeros for a non-existing block. More... | |
template<class M > | |
void | print_row (std::ostream &s, const M &A, typename M::size_type I, typename M::size_type J, typename M::size_type therow, int width, int precision) |
Print one row of a matrix. More... | |
template<class K , int n, int m> | |
void | print_row (std::ostream &s, const FieldMatrix< K, n, m > &A, typename FieldMatrix< K, n, m >::size_type I, typename FieldMatrix< K, n, m >::size_type J, typename FieldMatrix< K, n, m >::size_type therow, int width, int precision) |
Print one row of a matrix, specialization for FieldMatrix. More... | |
template<class K > | |
void | print_row (std::ostream &s, const FieldMatrix< K, 1, 1 > &A, typename FieldMatrix< K, 1, 1 >::size_type I, typename FieldMatrix< K, 1, 1 >::size_type J, typename FieldMatrix< K, 1, 1 >::size_type therow, int width, int precision) |
Print one row of a matrix, specialization for FieldMatrix<K,1,1> More... | |
template<class M > | |
void | printmatrix (std::ostream &s, const M &A, std::string title, std::string rowtext, int width=10, int precision=2) |
Print a generic block matrix. More... | |
template<class B , int n, int m, class A > | |
void | printSparseMatrix (std::ostream &s, const BCRSMatrix< FieldMatrix< B, n, m >, A > &mat, std::string title, std::string rowtext, int width=3, int precision=2) |
Prints a BCRSMatrix with fixed sized blocks. More... | |
template<class FieldType , int dim> | |
void | writeMatrixToMatlabHelper (const ScaledIdentityMatrix< FieldType, dim > &matrix, int rowOffset, int colOffset, std::ostream &s) |
Helper method for the writeMatrixToMatlab routine. More... | |
template<class FieldType , int dim> | |
void | writeMatrixToMatlabHelper (const DiagonalMatrix< FieldType, dim > &matrix, int rowOffset, int colOffset, std::ostream &s) |
Helper method for the writeMatrixToMatlab routine. More... | |
template<class FieldType , int rows, int cols> | |
void | writeMatrixToMatlabHelper (const FieldMatrix< FieldType, rows, cols > &matrix, int rowOffset, int colOffset, std::ostream &s) |
Helper method for the writeMatrixToMatlab routine. More... | |
template<class MatrixType > | |
void | writeMatrixToMatlabHelper (const MatrixType &matrix, int externalRowOffset, int externalColOffset, std::ostream &s) |
Helper method for the writeMatrixToMatlab routine. More... | |
template<class MatrixType > | |
void | writeMatrixToMatlab (const MatrixType &matrix, const std::string &filename, int outputPrecision=18) |
Writes sparse matrix in a Matlab-readable format. More... | |
void | mm_read_header (std::size_t &rows, std::size_t &cols, MatrixMarketImpl::MMHeader &header, std::istream &istr, bool isVector) |
template<typename T , typename A , int entries> | |
void | mm_read_vector_entries (Dune::BlockVector< Dune::FieldVector< T, entries >, A > &vector, std::size_t size, std::istream &istr) |
template<typename T , typename A , int entries> | |
void | readMatrixMarket (Dune::BlockVector< Dune::FieldVector< T, entries >, A > &vector, std::istream &istr) |
Reads a BlockVector from a matrix market file. More... | |
template<typename T , typename A , int brows, int bcols> | |
void | readMatrixMarket (Dune::BCRSMatrix< Dune::FieldMatrix< T, brows, bcols >, A > &matrix, std::istream &istr) |
Reads a sparse matrix from a matrix market file. More... | |
template<typename B , int i, int j> | |
void | mm_print_entry (const FieldMatrix< B, i, j > &entry, typename FieldMatrix< B, i, j >::size_type rowidx, typename FieldMatrix< B, i, j >::size_type colidx, std::ostream &ostr) |
template<typename V > | |
void | mm_print_vector_entry (const V &entry, std::ostream &ostr, const integral_constant< int, 1 > &) |
template<typename V > | |
void | mm_print_vector_entry (const V &vector, std::ostream &ostr, const integral_constant< int, 0 > &) |
template<typename T , typename A , int i> | |
std::size_t | countEntries (const BlockVector< FieldVector< T, i >, A > &vector) |
template<typename V > | |
void | writeMatrixMarket (const V &vector, std::ostream &ostr, const integral_constant< int, 0 > &) |
template<typename M > | |
void | writeMatrixMarket (const M &matrix, std::ostream &ostr, const integral_constant< int, 1 > &) |
template<typename M > | |
void | writeMatrixMarket (const M &matrix, std::ostream &ostr) |
writes a ISTL matrix or vector to a stream in matrix market format. More... | |
template<typename M > | |
void | storeMatrixMarket (const M &matrix, std::string filename) |
Stores a parallel matrix/vector in matrix market format in a file. More... | |
template<typename M , typename G , typename L > | |
void | storeMatrixMarket (const M &matrix, std::string filename, const OwnerOverlapCopyCommunication< G, L > &comm, bool storeIndices=true) |
Stores a parallel matrix/vector in matrix market format in a file. More... | |
template<typename M , typename G , typename L > | |
void | loadMatrixMarket (M &matrix, const std::string &filename, OwnerOverlapCopyCommunication< G, L > &comm, bool readIndices=true) |
Load a parallel matrix/vector stored in matrix market format. More... | |
template<typename M > | |
void | loadMatrixMarket (M &matrix, const std::string &filename) |
Load a matrix/vector stored in matrix market format. More... | |
template<class T , class A , class A1 , class A2 , int n, int m, int k> | |
void | matMultTransposeMat (BCRSMatrix< FieldMatrix< T, n, k >, A > &res, const BCRSMatrix< FieldMatrix< T, n, m >, A1 > &mat, const BCRSMatrix< FieldMatrix< T, k, m >, A2 > &matt, bool tryHard=false) |
Calculate product of a sparse matrix with a transposed sparse matrices ( ![]() | |
template<class T , class A , class A1 , class A2 , int n, int m, int k> | |
void | matMultMat (BCRSMatrix< FieldMatrix< T, n, m >, A > &res, const BCRSMatrix< FieldMatrix< T, n, k >, A1 > &mat, const BCRSMatrix< FieldMatrix< T, k, m >, A2 > &matt, bool tryHard=false) |
Calculate product of two sparse matrices ( ![]() | |
template<class T , class A , class A1 , class A2 , int n, int m, int k> | |
void | transposeMatMultMat (BCRSMatrix< FieldMatrix< T, n, m >, A > &res, const BCRSMatrix< FieldMatrix< T, k, n >, A1 > &mat, const BCRSMatrix< FieldMatrix< T, k, m >, A2 > &matt, bool tryHard=false) |
Calculate product of a transposed sparse matrix with another sparse matrices ( ![]() | |
template<typename M , typename C > | |
void | redistributeSparsityPattern (M &origMatrix, M &newMatrix, C &origComm, C &newComm, RedistributeInformation< C > &ri) |
template<typename M , typename C > | |
void | redistributeMatrixEntries (M &origMatrix, M &newMatrix, C &origComm, C &newComm, RedistributeInformation< C > &ri) |
template<typename M , typename C > | |
void | redistributeMatrix (M &origMatrix, M &newMatrix, C &origComm, C &newComm, RedistributeInformation< C > &ri) |
Redistribute a matrix according to given domain decompositions. More... | |
template<class M > | |
int | countNonZeros (const M &matrix) |
Get the number of nonzero fields in the matrix. More... | |
template<class M , class C > | |
void | printGlobalSparseMatrix (const M &mat, C &ooc, std::ostream &os) |
template<typename G , typename EP , typename VM , typename EM > | |
PropertyMapTypeSelector< Amg::VertexVisitedTag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > >::Type | get (const Amg::VertexVisitedTag &tag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > &graph) |
template<class G , class T1 , class T2 > | |
void | fillIndexSetHoles (const G &graph, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm) |
Fills the holes in an index set. More... | |
template<class G , class T1 , class T2 > | |
bool | buildCommunication (const G &graph, std::vector< int > &realparts, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm, Dune::OwnerOverlapCopyCommunication< T1, T2 > *&outcomm, RedistributeInterface &redistInf, bool verbose=false) |
template<class S , class T > | |
void | print_carray (S &os, T *array, std::size_t l) |
bool | isValidGraph (std::size_t noVtx, std::size_t gnoVtx, idxtype noEdges, idxtype *xadj, idxtype *adjncy, bool checkSymmetry) |
template<class M , class T1 , class T2 > | |
bool | commGraphRepartition (const M &mat, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm, idxtype nparts, Dune::OwnerOverlapCopyCommunication< T1, T2 > *&outcomm, RedistributeInterface &redistInf, bool verbose=false) |
template<class G , class T1 , class T2 > | |
bool | graphRepartition (const G &graph, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm, idxtype nparts, Dune::OwnerOverlapCopyCommunication< T1, T2 > *&outcomm, RedistributeInterface &redistInf, bool verbose=false) |
execute a graph repartition for a giving graph and indexset. More... | |
template<class M , class K , int n> | |
void | istl_assign_to_fmatrix (DenseMatrix< M > &fm, const ScaledIdentityMatrix< K, n > &s) |
bool Dune::buildCommunication | ( | const G & | graph, |
std::vector< int > & | realparts, | ||
Dune::OwnerOverlapCopyCommunication< T1, T2 > & | oocomm, | ||
Dune::OwnerOverlapCopyCommunication< T1, T2 > *& | outcomm, | ||
RedistributeInterface & | redistInf, | ||
bool | verbose = false |
||
) |
References Dune::RedistributeInterface::addReceiveIndex(), Dune::RedistributeInterface::buildSendInterface(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::communicator(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::getSolverCategory(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::globalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet(), and Dune::RedistributeInterface::setCommunicator().
Referenced by commGraphRepartition(), and graphRepartition().
bool Dune::commGraphRepartition | ( | const M & | mat, |
Dune::OwnerOverlapCopyCommunication< T1, T2 > & | oocomm, | ||
idxtype | nparts, | ||
Dune::OwnerOverlapCopyCommunication< T1, T2 > *& | outcomm, | ||
RedistributeInterface & | redistInf, | ||
bool | verbose = false |
||
) |
References buildCommunication(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildGlobalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::communicator(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyOwnerToAll(), fillIndexSetHoles(), isValidGraph(), print_carray(), and Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::remoteIndices().
Referenced by Dune::Amg::repartitionAndDistributeMatrix().
void Dune::copyToColCompMatrix | ( | F & | initializer, |
const MRS & | mrs | ||
) |
void Dune::copyToColCompMatrix | ( | F & | initializer, |
const MatrixRowSubset< M, S > & | mrs | ||
) |
void Dune::fillIndexSetHoles | ( | const G & | graph, |
Dune::OwnerOverlapCopyCommunication< T1, T2 > & | oocomm | ||
) |
Fills the holes in an index set.
In general the index set only needs to know those indices where communication my occur. In usual FE computations these are just those near the processor boundaries.
For the repartitioning we need to know all all indices for which data is stored. The missing indices will be created in this method.
graph | The graph to reparition. |
oocomm | The communication information. |
References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildGlobalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::communicator(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::freeGlobalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::globalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet(), Dune::OwnerOverlapCopyAttributeSet::owner, and Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::remoteIndices().
Referenced by commGraphRepartition(), and graphRepartition().
PropertyMapTypeSelector<Amg::VertexVisitedTag,Amg::PropertiesGraph<G,Amg::VertexProperties,EP,VM,EM> >::Type Dune::get | ( | const Amg::VertexVisitedTag & | tag, |
Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > & | graph | ||
) |
References Dune::Amg::VertexProperties::VISITED.
bool Dune::graphRepartition | ( | const G & | graph, |
Dune::OwnerOverlapCopyCommunication< T1, T2 > & | oocomm, | ||
idxtype | nparts, | ||
Dune::OwnerOverlapCopyCommunication< T1, T2 > *& | outcomm, | ||
RedistributeInterface & | redistInf, | ||
bool | verbose = false |
||
) |
execute a graph repartition for a giving graph and indexset.
This function provides repartition functionality using the PARMETIS library
graph | The given graph to repartition | |
oocomm | The parallel information about the graph. | |
nparts | The number of domains the repartitioning should achieve. | |
[out] | outcomm | Pointer store the parallel information of the redistributed domains in. |
redistInf | Redistribute interface | |
verbose | Verbosity flag to give out additional information. |
References buildCommunication(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildGlobalLookup(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::communicator(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyCopyToAll(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyOwnerToAll(), fillIndexSetHoles(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::getSolverCategory(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::globalLookup(), and Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet().
Referenced by Dune::Amg::repartitionAndDistributeMatrix().
void Dune::istl_assign_to_fmatrix | ( | DenseMatrix< M > & | fm, |
const ScaledIdentityMatrix< K, n > & | s | ||
) |
References Dune::ScaledIdentityMatrix< K, n >::scalar().
|
inline |
Referenced by commGraphRepartition().
std::ostream& Dune::operator<< | ( | std::ostream & | s, |
const BlockVector< K, A > & | v | ||
) |
Send BlockVector to an output stream.
|
inline |
Referenced by commGraphRepartition().
void Dune::printGlobalSparseMatrix | ( | const M & | mat, |
C & | ooc, | ||
std::ostream & | os | ||
) |
Referenced by Dune::Amg::repartitionAndDistributeMatrix().
void Dune::redistributeMatrix | ( | M & | origMatrix, |
M & | newMatrix, | ||
C & | origComm, | ||
C & | newComm, | ||
RedistributeInformation< C > & | ri | ||
) |
Redistribute a matrix according to given domain decompositions.
All the parameters for this function can be obtained by calling graphRepartition with the graph of the original matrix.
origMatrix | The matrix on the original partitioning. |
newMatrix | An empty matrix to store the new redistributed matrix in. |
origComm | The parallel information of the original partitioning. |
newComm | The parallel information of the new partitioning. |
ri | The remote index information between the original and the new partitioning. Upon exit of this method it will be prepared for copying from owner to owner vertices for data redistribution. |
M | The matrix type. It is assumed to be sparse. E.g. BCRSMatrix. |
C | The type of the parallel information, see OwnerOverlapCopyCommunication. |
References redistributeMatrixEntries(), redistributeSparsityPattern(), Dune::RedistributeInformation< T >::setNoBackwardsCopyRows(), Dune::RedistributeInformation< T >::setNoCopyRows(), and Dune::RedistributeInformation< T >::setNoRows().
Referenced by Dune::Amg::repartitionAndDistributeMatrix().
void Dune::redistributeMatrixEntries | ( | M & | origMatrix, |
M & | newMatrix, | ||
C & | origComm, | ||
C & | newComm, | ||
RedistributeInformation< C > & | ri | ||
) |
References Dune::RedistributeInformation< T >::getBackwardsCopyRowSize(), Dune::RedistributeInformation< T >::getCopyRowSize(), Dune::RedistributeInformation< T >::getRowSize(), Dune::SolverCategory::nonoverlapping, and printmatrix().
Referenced by Dune::Amg::MatrixHierarchy< M, PI, A >::recalculateGalerkin(), and redistributeMatrix().
void Dune::redistributeSparsityPattern | ( | M & | origMatrix, |
M & | newMatrix, | ||
C & | origComm, | ||
C & | newComm, | ||
RedistributeInformation< C > & | ri | ||
) |
References col, Dune::RedistributeInformation< T >::getBackwardsCopyRowSize(), Dune::RedistributeInformation< T >::getCopyRowSize(), Dune::RedistributeInformation< T >::getRowSize(), Dune::SolverCategory::nonoverlapping, Dune::RedistributeInformation< T >::redistributeBackward(), and row.
Referenced by redistributeMatrix().