diff --git a/flow_bc.c b/flow_bc.c new file mode 100644 index 00000000..b0a3a62e --- /dev/null +++ b/flow_bc.c @@ -0,0 +1,45 @@ +#include + +#include "flow_bc.h" + + +/* ---------------------------------------------------------------------- */ +flowbc_t * +allocate_flowbc(size_t nf) +/* ---------------------------------------------------------------------- */ +{ + size_t i; + flowbc_t *new; + + new = malloc(1 * sizeof *new); + if (new != NULL) { + new->type = malloc(nf * sizeof *new->type); + new->bcval = malloc(nf * sizeof *new->bcval); + + if ((new->type == NULL) || (new->bcval == NULL)) { + deallocate_flowbc(new); + new = NULL; + } else { + for (i = 0; i < nf; i++) { + new->type [i] = UNSET; + new->bcval[i] = 0.0; + } + } + } + + return new; +} + + +/* ---------------------------------------------------------------------- */ +void +deallocate_flowbc(flowbc_t *fbc) +/* ---------------------------------------------------------------------- */ +{ + if (fbc != NULL) { + free(fbc->bcval); + free(fbc->type ); + } + + free(fbc); +} diff --git a/flow_bc.h b/flow_bc.h new file mode 100644 index 00000000..bd8598ce --- /dev/null +++ b/flow_bc.h @@ -0,0 +1,20 @@ +#ifndef FLOW_BC_H_INCLUDED +#define FLOW_BC_H_INCLUDED + +#include + +enum flowbc_type { UNSET, PRESSURE, FLUX }; + +typedef struct { + enum flowbc_type *type; + double *bcval; +} flowbc_t; + + +flowbc_t * +allocate_flowbc(size_t nf); + +void +deallocate_flowbc(flowbc_t *fbc); + +#endif /* FLOW_BC_H_INCLUDED */