19 static void do_logging(
int loglv,
int msgno,
int add_location,
const char *fmt,
27 if (strlen(msg) > 0) s =
": ";
37 static void set_err(
int msgno,
const char *fmt, ...) {
45 static void set_err_token(
int token,
int msgno,
const char *fmt, ...) {
63 static int read_pe(
void) {
64 int token, n_neighbor_pe;
80 if (n_neighbor_pe < 0) {
84 if (n_neighbor_pe != 0) {
105 static int read_node(
void) {
106 int nnode, nninternal, i, token;
127 if (nninternal <= 0) {
131 if (nnode != nninternal) {
136 for (i = 0; i < nnode; i++) {
197 static int read_elem(
void) {
198 int i, j, n, token, nelem;
215 if (elem_type ==
NULL) {
219 for (i = 0; i < nelem; i++) {
234 for (i = 0; i < nelem; i++) {
252 for (j = 0; j < n; j++) {
289 static int read_import(
void) {
301 static int read_export(
void) {
313 static int read_ngrp(
void) {
314 int i, j, n, token, ngrp;
344 grp_index =
HECMW_malloc(
sizeof(*grp_index) * (ngrp + 1));
345 if (grp_index ==
NULL) {
350 for (i = 0; i < ngrp; i++) {
357 if (grp_index[i + 1] <= 0) {
363 for (i = 0; i < ngrp; i++) {
378 snprintf(name,
sizeof(name),
"%s", p);
381 n = grp_index[i + 1] - grp_index[i];
387 for (j = 0; j < n; j++) {
420 static int read_egrp(
void) {
421 int i, j, n, token, ngrp;
451 grp_index =
HECMW_malloc(
sizeof(*grp_index) * (ngrp + 1));
452 if (grp_index ==
NULL) {
457 for (i = 0; i < ngrp; i++) {
464 if (grp_index[i + 1] <= 0) {
470 for (i = 0; i < ngrp; i++) {
485 snprintf(name,
sizeof(name),
"%s", p);
488 n = grp_index[i + 1] - grp_index[i];
494 for (j = 0; j < n; j++) {
527 static int read_sgrp(
void) {
528 int i, j, n, token, ngrp;
558 grp_index =
HECMW_malloc(
sizeof(*grp_index) * (ngrp + 1));
559 if (grp_index ==
NULL) {
564 for (i = 0; i < ngrp; i++) {
571 if (grp_index[i + 1] <= 0) {
577 for (i = 0; i < ngrp; i++) {
592 snprintf(name,
sizeof(name),
"%s", p);
595 n = grp_index[i + 1] - grp_index[i];
606 for (j = 0; j < n; j++) {
618 for (j = 0; j < n; j++) {
652 static int parse(
void) {
653 if (read_pe())
return -1;
654 if (read_node())
return -1;
655 if (read_elem())
return -1;
656 if (read_import())
return -1;
657 if (read_export())
return -1;
658 if (read_ngrp())
return -1;
659 if (read_egrp())
return -1;
660 if (read_sgrp())
return -1;
671 if (filename ==
NULL) {
673 "Not specified filename for GeoFEM mesh input routine");
683 snprintf(grid_filename,
sizeof(grid_filename),
"%s", filename);
686 if ((fp = fopen(filename,
"r")) ==
NULL) {
705 snprintf(grid_filename,
sizeof(grid_filename),
"Unknown");
718 if (local_mesh ==
NULL)
return NULL;
721 snprintf(grid_filename,
sizeof(grid_filename),
"Unknown");
#define HECMW_MAX_NODE_MAX
#define HECMW_FILENAME_LEN
int HECMW_set_error(int errorno, const char *fmt,...)
int HECMW_get_max_node(int etype)
int HECMW_get_etype_GeoFEM2HECMW(int etype)
int HECMW_gflex_next_token_skip(int skip_token)
int HECMW_gflex_set_input(FILE *fp)
int HECMW_gflex_get_lineno(void)
double HECMW_gflex_get_number(void)
int HECMW_gflex_next_token(void)
char * HECMW_gflex_get_text(void)
struct hecmwST_local_mesh * HECMW_get_geofem_mesh(const char *filename)
int HECMW_read_geofem_mesh(const char *filename)
int HECMW_io_add_ngrp(const char *name, int nnode, int *node)
int HECMW_io_add_sgrp(const char *name, int n_item, int *elem, int *surf)
int HECMW_io_add_egrp(const char *name, int nelem, int *elem)
struct hecmwST_local_mesh * HECMW_io_make_local_mesh(void)
struct hecmw_io_element * HECMW_io_add_elem(int id, int type, int *node, int nmatitem, double *matitem)
int HECMW_io_pre_process(void)
struct hecmw_io_node * HECMW_io_add_node(int id, double x, double y, double z)
int HECMW_io_post_process(void)
int HECMW_io_set_gridfile(char *gridfile)
int HECMW_io_finalize(void)
int HECMW_log(int loglv, const char *fmt,...)
#define HECMW_malloc(size)
#define HECMW_IO_HEC_E0002
#define HECMW_IO_GEOFEM_E0362
#define HECMW_IO_GEOFEM_E0353
#define HECMW_IO_GEOFEM_E0363
#define HECMW_IO_GEOFEM_E0322
#define HECMW_IO_GEOFEM_E0361
#define HECMW_IO_GEOFEM_E0351
#define HECMW_IO_HEC_E0001
#define HECMW_IO_GEOFEM_E0004
#define HECMW_IO_GEOFEM_E0312
#define HECMW_IO_GEOFEM_E0341
#define HECMW_IO_GEOFEM_E0301
#define HECMW_IO_GEOFEM_E0324
#define HECMW_IO_GEOFEM_E0323
#define HECMW_IO_GEOFEM_E0343
#define HECMW_IO_GEOFEM_E0321
#define HECMW_IO_GEOFEM_E0313
#define HECMW_IO_GEOFEM_E0342
#define HECMW_IO_GEOFEM_E0314
#define HECMW_IO_GEOFEM_E0311
#define HECMW_IO_GEOFEM_E0352
#define HECMW_IO_GEOFEM_E0003
void HECMW_print_msg(int loglv, int msgno, const char *fmt,...)
int HECMW_vsnprintf(char *str, size_t size, const char *format, va_list ap)