1 #ifndef FOURIER_FILTER_HPP
2 #define FOURIER_FILTER_HPP
17 KOKKOS_INLINE_FUNCTION
double get_damp_fac(
double psi,
double inpsi,
double outpsi,
double bd_width){
18 double damp_fac = 0.5*( tanh(2.0*(psi-inpsi )/bd_width)
19 - tanh(2.0*(psi-outpsi)/bd_width) );
20 return (damp_fac>1.0e-6 ? damp_fac : 0.0);
112 int get_dir(
int ntor_real)
const;
119 std::vector<std::vector<View<double*, CLayout, HostType>>>
x_ordered_h;
121 std::vector<std::vector<View<double*, CLayout, HostType>>>
x_uniform_h;
124 std::vector<std::vector<View<Complex*, CLayout, HostType>>>
spec_h;
136 void fft_execute(
int isurf,
const View<double*,CLayout,HostType>& x,
const View<Complex*,CLayout,HostType>& spec)
const;
138 void set_nonaligned(
const View<double**,CLayout,HostType>& x)
const;
140 void set_nonaligned(
const View<double**,CLayout,DeviceType>& x)
const;
167 void n_m_range(
int nplanes,
const View<double*,CLayout,HostType>& view,
const Options& options)
const;
Definition: fourier_filter.hpp:23
View< int *, CLayout, DeviceType > m_limit
Definition: fourier_filter.hpp:83
int nplanes
Definition: fourier_filter.hpp:111
View< int **, CLayout, DeviceType > m_minmax
Definition: fourier_filter.hpp:90
FourierFilter()
Definition: fourier_filter.hpp:151
std::vector< std::vector< View< double *, CLayout, HostType > > > x_uniform_h
Definition: fourier_filter.hpp:121
View< int *, CLayout, HostType > uni_offsets
Definition: fourier_filter.hpp:75
View< int *, CLayout, DeviceType > freq_surf_map
Definition: fourier_filter.hpp:77
int wedge_n
Definition: fourier_filter.hpp:110
int max_n_points
Definition: fourier_filter.hpp:67
View< int *, CLayout, DeviceType > mapping_all
Definition: fourier_filter.hpp:96
View< double **, CLayout, HostType > grid_non_aligned_ff_w
Definition: fourier_filter.hpp:134
View< int *, CLayout, HostType > nuni_on_surf
Definition: fourier_filter.hpp:71
void fft_execute(int isurf, const View< double *, CLayout, HostType > &x, const View< Complex *, CLayout, HostType > &spec) const
Definition: fourier_filter.cpp:446
void m_range_all_surfs(const View< double **, CLayout, DeviceType > &x, const Options &options) const
Definition: fourier_filter.cpp:690
void m_range(const DomainDecomposition< DeviceType > &pol_decomp, const Options &options, const View< double *, CLayout, HostType > &x) const
Definition: fourier_filter.cpp:815
FilterMode
Definition: fourier_filter.hpp:31
View< double **, CLayout, HostType > x_ordered_h_view
Definition: fourier_filter.hpp:118
int get_n_points(int n_nodes) const
Definition: fourier_filter.cpp:66
void set_nonaligned(const View< double **, CLayout, HostType > &x) const
Definition: fourier_filter.cpp:754
std::vector< std::vector< View< Complex *, CLayout, HostType > > > spec_h
Definition: fourier_filter.hpp:124
View< double *, CLayout, DeviceType > inv_npt
Definition: fourier_filter.hpp:80
std::vector< FFTWrapper > fft_plan
Definition: fourier_filter.hpp:93
static void single_n_flex(const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const View< double *, CLayout, HostType > &view_in, const View< double **, CLayout, HostType > &result, const Options &options, int ntor_num)
Definition: fourier_filter.cpp:881
View< Complex **, CLayout, HostType > spec_h_view
Definition: fourier_filter.hpp:123
std::vector< std::vector< View< double *, CLayout, HostType > > > x_ordered_h
Definition: fourier_filter.hpp:119
View< int *, CLayout, HostType > grid_non_aligned_vert
Definition: fourier_filter.hpp:132
View< double *, CLayout, DeviceType > psi_surf
Definition: fourier_filter.hpp:114
View< int *, CLayout, HostType > node_offsets_h
Definition: fourier_filter.hpp:73
int nsurf
Definition: fourier_filter.hpp:65
void m_range_one_surf(int isurf, const View< double **, CLayout, HostType > &x, const Options &options) const
View< double **, CLayout, DeviceType > non_aligned_ff_w
Definition: fourier_filter.hpp:130
View< int *, CLayout, DeviceType > m_max_surf
Definition: fourier_filter.hpp:85
View< double *, CLayout, DeviceType > theta_all
Definition: fourier_filter.hpp:97
void destroy()
Definition: fourier_filter.cpp:450
View< UniformRange *, CLayout, HostType > theta_uniform_range_all
Definition: fourier_filter.hpp:100
int b_sign
Definition: fourier_filter.hpp:109
View< Complex **, CLayout, DeviceType > spec_all
Definition: fourier_filter.hpp:122
View< int *, CLayout, DeviceType > non_aligned_vert
Definition: fourier_filter.hpp:128
ScrapeOffLayerMethod
Definition: fourier_filter.hpp:25
View< int *, CLayout, DeviceType > freq_offsets
Definition: fourier_filter.hpp:74
View< double *, CLayout, DeviceType > qsafety
Definition: fourier_filter.hpp:84
View< int *, CLayout, DeviceType > node_offsets
Definition: fourier_filter.hpp:72
static void single_n(const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const View< double *, CLayout, HostType > &view, const Options &options)
Definition: fourier_filter.cpp:849
View< double **, CLayout, DeviceType > x_ordered_all
Definition: fourier_filter.hpp:117
View< bool *, CLayout, HostType > is_periodic
Definition: fourier_filter.hpp:68
View< double **, CLayout, HostType > x_uniform_h_view
Definition: fourier_filter.hpp:120
View< double *, CLayout, HostType > theta_all_h
Definition: fourier_filter.hpp:98
View< double *, CLayout, DeviceType > window_all
Definition: fourier_filter.hpp:103
int mres_q
Definition: fourier_filter.hpp:86
int get_dir(int ntor_real) const
Definition: fourier_filter.cpp:536
void apply(const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const Options &options, const View< double *, CLayout, HostType > &view) const
Definition: fourier_filter.cpp:915
View< int **, CLayout, HostType > grid_non_aligned_ff_idx
Definition: fourier_filter.hpp:133
int get_n_frequencies(int n_points) const
Definition: fourier_filter.cpp:72
View< int **, CLayout, DeviceType > non_aligned_ff_idx
Definition: fourier_filter.hpp:129
View< int *, CLayout, DeviceType > nfreq_on_surf
Definition: fourier_filter.hpp:70
View< bool *, CLayout, HostType > run_filter
Definition: fourier_filter.hpp:66
std::vector< SplinePrecomputations< HostType > > spline_precomputation
Definition: fourier_filter.hpp:106
View< int *, CLayout, DeviceType > nnodes_on_surf
Definition: fourier_filter.hpp:69
void n_m_range(int nplanes, const View< double *, CLayout, HostType > &view, const Options &options) const
Definition: fourier_filter.cpp:830
View< int *, CLayout, DeviceType > node_surf_map
Definition: fourier_filter.hpp:76
Definition: magnetic_field.hpp:12
Definition: NamelistReader.hpp:193
Definition: plasma.hpp:13
KOKKOS_INLINE_FUNCTION double get_damp_fac(double psi, double inpsi, double outpsi, double bd_width)
Definition: fourier_filter.hpp:17
Definition: magnetic_field.F90:1
subroutine plasma(grid, itr, p, dene_out, deni_out, Te_out, Ti_out, Vparai_out, ignore_vacuum)
Calculate the plasma density, temperature, and parallel velocity for a point in triangle itr using pl...
Definition: neutral_totalf.F90:1548
Definition: fourier_filter.hpp:39
int nmin
Definition: fourier_filter.hpp:53
bool is_spectral
Definition: fourier_filter.hpp:45
int ntor_real
Definition: fourier_filter.hpp:47
int nmax_real
Definition: fourier_filter.hpp:56
double outpsi
Definition: fourier_filter.hpp:41
bool bands_on
Definition: fourier_filter.hpp:52
ScrapeOffLayerMethod sol_method
Definition: fourier_filter.hpp:48
FilterMode mode
Definition: fourier_filter.hpp:58
double inpsi
Definition: fourier_filter.hpp:40
bool is_resonant
Definition: fourier_filter.hpp:46
double bd_width
Definition: fourier_filter.hpp:42
int minm
Definition: fourier_filter.hpp:43
int nmax
Definition: fourier_filter.hpp:54
int nmin_real
Definition: fourier_filter.hpp:55
int single_n
Definition: fourier_filter.hpp:61
int maxm
Definition: fourier_filter.hpp:44
bool div_mix
Definition: fourier_filter.hpp:51