Diana  0.8.3
IParallelEnv.hpp
00001 /* -----------------------------------------------------------------------------
00002  *  Diana process modelling, simulation and analysis software
00003  *  Copyright (c) 2005, Michael Krasnyk
00004  *  All rights reserved.
00005  *
00006  *  This file is a part of Diana process modelling, simulation and analysis software
00007  *
00008  *  Diana is free software; you can redistribute it and/or modify it
00009  *  under the terms of the GNU General Public License as published
00010  *  by the Free Software Foundation (see accompanying file LICENSE)
00011  * -----------------------------------------------------------------------------
00012  *  $Id$
00013  * -----------------------------------------------------------------------------
00014  *  Description:
00015  */
00016 
00017  
00018  
00019 #ifndef __IPARALLEL_ENV_H
00020 #define __IPARALLEL_ENV_H
00021 
00022 #include <CapeOpen.hpp>
00023 #include "IDistributedMatrix.hpp"
00024 #include "IParallelSolver.hpp"
00025 
00026 class IParallelEnv 
00027 {
00028 public:
00029    virtual void ShowInfo() = 0;
00030  
00031    virtual void Initialize() = 0;
00032 
00033    virtual CapeLong ProcessID()
00034       throw (Common::Error::ECapeUnknown) = 0;
00035 
00036    virtual CapeLong ProcessesNumber() 
00037        throw (Common::Error::ECapeUnknown) = 0;
00038 
00039    virtual void Barrier() = 0;
00040 
00041    virtual IDistributedMatrix* CreateDistributedMatrix( const Common::Types::CapeLong nRows = 0,
00042       const Common::Types::CapeLong nCols = 0 ) = 0;
00043 
00044    virtual IParallelSolver* CreateParallelSolver( const Common::Types::CapeString& 
00045       _szConnectionsFileName = "connections.dat" )
00046       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) = 0;
00047 };
00048 #endif