examples/charm++: Always use CkWallTimer, not CmiWallTimer (tested)
[charm.git] / examples / charm++ / cell / md / md_config.h
1 #ifndef __MD_CONFIG_H__
2 #define __MD_CONFIG_H__
3
4
5 ////////////////////////////////////////////////////////////////////////////////
6 // Default Simulation Parameters
7
8
9 // convenience typedefs and consts to facilitate float vs double usage
10 #define USE_DOUBLE 0
11
12 #if USE_DOUBLE
13   typedef double  MD_FLOAT;
14   #define  MD_VEC simdia_veclf
15   const double zero=0.0;
16   const double one=1.0;
17   const double two=2.0;
18   #define myvec_numElems simdia_veclf_numElems;
19   #define vextract_MDF simdia_vextractlf
20   #define vsub_MDF simdia_vsublf
21   #define vadd_MDF simdia_vaddlf
22   #define vmadd_MDF simdia_vmaddlf
23   #define vmul_MDF simdia_vmullf
24   #define vspread_MDF simdia_vspreadlf
25   #define vrecip_MDF simdia_vreciplf
26   #define vsqrt_MDF simdia_vsqrtlf
27   #define visfinite_MDF simdia_visfinitelf
28 #else
29   typedef float  MD_FLOAT;
30   #define  MD_VEC simdia_vecf
31   #define myvec_numElems simdia_vecf_numElems;
32   const float zero=0.0f;
33   const float one=1.0f;
34   const float two=2.0f;
35   #define vextract_MDF simdia_vextractf
36   #define vsub_MDF simdia_vsubf
37   #define vadd_MDF simdia_vaddf
38   #define vmadd_MDF simdia_vmaddf
39   #define vmul_MDF simdia_vmulf
40   #define vspread_MDF simdia_vspreadf
41   #define vrecip_MDF simdia_vrecipf
42   #define vsqrt_MDF simdia_vsqrtf
43   #define visfinite_MDF simdia_visfinitef
44 #endif
45
46 #define DEFAULT_NUM_PARTICLES_PER_PATCH  (128)
47
48 #define DEFAULT_NUM_PATCHES_X              (2)
49 #define DEFAULT_NUM_PATCHES_Y              (2)
50 #define DEFAULT_NUM_PATCHES_Z              (2)
51
52 #define DEFAULT_NUM_STEPS                 (16)
53 #define STEPS_PER_PRINT                   (16)
54
55 #define USE_ARRAY_SECTIONS                 (1)
56
57 #define USE_PROXY_PATCHES                  (1)
58
59
60 ////////////////////////////////////////////////////////////////////////////////
61 // Physics Constants
62
63 #if USE_DOUBLE
64 #define TIME_PER_STEP       (1.0e-15)           // Unit: s
65 #define SIM_BOX_SIDE_LEN    (1.0e-7)            // Unit: m (NOTE: 1 nm = 10A)
66 #define COULOMBS_CONSTANT   (8.987551787e-9)    // Unit: N*(m^2)*(C^-2)
67 #define ELECTRON_CHARGE     (-1.602176487e-19)  // Unit: C
68 #define ELECTRON_MASS       (9.109382154e-31)   // Unit: kg
69 #else
70 #define TIME_PER_STEP       (1.0e-15f)           // Unit: s
71 #define SIM_BOX_SIDE_LEN    (1.0e-7f)            // Unit: m (NOTE: 1 nm = 10A)
72 #define COULOMBS_CONSTANT   (8.987551787e-9f)    // Unit: N*(m^2)*(C^-2)
73 #define ELECTRON_CHARGE     (-1.602176487e-19f)  // Unit: C
74 #define ELECTRON_MASS       (9.109382154e-31f)   // Unit: kg
75 #endif
76
77 ////////////////////////////////////////////////////////////////////////////////
78 // Misc. Helper Macros
79
80 #define PATCH_XYZ_TO_I(x,y,z)  (((z)*numPatchesX*numPatchesY)+((y)*numPatchesX)+(x))
81 #define PATCH_I_TO_X(i)        ((i)%numPatchesX)
82 #define PATCH_I_TO_Y(i)        (((i)/numPatchesX)%numPatchesY)
83 #define PATCH_I_TO_Z(i)        ((i)/(numPatchesX*numPatchesY))
84
85
86 ////////////////////////////////////////////////////////////////////////////////
87 // Misc. Macros for Performance Testing
88
89 // DMK - DEBUG
90 #define ENABLE_STATIC_LOAD_BALANCING     (0)
91
92 // DMK - DEBUG
93 #define DUMP_INITIAL_PARTICLE_DATA       (0)
94
95 // DMK - DEBUG
96 #define COUNT_FLOPS                      (0)
97
98 // EJB - SANITY CHECK
99 #define SANITY_CHECK                     (0)
100
101 // DMK - DEBUG
102 #define ENABLE_USER_EVENTS               (0)
103 #define PROJ_USER_EVENT_PATCH_FORCECHECKIN_CALLBACK  (1120)
104 #define PROJ_USER_EVENT_PATCH_INTEGRATE_CALLBACK     (1121)
105 #define PROJ_USER_EVENT_SELFCOMPUTE_DOCALC_CALLBACK  (1130)
106 #define PROJ_USER_EVENT_SELFCOMPUTE_DOCALC_WORK      (1131)
107 #define PROJ_USER_EVENT_PAIRCOMPUTE_DOCALC_CALLBACK  (1140)
108 #define PROJ_USER_EVENT_PAIRCOMPUTE_DOCALC_WORK      (1141)
109 #define PROJ_USER_EVENT_MACHINEPROGRESS              (1150)
110
111 // DMK - DEBUG
112 #define ENABLE_NETWORK_PROGRESS          (0)
113 #if ENABLE_NETWORK_PROGRESS != 0
114   #if ENABLE_USER_EVENTS != 0
115     #define NetworkProgress  \
116       {  \
117         double __start_time__ = CkWallTimer();  \
118         CmiMachineProgressImpl();  \
119         traceUserBracketEvent(PROJ_USER_EVENT_MACHINEPROGRESS, __start_time__, CkWallTimer());  \
120       }
121   #else
122     #define NetworkProgress  CmiMachineProgressImpl();
123   #endif
124 #else
125   #define NetworkProgress
126 #endif
127
128
129 #endif //__MD_CONFIG_H__