ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
Loading...
Searching...
No Matches
orb5x::BSplinesBasis Class Reference

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).
BSplinesBasisoperator= (BSplinesBasis &&) noexcept
BSplinesBasisoperator= (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 BSplinesBasisinstance ()
 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

Detailed Description

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().

Constructor & Destructor Documentation

◆ BSplinesBasis() [1/3]

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.

Parameters
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_basisSelection flag (0 = NSEL_BSPLINES_ORIGINAL).

Referenced by BSplinesBasis(), BSplinesBasis(), instance(), operator=(), and operator=().

◆ ~BSplinesBasis()

orb5x::BSplinesBasis::~BSplinesBasis ( )

Destructor – frees FFTW plans/buffers and resets Kokkos Views.

◆ BSplinesBasis() [2/3]

orb5x::BSplinesBasis::BSplinesBasis ( const BSplinesBasis & )
delete

References BSplinesBasis().

◆ BSplinesBasis() [3/3]

orb5x::BSplinesBasis::BSplinesBasis ( BSplinesBasis && )
noexcept

References BSplinesBasis().

Member Function Documentation

◆ computeBSplinesGridValues()

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).

References computeBSplinesGridValues().

Referenced by computeBSplinesGridValues().

◆ computeBSplinesGridValues_cpx()

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).

References computeBSplinesGridValues_cpx().

Referenced by computeBSplinesGridValues_cpx().

◆ computeBSplinesGridValuesWithDerivative()

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.

References computeBSplinesGridValuesWithDerivative().

Referenced by computeBSplinesGridValuesWithDerivative().

◆ computeBSplinesX()

void orb5x::BSplinesBasis::computeBSplinesX ( Real * fun,
int * pos,
Real x ) const

Compute B-splines at point x (radial, non-periodic).

References computeBSplinesX().

Referenced by computeBSplinesX().

◆ computeBSplinesXD()

void orb5x::BSplinesBasis::computeBSplinesXD ( Real * fun,
Real * fund,
int * pos,
Real x ) const

Compute B-splines and derivatives at point x.

References computeBSplinesXD().

Referenced by computeBSplinesXD().

◆ computeBSplinesY()

void orb5x::BSplinesBasis::computeBSplinesY ( Real * fun,
int * pos,
Real y ) const

Compute B-splines at point y (poloidal, periodic).

References computeBSplinesY().

Referenced by computeBSplinesY().

◆ computeBSplinesY_fft()

void orb5x::BSplinesBasis::computeBSplinesY_fft ( Kokkos::View< Complex * > & basisspline_m_out,
Real y ) const

Compute B-splines Fourier transform at point y (poloidal).

References computeBSplinesY_fft().

Referenced by computeBSplinesY_fft().

◆ computeBSplinesYD()

void orb5x::BSplinesBasis::computeBSplinesYD ( Real * fun,
Real * fund,
int * pos,
Real y ) const

Compute B-splines and derivatives at point y.

References computeBSplinesYD().

Referenced by computeBSplinesYD().

◆ computeBSplinesZ()

void orb5x::BSplinesBasis::computeBSplinesZ ( Real * fun,
int * pos,
Real z ) const

Compute B-splines at point z (toroidal, periodic).

References computeBSplinesZ().

Referenced by computeBSplinesZ().

◆ computeBSplinesZ_fft()

void orb5x::BSplinesBasis::computeBSplinesZ_fft ( Kokkos::View< Complex * > & bspline_n_out,
Real z ) const

Compute B-splines Fourier transform at point z (toroidal).

References computeBSplinesZ_fft().

Referenced by computeBSplinesZ_fft().

◆ computeCouplingCoeff()

Real orb5x::BSplinesBasis::computeCouplingCoeff ( int n,
int NB ) const

Compute coupling coefficient for periodic B-splines.

References computeCouplingCoeff().

Referenced by computeCouplingCoeff().

◆ computeMapping1to2()

