B-spline basis module for the solver. More...
#include "bsplines_basis.hpp"
Collaboration diagram for orb5x::BSplinesBasis:Public Member Functions | |
| BSplinesBasis (BSplinesBasis &&) noexcept | |
| BSplinesBasis (const BSplinesBasis &)=delete | |
| BSplinesBasis (int nx_, int ny_, int nz_, int degree_, Real xmin_, Real xmax_, Real ymin_, Real ymax_, Real zmin_, Real zmax_, int nsel_bsplines_basis) | |
| Construct and fully initialise the B-spline basis. | |
| void | computeBSplinesGridValues (const Kokkos::View< Real * > &gridx_, const Kokkos::View< Real * > &gridy_, Kokkos::View< Real ** > &output, const Kokkos::View< Real * > &input) const |
| Compute B-spline grid values (real input). | |
| void | computeBSplinesGridValues_cpx (const Kokkos::View< Real * > &gridx_, const Kokkos::View< Real * > &gridy_, Kokkos::View< Complex ** > &output, const Kokkos::View< Complex * > &input) const |
| Compute B-spline grid values (complex input). | |
| void | computeBSplinesGridValuesWithDerivative (const Kokkos::View< Real * > &gridx_, const Kokkos::View< Real * > &gridy_, Kokkos::View< Real ** > &f, Kokkos::View< Real ** > &dfdx, Kokkos::View< Real ** > &dfdy, const Kokkos::View< Real * > &input) const |
| Compute B-spline grid values and derivatives. | |
| void | computeBSplinesX (Real *fun, int *pos, Real x) const |
| Compute B-splines at point x (radial, non-periodic). | |
| void | computeBSplinesXD (Real *fun, Real *fund, int *pos, Real x) const |
| Compute B-splines and derivatives at point x. | |
| void | computeBSplinesY (Real *fun, int *pos, Real y) const |
| Compute B-splines at point y (poloidal, periodic). | |
| void | computeBSplinesY_fft (Kokkos::View< Complex * > &basisspline_m_out, Real y) const |
| Compute B-splines Fourier transform at point y (poloidal). | |
| void | computeBSplinesYD (Real *fun, Real *fund, int *pos, Real y) const |
| Compute B-splines and derivatives at point y. | |
| void | computeBSplinesZ (Real *fun, int *pos, Real z) const |
| Compute B-splines at point z (toroidal, periodic). | |
| void | computeBSplinesZ_fft (Kokkos::View< Complex * > &bspline_n_out, Real z) const |
| Compute B-splines Fourier transform at point z (toroidal). | |
| Real | computeCouplingCoeff (int n, int NB) const |
| Compute coupling coefficient for periodic B-splines. | |
| void | computeMapping1to2 (int a, int &i, int &j) const |
| Map 1D index to 2D (i,j) (1-based). | |
| int | computeMapping2to1 (int i, int j) const |
| Map 2D (i,j) to 1D index (1-based): a = j + ny*(i-1). | |
| BSplinesBasis & | operator= (BSplinesBasis &&) noexcept |
| BSplinesBasis & | operator= (const BSplinesBasis &)=delete |
| ~BSplinesBasis () | |
| Destructor – frees FFTW plans/buffers and resets Kokkos Views. | |
Static Public Member Functions | |
| static int | computeMapping2to1bis (int i, int j, int n) |
| Map 2D (i,j) to 1D index with custom period n. | |
| static void | destroyBSplinesBasisModule () |
| Destroy the global instance (matches old destroyBSplinesBasisModule). | |
| static void | initBSplinesBasis (int nx_, int ny_, int nz_, int degree_, Real xmin_, Real xmax_, Real ymin_, Real ymax_, Real zmin_, Real zmax_, int nsel_bsplines_basis) |
| Create/replace the global instance (matches old initBSplinesBasis). | |
| static BSplinesBasis & | instance () |
| Access the global instance. Throws if not yet initialised. | |
Public Attributes | |
| Kokkos::View< Complex * > | basisspline_m |
| Fourier-transformed poloidal spline. | |
| Kokkos::View< Complex * > | basisspline_n |
| Fourier-transformed toroidal spline. | |
| int | bsplines_uniform |
| int | degree |
| Real | dx |
| Real | dx_inv |
| Real | dy |
| Real | dy_inv |
| Real | dz |
| Real | dz_inv |
| Kokkos::View< Real * > | gridX |
| Kokkos::View< Real * > | gridY |
| Kokkos::View< Real * > | gridZ |
| Complex | icomplex |
| Real | lx |
| Real | ly |
| Real | lz |
| int | ns_loc |
| int | nx |
| int | ny |
| int | nz |
| Real | xmax |
| Real | xmin |
| Real | ymax |
| Real | ymin |
| Real | zmax |
| Real | zmin |
B-spline basis module for the solver.
Manages B-spline grids, FFTW plans, and evaluation functions. Construct with grid and degree parameters; the destructor releases FFTW plans and Kokkos Views automatically (RAII).
A singleton-style static instance is kept for backward compatibility with existing call sites that use BSplinesBasis::method(...). New code should prefer the instance API via BSplinesBasis::instance().
| orb5x::BSplinesBasis::BSplinesBasis | ( | int | nx_, |
| int | ny_, | ||
| int | nz_, | ||
| int | degree_, | ||
| Real | xmin_, | ||
| Real | xmax_, | ||
| Real | ymin_, | ||
| Real | ymax_, | ||
| Real | zmin_, | ||
| Real | zmax_, | ||
| int | nsel_bsplines_basis | ||
| ) |
Construct and fully initialise the B-spline basis.
| nx_,ny_,nz_ | Number of intervals in each direction. |
| degree_ | B-spline order (1..4 = number of non-zero basis fns). |
| xmin_ | Lower radial-domain boundary. |
| xmax_ | Upper radial-domain boundary. |
| ymin_ | Lower poloidal-domain boundary. |
| ymax_ | Upper poloidal-domain boundary. |
| zmin_ | Lower toroidal-domain boundary. |
| zmax_ | Upper toroidal-domain boundary. |
| nsel_bsplines_basis | Selection flag (0 = NSEL_BSPLINES_ORIGINAL). |
| orb5x::BSplinesBasis::~BSplinesBasis | ( | ) |
Destructor – frees FFTW plans/buffers and resets Kokkos Views.
|
delete |
|
noexcept |
| void orb5x::BSplinesBasis::computeBSplinesGridValues | ( | const Kokkos::View< Real * > & | gridx_, |
| const Kokkos::View< Real * > & | gridy_, | ||
| Kokkos::View< Real ** > & | output, | ||
| const Kokkos::View< Real * > & | input | ||
| ) | const |
Compute B-spline grid values (real input).
| void orb5x::BSplinesBasis::computeBSplinesGridValues_cpx | ( | const Kokkos::View< Real * > & | gridx_, |
| const Kokkos::View< Real * > & | gridy_, | ||
| Kokkos::View< Complex ** > & | output, | ||
| const Kokkos::View< Complex * > & | input | ||
| ) | const |
Compute B-spline grid values (complex input).
| void orb5x::BSplinesBasis::computeBSplinesGridValuesWithDerivative | ( | const Kokkos::View< Real * > & | gridx_, |
| const Kokkos::View< Real * > & | gridy_, | ||
| Kokkos::View< Real ** > & | f, | ||
| Kokkos::View< Real ** > & | dfdx, | ||
| Kokkos::View< Real ** > & | dfdy, | ||
| const Kokkos::View< Real * > & | input | ||
| ) | const |
Compute B-spline grid values and derivatives.
Compute B-splines at point x (radial, non-periodic).
Compute B-splines and derivatives at point x.
Compute B-splines at point y (poloidal, periodic).
| void orb5x::BSplinesBasis::computeBSplinesY_fft | ( | Kokkos::View< Complex * > & | basisspline_m_out, |
| Real | y | ||
| ) | const |
Compute B-splines Fourier transform at point y (poloidal).
Compute B-splines and derivatives at point y.
Compute B-splines at point z (toroidal, periodic).
| void orb5x::BSplinesBasis::computeBSplinesZ_fft | ( | Kokkos::View< Complex * > & | bspline_n_out, |
| Real | z | ||
| ) | const |
Compute B-splines Fourier transform at point z (toroidal).
| Real orb5x::BSplinesBasis::computeCouplingCoeff | ( | int | n, |
| int | NB | ||
| ) | const |
Compute coupling coefficient for periodic B-splines.
| void orb5x::BSplinesBasis::computeMapping1to2 | ( | int | a, |
| int & | i, | ||
| int & | j | ||
| ) | const |
Map 1D index to 2D (i,j) (1-based).
| int orb5x::BSplinesBasis::computeMapping2to1 | ( | int | i, |
| int | j | ||
| ) | const |
Map 2D (i,j) to 1D index (1-based): a = j + ny*(i-1).
|
static |
Map 2D (i,j) to 1D index with custom period n.
|
static |
Destroy the global instance (matches old destroyBSplinesBasisModule).
|
static |
Create/replace the global instance (matches old initBSplinesBasis).
|
static |
Access the global instance. Throws if not yet initialised.
|
noexcept |
|
delete |
| Kokkos::View<Complex*> orb5x::BSplinesBasis::basisspline_m |
Fourier-transformed poloidal spline.
| Kokkos::View<Complex*> orb5x::BSplinesBasis::basisspline_n |
Fourier-transformed toroidal spline.
| int orb5x::BSplinesBasis::bsplines_uniform |
| int orb5x::BSplinesBasis::degree |
| Real orb5x::BSplinesBasis::dx |
| Real orb5x::BSplinesBasis::dx_inv |
| Real orb5x::BSplinesBasis::dy |
| Real orb5x::BSplinesBasis::dy_inv |
| Real orb5x::BSplinesBasis::dz |
| Real orb5x::BSplinesBasis::dz_inv |
| Kokkos::View<Real*> orb5x::BSplinesBasis::gridX |
| Kokkos::View<Real*> orb5x::BSplinesBasis::gridY |
| Kokkos::View<Real*> orb5x::BSplinesBasis::gridZ |
| Complex orb5x::BSplinesBasis::icomplex |
| Real orb5x::BSplinesBasis::lx |
| Real orb5x::BSplinesBasis::ly |
| Real orb5x::BSplinesBasis::lz |
| int orb5x::BSplinesBasis::ns_loc |
| int orb5x::BSplinesBasis::nx |
| int orb5x::BSplinesBasis::ny |
| int orb5x::BSplinesBasis::nz |
| Real orb5x::BSplinesBasis::xmax |
| Real orb5x::BSplinesBasis::xmin |
| Real orb5x::BSplinesBasis::ymax |
| Real orb5x::BSplinesBasis::ymin |
| Real orb5x::BSplinesBasis::zmax |
| Real orb5x::BSplinesBasis::zmin |