Merge branch 'upstream/OpenFOAM' into master
[freefoam.git] / src / Pstream / gamma / gammaPstreamImpl.H
blob7a06f40511a305db13c0ef01af6cf06d2b1fa79d
1 /*----------------------------------------------------------------------------*\
2                  ______             ______ ____          __  __
3                 |  ____|           |  ____/ __ \   /\   |  \/  |
4                 | |__ _ __ ___  ___| |__ | |  | | /  \  | \  / |
5                 |  __| '__/ _ \/ _ \  __|| |  | |/ /\ \ | |\/| |
6                 | |  | | |  __/  __/ |   | |__| / ____ \| |  | |
7                 |_|  |_|  \___|\___|_|    \____/_/    \_\_|  |_|
9                     FreeFOAM: The Cross-Platform CFD Toolkit
11   Copyright (C) 2008-2009 Michael Wild <themiwi@users.sf.net>
12                           Gerber van der Graaf <gerber_graaf@users.sf.net>
13 --------------------------------------------------------------------------------
14 License
15     This file is part of FreeFOAM.
17     FreeFOAM is free software; you can redistribute it and/or modify it
18     under the terms of the GNU General Public License as published by the
19     Free Software Foundation; either version 2 of the License, or (at your
20     option) any later version.
22     FreeFOAM is distributed in the hope that it will be useful, but WITHOUT
23     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25     for more details.
27     You should have received a copy of the GNU General Public License
28     along with FreeFOAM; if not, write to the Free Software Foundation,
29     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31 Class
32     Foam::gammaPstreamImpl
34 Description
35     GAMMA implementation of the PstreamImpl abstract base class.
37 SourceFiles
38     gammaPstreamImpl.C
40 \*----------------------------------------------------------------------------*/
42 #ifndef gammaPstreamImpl_H
43 #define gammaPstreamImpl_H
45 #include <OpenFOAM/PstreamImpl.H>
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 namespace Foam
52 /*---------------------------------------------------------------------------*\
53                            Class gammaPstreamImpl Declaration
54 \*---------------------------------------------------------------------------*/
56 class gammaPstreamImpl
58     public PstreamImpl
60     // Private Member Functions
62         //- Disallow default bitwise copy construct
63         gammaPstreamImpl(const gammaPstreamImpl&);
65         //- Disallow default bitwise assignment
66         void operator=(const gammaPstreamImpl&);
68 public:
70     // Declare name of the class and its debug switch
71     TypeName("gammaPstreamImpl");
73     // Constructors
75         //- Construct null
76         gammaPstreamImpl(){}
78     // Member Functions
80         //- Add the valid option this type of communications library
81         //  adds/requires on the command line
82         virtual void addValidParOptions(HashTable<string>& validParOptions);
84         //- Initialisation function called from main
85         //  Spawns slave processes and initialises inter-communication
86         virtual bool init(int& argc, char**& argv, int& myProcNo_, List<int>& procIDs_, bool& isParallel);
88         //- Exit program
89         virtual void exit(int errnum);
91         //- Abort program
92         virtual void abort();
94         //- Reduce implementation for scalars (@sa PstreamReduceOps.H)
95         void reduce(scalar& Value, const sumOp<scalar>& bop);
100 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
102 } // End namespace Foam
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 #endif
108 // ************************ vim: set sw=4 sts=4 et: ************************ //