aboutsummaryrefslogtreecommitdiff
path: root/solve.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-08-28 10:07:20 +0200
committerAnton Khirnov <anton@khirnov.net>2016-08-28 11:14:30 +0200
commit2926c4ea6f9e34b8962a08dff372252537473bda (patch)
treeb64afad877bf5dff429c704af4e484cf57ee2dae /solve.c
parent63b25eca76d8481a0fdad339464d1eb617826583 (diff)
basis: disentangle the API from the global solver API
Diffstat (limited to 'solve.c')
-rw-r--r--solve.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/solve.c b/solve.c
index 5803d87..fe47832 100644
--- a/solve.c
+++ b/solve.c
@@ -38,7 +38,6 @@ static int brill_construct_matrix(const BDContext *bd, double *mat,
double *rhs)
{
BDPriv *s = bd->priv;
- const double *sf = bd->basis_scale_factor;
double *basis_val, *basis_dval, *basis_d2val;
int idx_coeff_rho, idx_coeff_z, idx_grid_rho, idx_grid_z;
@@ -56,11 +55,11 @@ static int brill_construct_matrix(const BDContext *bd, double *mat,
}
}
for (int j = 0; j < s->nb_colloc_points[i]; j++) {
- double coord = s->basis[i]->colloc_point(s->nb_coeffs[i], j, sf[i]);
+ double coord = bdi_basis_colloc_point(s->basis[i], j, s->nb_coeffs[i]);
for (int k = 0; k < s->nb_coeffs[i]; k++) {
- basis[i][0][j * s->nb_coeffs[i] + k] = s->basis[i]->eval (coord, k, sf[i]);
- basis[i][1][j * s->nb_coeffs[i] + k] = s->basis[i]->eval_diff1(coord, k, sf[i]);
- basis[i][2][j * s->nb_coeffs[i] + k] = s->basis[i]->eval_diff2(coord, k, sf[i]);
+ basis[i][0][j * s->nb_coeffs[i] + k] = bdi_basis_eval(s->basis[i], BS_EVAL_TYPE_VALUE, coord, k);
+ basis[i][1][j * s->nb_coeffs[i] + k] = bdi_basis_eval(s->basis[i], BS_EVAL_TYPE_DIFF1, coord, k);
+ basis[i][2][j * s->nb_coeffs[i] + k] = bdi_basis_eval(s->basis[i], BS_EVAL_TYPE_DIFF2, coord, k);
}
}
}
@@ -73,10 +72,10 @@ static int brill_construct_matrix(const BDContext *bd, double *mat,
#define D2BASIS_Z (basis[1][2][idx_grid_z * s->nb_coeffs[1] + idx_coeff_z])
for (idx_grid_z = 0; idx_grid_z < s->nb_colloc_points[1]; idx_grid_z++) {
- double z_val = s->basis[1]->colloc_point(s->nb_coeffs[1], idx_grid_z, sf[1]);
+ double z_val = bdi_basis_colloc_point(s->basis[1], idx_grid_z, s->nb_coeffs[1]);
for (idx_grid_rho = 0; idx_grid_rho < s->nb_colloc_points[0]; idx_grid_rho++) {
- double x_val = s->basis[0]->colloc_point(s->nb_coeffs[0], idx_grid_rho, sf[0]);
+ double x_val = bdi_basis_colloc_point(s->basis[0], idx_grid_rho, s->nb_coeffs[0]);
double d2q = bdi_qfunc_eval(s->qfunc, x_val, z_val, 2) +
bdi_qfunc_eval(s->qfunc, x_val, z_val, 6);
int idx_grid = idx_grid_z * s->nb_colloc_points[0] + idx_grid_rho;