11 #define hit_comTypeStruct1(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A) \
13 NATIVE_STRUCT cmdline; \
14 int blockcounts[1] = {(COUNT_A)}; \
15 MPI_Datatype types[1] = {(TYPE_A)}; \
17 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
19 for(ivarloop=0; ivarloop>=0; ivarloop--){ \
20 displs[ivarloop] -= displs[0]; \
22 MPI_Type_create_struct(1, blockcounts, displs, types, new_type); \
23 MPI_Type_commit(new_type); \
27 #define hit_comTypeStruct2(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B) \
29 NATIVE_STRUCT cmdline; \
30 int blockcounts[2] = {(COUNT_A), (COUNT_B)}; \
31 MPI_Datatype types[2] = {(TYPE_A), (TYPE_B)}; \
33 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
34 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
36 for(ivarloop=1; ivarloop>=0; ivarloop--){ \
37 displs[ivarloop] -= displs[0]; \
39 MPI_Type_create_struct(2, blockcounts, displs, types, new_type); \
40 MPI_Type_commit(new_type); \
44 #define hit_comTypeStruct3(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C) \
46 NATIVE_STRUCT cmdline; \
47 int blockcounts[3] = {(COUNT_A), (COUNT_B), (COUNT_C)}; \
48 MPI_Datatype types[3] = {(TYPE_A), (TYPE_B), (TYPE_C)}; \
50 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
51 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
52 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
54 for(ivarloop=2; ivarloop>=0; ivarloop--){ \
55 displs[ivarloop] -= displs[0]; \
57 MPI_Type_create_struct(3, blockcounts, displs, types, new_type); \
58 MPI_Type_commit(new_type); \
62 #define hit_comTypeStruct4(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D) \
64 NATIVE_STRUCT cmdline; \
65 int blockcounts[4] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D)}; \
66 MPI_Datatype types[4] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D)}; \
68 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
69 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
70 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
71 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
73 for(ivarloop=3; ivarloop>=0; ivarloop--){ \
74 displs[ivarloop] -= displs[0]; \
76 MPI_Type_create_struct(4, blockcounts, displs, types, new_type); \
77 MPI_Type_commit(new_type); \
81 #define hit_comTypeStruct5(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E) \
83 NATIVE_STRUCT cmdline; \
84 int blockcounts[5] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E)}; \
85 MPI_Datatype types[5] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E)}; \
87 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
88 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
89 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
90 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
91 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
93 for(ivarloop=4; ivarloop>=0; ivarloop--){ \
94 displs[ivarloop] -= displs[0]; \
96 MPI_Type_create_struct(5, blockcounts, displs, types, new_type); \
97 MPI_Type_commit(new_type); \
101 #define hit_comTypeStruct6(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F) \
103 NATIVE_STRUCT cmdline; \
104 int blockcounts[6] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F)}; \
105 MPI_Datatype types[6] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F)}; \
106 MPI_Aint displs[6]; \
107 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
108 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
109 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
110 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
111 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
112 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
114 for(ivarloop=5; ivarloop>=0; ivarloop--){ \
115 displs[ivarloop] -= displs[0]; \
117 MPI_Type_create_struct(6, blockcounts, displs, types, new_type); \
118 MPI_Type_commit(new_type); \
122 #define hit_comTypeStruct7(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G) \
124 NATIVE_STRUCT cmdline; \
125 int blockcounts[7] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G)}; \
126 MPI_Datatype types[7] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G)}; \
127 MPI_Aint displs[7]; \
128 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
129 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
130 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
131 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
132 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
133 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
134 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
136 for(ivarloop=6; ivarloop>=0; ivarloop--){ \
137 displs[ivarloop] -= displs[0]; \
139 MPI_Type_create_struct(7, blockcounts, displs, types, new_type); \
140 MPI_Type_commit(new_type); \
144 #define hit_comTypeStruct8(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H) \
146 NATIVE_STRUCT cmdline; \
147 int blockcounts[8] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H)}; \
148 MPI_Datatype types[8] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H)}; \
149 MPI_Aint displs[8]; \
150 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
151 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
152 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
153 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
154 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
155 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
156 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
157 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
159 for(ivarloop=7; ivarloop>=0; ivarloop--){ \
160 displs[ivarloop] -= displs[0]; \
162 MPI_Type_create_struct(8, blockcounts, displs, types, new_type); \
163 MPI_Type_commit(new_type); \
167 #define hit_comTypeStruct9(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I) \
169 NATIVE_STRUCT cmdline; \
170 int blockcounts[9] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I)}; \
171 MPI_Datatype types[9] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I)}; \
172 MPI_Aint displs[9]; \
173 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
174 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
175 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
176 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
177 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
178 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
179 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
180 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
181 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
183 for(ivarloop=8; ivarloop>=0; ivarloop--){ \
184 displs[ivarloop] -= displs[0]; \
186 MPI_Type_create_struct(9, blockcounts, displs, types, new_type); \
187 MPI_Type_commit(new_type); \
191 #define hit_comTypeStruct10(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J) \
193 NATIVE_STRUCT cmdline; \
194 int blockcounts[10] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J)}; \
195 MPI_Datatype types[10] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J)}; \
196 MPI_Aint displs[10]; \
197 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
198 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
199 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
200 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
201 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
202 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
203 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
204 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
205 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
206 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
208 for(ivarloop=9; ivarloop>=0; ivarloop--){ \
209 displs[ivarloop] -= displs[0]; \
211 MPI_Type_create_struct(10, blockcounts, displs, types, new_type); \
212 MPI_Type_commit(new_type); \
216 #define hit_comTypeStruct11(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K) \
218 NATIVE_STRUCT cmdline; \
219 int blockcounts[11] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K)}; \
220 MPI_Datatype types[11] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K)}; \
221 MPI_Aint displs[11]; \
222 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
223 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
224 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
225 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
226 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
227 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
228 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
229 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
230 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
231 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
232 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
234 for(ivarloop=10; ivarloop>=0; ivarloop--){ \
235 displs[ivarloop] -= displs[0]; \
237 MPI_Type_create_struct(11, blockcounts, displs, types, new_type); \
238 MPI_Type_commit(new_type); \
242 #define hit_comTypeStruct12(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L) \
244 NATIVE_STRUCT cmdline; \
245 int blockcounts[12] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L)}; \
246 MPI_Datatype types[12] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L)}; \
247 MPI_Aint displs[12]; \
248 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
249 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
250 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
251 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
252 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
253 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
254 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
255 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
256 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
257 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
258 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
259 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
261 for(ivarloop=11; ivarloop>=0; ivarloop--){ \
262 displs[ivarloop] -= displs[0]; \
264 MPI_Type_create_struct(12, blockcounts, displs, types, new_type); \
265 MPI_Type_commit(new_type); \
269 #define hit_comTypeStruct13(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M) \
271 NATIVE_STRUCT cmdline; \
272 int blockcounts[13] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M)}; \
273 MPI_Datatype types[13] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M)}; \
274 MPI_Aint displs[13]; \
275 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
276 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
277 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
278 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
279 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
280 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
281 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
282 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
283 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
284 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
285 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
286 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
287 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
289 for(ivarloop=12; ivarloop>=0; ivarloop--){ \
290 displs[ivarloop] -= displs[0]; \
292 MPI_Type_create_struct(13, blockcounts, displs, types, new_type); \
293 MPI_Type_commit(new_type); \
297 #define hit_comTypeStruct14(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N) \
299 NATIVE_STRUCT cmdline; \
300 int blockcounts[14] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N)}; \
301 MPI_Datatype types[14] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N)}; \
302 MPI_Aint displs[14]; \
303 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
304 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
305 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
306 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
307 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
308 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
309 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
310 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
311 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
312 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
313 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
314 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
315 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
316 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
318 for(ivarloop=13; ivarloop>=0; ivarloop--){ \
319 displs[ivarloop] -= displs[0]; \
321 MPI_Type_create_struct(14, blockcounts, displs, types, new_type); \
322 MPI_Type_commit(new_type); \
326 #define hit_comTypeStruct15(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O) \
328 NATIVE_STRUCT cmdline; \
329 int blockcounts[15] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O)}; \
330 MPI_Datatype types[15] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O)}; \
331 MPI_Aint displs[15]; \
332 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
333 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
334 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
335 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
336 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
337 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
338 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
339 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
340 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
341 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
342 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
343 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
344 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
345 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
346 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
348 for(ivarloop=14; ivarloop>=0; ivarloop--){ \
349 displs[ivarloop] -= displs[0]; \
351 MPI_Type_create_struct(15, blockcounts, displs, types, new_type); \
352 MPI_Type_commit(new_type); \
356 #define hit_comTypeStruct16(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P) \
358 NATIVE_STRUCT cmdline; \
359 int blockcounts[16] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P)}; \
360 MPI_Datatype types[16] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P)}; \
361 MPI_Aint displs[16]; \
362 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
363 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
364 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
365 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
366 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
367 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
368 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
369 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
370 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
371 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
372 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
373 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
374 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
375 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
376 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
377 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
379 for(ivarloop=15; ivarloop>=0; ivarloop--){ \
380 displs[ivarloop] -= displs[0]; \
382 MPI_Type_create_struct(16, blockcounts, displs, types, new_type); \
383 MPI_Type_commit(new_type); \
387 #define hit_comTypeStruct17(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q) \
389 NATIVE_STRUCT cmdline; \
390 int blockcounts[17] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q)}; \
391 MPI_Datatype types[17] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q)}; \
392 MPI_Aint displs[17]; \
393 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
394 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
395 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
396 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
397 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
398 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
399 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
400 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
401 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
402 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
403 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
404 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
405 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
406 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
407 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
408 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
409 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
411 for(ivarloop=16; ivarloop>=0; ivarloop--){ \
412 displs[ivarloop] -= displs[0]; \
414 MPI_Type_create_struct(17, blockcounts, displs, types, new_type); \
415 MPI_Type_commit(new_type); \
419 #define hit_comTypeStruct18(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R) \
421 NATIVE_STRUCT cmdline; \
422 int blockcounts[18] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R)}; \
423 MPI_Datatype types[18] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R)}; \
424 MPI_Aint displs[18]; \
425 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
426 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
427 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
428 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
429 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
430 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
431 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
432 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
433 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
434 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
435 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
436 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
437 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
438 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
439 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
440 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
441 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
442 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
444 for(ivarloop=17; ivarloop>=0; ivarloop--){ \
445 displs[ivarloop] -= displs[0]; \
447 MPI_Type_create_struct(18, blockcounts, displs, types, new_type); \
448 MPI_Type_commit(new_type); \
452 #define hit_comTypeStruct19(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S) \
454 NATIVE_STRUCT cmdline; \
455 int blockcounts[19] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S)}; \
456 MPI_Datatype types[19] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S)}; \
457 MPI_Aint displs[19]; \
458 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
459 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
460 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
461 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
462 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
463 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
464 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
465 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
466 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
467 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
468 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
469 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
470 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
471 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
472 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
473 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
474 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
475 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
476 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
478 for(ivarloop=18; ivarloop>=0; ivarloop--){ \
479 displs[ivarloop] -= displs[0]; \
481 MPI_Type_create_struct(19, blockcounts, displs, types, new_type); \
482 MPI_Type_commit(new_type); \
486 #define hit_comTypeStruct20(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T) \
488 NATIVE_STRUCT cmdline; \
489 int blockcounts[20] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T)}; \
490 MPI_Datatype types[20] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T)}; \
491 MPI_Aint displs[20]; \
492 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
493 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
494 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
495 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
496 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
497 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
498 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
499 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
500 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
501 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
502 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
503 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
504 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
505 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
506 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
507 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
508 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
509 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
510 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
511 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
513 for(ivarloop=19; ivarloop>=0; ivarloop--){ \
514 displs[ivarloop] -= displs[0]; \
516 MPI_Type_create_struct(20, blockcounts, displs, types, new_type); \
517 MPI_Type_commit(new_type); \
521 #define hit_comTypeStruct21(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U) \
523 NATIVE_STRUCT cmdline; \
524 int blockcounts[21] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U)}; \
525 MPI_Datatype types[21] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U)}; \
526 MPI_Aint displs[21]; \
527 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
528 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
529 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
530 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
531 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
532 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
533 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
534 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
535 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
536 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
537 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
538 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
539 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
540 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
541 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
542 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
543 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
544 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
545 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
546 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
547 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
549 for(ivarloop=20; ivarloop>=0; ivarloop--){ \
550 displs[ivarloop] -= displs[0]; \
552 MPI_Type_create_struct(21, blockcounts, displs, types, new_type); \
553 MPI_Type_commit(new_type); \
557 #define hit_comTypeStruct22(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V) \
559 NATIVE_STRUCT cmdline; \
560 int blockcounts[22] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V)}; \
561 MPI_Datatype types[22] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V)}; \
562 MPI_Aint displs[22]; \
563 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
564 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
565 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
566 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
567 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
568 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
569 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
570 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
571 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
572 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
573 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
574 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
575 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
576 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
577 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
578 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
579 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
580 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
581 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
582 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
583 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
584 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
586 for(ivarloop=21; ivarloop>=0; ivarloop--){ \
587 displs[ivarloop] -= displs[0]; \
589 MPI_Type_create_struct(22, blockcounts, displs, types, new_type); \
590 MPI_Type_commit(new_type); \
594 #define hit_comTypeStruct23(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W) \
596 NATIVE_STRUCT cmdline; \
597 int blockcounts[23] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W)}; \
598 MPI_Datatype types[23] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W)}; \
599 MPI_Aint displs[23]; \
600 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
601 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
602 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
603 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
604 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
605 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
606 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
607 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
608 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
609 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
610 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
611 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
612 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
613 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
614 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
615 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
616 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
617 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
618 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
619 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
620 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
621 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
622 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
624 for(ivarloop=22; ivarloop>=0; ivarloop--){ \
625 displs[ivarloop] -= displs[0]; \
627 MPI_Type_create_struct(23, blockcounts, displs, types, new_type); \
628 MPI_Type_commit(new_type); \
632 #define hit_comTypeStruct24(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X) \
634 NATIVE_STRUCT cmdline; \
635 int blockcounts[24] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X)}; \
636 MPI_Datatype types[24] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X)}; \
637 MPI_Aint displs[24]; \
638 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
639 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
640 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
641 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
642 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
643 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
644 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
645 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
646 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
647 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
648 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
649 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
650 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
651 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
652 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
653 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
654 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
655 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
656 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
657 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
658 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
659 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
660 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
661 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
663 for(ivarloop=23; ivarloop>=0; ivarloop--){ \
664 displs[ivarloop] -= displs[0]; \
666 MPI_Type_create_struct(24, blockcounts, displs, types, new_type); \
667 MPI_Type_commit(new_type); \
671 #define hit_comTypeStruct25(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y) \
673 NATIVE_STRUCT cmdline; \
674 int blockcounts[25] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y)}; \
675 MPI_Datatype types[25] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y)}; \
676 MPI_Aint displs[25]; \
677 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
678 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
679 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
680 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
681 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
682 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
683 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
684 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
685 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
686 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
687 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
688 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
689 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
690 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
691 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
692 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
693 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
694 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
695 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
696 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
697 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
698 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
699 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
700 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
701 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
703 for(ivarloop=24; ivarloop>=0; ivarloop--){ \
704 displs[ivarloop] -= displs[0]; \
706 MPI_Type_create_struct(25, blockcounts, displs, types, new_type); \
707 MPI_Type_commit(new_type); \
711 #define hit_comTypeStruct26(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z) \
713 NATIVE_STRUCT cmdline; \
714 int blockcounts[26] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z)}; \
715 MPI_Datatype types[26] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z)}; \
716 MPI_Aint displs[26]; \
717 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
718 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
719 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
720 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
721 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
722 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
723 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
724 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
725 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
726 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
727 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
728 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
729 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
730 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
731 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
732 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
733 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
734 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
735 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
736 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
737 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
738 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
739 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
740 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
741 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
742 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
744 for(ivarloop=25; ivarloop>=0; ivarloop--){ \
745 displs[ivarloop] -= displs[0]; \
747 MPI_Type_create_struct(26, blockcounts, displs, types, new_type); \
748 MPI_Type_commit(new_type); \
752 #define hit_comTypeStruct27(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA) \
754 NATIVE_STRUCT cmdline; \
755 int blockcounts[27] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA)}; \
756 MPI_Datatype types[27] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA)}; \
757 MPI_Aint displs[27]; \
758 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
759 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
760 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
761 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
762 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
763 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
764 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
765 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
766 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
767 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
768 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
769 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
770 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
771 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
772 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
773 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
774 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
775 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
776 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
777 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
778 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
779 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
780 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
781 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
782 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
783 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
784 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
786 for(ivarloop=26; ivarloop>=0; ivarloop--){ \
787 displs[ivarloop] -= displs[0]; \
789 MPI_Type_create_struct(27, blockcounts, displs, types, new_type); \
790 MPI_Type_commit(new_type); \
794 #define hit_comTypeStruct28(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB) \
796 NATIVE_STRUCT cmdline; \
797 int blockcounts[28] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB)}; \
798 MPI_Datatype types[28] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB)}; \
799 MPI_Aint displs[28]; \
800 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
801 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
802 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
803 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
804 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
805 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
806 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
807 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
808 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
809 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
810 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
811 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
812 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
813 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
814 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
815 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
816 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
817 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
818 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
819 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
820 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
821 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
822 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
823 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
824 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
825 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
826 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
827 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
829 for(ivarloop=27; ivarloop>=0; ivarloop--){ \
830 displs[ivarloop] -= displs[0]; \
832 MPI_Type_create_struct(28, blockcounts, displs, types, new_type); \
833 MPI_Type_commit(new_type); \
837 #define hit_comTypeStruct29(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC) \
839 NATIVE_STRUCT cmdline; \
840 int blockcounts[29] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC)}; \
841 MPI_Datatype types[29] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC)}; \
842 MPI_Aint displs[29]; \
843 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
844 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
845 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
846 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
847 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
848 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
849 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
850 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
851 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
852 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
853 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
854 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
855 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
856 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
857 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
858 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
859 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
860 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
861 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
862 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
863 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
864 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
865 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
866 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
867 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
868 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
869 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
870 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
871 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
873 for(ivarloop=28; ivarloop>=0; ivarloop--){ \
874 displs[ivarloop] -= displs[0]; \
876 MPI_Type_create_struct(29, blockcounts, displs, types, new_type); \
877 MPI_Type_commit(new_type); \
881 #define hit_comTypeStruct30(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD) \
883 NATIVE_STRUCT cmdline; \
884 int blockcounts[30] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD)}; \
885 MPI_Datatype types[30] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD)}; \
886 MPI_Aint displs[30]; \
887 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
888 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
889 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
890 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
891 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
892 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
893 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
894 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
895 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
896 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
897 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
898 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
899 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
900 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
901 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
902 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
903 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
904 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
905 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
906 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
907 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
908 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
909 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
910 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
911 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
912 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
913 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
914 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
915 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
916 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
918 for(ivarloop=29; ivarloop>=0; ivarloop--){ \
919 displs[ivarloop] -= displs[0]; \
921 MPI_Type_create_struct(30, blockcounts, displs, types, new_type); \
922 MPI_Type_commit(new_type); \
926 #define hit_comTypeStruct31(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE) \
928 NATIVE_STRUCT cmdline; \
929 int blockcounts[31] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE)}; \
930 MPI_Datatype types[31] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE)}; \
931 MPI_Aint displs[31]; \
932 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
933 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
934 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
935 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
936 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
937 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
938 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
939 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
940 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
941 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
942 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
943 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
944 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
945 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
946 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
947 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
948 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
949 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
950 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
951 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
952 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
953 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
954 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
955 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
956 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
957 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
958 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
959 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
960 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
961 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
962 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
964 for(ivarloop=30; ivarloop>=0; ivarloop--){ \
965 displs[ivarloop] -= displs[0]; \
967 MPI_Type_create_struct(31, blockcounts, displs, types, new_type); \
968 MPI_Type_commit(new_type); \
972 #define hit_comTypeStruct32(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF) \
974 NATIVE_STRUCT cmdline; \
975 int blockcounts[32] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF)}; \
976 MPI_Datatype types[32] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF)}; \
977 MPI_Aint displs[32]; \
978 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
979 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
980 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
981 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
982 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
983 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
984 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
985 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
986 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
987 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
988 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
989 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
990 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
991 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
992 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
993 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
994 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
995 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
996 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
997 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
998 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
999 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1000 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1001 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1002 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1003 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1004 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1005 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1006 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1007 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1008 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1009 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1011 for(ivarloop=31; ivarloop>=0; ivarloop--){ \
1012 displs[ivarloop] -= displs[0]; \
1014 MPI_Type_create_struct(32, blockcounts, displs, types, new_type); \
1015 MPI_Type_commit(new_type); \
1019 #define hit_comTypeStruct33(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG) \
1021 NATIVE_STRUCT cmdline; \
1022 int blockcounts[33] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG)}; \
1023 MPI_Datatype types[33] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG)}; \
1024 MPI_Aint displs[33]; \
1025 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1026 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1027 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1028 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1029 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1030 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1031 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1032 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1033 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1034 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1035 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1036 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1037 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1038 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1039 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1040 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1041 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1042 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1043 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1044 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1045 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1046 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1047 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1048 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1049 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1050 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1051 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1052 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1053 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1054 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1055 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1056 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1057 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1059 for(ivarloop=32; ivarloop>=0; ivarloop--){ \
1060 displs[ivarloop] -= displs[0]; \
1062 MPI_Type_create_struct(33, blockcounts, displs, types, new_type); \
1063 MPI_Type_commit(new_type); \
1067 #define hit_comTypeStruct34(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH) \
1069 NATIVE_STRUCT cmdline; \
1070 int blockcounts[34] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH)}; \
1071 MPI_Datatype types[34] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH)}; \
1072 MPI_Aint displs[34]; \
1073 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1074 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1075 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1076 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1077 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1078 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1079 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1080 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1081 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1082 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1083 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1084 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1085 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1086 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1087 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1088 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1089 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1090 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1091 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1092 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1093 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1094 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1095 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1096 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1097 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1098 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1099 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1100 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1101 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1102 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1103 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1104 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1105 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1106 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1108 for(ivarloop=33; ivarloop>=0; ivarloop--){ \
1109 displs[ivarloop] -= displs[0]; \
1111 MPI_Type_create_struct(34, blockcounts, displs, types, new_type); \
1112 MPI_Type_commit(new_type); \
1116 #define hit_comTypeStruct35(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI) \
1118 NATIVE_STRUCT cmdline; \
1119 int blockcounts[35] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI)}; \
1120 MPI_Datatype types[35] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI)}; \
1121 MPI_Aint displs[35]; \
1122 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1123 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1124 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1125 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1126 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1127 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1128 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1129 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1130 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1131 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1132 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1133 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1134 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1135 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1136 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1137 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1138 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1139 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1140 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1141 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1142 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1143 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1144 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1145 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1146 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1147 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1148 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1149 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1150 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1151 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1152 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1153 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1154 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1155 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1156 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1158 for(ivarloop=34; ivarloop>=0; ivarloop--){ \
1159 displs[ivarloop] -= displs[0]; \
1161 MPI_Type_create_struct(35, blockcounts, displs, types, new_type); \
1162 MPI_Type_commit(new_type); \
1166 #define hit_comTypeStruct36(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ) \
1168 NATIVE_STRUCT cmdline; \
1169 int blockcounts[36] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ)}; \
1170 MPI_Datatype types[36] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ)}; \
1171 MPI_Aint displs[36]; \
1172 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1173 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1174 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1175 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1176 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1177 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1178 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1179 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1180 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1181 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1182 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1183 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1184 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1185 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1186 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1187 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1188 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1189 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1190 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1191 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1192 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1193 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1194 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1195 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1196 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1197 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1198 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1199 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1200 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1201 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1202 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1203 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1204 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1205 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1206 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1207 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1209 for(ivarloop=35; ivarloop>=0; ivarloop--){ \
1210 displs[ivarloop] -= displs[0]; \
1212 MPI_Type_create_struct(36, blockcounts, displs, types, new_type); \
1213 MPI_Type_commit(new_type); \
1217 #define hit_comTypeStruct37(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK) \
1219 NATIVE_STRUCT cmdline; \
1220 int blockcounts[37] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK)}; \
1221 MPI_Datatype types[37] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK)}; \
1222 MPI_Aint displs[37]; \
1223 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1224 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1225 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1226 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1227 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1228 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1229 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1230 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1231 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1232 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1233 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1234 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1235 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1236 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1237 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1238 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1239 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1240 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1241 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1242 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1243 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1244 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1245 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1246 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1247 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1248 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1249 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1250 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1251 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1252 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1253 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1254 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1255 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1256 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1257 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1258 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1259 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1261 for(ivarloop=36; ivarloop>=0; ivarloop--){ \
1262 displs[ivarloop] -= displs[0]; \
1264 MPI_Type_create_struct(37, blockcounts, displs, types, new_type); \
1265 MPI_Type_commit(new_type); \
1269 #define hit_comTypeStruct38(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL) \
1271 NATIVE_STRUCT cmdline; \
1272 int blockcounts[38] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL)}; \
1273 MPI_Datatype types[38] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL)}; \
1274 MPI_Aint displs[38]; \
1275 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1276 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1277 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1278 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1279 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1280 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1281 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1282 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1283 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1284 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1285 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1286 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1287 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1288 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1289 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1290 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1291 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1292 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1293 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1294 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1295 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1296 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1297 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1298 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1299 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1300 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1301 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1302 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1303 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1304 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1305 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1306 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1307 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1308 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1309 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1310 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1311 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1312 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1314 for(ivarloop=37; ivarloop>=0; ivarloop--){ \
1315 displs[ivarloop] -= displs[0]; \
1317 MPI_Type_create_struct(38, blockcounts, displs, types, new_type); \
1318 MPI_Type_commit(new_type); \
1322 #define hit_comTypeStruct39(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM) \
1324 NATIVE_STRUCT cmdline; \
1325 int blockcounts[39] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM)}; \
1326 MPI_Datatype types[39] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM)}; \
1327 MPI_Aint displs[39]; \
1328 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1329 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1330 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1331 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1332 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1333 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1334 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1335 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1336 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1337 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1338 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1339 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1340 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1341 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1342 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1343 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1344 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1345 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1346 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1347 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1348 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1349 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1350 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1351 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1352 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1353 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1354 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1355 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1356 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1357 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1358 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1359 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1360 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1361 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1362 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1363 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1364 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1365 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1366 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1368 for(ivarloop=38; ivarloop>=0; ivarloop--){ \
1369 displs[ivarloop] -= displs[0]; \
1371 MPI_Type_create_struct(39, blockcounts, displs, types, new_type); \
1372 MPI_Type_commit(new_type); \
1376 #define hit_comTypeStruct40(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN) \
1378 NATIVE_STRUCT cmdline; \
1379 int blockcounts[40] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN)}; \
1380 MPI_Datatype types[40] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN)}; \
1381 MPI_Aint displs[40]; \
1382 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1383 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1384 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1385 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1386 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1387 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1388 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1389 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1390 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1391 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1392 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1393 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1394 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1395 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1396 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1397 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1398 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1399 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1400 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1401 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1402 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1403 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1404 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1405 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1406 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1407 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1408 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1409 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1410 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1411 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1412 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1413 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1414 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1415 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1416 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1417 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1418 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1419 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1420 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1421 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1423 for(ivarloop=39; ivarloop>=0; ivarloop--){ \
1424 displs[ivarloop] -= displs[0]; \
1426 MPI_Type_create_struct(40, blockcounts, displs, types, new_type); \
1427 MPI_Type_commit(new_type); \
1431 #define hit_comTypeStruct41(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO) \
1433 NATIVE_STRUCT cmdline; \
1434 int blockcounts[41] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO)}; \
1435 MPI_Datatype types[41] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO)}; \
1436 MPI_Aint displs[41]; \
1437 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1438 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1439 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1440 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1441 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1442 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1443 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1444 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1445 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1446 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1447 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1448 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1449 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1450 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1451 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1452 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1453 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1454 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1455 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1456 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1457 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1458 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1459 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1460 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1461 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1462 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1463 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1464 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1465 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1466 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1467 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1468 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1469 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1470 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1471 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1472 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1473 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1474 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1475 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1476 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1477 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1479 for(ivarloop=40; ivarloop>=0; ivarloop--){ \
1480 displs[ivarloop] -= displs[0]; \
1482 MPI_Type_create_struct(41, blockcounts, displs, types, new_type); \
1483 MPI_Type_commit(new_type); \
1487 #define hit_comTypeStruct42(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP) \
1489 NATIVE_STRUCT cmdline; \
1490 int blockcounts[42] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP)}; \
1491 MPI_Datatype types[42] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP)}; \
1492 MPI_Aint displs[42]; \
1493 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1494 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1495 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1496 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1497 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1498 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1499 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1500 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1501 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1502 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1503 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1504 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1505 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1506 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1507 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1508 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1509 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1510 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1511 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1512 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1513 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1514 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1515 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1516 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1517 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1518 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1519 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1520 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1521 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1522 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1523 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1524 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1525 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1526 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1527 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1528 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1529 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1530 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1531 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1532 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1533 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1534 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1536 for(ivarloop=41; ivarloop>=0; ivarloop--){ \
1537 displs[ivarloop] -= displs[0]; \
1539 MPI_Type_create_struct(42, blockcounts, displs, types, new_type); \
1540 MPI_Type_commit(new_type); \
1544 #define hit_comTypeStruct43(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ) \
1546 NATIVE_STRUCT cmdline; \
1547 int blockcounts[43] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ)}; \
1548 MPI_Datatype types[43] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ)}; \
1549 MPI_Aint displs[43]; \
1550 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1551 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1552 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1553 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1554 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1555 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1556 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1557 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1558 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1559 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1560 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1561 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1562 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1563 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1564 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1565 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1566 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1567 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1568 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1569 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1570 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1571 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1572 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1573 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1574 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1575 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1576 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1577 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1578 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1579 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1580 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1581 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1582 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1583 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1584 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1585 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1586 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1587 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1588 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1589 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1590 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1591 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1592 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1594 for(ivarloop=42; ivarloop>=0; ivarloop--){ \
1595 displs[ivarloop] -= displs[0]; \
1597 MPI_Type_create_struct(43, blockcounts, displs, types, new_type); \
1598 MPI_Type_commit(new_type); \
1602 #define hit_comTypeStruct44(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR) \
1604 NATIVE_STRUCT cmdline; \
1605 int blockcounts[44] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR)}; \
1606 MPI_Datatype types[44] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR)}; \
1607 MPI_Aint displs[44]; \
1608 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1609 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1610 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1611 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1612 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1613 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1614 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1615 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1616 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1617 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1618 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1619 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1620 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1621 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1622 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1623 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1624 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1625 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1626 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1627 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1628 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1629 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1630 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1631 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1632 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1633 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1634 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1635 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1636 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1637 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1638 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1639 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1640 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1641 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1642 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1643 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1644 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1645 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1646 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1647 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1648 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1649 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1650 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1651 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1653 for(ivarloop=43; ivarloop>=0; ivarloop--){ \
1654 displs[ivarloop] -= displs[0]; \
1656 MPI_Type_create_struct(44, blockcounts, displs, types, new_type); \
1657 MPI_Type_commit(new_type); \
1661 #define hit_comTypeStruct45(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS) \
1663 NATIVE_STRUCT cmdline; \
1664 int blockcounts[45] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS)}; \
1665 MPI_Datatype types[45] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS)}; \
1666 MPI_Aint displs[45]; \
1667 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1668 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1669 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1670 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1671 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1672 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1673 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1674 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1675 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1676 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1677 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1678 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1679 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1680 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1681 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1682 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1683 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1684 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1685 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1686 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1687 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1688 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1689 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1690 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1691 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1692 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1693 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1694 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1695 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1696 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1697 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1698 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1699 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1700 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1701 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1702 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1703 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1704 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1705 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1706 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1707 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1708 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1709 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1710 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1711 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
1713 for(ivarloop=44; ivarloop>=0; ivarloop--){ \
1714 displs[ivarloop] -= displs[0]; \
1716 MPI_Type_create_struct(45, blockcounts, displs, types, new_type); \
1717 MPI_Type_commit(new_type); \
1721 #define hit_comTypeStruct46(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT) \
1723 NATIVE_STRUCT cmdline; \
1724 int blockcounts[46] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT)}; \
1725 MPI_Datatype types[46] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT)}; \
1726 MPI_Aint displs[46]; \
1727 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1728 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1729 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1730 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1731 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1732 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1733 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1734 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1735 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1736 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1737 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1738 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1739 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1740 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1741 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1742 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1743 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1744 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1745 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1746 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1747 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1748 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1749 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1750 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1751 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1752 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1753 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1754 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1755 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1756 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1757 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1758 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1759 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1760 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1761 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1762 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1763 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1764 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1765 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1766 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1767 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1768 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1769 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1770 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1771 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
1772 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
1774 for(ivarloop=45; ivarloop>=0; ivarloop--){ \
1775 displs[ivarloop] -= displs[0]; \
1777 MPI_Type_create_struct(46, blockcounts, displs, types, new_type); \
1778 MPI_Type_commit(new_type); \
1782 #define hit_comTypeStruct47(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU) \
1784 NATIVE_STRUCT cmdline; \
1785 int blockcounts[47] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU)}; \
1786 MPI_Datatype types[47] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU)}; \
1787 MPI_Aint displs[47]; \
1788 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1789 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1790 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1791 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1792 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1793 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1794 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1795 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1796 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1797 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1798 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1799 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1800 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1801 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1802 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1803 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1804 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1805 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1806 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1807 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1808 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1809 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1810 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1811 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1812 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1813 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1814 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1815 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1816 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1817 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1818 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1819 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1820 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1821 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1822 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1823 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1824 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1825 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1826 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1827 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1828 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1829 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1830 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1831 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1832 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
1833 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
1834 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
1836 for(ivarloop=46; ivarloop>=0; ivarloop--){ \
1837 displs[ivarloop] -= displs[0]; \
1839 MPI_Type_create_struct(47, blockcounts, displs, types, new_type); \
1840 MPI_Type_commit(new_type); \
1844 #define hit_comTypeStruct48(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV) \
1846 NATIVE_STRUCT cmdline; \
1847 int blockcounts[48] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV)}; \
1848 MPI_Datatype types[48] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV)}; \
1849 MPI_Aint displs[48]; \
1850 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1851 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1852 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1853 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1854 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1855 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1856 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1857 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1858 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1859 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1860 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1861 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1862 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1863 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1864 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1865 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1866 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1867 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1868 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1869 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1870 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1871 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1872 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1873 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1874 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1875 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1876 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1877 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1878 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1879 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1880 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1881 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1882 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1883 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1884 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1885 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1886 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1887 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1888 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1889 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1890 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1891 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1892 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1893 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1894 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
1895 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
1896 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
1897 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
1899 for(ivarloop=47; ivarloop>=0; ivarloop--){ \
1900 displs[ivarloop] -= displs[0]; \
1902 MPI_Type_create_struct(48, blockcounts, displs, types, new_type); \
1903 MPI_Type_commit(new_type); \
1907 #define hit_comTypeStruct49(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW) \
1909 NATIVE_STRUCT cmdline; \
1910 int blockcounts[49] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW)}; \
1911 MPI_Datatype types[49] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW)}; \
1912 MPI_Aint displs[49]; \
1913 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1914 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1915 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1916 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1917 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1918 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1919 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1920 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1921 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1922 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1923 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1924 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1925 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1926 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1927 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1928 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1929 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1930 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1931 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1932 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1933 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1934 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1935 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
1936 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
1937 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
1938 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
1939 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
1940 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
1941 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
1942 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
1943 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
1944 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
1945 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
1946 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
1947 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
1948 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
1949 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
1950 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
1951 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
1952 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
1953 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
1954 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
1955 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
1956 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
1957 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
1958 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
1959 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
1960 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
1961 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
1963 for(ivarloop=48; ivarloop>=0; ivarloop--){ \
1964 displs[ivarloop] -= displs[0]; \
1966 MPI_Type_create_struct(49, blockcounts, displs, types, new_type); \
1967 MPI_Type_commit(new_type); \
1971 #define hit_comTypeStruct50(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX) \
1973 NATIVE_STRUCT cmdline; \
1974 int blockcounts[50] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX)}; \
1975 MPI_Datatype types[50] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX)}; \
1976 MPI_Aint displs[50]; \
1977 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
1978 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
1979 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
1980 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
1981 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
1982 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
1983 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
1984 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
1985 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
1986 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
1987 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
1988 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
1989 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
1990 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
1991 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
1992 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
1993 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
1994 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
1995 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
1996 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
1997 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
1998 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
1999 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2000 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2001 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2002 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2003 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2004 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2005 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2006 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2007 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2008 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2009 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2010 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2011 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2012 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2013 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2014 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2015 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2016 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2017 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2018 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2019 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2020 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2021 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2022 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2023 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2024 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2025 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2026 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2028 for(ivarloop=49; ivarloop>=0; ivarloop--){ \
2029 displs[ivarloop] -= displs[0]; \
2031 MPI_Type_create_struct(50, blockcounts, displs, types, new_type); \
2032 MPI_Type_commit(new_type); \
2036 #define hit_comTypeStruct51(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY) \
2038 NATIVE_STRUCT cmdline; \
2039 int blockcounts[51] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY)}; \
2040 MPI_Datatype types[51] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY)}; \
2041 MPI_Aint displs[51]; \
2042 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2043 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2044 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2045 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2046 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2047 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2048 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2049 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2050 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2051 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2052 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2053 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2054 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2055 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2056 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2057 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2058 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2059 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2060 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2061 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2062 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2063 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2064 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2065 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2066 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2067 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2068 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2069 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2070 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2071 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2072 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2073 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2074 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2075 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2076 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2077 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2078 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2079 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2080 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2081 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2082 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2083 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2084 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2085 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2086 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2087 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2088 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2089 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2090 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2091 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2092 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2094 for(ivarloop=50; ivarloop>=0; ivarloop--){ \
2095 displs[ivarloop] -= displs[0]; \
2097 MPI_Type_create_struct(51, blockcounts, displs, types, new_type); \
2098 MPI_Type_commit(new_type); \
2102 #define hit_comTypeStruct52(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ) \
2104 NATIVE_STRUCT cmdline; \
2105 int blockcounts[52] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ)}; \
2106 MPI_Datatype types[52] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ)}; \
2107 MPI_Aint displs[52]; \
2108 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2109 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2110 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2111 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2112 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2113 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2114 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2115 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2116 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2117 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2118 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2119 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2120 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2121 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2122 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2123 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2124 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2125 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2126 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2127 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2128 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2129 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2130 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2131 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2132 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2133 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2134 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2135 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2136 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2137 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2138 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2139 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2140 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2141 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2142 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2143 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2144 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2145 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2146 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2147 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2148 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2149 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2150 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2151 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2152 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2153 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2154 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2155 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2156 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2157 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2158 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2159 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2161 for(ivarloop=51; ivarloop>=0; ivarloop--){ \
2162 displs[ivarloop] -= displs[0]; \
2164 MPI_Type_create_struct(52, blockcounts, displs, types, new_type); \
2165 MPI_Type_commit(new_type); \
2169 #define hit_comTypeStruct53(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA) \
2171 NATIVE_STRUCT cmdline; \
2172 int blockcounts[53] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA)}; \
2173 MPI_Datatype types[53] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA)}; \
2174 MPI_Aint displs[53]; \
2175 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2176 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2177 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2178 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2179 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2180 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2181 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2182 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2183 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2184 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2185 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2186 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2187 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2188 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2189 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2190 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2191 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2192 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2193 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2194 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2195 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2196 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2197 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2198 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2199 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2200 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2201 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2202 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2203 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2204 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2205 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2206 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2207 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2208 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2209 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2210 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2211 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2212 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2213 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2214 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2215 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2216 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2217 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2218 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2219 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2220 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2221 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2222 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2223 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2224 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2225 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2226 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2227 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2229 for(ivarloop=52; ivarloop>=0; ivarloop--){ \
2230 displs[ivarloop] -= displs[0]; \
2232 MPI_Type_create_struct(53, blockcounts, displs, types, new_type); \
2233 MPI_Type_commit(new_type); \
2237 #define hit_comTypeStruct54(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB) \
2239 NATIVE_STRUCT cmdline; \
2240 int blockcounts[54] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB)}; \
2241 MPI_Datatype types[54] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB)}; \
2242 MPI_Aint displs[54]; \
2243 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2244 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2245 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2246 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2247 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2248 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2249 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2250 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2251 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2252 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2253 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2254 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2255 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2256 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2257 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2258 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2259 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2260 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2261 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2262 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2263 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2264 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2265 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2266 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2267 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2268 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2269 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2270 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2271 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2272 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2273 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2274 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2275 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2276 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2277 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2278 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2279 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2280 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2281 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2282 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2283 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2284 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2285 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2286 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2287 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2288 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2289 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2290 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2291 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2292 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2293 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2294 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2295 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2296 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2298 for(ivarloop=53; ivarloop>=0; ivarloop--){ \
2299 displs[ivarloop] -= displs[0]; \
2301 MPI_Type_create_struct(54, blockcounts, displs, types, new_type); \
2302 MPI_Type_commit(new_type); \
2306 #define hit_comTypeStruct55(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC) \
2308 NATIVE_STRUCT cmdline; \
2309 int blockcounts[55] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC)}; \
2310 MPI_Datatype types[55] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC)}; \
2311 MPI_Aint displs[55]; \
2312 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2313 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2314 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2315 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2316 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2317 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2318 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2319 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2320 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2321 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2322 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2323 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2324 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2325 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2326 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2327 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2328 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2329 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2330 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2331 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2332 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2333 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2334 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2335 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2336 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2337 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2338 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2339 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2340 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2341 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2342 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2343 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2344 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2345 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2346 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2347 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2348 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2349 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2350 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2351 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2352 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2353 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2354 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2355 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2356 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2357 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2358 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2359 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2360 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2361 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2362 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2363 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2364 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2365 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2366 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2368 for(ivarloop=54; ivarloop>=0; ivarloop--){ \
2369 displs[ivarloop] -= displs[0]; \
2371 MPI_Type_create_struct(55, blockcounts, displs, types, new_type); \
2372 MPI_Type_commit(new_type); \
2376 #define hit_comTypeStruct56(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD) \
2378 NATIVE_STRUCT cmdline; \
2379 int blockcounts[56] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD)}; \
2380 MPI_Datatype types[56] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD)}; \
2381 MPI_Aint displs[56]; \
2382 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2383 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2384 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2385 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2386 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2387 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2388 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2389 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2390 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2391 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2392 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2393 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2394 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2395 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2396 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2397 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2398 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2399 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2400 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2401 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2402 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2403 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2404 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2405 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2406 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2407 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2408 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2409 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2410 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2411 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2412 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2413 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2414 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2415 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2416 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2417 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2418 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2419 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2420 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2421 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2422 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2423 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2424 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2425 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2426 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2427 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2428 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2429 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2430 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2431 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2432 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2433 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2434 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2435 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2436 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2437 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2439 for(ivarloop=55; ivarloop>=0; ivarloop--){ \
2440 displs[ivarloop] -= displs[0]; \
2442 MPI_Type_create_struct(56, blockcounts, displs, types, new_type); \
2443 MPI_Type_commit(new_type); \
2447 #define hit_comTypeStruct57(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE) \
2449 NATIVE_STRUCT cmdline; \
2450 int blockcounts[57] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE)}; \
2451 MPI_Datatype types[57] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE)}; \
2452 MPI_Aint displs[57]; \
2453 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2454 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2455 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2456 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2457 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2458 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2459 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2460 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2461 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2462 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2463 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2464 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2465 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2466 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2467 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2468 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2469 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2470 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2471 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2472 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2473 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2474 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2475 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2476 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2477 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2478 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2479 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2480 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2481 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2482 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2483 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2484 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2485 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2486 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2487 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2488 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2489 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2490 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2491 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2492 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2493 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2494 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2495 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2496 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2497 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2498 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2499 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2500 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2501 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2502 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2503 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2504 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2505 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2506 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2507 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2508 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2509 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2511 for(ivarloop=56; ivarloop>=0; ivarloop--){ \
2512 displs[ivarloop] -= displs[0]; \
2514 MPI_Type_create_struct(57, blockcounts, displs, types, new_type); \
2515 MPI_Type_commit(new_type); \
2519 #define hit_comTypeStruct58(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF) \
2521 NATIVE_STRUCT cmdline; \
2522 int blockcounts[58] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF)}; \
2523 MPI_Datatype types[58] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF)}; \
2524 MPI_Aint displs[58]; \
2525 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2526 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2527 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2528 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2529 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2530 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2531 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2532 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2533 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2534 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2535 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2536 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2537 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2538 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2539 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2540 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2541 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2542 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2543 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2544 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2545 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2546 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2547 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2548 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2549 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2550 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2551 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2552 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2553 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2554 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2555 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2556 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2557 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2558 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2559 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2560 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2561 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2562 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2563 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2564 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2565 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2566 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2567 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2568 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2569 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2570 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2571 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2572 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2573 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2574 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2575 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2576 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2577 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2578 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2579 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2580 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2581 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2582 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2584 for(ivarloop=57; ivarloop>=0; ivarloop--){ \
2585 displs[ivarloop] -= displs[0]; \
2587 MPI_Type_create_struct(58, blockcounts, displs, types, new_type); \
2588 MPI_Type_commit(new_type); \
2592 #define hit_comTypeStruct59(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG) \
2594 NATIVE_STRUCT cmdline; \
2595 int blockcounts[59] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG)}; \
2596 MPI_Datatype types[59] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG)}; \
2597 MPI_Aint displs[59]; \
2598 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2599 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2600 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2601 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2602 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2603 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2604 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2605 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2606 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2607 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2608 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2609 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2610 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2611 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2612 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2613 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2614 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2615 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2616 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2617 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2618 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2619 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2620 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2621 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2622 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2623 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2624 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2625 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2626 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2627 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2628 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2629 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2630 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2631 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2632 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2633 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2634 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2635 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2636 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2637 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2638 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2639 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2640 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2641 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2642 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2643 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2644 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2645 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2646 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2647 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2648 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2649 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2650 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2651 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2652 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2653 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2654 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2655 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2656 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
2658 for(ivarloop=58; ivarloop>=0; ivarloop--){ \
2659 displs[ivarloop] -= displs[0]; \
2661 MPI_Type_create_struct(59, blockcounts, displs, types, new_type); \
2662 MPI_Type_commit(new_type); \
2666 #define hit_comTypeStruct60(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH) \
2668 NATIVE_STRUCT cmdline; \
2669 int blockcounts[60] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH)}; \
2670 MPI_Datatype types[60] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH)}; \
2671 MPI_Aint displs[60]; \
2672 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2673 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2674 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2675 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2676 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2677 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2678 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2679 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2680 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2681 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2682 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2683 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2684 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2685 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2686 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2687 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2688 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2689 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2690 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2691 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2692 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2693 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2694 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2695 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2696 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2697 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2698 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2699 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2700 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2701 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2702 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2703 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2704 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2705 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2706 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2707 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2708 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2709 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2710 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2711 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2712 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2713 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2714 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2715 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2716 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2717 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2718 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2719 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2720 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2721 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2722 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2723 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2724 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2725 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2726 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2727 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2728 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2729 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2730 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
2731 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
2733 for(ivarloop=59; ivarloop>=0; ivarloop--){ \
2734 displs[ivarloop] -= displs[0]; \
2736 MPI_Type_create_struct(60, blockcounts, displs, types, new_type); \
2737 MPI_Type_commit(new_type); \
2741 #define hit_comTypeStruct61(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI) \
2743 NATIVE_STRUCT cmdline; \
2744 int blockcounts[61] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI)}; \
2745 MPI_Datatype types[61] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI)}; \
2746 MPI_Aint displs[61]; \
2747 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2748 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2749 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2750 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2751 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2752 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2753 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2754 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2755 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2756 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2757 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2758 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2759 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2760 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2761 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2762 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2763 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2764 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2765 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2766 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2767 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2768 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2769 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2770 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2771 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2772 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2773 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2774 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2775 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2776 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2777 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2778 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2779 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2780 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2781 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2782 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2783 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2784 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2785 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2786 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2787 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2788 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2789 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2790 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2791 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2792 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2793 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2794 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2795 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2796 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2797 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2798 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2799 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2800 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2801 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2802 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2803 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2804 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2805 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
2806 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
2807 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
2809 for(ivarloop=60; ivarloop>=0; ivarloop--){ \
2810 displs[ivarloop] -= displs[0]; \
2812 MPI_Type_create_struct(61, blockcounts, displs, types, new_type); \
2813 MPI_Type_commit(new_type); \
2817 #define hit_comTypeStruct62(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ) \
2819 NATIVE_STRUCT cmdline; \
2820 int blockcounts[62] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ)}; \
2821 MPI_Datatype types[62] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ)}; \
2822 MPI_Aint displs[62]; \
2823 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2824 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2825 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2826 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2827 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2828 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2829 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2830 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2831 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2832 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2833 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2834 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2835 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2836 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2837 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2838 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2839 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2840 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2841 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2842 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2843 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2844 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2845 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2846 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2847 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2848 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2849 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2850 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2851 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2852 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2853 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2854 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2855 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2856 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2857 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2858 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2859 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2860 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2861 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2862 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2863 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2864 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2865 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2866 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2867 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2868 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2869 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2870 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2871 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2872 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2873 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2874 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2875 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2876 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2877 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2878 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2879 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2880 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2881 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
2882 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
2883 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
2884 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
2886 for(ivarloop=61; ivarloop>=0; ivarloop--){ \
2887 displs[ivarloop] -= displs[0]; \
2889 MPI_Type_create_struct(62, blockcounts, displs, types, new_type); \
2890 MPI_Type_commit(new_type); \
2894 #define hit_comTypeStruct63(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK) \
2896 NATIVE_STRUCT cmdline; \
2897 int blockcounts[63] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK)}; \
2898 MPI_Datatype types[63] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK)}; \
2899 MPI_Aint displs[63]; \
2900 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2901 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2902 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2903 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2904 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2905 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2906 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2907 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2908 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2909 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2910 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2911 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2912 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2913 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2914 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2915 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2916 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2917 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2918 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2919 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2920 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2921 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
2922 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
2923 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
2924 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
2925 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
2926 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
2927 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
2928 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
2929 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
2930 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
2931 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
2932 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
2933 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
2934 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
2935 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
2936 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
2937 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
2938 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
2939 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
2940 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
2941 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
2942 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
2943 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
2944 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
2945 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
2946 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
2947 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
2948 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
2949 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
2950 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
2951 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
2952 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
2953 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
2954 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
2955 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
2956 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
2957 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
2958 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
2959 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
2960 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
2961 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
2962 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
2964 for(ivarloop=62; ivarloop>=0; ivarloop--){ \
2965 displs[ivarloop] -= displs[0]; \
2967 MPI_Type_create_struct(63, blockcounts, displs, types, new_type); \
2968 MPI_Type_commit(new_type); \
2972 #define hit_comTypeStruct64(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL) \
2974 NATIVE_STRUCT cmdline; \
2975 int blockcounts[64] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL)}; \
2976 MPI_Datatype types[64] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL)}; \
2977 MPI_Aint displs[64]; \
2978 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
2979 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
2980 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
2981 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
2982 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
2983 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
2984 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
2985 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
2986 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
2987 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
2988 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
2989 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
2990 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
2991 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
2992 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
2993 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
2994 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
2995 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
2996 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
2997 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
2998 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
2999 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3000 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3001 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3002 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3003 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3004 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3005 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3006 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3007 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3008 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3009 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3010 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3011 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3012 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3013 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3014 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3015 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3016 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3017 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3018 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3019 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3020 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3021 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3022 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3023 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3024 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3025 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3026 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3027 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3028 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3029 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3030 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3031 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3032 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3033 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3034 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3035 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3036 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3037 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3038 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3039 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3040 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3041 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3043 for(ivarloop=63; ivarloop>=0; ivarloop--){ \
3044 displs[ivarloop] -= displs[0]; \
3046 MPI_Type_create_struct(64, blockcounts, displs, types, new_type); \
3047 MPI_Type_commit(new_type); \
3051 #define hit_comTypeStruct65(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM) \
3053 NATIVE_STRUCT cmdline; \
3054 int blockcounts[65] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM)}; \
3055 MPI_Datatype types[65] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM)}; \
3056 MPI_Aint displs[65]; \
3057 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3058 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3059 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3060 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3061 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3062 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3063 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3064 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3065 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3066 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3067 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3068 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3069 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3070 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3071 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3072 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3073 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3074 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3075 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3076 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3077 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3078 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3079 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3080 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3081 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3082 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3083 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3084 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3085 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3086 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3087 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3088 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3089 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3090 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3091 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3092 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3093 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3094 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3095 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3096 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3097 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3098 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3099 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3100 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3101 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3102 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3103 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3104 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3105 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3106 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3107 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3108 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3109 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3110 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3111 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3112 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3113 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3114 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3115 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3116 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3117 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3118 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3119 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3120 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3121 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3123 for(ivarloop=64; ivarloop>=0; ivarloop--){ \
3124 displs[ivarloop] -= displs[0]; \
3126 MPI_Type_create_struct(65, blockcounts, displs, types, new_type); \
3127 MPI_Type_commit(new_type); \
3131 #define hit_comTypeStruct66(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN) \
3133 NATIVE_STRUCT cmdline; \
3134 int blockcounts[66] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN)}; \
3135 MPI_Datatype types[66] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN)}; \
3136 MPI_Aint displs[66]; \
3137 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3138 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3139 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3140 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3141 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3142 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3143 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3144 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3145 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3146 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3147 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3148 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3149 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3150 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3151 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3152 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3153 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3154 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3155 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3156 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3157 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3158 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3159 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3160 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3161 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3162 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3163 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3164 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3165 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3166 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3167 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3168 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3169 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3170 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3171 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3172 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3173 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3174 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3175 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3176 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3177 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3178 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3179 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3180 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3181 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3182 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3183 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3184 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3185 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3186 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3187 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3188 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3189 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3190 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3191 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3192 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3193 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3194 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3195 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3196 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3197 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3198 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3199 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3200 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3201 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3202 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3204 for(ivarloop=65; ivarloop>=0; ivarloop--){ \
3205 displs[ivarloop] -= displs[0]; \
3207 MPI_Type_create_struct(66, blockcounts, displs, types, new_type); \
3208 MPI_Type_commit(new_type); \
3212 #define hit_comTypeStruct67(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO) \
3214 NATIVE_STRUCT cmdline; \
3215 int blockcounts[67] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO)}; \
3216 MPI_Datatype types[67] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO)}; \
3217 MPI_Aint displs[67]; \
3218 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3219 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3220 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3221 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3222 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3223 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3224 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3225 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3226 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3227 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3228 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3229 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3230 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3231 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3232 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3233 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3234 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3235 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3236 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3237 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3238 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3239 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3240 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3241 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3242 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3243 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3244 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3245 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3246 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3247 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3248 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3249 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3250 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3251 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3252 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3253 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3254 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3255 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3256 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3257 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3258 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3259 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3260 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3261 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3262 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3263 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3264 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3265 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3266 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3267 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3268 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3269 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3270 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3271 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3272 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3273 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3274 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3275 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3276 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3277 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3278 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3279 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3280 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3281 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3282 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3283 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3284 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3286 for(ivarloop=66; ivarloop>=0; ivarloop--){ \
3287 displs[ivarloop] -= displs[0]; \
3289 MPI_Type_create_struct(67, blockcounts, displs, types, new_type); \
3290 MPI_Type_commit(new_type); \
3294 #define hit_comTypeStruct68(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP) \
3296 NATIVE_STRUCT cmdline; \
3297 int blockcounts[68] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP)}; \
3298 MPI_Datatype types[68] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP)}; \
3299 MPI_Aint displs[68]; \
3300 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3301 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3302 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3303 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3304 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3305 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3306 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3307 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3308 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3309 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3310 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3311 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3312 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3313 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3314 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3315 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3316 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3317 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3318 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3319 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3320 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3321 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3322 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3323 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3324 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3325 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3326 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3327 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3328 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3329 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3330 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3331 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3332 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3333 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3334 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3335 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3336 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3337 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3338 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3339 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3340 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3341 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3342 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3343 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3344 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3345 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3346 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3347 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3348 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3349 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3350 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3351 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3352 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3353 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3354 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3355 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3356 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3357 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3358 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3359 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3360 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3361 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3362 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3363 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3364 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3365 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3366 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3367 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3369 for(ivarloop=67; ivarloop>=0; ivarloop--){ \
3370 displs[ivarloop] -= displs[0]; \
3372 MPI_Type_create_struct(68, blockcounts, displs, types, new_type); \
3373 MPI_Type_commit(new_type); \
3377 #define hit_comTypeStruct69(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ) \
3379 NATIVE_STRUCT cmdline; \
3380 int blockcounts[69] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ)}; \
3381 MPI_Datatype types[69] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ)}; \
3382 MPI_Aint displs[69]; \
3383 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3384 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3385 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3386 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3387 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3388 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3389 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3390 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3391 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3392 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3393 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3394 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3395 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3396 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3397 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3398 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3399 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3400 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3401 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3402 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3403 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3404 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3405 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3406 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3407 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3408 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3409 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3410 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3411 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3412 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3413 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3414 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3415 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3416 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3417 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3418 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3419 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3420 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3421 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3422 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3423 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3424 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3425 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3426 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3427 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3428 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3429 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3430 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3431 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3432 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3433 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3434 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3435 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3436 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3437 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3438 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3439 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3440 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3441 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3442 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3443 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3444 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3445 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3446 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3447 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3448 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3449 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3450 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3451 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3453 for(ivarloop=68; ivarloop>=0; ivarloop--){ \
3454 displs[ivarloop] -= displs[0]; \
3456 MPI_Type_create_struct(69, blockcounts, displs, types, new_type); \
3457 MPI_Type_commit(new_type); \
3461 #define hit_comTypeStruct70(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR) \
3463 NATIVE_STRUCT cmdline; \
3464 int blockcounts[70] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR)}; \
3465 MPI_Datatype types[70] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR)}; \
3466 MPI_Aint displs[70]; \
3467 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3468 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3469 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3470 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3471 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3472 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3473 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3474 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3475 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3476 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3477 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3478 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3479 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3480 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3481 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3482 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3483 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3484 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3485 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3486 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3487 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3488 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3489 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3490 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3491 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3492 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3493 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3494 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3495 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3496 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3497 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3498 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3499 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3500 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3501 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3502 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3503 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3504 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3505 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3506 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3507 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3508 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3509 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3510 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3511 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3512 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3513 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3514 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3515 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3516 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3517 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3518 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3519 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3520 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3521 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3522 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3523 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3524 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3525 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3526 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3527 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3528 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3529 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3530 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3531 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3532 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3533 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3534 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3535 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3536 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3538 for(ivarloop=69; ivarloop>=0; ivarloop--){ \
3539 displs[ivarloop] -= displs[0]; \
3541 MPI_Type_create_struct(70, blockcounts, displs, types, new_type); \
3542 MPI_Type_commit(new_type); \
3546 #define hit_comTypeStruct71(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS) \
3548 NATIVE_STRUCT cmdline; \
3549 int blockcounts[71] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS)}; \
3550 MPI_Datatype types[71] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS)}; \
3551 MPI_Aint displs[71]; \
3552 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3553 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3554 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3555 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3556 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3557 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3558 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3559 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3560 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3561 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3562 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3563 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3564 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3565 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3566 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3567 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3568 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3569 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3570 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3571 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3572 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3573 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3574 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3575 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3576 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3577 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3578 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3579 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3580 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3581 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3582 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3583 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3584 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3585 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3586 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3587 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3588 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3589 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3590 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3591 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3592 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3593 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3594 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3595 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3596 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3597 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3598 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3599 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3600 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3601 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3602 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3603 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3604 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3605 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3606 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3607 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3608 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3609 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3610 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3611 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3612 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3613 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3614 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3615 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3616 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3617 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3618 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3619 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3620 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3621 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3622 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
3624 for(ivarloop=70; ivarloop>=0; ivarloop--){ \
3625 displs[ivarloop] -= displs[0]; \
3627 MPI_Type_create_struct(71, blockcounts, displs, types, new_type); \
3628 MPI_Type_commit(new_type); \
3632 #define hit_comTypeStruct72(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT) \
3634 NATIVE_STRUCT cmdline; \
3635 int blockcounts[72] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT)}; \
3636 MPI_Datatype types[72] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT)}; \
3637 MPI_Aint displs[72]; \
3638 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3639 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3640 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3641 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3642 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3643 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3644 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3645 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3646 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3647 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3648 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3649 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3650 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3651 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3652 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3653 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3654 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3655 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3656 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3657 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3658 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3659 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3660 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3661 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3662 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3663 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3664 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3665 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3666 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3667 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3668 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3669 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3670 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3671 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3672 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3673 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3674 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3675 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3676 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3677 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3678 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3679 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3680 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3681 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3682 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3683 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3684 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3685 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3686 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3687 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3688 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3689 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3690 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3691 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3692 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3693 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3694 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3695 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3696 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3697 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3698 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3699 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3700 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3701 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3702 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3703 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3704 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3705 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3706 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3707 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3708 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
3709 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
3711 for(ivarloop=71; ivarloop>=0; ivarloop--){ \
3712 displs[ivarloop] -= displs[0]; \
3714 MPI_Type_create_struct(72, blockcounts, displs, types, new_type); \
3715 MPI_Type_commit(new_type); \
3719 #define hit_comTypeStruct73(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU) \
3721 NATIVE_STRUCT cmdline; \
3722 int blockcounts[73] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU)}; \
3723 MPI_Datatype types[73] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU)}; \
3724 MPI_Aint displs[73]; \
3725 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3726 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3727 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3728 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3729 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3730 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3731 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3732 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3733 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3734 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3735 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3736 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3737 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3738 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3739 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3740 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3741 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3742 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3743 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3744 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3745 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3746 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3747 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3748 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3749 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3750 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3751 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3752 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3753 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3754 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3755 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3756 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3757 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3758 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3759 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3760 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3761 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3762 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3763 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3764 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3765 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3766 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3767 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3768 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3769 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3770 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3771 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3772 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3773 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3774 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3775 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3776 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3777 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3778 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3779 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3780 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3781 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3782 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3783 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3784 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3785 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3786 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3787 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3788 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3789 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3790 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3791 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3792 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3793 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3794 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3795 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
3796 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
3797 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
3799 for(ivarloop=72; ivarloop>=0; ivarloop--){ \
3800 displs[ivarloop] -= displs[0]; \
3802 MPI_Type_create_struct(73, blockcounts, displs, types, new_type); \
3803 MPI_Type_commit(new_type); \
3807 #define hit_comTypeStruct74(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV) \
3809 NATIVE_STRUCT cmdline; \
3810 int blockcounts[74] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV)}; \
3811 MPI_Datatype types[74] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV)}; \
3812 MPI_Aint displs[74]; \
3813 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3814 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3815 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3816 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3817 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3818 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3819 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3820 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3821 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3822 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3823 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3824 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3825 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3826 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3827 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3828 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3829 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3830 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3831 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3832 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3833 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3834 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3835 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3836 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3837 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3838 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3839 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3840 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3841 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3842 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3843 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3844 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3845 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3846 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3847 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3848 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3849 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3850 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3851 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3852 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3853 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3854 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3855 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3856 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3857 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3858 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3859 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3860 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3861 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3862 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3863 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3864 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3865 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3866 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3867 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3868 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3869 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3870 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3871 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3872 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3873 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3874 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3875 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3876 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3877 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3878 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3879 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3880 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3881 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3882 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3883 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
3884 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
3885 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
3886 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
3888 for(ivarloop=73; ivarloop>=0; ivarloop--){ \
3889 displs[ivarloop] -= displs[0]; \
3891 MPI_Type_create_struct(74, blockcounts, displs, types, new_type); \
3892 MPI_Type_commit(new_type); \
3896 #define hit_comTypeStruct75(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW) \
3898 NATIVE_STRUCT cmdline; \
3899 int blockcounts[75] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW)}; \
3900 MPI_Datatype types[75] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW)}; \
3901 MPI_Aint displs[75]; \
3902 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3903 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3904 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3905 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3906 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3907 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3908 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3909 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
3910 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
3911 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
3912 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
3913 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
3914 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
3915 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
3916 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
3917 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
3918 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
3919 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
3920 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
3921 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
3922 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
3923 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
3924 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
3925 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
3926 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
3927 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
3928 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
3929 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
3930 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
3931 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
3932 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
3933 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
3934 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
3935 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
3936 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
3937 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
3938 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
3939 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
3940 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
3941 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
3942 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
3943 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
3944 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
3945 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
3946 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
3947 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
3948 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
3949 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
3950 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
3951 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
3952 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
3953 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
3954 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
3955 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
3956 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
3957 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
3958 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
3959 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
3960 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
3961 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
3962 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
3963 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
3964 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
3965 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
3966 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
3967 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
3968 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
3969 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
3970 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
3971 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
3972 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
3973 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
3974 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
3975 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
3976 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
3978 for(ivarloop=74; ivarloop>=0; ivarloop--){ \
3979 displs[ivarloop] -= displs[0]; \
3981 MPI_Type_create_struct(75, blockcounts, displs, types, new_type); \
3982 MPI_Type_commit(new_type); \
3986 #define hit_comTypeStruct76(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX) \
3988 NATIVE_STRUCT cmdline; \
3989 int blockcounts[76] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX)}; \
3990 MPI_Datatype types[76] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX)}; \
3991 MPI_Aint displs[76]; \
3992 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
3993 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
3994 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
3995 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
3996 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
3997 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
3998 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
3999 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4000 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4001 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4002 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4003 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4004 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4005 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4006 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4007 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4008 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4009 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4010 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4011 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4012 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4013 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4014 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4015 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4016 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4017 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4018 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4019 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4020 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4021 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4022 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4023 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4024 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4025 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4026 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4027 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4028 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4029 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4030 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4031 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4032 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4033 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4034 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4035 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4036 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4037 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4038 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4039 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4040 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4041 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4042 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4043 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4044 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4045 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4046 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4047 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4048 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4049 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4050 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4051 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4052 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4053 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4054 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4055 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4056 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4057 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4058 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4059 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4060 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4061 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4062 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4063 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4064 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4065 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4066 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4067 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4069 for(ivarloop=75; ivarloop>=0; ivarloop--){ \
4070 displs[ivarloop] -= displs[0]; \
4072 MPI_Type_create_struct(76, blockcounts, displs, types, new_type); \
4073 MPI_Type_commit(new_type); \
4077 #define hit_comTypeStruct77(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY) \
4079 NATIVE_STRUCT cmdline; \
4080 int blockcounts[77] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY)}; \
4081 MPI_Datatype types[77] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY)}; \
4082 MPI_Aint displs[77]; \
4083 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4084 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4085 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4086 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4087 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4088 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4089 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4090 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4091 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4092 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4093 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4094 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4095 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4096 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4097 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4098 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4099 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4100 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4101 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4102 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4103 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4104 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4105 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4106 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4107 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4108 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4109 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4110 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4111 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4112 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4113 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4114 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4115 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4116 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4117 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4118 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4119 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4120 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4121 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4122 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4123 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4124 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4125 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4126 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4127 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4128 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4129 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4130 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4131 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4132 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4133 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4134 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4135 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4136 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4137 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4138 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4139 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4140 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4141 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4142 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4143 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4144 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4145 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4146 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4147 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4148 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4149 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4150 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4151 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4152 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4153 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4154 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4155 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4156 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4157 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4158 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4159 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4161 for(ivarloop=76; ivarloop>=0; ivarloop--){ \
4162 displs[ivarloop] -= displs[0]; \
4164 MPI_Type_create_struct(77, blockcounts, displs, types, new_type); \
4165 MPI_Type_commit(new_type); \
4169 #define hit_comTypeStruct78(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ) \
4171 NATIVE_STRUCT cmdline; \
4172 int blockcounts[78] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ)}; \
4173 MPI_Datatype types[78] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ)}; \
4174 MPI_Aint displs[78]; \
4175 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4176 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4177 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4178 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4179 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4180 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4181 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4182 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4183 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4184 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4185 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4186 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4187 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4188 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4189 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4190 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4191 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4192 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4193 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4194 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4195 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4196 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4197 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4198 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4199 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4200 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4201 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4202 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4203 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4204 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4205 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4206 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4207 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4208 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4209 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4210 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4211 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4212 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4213 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4214 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4215 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4216 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4217 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4218 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4219 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4220 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4221 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4222 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4223 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4224 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4225 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4226 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4227 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4228 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4229 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4230 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4231 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4232 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4233 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4234 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4235 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4236 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4237 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4238 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4239 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4240 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4241 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4242 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4243 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4244 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4245 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4246 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4247 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4248 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4249 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4250 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4251 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4252 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4254 for(ivarloop=77; ivarloop>=0; ivarloop--){ \
4255 displs[ivarloop] -= displs[0]; \
4257 MPI_Type_create_struct(78, blockcounts, displs, types, new_type); \
4258 MPI_Type_commit(new_type); \
4262 #define hit_comTypeStruct79(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA) \
4264 NATIVE_STRUCT cmdline; \
4265 int blockcounts[79] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA)}; \
4266 MPI_Datatype types[79] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA)}; \
4267 MPI_Aint displs[79]; \
4268 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4269 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4270 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4271 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4272 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4273 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4274 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4275 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4276 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4277 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4278 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4279 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4280 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4281 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4282 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4283 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4284 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4285 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4286 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4287 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4288 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4289 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4290 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4291 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4292 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4293 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4294 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4295 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4296 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4297 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4298 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4299 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4300 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4301 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4302 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4303 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4304 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4305 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4306 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4307 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4308 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4309 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4310 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4311 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4312 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4313 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4314 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4315 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4316 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4317 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4318 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4319 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4320 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4321 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4322 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4323 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4324 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4325 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4326 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4327 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4328 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4329 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4330 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4331 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4332 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4333 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4334 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4335 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4336 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4337 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4338 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4339 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4340 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4341 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4342 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4343 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4344 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4345 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4346 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4348 for(ivarloop=78; ivarloop>=0; ivarloop--){ \
4349 displs[ivarloop] -= displs[0]; \
4351 MPI_Type_create_struct(79, blockcounts, displs, types, new_type); \
4352 MPI_Type_commit(new_type); \
4356 #define hit_comTypeStruct80(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB) \
4358 NATIVE_STRUCT cmdline; \
4359 int blockcounts[80] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB)}; \
4360 MPI_Datatype types[80] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB)}; \
4361 MPI_Aint displs[80]; \
4362 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4363 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4364 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4365 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4366 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4367 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4368 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4369 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4370 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4371 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4372 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4373 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4374 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4375 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4376 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4377 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4378 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4379 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4380 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4381 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4382 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4383 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4384 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4385 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4386 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4387 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4388 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4389 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4390 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4391 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4392 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4393 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4394 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4395 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4396 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4397 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4398 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4399 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4400 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4401 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4402 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4403 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4404 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4405 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4406 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4407 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4408 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4409 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4410 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4411 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4412 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4413 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4414 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4415 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4416 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4417 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4418 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4419 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4420 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4421 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4422 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4423 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4424 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4425 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4426 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4427 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4428 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4429 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4430 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4431 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4432 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4433 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4434 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4435 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4436 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4437 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4438 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4439 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4440 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4441 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4443 for(ivarloop=79; ivarloop>=0; ivarloop--){ \
4444 displs[ivarloop] -= displs[0]; \
4446 MPI_Type_create_struct(80, blockcounts, displs, types, new_type); \
4447 MPI_Type_commit(new_type); \
4451 #define hit_comTypeStruct81(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC) \
4453 NATIVE_STRUCT cmdline; \
4454 int blockcounts[81] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC)}; \
4455 MPI_Datatype types[81] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC)}; \
4456 MPI_Aint displs[81]; \
4457 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4458 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4459 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4460 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4461 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4462 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4463 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4464 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4465 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4466 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4467 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4468 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4469 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4470 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4471 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4472 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4473 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4474 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4475 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4476 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4477 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4478 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4479 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4480 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4481 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4482 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4483 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4484 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4485 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4486 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4487 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4488 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4489 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4490 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4491 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4492 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4493 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4494 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4495 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4496 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4497 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4498 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4499 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4500 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4501 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4502 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4503 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4504 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4505 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4506 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4507 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4508 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4509 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4510 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4511 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4512 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4513 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4514 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4515 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4516 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4517 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4518 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4519 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4520 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4521 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4522 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4523 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4524 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4525 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4526 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4527 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4528 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4529 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4530 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4531 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4532 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4533 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4534 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4535 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4536 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4537 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
4539 for(ivarloop=80; ivarloop>=0; ivarloop--){ \
4540 displs[ivarloop] -= displs[0]; \
4542 MPI_Type_create_struct(81, blockcounts, displs, types, new_type); \
4543 MPI_Type_commit(new_type); \
4547 #define hit_comTypeStruct82(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD) \
4549 NATIVE_STRUCT cmdline; \
4550 int blockcounts[82] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD)}; \
4551 MPI_Datatype types[82] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD)}; \
4552 MPI_Aint displs[82]; \
4553 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4554 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4555 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4556 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4557 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4558 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4559 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4560 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4561 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4562 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4563 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4564 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4565 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4566 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4567 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4568 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4569 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4570 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4571 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4572 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4573 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4574 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4575 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4576 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4577 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4578 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4579 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4580 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4581 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4582 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4583 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4584 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4585 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4586 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4587 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4588 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4589 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4590 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4591 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4592 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4593 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4594 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4595 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4596 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4597 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4598 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4599 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4600 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4601 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4602 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4603 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4604 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4605 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4606 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4607 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4608 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4609 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4610 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4611 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4612 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4613 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4614 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4615 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4616 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4617 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4618 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4619 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4620 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4621 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4622 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4623 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4624 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4625 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4626 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4627 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4628 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4629 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4630 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4631 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4632 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4633 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
4634 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
4636 for(ivarloop=81; ivarloop>=0; ivarloop--){ \
4637 displs[ivarloop] -= displs[0]; \
4639 MPI_Type_create_struct(82, blockcounts, displs, types, new_type); \
4640 MPI_Type_commit(new_type); \
4644 #define hit_comTypeStruct83(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE) \
4646 NATIVE_STRUCT cmdline; \
4647 int blockcounts[83] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE)}; \
4648 MPI_Datatype types[83] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE)}; \
4649 MPI_Aint displs[83]; \
4650 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4651 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4652 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4653 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4654 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4655 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4656 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4657 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4658 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4659 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4660 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4661 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4662 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4663 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4664 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4665 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4666 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4667 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4668 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4669 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4670 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4671 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4672 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4673 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4674 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4675 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4676 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4677 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4678 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4679 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4680 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4681 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4682 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4683 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4684 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4685 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4686 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4687 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4688 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4689 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4690 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4691 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4692 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4693 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4694 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4695 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4696 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4697 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4698 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4699 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4700 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4701 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4702 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4703 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4704 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4705 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4706 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4707 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4708 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4709 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4710 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4711 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4712 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4713 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4714 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4715 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4716 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4717 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4718 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4719 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4720 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4721 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4722 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4723 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4724 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4725 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4726 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4727 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4728 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4729 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4730 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
4731 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
4732 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
4734 for(ivarloop=82; ivarloop>=0; ivarloop--){ \
4735 displs[ivarloop] -= displs[0]; \
4737 MPI_Type_create_struct(83, blockcounts, displs, types, new_type); \
4738 MPI_Type_commit(new_type); \
4742 #define hit_comTypeStruct84(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF) \
4744 NATIVE_STRUCT cmdline; \
4745 int blockcounts[84] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF)}; \
4746 MPI_Datatype types[84] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF)}; \
4747 MPI_Aint displs[84]; \
4748 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4749 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4750 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4751 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4752 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4753 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4754 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4755 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4756 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4757 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4758 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4759 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4760 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4761 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4762 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4763 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4764 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4765 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4766 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4767 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4768 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4769 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4770 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4771 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4772 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4773 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4774 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4775 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4776 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4777 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4778 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4779 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4780 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4781 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4782 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4783 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4784 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4785 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4786 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4787 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4788 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4789 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4790 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4791 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4792 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4793 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4794 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4795 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4796 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4797 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4798 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4799 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4800 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4801 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4802 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4803 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4804 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4805 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4806 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4807 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4808 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4809 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4810 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4811 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4812 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4813 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4814 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4815 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4816 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4817 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4818 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4819 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4820 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4821 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4822 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4823 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4824 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4825 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4826 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4827 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4828 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
4829 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
4830 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
4831 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
4833 for(ivarloop=83; ivarloop>=0; ivarloop--){ \
4834 displs[ivarloop] -= displs[0]; \
4836 MPI_Type_create_struct(84, blockcounts, displs, types, new_type); \
4837 MPI_Type_commit(new_type); \
4841 #define hit_comTypeStruct85(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG) \
4843 NATIVE_STRUCT cmdline; \
4844 int blockcounts[85] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG)}; \
4845 MPI_Datatype types[85] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG)}; \
4846 MPI_Aint displs[85]; \
4847 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4848 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4849 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4850 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4851 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4852 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4853 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4854 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4855 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4856 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4857 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4858 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4859 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4860 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4861 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4862 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4863 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4864 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4865 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4866 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4867 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4868 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4869 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4870 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4871 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4872 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4873 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4874 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4875 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4876 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4877 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4878 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4879 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4880 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4881 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4882 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4883 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4884 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4885 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4886 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4887 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4888 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4889 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4890 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4891 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4892 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4893 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4894 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4895 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4896 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4897 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4898 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4899 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
4900 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
4901 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
4902 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
4903 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
4904 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
4905 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
4906 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
4907 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
4908 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
4909 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
4910 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
4911 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
4912 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
4913 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
4914 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
4915 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
4916 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
4917 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
4918 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
4919 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
4920 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
4921 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
4922 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
4923 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
4924 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
4925 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
4926 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
4927 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
4928 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
4929 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
4930 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
4931 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
4933 for(ivarloop=84; ivarloop>=0; ivarloop--){ \
4934 displs[ivarloop] -= displs[0]; \
4936 MPI_Type_create_struct(85, blockcounts, displs, types, new_type); \
4937 MPI_Type_commit(new_type); \
4941 #define hit_comTypeStruct86(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH) \
4943 NATIVE_STRUCT cmdline; \
4944 int blockcounts[86] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH)}; \
4945 MPI_Datatype types[86] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH)}; \
4946 MPI_Aint displs[86]; \
4947 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
4948 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
4949 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
4950 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
4951 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
4952 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
4953 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
4954 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
4955 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
4956 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
4957 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
4958 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
4959 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
4960 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
4961 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
4962 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
4963 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
4964 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
4965 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
4966 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
4967 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
4968 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
4969 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
4970 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
4971 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
4972 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
4973 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
4974 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
4975 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
4976 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
4977 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
4978 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
4979 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
4980 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
4981 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
4982 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
4983 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
4984 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
4985 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
4986 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
4987 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
4988 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
4989 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
4990 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
4991 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
4992 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
4993 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
4994 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
4995 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
4996 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
4997 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
4998 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
4999 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5000 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5001 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5002 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5003 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5004 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5005 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5006 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5007 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5008 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5009 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5010 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5011 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5012 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5013 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5014 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5015 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5016 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5017 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5018 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5019 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5020 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5021 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5022 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5023 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5024 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5025 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5026 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5027 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5028 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5029 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5030 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5031 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5032 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5034 for(ivarloop=85; ivarloop>=0; ivarloop--){ \
5035 displs[ivarloop] -= displs[0]; \
5037 MPI_Type_create_struct(86, blockcounts, displs, types, new_type); \
5038 MPI_Type_commit(new_type); \
5042 #define hit_comTypeStruct87(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI) \
5044 NATIVE_STRUCT cmdline; \
5045 int blockcounts[87] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI)}; \
5046 MPI_Datatype types[87] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI)}; \
5047 MPI_Aint displs[87]; \
5048 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5049 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5050 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5051 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5052 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5053 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5054 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5055 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5056 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5057 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5058 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5059 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5060 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5061 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5062 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5063 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5064 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5065 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5066 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5067 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5068 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5069 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5070 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5071 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5072 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5073 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5074 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5075 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5076 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5077 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5078 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5079 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5080 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5081 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5082 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5083 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5084 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5085 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5086 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5087 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5088 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5089 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5090 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5091 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5092 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5093 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5094 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5095 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5096 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5097 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5098 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5099 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5100 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5101 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5102 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5103 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5104 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5105 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5106 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5107 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5108 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5109 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5110 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5111 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5112 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5113 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5114 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5115 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5116 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5117 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5118 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5119 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5120 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5121 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5122 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5123 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5124 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5125 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5126 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5127 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5128 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5129 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5130 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5131 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5132 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5133 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5134 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5136 for(ivarloop=86; ivarloop>=0; ivarloop--){ \
5137 displs[ivarloop] -= displs[0]; \
5139 MPI_Type_create_struct(87, blockcounts, displs, types, new_type); \
5140 MPI_Type_commit(new_type); \
5144 #define hit_comTypeStruct88(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ) \
5146 NATIVE_STRUCT cmdline; \
5147 int blockcounts[88] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ)}; \
5148 MPI_Datatype types[88] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ)}; \
5149 MPI_Aint displs[88]; \
5150 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5151 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5152 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5153 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5154 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5155 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5156 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5157 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5158 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5159 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5160 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5161 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5162 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5163 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5164 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5165 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5166 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5167 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5168 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5169 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5170 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5171 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5172 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5173 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5174 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5175 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5176 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5177 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5178 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5179 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5180 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5181 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5182 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5183 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5184 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5185 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5186 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5187 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5188 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5189 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5190 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5191 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5192 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5193 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5194 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5195 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5196 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5197 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5198 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5199 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5200 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5201 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5202 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5203 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5204 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5205 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5206 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5207 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5208 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5209 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5210 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5211 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5212 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5213 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5214 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5215 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5216 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5217 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5218 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5219 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5220 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5221 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5222 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5223 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5224 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5225 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5226 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5227 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5228 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5229 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5230 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5231 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5232 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5233 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5234 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5235 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5236 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5237 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5239 for(ivarloop=87; ivarloop>=0; ivarloop--){ \
5240 displs[ivarloop] -= displs[0]; \
5242 MPI_Type_create_struct(88, blockcounts, displs, types, new_type); \
5243 MPI_Type_commit(new_type); \
5247 #define hit_comTypeStruct89(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK) \
5249 NATIVE_STRUCT cmdline; \
5250 int blockcounts[89] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK)}; \
5251 MPI_Datatype types[89] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK)}; \
5252 MPI_Aint displs[89]; \
5253 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5254 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5255 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5256 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5257 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5258 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5259 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5260 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5261 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5262 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5263 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5264 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5265 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5266 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5267 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5268 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5269 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5270 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5271 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5272 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5273 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5274 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5275 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5276 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5277 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5278 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5279 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5280 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5281 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5282 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5283 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5284 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5285 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5286 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5287 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5288 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5289 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5290 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5291 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5292 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5293 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5294 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5295 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5296 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5297 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5298 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5299 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5300 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5301 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5302 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5303 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5304 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5305 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5306 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5307 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5308 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5309 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5310 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5311 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5312 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5313 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5314 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5315 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5316 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5317 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5318 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5319 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5320 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5321 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5322 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5323 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5324 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5325 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5326 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5327 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5328 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5329 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5330 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5331 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5332 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5333 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5334 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5335 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5336 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5337 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5338 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5339 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5340 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5341 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5343 for(ivarloop=88; ivarloop>=0; ivarloop--){ \
5344 displs[ivarloop] -= displs[0]; \
5346 MPI_Type_create_struct(89, blockcounts, displs, types, new_type); \
5347 MPI_Type_commit(new_type); \
5351 #define hit_comTypeStruct90(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL) \
5353 NATIVE_STRUCT cmdline; \
5354 int blockcounts[90] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL)}; \
5355 MPI_Datatype types[90] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL)}; \
5356 MPI_Aint displs[90]; \
5357 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5358 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5359 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5360 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5361 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5362 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5363 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5364 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5365 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5366 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5367 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5368 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5369 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5370 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5371 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5372 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5373 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5374 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5375 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5376 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5377 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5378 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5379 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5380 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5381 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5382 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5383 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5384 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5385 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5386 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5387 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5388 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5389 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5390 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5391 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5392 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5393 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5394 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5395 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5396 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5397 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5398 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5399 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5400 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5401 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5402 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5403 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5404 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5405 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5406 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5407 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5408 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5409 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5410 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5411 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5412 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5413 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5414 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5415 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5416 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5417 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5418 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5419 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5420 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5421 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5422 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5423 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5424 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5425 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5426 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5427 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5428 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5429 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5430 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5431 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5432 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5433 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5434 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5435 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5436 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5437 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5438 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5439 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5440 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5441 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5442 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5443 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5444 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5445 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5446 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5448 for(ivarloop=89; ivarloop>=0; ivarloop--){ \
5449 displs[ivarloop] -= displs[0]; \
5451 MPI_Type_create_struct(90, blockcounts, displs, types, new_type); \
5452 MPI_Type_commit(new_type); \
5456 #define hit_comTypeStruct91(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM) \
5458 NATIVE_STRUCT cmdline; \
5459 int blockcounts[91] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM)}; \
5460 MPI_Datatype types[91] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM)}; \
5461 MPI_Aint displs[91]; \
5462 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5463 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5464 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5465 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5466 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5467 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5468 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5469 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5470 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5471 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5472 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5473 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5474 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5475 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5476 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5477 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5478 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5479 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5480 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5481 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5482 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5483 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5484 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5485 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5486 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5487 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5488 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5489 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5490 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5491 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5492 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5493 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5494 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5495 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5496 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5497 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5498 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5499 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5500 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5501 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5502 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5503 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5504 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5505 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5506 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5507 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5508 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5509 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5510 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5511 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5512 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5513 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5514 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5515 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5516 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5517 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5518 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5519 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5520 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5521 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5522 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5523 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5524 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5525 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5526 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5527 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5528 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5529 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5530 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5531 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5532 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5533 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5534 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5535 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5536 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5537 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5538 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5539 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5540 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5541 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5542 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5543 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5544 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5545 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5546 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5547 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5548 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5549 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5550 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5551 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5552 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
5554 for(ivarloop=90; ivarloop>=0; ivarloop--){ \
5555 displs[ivarloop] -= displs[0]; \
5557 MPI_Type_create_struct(91, blockcounts, displs, types, new_type); \
5558 MPI_Type_commit(new_type); \
5562 #define hit_comTypeStruct92(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN) \
5564 NATIVE_STRUCT cmdline; \
5565 int blockcounts[92] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN)}; \
5566 MPI_Datatype types[92] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN)}; \
5567 MPI_Aint displs[92]; \
5568 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5569 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5570 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5571 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5572 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5573 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5574 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5575 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5576 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5577 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5578 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5579 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5580 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5581 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5582 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5583 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5584 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5585 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5586 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5587 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5588 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5589 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5590 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5591 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5592 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5593 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5594 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5595 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5596 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5597 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5598 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5599 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5600 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5601 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5602 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5603 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5604 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5605 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5606 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5607 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5608 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5609 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5610 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5611 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5612 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5613 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5614 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5615 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5616 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5617 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5618 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5619 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5620 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5621 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5622 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5623 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5624 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5625 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5626 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5627 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5628 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5629 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5630 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5631 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5632 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5633 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5634 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5635 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5636 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5637 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5638 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5639 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5640 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5641 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5642 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5643 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5644 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5645 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5646 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5647 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5648 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5649 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5650 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5651 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5652 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5653 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5654 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5655 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5656 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5657 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5658 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
5659 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
5661 for(ivarloop=91; ivarloop>=0; ivarloop--){ \
5662 displs[ivarloop] -= displs[0]; \
5664 MPI_Type_create_struct(92, blockcounts, displs, types, new_type); \
5665 MPI_Type_commit(new_type); \
5669 #define hit_comTypeStruct93(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO) \
5671 NATIVE_STRUCT cmdline; \
5672 int blockcounts[93] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO)}; \
5673 MPI_Datatype types[93] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO)}; \
5674 MPI_Aint displs[93]; \
5675 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5676 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5677 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5678 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5679 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5680 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5681 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5682 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5683 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5684 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5685 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5686 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5687 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5688 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5689 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5690 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5691 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5692 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5693 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5694 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5695 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5696 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5697 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5698 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5699 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5700 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5701 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5702 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5703 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5704 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5705 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5706 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5707 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5708 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5709 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5710 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5711 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5712 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5713 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5714 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5715 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5716 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5717 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5718 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5719 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5720 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5721 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5722 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5723 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5724 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5725 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5726 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5727 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5728 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5729 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5730 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5731 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5732 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5733 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5734 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5735 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5736 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5737 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5738 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5739 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5740 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5741 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5742 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5743 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5744 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5745 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5746 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5747 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5748 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5749 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5750 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5751 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5752 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5753 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5754 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5755 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5756 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5757 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5758 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5759 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5760 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5761 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5762 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5763 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5764 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5765 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
5766 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
5767 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
5769 for(ivarloop=92; ivarloop>=0; ivarloop--){ \
5770 displs[ivarloop] -= displs[0]; \
5772 MPI_Type_create_struct(93, blockcounts, displs, types, new_type); \
5773 MPI_Type_commit(new_type); \
5777 #define hit_comTypeStruct94(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP) \
5779 NATIVE_STRUCT cmdline; \
5780 int blockcounts[94] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP)}; \
5781 MPI_Datatype types[94] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP)}; \
5782 MPI_Aint displs[94]; \
5783 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5784 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5785 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5786 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5787 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5788 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5789 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5790 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5791 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5792 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5793 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5794 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5795 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5796 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5797 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5798 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5799 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5800 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5801 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5802 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5803 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5804 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5805 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5806 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5807 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5808 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5809 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5810 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5811 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5812 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5813 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5814 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5815 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5816 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5817 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5818 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5819 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5820 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5821 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5822 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5823 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5824 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5825 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5826 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5827 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5828 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5829 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5830 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5831 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5832 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5833 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5834 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5835 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5836 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5837 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5838 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5839 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5840 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5841 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5842 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5843 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5844 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5845 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5846 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5847 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5848 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5849 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5850 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5851 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5852 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5853 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5854 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5855 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5856 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5857 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5858 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5859 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5860 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5861 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5862 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5863 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5864 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5865 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5866 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5867 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5868 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5869 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5870 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5871 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5872 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5873 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
5874 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
5875 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
5876 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
5878 for(ivarloop=93; ivarloop>=0; ivarloop--){ \
5879 displs[ivarloop] -= displs[0]; \
5881 MPI_Type_create_struct(94, blockcounts, displs, types, new_type); \
5882 MPI_Type_commit(new_type); \
5886 #define hit_comTypeStruct95(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ) \
5888 NATIVE_STRUCT cmdline; \
5889 int blockcounts[95] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ)}; \
5890 MPI_Datatype types[95] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ)}; \
5891 MPI_Aint displs[95]; \
5892 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
5893 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
5894 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
5895 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
5896 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
5897 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
5898 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
5899 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
5900 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
5901 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
5902 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
5903 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
5904 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
5905 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
5906 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
5907 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
5908 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
5909 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
5910 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
5911 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
5912 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
5913 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
5914 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
5915 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
5916 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
5917 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
5918 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
5919 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
5920 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
5921 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
5922 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
5923 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
5924 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
5925 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
5926 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
5927 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
5928 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
5929 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
5930 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
5931 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
5932 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
5933 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
5934 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
5935 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
5936 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
5937 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
5938 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
5939 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
5940 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
5941 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
5942 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
5943 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
5944 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
5945 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
5946 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
5947 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
5948 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
5949 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
5950 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
5951 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
5952 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
5953 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
5954 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
5955 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
5956 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
5957 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
5958 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
5959 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
5960 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
5961 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
5962 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
5963 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
5964 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
5965 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
5966 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
5967 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
5968 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
5969 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
5970 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
5971 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
5972 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
5973 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
5974 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
5975 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
5976 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
5977 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
5978 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
5979 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
5980 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
5981 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
5982 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
5983 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
5984 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
5985 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
5986 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
5988 for(ivarloop=94; ivarloop>=0; ivarloop--){ \
5989 displs[ivarloop] -= displs[0]; \
5991 MPI_Type_create_struct(95, blockcounts, displs, types, new_type); \
5992 MPI_Type_commit(new_type); \
5996 #define hit_comTypeStruct96(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ, NAME_CR, COUNT_CR, TYPE_CR) \
5998 NATIVE_STRUCT cmdline; \
5999 int blockcounts[96] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ), (COUNT_CR)}; \
6000 MPI_Datatype types[96] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ), (TYPE_CR)}; \
6001 MPI_Aint displs[96]; \
6002 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
6003 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
6004 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
6005 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
6006 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
6007 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
6008 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
6009 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
6010 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
6011 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
6012 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
6013 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
6014 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
6015 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
6016 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
6017 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
6018 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
6019 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
6020 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
6021 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
6022 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
6023 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
6024 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
6025 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
6026 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
6027 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
6028 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
6029 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
6030 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
6031 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
6032 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
6033 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
6034 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
6035 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
6036 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
6037 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
6038 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
6039 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
6040 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
6041 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
6042 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
6043 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
6044 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
6045 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
6046 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
6047 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
6048 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
6049 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
6050 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
6051 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
6052 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
6053 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
6054 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
6055 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
6056 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
6057 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
6058 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
6059 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
6060 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
6061 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
6062 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
6063 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
6064 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
6065 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
6066 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
6067 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
6068 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
6069 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
6070 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
6071 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
6072 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
6073 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
6074 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
6075 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
6076 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
6077 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
6078 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
6079 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
6080 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
6081 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
6082 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
6083 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
6084 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
6085 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
6086 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
6087 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
6088 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
6089 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
6090 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
6091 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
6092 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
6093 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
6094 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
6095 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
6096 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
6097 MPI_Get_address(&cmdline.NAME_CR, &displs[95]); \
6099 for(ivarloop=95; ivarloop>=0; ivarloop--){ \
6100 displs[ivarloop] -= displs[0]; \
6102 MPI_Type_create_struct(96, blockcounts, displs, types, new_type); \
6103 MPI_Type_commit(new_type); \
6107 #define hit_comTypeStruct97(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ, NAME_CR, COUNT_CR, TYPE_CR, NAME_CS, COUNT_CS, TYPE_CS) \
6109 NATIVE_STRUCT cmdline; \
6110 int blockcounts[97] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ), (COUNT_CR), (COUNT_CS)}; \
6111 MPI_Datatype types[97] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ), (TYPE_CR), (TYPE_CS)}; \
6112 MPI_Aint displs[97]; \
6113 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
6114 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
6115 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
6116 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
6117 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
6118 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
6119 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
6120 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
6121 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
6122 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
6123 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
6124 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
6125 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
6126 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
6127 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
6128 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
6129 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
6130 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
6131 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
6132 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
6133 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
6134 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
6135 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
6136 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
6137 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
6138 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
6139 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
6140 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
6141 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
6142 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
6143 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
6144 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
6145 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
6146 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
6147 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
6148 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
6149 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
6150 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
6151 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
6152 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
6153 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
6154 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
6155 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
6156 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
6157 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
6158 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
6159 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
6160 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
6161 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
6162 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
6163 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
6164 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
6165 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
6166 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
6167 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
6168 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
6169 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
6170 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
6171 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
6172 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
6173 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
6174 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
6175 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
6176 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
6177 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
6178 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
6179 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
6180 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
6181 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
6182 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
6183 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
6184 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
6185 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
6186 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
6187 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
6188 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
6189 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
6190 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
6191 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
6192 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
6193 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
6194 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
6195 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
6196 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
6197 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
6198 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
6199 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
6200 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
6201 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
6202 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
6203 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
6204 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
6205 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
6206 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
6207 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
6208 MPI_Get_address(&cmdline.NAME_CR, &displs[95]); \
6209 MPI_Get_address(&cmdline.NAME_CS, &displs[96]); \
6211 for(ivarloop=96; ivarloop>=0; ivarloop--){ \
6212 displs[ivarloop] -= displs[0]; \
6214 MPI_Type_create_struct(97, blockcounts, displs, types, new_type); \
6215 MPI_Type_commit(new_type); \
6219 #define hit_comTypeStruct98(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ, NAME_CR, COUNT_CR, TYPE_CR, NAME_CS, COUNT_CS, TYPE_CS, NAME_CT, COUNT_CT, TYPE_CT) \
6221 NATIVE_STRUCT cmdline; \
6222 int blockcounts[98] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ), (COUNT_CR), (COUNT_CS), (COUNT_CT)}; \
6223 MPI_Datatype types[98] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ), (TYPE_CR), (TYPE_CS), (TYPE_CT)}; \
6224 MPI_Aint displs[98]; \
6225 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
6226 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
6227 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
6228 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
6229 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
6230 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
6231 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
6232 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
6233 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
6234 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
6235 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
6236 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
6237 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
6238 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
6239 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
6240 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
6241 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
6242 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
6243 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
6244 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
6245 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
6246 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
6247 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
6248 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
6249 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
6250 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
6251 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
6252 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
6253 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
6254 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
6255 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
6256 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
6257 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
6258 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
6259 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
6260 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
6261 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
6262 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
6263 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
6264 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
6265 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
6266 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
6267 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
6268 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
6269 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
6270 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
6271 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
6272 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
6273 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
6274 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
6275 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
6276 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
6277 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
6278 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
6279 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
6280 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
6281 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
6282 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
6283 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
6284 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
6285 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
6286 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
6287 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
6288 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
6289 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
6290 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
6291 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
6292 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
6293 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
6294 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
6295 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
6296 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
6297 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
6298 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
6299 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
6300 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
6301 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
6302 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
6303 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
6304 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
6305 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
6306 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
6307 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
6308 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
6309 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
6310 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
6311 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
6312 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
6313 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
6314 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
6315 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
6316 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
6317 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
6318 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
6319 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
6320 MPI_Get_address(&cmdline.NAME_CR, &displs[95]); \
6321 MPI_Get_address(&cmdline.NAME_CS, &displs[96]); \
6322 MPI_Get_address(&cmdline.NAME_CT, &displs[97]); \
6324 for(ivarloop=97; ivarloop>=0; ivarloop--){ \
6325 displs[ivarloop] -= displs[0]; \
6327 MPI_Type_create_struct(98, blockcounts, displs, types, new_type); \
6328 MPI_Type_commit(new_type); \
6332 #define hit_comTypeStruct99(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ, NAME_CR, COUNT_CR, TYPE_CR, NAME_CS, COUNT_CS, TYPE_CS, NAME_CT, COUNT_CT, TYPE_CT, NAME_CU, COUNT_CU, TYPE_CU) \
6334 NATIVE_STRUCT cmdline; \
6335 int blockcounts[99] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ), (COUNT_CR), (COUNT_CS), (COUNT_CT), (COUNT_CU)}; \
6336 MPI_Datatype types[99] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ), (TYPE_CR), (TYPE_CS), (TYPE_CT), (TYPE_CU)}; \
6337 MPI_Aint displs[99]; \
6338 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
6339 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
6340 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
6341 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
6342 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
6343 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
6344 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
6345 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
6346 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
6347 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
6348 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
6349 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
6350 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
6351 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
6352 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
6353 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
6354 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
6355 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
6356 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
6357 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
6358 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
6359 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
6360 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
6361 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
6362 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
6363 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
6364 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
6365 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
6366 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
6367 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
6368 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
6369 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
6370 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
6371 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
6372 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
6373 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
6374 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
6375 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
6376 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
6377 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
6378 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
6379 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
6380 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
6381 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
6382 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
6383 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
6384 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
6385 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
6386 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
6387 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
6388 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
6389 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
6390 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
6391 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
6392 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
6393 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
6394 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
6395 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
6396 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
6397 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
6398 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
6399 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
6400 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
6401 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
6402 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
6403 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
6404 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
6405 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
6406 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
6407 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
6408 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
6409 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
6410 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
6411 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
6412 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
6413 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
6414 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
6415 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
6416 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
6417 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
6418 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
6419 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
6420 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
6421 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
6422 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
6423 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
6424 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
6425 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
6426 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
6427 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
6428 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
6429 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
6430 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
6431 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
6432 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
6433 MPI_Get_address(&cmdline.NAME_CR, &displs[95]); \
6434 MPI_Get_address(&cmdline.NAME_CS, &displs[96]); \
6435 MPI_Get_address(&cmdline.NAME_CT, &displs[97]); \
6436 MPI_Get_address(&cmdline.NAME_CU, &displs[98]); \
6438 for(ivarloop=98; ivarloop>=0; ivarloop--){ \
6439 displs[ivarloop] -= displs[0]; \
6441 MPI_Type_create_struct(99, blockcounts, displs, types, new_type); \
6442 MPI_Type_commit(new_type); \
6446 #define hit_comTypeStruct100(new_type, NATIVE_STRUCT, NAME_A, COUNT_A, TYPE_A, NAME_B, COUNT_B, TYPE_B, NAME_C, COUNT_C, TYPE_C, NAME_D, COUNT_D, TYPE_D, NAME_E, COUNT_E, TYPE_E, NAME_F, COUNT_F, TYPE_F, NAME_G, COUNT_G, TYPE_G, NAME_H, COUNT_H, TYPE_H, NAME_I, COUNT_I, TYPE_I, NAME_J, COUNT_J, TYPE_J, NAME_K, COUNT_K, TYPE_K, NAME_L, COUNT_L, TYPE_L, NAME_M, COUNT_M, TYPE_M, NAME_N, COUNT_N, TYPE_N, NAME_O, COUNT_O, TYPE_O, NAME_P, COUNT_P, TYPE_P, NAME_Q, COUNT_Q, TYPE_Q, NAME_R, COUNT_R, TYPE_R, NAME_S, COUNT_S, TYPE_S, NAME_T, COUNT_T, TYPE_T, NAME_U, COUNT_U, TYPE_U, NAME_V, COUNT_V, TYPE_V, NAME_W, COUNT_W, TYPE_W, NAME_X, COUNT_X, TYPE_X, NAME_Y, COUNT_Y, TYPE_Y, NAME_Z, COUNT_Z, TYPE_Z, NAME_AA, COUNT_AA, TYPE_AA, NAME_AB, COUNT_AB, TYPE_AB, NAME_AC, COUNT_AC, TYPE_AC, NAME_AD, COUNT_AD, TYPE_AD, NAME_AE, COUNT_AE, TYPE_AE, NAME_AF, COUNT_AF, TYPE_AF, NAME_AG, COUNT_AG, TYPE_AG, NAME_AH, COUNT_AH, TYPE_AH, NAME_AI, COUNT_AI, TYPE_AI, NAME_AJ, COUNT_AJ, TYPE_AJ, NAME_AK, COUNT_AK, TYPE_AK, NAME_AL, COUNT_AL, TYPE_AL, NAME_AM, COUNT_AM, TYPE_AM, NAME_AN, COUNT_AN, TYPE_AN, NAME_AO, COUNT_AO, TYPE_AO, NAME_AP, COUNT_AP, TYPE_AP, NAME_AQ, COUNT_AQ, TYPE_AQ, NAME_AR, COUNT_AR, TYPE_AR, NAME_AS, COUNT_AS, TYPE_AS, NAME_AT, COUNT_AT, TYPE_AT, NAME_AU, COUNT_AU, TYPE_AU, NAME_AV, COUNT_AV, TYPE_AV, NAME_AW, COUNT_AW, TYPE_AW, NAME_AX, COUNT_AX, TYPE_AX, NAME_AY, COUNT_AY, TYPE_AY, NAME_AZ, COUNT_AZ, TYPE_AZ, NAME_BA, COUNT_BA, TYPE_BA, NAME_BB, COUNT_BB, TYPE_BB, NAME_BC, COUNT_BC, TYPE_BC, NAME_BD, COUNT_BD, TYPE_BD, NAME_BE, COUNT_BE, TYPE_BE, NAME_BF, COUNT_BF, TYPE_BF, NAME_BG, COUNT_BG, TYPE_BG, NAME_BH, COUNT_BH, TYPE_BH, NAME_BI, COUNT_BI, TYPE_BI, NAME_BJ, COUNT_BJ, TYPE_BJ, NAME_BK, COUNT_BK, TYPE_BK, NAME_BL, COUNT_BL, TYPE_BL, NAME_BM, COUNT_BM, TYPE_BM, NAME_BN, COUNT_BN, TYPE_BN, NAME_BO, COUNT_BO, TYPE_BO, NAME_BP, COUNT_BP, TYPE_BP, NAME_BQ, COUNT_BQ, TYPE_BQ, NAME_BR, COUNT_BR, TYPE_BR, NAME_BS, COUNT_BS, TYPE_BS, NAME_BT, COUNT_BT, TYPE_BT, NAME_BU, COUNT_BU, TYPE_BU, NAME_BV, COUNT_BV, TYPE_BV, NAME_BW, COUNT_BW, TYPE_BW, NAME_BX, COUNT_BX, TYPE_BX, NAME_BY, COUNT_BY, TYPE_BY, NAME_BZ, COUNT_BZ, TYPE_BZ, NAME_CA, COUNT_CA, TYPE_CA, NAME_CB, COUNT_CB, TYPE_CB, NAME_CC, COUNT_CC, TYPE_CC, NAME_CD, COUNT_CD, TYPE_CD, NAME_CE, COUNT_CE, TYPE_CE, NAME_CF, COUNT_CF, TYPE_CF, NAME_CG, COUNT_CG, TYPE_CG, NAME_CH, COUNT_CH, TYPE_CH, NAME_CI, COUNT_CI, TYPE_CI, NAME_CJ, COUNT_CJ, TYPE_CJ, NAME_CK, COUNT_CK, TYPE_CK, NAME_CL, COUNT_CL, TYPE_CL, NAME_CM, COUNT_CM, TYPE_CM, NAME_CN, COUNT_CN, TYPE_CN, NAME_CO, COUNT_CO, TYPE_CO, NAME_CP, COUNT_CP, TYPE_CP, NAME_CQ, COUNT_CQ, TYPE_CQ, NAME_CR, COUNT_CR, TYPE_CR, NAME_CS, COUNT_CS, TYPE_CS, NAME_CT, COUNT_CT, TYPE_CT, NAME_CU, COUNT_CU, TYPE_CU, NAME_CV, COUNT_CV, TYPE_CV) \
6448 NATIVE_STRUCT cmdline; \
6449 int blockcounts[100] = {(COUNT_A), (COUNT_B), (COUNT_C), (COUNT_D), (COUNT_E), (COUNT_F), (COUNT_G), (COUNT_H), (COUNT_I), (COUNT_J), (COUNT_K), (COUNT_L), (COUNT_M), (COUNT_N), (COUNT_O), (COUNT_P), (COUNT_Q), (COUNT_R), (COUNT_S), (COUNT_T), (COUNT_U), (COUNT_V), (COUNT_W), (COUNT_X), (COUNT_Y), (COUNT_Z), (COUNT_AA), (COUNT_AB), (COUNT_AC), (COUNT_AD), (COUNT_AE), (COUNT_AF), (COUNT_AG), (COUNT_AH), (COUNT_AI), (COUNT_AJ), (COUNT_AK), (COUNT_AL), (COUNT_AM), (COUNT_AN), (COUNT_AO), (COUNT_AP), (COUNT_AQ), (COUNT_AR), (COUNT_AS), (COUNT_AT), (COUNT_AU), (COUNT_AV), (COUNT_AW), (COUNT_AX), (COUNT_AY), (COUNT_AZ), (COUNT_BA), (COUNT_BB), (COUNT_BC), (COUNT_BD), (COUNT_BE), (COUNT_BF), (COUNT_BG), (COUNT_BH), (COUNT_BI), (COUNT_BJ), (COUNT_BK), (COUNT_BL), (COUNT_BM), (COUNT_BN), (COUNT_BO), (COUNT_BP), (COUNT_BQ), (COUNT_BR), (COUNT_BS), (COUNT_BT), (COUNT_BU), (COUNT_BV), (COUNT_BW), (COUNT_BX), (COUNT_BY), (COUNT_BZ), (COUNT_CA), (COUNT_CB), (COUNT_CC), (COUNT_CD), (COUNT_CE), (COUNT_CF), (COUNT_CG), (COUNT_CH), (COUNT_CI), (COUNT_CJ), (COUNT_CK), (COUNT_CL), (COUNT_CM), (COUNT_CN), (COUNT_CO), (COUNT_CP), (COUNT_CQ), (COUNT_CR), (COUNT_CS), (COUNT_CT), (COUNT_CU), (COUNT_CV)}; \
6450 MPI_Datatype types[100] = {(TYPE_A), (TYPE_B), (TYPE_C), (TYPE_D), (TYPE_E), (TYPE_F), (TYPE_G), (TYPE_H), (TYPE_I), (TYPE_J), (TYPE_K), (TYPE_L), (TYPE_M), (TYPE_N), (TYPE_O), (TYPE_P), (TYPE_Q), (TYPE_R), (TYPE_S), (TYPE_T), (TYPE_U), (TYPE_V), (TYPE_W), (TYPE_X), (TYPE_Y), (TYPE_Z), (TYPE_AA), (TYPE_AB), (TYPE_AC), (TYPE_AD), (TYPE_AE), (TYPE_AF), (TYPE_AG), (TYPE_AH), (TYPE_AI), (TYPE_AJ), (TYPE_AK), (TYPE_AL), (TYPE_AM), (TYPE_AN), (TYPE_AO), (TYPE_AP), (TYPE_AQ), (TYPE_AR), (TYPE_AS), (TYPE_AT), (TYPE_AU), (TYPE_AV), (TYPE_AW), (TYPE_AX), (TYPE_AY), (TYPE_AZ), (TYPE_BA), (TYPE_BB), (TYPE_BC), (TYPE_BD), (TYPE_BE), (TYPE_BF), (TYPE_BG), (TYPE_BH), (TYPE_BI), (TYPE_BJ), (TYPE_BK), (TYPE_BL), (TYPE_BM), (TYPE_BN), (TYPE_BO), (TYPE_BP), (TYPE_BQ), (TYPE_BR), (TYPE_BS), (TYPE_BT), (TYPE_BU), (TYPE_BV), (TYPE_BW), (TYPE_BX), (TYPE_BY), (TYPE_BZ), (TYPE_CA), (TYPE_CB), (TYPE_CC), (TYPE_CD), (TYPE_CE), (TYPE_CF), (TYPE_CG), (TYPE_CH), (TYPE_CI), (TYPE_CJ), (TYPE_CK), (TYPE_CL), (TYPE_CM), (TYPE_CN), (TYPE_CO), (TYPE_CP), (TYPE_CQ), (TYPE_CR), (TYPE_CS), (TYPE_CT), (TYPE_CU), (TYPE_CV)}; \
6451 MPI_Aint displs[100]; \
6452 MPI_Get_address(&cmdline.NAME_A, &displs[0]); \
6453 MPI_Get_address(&cmdline.NAME_B, &displs[1]); \
6454 MPI_Get_address(&cmdline.NAME_C, &displs[2]); \
6455 MPI_Get_address(&cmdline.NAME_D, &displs[3]); \
6456 MPI_Get_address(&cmdline.NAME_E, &displs[4]); \
6457 MPI_Get_address(&cmdline.NAME_F, &displs[5]); \
6458 MPI_Get_address(&cmdline.NAME_G, &displs[6]); \
6459 MPI_Get_address(&cmdline.NAME_H, &displs[7]); \
6460 MPI_Get_address(&cmdline.NAME_I, &displs[8]); \
6461 MPI_Get_address(&cmdline.NAME_J, &displs[9]); \
6462 MPI_Get_address(&cmdline.NAME_K, &displs[10]); \
6463 MPI_Get_address(&cmdline.NAME_L, &displs[11]); \
6464 MPI_Get_address(&cmdline.NAME_M, &displs[12]); \
6465 MPI_Get_address(&cmdline.NAME_N, &displs[13]); \
6466 MPI_Get_address(&cmdline.NAME_O, &displs[14]); \
6467 MPI_Get_address(&cmdline.NAME_P, &displs[15]); \
6468 MPI_Get_address(&cmdline.NAME_Q, &displs[16]); \
6469 MPI_Get_address(&cmdline.NAME_R, &displs[17]); \
6470 MPI_Get_address(&cmdline.NAME_S, &displs[18]); \
6471 MPI_Get_address(&cmdline.NAME_T, &displs[19]); \
6472 MPI_Get_address(&cmdline.NAME_U, &displs[20]); \
6473 MPI_Get_address(&cmdline.NAME_V, &displs[21]); \
6474 MPI_Get_address(&cmdline.NAME_W, &displs[22]); \
6475 MPI_Get_address(&cmdline.NAME_X, &displs[23]); \
6476 MPI_Get_address(&cmdline.NAME_Y, &displs[24]); \
6477 MPI_Get_address(&cmdline.NAME_Z, &displs[25]); \
6478 MPI_Get_address(&cmdline.NAME_AA, &displs[26]); \
6479 MPI_Get_address(&cmdline.NAME_AB, &displs[27]); \
6480 MPI_Get_address(&cmdline.NAME_AC, &displs[28]); \
6481 MPI_Get_address(&cmdline.NAME_AD, &displs[29]); \
6482 MPI_Get_address(&cmdline.NAME_AE, &displs[30]); \
6483 MPI_Get_address(&cmdline.NAME_AF, &displs[31]); \
6484 MPI_Get_address(&cmdline.NAME_AG, &displs[32]); \
6485 MPI_Get_address(&cmdline.NAME_AH, &displs[33]); \
6486 MPI_Get_address(&cmdline.NAME_AI, &displs[34]); \
6487 MPI_Get_address(&cmdline.NAME_AJ, &displs[35]); \
6488 MPI_Get_address(&cmdline.NAME_AK, &displs[36]); \
6489 MPI_Get_address(&cmdline.NAME_AL, &displs[37]); \
6490 MPI_Get_address(&cmdline.NAME_AM, &displs[38]); \
6491 MPI_Get_address(&cmdline.NAME_AN, &displs[39]); \
6492 MPI_Get_address(&cmdline.NAME_AO, &displs[40]); \
6493 MPI_Get_address(&cmdline.NAME_AP, &displs[41]); \
6494 MPI_Get_address(&cmdline.NAME_AQ, &displs[42]); \
6495 MPI_Get_address(&cmdline.NAME_AR, &displs[43]); \
6496 MPI_Get_address(&cmdline.NAME_AS, &displs[44]); \
6497 MPI_Get_address(&cmdline.NAME_AT, &displs[45]); \
6498 MPI_Get_address(&cmdline.NAME_AU, &displs[46]); \
6499 MPI_Get_address(&cmdline.NAME_AV, &displs[47]); \
6500 MPI_Get_address(&cmdline.NAME_AW, &displs[48]); \
6501 MPI_Get_address(&cmdline.NAME_AX, &displs[49]); \
6502 MPI_Get_address(&cmdline.NAME_AY, &displs[50]); \
6503 MPI_Get_address(&cmdline.NAME_AZ, &displs[51]); \
6504 MPI_Get_address(&cmdline.NAME_BA, &displs[52]); \
6505 MPI_Get_address(&cmdline.NAME_BB, &displs[53]); \
6506 MPI_Get_address(&cmdline.NAME_BC, &displs[54]); \
6507 MPI_Get_address(&cmdline.NAME_BD, &displs[55]); \
6508 MPI_Get_address(&cmdline.NAME_BE, &displs[56]); \
6509 MPI_Get_address(&cmdline.NAME_BF, &displs[57]); \
6510 MPI_Get_address(&cmdline.NAME_BG, &displs[58]); \
6511 MPI_Get_address(&cmdline.NAME_BH, &displs[59]); \
6512 MPI_Get_address(&cmdline.NAME_BI, &displs[60]); \
6513 MPI_Get_address(&cmdline.NAME_BJ, &displs[61]); \
6514 MPI_Get_address(&cmdline.NAME_BK, &displs[62]); \
6515 MPI_Get_address(&cmdline.NAME_BL, &displs[63]); \
6516 MPI_Get_address(&cmdline.NAME_BM, &displs[64]); \
6517 MPI_Get_address(&cmdline.NAME_BN, &displs[65]); \
6518 MPI_Get_address(&cmdline.NAME_BO, &displs[66]); \
6519 MPI_Get_address(&cmdline.NAME_BP, &displs[67]); \
6520 MPI_Get_address(&cmdline.NAME_BQ, &displs[68]); \
6521 MPI_Get_address(&cmdline.NAME_BR, &displs[69]); \
6522 MPI_Get_address(&cmdline.NAME_BS, &displs[70]); \
6523 MPI_Get_address(&cmdline.NAME_BT, &displs[71]); \
6524 MPI_Get_address(&cmdline.NAME_BU, &displs[72]); \
6525 MPI_Get_address(&cmdline.NAME_BV, &displs[73]); \
6526 MPI_Get_address(&cmdline.NAME_BW, &displs[74]); \
6527 MPI_Get_address(&cmdline.NAME_BX, &displs[75]); \
6528 MPI_Get_address(&cmdline.NAME_BY, &displs[76]); \
6529 MPI_Get_address(&cmdline.NAME_BZ, &displs[77]); \
6530 MPI_Get_address(&cmdline.NAME_CA, &displs[78]); \
6531 MPI_Get_address(&cmdline.NAME_CB, &displs[79]); \
6532 MPI_Get_address(&cmdline.NAME_CC, &displs[80]); \
6533 MPI_Get_address(&cmdline.NAME_CD, &displs[81]); \
6534 MPI_Get_address(&cmdline.NAME_CE, &displs[82]); \
6535 MPI_Get_address(&cmdline.NAME_CF, &displs[83]); \
6536 MPI_Get_address(&cmdline.NAME_CG, &displs[84]); \
6537 MPI_Get_address(&cmdline.NAME_CH, &displs[85]); \
6538 MPI_Get_address(&cmdline.NAME_CI, &displs[86]); \
6539 MPI_Get_address(&cmdline.NAME_CJ, &displs[87]); \
6540 MPI_Get_address(&cmdline.NAME_CK, &displs[88]); \
6541 MPI_Get_address(&cmdline.NAME_CL, &displs[89]); \
6542 MPI_Get_address(&cmdline.NAME_CM, &displs[90]); \
6543 MPI_Get_address(&cmdline.NAME_CN, &displs[91]); \
6544 MPI_Get_address(&cmdline.NAME_CO, &displs[92]); \
6545 MPI_Get_address(&cmdline.NAME_CP, &displs[93]); \
6546 MPI_Get_address(&cmdline.NAME_CQ, &displs[94]); \
6547 MPI_Get_address(&cmdline.NAME_CR, &displs[95]); \
6548 MPI_Get_address(&cmdline.NAME_CS, &displs[96]); \
6549 MPI_Get_address(&cmdline.NAME_CT, &displs[97]); \
6550 MPI_Get_address(&cmdline.NAME_CU, &displs[98]); \
6551 MPI_Get_address(&cmdline.NAME_CV, &displs[99]); \
6553 for(ivarloop=99; ivarloop>=0; ivarloop--){ \
6554 displs[ivarloop] -= displs[0]; \
6556 MPI_Type_create_struct(100, blockcounts, displs, types, new_type); \
6557 MPI_Type_commit(new_type); \
6563 #ifdef NOT_INCLUDE_THIS_BEACUSE_IS_THE_PYTHON_SCRIPT
6567 # Script to automatically generate macros to define new Hitmap communication
6568 # derived data types for structs, with as many fields as needed.
6570 # The result of this script is stored in: hit_comTypeStruct.h
6573 # @author Javier Fresno Bausela
6574 # @author Arturo Gonzalez-Escribano
6576 # @date Jun 2013 Changed loop variables for something longer to avoid warnings.
6577 # @date Ago 2015 Add the generation of the license tags
6580 # This software is provided to enhance knowledge and encourage progress
6581 # in the scientific community and are to be used only for research and
6582 # educational purposes. Any reproduction or use for commercial purpose
6583 # is prohibited without the prior express written permission.
6585 # This software is provided "as is" and without any express or implied
6586 # warranties, including, without limitation, the implied warranties of
6587 # merchantability and fitness for a particular purpose.
6589 # Copyright (c) 2013, Javier Fresno Bausela
6590 # All Rights Reserved.
6601 # Number of generated macros, we are using the A,B,...,Z,AA,..ZY,ZZ
6602 # names for the variables so the current limit is 26 + 26 * 26 = 702 macros.
6606 ##############################################################
6608 # Generate the letters
6611 itertools.product(
string.uppercase, repeat=2)]
6616 sys.stdout.write(
"// ")
6617 sys.stdout.write(text)
6618 sys.stdout.write(
"\n")
6620 # Print a multiline comment
6622 sys.stdout.write(
"/**\n * ")
6623 text = text.replace(
"\n",
"\n * ")
6624 sys.stdout.write(text)
6625 sys.stdout.write(
" \n */\n")
6627 # Print a line with a tab and the continue sysmbol
6629 sys.stdout.write(
"\t" + text +
" \\\n")
6631 # Prints a struct macro for the given number of variables
6634 comment(
"Macro for " + str(nvars) +
" struct elements" )
6637 sys.stdout.write(
"#define hit_comTypeStruct"+str(nvars))
6638 sys.stdout.write(
"(new_type, NATIVE_STRUCT")
6639 for i in range(nvars):
6641 sys.stdout.write(
") \\\n")
6642 sys.stdout.write(
"{ \\\n")
6648 sys.stdout.write(
"\tint blockcounts[" + str(nvars) +
"] = {(COUNT_A)")
6649 for i in range(1,nvars):
6650 sys.stdout.write(
", (COUNT_"+
letters[i]+
")")
6651 sys.stdout.write(
"}; \\\n")
6654 sys.stdout.write(
"\tMPI_Datatype types[" + str(nvars) +
"] = {(TYPE_A)")
6655 for i in range(1,nvars):
6656 sys.stdout.write(
", (TYPE_"+
letters[i]+
")")
6657 sys.stdout.write(
"}; \\\n")
6660 macro_line(
"MPI_Aint displs[" + str(nvars) +
"];")
6661 for i in range(nvars):
6662 macro_line(
"MPI_Get_address(&cmdline.NAME_" +
letters[i] +
", &displs["+ str(i) +
"]);")
6664 # Loop for fix displacements
6666 macro_line(
"for(ivarloop=" + str(nvars-1) +
"; ivarloop>=0; ivarloop--){")
6667 macro_line(
"\tdispls[ivarloop] -= displs[0];")
6671 macro_line(
"MPI_Type_create_struct(" + str(nvars) +
", blockcounts, displs, types, new_type);")
6674 sys.stdout.write(
"} \n")
6677 ##############################################################
6680 sys.stdout = open(
'hit_comTypeStruct.h',
'w')
6683 big_comment(
"Macros to create the MPI Struct Datatypes.\n"
6684 "The script to generate this file is included at the end.\n\n"
6692 # Inlude the file in the .
h
6693 big_comment(
"Python script to generate this file")
6694 print "#ifdef NOT_INCLUDE_THIS_BEACUSE_IS_THE_PYTHON_SCRIPT"
6695 f = open(sys.argv[0])
void print(HitBlockTile selection, const char *fileName)