FreeFOAM The Cross-Platform CFD Toolkit
mpiPstreamImpl.H
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*\
2  ______ _ ____ __ __
3  | ____| _| |_ / __ \ /\ | \/ |
4  | |__ _ __ ___ ___ / \| | | | / \ | \ / |
5  | __| '__/ _ \/ _ ( (| |) ) | | |/ /\ \ | |\/| |
6  | | | | | __/ __/\_ _/| |__| / ____ \| | | |
7  |_| |_| \___|\___| |_| \____/_/ \_\_| |_|
8 
9  FreeFOAM: The Cross-Platform CFD Toolkit
10 
11  Copyright (C) 2008-2012 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.
16 
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 3 of the License, or (at your
20  option) any later version.
21 
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.
26 
27  You should have received a copy of the GNU General Public License
28  along with FreeFOAM. If not, see <http://www.gnu.org/licenses/>.
29 
30 Class
31  Foam::mpiPstreamImpl
32 
33 Description
34  MPI implementation of the PstreamImpl abstract base class.
35 
36 SourceFiles
37  mpiPstreamImpl.C
38 
39 \*----------------------------------------------------------------------------*/
40 
41 #ifndef mpiPstreamImpl_H
42 #define mpiPstreamImpl_H
43 
44 #include <OpenFOAM/PstreamImpl.H>
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 /*---------------------------------------------------------------------------*\
52  Class mpiPstreamImpl Declaration
53 \*---------------------------------------------------------------------------*/
54 
56 :
57  public PstreamImpl
58 {
59  // Private Member Functions
60 
61  //- Disallow default bitwise copy construct
63 
64  //- Disallow default bitwise assignment
65  void operator=(const mpiPstreamImpl&);
66 
67 public:
68 
69  // Declare name of the class and its debug switch
70  TypeName("mpiPstreamImpl");
71 
72  // Constructors
73 
74  //- Construct null
76 
77  // Member Functions
78 
79  //- Add the valid option this type of communications library
80  // adds/requires on the command line
81  virtual void addValidParOptions(HashTable<string>& validParOptions);
82 
83  //- Initialisation function called from main
84  // Spawns slave processes and initialises inter-communication
85  virtual bool init(int& argc, char**& argv, int& myProcNo_, List<int>& procIDs_, bool& isParallel);
86 
87  //- Exit program
88  virtual void exit(int errnum);
89 
90  //- Abort program
91  virtual void abort();
92 
93  //- Reduce implementation for scalars (@sa PstreamReduceOps.H)
94  void reduce(scalar& Value, const sumOp<scalar>& bop);
95 
96 };
97 
98 
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
100 
101 } // End namespace Foam
102 
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
104 
105 #endif
106 
107 // ************************ vim: set sw=4 sts=4 et: ************************ //