5 #ifndef _MULTIFIELDMATRIX_H_
6 #define _MULTIFIELDMATRIX_H_
59 typedef pair<const StorageSite*, const StorageSite*>
SSPair;
61 typedef map<EntryIndex,shared_ptr<Matrix> >
MatrixMap;
99 const Index& colIndex)
const;
107 const double weightRatioThreshold);
130 int getMinSize(
const MPI::Intracomm& comm )
const;
131 int getMergeSize(
const MPI::Intracomm& comm )
const;
MatrixSizeMap _coarseGhostSizes
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
virtual ~MultiFieldMatrix()
virtual void iluSolve(IContainer &xB, const IContainer &bB, IContainer &tempB) const
map< Index, shared_ptr< StorageSite > > StorageSiteMap
void createCoarseToFineMapping(const MultiField &coarseIndexField)
void correctSolution(const MultiField &coarseIndex, MultiField &fineSolutionField, MFRPtr scaleField, const MultiField &coarseSolutionField)
virtual void forwardGS(IContainer &xB, const IContainer &bB, IContainer &temp) const
map< const StorageSite *, shared_ptr< StorageSite > > GhostStorageSiteMap
void createCoarseConnectivity(MultiField &coarseIndex)
bool hasMatrix(const Index &rowIndex, const Index &colIndex) const
void createCoarsening(MultiField &coarseIndex, const int groupSize, const double weightRatioThreshold)
map< Index, int > MatrixSizeMap
CoarseToFineMappingMap _coarseToFineMappings
StorageSiteMap _coarseSites
virtual void multiplyAndAdd(IContainer &yB, const IContainer &xB) const
map< Index, shared_ptr< CRConnectivity > > CoarseToFineMappingMap
pair< const Field *, const StorageSite * > ArrayIndex
virtual void spikeSolve(IContainer &xB, const IContainer &bB, IContainer &tempB, const SpikeStorage &spike_storage) const
MultiField::ArrayIndex Index
virtual void reverseGS(IContainer &xB, const IContainer &bB, IContainer &temp) const
MatrixMap _coarseMatrices
virtual void computeResidual(const IContainer &xB, const IContainer &bB, IContainer &rB) const
virtual void Jacobi(IContainer &xB, const IContainer &bB, IContainer &tempB) const
void createCoarseMatrices(MultiField &coarseIndex)
void removeMatrix(const Index &rowIndex, const Index &colIndex)
CoarseConnectivitiesMap _coarseConnectivities
friend class LinearSystemMerger
MatrixMappersMap _coarseGatherMaps
const vector< int > & getData() const
map< EntryIndex, shared_ptr< Matrix > > MatrixMap
void addMatrix(const Index &rowI, const Index &colI, shared_ptr< Matrix > m)
MatrixMappersMap _coarseScatterMaps
shared_ptr< MultiFieldReduction > MFRPtr
pair< Index, Index > EntryIndex
virtual void multiply(IContainer &yB, const IContainer &xB) const
void syncGhostCoarsening(MultiField &coarseIndexField)
MatrixSizeMap _coarseSizes
map< SSPair, shared_ptr< Array< int > > > MatrixMappersMap
pair< const StorageSite *, const StorageSite * > SSPair
void injectResidual(const MultiField &coarseIndex, const MultiField &fineResidualField, MultiField &coarseBField)
DEFINE_TYPENAME("MultiFieldMatrix")
virtual void solveBoundary(IContainer &xB, const IContainer &bB, IContainer &temp) const
MFRPtr quadProduct(const MultiField &x) const
map< EntryIndex, shared_ptr< CRConnectivity > > CoarseConnectivitiesMap