27 if (p ==
NULL)
return;
90 int *is_boundary_node =
NULL;
94 if (is_boundary_node ==
NULL) {
99 is_boundary_node[i] = -1;
101 for (i = 0; i < boundary->
node->
n; i++) {
103 is_boundary_node[node - 1] = i;
106 return is_boundary_node;
110 const int *is_boundary_node) {
111 int *is_import_node =
NULL;
118 if (is_import_node ==
NULL) {
123 is_import_node[i] = -1;
127 if (is_boundary_node[node - 1] >= 0)
128 is_import_node[i] = is_boundary_node[node - 1];
131 return is_import_node;
136 int *is_import_node) {
137 int *is_export_node =
NULL;
142 if (is_export_node ==
NULL) {
156 return is_export_node;
159 static int set_intracomm_import_node(
162 int n_import, node, size, n, i, j;
175 if (is_import_node[j] >= 0) n++;
182 if (n_import == 0)
return 0;
192 if (is_import_node[j] >= 0) {
193 intra_tbl->
import_item[n++] = is_boundary_node[node - 1];
202 static int set_intracomm_export_node(
205 int n_export, size, node, n, i, j;
219 if (is_export_node[j] >= 0) n++;
226 if (n_export == 0)
return 0;
236 if (is_export_node[j] >= 0) {
237 intra_tbl->
export_item[n++] = is_boundary_node[node - 1];
253 int *is_boundary_node =
NULL, *is_import_node =
NULL, *is_export_node =
NULL;
257 "HECMW_couple_make_intra_iftable(): 'mesh' is NULL");
260 if (boundary ==
NULL) {
262 "HECMW_couple_make_intra_iftable(): 'boundary' is NULL");
265 if (intracomm ==
NULL) {
267 "HECMW_couple_make_intra_iftable(): 'intracomm' is NULL");
275 if (set_n_neighbor_pe(
mesh, intra_tbl))
goto error;
278 if (set_neighbor_pe(
mesh, intra_tbl))
goto error;
281 if ((is_boundary_node = mask_boundary_node(
mesh, boundary)) ==
NULL)
283 if ((is_import_node = mask_import_node(
mesh, is_boundary_node)) ==
NULL)
285 if ((is_export_node = mask_export_node(
mesh, intracomm, is_import_node)) ==
290 if (set_intracomm_import_node(
mesh, is_boundary_node, is_import_node,
293 if (set_intracomm_export_node(
mesh, is_boundary_node, is_export_node,