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().