|
ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
|
B-spline types and operations for spclibs C++ port. More...
#include "../prec_const.hpp"#include "matrix.hpp"#include "pppack.hpp"#include <Kokkos_Core.hpp>#include <vector>#include <memory>Classes | |
| struct | orb5x::spclibs::Spline1D |
| 1-dimensional B-spline More... | |
| struct | orb5x::spclibs::Spline2D |
| 2-dimensional B-spline (tensor product) More... | |
| struct | orb5x::spclibs::Spline2D1D |
| 2D+1D B-spline (for axisymmetric problems) More... | |
Namespaces | |
| namespace | orb5x |
| namespace | orb5x::spclibs |
Typedefs | |
| using | orb5x::spclibs::spline1d = Spline1D |
| using | orb5x::spclibs::spline2d = Spline2D |
| using | orb5x::spclibs::spline2d1d = Spline2D1D |
Functions | |
| void | orb5x::spclibs::basfun (Real x, const Spline1D &sp, Real *fun, int left, int nderiv=1) |
| Evaluate basis functions and derivatives at a point. | |
| void | orb5x::spclibs::calc_integ (const Spline1D &sp, Real *integ) |
| Calculate integral of each basis function. | |
| void | orb5x::spclibs::CompMassMatrix (const Spline1D &sp, GBMat &mat) |
| Compute mass matrix for FEM discretization. | |
| void | orb5x::spclibs::CompMassMatrix (const Spline1D &sp, PeriodicMat &mat) |
| void | orb5x::spclibs::def_basfun (Real x, const Spline1D &sp, Real *fun, int *left=nullptr, int nderiv=1) |
| Define basis functions at a point (auto-locates interval). | |
| void | orb5x::spclibs::destroy_sp (Spline1D &sp) |
| void | orb5x::spclibs::destroy_sp (Spline2D &sp) |
| void | orb5x::spclibs::destroy_sp (Spline2D1D &sp) |
| void | orb5x::spclibs::get_dim (const Spline1D &sp, int &dim, int *nx=nullptr, int *nidbas=nullptr) |
| Get dimension information from 1D spline. | |
| void | orb5x::spclibs::get_dim (const Spline2D &sp, int dim[2], int nx[2]=nullptr, int nidbas[2]=nullptr) |
| Get dimension information from 2D spline. | |
| void | orb5x::spclibs::get_gauss (const Spline1D &sp, int &n, int i=-1, Real *x=nullptr, Real *w=nullptr) |
| Get Gauss quadrature information from spline. | |
| void | orb5x::spclibs::get_splcoef (const Spline1D &sp, const Real *bcoef, Real *fvals) |
| Get function values from spline coefficients. | |
| void | orb5x::spclibs::gridval (const Spline1D &sp, const Real *xgrid, int npts, const Real *bcoef, Real *fvals, int jder=0) |
| Evaluate spline on a grid of points. | |
| void | orb5x::spclibs::gridval (const Spline2D &sp, const Real *xgrid1, int npts1, const Real *xgrid2, int npts2, const Real *bcoef, Real *fvals, int jder1=0, int jder2=0) |
| Evaluate 2D spline on a 2D grid. | |
| void | orb5x::spclibs::gridval (const Spline2D1D &sp, const Real *xgrid1, int npts1, const Real *xgrid2, int npts2, const Real *xgrid3, int npts3, const Real *bcoef, Real *fvals, int jder1=0, int jder2=0, int jder3=0) |
| Evaluate 3D spline (2D+1D) on a 3D grid. | |
| bool | orb5x::spclibs::is_equid (const Real *grid, int n) |
| Check if a grid is equidistant. | |
| void | orb5x::spclibs::locintv (const Spline1D &sp, Real x, int &left) |
| Locate interval containing x in spline knot sequence. | |
| void | orb5x::spclibs::set_splcoef (Spline1D &sp, const Real *fvals, Real *bcoef) |
| Set spline coefficients from function values. | |
| void | orb5x::spclibs::set_spline (const int p[2], const int ngauss[2], const Real *grid1, int ngrid1, const Real *grid2, int ngrid2, Spline2D &sp, const bool period[2]=nullptr, bool nlppform=true, const int nlequid[2]=nullptr) |
| Initialize a 2D spline. | |
| void | orb5x::spclibs::set_spline (const int p[3], const int ngauss[3], const Real *grid1, int ngrid1, const Real *grid2, int ngrid2, const Real *grid3, int ngrid3, Spline2D1D &sp, const bool period[3]=nullptr, bool nlppform=true, const int nlequid[3]=nullptr) |
| Initialize a 2D+1D spline. | |
| void | orb5x::spclibs::set_spline (int p, int ngauss, const Real *grid, int ngrid, Spline1D &sp, bool period=false, bool nlppform=true, int nlequid=-1) |
| Initialize a 1D spline. | |
B-spline types and operations for spclibs C++ port.
This file is a C++ translation of the Fortran module bsplines.f90 from spclibs. It provides B-spline interpolation and finite element discretization.
Key types: