FNFT
fnft_nsep.h
Go to the documentation of this file.
1 /*
2 * This file is part of FNFT.
3 *
4 * FNFT is free software; you can redistribute it and/or
5 * modify it under the terms of the version 2 of the GNU General
6 * Public License as published by the Free Software Foundation.
7 *
8 * FNFT is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Contributors:
17 * Sander Wahls (TU Delft) 2017-2018, 2020.
18 * Shrinivas Chimmalgi (TU Delft) 2020.
19 */
20 
28 #ifndef FNFT_NSEP_H
29 #define FNFT_NSEP_H
30 
31 #include "fnft__errwarn.h"
32 #include "fnft__misc.h" // for misc_filter
35 #include "fnft__nse_scatter.h"
36 #include "fnft__nse_fscatter.h"
37 #include <string.h> // for memcpy
38 
54 typedef enum {
55  fnft_nsep_loc_SUBSAMPLE_AND_REFINE,
56  fnft_nsep_loc_GRIDSEARCH,
57  fnft_nsep_loc_MIXED
59 
70 typedef enum {
71  fnft_nsep_filt_NONE,
72  fnft_nsep_filt_MANUAL,
73  fnft_nsep_filt_AUTO
75 
140 typedef struct {
143  FNFT_REAL bounding_box[4];
147  FNFT_REAL floquet_range[2];
152 
173 
263 FNFT_INT fnft_nsep(const FNFT_UINT D, FNFT_COMPLEX const * const q,
264  FNFT_REAL const * const T, FNFT_REAL const phase_shift, FNFT_UINT * const K_ptr,
265  FNFT_COMPLEX * const main_spec, FNFT_UINT * const M_ptr,
266  FNFT_COMPLEX * const aux_spec, FNFT_REAL * const sheet_indices,
267  const FNFT_INT kappa, fnft_nsep_opts_t * opts);
268 
269 #endif
fnft_nsep_opts_t::discretization
fnft_nse_discretization_t discretization
Definition: fnft_nsep.h:145
FNFT_INT
int32_t FNFT_INT
Definition: fnft_numtypes.h:56
FNFT_UINT
size_t FNFT_UINT
Definition: fnft_numtypes.h:62
fnft__nse_fscatter.h
Computes the polynomial approximation of the combined scattering matrix.
fnft_nsep
FNFT_INT fnft_nsep(const FNFT_UINT D, FNFT_COMPLEX const *const q, FNFT_REAL const *const T, FNFT_REAL const phase_shift, FNFT_UINT *const K_ptr, FNFT_COMPLEX *const main_spec, FNFT_UINT *const M_ptr, FNFT_COMPLEX *const aux_spec, FNFT_REAL *const sheet_indices, const FNFT_INT kappa, fnft_nsep_opts_t *opts)
Fast nonlinear Fourier transform for the nonlinear Schroedinger equation with (quasi-)periodic bounda...
fnft_nse_discretization_t
fnft_nse_discretization_t
Enum that specifies discretizations and methods used to compute nonlinear Fourier transforms for the ...
Definition: fnft_nse_discretization_t.h:104
fnft__errwarn.h
fnft_nsep_opts_t
Stores additional options for the routine fnft_nsep.
Definition: fnft_nsep.h:140
fnft_nsep_opts_t::max_evals
FNFT_UINT max_evals
Definition: fnft_nsep.h:144
fnft__misc.h
Miscellaneous functions used in the FNFT library.
fnft_nsep_opts_t::filtering
fnft_nsep_filt_t filtering
Definition: fnft_nsep.h:142
fnft_nsep_opts_t::normalization_flag
FNFT_INT normalization_flag
Definition: fnft_nsep.h:146
fnft_nsep_filt_t
fnft_nsep_filt_t
Definition: fnft_nsep.h:70
fnft__poly_roots_fasteigen.h
Fast root finding of polynomials.
FNFT_COMPLEX
double complex FNFT_COMPLEX
Definition: fnft_numtypes.h:47
fnft_nsep_default_opts
fnft_nsep_opts_t fnft_nsep_default_opts()
Creates a new options variable for fnft_nsep with default settings.
fnft_nsep_loc_t
fnft_nsep_loc_t
Definition: fnft_nsep.h:54
FNFT_REAL
double FNFT_REAL
Definition: fnft_numtypes.h:40
fnft_nsep_opts_t::tol
FNFT_REAL tol
Definition: fnft_nsep.h:150
fnft__poly_roots_fftgridsearch.h
Approximation of polynomial roots on the unit circle using gridding.
fnft_nsep_opts_t::Dsub
FNFT_UINT Dsub
Definition: fnft_nsep.h:149
fnft_nsep_opts_t::localization
fnft_nsep_loc_t localization
Definition: fnft_nsep.h:141
fnft__nse_scatter.h
Slow forward scattering.
fnft_nsep_opts_t::points_per_spine
FNFT_UINT points_per_spine
Definition: fnft_nsep.h:148