Diana
0.8.3
|
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