Diana
0.8.3
|
Parallel Solver. More...
#include <ParallelSolver.hpp>
Public Member Functions | |
CParallelSolver (const Common::Types::CapeString &_szConnectionsFileName) | |
CapeLong | FindInitialConditions (CapeDouble _dStartTime, CapeDouble _dEndTime, CapeDouble _dInitialStepSize=0) throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) |
void | Run (CapeDouble _dInitialWindowSize, CapeDouble _dEndTime, CapeDouble _dInitialStepSize=0) throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) |
Numeric::Solvers::Solver::ICapeNumericSolver * | AddModel (Numeric::Solvers::Model::ICapeNumericModel *_Model, const Common::Types::CapeString &ModelName) throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) |
void | ShowInfo () |
Common::Types::CapeArrayString | GetAllModelNames () |
Common::Types::CapeArrayString | GetAllESONames () |
Private Member Functions | |
void | InitialLoadBalancing () throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) |
void | TransmitData () |
void | SaveState () throw (Common::Error::ECapeUnknown) |
void | LoadState () throw (Common::Error::ECapeUnknown) |
CapeBoolean | CheckConvergence () |
void | ReduceError () |
CapeLong | MoveNumericObject (CapeLong _nObjectIndex, CapeLong _nSourcePE, CapeLong _nDestinationPE) |
CapeDouble | CalculateNewWindowSize (CapeLong _lIterationNumber, CapeDouble _dOldWindowSize, CapeBoolean _bWasConverged) |
void | ShowStat (CapeBoolean _bShowTotal) |
Private Attributes | |
int | m_nMyRank |
Rank (index) of current process. | |
int | m_nProcQuantity |
CRouter | m_Router |
Total processes quantity. | |
CMemoryManager | m_MemoryManager |
CapeString | m_szConnectionsFileName |
The name of file where saved model connections. | |
std::vector< CNumericObject * > | m_Objects |
vector of objects | |
CapeArrayBoolean | m_ObjectsConvergences |
vector of convergences for each object | |
CapeArrayLong | m_ModelDisplacement |
This array contains indexes of processors where situated objects. | |
CapeLong | m_lVerboseLevel |
CapeBoolean | m_bNeedToConsistentInitialize |
CapeLong | m_lErrorStatus |
Parallel Solver.
Numeric::Solvers::Solver::ICapeNumericSolver* AddModel | ( | Numeric::Solvers::Model::ICapeNumericModel * | _Model, |
const Common::Types::CapeString & | ModelName | ||
) | throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) [virtual] |
Method Add Solver to the list of solvers on this processor.
Implements IParallelSolver.
void InitialLoadBalancing | ( | ) | throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) [private] |
Make initial Load Balancing.
CapeLong MoveNumericObject | ( | CapeLong | _nObjectIndex, |
CapeLong | _nSourcePE, | ||
CapeLong | _nDestinationPE | ||
) | [private] |
This function cut numeric object form One PE and move it to another. It return value which indicate the status of operation. (All possible statuses are in ParallelDefines.hpp)
void ReduceError | ( | ) | [private] |
Check if there are was error on one of processors
void SaveState | ( | ) | throw (Common::Error::ECapeUnknown) [private] |
Two functions which save state of numeric objects and load states. They are using at the begining of the window at the first, second, third ... iteration.
void TransmitData | ( | ) | [private] |
Transmit data between all numeric objects.
CMemoryManager m_MemoryManager [private] |
Memory Manager object (MemoryManager.hpp)
Total processes quantity.
Router object (for detailed information see Router.hpp)