Krita Source Code Documentation
Loading...
Searching...
No Matches
nubasis.cpp File Reference
#include "nubasis.h"
#include <stdlib.h>

Go to the source code of this file.

Functions

NUBasiscreate_NUBasis (NUgrid *grid, bool periodic)
 
void destroy_NUBasis (NUBasis *basis)
 
int get_NUBasis_d2funcs_d (NUBasis *restrict basis, double x, double bfuncs[4], double dbfuncs[4], double d2bfuncs[4])
 
void get_NUBasis_d2funcs_di (NUBasis *restrict basis, int i, double bfuncs[4], double dbfuncs[4], double d2bfuncs[4])
 
int get_NUBasis_d2funcs_s (NUBasis *restrict basis, double x, float bfuncs[4], float dbfuncs[4], float d2bfuncs[4])
 
void get_NUBasis_d2funcs_si (NUBasis *restrict basis, int i, float bfuncs[4], float dbfuncs[4], float d2bfuncs[4])
 
int get_NUBasis_dfuncs_d (NUBasis *restrict basis, double x, double bfuncs[4], double dbfuncs[4])
 
void get_NUBasis_dfuncs_di (NUBasis *restrict basis, int i, double bfuncs[4], double dbfuncs[4])
 
int get_NUBasis_dfuncs_s (NUBasis *restrict basis, double x, float bfuncs[4], float dbfuncs[4])
 
void get_NUBasis_dfuncs_si (NUBasis *restrict basis, int i, float bfuncs[4], float dbfuncs[4])
 
int get_NUBasis_funcs_d (NUBasis *restrict basis, double x, double bfuncs[4])
 
void get_NUBasis_funcs_di (NUBasis *restrict basis, int i, double bfuncs[4])
 
int get_NUBasis_funcs_s (NUBasis *restrict basis, double x, float bfuncs[4])
 
void get_NUBasis_funcs_si (NUBasis *restrict basis, int i, float bfuncs[4])
 

Function Documentation

◆ create_NUBasis()

NUBasis * create_NUBasis ( NUgrid * grid,
bool periodic )

Definition at line 27 of file nubasis.cpp.

28{
29 NUBasis* restrict basis = new NUBasis;
30 basis->grid = grid;
31 basis->periodic = periodic;
32 int N = grid->num_points;
33 basis->xVals = new double[N+5];
34 basis->dxInv = new double[3*(N+2)];
35 for (int i=0; i<N; i++)
36 basis->xVals[i+2] = grid->points[i];
37 double* restrict g = grid->points;
38 // Extend grid points on either end to provide enough points to
39 // construct a full basis set
40 if (!periodic) {
41 basis->xVals[0] = g[ 0 ] - 2.0*(g[1]-g[0]);
42 basis->xVals[1] = g[ 0 ] - 1.0*(g[1]-g[0]);
43 basis->xVals[N+2] = g[N-1] + 1.0*(g[N-1]-g[N-2]);
44 basis->xVals[N+3] = g[N-1] + 2.0*(g[N-1]-g[N-2]);
45 basis->xVals[N+4] = g[N-1] + 3.0*(g[N-1]-g[N-2]);
46 }
47 else {
48 basis->xVals[1] = g[ 0 ] - (g[N-1] - g[N-2]);
49 basis->xVals[0] = g[ 0 ] - (g[N-1] - g[N-3]);
50 basis->xVals[N+2] = g[N-1] + (g[ 1 ] - g[ 0 ]);
51 basis->xVals[N+3] = g[N-1] + (g[ 2 ] - g[ 0 ]);
52 basis->xVals[N+4] = g[N-1] + (g[ 3 ] - g[ 0 ]);
53 }
54 for (int i=0; i<N+2; i++)
55 for (int j=0; j<3; j++)
56 basis->dxInv[3*i+j] =
57 1.0/(basis->xVals[i+j+1]-basis->xVals[i]);
58 return basis;
59}
#define restrict
NUgrid *restrict grid
Definition nubasis.h:29
int num_points
Definition nugrid.h:35
double *restrict points
Definition nugrid.h:34

References NUBasis::grid, NUgrid::num_points, NUgrid::points, and restrict.

◆ destroy_NUBasis()

void destroy_NUBasis ( NUBasis * basis)

Definition at line 62 of file nubasis.cpp.

63{
64 delete[] (basis->xVals);
65 delete[] (basis->dxInv);
66 delete (basis);
67}
double *restrict xVals
Definition nubasis.h:33
double *restrict dxInv
Definition nubasis.h:35

