37 vfprintf(Log_FP, fmt, arg);
45 static int get_dist_fname(
char* name_ID,
char* fheader,
int* fg_single,
46 int* refine,
int nrank,
int irank) {
50 if (!files)
return -1;
70 static int get_area_n(
char* fheader) {
76 sprintf(buff,
"%s.%d", fheader, area);
78 fp = fopen(buff,
"r");
106 if (get_dist_fname(name_ID, fheader, &fg_single, refine, nrank, 0))
return NULL;
118 area_n = get_area_n(fheader);
122 if (area_n == 0)
return NULL;
124 for (i = 0; i < area_n; i++) {
126 sprintf(fname,
"%s.%d", fheader, i);
128 get_dist_fname(name_ID, fheader, &fg_single, refine, nrank, i);
129 sprintf(fname,
"%s.%d", fheader, i);
136 *area_number = area_n;
150 for (i = 0; i < area_n; i++) {
179 sprintf(fname,
"%s.0.%d", fheader, step);
181 fp = fopen(fname,
"r");
199 int refine,
int nrank) {
204 int i, j, k, count, num, nnode, nelem, flag, fg_text;
205 int *node_gid, *elem_gid;
206 int refine_nnode = 0;
215 if (!res)
return NULL;
217 for (i = 0; i < area_n; i++) {
219 if (!res[i])
return NULL;
223 name_ID, step, nrank, i, &fg_text)) ==
NULL)
226 sprintf(fname,
"%s.%d.%d", fheader, i, step);
231 if (!node_gid)
return NULL;
235 if (!elem_gid)
return NULL;
240 if (!res[i]->result)
return NULL;
244 if (!res[i]->result->ng_dof)
return NULL;
247 if (!res[i]->result->global_label)
return NULL;
248 for (j = 0; j <
data->ng_component; j++) {
255 if (!res[i]->result->nn_dof)
return NULL;
258 if (!res[i]->result->node_label)
return NULL;
260 for (j = 0; j <
data->nn_component; j++) {
263 num +=
data->nn_dof[j];
268 for (j = 1; j < nnode; j++) {
269 if (flag == refine)
break;
271 if (node_gid[j] > 0 && node_gid[j - 1] < 0) flag++;
272 if (node_gid[j] < 0 && node_gid[j] > node_gid[j - 1]) flag++;
275 fstr_out_log(
"\narea:%d -- refined_nn_internal:%d", i, count);
276 refine_nnode += count;
279 for (j = 0; j < nnode; j++)
280 if (node_gid[j] > 0) count++;
284 if (!res[i]->result->node_val_item)
return NULL;
286 for (j = 0; j < nnode; j++) {
287 if (node_gid[j] > 0) {
288 for (k = 0; k < num; k++) {
290 data->node_val_item[num * j + k];
297 if (!res[i]->result->ne_dof)
return NULL;
300 if (!res[i]->result->elem_label)
return NULL;
302 for (j = 0; j <
data->ne_component; j++) {
305 num +=
data->ne_dof[j];
309 for (j = 0; j < nelem; j++)
310 if (elem_gid[j] > 0) count++;
311 fstr_out_log(
"\narea:%d -- ne_original from result:%d", i, count);
315 if (!res[i]->result->elem_val_item)
return NULL;
317 for (j = 0; j < nelem; j++) {
318 if (elem_gid[j] > 0) {
319 for (k = 0; k < num; k++) {
321 data->elem_val_item[num * j + k];
331 if (!res[i]->node_gid)
return NULL;
333 for (j = 0; j < nnode; j++) {
334 if (node_gid[j] > 0) res[i]->
node_gid[count++] = node_gid[j];
339 if (!res[i]->elem_gid)
return NULL;
341 for (j = 0; j < nelem; j++) {
342 if (elem_gid[j] > 0) res[i]->
elem_gid[count++] = elem_gid[j];
354 if (refine)
fstr_out_log(
"\ntotal refined_nn_internal:%d\n", refine_nnode);
365 int i, j, k, l_id, area;
366 int gitem, nitem, eitem, count, irec;
371 gitem += res[0]->result->ng_dof[i];
374 nitem += res[0]->result->nn_dof[i];
377 eitem += res[0]->result->ne_dof[i];
381 data->global_label =
HECMW_malloc(res[0]->result->ng_component *
sizeof(
char*));
384 data->node_label =
HECMW_malloc(res[0]->result->nn_component *
sizeof(
char*));
387 data->elem_label =
HECMW_malloc(res[0]->result->ne_component *
sizeof(
char*));
395 for (i = 0; i < gitem; i++) {
399 for (i = 0; i < glt->
node_n; i++) {
416 for (i = 0; i < glt->
elem_n; i++) {
423 data->elem_val_item[count++] = 0.0;
425 data->elem_val_item[count++] =
449 for (i = 0; i < area_n; i++) {
470 int i, j, k, eid, count;
476 int* area_etype_list;
479 for (i = 0; i < area_n; i++) {
486 if (!nrec)
return NULL;
489 for (i = 0; i < area_n; i++) {
492 nrec[count].
local = j;
493 nrec[count].
area = i;
501 for (i = 0; i < area_n; i++) {
524 if (!erec)
return NULL;
527 for (i = 0; i < area_n; i++) {
542 erec[count].
local = eid;
543 erec[count].
area = i;
553 if (!glt)
return NULL;
587 for (i = 0; i < glt->
node_n; i++) {
592 for (i = 0; i < glt->
elem_n; i++) {