From 63b25eca76d8481a0fdad339464d1eb617826583 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 28 Aug 2016 10:07:20 +0200 Subject: qfunc: disentangle the API from the global solver API --- init.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'init.c') diff --git a/init.c b/init.c index 292c555..5f9e3e6 100644 --- a/init.c +++ b/init.c @@ -23,27 +23,17 @@ #include "brill_data.h" #include "internal.h" +#include "qfunc.h" static int brill_init_check_options(BDContext *bd) { BDPriv *s = bd->priv; + int ret; - switch (bd->q_func_type) { - case BD_Q_FUNC_GUNDLACH: - s->q_func = &bdi_q_func_gundlach; - break; - case BD_Q_FUNC_EPPLEY: - if (bd->eppley_n < 4) { - bdi_log(bd, 0, "Invalid n: %d < 4\n", bd->eppley_n); - return -EINVAL; - } - - s->q_func = &bdi_q_func_eppley; - break; - default: - bdi_log(bd, 0, "Unknown q function type: %d\n", bd->q_func_type); - return -EINVAL; - } + ret = bdi_qfunc_init(bd, &s->qfunc, bd->q_func_type, + bd->amplitude, bd->eppley_n); + if (!s->qfunc) + return ret; s->basis[0] = &bdi_sb_even_basis; s->basis[1] = &bdi_sb_even_basis; @@ -118,6 +108,8 @@ void bd_context_free(BDContext **pbd) s = bd->priv; + bdi_qfunc_free(&s->qfunc); + free(s->coeffs); free(bd->priv); -- cgit v1.2.3