References NUBasis::dxInv, and NUBasis::xVals.

◆ get_NUBasis_d2funcs_d()

int get_NUBasis_d2funcs_d ( NUBasis *restrict basis,
double x,
double bfuncs[4],
double dbfuncs[4],
double d2bfuncs[4] )

Definition at line 374 of file nubasis.cpp.

376{
377 double b1[2], b2[3];
378 int i = (*basis->grid->reverse_map)(basis->grid, x);
379 int i2 = i+2;
380 double* restrict dxInv = basis->dxInv;
381 double* restrict xVals = basis->xVals;
382
383 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
384 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
385 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
386 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
387 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
388 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
389 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
390 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
391 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
392 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
393 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
394 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
395
396 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
397 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
398 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
399 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
400
401 d2bfuncs[0] = 6.0f * (+dxInv[3*(i+0)+2]* dxInv[3*(i+1)+1]*b1[0]);
402 d2bfuncs[1] = 6.0f * (-dxInv[3*(i+1)+1]*(dxInv[3*(i+0)+2]+dxInv[3*(i+1)+2])*b1[0] +
403 dxInv[3*(i+1)+2]* dxInv[3*(i+2)+1]*b1[1]);
404 d2bfuncs[2] = 6.0f * (+dxInv[3*(i+1)+2]* dxInv[3*(i+1)+1]*b1[0] -
405 dxInv[3*(i+2)+1]*(dxInv[3*(i+1)+2] + dxInv[3*(i+2)+2])*b1[1]);
406 d2bfuncs[3] = 6.0f * (+dxInv[3*(i+2)+2]* dxInv[3*(i+2)+1]*b1[1]);
407
408 return i;
409}
int(* reverse_map)(void *grid, double x)
Definition nugrid.h:36

References restrict.

◆ get_NUBasis_d2funcs_di()

void get_NUBasis_d2funcs_di ( NUBasis *restrict basis,
int i,
double bfuncs[4],
double dbfuncs[4],
double d2bfuncs[4] )

Definition at line 413 of file nubasis.cpp.

416{
417 double b1[2], b2[3];
418 double x = basis->grid->points[i];
419 int i2 = i+2;
420 double* restrict dxInv = basis->dxInv;
421 double* restrict xVals = basis->xVals;
422
423 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
424 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
425 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
426 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
427 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
428 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
429 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
430 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
431 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
432 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
433 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
434 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
435
436 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
437 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
438 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
439 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
440
441 d2bfuncs[0] = 6.0f * (+dxInv[3*(i+0)+2]* dxInv[3*(i+1)+1]*b1[0]);
442 d2bfuncs[1] = 6.0f * (-dxInv[3*(i+1)+1]*(dxInv[3*(i+0)+2]+dxInv[3*(i+1)+2])*b1[0] +
443 dxInv[3*(i+1)+2]* dxInv[3*(i+2)+1]*b1[1]);
444 d2bfuncs[2] = 6.0f * (+dxInv[3*(i+1)+2]* dxInv[3*(i+1)+1]*b1[0] -
445 dxInv[3*(i+2)+1]*(dxInv[3*(i+1)+2] + dxInv[3*(i+2)+2])*b1[1]);
446 d2bfuncs[3] = 6.0f * (+dxInv[3*(i+2)+2]* dxInv[3*(i+2)+1]*b1[1]);
447}

References restrict.

◆ get_NUBasis_d2funcs_s()

int get_NUBasis_d2funcs_s ( NUBasis *restrict basis,
double x,
float bfuncs[4],
float dbfuncs[4],
float d2bfuncs[4] )

Definition at line 183 of file nubasis.cpp.

185{
186 double b1[2], b2[3];
187 int i = (*basis->grid->reverse_map)(basis->grid, x);
188 int i2 = i+2;
189 double* restrict dxInv = basis->dxInv;
190 double* restrict xVals = basis->xVals;
191
192 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
193 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
194 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
195 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
196 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
197 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
198 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
199 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
200 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
201 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
202 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
203 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
204
205 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
206 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
207 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
208 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
209
210 d2bfuncs[0] = 6.0f * (+dxInv[3*(i+0)+2]* dxInv[3*(i+1)+1]*b1[0]);
211 d2bfuncs[1] = 6.0f * (-dxInv[3*(i+1)+1]*(dxInv[3*(i+0)+2]+dxInv[3*(i+1)+2])*b1[0] +
212 dxInv[3*(i+1)+2]* dxInv[3*(i+2)+1]*b1[1]);
213 d2bfuncs[2] = 6.0f * (+dxInv[3*(i+1)+2]* dxInv[3*(i+1)+1]*b1[0] -
214 dxInv[3*(i+2)+1]*(dxInv[3*(i+1)+2] + dxInv[3*(i+2)+2])*b1[1]);
215 d2bfuncs[3] = 6.0f * (+dxInv[3*(i+2)+2]* dxInv[3*(i+2)+1]*b1[1]);
216
217 return i;
218}

