add Jacobi3d and gauss-siedal combination
[charm.git] / tests / charm++ / jacobi3d-gausssiedal / jacobi3d.ci
1 mainmodule jacobi3d {
2
3   readonly CProxy_Main mainProxy;
4   readonly int arrayDimX;
5   readonly int arrayDimY;
6   readonly int arrayDimZ;
7   readonly int blockDimX;
8   readonly int blockDimY;
9   readonly int blockDimZ;
10
11   readonly int num_chare_x;
12   readonly int num_chare_y;
13   readonly int num_chare_z;
14
15   readonly int globalBarrier;
16
17   message ghostMsg {
18     double gh[];
19   };
20
21   mainchare Main {
22     entry Main(CkArgMsg *m);
23     entry void start();
24     entry void report();
25   };
26
27   array [3D] Jacobi {
28     // Normal Charm++ entry methods
29     entry Jacobi(void);
30     entry void begin_iteration(void);
31     entry void receiveGhosts(ghostMsg *gmsg);
32     entry void processGhosts(ghostMsg *gmsg);
33
34     entry void doStep() {
35       serial "begin_iteration" {
36         begin_iteration();
37       }
38       for(imsg = 0; imsg < 6; imsg++) {
39         // "iterations" keeps track of messages across steps
40         when receiveGhosts[iterations] (ghostMsg *gmsg)
41           serial "process ghosts" { processGhosts(gmsg); }
42       }
43       serial "doWork" {
44         check_and_compute();
45       }
46     };
47   };
48
49   group JacobiMap : CkArrayMap {
50     entry JacobiMap(int x, int y, int z);
51   };
52
53   nodegroup OmpInitializer {
54     entry OmpInitializer(int numThreads); 
55   };
56
57 };