2
/// This file is part of Rheolef.
4
/// Copyright (C) 2000-2009 Pierre Saramito <Pierre.Saramito@imag.fr>
6
/// Rheolef is free software; you can redistribute it and/or modify
7
/// it under the terms of the GNU General Public License as published by
8
/// the Free Software Foundation; either version 2 of the License, or
9
/// (at your option) any later version.
11
/// Rheolef is distributed in the hope that it will be useful,
12
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
/// GNU General Public License for more details.
16
/// You should have received a copy of the GNU General Public License
17
/// along with Rheolef; if not, write to the Free Software
18
/// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
/// =========================================================================
21
#include "rheolef/config.h"
22
#ifndef _RHEOLEF_HAVE_MPI
23
int main() { return 0; }
24
#else // _RHEOLEF_HAVE_MPI
25
#include "rheolef/distributed.h"
26
#include "rheolef/array.h"
27
#include "rheolef/index_set.h"
28
using namespace rheolef;
31
int main(int argc, char**argv) {
32
environment distributed(argc, argv);
34
check_macro (comm.size() == 2 || comm.size() == 3, "expect np=2 or 3");
37
array<index_set> x (dis_n);
39
set<size_t> ext_idx_set;
40
switch (comm.rank()) {
42
ext_idx_set.insert (3);
43
ext_idx_set.insert (5);
46
ext_idx_set.insert (0);
47
ext_idx_set.insert (1);
50
ext_idx_set.insert (0);
51
ext_idx_set.insert (3);
53
default: error_macro ("unsupported np >= 4");
55
map <size_t,index_set> ext_idx_map;
56
x.get_dis_entry (ext_idx_set, ext_idx_map);
57
for (map <size_t,index_set>::const_iterator iter = ext_idx_map.begin(), last = ext_idx_map.end();
58
iter != last; iter++) {
59
cout << "proc " << comm.rank() << ": x[" << (*iter).first << "] = " << (*iter).second << endl;
62
#endif // _RHEOLEF_HAVE_MPI