|
ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
|
Fourier filter for field-aligned modes. More...
#include "fourier_filter.hpp"
Public Member Functions | |
| void | em_get_matrix_filter (Kokkos::View< int * > &nqsmin, int mode) const |
| Retrieve electromagnetic poloidal filter bounds for a given toroidal mode. | |
| FourierFilter (int NBmodesGlobal_, const Kokkos::View< int ** > &nfiltglobal_, int dm_, int nm_) | |
| Construct and fully initialise the ES Fourier filter. | |
| void | get_matrix_filter (Kokkos::View< int * > &nqsmin, int mode) const |
| Retrieve poloidal filter bounds (mminglobal) for a given toroidal mode. | |
| void | initEM (int em_NBmodesGlobal_, const Kokkos::View< int ** > &nfiltglobal_, int dm_, int nm_) |
| Add electromagnetic filter arrays to this instance. | |
| ~FourierFilter ()=default | |
| Default destructor — Kokkos Views are reference-counted. | |
Static Public Member Functions | |
| static void | destroyFourierFilterModule () |
| Destroy the global singleton. | |
| static void | em_initFourierFilter (int NBmodesGlobal_, const Kokkos::View< int ** > &nfiltglobal_, int dm_, int nm_) |
| Add EM filter to the global singleton (matches old static em_initFourierFilter). | |
| static void | initFourierFilter (int NBmodesGlobal_, const Kokkos::View< int ** > &nfiltglobal_, int dm_, int nm_) |
| Create/replace the global singleton (matches old static initFourierFilter). | |
| static FourierFilter & | instance () |
| Access the global singleton. | |
Public Attributes | |
| int | dm = 0 |
| Half-width of poloidal mode filter. | |
| Kokkos::View< int ** > | em_mmaxglobal |
| Kokkos::View< int ** > | em_mminglobal |
| Kokkos::View< int ** > | em_mminglobal_ |
| int | em_NBmodesGlobal = 0 |
| Number of EM toroidal modes. | |
| Kokkos::View< int ** > | em_nfiltglobal |
| Kokkos::View< int ** > | mmaxglobal |
| Upper poloidal mode bounds. | |
| Kokkos::View< int ** > | mminglobal |
| Lower poloidal mode bounds [nx+degree-1, NBmodesGlobal]. | |
| Kokkos::View< int ** > | mminglobal_ |
| mminglobal modulo ny | |
| int | NBmodesGlobal = 0 |
| Number of ES toroidal modes. | |
| Kokkos::View< int ** > | nfiltglobal |
| Toroidal mode list [NBmodesGlobal, 2]. | |
| int | nm = 0 |
| Minimum number of poloidal modes. | |
Fourier filter for field-aligned modes.
Fortran reference: module FourierFilter (FourierFilter.F90)
Instance-based class: the constructor builds the ES filter arrays, and initEM() adds the EM filter arrays to the same instance. A static singleton (s_instance_) provides backward-compatible global access.
| orb5x::FourierFilter::FourierFilter | ( | int | NBmodesGlobal_, |
| const Kokkos::View< int ** > & | nfiltglobal_, | ||
| int | dm_, | ||
| int | nm_ ) |
Construct and fully initialise the ES Fourier filter.
Reads grid parameters from BSplinesBasis::instance().
| NBmodesGlobal_ | Number of global toroidal modes |
| nfiltglobal_ | Array [NBmodesGlobal][2]: (mode_number, cpu_index) |
| dm_ | Half-width of poloidal mode filter |
| nm_ | Minimum number of poloidal modes (nm = 1 + 2*dm) |
Fortran ref: subroutine initFourierFilter (FourierFilter.F90 lines 22-31)
Referenced by instance().
|
default |
Default destructor — Kokkos Views are reference-counted.
|
static |
Destroy the global singleton.
Must be called before Kokkos::finalize(). (No direct Fortran equivalent; added for C++ RAII correctness.)
| void orb5x::FourierFilter::em_get_matrix_filter | ( | Kokkos::View< int * > & | nqsmin, |
| int | mode ) const |
Retrieve electromagnetic poloidal filter bounds for a given toroidal mode.
Fortran ref: subroutine em_get_matrix_filter (FourierFilter.F90 lines 216-228)
|
static |
Add EM filter to the global singleton (matches old static em_initFourierFilter).
Fortran ref: subroutine em_initFourierFilter (FourierFilter.F90 lines 33-42)
| void orb5x::FourierFilter::get_matrix_filter | ( | Kokkos::View< int * > & | nqsmin, |
| int | mode ) const |
Retrieve poloidal filter bounds (mminglobal) for a given toroidal mode.
Fortran ref: subroutine get_matrix_filter (FourierFilter.F90 lines 202-214)
| void orb5x::FourierFilter::initEM | ( | int | em_NBmodesGlobal_, |
| const Kokkos::View< int ** > & | nfiltglobal_, | ||
| int | dm_, | ||
| int | nm_ ) |
Add electromagnetic filter arrays to this instance.
Fortran ref: subroutine em_initFourierFilter (FourierFilter.F90 lines 33-42)
|
static |
Create/replace the global singleton (matches old static initFourierFilter).
Fortran ref: subroutine initFourierFilter (FourierFilter.F90 lines 22-31)
|
static |
| int orb5x::FourierFilter::dm = 0 |
Half-width of poloidal mode filter.
| Kokkos::View<int**> orb5x::FourierFilter::em_mmaxglobal |
| Kokkos::View<int**> orb5x::FourierFilter::em_mminglobal |
| Kokkos::View<int**> orb5x::FourierFilter::em_mminglobal_ |
| int orb5x::FourierFilter::em_NBmodesGlobal = 0 |
Number of EM toroidal modes.
| Kokkos::View<int**> orb5x::FourierFilter::em_nfiltglobal |
| Kokkos::View<int**> orb5x::FourierFilter::mmaxglobal |
Upper poloidal mode bounds.
| Kokkos::View<int**> orb5x::FourierFilter::mminglobal |
Lower poloidal mode bounds [nx+degree-1, NBmodesGlobal].
| Kokkos::View<int**> orb5x::FourierFilter::mminglobal_ |
mminglobal modulo ny
| int orb5x::FourierFilter::NBmodesGlobal = 0 |
Number of ES toroidal modes.
| Kokkos::View<int**> orb5x::FourierFilter::nfiltglobal |
Toroidal mode list [NBmodesGlobal, 2].
| int orb5x::FourierFilter::nm = 0 |
Minimum number of poloidal modes.