References restrict.

◆ get_NUBasis_d2funcs_si()

void get_NUBasis_d2funcs_si ( NUBasis *restrict basis,
int i,
float bfuncs[4],
float dbfuncs[4],
float d2bfuncs[4] )

Definition at line 222 of file nubasis.cpp.

224{
225 double b1[2], b2[3];
226 double x = basis->grid->points[i];
227 int i2 = i+2;
228 double* restrict dxInv = basis->dxInv;
229 double* restrict xVals = basis->xVals;
230
231 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
232 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
233 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
234 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
235 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
236 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
237 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
238 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
239 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
240 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
241 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
242 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
243
244 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
245 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
246 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
247 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
248
249 d2bfuncs[0] = 6.0f * (+dxInv[3*(i+0)+2]* dxInv[3*(i+1)+1]*b1[0]);
250 d2bfuncs[1] = 6.0f * (-dxInv[3*(i+1)+1]*(dxInv[3*(i+0)+2]+dxInv[3*(i+1)+2])*b1[0] +
251 dxInv[3*(i+1)+2]* dxInv[3*(i+2)+1]*b1[1]);
252 d2bfuncs[2] = 6.0f * (+dxInv[3*(i+1)+2]* dxInv[3*(i+1)+1]*b1[0] -
253 dxInv[3*(i+2)+1]*(dxInv[3*(i+1)+2] + dxInv[3*(i+2)+2])*b1[1]);
254 d2bfuncs[3] = 6.0f * (+dxInv[3*(i+2)+2]* dxInv[3*(i+2)+1]*b1[1]);
255}

References restrict.

◆ get_NUBasis_dfuncs_d()

int get_NUBasis_dfuncs_d ( NUBasis *restrict basis,
double x,
double bfuncs[4],
double dbfuncs[4] )

Definition at line 312 of file nubasis.cpp.

314{
315 double b1[2], b2[3];
316 int i = (*basis->grid->reverse_map)(basis->grid, x);
317 int i2 = i+2;
318 double* restrict dxInv = basis->dxInv;
319 double* restrict xVals = basis->xVals;
320
321 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
322 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
323 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
324 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
325 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
326 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
327 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
328 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
329 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
330 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
331 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
332 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
333
334 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
335 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
336 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
337 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
338
339 return i;
340}

References restrict.

◆ get_NUBasis_dfuncs_di()

void get_NUBasis_dfuncs_di ( NUBasis *restrict basis,
int i,
double bfuncs[4],
double dbfuncs[4] )

Definition at line 344 of file nubasis.cpp.

346{
347 double b1[2], b2[3];
348 double x = basis->grid->points[i];
349 int i2 = i+2;
350 double* restrict dxInv = basis->dxInv;
351 double* restrict xVals = basis->xVals;
352
353 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
354 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
355 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
356 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
357 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
358 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
359 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
360 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
361 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
362 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
363 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
364 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
365
366 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
367 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
368 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
369 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
370}

References restrict.

◆ get_NUBasis_dfuncs_s()

int get_NUBasis_dfuncs_s ( NUBasis *restrict basis,
double x,
float bfuncs[4],
float dbfuncs[4] )

Definition at line 121 of file nubasis.cpp.

123{
124 double b1[2], b2[3];
125 int i = (*basis->grid->reverse_map)(basis->grid, x);
126 int i2 = i+2;
127 double* restrict dxInv = basis->dxInv;
128 double* restrict xVals = basis->xVals;
129
130 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
131 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
132 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
133 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
134 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
135 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
136 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
137 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
138 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
139 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
140 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
141 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
142
143 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
144 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
145 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
146 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
147
148 return i;
149}

References restrict.

◆ get_NUBasis_dfuncs_si()

void get_NUBasis_dfuncs_si ( NUBasis *restrict basis,
int i,
float bfuncs[4],
float dbfuncs[4] )

