FNFT
Loading...
Searching...
No Matches
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-21.
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
58typedef enum {
59 fnft_nsep_loc_SUBSAMPLE_AND_REFINE,
60 fnft_nsep_loc_NEWTON,
61 fnft_nsep_loc_GRIDSEARCH,
62 fnft_nsep_loc_MIXED
64
75typedef enum {
76 fnft_nsep_filt_NONE,
77 fnft_nsep_filt_MANUAL,
78 fnft_nsep_filt_AUTO
80
145typedef struct {
148 FNFT_REAL bounding_box[4];
152 FNFT_REAL floquet_range[2];
157
178
279FNFT_INT fnft_nsep(const FNFT_UINT D, FNFT_COMPLEX const * const q,
280 FNFT_REAL const * const T, FNFT_REAL const phase_shift, FNFT_UINT * const K_ptr,
281 FNFT_COMPLEX * const main_spec, FNFT_UINT * const M_ptr,
282 FNFT_COMPLEX * const aux_spec, FNFT_REAL * const sheet_indices,
283 const FNFT_INT kappa, fnft_nsep_opts_t * opts);
284
285#endif
Miscellaneous functions used in the FNFT library.
Computes the polynomial approximation of the combined scattering matrix.
Slow forward scattering.
Fast root finding of polynomials.
Approximation of polynomial roots on the unit circle using gridding.
fnft_nsep_filt_t
Definition fnft_nsep.h:75
fnft_nsep_loc_t
Definition fnft_nsep.h:58
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_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_nsep_opts_t fnft_nsep_default_opts()
Creates a new options variable for fnft_nsep with default settings.
size_t FNFT_UINT
Definition fnft_numtypes.h:62
double complex FNFT_COMPLEX
Definition fnft_numtypes.h:47
int32_t FNFT_INT
Definition fnft_numtypes.h:56
double FNFT_REAL
Definition fnft_numtypes.h:40
Stores additional options for the routine fnft_nsep.
Definition fnft_nsep.h:145
FNFT_UINT Dsub
Definition fnft_nsep.h:154
fnft_nsep_loc_t localization
Definition fnft_nsep.h:146
FNFT_REAL tol
Definition fnft_nsep.h:155
FNFT_UINT points_per_spine
Definition fnft_nsep.h:153
FNFT_UINT max_evals
Definition fnft_nsep.h:149
FNFT_INT normalization_flag
Definition fnft_nsep.h:151
fnft_nsep_filt_t filtering
Definition fnft_nsep.h:147
fnft_nse_discretization_t discretization
Definition fnft_nsep.h:150