20 int *stack_import,
int *nod_import,
21 int *stack_export,
int *nod_export,
int *x,
24 int *stack_import,
int *nod_import,
25 int *stack_export,
int *nod_export,
double *x,
28 int *nod_import,
int *stack_export,
29 int *nod_export,
int *x,
int *y,
32 int *stack_import,
int *nod_import,
33 int *stack_export,
int *nod_export,
38 int *stack_export,
int *x,
int *y,
41 int *stack_export,
int *x,
int *y,
44 int *stack_import,
int *stack_export,
54 int *send_elem_num, *send_elem, *recv_elem_num, *recv_elem, *recv_parent_num,
55 *count_elem, *send_parent, *send_parent_num, *count_parent;
56 int *flag_hit, *flag_elem_hit;
59 int *tmp_int_send, *tmp_int_recv, *tmp2_int_send, *tmp2_int_recv;
61 int *tmp_stack_send, *tmp_stack_recv, *tmp_neibpe, tmp_int, tmp_sum;
62 int *send_ptr_num, *send_ptr_parent_num, *recv_ptr_num, *recv_ptr_parent_num;
63 int *global_index, *global_index_hit;
64 int *send_node_num, *recv_node_num, *send_node, *recv_node;
65 int *tmp_node, *count_node, *tmp_send, *tmp_recv;
66 int *import_index, *export_index, *count_index, *export_node, *import_node;
67 int import_n_neighbor_pe, export_n_neighbor_pe, *import_neighbor_pe,
71 int *tmp_int_nodeid, *tmp2_int_nodeid;
72 double *tmp_node_d, *recv_node_d, *tmp2_node_d, *recv2_node_d, *tmp_send_d,
73 *tmp_recv_d, *tmp2_send_d, *tmp2_recv_d;
74 int *tmp_node_i, *recv_node_i, *tmp2_node_i, *recv2_node_i;
76 FILE *test_fp, *test_fp2;
78 int min_pe, tmp_pe, local_nid;
79 int nvtxs, tmp_nvtxs, tmp_peid, tmp_lid;
80 int *new_elem, *global_recv_elem_num, *global_recv_parent_num;
81 int *send_adapt_parent, *recv_adapt_parent, *send_tmp, *recv_tmp,
82 *send_tmp_num, *recv_tmp_num, *send_adapt_ptype, *count_num;
83 int t_elem, l_child, new_l_child;
84 int *inter_elem, *send_adapt_child, *recv_adapt_child, *send_adapt_child_num,
85 *recv_adapt_child_num, *send_index_child, *recv_index_child;
86 int *send2_adapt_child_num, *recv2_adapt_child_num;
87 int *send_inter, *recv_inter, *send_inter_num, *recv_inter_num,
88 *global_recv_inter_num;
89 int *send_parent_inter, *recv_parent_inter, *send_parent_inter_num,
90 *recv_parent_inter_num, *global_recv_parent_inter_num;
91 int init_flag, new_elemid;
92 int *tmp_elem_grp, num_grp_item, *tmp_surf_grp, *tmp_surf_id, *tmp2_surf_id;
97 int *new2old, *count_elem_index, *new_tmp, *new_tmp2, *old2new;
99 const size_t name_buf_size = 128;
106 snprintf(test_file,
sizeof(test_file),
"test3.%d", mynode);
107 test_fp = fopen(test_file,
"w");
108 if (test_fp ==
NULL) {
109 fprintf(stderr,
"Cannot open test_file\n");
145 snprintf(test_file,
sizeof(test_file),
"test5.%d", mynode);
146 test_fp2 = fopen(test_file,
"w");
152 new_part = (
int *)calloc(
mesh->
n_node,
sizeof(
int));
159 result->
part = new_part;
160 new_elem = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
162 inter_elem = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
179 for (i = 0; i <
mesh->
n_elem; i++) new_elem[i] = -1;
187 send_elem_num = (
int *)calloc(pesize + 1,
sizeof(
int));
188 send_inter_num = (
int *)calloc(pesize + 1,
sizeof(
int));
189 recv_elem_num = (
int *)calloc(pesize + 1,
sizeof(
int));
190 recv_inter_num = (
int *)calloc(pesize + 1,
sizeof(
int));
191 if ((send_elem_num ==
NULL) || (send_inter_num ==
NULL) ||
192 (recv_elem_num ==
NULL) || (recv_inter_num ==
NULL))
194 flag_hit = (
int *)calloc(pesize,
sizeof(
int));
195 flag_elem_hit = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
196 if ((flag_hit ==
NULL) || (flag_elem_hit ==
NULL))
199 for (i = 0; i < pesize + 1; i++) {
200 send_elem_num[i] = 0;
201 send_inter_num[i] = 0;
202 recv_elem_num[i] = 0;
203 recv_inter_num[i] = 0;
207 for (j = 0; j < pesize; j++) flag_hit[j] = 0;
221 send_inter_num[init_flag + 1]++;
229 for (i = 1; i < pesize + 1; i++) {
230 send_elem_num[i] = send_elem_num[i - 1] + send_elem_num[i];
231 send_inter_num[i] = send_inter_num[i - 1] + send_inter_num[i];
250 global_recv_elem_num = (
int *)calloc(pesize * (pesize + 1),
sizeof(int));
251 global_recv_inter_num = (
int *)calloc(pesize * (pesize + 1),
sizeof(int));
252 if ((global_recv_elem_num ==
NULL) || (global_recv_inter_num ==
NULL))
262 if (send_elem_num[pesize] > 0) {
263 send_elem = (
int *)calloc(send_elem_num[pesize],
sizeof(
int));
264 count_elem = (
int *)calloc(pesize,
sizeof(
int));
265 count_num = (
int *)calloc(pesize,
sizeof(
int));
266 send_inter = (
int *)calloc(send_elem_num[pesize],
sizeof(
int));
268 if ((send_elem ==
NULL) || (count_elem ==
NULL))
270 for (i = 0; i < pesize; i++) {
276 for (j = 0; j < pesize; j++) flag_hit[j] = 0;
292 new_elemid = init_flag * t_elem +
293 global_recv_inter_num[init_flag * (pesize + 1) + mynode] +
294 count_num[init_flag];
295 new_elem[i] = new_elemid;
299 count_num[init_flag]++;
302 for (i = 0; i < send_elem_num[pesize]; i++)
303 send_inter[i] = new_elem[send_elem[i]];
307 send_parent_num = (
int *)calloc(pesize + 1,
sizeof(
int));
308 send_parent_inter_num = (
int *)calloc(pesize + 1,
sizeof(
int));
309 recv_parent_num = (
int *)calloc(pesize + 1,
sizeof(
int));
310 recv_parent_inter_num = (
int *)calloc(pesize + 1,
sizeof(
int));
312 for (i = 0; i < pesize + 1; i++) {
313 send_parent_num[i] = 0;
314 send_parent_inter_num[i] = 0;
316 for (i = 0; i <
mesh->
n_elem; i++) flag_elem_hit[i] = 0;
317 for (j = 0; j < pesize; j++) {
318 send_parent_num[j + 1] = 0;
319 for (k = send_elem_num[j]; k < send_elem_num[j + 1]; k++) {
320 id_elem = send_elem[k];
325 send_parent_num[j + 1]++;
331 for (i = 1; i < pesize + 1; i++) {
332 send_parent_num[i] = send_parent_num[i - 1] + send_parent_num[i];
335 recv_parent_num = (
int *)calloc(pesize + 1,
sizeof(
int));
339 global_recv_parent_num = (
int *)calloc(pesize * (pesize + 1),
sizeof(int));
340 if (global_recv_parent_num ==
NULL)
345 send_parent = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
346 send_parent_inter = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
347 count_parent = (
int *)calloc(pesize,
sizeof(
int));
349 if ((send_parent ==
NULL) || (count_parent ==
NULL))
352 for (i = 0; i <
mesh->
n_elem; i++) flag_elem_hit[i] = 0;
353 for (j = 0; j < pesize; j++) {
355 for (k = send_elem_num[j]; k < send_elem_num[j + 1]; k++) {
356 id_elem = send_elem[k];
361 send_parent[send_parent_num[j] + count_parent[j]] =
370 j * t_elem + global_recv_inter_num[j * (pesize + 1) + pesize] +
371 global_recv_parent_num[j * (pesize + 1) + mynode] +
378 for (i = 0; i < send_parent_num[pesize]; i++) {
379 send_parent_inter[i] = new_elem[send_parent[i]];
380 if (send_parent_inter[i] < 0)
385 send_tmp_num = (
int *)calloc(pesize + 1,
sizeof(
int));
386 recv_tmp_num = (
int *)calloc(pesize + 1,
sizeof(
int));
387 if ((send_tmp_num ==
NULL) || (recv_tmp_num ==
NULL))
389 if (send_elem_num[pesize] > 0) {
390 send_adapt_parent = (
int *)calloc(send_elem_num[pesize],
sizeof(
int));
391 send_adapt_ptype = (
int *)calloc(send_elem_num[pesize],
sizeof(
int));
392 if ((send_adapt_parent ==
NULL) || (send_adapt_ptype ==
NULL))
396 for (i = 0; i < pesize + 1; i++) send_tmp_num[i] = 0;
398 for (i = 0; i < send_elem_num[pesize]; i++) {
400 send_adapt_parent[i] = -1;
405 send_adapt_parent[i] =
409 fprintf(stderr,
"There is something wrong with parent information\n");
410 fprintf(stderr,
"i=%d, send_elem[i]=%d parent is %d PE=%d\n", i,
416 for (i = 1; i < pesize + 1; i++) {
417 send_tmp_num[i] = send_tmp_num[i - 1] + send_tmp_num[i];
423 for (i = 0; i < pesize; i++) count_num[i] = 0;
424 if (send_tmp_num[pesize] > 0) {
425 send_tmp = (
int *)calloc(send_tmp_num[pesize],
sizeof(
int));
428 if (recv_tmp_num[pesize] > 0) {
429 recv_tmp = (
int *)calloc(recv_tmp_num[pesize],
sizeof(
int));
432 for (i = 0; i < send_elem_num[pesize]; i++) {
434 send_adapt_parent[i] = -1;
443 if (send_tmp_num[pesize] > 0)
445 recv_tmp_num, send_tmp_num, send_tmp, recv_tmp,
448 for (i = 0; i < recv_tmp_num[pesize]; i++) {
449 if (new_elem[recv_tmp[i]] == -1)
452 recv_tmp[i] = new_elem[recv_tmp[i]];
454 if (send_tmp_num[pesize] > 0)
456 send_tmp_num, recv_tmp_num, recv_tmp, send_tmp,
459 for (i = 0; i < pesize; i++) count_num[i] = 0;
460 for (i = 0; i < send_elem_num[pesize]; i++) {
462 send_adapt_parent[i] = -1;
463 send_adapt_ptype[i] = -1;
465 send_adapt_parent[i] =
471 }
else if (new_elem[inter_elem[
mesh->
adapt_parent[send_elem[i] * 2] - 1]] !=
473 send_adapt_parent[i] =
476 }
else if (new_elem[inter_elem[
mesh->
adapt_parent[send_elem[i] * 2] - 1]] ==
480 if (recv_elem_num[pesize] > 0) {
481 tmp_int_recv = (
int *)calloc(recv_elem_num[pesize],
sizeof(
int));
484 recv_elem_num, send_elem_num, send_adapt_parent,
497 new_mesh->
files[i] = (
char *)calloc(name_buf_size,
sizeof(
char));
510 new_mesh->
n_elem = recv_elem_num[pesize] + recv_parent_num[pesize];
520 for (i = 0; i < recv_elem_num[pesize]; i++) {
521 if (tmp_int_recv[i] == -1) {
530 recv_elem_num, send_elem_num, send_adapt_ptype,
532 for (i = 0; i < recv_elem_num[pesize]; i++)
534 if (send_tmp_num[pesize] > 0) free(send_tmp);
535 if (recv_tmp_num[pesize] > 0) free(recv_tmp);
536 if (send_elem_num[pesize] > 0) {
537 free(send_adapt_parent);
538 free(send_adapt_ptype);
540 if (send_parent_num[pesize] > 0) {
541 send_adapt_parent = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
542 send_adapt_ptype = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
543 if ((send_adapt_parent ==
NULL) || (send_adapt_ptype ==
NULL))
547 for (i = 0; i < pesize + 1; i++) send_tmp_num[i] = 0;
549 for (i = 0; i < send_parent_num[pesize]; i++) {
551 send_adapt_parent[i] = -1;
554 else if (new_elem[inter_elem[
mesh->
adapt_parent[send_parent[i] * 2] - 1]] !=
556 send_adapt_parent[i] =
558 else if (new_elem[inter_elem[
mesh->
adapt_parent[send_parent[i] * 2] - 1]] ==
562 for (i = 1; i < pesize + 1; i++) {
563 send_tmp_num[i] = send_tmp_num[i - 1] + send_tmp_num[i];
569 for (i = 0; i < pesize; i++) count_num[i] = 0;
570 if (send_tmp_num[pesize] > 0) {
571 send_tmp = (
int *)calloc(send_tmp_num[pesize],
sizeof(
int));
574 if (recv_tmp_num[pesize] > 0) {
575 recv_tmp = (
int *)calloc(recv_tmp_num[pesize],
sizeof(
int));
578 for (i = 0; i < send_parent_num[pesize]; i++) {
580 send_adapt_parent[i] = -1;
588 if (send_tmp_num[pesize] > 0)
590 recv_tmp_num, send_tmp_num, send_tmp, recv_tmp,
592 for (i = 0; i < recv_tmp_num[pesize]; i++) {
593 if (new_elem[recv_tmp[i]] == -1)
596 recv_tmp[i] = new_elem[recv_tmp[i]];
598 if (send_tmp_num[pesize] > 0)
600 send_tmp_num, recv_tmp_num, recv_tmp, send_tmp,
603 for (i = 0; i < pesize; i++) count_num[i] = 0;
604 for (i = 0; i < send_parent_num[pesize]; i++) {
606 send_adapt_parent[i] = -1;
607 send_adapt_ptype[i] = -1;
609 send_adapt_parent[i] =
617 send_adapt_parent[i] =
625 tmp2_int_recv = (
int *)calloc(recv_parent_num[pesize],
sizeof(
int));
628 recv_parent_num, send_parent_num, send_adapt_parent,
631 for (i = 0; i < recv_parent_num[pesize]; i++) {
632 if (tmp2_int_recv[i] == -1) {
637 (tmp2_int_recv[i] % t_elem) + 1;
639 tmp2_int_recv[i] / t_elem;
643 recv_parent_num, send_parent_num, send_adapt_ptype,
645 for (i = 0; i < recv_parent_num[pesize]; i++)
647 if (send_tmp_num[pesize] > 0) free(send_tmp);
648 if (recv_tmp_num[pesize] > 0) free(recv_tmp);
649 if (send_parent_num[pesize] > 0) {
650 free(send_adapt_parent);
651 free(send_adapt_ptype);
656 send_adapt_child_num = (
int *)calloc(pesize + 1,
sizeof(
int));
657 for (j = 0; j < pesize + 1; j++) send_adapt_child_num[j] = 0;
658 for (j = 0; j < pesize; j++) {
659 for (i = send_elem_num[j]; i < send_elem_num[j + 1]; i++)
660 send_adapt_child_num[j + 1] +=
664 for (i = 1; i < pesize + 1; i++) {
665 send_adapt_child_num[i] =
666 send_adapt_child_num[i - 1] + send_adapt_child_num[i];
669 send_adapt_child = (
int *)calloc(send_adapt_child_num[pesize],
sizeof(
int));
670 send_index_child = (
int *)calloc(send_elem_num[pesize],
sizeof(
int));
671 if ((send_adapt_child ==
NULL) || (send_index_child ==
NULL))
674 for (i = 0; i < pesize + 1; i++) send_tmp_num[i] = 0;
676 for (i = 0; i < send_elem_num[pesize]; i++) {
678 j < mesh->adapt_children_index[send_elem[i] + 1]; j++) {
681 send_adapt_child[tmp_int] = -1;
685 send_adapt_child[tmp_int] =
689 fprintf(stderr,
"There is something wrong with child information\n");
690 fprintf(stderr,
"i=%d, send_elem[i]=%d child is %d PE=%d\n", i,
697 for (i = 1; i < pesize + 1; i++) {
698 send_tmp_num[i] = send_tmp_num[i - 1] + send_tmp_num[i];
703 for (i = 0; i < pesize; i++) count_num[i] = 0;
704 if (send_tmp_num[pesize] > 0) {
705 send_tmp = (
int *)calloc(send_tmp_num[pesize],
sizeof(
int));
708 if (recv_tmp_num[pesize] > 0) {
709 recv_tmp = (
int *)calloc(recv_tmp_num[pesize],
sizeof(
int));
713 for (i = 0; i < send_elem_num[pesize]; i++) {
715 j < mesh->adapt_children_index[send_elem[i] + 1]; j++) {
718 send_adapt_child[tmp_int] = -1;
727 if (send_tmp_num[pesize] > 0)
729 recv_tmp_num, send_tmp_num, send_tmp, recv_tmp,
731 for (i = 0; i < recv_tmp_num[pesize]; i++) {
732 if (new_elem[recv_tmp[i]] == -1)
735 recv_tmp[i] = new_elem[recv_tmp[i]];
737 if (send_tmp_num[pesize] > 0)
739 send_tmp_num, recv_tmp_num, recv_tmp, send_tmp,
742 for (i = 0; i < pesize; i++) count_num[i] = 0;
744 for (i = 0; i < send_elem_num[pesize]; i++) {
748 j < mesh->adapt_children_index[send_elem[i] + 1]; j++) {
751 send_adapt_child[tmp_int] = -1;
753 send_adapt_child[tmp_int] =
759 send_adapt_child[tmp_int] =
763 fprintf(stderr,
"There is something wrong with child information\n");
764 fprintf(stderr,
"i=%d, send_elem[i]=%d child is %d PE=%d\n", i,
772 recv_adapt_child_num = (
int *)calloc(pesize + 1,
sizeof(
int));
773 if (recv_adapt_child_num ==
NULL)
778 recv_adapt_child = (
int *)calloc(recv_adapt_child_num[pesize],
sizeof(
int));
781 send_adapt_child_num[pesize], recv_adapt_child_num[pesize], pesize,
782 recv_adapt_child_num, send_adapt_child_num, send_adapt_child,
786 recv_elem_num, send_elem_num, send_index_child,
791 send2_adapt_child_num = (
int *)calloc(pesize + 1,
sizeof(
int));
792 for (j = 0; j < pesize + 1; j++) send2_adapt_child_num[j] = 0;
793 for (j = 0; j < pesize; j++) {
794 for (i = send_parent_num[j]; i < send_parent_num[j + 1]; i++)
795 send2_adapt_child_num[j + 1] +=
799 for (i = 1; i < pesize + 1; i++) {
800 send2_adapt_child_num[i] =
801 send2_adapt_child_num[i - 1] + send2_adapt_child_num[i];
803 recv2_adapt_child_num = (
int *)calloc(pesize + 1,
sizeof(
int));
804 if (recv2_adapt_child_num ==
NULL)
810 2 * (recv_adapt_child_num[pesize] + recv2_adapt_child_num[pesize]),
822 for (i = 0; i < recv_adapt_child_num[pesize]; i++) {
823 if (recv_adapt_child[i] == -1) {
832 for (i = 0; i < recv_elem_num[pesize]; i++)
835 if (send_tmp_num[pesize] > 0) free(send_tmp);
836 if (recv_tmp_num[pesize] > 0) free(recv_tmp);
837 if (send_elem_num[pesize] > 0) {
838 free(send_adapt_child);
839 free(recv_adapt_child);
840 free(send_index_child);
843 send_adapt_child = (
int *)calloc(send2_adapt_child_num[pesize],
sizeof(
int));
844 send_index_child = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
845 if ((send_adapt_child ==
NULL) || (send_index_child ==
NULL))
848 for (i = 0; i < pesize + 1; i++) send_tmp_num[i] = 0;
850 for (i = 0; i < send_parent_num[pesize]; i++) {
852 j < mesh->adapt_children_index[send_parent[i] + 1]; j++) {
855 send_adapt_child[tmp_int] = -1;
859 send_adapt_child[tmp_int] =
863 fprintf(stderr,
"There is something wrong with child information\n");
864 fprintf(stderr,
"in PE %d i=%d, send_parent[i]=%d child is %d PE=%d\n",
871 for (i = 1; i < pesize + 1; i++) {
872 send_tmp_num[i] = send_tmp_num[i - 1] + send_tmp_num[i];
877 for (i = 0; i < pesize; i++) count_num[i] = 0;
878 if (send_tmp_num[pesize] > 0) {
879 send_tmp = (
int *)calloc(send_tmp_num[pesize],
sizeof(
int));
882 if (recv_tmp_num[pesize] > 0) {
883 recv_tmp = (
int *)calloc(recv_tmp_num[pesize],
sizeof(
int));
887 for (i = 0; i < send_parent_num[pesize]; i++) {
889 j < mesh->adapt_children_index[send_parent[i] + 1]; j++) {
892 send_adapt_child[tmp_int] = -1;
901 if (send_tmp_num[pesize] > 0)
903 recv_tmp_num, send_tmp_num, send_tmp, recv_tmp,
905 for (i = 0; i < recv_tmp_num[pesize]; i++) {
906 if (new_elem[recv_tmp[i]] == -1)
909 recv_tmp[i] = new_elem[recv_tmp[i]];
911 if (send_tmp_num[pesize] > 0)
913 send_tmp_num, recv_tmp_num, recv_tmp, send_tmp,
916 for (i = 0; i < pesize; i++) count_num[i] = 0;
918 for (i = 0; i < send_parent_num[pesize]; i++) {
922 j < mesh->adapt_children_index[send_parent[i] + 1]; j++) {
925 send_adapt_child[tmp_int] = -1;
927 send_adapt_child[tmp_int] =
933 send_adapt_child[tmp_int] =
937 fprintf(stderr,
"There is something wrong with child information\n");
938 fprintf(stderr,
"i=%d, send_elem[i]=%d child is %d PE=%d\n", i,
946 recv_adapt_child = (
int *)calloc(recv2_adapt_child_num[pesize],
sizeof(
int));
949 send2_adapt_child_num[pesize], recv2_adapt_child_num[pesize], pesize,
950 recv2_adapt_child_num, send2_adapt_child_num, send_adapt_child,
954 recv_parent_num, send_parent_num, send_index_child,
957 for (i = 0; i < recv2_adapt_child_num[pesize]; i++) {
958 if (recv_adapt_child[i] == -1) {
965 (recv_adapt_child[i] % t_elem) + 1;
968 recv_adapt_child[i] / t_elem;
973 for (i = 1; i < recv_parent_num[pesize]; i++)
977 if (send_tmp_num[pesize] > 0) free(send_tmp);
978 if (recv_tmp_num[pesize] > 0) free(recv_tmp);
979 if (send_parent_num[pesize] > 0) {
980 free(send_adapt_child);
981 free(recv_adapt_child);
982 free(send_index_child);
992 tmp_int_send = (
int *)calloc(send_elem_num[pesize] + 1,
sizeof(
int));
995 if (send_elem_num[pesize] > 0) {
996 for (i = 0; i < send_elem_num[pesize]; i++) tmp_int_send[i] = send_inter[i];
998 tmp_int_recv = (
int *)calloc(recv_elem_num[pesize] + 1,
sizeof(
int));
1002 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1004 if (recv_elem_num[pesize] > 0) {
1005 for (i = 0; i < recv_elem_num[pesize]; i++) {
1010 tmp2_int_send = (
int *)calloc(send_parent_num[pesize],
sizeof(
int));
1013 for (i = 0; i < send_parent_num[pesize]; i++)
1014 tmp2_int_send[i] = send_parent_inter[i];
1016 recv_parent_num, send_parent_num, tmp2_int_send,
1018 for (i = 0; i < recv_parent_num[pesize]; i++) {
1020 (tmp2_int_recv[i] % t_elem) + 1;
1022 tmp2_int_recv[i] / t_elem;
1025 if (mynode == 0) fprintf(stderr,
"Finish sending elem_id\n");
1029 free(send_parent_inter);
1037 new_nelem_dist = (
int *)calloc(pesize + 1,
sizeof(
int));
1040 new_nelem_dist[0] = 0;
1043 for (i = 1; i < pesize; i++) {
1047 new_nelem_dist[i + 1] = tmp_sum;
1049 for (i = 1; i < pesize; i++)
1076 if (send_elem_num[pesize] > 0) {
1077 for (i = 0; i < send_elem_num[pesize]; i++)
1081 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1083 for (i = 0; i < recv_elem_num[pesize]; i++)
1085 for (i = 0; i < send_parent_num[pesize]; i++)
1088 recv_parent_num, send_parent_num, tmp2_int_send,
1090 for (i = 0; i < recv_parent_num[pesize]; i++)
1092 if (mynode == 0) fprintf(stderr,
"Finish sending elem_type\n");
1099 if (send_elem_num[pesize] > 0) {
1100 for (i = 0; i < send_elem_num[pesize]; i++)
1104 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1106 for (i = 0; i < recv_elem_num[pesize]; i++)
1108 for (i = 0; i < send_parent_num[pesize]; i++)
1111 recv_parent_num, send_parent_num, tmp2_int_send,
1113 for (i = 0; i < recv_parent_num[pesize]; i++)
1115 if (mynode == 0) fprintf(stderr,
"Finish sending section_ID\n");
1124 tmp_send_d = (
double *)calloc(send_elem_num[pesize] + 1,
sizeof(
double));
1125 tmp_recv_d = (
double *)calloc(recv_elem_num[pesize] + 1,
sizeof(
double));
1127 if (send_elem_num[pesize] > 0) {
1128 for (i = 0; i < send_elem_num[pesize]; i++)
1132 pesize, recv_elem_num, send_elem_num, tmp_send_d,
1134 for (i = 0; i < recv_elem_num[pesize]; i++)
1139 (
double *)calloc(send_parent_num[pesize] + 1,
sizeof(
double));
1141 (
double *)calloc(recv_parent_num[pesize] + 1,
sizeof(
double));
1144 for (i = 0; i < send_parent_num[pesize]; i++)
1147 pesize, recv_parent_num, send_parent_num,
1150 for (i = 0; i < recv_parent_num[pesize]; i++)
1170 if (mynode == 0) fprintf(stderr,
"Finish sending elem_material inf\n");
1179 for (i = 0; i < send_elem_num[pesize]; i++)
1182 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1184 for (i = 0; i < recv_elem_num[pesize]; i++)
1187 for (i = 0; i < send_parent_num[pesize]; i++)
1190 recv_parent_num, send_parent_num, tmp2_int_send,
1192 for (i = 0; i < recv_parent_num[pesize]; i++)
1194 if (mynode == 0) fprintf(stderr,
"Finish sending adaptation_level\n");
1200 for (i = 0; i < send_elem_num[pesize]; i++)
1203 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1205 for (i = 0; i < recv_elem_num[pesize]; i++)
1208 for (i = 0; i < send_parent_num[pesize]; i++)
1211 recv_parent_num, send_parent_num, tmp2_int_send,
1213 for (i = 0; i < recv_parent_num[pesize]; i++)
1215 if (mynode == 0) fprintf(stderr,
"Finish sending adaptation_type\n");
1223 for (i = 0; i < send_elem_num[pesize]; i++)
1226 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1228 for (i = 0; i < recv_elem_num[pesize]; i++)
1231 for (i = 0; i < send_parent_num[pesize]; i++)
1234 recv_parent_num, send_parent_num, tmp2_int_send,
1236 for (i = 0; i < recv_parent_num[pesize]; i++)
1239 if (mynode == 0) fprintf(stderr,
"Finish sending when_i_was_refined_elem\n");
1248 for (i = 0; i < send_elem_num[pesize]; i++)
1252 recv_elem_num, send_elem_num, tmp_int_send, tmp_int_recv,
1254 for (i = 0; i < send_parent_num[pesize]; i++)
1258 recv_parent_num, send_parent_num, tmp2_int_send,
1263 for (i = 0; i < recv_elem_num[pesize]; i++)
1266 for (i = 0; i < recv_parent_num[pesize]; i++)
1272 if (mynode == 0) fprintf(stderr,
"Finish sending elem_node_index\n");
1275 send_ptr_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1276 send_ptr_parent_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1277 recv_ptr_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1278 recv_ptr_parent_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1279 if ((send_ptr_num ==
NULL) || (send_ptr_parent_num ==
NULL) ||
1280 (recv_ptr_num ==
NULL) || (recv_ptr_parent_num ==
NULL))
1282 for (i = 0; i < pesize + 1; i++) {
1283 send_ptr_num[i] = 0;
1284 send_ptr_parent_num[i] = 0;
1286 for (i = 1; i < pesize + 1; i++) {
1287 for (j = send_elem_num[i - 1]; j < send_elem_num[i]; j++)
1288 send_ptr_num[i] += tmp_int_send[j];
1290 for (i = 1; i < pesize + 1; i++)
1291 send_ptr_num[i] = send_ptr_num[i - 1] + send_ptr_num[i];
1292 for (i = 1; i < pesize + 1; i++) {
1293 for (j = send_parent_num[i - 1]; j < send_parent_num[i]; j++)
1294 send_ptr_parent_num[i] += tmp2_int_send[j];
1296 for (i = 1; i < pesize + 1; i++)
1297 send_ptr_parent_num[i] =
1298 send_ptr_parent_num[i - 1] + send_ptr_parent_num[i];
1373 tmp_grp[m].num_of_item = 0;
1376 tmp_elem_grp = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
1379 for (i = 0; i <
mesh->
n_elem; i++) tmp_elem_grp[i] = 0;
1383 i < mesh->elem_group->grp_index[m + 1]; i++)
1386 if (send_elem_num[pesize] > 0) {
1387 for (i = 0; i < send_elem_num[pesize]; i++)
1388 tmp_int_send[i] = tmp_elem_grp[send_elem[i]];
1390 pesize, recv_elem_num, send_elem_num, tmp_int_send,
1393 if (send_parent_num[pesize] > 0) {
1394 for (i = 0; i < send_parent_num[pesize]; i++)
1395 tmp2_int_send[i] = tmp_elem_grp[send_parent[i]];
1397 pesize, recv_parent_num, send_parent_num,
1402 for (i = 0; i < recv_elem_num[pesize]; i++) {
1403 if (tmp_int_recv[i] == 1) num_grp_item++;
1405 for (i = 0; i < recv_parent_num[pesize]; i++) {
1406 if (tmp2_int_recv[i] == 1) num_grp_item++;
1409 if (num_grp_item > 0) {
1410 tmp_grp[m].
item = (
int *)calloc(num_grp_item,
sizeof(
int));
1413 for (i = 0; i < recv_elem_num[pesize]; i++) {
1414 if (tmp_int_recv[i] == 1) {
1415 tmp_grp[m].
item[tmp_int] = i + 1;
1419 for (i = 0; i < recv_parent_num[pesize]; i++) {
1420 if (tmp2_int_recv[i] == 1) {
1421 tmp_grp[m].
item[tmp_int] = recv_elem_num[pesize] + i + 1;
1431 num_grp_item += tmp_grp[m].num_of_item;
1440 if (num_grp_item > 0) {
1453 if (tmp_grp[m].num_of_item > 0) free(tmp_grp[m].item);
1456 if (mynode == 0) fprintf(stderr,
"Finish generating new elem_grp inf.\n");
1464 tmp_surf_id = (
int *)calloc(recv_elem_num[pesize] + 1,
sizeof(
int));
1466 tmp2_surf_id = (
int *)calloc(recv_parent_num[pesize] + 1,
sizeof(
int));
1470 tmp_grp[m].num_of_item = 0;
1473 tmp_elem_grp = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
1475 tmp_surf_grp = (
int *)calloc(
mesh->
n_elem,
sizeof(
int));
1478 for (i = 0; i <
mesh->
n_elem; i++) tmp_elem_grp[i] = 0;
1479 for (i = 0; i <
mesh->
n_elem; i++) tmp_surf_grp[i] = -1;
1483 i < mesh->surf_group->grp_index[m + 1]; i++) {
1489 if (send_elem_num[pesize] > 0) {
1490 for (i = 0; i < send_elem_num[pesize]; i++)
1491 tmp_int_send[i] = tmp_elem_grp[send_elem[i]];
1493 pesize, recv_elem_num, send_elem_num, tmp_int_send,
1495 for (i = 0; i < send_elem_num[pesize]; i++)
1496 tmp_int_send[i] = tmp_surf_grp[send_elem[i]];
1498 pesize, recv_elem_num, send_elem_num, tmp_int_send,
1501 if (send_parent_num[pesize] > 0) {
1502 for (i = 0; i < send_parent_num[pesize]; i++)
1503 tmp2_int_send[i] = tmp_elem_grp[send_parent[i]];
1505 pesize, recv_parent_num, send_parent_num,
1508 for (i = 0; i < send_parent_num[pesize]; i++)
1509 tmp2_int_send[i] = tmp_surf_grp[send_parent[i]];
1511 pesize, recv_parent_num, send_parent_num,
1516 for (i = 0; i < recv_elem_num[pesize]; i++) {
1517 if (tmp_int_recv[i] == 1) num_grp_item++;
1519 for (i = 0; i < recv_parent_num[pesize]; i++) {
1520 if (tmp2_int_recv[i] == 1) num_grp_item++;
1523 if (num_grp_item > 0) {
1524 tmp_grp[m].
item = (
int *)calloc(num_grp_item * 2,
sizeof(
int));
1527 for (i = 0; i < recv_elem_num[pesize]; i++) {
1528 if (tmp_int_recv[i] == 1) {
1529 tmp_grp[m].
item[tmp_int * 2] = i + 1;
1530 tmp_grp[m].
item[tmp_int * 2 + 1] = tmp_surf_id[i];
1534 for (i = 0; i < recv_parent_num[pesize]; i++) {
1535 if (tmp2_int_recv[i] == 1) {
1536 tmp_grp[m].
item[tmp_int * 2] = recv_elem_num[pesize] + i + 1;
1537 tmp_grp[m].
item[tmp_int * 2 + 1] = tmp2_surf_id[i];
1551 num_grp_item += tmp_grp[m].num_of_item;
1560 if (num_grp_item > 0) {
1562 (
int *)calloc(num_grp_item * 2,
sizeof(
int));
1570 tmp_grp[m].
item[i * 2 + 1];
1576 if (tmp_grp[m].num_of_item > 0) free(tmp_grp[m].item);
1579 if (mynode == 0) fprintf(stderr,
"Finish generating new surf_grp inf.\n");
1582 if (tmp_int_send !=
NULL) free(tmp_int_send);
1583 if (tmp2_int_send !=
NULL) free(tmp2_int_send);
1592 if (tmp_int_recv !=
NULL) free(tmp_int_recv);
1593 if (tmp2_int_recv !=
NULL) free(tmp2_int_recv);
1594 tmp_int_send = (
int *)calloc(send_ptr_num[pesize],
sizeof(
int));
1595 tmp_int_nodeid = (
int *)calloc(recv_ptr_num[pesize],
sizeof(
int));
1597 if ((tmp_int_send ==
NULL) || (tmp_int_nodeid ==
NULL))
1606 for (i = 0; i < send_elem_num[pesize]; i++) {
1608 jj < mesh->elem_node_index[send_elem[i] + 1]; jj++) {
1609 tmp_int_send[tmp_int] =
1618 recv_ptr_num, send_ptr_num, tmp_int_send, tmp_int_nodeid,
1620 tmp2_int_send = (
int *)calloc(send_ptr_parent_num[pesize],
sizeof(
int));
1621 tmp2_int_nodeid = (
int *)calloc(recv_ptr_parent_num[pesize],
sizeof(
int));
1623 if ((tmp2_int_send ==
NULL) || (tmp2_int_nodeid ==
NULL))
1628 for (i = 0; i < send_parent_num[pesize]; i++) {
1630 jj < mesh->elem_node_index[send_parent[i] + 1]; jj++) {
1631 tmp2_int_send[tmp_int] =
1640 pesize, recv_ptr_parent_num, send_ptr_parent_num,
1644 free(tmp2_int_send);
1651 send_node_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1652 count_node = (
int *)calloc(pesize,
sizeof(
int));
1654 recv_node_num = (
int *)calloc(pesize + 1,
sizeof(
int));
1655 if ((send_node_num ==
NULL) || (count_node ==
NULL) || (send_node ==
NULL) ||
1656 (recv_node_num ==
NULL))
1658 "send_node_num, count_node, send_node, and recv_node_num");
1659 for (i = 0; i < pesize + 1; i++) {
1660 send_node_num[i] = 0;
1663 send_node_num[result->
part[i] + 1]++;
1665 for (i = 1; i < pesize + 1; i++)
1666 send_node_num[i] = send_node_num[i - 1] + send_node_num[i];
1667 for (i = 0; i < pesize; i++) count_node[i] = 0;
1669 send_node[send_node_num[result->
part[i]] + count_node[result->
part[i]]] = i;
1670 count_node[result->
part[i]]++;
1672 tmp_node = (
int *)calloc(send_node_num[pesize] + 1,
sizeof(
int));
1673 for (i = 0; i < send_node_num[pesize]; i++)
1674 tmp_node[i] = vtxdist[mynode] + send_node[i];
1678 recv_node = (
int *)calloc(recv_node_num[pesize] + 1,
sizeof(
int));
1681 recv_node_num, send_node_num, tmp_node, recv_node,
1683 global_index = (
int *)calloc(result->
t_node,
sizeof(
int));
1684 global_index_hit = (
int *)calloc(result->
t_node,
sizeof(
int));
1685 if ((global_index ==
NULL) || (global_index_hit ==
NULL))
1687 for (i = 0; i < result->
t_node; i++) {
1688 global_index[i] = -1;
1689 global_index_hit[i] = -1;
1691 for (i = 0; i < recv_node_num[pesize]; i++) {
1692 if (recv_node[i] >= result->
t_node)
1694 global_index[recv_node[i]] = mynode * result->
t_node + i;
1695 global_index_hit[recv_node[i]] = i;
1703 tmp_recv = (
int *)calloc(result->
t_node,
sizeof(
int));
1705 for (i = 1; i < pesize; i++) {
1708 for (j = 0; j < result->
t_node; j++) {
1709 if (tmp_recv[j] >= 0) global_index[j] = tmp_recv[j];
1713 for (i = 1; i < pesize; i++)
1726 import_index = (
int *)calloc(pesize + 1,
sizeof(
int));
1728 for (i = 0; i < pesize + 1; i++) import_index[i] = 0;
1729 for (i = 0; i < recv_ptr_num[pesize]; i++) {
1730 tmp_int = tmp_int_nodeid[i];
1731 if (tmp_int >= result->
t_node) {
1732 fprintf(stderr,
"There is something wrong with data: i=%d tmp_int=%d\n",
1736 if (global_index_hit[tmp_int] == -1) {
1737 global_index_hit[tmp_int] = -2;
1738 m = global_index[tmp_int] / result->
t_node;
1739 import_index[m + 1]++;
1742 for (i = 0; i < recv_ptr_parent_num[pesize]; i++) {
1743 tmp_int = tmp2_int_nodeid[i];
1744 if (tmp_int >= result->
t_node) {
1745 fprintf(stderr,
"There is something wrong with data: i=%d tmp_int=%d\n",
1749 if (global_index_hit[tmp_int] == -1) {
1750 global_index_hit[tmp_int] = -2;
1751 m = global_index[tmp_int] / result->
t_node;
1752 import_index[m + 1]++;
1755 for (i = 1; i < pesize + 1; i++)
1756 import_index[i] = import_index[i - 1] + import_index[i];
1757 count_index = (
int *)calloc(pesize,
sizeof(
int));
1758 for (i = 0; i < pesize; i++) count_index[i] = 0;
1759 for (i = 0; i < result->
t_node; i++) {
1760 global_index_hit[i] = -1;
1762 for (i = 0; i < recv_node_num[pesize]; i++) {
1763 global_index_hit[recv_node[i]] = i;
1789 for (i = 0; i < recv_node_num[pesize]; i++) {
1793 if ((recv_ptr_num[pesize] + recv_ptr_parent_num[pesize]) > 0) {
1795 recv_ptr_num[pesize] + recv_ptr_parent_num[pesize],
sizeof(
int));
1799 for (i = 0; i < recv_ptr_num[pesize]; i++) {
1800 tmp_int = tmp_int_nodeid[i];
1801 if (global_index_hit[tmp_int] != -1) {
1804 m = global_index[tmp_int] / result->
t_node;
1805 global_index_hit[tmp_int] =
1809 (global_index[tmp_int] % result->
t_node) + 1;
1811 global_index[tmp_int] / result->
t_node;
1815 for (i = 0; i < recv_ptr_parent_num[pesize]; i++) {
1816 tmp_int = tmp2_int_nodeid[i];
1817 if (global_index_hit[tmp_int] != -1) {
1819 global_index_hit[tmp_int];
1821 m = global_index[tmp_int] / result->
t_node;
1822 global_index_hit[tmp_int] =
1825 global_index_hit[tmp_int];
1827 (global_index[tmp_int] % result->
t_node) + 1;
1829 global_index[tmp_int] / result->
t_node;
1834 for (i = 0; i < recv_ptr_num[pesize] + recv_ptr_parent_num[pesize]; i++)
1872 for (i = 1; i < pesize + 1; i++) {
1873 if ((import_index[i] - import_index[i - 1]) > 0) tmp_int++;
1875 import_n_neighbor_pe = tmp_int;
1876 import_neighbor_pe = (
int *)calloc(tmp_int,
sizeof(
int));
1879 for (i = 1; i < pesize + 1; i++) {
1880 if ((import_index[i] - import_index[i - 1]) > 0) {
1882 import_neighbor_pe[tmp_int] = i - 1;
1885 export_index = (
int *)calloc(pesize + 1,
sizeof(
int));
1888 export_node = (
int *)calloc(export_index[pesize] + 1,
sizeof(
int));
1889 tmp_send = (
int *)calloc(import_index[pesize] + 1,
sizeof(
int));
1891 for (i = 0; i < import_index[pesize]; i++)
1904 export_index, import_index, tmp_send, export_node,
1915 for (i = 1; i < pesize + 1; i++) {
1916 if ((export_index[i] - export_index[i - 1]) > 0) tmp_int++;
1918 export_n_neighbor_pe = tmp_int;
1919 export_neighbor_pe = (
int *)calloc(tmp_int,
sizeof(
int));
1921 for (i = 1; i < pesize + 1; i++) {
1922 if ((export_index[i] - export_index[i - 1]) > 0) {
1924 export_neighbor_pe[tmp_int] = i - 1;
1928 if (export_n_neighbor_pe > import_n_neighbor_pe) {
1952 if (import_index[pesize] > 0) {
1957 for (i = 0; i < import_index[pesize]; i++)
1959 if (export_index[pesize] > 0) {
1964 for (i = 0; i < export_index[pesize]; i++)
1966 free(global_index_hit);
1981 tmp_node_d = (
double *)calloc(send_node_num[pesize] + 1,
sizeof(
double));
1982 recv_node_d = (
double *)calloc(recv_node_num[pesize] + 1,
sizeof(
double));
1983 tmp2_node_d = (
double *)calloc(export_index[pesize] + 1,
sizeof(
double));
1984 recv2_node_d = (
double *)calloc(import_index[pesize] + 1,
sizeof(
double));
1985 if ((tmp_node_d ==
NULL) || (recv_node_d ==
NULL) || (tmp2_node_d ==
NULL) ||
1986 (recv2_node_d ==
NULL))
1988 for (j = 0; j < 3; j++) {
1989 for (i = 0; i < recv_node_num[pesize]; i++) recv_node_d[i] = 0.0;
1990 for (i = 0; i < send_node_num[pesize]; i++)
1991 tmp_node_d[i] =
mesh->
node[send_node[i] * 3 + j];
1993 pesize, recv_node_num, send_node_num, tmp_node_d,
1995 for (i = 0; i < export_index[pesize]; i++)
1996 tmp2_node_d[i] = recv_node_d[export_node[i] - 1];
1999 import_index, export_index, tmp2_node_d,
2003 for (i = 0; i < import_index[pesize]; i++)
2026 free(tmp_int_nodeid);
2027 free(tmp2_int_nodeid);
2061 (
double *)calloc(tn_component *
new_mesh->
n_node,
sizeof(
double));
2064 for (j = 0; j < tn_component; j++) {
2065 for (i = 0; i < send_node_num[pesize]; i++)
2069 pesize, recv_node_num, send_node_num, tmp_node_d,
2071 for (i = 0; i < export_index[pesize]; i++)
2072 tmp2_node_d[i] = recv_node_d[export_node[i] - 1];
2075 pesize, import_index, export_index, tmp2_node_d,
2079 for (i = 0; i < import_index[pesize]; i++)
2094 tmp_node_i = (
int *)calloc(send_node_num[pesize] + 1,
sizeof(
int));
2095 recv_node_i = (
int *)calloc(recv_node_num[pesize] + 1,
sizeof(
int));
2096 tmp2_node_i = (
int *)calloc(export_index[pesize] + 1,
sizeof(
int));
2097 recv2_node_i = (
int *)calloc(import_index[pesize] + 1,
sizeof(
int));
2098 if ((tmp_node_i ==
NULL) || (recv_node_i ==
NULL))
2100 for (i = 0; i < recv_node_num[pesize]; i++) recv_node_i[i] = -1;
2101 for (i = 0; i < send_node_num[pesize]; i++)
2105 recv_node_num, send_node_num, tmp_node_i, recv_node_i,
2107 for (i = 0; i < export_index[pesize]; i++)
2108 tmp2_node_i[i] = recv_node_i[export_node[i] - 1];
2111 import_index, export_index, tmp2_node_i, recv2_node_i,
2115 for (i = 0; i < import_index[pesize]; i++)
2125 tmp_grp[m].num_of_item = 0;
2135 i < mesh->node_group->grp_index[m + 1]; i++) {
2140 for (i = 0; i < recv_node_num[pesize]; i++) recv_node_i[i] = -1;
2141 for (i = 0; i < send_node_num[pesize]; i++)
2142 tmp_node_i[i] = tmp_elem_grp[send_node[i]];
2145 recv_node_num, send_node_num, tmp_node_i,
2147 for (i = 0; i < export_index[pesize]; i++)
2148 tmp2_node_i[i] = recv_node_i[export_node[i] - 1];
2151 import_index, export_index, tmp2_node_i,
2155 if (recv_node_i[i] == 1) num_grp_item++;
2157 for (i = 0; i < import_index[pesize]; i++) {
2158 if (recv2_node_i[i] == 1) num_grp_item++;
2161 if (num_grp_item > 0) {
2162 tmp_grp[m].
item = (
int *)calloc(num_grp_item,
sizeof(
int));
2166 if (recv_node_i[i] == 1) {
2167 tmp_grp[m].
item[tmp_int] = i + 1;
2171 for (i = 0; i < import_index[pesize]; i++) {
2172 if (recv2_node_i[i] == 1) {
2183 num_grp_item += tmp_grp[m].num_of_item;
2192 if (num_grp_item > 0) {
2205 if (tmp_grp[m].num_of_item > 0) free(tmp_grp[m].item);
2208 if (mynode == 0) fprintf(stderr,
"Finish generating new node_grp inf.\n");
2217 new_vtxdist = (
int *)calloc(pesize + 1,
sizeof(
int));
2221 new_vtxdist[1] = nvtxs;
2223 for (i = 1; i < pesize; i++) {
2226 tmp_sum += tmp_nvtxs;
2227 new_vtxdist[i + 1] = tmp_sum;
2229 for (i = 1; i < pesize; i++)
2295 if (count_elem_index ==
NULL)
2302 count_elem_index[j]++;
2307 free(count_elem_index);
2338 long long *new_idx_tmp, *new_idx_tmp2, jj;
2339 new_idx_tmp2 = (
long long *)calloc(
new_mesh->
n_elem + 1,
sizeof(
long long));
2342 new_idx_tmp = (
long long *)calloc(
new_mesh->
n_elem,
sizeof(
long long));
2355 for (jj = new_idx_tmp2[new2old[i]]; jj < new_idx_tmp2[new2old[i] + 1]; jj++) {
2380 fprintf(test_fp,
"i= %d elem_ID=%d %d\n", i,
new_mesh->
elem_ID[i * 2],
2459 new_tmp = (
int *)calloc(
2463 for (j = new_tmp2[new2old[i]]; j < new_tmp2[new2old[i] + 1]; j++) {
2643 new_tmp = (
int *)calloc(
2657 new_tmp = (
int *)calloc(
2876 "Finish migration now. The time cost for migration and generating "
2877 "new mesh is %lf\n",
int HECMW_Allreduce(void *sendbuf, void *recvbuf, int count, HECMW_Datatype datatype, HECMW_Op op, HECMW_Comm comm)
int HECMW_Send(void *buffer, int count, HECMW_Datatype datatype, int dest, int tag, HECMW_Comm comm)
int HECMW_Barrier(HECMW_Comm comm)
int HECMW_Recv(void *buffer, int count, HECMW_Datatype datatype, int source, int tag, HECMW_Comm comm, HECMW_Status *status)
int HECMW_Comm_dup(HECMW_Comm comm, HECMW_Comm *new_comm)
struct hecmwST_result_data * new_data
void whole_copy_array(int *recv_elem_num, int *global_recv_elem_num, int mynode, int pesize, HECMW_Comm repart_comm)
void int2_whole_send_recv(int n1, int n2, int pesize, int *stack_import, int *stack_export, int *x, int *y, HECMW_Comm repart_comm, int my_rank)
void double2_whole_send_recv(int n1, int n2, int pesize, int *stack_import, int *stack_export, double *x, double *y, HECMW_Comm repart_comm, int my_rank)
int stack_whole_send_recv(int pesize, int *stack_import, int *stack_export, HECMW_Comm repart_comm, int my_rank)
void int_whole_send_recv(int n1, int n2, int pesize, int *stack_import, int *nod_import, int *stack_export, int *nod_export, int *x, int *y, HECMW_Comm repart_comm, int my_rank)
struct hecmwST_local_mesh * new_mesh
void int3_whole_send_recv(int n1, int n2, int pesize, int *stack_import, int *stack_export, int *x, int *y, HECMW_Comm repart_comm, int my_rank)
int int_part_send_recv(int n, int neibpetot, int *neibpe, int *stack_import, int *nod_import, int *stack_export, int *nod_export, int *x, HECMW_Comm repart_comm, int my_rank)
void mesh_migration_adapt(int mynode, int pesize, Result_part *result, int *vtxdist)
int double_part_send_recv(int n, int neibpetot, int *neibpe, int *stack_import, int *nod_import, int *stack_export, int *nod_export, double *x, HECMW_Comm repart_comm, int my_rank)
struct hecmwST_local_mesh * mesh
int stack_part_send_recv(int neibpetot, int *neibpe, int *stack_import, int *stack_export, HECMW_Comm repart_comm, int my_rank)
struct hecmwST_result_data * data
void double_whole_send_recv(int n1, int n2, int pesize, int *stack_import, int *nod_import, int *stack_export, int *nod_export, double *x, double *y, HECMW_Comm repart_comm, int my_rank)
void HECMW_dlb_print_exit(char *var)
void HECMW_dlb_memory_exit(char *var)
int * amp_type_definition
struct hecmwST_section * section
int * adapt_children_item
double * elem_mat_int_val
int * adapt_children_index
struct hecmwST_amplitude * amp
struct hecmwST_material * material
struct hecmwST_node_grp * node_group
struct hecmwST_surf_grp * surf_group
long long * elem_node_index
char gridfile[HECMW_FILENAME_LEN+1]
char header[HECMW_HEADER_LEN+1]
struct hecmwST_elem_grp * elem_group
int * when_i_was_refined_node
int * when_i_was_refined_elem