Definition at line 153 of file nubasis.cpp.

155{
156 double b1[2], b2[3];
157 double x = basis->grid->points[i];
158 int i2 = i+2;
159 double* restrict dxInv = basis->dxInv;
160 double* restrict xVals = basis->xVals;
161
162 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
163 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
164 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
165 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
166 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
167 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
168 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
169 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
170 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
171 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
172 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
173 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
174
175 dbfuncs[0] = -3.0f * (dxInv[3*(i )+2] * b2[0]);
176 dbfuncs[1] = 3.0f * (dxInv[3*(i )+2] * b2[0] - dxInv[3*(i+1)+2] * b2[1]);
177 dbfuncs[2] = 3.0f * (dxInv[3*(i+1)+2] * b2[1] - dxInv[3*(i+2)+2] * b2[2]);
178 dbfuncs[3] = 3.0f * (dxInv[3*(i+2)+2] * b2[2]);
179}

References restrict.

◆ get_NUBasis_funcs_d()

int get_NUBasis_funcs_d ( NUBasis *restrict basis,
double x,
double bfuncs[4] )

Definition at line 262 of file nubasis.cpp.

264{
265 double b1[2], b2[3];
266 int i = (*basis->grid->reverse_map)(basis->grid, x);
267 int i2 = i+2;
268 double* restrict dxInv = basis->dxInv;
269 double* restrict xVals = basis->xVals;
270
271 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
272 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
273 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
274 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
275 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
276 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
277 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
278 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
279 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
280 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
281 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
282 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
283 return i;
284}

References restrict.

◆ get_NUBasis_funcs_di()

void get_NUBasis_funcs_di ( NUBasis *restrict basis,
int i,
double bfuncs[4] )

Definition at line 288 of file nubasis.cpp.

290{
291 int i2 = i+2;
292 double b1[2], b2[3];
293 double x = basis->grid->points[i];
294 double* restrict dxInv = basis->dxInv;
295 double* restrict xVals = basis->xVals;
296
297 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
298 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
299 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
300 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
301 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
302 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
303 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
304 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
305 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
306 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
307 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
308 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
309}

References restrict.

◆ get_NUBasis_funcs_s()

int get_NUBasis_funcs_s ( NUBasis *restrict basis,
double x,
float bfuncs[4] )

Definition at line 71 of file nubasis.cpp.

73{
74 double b1[2], b2[3];
75 int i = (*basis->grid->reverse_map)(basis->grid, x);
76 int i2 = i+2;
77 double* restrict dxInv = basis->dxInv;
78 double* restrict xVals = basis->xVals;
79
80 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
81 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
82 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
83 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
84 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
85 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
86 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
87 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
88 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
89 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
90 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
91 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
92 return i;
93}

References restrict.

◆ get_NUBasis_funcs_si()

void get_NUBasis_funcs_si ( NUBasis *restrict basis,
int i,
float bfuncs[4] )

Definition at line 97 of file nubasis.cpp.

99{
100 int i2 = i+2;
101 double b1[2], b2[3];
102 double x = basis->grid->points[i];
103 double* restrict dxInv = basis->dxInv;
104 double* restrict xVals = basis->xVals;
105
106 b1[0] = (xVals[i2+1]-x) * dxInv[3*(i+2)+0];
107 b1[1] = (x-xVals[i2]) * dxInv[3*(i+2)+0];
108 b2[0] = (xVals[i2+1]-x) * dxInv[3*(i+1)+1] * b1[0];
109 b2[1] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+1] * b1[0]+
110 (xVals[i2+2]-x) * dxInv[3*(i+2)+1] * b1[1]);
111 b2[2] = (x-xVals[i2]) * dxInv[3*(i+2)+1] * b1[1];
112 bfuncs[0] = (xVals[i2+1]-x) * dxInv[3*(i )+2] * b2[0];
113 bfuncs[1] = ((x-xVals[i2-2]) * dxInv[3*(i )+2] * b2[0] +
114 (xVals[i2+2]-x) * dxInv[3*(i+1)+2] * b2[1]);
115 bfuncs[2] = ((x-xVals[i2-1]) * dxInv[3*(i+1)+2] * b2[1] +
116 (xVals[i2+3]-x) * dxInv[3*(i+2)+2] * b2[2]);
117 bfuncs[3] = (x-xVals[i2]) * dxInv[3*(i+2)+2] * b2[2];
118}

References restrict.