|
Memosa-FVM
0.2
|
#include <MultiFieldMatrix.h>
Public Types | |
| typedef MultiField::ArrayIndex | Index |
| typedef pair< Index, Index > | EntryIndex |
| typedef pair< const StorageSite *, const StorageSite * > | SSPair |
| typedef map< EntryIndex, shared_ptr< Matrix > > | MatrixMap |
| typedef map< Index, int > | MatrixSizeMap |
| typedef map< SSPair, shared_ptr< Array< int > > > | MatrixMappersMap |
| typedef map< Index, shared_ptr < StorageSite > > | StorageSiteMap |
| typedef map< const StorageSite *, shared_ptr< StorageSite > > | GhostStorageSiteMap |
| typedef map< Index, shared_ptr < CRConnectivity > > | CoarseToFineMappingMap |
| typedef map< EntryIndex, shared_ptr< CRConnectivity > > | CoarseConnectivitiesMap |
Public Member Functions | |
| MultiFieldMatrix () | |
| virtual | ~MultiFieldMatrix () |
| DEFINE_TYPENAME ("MultiFieldMatrix") | |
| void | initAssembly () |
| virtual void | multiply (IContainer &yB, const IContainer &xB) const |
| virtual void | multiplyAndAdd (IContainer &yB, const IContainer &xB) const |
| virtual void | forwardGS (IContainer &xB, const IContainer &bB, IContainer &temp) const |
| virtual void | reverseGS (IContainer &xB, const IContainer &bB, IContainer &temp) const |
| virtual void | Jacobi (IContainer &xB, const IContainer &bB, IContainer &tempB) const |
| virtual void | iluSolve (IContainer &xB, const IContainer &bB, IContainer &tempB) const |
| virtual void | spikeSolve (IContainer &xB, const IContainer &bB, IContainer &tempB, const SpikeStorage &spike_storage) const |
| virtual void | solveBoundary (IContainer &xB, const IContainer &bB, IContainer &temp) const |
| virtual void | computeResidual (const IContainer &xB, const IContainer &bB, IContainer &rB) const |
| bool | hasMatrix (const Index &rowIndex, const Index &colIndex) const |
| Matrix & | getMatrix (const Index &rowIndex, const Index &colIndex) |
| const Matrix & | getMatrix (const Index &rowIndex, const Index &colIndex) const |
| void | removeMatrix (const Index &rowIndex, const Index &colIndex) |
| void | createCoarsening (MultiField &coarseIndex, const int groupSize, const double weightRatioThreshold) |
| void | syncGhostCoarsening (MultiField &coarseIndexField) |
| void | createCoarseToFineMapping (const MultiField &coarseIndexField) |
| void | createCoarseConnectivity (MultiField &coarseIndex) |
| void | createCoarseMatrices (MultiField &coarseIndex) |
| void | transpose () |
| void | injectResidual (const MultiField &coarseIndex, const MultiField &fineResidualField, MultiField &coarseBField) |
| void | correctSolution (const MultiField &coarseIndex, MultiField &fineSolutionField, MFRPtr scaleField, const MultiField &coarseSolutionField) |
| int | getSize () const |
| int | getLocalSize () const |
| void | addMatrix (const Index &rowI, const Index &colI, shared_ptr< Matrix > m) |
| MFRPtr | quadProduct (const MultiField &x) const |
Friends | |
| class | LinearSystem |
| class | LinearSystemMerger |
Definition at line 49 of file MultiFieldMatrix.h.
| typedef map<EntryIndex,shared_ptr<CRConnectivity> > MultiFieldMatrix::CoarseConnectivitiesMap |
Definition at line 70 of file MultiFieldMatrix.h.
| typedef map<Index,shared_ptr<CRConnectivity> > MultiFieldMatrix::CoarseToFineMappingMap |
Definition at line 69 of file MultiFieldMatrix.h.
| typedef pair<Index,Index> MultiFieldMatrix::EntryIndex |
Definition at line 58 of file MultiFieldMatrix.h.
| typedef map<const StorageSite*,shared_ptr<StorageSite> > MultiFieldMatrix::GhostStorageSiteMap |
Definition at line 67 of file MultiFieldMatrix.h.
Definition at line 56 of file MultiFieldMatrix.h.
| typedef map<EntryIndex,shared_ptr<Matrix> > MultiFieldMatrix::MatrixMap |
Definition at line 61 of file MultiFieldMatrix.h.
| typedef map<SSPair,shared_ptr<Array<int> > > MultiFieldMatrix::MatrixMappersMap |
Definition at line 64 of file MultiFieldMatrix.h.
| typedef map<Index,int> MultiFieldMatrix::MatrixSizeMap |
Definition at line 62 of file MultiFieldMatrix.h.
| typedef pair<const StorageSite*, const StorageSite*> MultiFieldMatrix::SSPair |
Definition at line 59 of file MultiFieldMatrix.h.
| typedef map<Index,shared_ptr<StorageSite> > MultiFieldMatrix::StorageSiteMap |
Definition at line 66 of file MultiFieldMatrix.h.
| MultiFieldMatrix::MultiFieldMatrix | ( | ) |
Definition at line 16 of file MultiFieldMatrix.cpp.
References logCtor.
|
virtual |
Definition at line 28 of file MultiFieldMatrix.cpp.
References logDtor.
|
inline |
Definition at line 137 of file MultiFieldMatrix.h.
References _matrices.
Referenced by ElectricModel< T >::Impl::initChargeTransportLinearization(), FlowModel< T >::Impl::initContinuityLinearization(), PlateModel< T >::Impl::initDeformationLinearization(), StructureModel< T >::Impl::initDeformationLinearization(), ElectricModel< T >::Impl::initElectroStaticsLinearization(), KineticModel< T >::initKineticModelLinearization(), ThermalModel< T >::Impl::initLinearization(), FractureModel< T >::Impl::initLinearization(), VacancyModel< T >::Impl::initLinearization(), SpeciesModel< T >::Impl::initLinearization(), KeModel< T >::Impl::initLinearization(), KeModel< T >::Impl::initLinearizationk(), FlowModel< T >::Impl::initMomentumLinearization(), BatteryModel< T >::Impl::initPCLinearization(), PhononModel< T >::initPhononModelLinearization(), BatteryModel< T >::Impl::initPotentialLinearization(), BatteryModel< T >::Impl::initSpeciesLinearization(), and BatteryModel< T >::Impl::initThermalLinearization().
|
virtual |
Definition at line 402 of file MultiFieldMatrix.cpp.
References ArrayBase::copyPartial(), MultiField::getArrayIndex(), StorageSite::getCount(), MultiField::getLength(), getMatrix(), StorageSite::getSelfCount(), hasMatrix(), Matrix::multiplyAndAdd(), and ArrayBase::zeroPartial().
Referenced by AMG::cycle(), CG::solve(), JacobiSolver::solve(), ILU0Solver::solve(), BCGStab::solve(), SpikeSolver::solve(), DirectSolver::solve(), and AMG::solve().
| void MultiFieldMatrix::correctSolution | ( | const MultiField & | coarseIndex, |
| MultiField & | fineSolutionField, | ||
| MFRPtr | scaleField, | ||
| const MultiField & | coarseSolutionField | ||
| ) |
Definition at line 765 of file MultiFieldMatrix.cpp.
References _coarseSites, ArrayBase::correct(), MultiField::getArrayIndex(), and MultiField::getLength().
Referenced by AMG::cycle().
| void MultiFieldMatrix::createCoarseConnectivity | ( | MultiField & | coarseIndex | ) |
Definition at line 670 of file MultiFieldMatrix.cpp.
References _coarseConnectivities, _coarseSites, _coarseToFineMappings, Matrix::createCoarseConnectivity(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), and hasMatrix().
Referenced by LinearSystem::createCoarse().
| void MultiFieldMatrix::createCoarseMatrices | ( | MultiField & | coarseIndex | ) |
Definition at line 705 of file MultiFieldMatrix.cpp.
References _coarseConnectivities, _coarseMatrices, _coarseToFineMappings, Matrix::createCoarseMatrix(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), and hasMatrix().
Referenced by LinearSystem::createCoarse().
| void MultiFieldMatrix::createCoarsening | ( | MultiField & | coarseIndex, |
| const int | groupSize, | ||
| const double | weightRatioThreshold | ||
| ) |
Definition at line 449 of file MultiFieldMatrix.cpp.
References _coarseSizes, Matrix::createCoarsening(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), and hasMatrix().
Referenced by LinearSystem::createCoarse().
| void MultiFieldMatrix::createCoarseToFineMapping | ( | const MultiField & | coarseIndexField | ) |
Definition at line 627 of file MultiFieldMatrix.cpp.
References _coarseSites, _coarseToFineMappings, MultiField::getArrayIndex(), StorageSite::getCountLevel1(), and MultiField::getLength().
Referenced by LinearSystem::createCoarse().
| MultiFieldMatrix::DEFINE_TYPENAME | ( | "MultiFieldMatrix" | ) |
|
virtual |
Definition at line 126 of file MultiFieldMatrix.cpp.
References ArrayBase::copyPartial(), Matrix::forwardGS(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), StorageSite::getSelfCount(), hasMatrix(), Matrix::multiplyAndAdd(), MultiField::sync(), MultiField::syncGather(), and MultiField::syncScatter().
Referenced by AMG::doSweeps().
| int MultiFieldMatrix::getLocalSize | ( | ) | const |
Definition at line 870 of file MultiFieldMatrix.cpp.
References _matrices.
Referenced by AMG::createCoarseLevels().
Definition at line 42 of file MultiFieldMatrix.cpp.
References _matrices.
Referenced by StructureModel< T >::Impl::applyBC(), computeResidual(), correctMassFluxInterior(), createCoarseConnectivity(), createCoarseMatrices(), createCoarsening(), Underrelaxer< X, Diag, OffDiag >::discretize(), CollisionTermDiscretization< X, Diag, OffDiag >::discretize(), PhononCollisionDiscretization< X, Diag, OffDiag >::discretize(), LinearizeInterfaceJumpUnconnected< X, Diag, OffDiag >::discretize(), TrapBandTunnelingDiscretization< X, Diag, OffDiag >::discretize(), LinearizeInterfaceJump< X, Diag, OffDiag >::discretize(), DriftDiscretization< X, Diag, OffDiag >::discretize(), TimeDerivativeDiscretization< X, Diag, OffDiag >::discretize(), SourceDiscretizationforFracture< T, Diag, OffDiag >::discretize(), BatteryPCTimeDerivativeDiscretization< X, Diag, OffDiag >::discretize(), GenericIBDiscretization< X, Diag, OffDiag >::discretize(), LinearizeDielectric< X, Diag, OffDiag >::discretize(), PhononConvectionDiscretization< X, Diag, OffDiag >::discretize(), IbmDiscretization< X, Diag, OffDiag >::discretize(), TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::discretize(), ConvectionDiscretization< X, Diag, OffDiag >::discretize(), BatteryLinearizePotentialInterface< X, Diag, OffDiag >::discretize(), BatteryLinearizeThermalInterface< X, Diag, OffDiag >::discretize(), LinearizePotentialInterface< X, Diag, OffDiag >::discretize(), BatteryPCLinearizeInterface_BV< X, Diag, OffDiag, otherMeshDiag >::discretize(), TimeDerivativeStructureDiscretization< X, Diag, OffDiag >::discretize(), BatteryLinearizeSpeciesInterface< X, Diag, OffDiag >::discretize(), GenericKineticIBDiscretization< X, Diag, OffDiag >::discretize(), LinearizeSpeciesInterface< X, Diag, OffDiag >::discretize(), ConvectionDiscretization_Kmodel< X, Diag, OffDiag >::discretize(), MomentumPressureGradientDiscretization< X >::discretize(), TimeDerivativePlateDiscretization< X, Diag, OffDiag >::discretize(), ElecDiffusionDiscretization< X, Diag, OffDiag >::discretize(), CaptureDiscretization< X, Diag, OffDiag >::discretize(), DiffusionDiscretization< X, Diag, OffDiag >::discretize(), EmissionDiscretization< X, Diag, OffDiag >::discretize(), SourceDiscretizationdissi< X, Diag, OffDiag >::discretize(), TunnelingDiscretization< X, Diag, OffDiag >::discretize(), BatteryPCDiffusionDiscretization< X, Diag, OffDiag >::discretize(), WallDiscretization< X, Diag, OffDiag >::discretize(), PlateSourceDiscretization< T, Diag, OffDiag >::discretize(), StructureSourceDiscretization< T, Diag, OffDiag >::discretizeFaces(), StructurePlasticDiscretization< T, Diag, OffDiag >::discretizeFaces(), PlateSourceDiscretization< T, Diag, OffDiag >::discretizeFaces(), discretizeMassFluxInterior(), FlowModel< T >::Impl::dumpContinuityMatrix(), ThermalModel< T >::Impl::dumpMatrix(), VacancyModel< T >::Impl::dumpMatrix(), PlateModel< T >::Impl::dumpMatrix(), fixedFluxContinuityBC(), fixedPressureContinuityBC(), fixedPressureMomentumBC(), forwardGS(), iluSolve(), LinearSystem::initSolve(), Jacobi(), FlowModel< T >::Impl::linearizeContinuity(), PlateModel< T >::Impl::linearizeDeformation(), KeModel< T >::Impl::linearizedissipation(), multiply(), multiplyAndAdd(), BatteryModel< T >::Impl::printMatrixElementsOnFace(), quadProduct(), reverseGS(), FlowModel< T >::Impl::setDirichlet(), DirectSolver::solve(), solveBoundary(), FlowModel< T >::Impl::solveMomentum(), and spikeSolve().
| int MultiFieldMatrix::getSize | ( | ) | const |
Definition at line 34 of file MultiFieldMatrix.cpp.
References _matrices.
Referenced by computeResidual(), correctMassFluxInterior(), LinearSystem::createCoarse(), createCoarseConnectivity(), createCoarseMatrices(), createCoarsening(), MomentumPressureGradientDiscretization< X >::discretize(), discretizeMassFluxInterior(), fixedFluxContinuityBC(), forwardGS(), iluSolve(), LinearSystem::initSolve(), Jacobi(), multiply(), multiplyAndAdd(), FlowModel< T >::Impl::postContinuitySolve(), quadProduct(), reverseGS(), FlowModel< T >::Impl::setDirichlet(), solveBoundary(), and spikeSolve().
|
virtual |
Definition at line 276 of file MultiFieldMatrix.cpp.
References MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::iluSolve(), and MultiField::sync().
Referenced by ILU0Solver::doSweeps().
| void MultiFieldMatrix::initAssembly | ( | ) |
Definition at line 58 of file MultiFieldMatrix.cpp.
References _matrices.
Referenced by LinearSystem::initAssembly().
| void MultiFieldMatrix::injectResidual | ( | const MultiField & | coarseIndex, |
| const MultiField & | fineResidualField, | ||
| MultiField & | coarseBField | ||
| ) |
Definition at line 737 of file MultiFieldMatrix.cpp.
References _coarseSites, MultiField::getArrayIndex(), MultiField::getLength(), and ArrayBase::inject().
Referenced by AMG::cycle().
|
virtual |
Definition at line 168 of file MultiFieldMatrix.cpp.
References ArrayBase::copyPartial(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), StorageSite::getSelfCount(), hasMatrix(), Matrix::Jacobi(), Matrix::multiplyAndAdd(), MultiField::newClone(), and MultiField::sync().
Referenced by JacobiSolver::doSweeps(), and AMG::doSweeps().
|
virtual |
Definition at line 65 of file MultiFieldMatrix.cpp.
References MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::multiplyAndAdd(), MultiField::sync(), and IContainer::zero().
Referenced by StructureModel< T >::Impl::advanceExplicit(), BCGStab::solve(), and CG::solve().
|
virtual |
Definition at line 95 of file MultiFieldMatrix.cpp.
References MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::multiplyAndAdd(), and MultiField::sync().
| MFRPtr MultiFieldMatrix::quadProduct | ( | const MultiField & | x | ) | const |
Definition at line 888 of file MultiFieldMatrix.cpp.
References MultiField::addArray(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::quadProduct(), and MultiField::reduceSum().
Referenced by AMG::cycle().
|
virtual |
Definition at line 358 of file MultiFieldMatrix.cpp.
References ArrayBase::copyPartial(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), StorageSite::getSelfCount(), hasMatrix(), Matrix::multiplyAndAdd(), Matrix::reverseGS(), MultiField::sync(), MultiField::syncGather(), and MultiField::syncScatter().
Referenced by AMG::doSweeps().
|
virtual |
Definition at line 321 of file MultiFieldMatrix.cpp.
References ArrayBase::copyFrom(), MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::multiplyAndAdd(), and Matrix::solveBoundary().
Referenced by LinearSystem::postSolve().
|
virtual |
Definition at line 299 of file MultiFieldMatrix.cpp.
References MultiField::getArrayIndex(), MultiField::getLength(), getMatrix(), hasMatrix(), Matrix::spikeSolve(), and MultiField::sync().
Referenced by SpikeSolver::doSweeps().
| void MultiFieldMatrix::syncGhostCoarsening | ( | MultiField & | coarseIndexField | ) |
Definition at line 476 of file MultiFieldMatrix.cpp.
References _coarseGatherMaps, _coarseGhostSizes, _coarseScatterMaps, _coarseSizes, MultiField::getArrayIndex(), UnorderedSet::getData(), StorageSite::getGatherMap(), StorageSite::getGatherMapLevel1(), MultiField::getLength(), Array< T >::getLength(), StorageSite::getScatterMap(), StorageSite::getScatterMapLevel1(), UnorderedSet::insert(), and UnorderedSet::size().
Referenced by LinearSystem::createCoarse().
| void MultiFieldMatrix::transpose | ( | ) |
Definition at line 220 of file MultiFieldMatrix.cpp.
References _matrices.
|
friend |
Definition at line 53 of file MultiFieldMatrix.h.
|
friend |
Definition at line 54 of file MultiFieldMatrix.h.
|
private |
Definition at line 156 of file MultiFieldMatrix.h.
Referenced by createCoarseConnectivity(), and createCoarseMatrices().
|
private |
Definition at line 152 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), and syncGhostCoarsening().
|
private |
Definition at line 150 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), and syncGhostCoarsening().
|
private |
Definition at line 157 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), and createCoarseMatrices().
|
private |
Definition at line 151 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), and syncGhostCoarsening().
|
private |
Definition at line 154 of file MultiFieldMatrix.h.
Referenced by correctSolution(), LinearSystem::createCoarse(), createCoarseConnectivity(), createCoarseToFineMapping(), and injectResidual().
|
private |
Definition at line 149 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), createCoarsening(), and syncGhostCoarsening().
|
private |
Definition at line 155 of file MultiFieldMatrix.h.
Referenced by LinearSystem::createCoarse(), createCoarseConnectivity(), createCoarseMatrices(), and createCoarseToFineMapping().
|
private |
Definition at line 148 of file MultiFieldMatrix.h.
Referenced by addMatrix(), getLocalSize(), getMatrix(), getSize(), hasMatrix(), initAssembly(), removeMatrix(), and transpose().