23 static void get_processtypelist(
int processtype, MPI_Comm localcomm,
int **local_processtypelistlocal,
int *local_sizeproclist);
24 static void liaison_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist);
25 static void grmhd_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist);
26 static void grray_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist);
30 void liaison_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist)
32 get_processtypelist(
BINARYLIAISONTYPE,localcomm,processtypelistlocal_world,local_sizeproclist);
37 void grmhd_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist)
39 get_processtypelist(
BINARYGRMHDTYPE,localcomm,processtypelistlocal_world,local_sizeproclist);
44 void grray_init_mpi_processtypes(MPI_Comm localcomm,
int **processtypelistlocal_world,
int *local_sizeproclist)
46 get_processtypelist(
BINARYGRRAYTYPE,localcomm,processtypelistlocal_world,local_sizeproclist);
54 void get_processtypelist(
int processtype, MPI_Comm localcomm,
int **processtypelistlocal,
int *sizeproclistlocal)
60 MPI_Comm_size(localcomm, sizeproclistlocal);
61 stderrfprintf(
"processtype=%d sizeproclistlocal=%d\n",processtype,*sizeproclistlocal); fflush(stderr);
66 *processtypelistlocal=(
int*) malloc((*sizeproclistlocal)*
sizeof(int));
67 if(*processtypelistlocal==NULL){
68 stderrfprintf(
"Could not allocate processtypelistlocal\n");
71 stderrfprintf(
"After malloc of processtypelistlocal: %d %d\n",processtype,myid_world); fflush(stderr);
74 MPI_Allgather(&processtype,1,MPI_INT,*processtypelistlocal,1,MPI_INT,localcomm);
75 stderrfprintf(
"After MPI_Allgather: %d\n",myid_world); fflush(stderr);
88 #endif // end if any code is doing MPI
108 static void init_MPI_group_grmhd_grray_liaison(
109 int *processtypelistlocal_world,
int sizeproclistlocal_world,
110 MPI_Group *MPI_GROUP_WORLD,
111 MPI_Group *MPI_GROUP_GRMHD_LIAISON, MPI_Comm *MPI_COMM_GRMHD_LIAISON,
112 MPI_Group *MPI_GROUP_GRRAY_LIAISON, MPI_Comm *MPI_COMM_GRRAY_LIAISON);
120 void liaison_init_mpi_liaisonmode_globalset(
void)
122 void liaison_init_mpi_liaisonmode(
123 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
124 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
125 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
126 int **processtypelistlocal_grmhd,
int *sizeproclistlocal_grmhd,
127 int **processtypelistlocal_grray,
int *sizeproclistlocal_grray,
128 int **processtypelistlocal_liaison_from_grmhd,
int *sizeproclistlocal_liaison_from_grmhd,
129 int **processtypelistlocal_liaison_from_grray,
int *sizeproclistlocal_liaison_from_grray,
130 MPI_Group *MPI_GROUP_WORLD,
131 MPI_Group *MPI_GROUP_GRMHD_LIAISON, MPI_Comm *MPI_COMM_GRMHD_LIAISON,
132 MPI_Group *MPI_GROUP_GRRAY_LIAISON, MPI_Comm *MPI_COMM_GRRAY_LIAISON,
133 MPI_Group *MPI_GROUP_GRMHD, MPI_Comm *MPI_COMM_GRMHD,
134 MPI_Group *MPI_GROUP_GRRAY, MPI_Comm *MPI_COMM_GRRAY,
135 MPI_Group *MPI_GROUP_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LIAISON_FROM_GRMHD,
136 MPI_Group *MPI_GROUP_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LIAISON_FROM_GRRAY);
139 liaison_init_mpi_liaisonmode(
140 &processtypelist_world,&sizeproclist_world,
141 &processtypelist_grmhd_liaison,&sizeproclist_grmhd_liaison,
142 &processtypelist_grray_liaison,&sizeproclist_grray_liaison,
143 &processtypelist_grmhd,&sizeproclist_grmhd,
144 &processtypelist_grray,&sizeproclist_grray,
145 &processtypelist_liaison_from_grmhd,&sizeproclist_grmhd,
146 &processtypelist_liaison_from_grray,&sizeproclist_grray,
148 &MPI_GROUP_GRMHD_LIAISON, &MPI_COMM_GRMHD_LIAISON,
149 &MPI_GROUP_GRRAY_LIAISON, &MPI_COMM_GRRAY_LIAISON,
150 &MPI_GROUP_GRMHD, &MPI_COMM_GRMHD,
151 &MPI_GROUP_GRRAY, &MPI_COMM_GRRAY,
152 &MPI_GROUP_LIAISON_FROM_GRMHD, &MPI_COMM_LIAISON_FROM_GRMHD,
153 &MPI_GROUP_LIAISON_FROM_GRRAY, &MPI_COMM_LIAISON_FROM_GRRAY);
163 void grmhd_init_mpi_liaisonmode_globalset(
void)
165 void grmhd_init_mpi_liaisonmode(
166 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
167 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
168 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
169 int **processtypelistlocal_grmhd,
int *sizeproclistlocal_grmhd,
170 int **processtypelistlocal_liaison_from_grmhd,
int *sizeproclistlocal_liaison_from_grmhd,
171 MPI_Group *MPI_GROUP_WORLD,
172 MPI_Group *MPI_GROUP_GRMHD_LIAISON, MPI_Comm *MPI_COMM_GRMHD_LIAISON,
173 MPI_Group *MPI_GROUP_GRRAY_LIAISON, MPI_Comm *MPI_COMM_GRRAY_LIAISON,
174 MPI_Group *MPI_GROUP_GRMHD, MPI_Comm *MPI_COMM_GRMHD,
175 MPI_Group *MPI_GROUP_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LIAISON_FROM_GRMHD);
177 grmhd_init_mpi_liaisonmode(
178 &processtypelist_world,&sizeproclist_world,
179 &processtypelist_grmhd_liaison,&sizeproclist_grmhd_liaison,
180 &processtypelist_grray_liaison,&sizeproclist_grray_liaison,
181 &processtypelist_grmhd,&sizeproclist_grmhd,
182 &processtypelist_liaison_from_grmhd,&sizeproclist_grmhd,
184 &MPI_GROUP_GRMHD_LIAISON, &MPI_COMM_GRMHD_LIAISON,
185 &MPI_GROUP_GRRAY_LIAISON, &MPI_COMM_GRRAY_LIAISON,
186 &MPI_GROUP_GRMHD, &MPI_COMM_GRMHD,
187 &MPI_GROUP_LIAISON_FROM_GRMHD, &MPI_COMM_LIAISON_FROM_GRMHD);
199 void grray_init_mpi_liaisonmode_globalset(
void)
201 void grray_init_mpi_liaisonmode(
202 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
203 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
204 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
205 int **processtypelistlocal_grray,
int *sizeproclistlocal_grray,
206 int **processtypelistlocal_liaison_from_grray,
int *sizeproclistlocal_liaison_from_grray,
207 MPI_Group *MPI_GROUP_WORLD,
208 MPI_Group *MPI_GROUP_GRMHD_LIAISON, MPI_Comm *MPI_COMM_GRMHD_LIAISON,
209 MPI_Group *MPI_GROUP_GRRAY_LIAISON, MPI_Comm *MPI_COMM_GRRAY_LIAISON,
210 MPI_Group *MPI_GROUP_GRRAY, MPI_Comm *MPI_COMM_GRRAY,
211 MPI_Group *MPI_GROUP_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LIAISON_FROM_GRRAY);
213 grray_init_mpi_liaisonmode(
214 &processtypelist_world,&sizeproclist_world,
215 &processtypelist_grmhd_liaison,&sizeproclist_grmhd_liaison,
216 &processtypelist_grray_liaison,&sizeproclist_grray_liaison,
217 &processtypelist_grray,&sizeproclist_grray,
218 &processtypelist_liaison_from_grray,&sizeproclist_liaison_from_grray,
220 &MPI_GROUP_GRMHD_LIAISON, &MPI_COMM_GRMHD_LIAISON,
221 &MPI_GROUP_GRRAY_LIAISON, &MPI_COMM_GRRAY_LIAISON,
222 &MPI_GROUP_GRRAY, &MPI_COMM_GRRAY,
223 &MPI_GROUP_LIAISON_FROM_GRRAY, &MPI_COMM_LIAISON_FROM_GRRAY);
233 void liaison_init_mpi_liaisonmode(
234 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
235 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
236 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
237 int **processtypelistlocal_grmhd,
int *sizeproclistlocal_grmhd,
238 int **processtypelistlocal_grray,
int *sizeproclistlocal_grray,
239 int **processtypelistlocal_liaison_from_grmhd,
int *sizeproclistlocal_liaison_from_grmhd,
240 int **processtypelistlocal_liaison_from_grray,
int *sizeproclistlocal_liaison_from_grray,
241 MPI_Group *MPI_GROUP_LOCAL_WORLD,
242 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
243 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
244 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
245 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
246 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD,
247 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY)
249 void init_MPI_group_grmhd_grray_liaison_split(
250 int *processtypelistlocal_grmhd_liaison,
int sizeproclistlocal_grmhd_liaison,
251 int *processtypelistlocal_grray_liaison,
int sizeproclistlocal_grray_liaison,
252 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
253 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
254 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
255 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
256 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD,
257 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
263 liaison_init_mpi_processtypes(MPI_COMM_WORLD,processtypelistlocal_world,sizeproclistlocal_world);
266 init_MPI_group_grmhd_grray_liaison(
267 *processtypelistlocal_world,*sizeproclistlocal_world,
268 MPI_GROUP_LOCAL_WORLD,
269 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
270 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON);
274 liaison_init_mpi_processtypes(*MPI_COMM_LOCAL_GRMHD_LIAISON,processtypelistlocal_grmhd_liaison,sizeproclistlocal_grmhd_liaison);
276 liaison_init_mpi_processtypes(*MPI_COMM_LOCAL_GRRAY_LIAISON,processtypelistlocal_grray_liaison,sizeproclistlocal_grray_liaison);
279 init_MPI_group_grmhd_grray_liaison_split(
280 *processtypelistlocal_grmhd_liaison,*sizeproclistlocal_grmhd_liaison,
281 *processtypelistlocal_grray_liaison,*sizeproclistlocal_grray_liaison,
282 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
283 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON,
284 MPI_GROUP_LOCAL_GRMHD, MPI_COMM_LOCAL_GRMHD,
285 MPI_GROUP_LOCAL_GRRAY, MPI_COMM_LOCAL_GRRAY,
286 MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_COMM_LOCAL_LIAISON_FROM_GRMHD,
287 MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
290 if(*MPI_COMM_LOCAL_GRMHD!=MPI_COMM_NULL){
291 stderrfprintf(
"MPI_COMM_LOCAL_GRMHD still has members of LIAISON!\n"); fflush(stderr);
295 if(*MPI_COMM_LOCAL_GRRAY!=MPI_COMM_NULL){
296 stderrfprintf(
"MPI_COMM_LOCAL_GRRAY still has members of LIAISON!\n"); fflush(stderr);
302 liaison_init_mpi_processtypes(*MPI_COMM_LOCAL_LIAISON_FROM_GRMHD,processtypelistlocal_liaison_from_grmhd,sizeproclistlocal_liaison_from_grmhd);
305 liaison_init_mpi_processtypes(*MPI_COMM_LOCAL_LIAISON_FROM_GRRAY,processtypelistlocal_liaison_from_grray,sizeproclistlocal_liaison_from_grray);
319 void grmhd_init_mpi_liaisonmode(
320 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
321 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
322 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
323 int **processtypelistlocal_grmhd,
int *sizeproclistlocal_grmhd,
324 int **processtypelistlocal_liaison_from_grmhd,
int *sizeproclistlocal_liaison_from_grmhd,
325 MPI_Group *MPI_GROUP_LOCAL_WORLD,
326 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
327 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
328 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
329 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD)
331 void init_MPI_group_grmhd_liaison_split(
332 int *processtypelistlocal_grmhd_liaison,
int sizeproclistlocal_grmhd_liaison,
333 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
334 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
335 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD);
338 stderrfprintf(
"USEMPILIAISON=%d\n",USEMPILIAISON);
345 grmhd_init_mpi_processtypes(MPI_COMM_WORLD,processtypelistlocal_world,sizeproclistlocal_world);
349 init_MPI_group_grmhd_grray_liaison(
350 *processtypelistlocal_world,*sizeproclistlocal_world,
351 MPI_GROUP_LOCAL_WORLD,
352 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
353 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON);
356 if(*MPI_COMM_LOCAL_GRRAY_LIAISON!=MPI_COMM_NULL){
357 stderrfprintf(
"GRRAY_LIAISON still has members of GRMHD!\n"); fflush(stderr);
363 grmhd_init_mpi_processtypes(*MPI_COMM_LOCAL_GRMHD_LIAISON,processtypelistlocal_grmhd_liaison,sizeproclistlocal_grmhd_liaison);
366 init_MPI_group_grmhd_liaison_split(
367 *processtypelistlocal_grmhd_liaison,*sizeproclistlocal_grmhd_liaison,
368 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
369 MPI_GROUP_LOCAL_GRMHD, MPI_COMM_LOCAL_GRMHD,
370 MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_COMM_LOCAL_LIAISON_FROM_GRMHD);
373 if(*MPI_COMM_LOCAL_LIAISON_FROM_GRMHD!=MPI_COMM_NULL){
374 stderrfprintf(
"MPI_COMM_LOCAL_LIAISON_FROM_GRMHD still has members of GRMHD!\n"); fflush(stderr);
380 grmhd_init_mpi_processtypes(*MPI_COMM_LOCAL_GRMHD,processtypelistlocal_grmhd,sizeproclistlocal_grmhd);
392 void grray_init_mpi_liaisonmode(
393 int **processtypelistlocal_world,
int *sizeproclistlocal_world,
394 int **processtypelistlocal_grmhd_liaison,
int *sizeproclistlocal_grmhd_liaison,
395 int **processtypelistlocal_grray_liaison,
int *sizeproclistlocal_grray_liaison,
396 int **processtypelistlocal_grray,
int *sizeproclistlocal_grray,
397 int **processtypelistlocal_liaison_from_grray,
int *sizeproclistlocal_liaison_from_grray,
398 MPI_Group *MPI_GROUP_LOCAL_WORLD,
399 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
400 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
401 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
402 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY)
404 void init_MPI_group_grray_liaison_split(
405 int *processtypelistlocal_grray_liaison,
int sizeproclistlocal_grray_liaison,
406 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
407 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
408 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
414 grray_init_mpi_processtypes(MPI_COMM_WORLD,processtypelistlocal_world,sizeproclistlocal_world);
418 init_MPI_group_grmhd_grray_liaison(
419 *processtypelistlocal_world,*sizeproclistlocal_world,
420 MPI_GROUP_LOCAL_WORLD,
421 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
422 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON);
425 if(*MPI_COMM_LOCAL_GRMHD_LIAISON!=MPI_COMM_NULL){
426 stderrfprintf(
"GRMHD_LIAISON still has members of GRRAY!\n"); fflush(stderr);
432 grray_init_mpi_processtypes(*MPI_COMM_LOCAL_GRRAY_LIAISON,processtypelistlocal_grray_liaison,sizeproclistlocal_grray_liaison);
435 init_MPI_group_grray_liaison_split(
436 *processtypelistlocal_grray_liaison,*sizeproclistlocal_grray_liaison,
437 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON,
438 MPI_GROUP_LOCAL_GRRAY, MPI_COMM_LOCAL_GRRAY,
439 MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
442 if(*MPI_COMM_LOCAL_LIAISON_FROM_GRRAY!=MPI_COMM_NULL){
443 stderrfprintf(
"MPI_COMM_LOCAL_LIAISON_FROM_GRRAY still has members of GRRAY!\n"); fflush(stderr);
449 grray_init_mpi_processtypes(*MPI_COMM_LOCAL_GRRAY,processtypelistlocal_grray,sizeproclistlocal_grray);
471 void init_MPI_group_grmhd_grray_liaison(
472 int *processtypelistlocal,
int sizeproclistlocal,
473 MPI_Group *MPI_GROUP_LOCAL_WORLD,
474 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
475 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON)
485 stderrfprintf(
"Problem allocating memory for ranks with truenumprocs=%d\n",
truenumprocs); fflush(stderr);
495 MPI_Comm_group(MPI_COMM_WORLD, MPI_GROUP_LOCAL_WORLD);
507 for(i=0;i<sizeproclistlocal;i++){
513 for(i=0;i<sizeproclistlocal;i++){
524 MPI_Group_incl(*MPI_GROUP_LOCAL_WORLD, numranks, ranks, MPI_GROUP_LOCAL_GRMHD_LIAISON);
525 MPI_Comm_create(MPI_COMM_WORLD, *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON);
532 for(i=0;i<sizeproclistlocal;i++){
538 for(i=0;i<sizeproclistlocal;i++){
547 MPI_Group_incl(*MPI_GROUP_LOCAL_WORLD, numranks, ranks, MPI_GROUP_LOCAL_GRRAY_LIAISON);
548 MPI_Comm_create(MPI_COMM_WORLD, *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON);
556 #endif // end if USEMPILIAISON
571 void init_MPI_group_grmhd_grray_liaison_split(
572 int *processtypelistlocal_grmhd_liaison,
int sizeproclistlocal_grmhd_liaison,
573 int *processtypelistlocal_grray_liaison,
int sizeproclistlocal_grray_liaison,
574 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
575 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
576 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
577 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
578 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD,
579 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY)
582 void init_MPI_group_grmhd_liaison_split(
583 int *processtypelistlocal_grmhd_liaison,
int sizeproclistlocal_grmhd_liaison,
584 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
585 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
586 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD);
587 void init_MPI_group_grray_liaison_split(
588 int *processtypelistlocal_grray_liaison,
int sizeproclistlocal_grray_liaison,
589 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
590 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
591 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
597 init_MPI_group_grmhd_liaison_split(processtypelistlocal_grmhd_liaison,sizeproclistlocal_grmhd_liaison,
598 MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_COMM_LOCAL_GRMHD_LIAISON,
599 MPI_GROUP_LOCAL_GRMHD, MPI_COMM_LOCAL_GRMHD,
600 MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_COMM_LOCAL_LIAISON_FROM_GRMHD);
604 init_MPI_group_grray_liaison_split(processtypelistlocal_grray_liaison,sizeproclistlocal_grray_liaison,
605 MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_COMM_LOCAL_GRRAY_LIAISON,
606 MPI_GROUP_LOCAL_GRRAY, MPI_COMM_LOCAL_GRRAY,
607 MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
620 void init_MPI_group_grmhd_liaison_split(
621 int *processtypelistlocal,
int sizeproclistlocal,
622 MPI_Group *MPI_GROUP_LOCAL_GRMHD_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRMHD_LIAISON,
623 MPI_Group *MPI_GROUP_LOCAL_GRMHD, MPI_Comm *MPI_COMM_LOCAL_GRMHD,
624 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRMHD)
634 stderrfprintf(
"Problem allocating memory for ranks with truenumprocs=%d\n",truenumprocs); fflush(stderr);
645 for(i=0,j=0;i<sizeproclistlocal;i++){
654 MPI_Group_incl(*MPI_GROUP_LOCAL_GRMHD_LIAISON, numranks, ranks, MPI_GROUP_LOCAL_GRMHD);
655 MPI_Comm_create(*MPI_COMM_LOCAL_GRMHD_LIAISON, *MPI_GROUP_LOCAL_GRMHD, MPI_COMM_LOCAL_GRMHD);
661 for(i=0,j=0;i<sizeproclistlocal;i++){
670 MPI_Group_incl(*MPI_GROUP_LOCAL_GRMHD_LIAISON, numranks, ranks, MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD);
671 MPI_Comm_create(*MPI_COMM_LOCAL_GRMHD_LIAISON, *MPI_GROUP_LOCAL_LIAISON_FROM_GRMHD, MPI_COMM_LOCAL_LIAISON_FROM_GRMHD);
684 void init_MPI_group_grray_liaison_split(
685 int *processtypelistlocal,
int sizeproclistlocal,
686 MPI_Group *MPI_GROUP_LOCAL_GRRAY_LIAISON, MPI_Comm *MPI_COMM_LOCAL_GRRAY_LIAISON,
687 MPI_Group *MPI_GROUP_LOCAL_GRRAY, MPI_Comm *MPI_COMM_LOCAL_GRRAY,
688 MPI_Group *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_Comm *MPI_COMM_LOCAL_LIAISON_FROM_GRRAY)
698 stderrfprintf(
"Problem allocating memory for ranks with truenumprocs=%d\n",truenumprocs); fflush(stderr);
710 for(i=0,j=0;i<sizeproclistlocal;i++){
719 MPI_Group_incl(*MPI_GROUP_LOCAL_GRRAY_LIAISON, numranks, ranks, MPI_GROUP_LOCAL_GRRAY);
720 MPI_Comm_create(*MPI_COMM_LOCAL_GRRAY_LIAISON, *MPI_GROUP_LOCAL_GRRAY, MPI_COMM_LOCAL_GRRAY);
726 for(i=0,j=0;i<sizeproclistlocal;i++){
735 MPI_Group_incl(*MPI_GROUP_LOCAL_GRRAY_LIAISON, numranks, ranks, MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY);
736 MPI_Comm_create(*MPI_COMM_LOCAL_GRRAY_LIAISON, *MPI_GROUP_LOCAL_LIAISON_FROM_GRRAY, MPI_COMM_LOCAL_LIAISON_FROM_GRRAY);
761 int final_myexit(
void)
765 MPI_Abort(MPI_COMM_WORLD, 1);
768 stderrfprintf(
"END\n");
802 int final_myexit(
void)
807 MPI_Barrier(MPI_COMM_WORLD);
811 stderrfprintf(
"END\n");
825 #if(DOINGLIAISONTYPECODE)
829 void liaison_init_mpi_liaisonmode_globalset(
void)
837 MPI_Comm_group(MPI_COMM_WORLD, &MPI_GROUP_WORLD);
838 MPI_COMM_LIAISON_FROM_GRMHD=MPI_COMM_WORLD;
839 MPI_GROUP_LIAISON_FROM_GRMHD=MPI_GROUP_WORLD;
841 liaison_init_mpi_processtypes(MPI_COMM_WORLD, &processtypelist_world, &sizeproclist_world);
842 liaison_init_mpi_processtypes(MPI_COMM_LIAISON_FROM_GRMHD, &processtypelist_liaison_from_grmhd, &sizeproclist_liaison_from_grmhd);
845 sizeproclist_world=sizeproclist_liaison_from_grmhd=1;
846 processtypelist_world=(
int*)malloc(
sizeof(
int)*1);
847 processtypelist_liaison_from_grmhd=(
int*)malloc(
sizeof(
int)*1);
848 if(processtypelist_world==NULL || processtypelist_liaison_from_grmhd==NULL){
849 stderrfprintf(
"Couldn't allocate memory for processtypelist_world,liaison_from_grmhd\n");
857 sizeproclist_grmhd=sizeproclist_world;
859 #if(USEMPILIAISON||USEMPIGRMHD)
860 MPI_GROUP_GRMHD=MPI_GROUP_LIAISON_FROM_GRMHD;
861 MPI_COMM_GRMHD=MPI_COMM_LIAISON_FROM_GRMHD;
870 #endif // end if liaison type code
874 #if(DOINGGRMHDTYPECODE)
878 void grmhd_init_mpi_liaisonmode_globalset(
void)
886 stderrfprintf(
"MPICOMM1\n");
887 MPI_Comm_group(MPI_COMM_WORLD, &MPI_GROUP_WORLD);
888 stderrfprintf(
"MPICOMM2\n");
889 MPI_COMM_GRMHD=MPI_COMM_WORLD;
890 stderrfprintf(
"MPICOMM3\n");
891 MPI_GROUP_GRMHD=MPI_GROUP_WORLD;
893 stderrfprintf(
"MPICOMM4\n");
894 grmhd_init_mpi_processtypes(MPI_COMM_WORLD, &processtypelist_world, &sizeproclist_world);
895 stderrfprintf(
"MPICOMM5\n");
896 grmhd_init_mpi_processtypes(MPI_COMM_GRMHD, &processtypelist_grmhd, &sizeproclist_grmhd);
897 stderrfprintf(
"MPICOMM6\n");
900 sizeproclist_world=sizeproclist_grmhd=1;
901 processtypelist_world=(
int*)malloc(
sizeof(
int)*1);
902 processtypelist_grmhd=(
int*)malloc(
sizeof(
int)*1);
903 if(processtypelist_world==NULL || processtypelist_grmhd==NULL){
904 stderrfprintf(
"Couldn't allocate memory for processtypelist_world,grmhd\n");
914 #endif // end if grmhd type code
918 #if(DOINGGRRAYTYPECODE)
922 void grray_init_mpi_liaisonmode_globalset(
void)
930 MPI_Comm_group(MPI_COMM_WORLD, &MPI_GROUP_WORLD);
931 MPI_COMM_GRRAY=MPI_COMM_WORLD;
932 MPI_GROUP_GRRAY=MPI_GROUP_WORLD;
934 grray_init_mpi_processtypes(MPI_COMM_WORLD, &processtypelist_world, &sizeproclist_world);
935 grray_init_mpi_processtypes(MPI_COMM_GRRAY, &processtypelist_grray, &sizeproclist_grray);
938 sizeproclist_world=sizeproclist_grray=1;
939 processtypelist_world=(
int*)malloc(
sizeof(
int)*1);
940 processtypelist_grray=(
int*)malloc(
sizeof(
int)*1);
941 if(processtypelist_world==NULL || processtypelist_grray==NULL){
942 stderrfprintf(
"Couldn't allocate memory for processtypelist_world,grray\n");
953 #endif // end if grray type code
956 #endif // end if not doing any liaison mode