27 printf(
" HECMW Result File Merger\n");
28 printf(
"usage) rmerge [options] out_fileheader\n");
30 printf(
" -h : help\n");
31 printf(
" -o [type] : output file type (binary/text)\n");
32 printf(
" -n [rank] : number of ranks (default:%d)\n",
nrank);
33 printf(
" -s [step] : start step number (default:%d)\n",
strid);
34 printf(
" -e [step] : end step number (default:%d)\n",
endid);
35 printf(
" -i [step] : interval step number (default:%d)\n",
intid);
38void set_fname(
int argc,
char** argv,
char* out_fheader,
int* binary) {
43 for (i = 1; i < argc; i++) {
44 if (!strcmp(argv[i],
"-h")) {
47 }
else if (!strcmp(argv[i],
"-o")) {
49 fprintf(stderr,
"Error : paramter required after %s\n", argv[i]);
53 if (!strcmp(argv[i],
"binary")) {
55 }
else if (!strcmp(argv[i],
"text")) {
58 fprintf(stderr,
"Error : text or binary is required after -o\n");
61 }
else if (strcmp(argv[i],
"-n") == 0) {
63 fprintf(stderr,
"Error : paramter required after %s\n", argv[i]);
67 if (sscanf(argv[i],
"%d", &
nrank) != 1) {
69 "Error : parameter %s cannot be converted to number of ranks\n",
73 }
else if (strcmp(argv[i],
"-s") == 0) {
75 fprintf(stderr,
"Error : paramter required after %s\n", argv[i]);
79 if (sscanf(argv[i],
"%d", &
strid) != 1) {
82 "Error : parameter %s cannot be converted to start step number\n",
86 }
else if (strcmp(argv[i],
"-e") == 0) {
88 fprintf(stderr,
"Error : paramter required after %s\n", argv[i]);
92 if (sscanf(argv[i],
"%d", &
endid) != 1) {
94 "Error : parameter %s cannot be converted to end step number\n",
98 }
else if (strcmp(argv[i],
"-i") == 0) {
100 fprintf(stderr,
"Error : paramter required after %s\n", argv[i]);
104 if (sscanf(argv[i],
"%d", &
intid) != 1) {
106 "Error : parameter %s cannot be converted to interval step "
120 strcpy(out_fheader, fheader);
124int main(
int argc,
char** argv) {
125 int area_n, step_n, binary, refine, fg_text;
139 char *ptoken, *ntoken;
145 set_fname(argc, argv, out_fheader, &binary);
146 fprintf(
log_fp,
"out file name header is %s\n", out_fheader);
151 fprintf(
log_fp,
"table creating .. \n");
154 fprintf(stderr,
"ERROR : Cannot create global_local table.\n");
161 fprintf(stderr,
"ERROR : Cannot create global table.\n");
171 for (step =
strid; step <= step_n; step++) {
172 if ((step %
intid) != 0 && step != step_n)
continue;
174 fprintf(
log_fp,
"step:%d .. reading .. ", step);
182 fprintf(
log_fp,
"step:%d .. combining .. ", step);
185 fprintf(stderr,
"ERROR : Cannot combine result structure.\n");
199 "fstrRES", step,
nrank, 0, &fg_text)) ==
NULL)
202 strcpy(buff, fileheader);
204 ptoken = strtok(buff,
"/");
205 ntoken = strtok(
NULL,
"/");
207 strcat(dirname, ptoken);
208 strcat(dirname,
"/");
210 ntoken = strtok(
NULL,
"/");
212 sprintf(out_fname,
"%s%s.%d", dirname, out_fheader, step);
213 fprintf(
log_fp,
"output to %s .. ", out_fname);
219 glt->
elem_n, header, comment);
222 glt->
elem_n, header, comment);
225 fprintf(stderr,
"ERROR : Cannot open/write file %s\n", out_fname);
void set_fname(int argc, char **argv, char *out_fheader, int *binary)
FILE * log_fp
並列計算された結果を読込み処理するためのユーティリティ
fstr_res_info ** fstr_get_all_result(char *name_ID, int step, int area_n, int refine)
ステップの全領域データの読み込み
fstr_glt * fstr_create_glt(struct hecmwST_local_mesh **mesh, int area_n)
テーブル fstr_glt の作成
int fstr_get_step_n(char *name_ID)
ステップ数を調べる(ファイルの存在を調べる)
struct hecmwST_local_mesh ** fstr_get_all_local_mesh(char *name_ID, int *area_number, int *refine)
全分散メッシュの読込み
void fstr_free_glmesh(struct hecmwST_local_mesh *mesh)
単一領域メッシュの削除
void fstr_free_glt(fstr_glt *glt)
fstr_glt の削除
struct hecmwST_local_mesh * fstr_create_glmesh(fstr_glt *glt)
単一領域メッシュの作成
void fstr_free_result(fstr_res_info **res, int area_n)
fstr_res_info の削除
struct hecmwST_result_data * fstr_all_result(fstr_glt *glt, fstr_res_info **res, int refine)
ステップの全領域データの結合
void fstr_free_mesh(struct hecmwST_local_mesh **mesh, int area_n)
メッシュの削除
#define HECMW_FILENAME_LEN
char * HECMW_ctrl_get_result_fileheader(char *name_ID, int istep, int *fg_text)
char * HECMW_ctrl_get_result_fileheader_sub(char *name_ID, int istep, int n_rank, int i_rank, int *fg_text)
struct hecmwST_local_mesh * mesh
int HECMW_get_error(char **errmsg)
int HECMW_init(int *argc, char ***argv)
char * HECMW_result_get_header(char *buff)
int HECMW_result_init(struct hecmwST_local_mesh *hecMESH, int i_step, char *header, char *comment)
char * HECMW_result_get_comment(char *buff)
void HECMW_result_free(struct hecmwST_result_data *result)
int HECMW_result_write_bin_ST_by_fname(char *filename, struct hecmwST_result_data *result, int n_node, int n_elem, char *header, char *comment)
int HECMW_result_write_txt_ST_by_fname(char *filename, struct hecmwST_result_data *result, int n_node, int n_elem, char *header, char *comment)
分散で計算された結果を読込み処理するためのユーティリティ