void orb5x::BSplinesBasis::computeMapping1to2 ( int a,
int & i,
int & j ) const

Map 1D index to 2D (i,j) (1-based).

References computeMapping1to2().

Referenced by computeMapping1to2().

◆ computeMapping2to1()

int orb5x::BSplinesBasis::computeMapping2to1 ( int i,
int j ) const

Map 2D (i,j) to 1D index (1-based): a = j + ny*(i-1).

References computeMapping2to1().

Referenced by computeMapping2to1().

◆ computeMapping2to1bis()

int orb5x::BSplinesBasis::computeMapping2to1bis ( int i,
int j,
int n )
static

Map 2D (i,j) to 1D index with custom period n.

References computeMapping2to1bis().

Referenced by computeMapping2to1bis().

◆ destroyBSplinesBasisModule()

void orb5x::BSplinesBasis::destroyBSplinesBasisModule ( )
static

Destroy the global instance (matches old destroyBSplinesBasisModule).

References destroyBSplinesBasisModule().

Referenced by destroyBSplinesBasisModule().

◆ initBSplinesBasis()

void orb5x::BSplinesBasis::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 )
static

Create/replace the global instance (matches old initBSplinesBasis).

References initBSplinesBasis().

Referenced by initBSplinesBasis().

◆ instance()

BSplinesBasis & orb5x::BSplinesBasis::instance ( )
static

Access the global instance. Throws if not yet initialised.

References BSplinesBasis(), and instance().

Referenced by instance().

◆ operator=() [1/2]

BSplinesBasis & orb5x::BSplinesBasis::operator= ( BSplinesBasis && )
noexcept

References BSplinesBasis().

◆ operator=() [2/2]

BSplinesBasis & orb5x::BSplinesBasis::operator= ( const BSplinesBasis & )
delete

References BSplinesBasis().

Member Data Documentation

◆ basisspline_m

Kokkos::View<Complex*> orb5x::BSplinesBasis::basisspline_m

Fourier-transformed poloidal spline.

◆ basisspline_n

Kokkos::View<Complex*> orb5x::BSplinesBasis::basisspline_n

Fourier-transformed toroidal spline.

◆ bsplines_uniform

int orb5x::BSplinesBasis::bsplines_uniform

◆ degree

int orb5x::BSplinesBasis::degree

◆ dx

Real orb5x::BSplinesBasis::dx

◆ dx_inv

Real orb5x::BSplinesBasis::dx_inv

◆ dy

Real orb5x::BSplinesBasis::dy

◆ dy_inv

Real orb5x::BSplinesBasis::dy_inv

◆ dz

Real orb5x::BSplinesBasis::dz

◆ dz_inv

Real orb5x::BSplinesBasis::dz_inv

◆ gridX

Kokkos::View<Real*> orb5x::BSplinesBasis::gridX

◆ gridY

Kokkos::View<Real*> orb5x::BSplinesBasis::gridY

◆ gridZ

Kokkos::View<Real*> orb5x::BSplinesBasis::gridZ

◆ icomplex

Complex orb5x::BSplinesBasis::icomplex

◆ lx

Real orb5x::BSplinesBasis::lx

◆ ly

Real orb5x::BSplinesBasis::ly

◆ lz

Real orb5x::BSplinesBasis::lz

◆ ns_loc

int orb5x::BSplinesBasis::ns_loc

◆ nx

int orb5x::BSplinesBasis::nx

◆ ny

int orb5x::BSplinesBasis::ny

◆ nz

int orb5x::BSplinesBasis::nz

◆ xmax

Real orb5x::BSplinesBasis::xmax

◆ xmin

Real orb5x::BSplinesBasis::xmin

◆ ymax

Real orb5x::BSplinesBasis::ymax

◆ ymin

Real orb5x::BSplinesBasis::ymin

◆ zmax

Real orb5x::BSplinesBasis::zmax

◆ zmin

Real orb5x::BSplinesBasis::zmin

The documentation for this class was generated from the following file: