Memosa-FVM
0.2
|
#include <MultiField.h>
Public Types | |
typedef pair< const Field *, const StorageSite * > | ArrayIndex |
typedef map< ArrayIndex, int > | ArrayMap |
typedef vector< shared_ptr < ArrayBase > > | ArrayList |
typedef vector< ArrayIndex > | ArrayIndexList |
typedef pair< ArrayIndex, ArrayIndex > | EntryIndex |
typedef map< EntryIndex, shared_ptr< ArrayBase > > | GhostArrayMap |
Public Member Functions | |
MultiField () | |
virtual | ~MultiField () |
DEFINE_TYPENAME ("MultiField") | |
const ArrayBase & | operator[] (const ArrayIndex &) const |
ArrayBase & | operator[] (const ArrayIndex &) |
shared_ptr< ArrayBase > | getArrayPtr (const ArrayIndex &) |
const ArrayBase & | operator[] (const int i) const |
ArrayBase & | operator[] (const int i) |
bool | hasArray (const ArrayIndex &) const |
virtual void | zero () |
virtual void | copyFrom (const IContainer &oc) |
virtual MultiField & | operator+= (const MultiField &o) |
virtual MultiField & | operator-= (const MultiField &o) |
virtual MultiField & | operator/= (const MultiFieldReduction &alpha) |
virtual MultiField & | operator*= (const MultiFieldReduction &alpha) |
virtual shared_ptr< IContainer > | newCopy () const |
virtual shared_ptr< IContainer > | newClone () const |
int | getLength () const |
const ArrayIndex | getArrayIndex (const int i) const |
void | addArray (const ArrayIndex &aIndex, shared_ptr< ArrayBase > a) |
void | removeArray (const ArrayIndex &aIndex) |
MultiField & | saxpy (const MultiFieldReduction &alphaMF, const MultiField &xMF) |
MultiField & | msaxpy (const MultiFieldReduction &alphaMF, const MultiField &xMF) |
shared_ptr< MultiFieldReduction > | reduceSum () const |
shared_ptr< MultiFieldReduction > | getOneNorm () const |
shared_ptr< MultiFieldReduction > | dotWith (const MultiField &ofield) const |
const ArrayIndexList & | getArrayIndices () const |
shared_ptr< MultiField > | extract (const ArrayIndexList &indices) |
void | merge (const MultiField &other) |
void | syncScatter (const ArrayIndex &i) |
void | syncGather (const ArrayIndex &i) |
void | sync () |
![]() | |
IContainer () | |
virtual | ~IContainer () |
IContainer & | operator= (const IContainer &oc) |
Private Member Functions | |
void | createSyncGatherArrays (const ArrayIndex &i) |
void | syncScatterLevel1 (const ArrayIndex &i) |
void | createSyncGatherArraysLevel1 (const ArrayIndex &i) |
void | syncGatherLevel1 (const ArrayIndex &i) |
int | get_request_size () |
int | get_request_size_scatter_level1 () |
int | get_request_size_gather_level1 () |
void | syncLevel1 () |
Private Attributes | |
int | _length |
ArrayList | _arrays |
ArrayIndexList | _arrayIndices |
ArrayMap | _arrayMap |
GhostArrayMap | _ghostArrays |
GhostArrayMap | _ghostArraysLevel1 |
Definition at line 17 of file MultiField.h.
typedef pair<const Field*, const StorageSite*> MultiField::ArrayIndex |
Definition at line 21 of file MultiField.h.
typedef vector<ArrayIndex> MultiField::ArrayIndexList |
Definition at line 24 of file MultiField.h.
typedef vector<shared_ptr<ArrayBase> > MultiField::ArrayList |
Definition at line 23 of file MultiField.h.
typedef map<ArrayIndex,int> MultiField::ArrayMap |
Definition at line 22 of file MultiField.h.
typedef pair<ArrayIndex,ArrayIndex> MultiField::EntryIndex |
Definition at line 25 of file MultiField.h.
typedef map<EntryIndex,shared_ptr<ArrayBase> > MultiField::GhostArrayMap |
Definition at line 26 of file MultiField.h.
MultiField::MultiField | ( | ) |
Definition at line 17 of file MultiField.cpp.
References logCtor.
Referenced by dotWith(), getOneNorm(), newClone(), and newCopy().
|
virtual |
Definition at line 27 of file MultiField.cpp.
References logDtor.
void MultiField::addArray | ( | const ArrayIndex & | aIndex, |
shared_ptr< ArrayBase > | a | ||
) |
Definition at line 270 of file MultiField.cpp.
References _arrayIndices, _arrayMap, _arrays, and _length.
Referenced by LinearSystem::createCoarse(), dotWith(), 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(), BatteryModel< T >::Impl::initThermalLinearization(), merge(), and MultiFieldMatrix::quadProduct().
|
virtual |
Implements IContainer.
Definition at line 127 of file MultiField.cpp.
References _arrayMap, ArrayBase::copyFrom(), and operator[]().
|
private |
Definition at line 386 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArrays, StorageSite::getGatherMap(), Array< T >::getLength(), and ArrayBase::newSizedClone().
Referenced by sync().
|
private |
Definition at line 410 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArraysLevel1, StorageSite::getCountLevel1(), StorageSite::getGatherMapLevel1(), ArrayBase::getLength(), Array< T >::getLength(), and ArrayBase::newSizedClone().
Referenced by syncLevel1().
MultiField::DEFINE_TYPENAME | ( | "MultiField" | ) |
shared_ptr< MultiFieldReduction > MultiField::dotWith | ( | const MultiField & | ofield | ) | const |
Definition at line 231 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, addArray(), ArrayBase::dotWith(), StorageSite::getSelfCount(), and MultiField().
Referenced by AMG::cycle().
shared_ptr< MultiField > MultiField::extract | ( | const ArrayIndexList & | indices | ) |
Definition at line 304 of file MultiField.cpp.
References getArrayPtr(), and removeArray().
|
private |
Definition at line 555 of file MultiField.cpp.
References _arrayIndices, StorageSite::getGatherProcID(), and StorageSite::getScatterMap().
Referenced by sync().
|
private |
Definition at line 663 of file MultiField.cpp.
References _arrayIndices, _arrayMap, _arrays, StorageSite::getCountLevel1(), StorageSite::getGatherMapLevel1(), StorageSite::getGatherProcID(), and ArrayBase::getLength().
Referenced by syncLevel1().
|
private |
Definition at line 641 of file MultiField.cpp.
References _arrayIndices, _arrayMap, _arrays, StorageSite::getCountLevel1(), StorageSite::getGatherProcID(), ArrayBase::getLength(), and StorageSite::getScatterMapLevel1().
Referenced by syncLevel1().
|
inline |
Definition at line 55 of file MultiField.h.
References _arrayIndices.
Referenced by MultiFieldMatrix::computeResidual(), MultiFieldMatrix::correctSolution(), MultiFieldMatrix::createCoarseConnectivity(), MultiFieldMatrix::createCoarseMatrices(), MultiFieldMatrix::createCoarsening(), MultiFieldMatrix::createCoarseToFineMapping(), MultiFieldMatrix::forwardGS(), MultiFieldMatrix::iluSolve(), MultiFieldMatrix::injectResidual(), MultiFieldMatrix::Jacobi(), MultiFieldMatrix::multiply(), MultiFieldMatrix::multiplyAndAdd(), MultiFieldMatrix::quadProduct(), MultiFieldMatrix::reverseGS(), DirectSolver::solve(), MultiFieldMatrix::solveBoundary(), MultiFieldMatrix::spikeSolve(), and MultiFieldMatrix::syncGhostCoarsening().
|
inline |
shared_ptr< ArrayBase > MultiField::getArrayPtr | ( | const ArrayIndex & | i | ) |
Definition at line 67 of file MultiField.cpp.
References _arrayMap, and _arrays.
Referenced by LinearSystem::createCoarse(), and extract().
|
inline |
Definition at line 54 of file MultiField.h.
References _length.
Referenced by MultiFieldMatrix::computeResidual(), MultiFieldMatrix::correctSolution(), MultiFieldMatrix::createCoarseConnectivity(), MultiFieldMatrix::createCoarseMatrices(), MultiFieldMatrix::createCoarsening(), MultiFieldMatrix::createCoarseToFineMapping(), MultiFieldMatrix::forwardGS(), MultiFieldMatrix::iluSolve(), MultiFieldMatrix::injectResidual(), MultiFieldMatrix::Jacobi(), MultiFieldMatrix::multiply(), MultiFieldMatrix::multiplyAndAdd(), MultiFieldMatrix::quadProduct(), MultiFieldMatrix::reverseGS(), DirectSolver::solve(), MultiFieldMatrix::solveBoundary(), MultiFieldMatrix::spikeSolve(), and MultiFieldMatrix::syncGhostCoarsening().
shared_ptr< MultiFieldReduction > MultiField::getOneNorm | ( | ) | const |
Definition at line 216 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, ArrayBase::getOneNorm(), StorageSite::getSelfCount(), and MultiField().
Referenced by BCGStab::solve(), ILU0Solver::solve(), JacobiSolver::solve(), CG::solve(), SpikeSolver::solve(), DirectSolver::solve(), and AMG::solve().
bool MultiField::hasArray | ( | const ArrayIndex & | i | ) | const |
void MultiField::merge | ( | const MultiField & | other | ) |
Definition at line 316 of file MultiField.cpp.
References _arrayMap, _arrays, and addArray().
MultiField & MultiField::msaxpy | ( | const MultiFieldReduction & | alphaMF, |
const MultiField & | xMF | ||
) |
Definition at line 177 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, and ArrayBase::msaxpy().
Referenced by BCGStab::solve().
|
virtual |
Implements IContainer.
Definition at line 81 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, MultiField(), and IContainer::newClone().
Referenced by MultiFieldMatrix::Jacobi().
|
virtual |
Implements IContainer.
Definition at line 101 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, MultiField(), and IContainer::newCopy().
Referenced by BCGStab::solve(), and CG::solve().
|
virtual |
Definition at line 204 of file MultiField.cpp.
References _arrayIndices, _arrays, and _length.
|
virtual |
Definition at line 139 of file MultiField.cpp.
References _arrayIndices, _arrays, and _length.
|
virtual |
Definition at line 151 of file MultiField.cpp.
References _arrayIndices, _arrays, and _length.
|
virtual |
Definition at line 192 of file MultiField.cpp.
References _arrayIndices, _arrays, and _length.
const ArrayBase & MultiField::operator[] | ( | const ArrayIndex & | i | ) | const |
Definition at line 39 of file MultiField.cpp.
References _arrayMap, and _arrays.
Referenced by copyFrom().
ArrayBase & MultiField::operator[] | ( | const ArrayIndex & | i | ) |
Definition at line 53 of file MultiField.cpp.
References _arrayMap, and _arrays.
|
inline |
|
inline |
shared_ptr< MultiFieldReduction > MultiField::reduceSum | ( | ) | const |
Definition at line 249 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, and IContainer::newCopy().
Referenced by MultiFieldMatrix::quadProduct().
void MultiField::removeArray | ( | const ArrayIndex & | aIndex | ) |
Definition at line 280 of file MultiField.cpp.
References _arrayIndices, _arrayMap, _arrays, and _length.
Referenced by extract().
MultiField & MultiField::saxpy | ( | const MultiFieldReduction & | alphaMF, |
const MultiField & | xMF | ||
) |
Definition at line 163 of file MultiField.cpp.
References _arrayIndices, _arrays, _length, and ArrayBase::saxpy().
void MultiField::sync | ( | ) |
Definition at line 489 of file MultiField.cpp.
References _arrayIndices, _ghostArrays, createSyncGatherArrays(), get_request_size(), ArrayBase::getData(), ArrayBase::getDataSize(), StorageSite::getGatherMap(), StorageSite::getGatherProcID(), StorageSite::getScatterMap(), StorageSite::getTag(), syncGather(), syncLevel1(), and syncScatter().
Referenced by LinearSystem::createCoarse(), MultiFieldMatrix::forwardGS(), MultiFieldMatrix::iluSolve(), MultiFieldMatrix::Jacobi(), MultiFieldMatrix::multiply(), MultiFieldMatrix::multiplyAndAdd(), MultiFieldMatrix::reverseGS(), AMG::solve(), and MultiFieldMatrix::spikeSolve().
void MultiField::syncGather | ( | const ArrayIndex & | i | ) |
Definition at line 436 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArrays, ArrayBase::gather(), and StorageSite::getGatherMap().
Referenced by MultiFieldMatrix::forwardGS(), MultiFieldMatrix::reverseGS(), and sync().
|
private |
Definition at line 461 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArraysLevel1, ArrayBase::gather(), StorageSite::getCountLevel1(), StorageSite::getGatherMapLevel1(), and ArrayBase::getLength().
Referenced by syncLevel1().
|
private |
Definition at line 575 of file MultiField.cpp.
References _arrayIndices, _arrayMap, _arrays, _ghostArraysLevel1, createSyncGatherArraysLevel1(), get_request_size_gather_level1(), get_request_size_scatter_level1(), StorageSite::getCountLevel1(), ArrayBase::getData(), ArrayBase::getDataSize(), StorageSite::getGatherMapLevel1(), StorageSite::getGatherProcID(), ArrayBase::getLength(), StorageSite::getScatterMapLevel1(), StorageSite::getTag(), syncGatherLevel1(), and syncScatterLevel1().
Referenced by sync().
void MultiField::syncScatter | ( | const ArrayIndex & | i | ) |
Definition at line 325 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArrays, Array< T >::getLength(), StorageSite::getScatterMap(), ArrayBase::newSizedClone(), and ArrayBase::scatter().
Referenced by MultiFieldMatrix::forwardGS(), MultiFieldMatrix::reverseGS(), and sync().
|
private |
Definition at line 358 of file MultiField.cpp.
References _arrayMap, _arrays, _ghostArraysLevel1, StorageSite::getCountLevel1(), ArrayBase::getLength(), Array< T >::getLength(), StorageSite::getScatterMapLevel1(), ArrayBase::newSizedClone(), and ArrayBase::scatter().
Referenced by syncLevel1().
|
virtual |
Implements IContainer.
Definition at line 115 of file MultiField.cpp.
References _arrays, _ghostArrays, and _length.
Referenced by StructureModel< T >::Impl::advanceExplicit(), LinearSystem::createCoarse(), AMG::cycle(), and BCGStab::solve().
|
private |
Definition at line 93 of file MultiField.h.
Referenced by addArray(), dotWith(), get_request_size(), get_request_size_gather_level1(), get_request_size_scatter_level1(), getArrayIndex(), getArrayIndices(), getOneNorm(), msaxpy(), newClone(), newCopy(), operator*=(), operator+=(), operator-=(), operator/=(), reduceSum(), removeArray(), saxpy(), sync(), and syncLevel1().
|
private |
Definition at line 94 of file MultiField.h.
Referenced by addArray(), copyFrom(), createSyncGatherArrays(), createSyncGatherArraysLevel1(), get_request_size_gather_level1(), get_request_size_scatter_level1(), getArrayPtr(), hasArray(), merge(), operator[](), removeArray(), syncGather(), syncGatherLevel1(), syncLevel1(), syncScatter(), and syncScatterLevel1().
|
private |
Definition at line 92 of file MultiField.h.
Referenced by addArray(), createSyncGatherArrays(), createSyncGatherArraysLevel1(), dotWith(), get_request_size_gather_level1(), get_request_size_scatter_level1(), getArrayPtr(), getOneNorm(), merge(), msaxpy(), newClone(), newCopy(), operator*=(), operator+=(), operator-=(), operator/=(), operator[](), reduceSum(), removeArray(), saxpy(), syncGather(), syncGatherLevel1(), syncLevel1(), syncScatter(), syncScatterLevel1(), and zero().
|
private |
Definition at line 95 of file MultiField.h.
Referenced by createSyncGatherArrays(), sync(), syncGather(), syncScatter(), and zero().
|
private |
Definition at line 96 of file MultiField.h.
Referenced by createSyncGatherArraysLevel1(), syncGatherLevel1(), syncLevel1(), and syncScatterLevel1().
|
private |
Definition at line 91 of file MultiField.h.
Referenced by addArray(), dotWith(), getLength(), getOneNorm(), msaxpy(), newClone(), newCopy(), operator*=(), operator+=(), operator-=(), operator/=(), reduceSum(), removeArray(), saxpy(), and zero().