Example charm++/matmul: simplify logic for when to pass blocks
[charm.git] / examples / charm++ / Molecular2D / common.h
1 /** \file common.h
2  *  Author: Abhinav S Bhatele
3  *  Date Created: July 1st, 2008
4  *
5  */
6
7 #ifndef __COMMON_H__
8 #define __COMMON_H__
9
10 #include "pup.h"
11
12 #define DEFAULT_MASS            1
13 #define DEFAULT_DELTA           0.005
14 #define DEFAULT_PARTICLES       5000
15
16 #define PATCHARRAY_DIM_X        5
17 #define PATCHARRAY_DIM_Y        5
18 #define PATCH_SIZE              1
19
20 #define DEFAULT_RADIUS          5
21 #define DEFAULT_FINALSTEPCOUNT  51
22 #define MAX_VELOCITY            30.0
23
24 #define KAWAY_X                 1
25 #define KAWAY_Y                 1
26 #define NBRS_X                  (2*KAWAY_X+1)
27 #define NBRS_Y                  (2*KAWAY_Y+1)
28 #define NUM_NEIGHBORS           (NBRS_X * NBRS_Y)
29
30 #define WRAP_X(a)               (((a)+patchArrayDimX)%patchArrayDimX)
31 #define WRAP_Y(a)               (((a)+patchArrayDimY)%patchArrayDimY)
32
33 // Class for keeping track of the properties for a particle
34 class Particle{
35   public:
36     double mass;        // mass of the particle
37     double x;           // position in x axis
38     double y;           // position in y axis
39     double fx;          // total forces on x axis
40     double fy;          // total forces on y axis
41     double ax;          // acceleration on x axis
42     double ay;          // acceleration on y axis
43     double vx;          // velocity on x axis
44     double vy;          // velocity on y axis
45     int id;
46
47     // Default constructor
48     Particle() {
49       fx = fy = 0.0;
50     }
51
52     // Function for pupping properties
53     void pup(PUP::er &p) {
54       p | mass;
55       p | x;
56       p | y;
57       p | fx;
58       p | fy;
59       p | ax;
60       p | ay;
61       p | vx;
62       p | vy;
63       p | id;
64     }
65 };
66
67 class Color {
68   public:
69     unsigned char R, G, B;
70
71     // Generate a unique color for each index from 0 to total-1
72     Color(int index){
73       int total = 8;
74       if(index % total == 0) {
75         R = 255;
76         G = 100;
77         B = 100;
78       } else if(index % total == 1) {
79         R = 100;
80         G = 255;
81         B = 100;
82       } else if(index % total == 2) {
83         R = 100;
84         G = 100;
85         B = 255;
86       } else if(index % total == 3) {
87         R = 100;
88         G = 255;
89         255;
90       } else if(index % total == 4) {
91         R = 100;
92         G = 255;
93         B = 255;
94       } else if(index % total == 5) {
95         R = 255;
96         G = 255;
97         B = 100;
98       } else if(index % total == 6) {
99         R = 255;
100         G = 100;
101         B = 255;
102       } else {
103         R = 170;
104         G = 170;
105         B = 170;
106       }
107     }   
108 };
109
110 #endif