From ad508cf6e0425b715b437df237398c27de9556e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Mon, 13 Sep 2010 15:46:06 +0000 Subject: [PATCH] Add simple type for describing boundary conditions for the flow equation. --- flow_bc.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ flow_bc.h | 20 ++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 flow_bc.c create mode 100644 flow_bc.h 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 */