FNFT
fnft_nsev_inverse.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) 2018.
18  */
19 
27 #ifndef FNFT_NSEV_INVERSE_H
28 #define FNFT_NSEV_INVERSE_H
29 
31 
51 typedef enum {
52  fnft_nsev_inverse_cstype_REFLECTION_COEFFICIENT,
53  fnft_nsev_inverse_cstype_B_OF_XI,
54  fnft_nsev_inverse_cstype_B_OF_TAU
56 
69 typedef enum {
70  fnft_nsev_inverse_dstype_NORMING_CONSTANTS,
71  fnft_nsev_inverse_dstype_RESIDUES
73 
101 typedef enum {
102  fnft_nsev_inverse_csmethod_DEFAULT,
103  fnft_nsev_inverse_csmethod_TFMATRIX_CONTAINS_REFL_COEFF,
104  fnft_nsev_inverse_csmethod_TFMATRIX_CONTAINS_AB_FROM_ITER,
105  fnft_nsev_inverse_csmethod_USE_SEED_POTENTIAL_INSTEAD
107 
108 
149 typedef struct {
157 
173 
193  const FNFT_UINT D,
194  FNFT_REAL const * const T,
195  const FNFT_UINT M,
196  FNFT_REAL * const XI,
197  const fnft_nse_discretization_t discretization);
198 
267  const FNFT_UINT M,
268  FNFT_COMPLEX * const contspec,
269  FNFT_REAL const * const XI,
270  FNFT_UINT const K,
271  FNFT_COMPLEX const * const bound_states,
272  FNFT_COMPLEX const * const normconsts_or_residues,
273  const FNFT_UINT D,
274  FNFT_COMPLEX * const q,
275  FNFT_REAL const * const T,
276  const FNFT_INT kappa,
277  fnft_nsev_inverse_opts_t *opts_ptr);
278 
279 #endif
FNFT_INT
int32_t FNFT_INT
Definition: fnft_numtypes.h:56
FNFT_UINT
size_t FNFT_UINT
Definition: fnft_numtypes.h:62
fnft_nsev_inverse_opts_t::oversampling_factor
FNFT_UINT oversampling_factor
Definition: fnft_nsev_inverse.h:155
fnft_nsev_inverse_opts_t::discretization
fnft_nse_discretization_t discretization
Definition: fnft_nsev_inverse.h:150
fnft_nsev_inverse
FNFT_INT fnft_nsev_inverse(const FNFT_UINT M, FNFT_COMPLEX *const contspec, FNFT_REAL const *const XI, FNFT_UINT const K, FNFT_COMPLEX const *const bound_states, FNFT_COMPLEX const *const normconsts_or_residues, const FNFT_UINT D, FNFT_COMPLEX *const q, FNFT_REAL const *const T, const FNFT_INT kappa, fnft_nsev_inverse_opts_t *opts_ptr)
Fast inverse nonlinear Fourier transform for the nonlinear Schroedinger equation with vanishing bound...
fnft_nse_discretization_t
fnft_nse_discretization_t
Enum that specifies discretizations used to compute nonlinear Fourier transforms for the Nonlinear Sc...
Definition: fnft_nse_discretization_t.h:98
fnft_nsev_inverse_XI
FNFT_INT fnft_nsev_inverse_XI(const FNFT_UINT D, FNFT_REAL const *const T, const FNFT_UINT M, FNFT_REAL *const XI, const fnft_nse_discretization_t discretization)
Determines the locations of the first and last sample of the grid that has to be used when providing ...
fnft_nsev_inverse_opts_t::contspec_inversion_method
fnft_nsev_inverse_csmethod_t contspec_inversion_method
Definition: fnft_nsev_inverse.h:152
fnft_nse_discretization_t.h
Lists discretizations for the nonlinear Schroedinger equation.
fnft_nsev_inverse_cstype_t
fnft_nsev_inverse_cstype_t
Definition: fnft_nsev_inverse.h:51
fnft_nsev_inverse_default_opts
fnft_nsev_inverse_opts_t fnft_nsev_inverse_default_opts()
Creates a new options variable for fnft_nsev_inverse with default settings.
fnft_nsev_inverse_csmethod_t
fnft_nsev_inverse_csmethod_t
Definition: fnft_nsev_inverse.h:101
FNFT_COMPLEX
double complex FNFT_COMPLEX
Definition: fnft_numtypes.h:47
fnft_nsev_inverse_opts_t::contspec_type
fnft_nsev_inverse_cstype_t contspec_type
Definition: fnft_nsev_inverse.h:151
fnft_nsev_inverse_opts_t
Stores additional options for the routine fnft_nsev_inverse.
Definition: fnft_nsev_inverse.h:149
FNFT_REAL
double FNFT_REAL
Definition: fnft_numtypes.h:40
fnft_nsev_inverse_opts_t::discspec_type
fnft_nsev_inverse_dstype_t discspec_type
Definition: fnft_nsev_inverse.h:153
fnft_nsev_inverse_opts_t::max_iter
FNFT_UINT max_iter
Definition: fnft_nsev_inverse.h:154
fnft_nsev_inverse_dstype_t
fnft_nsev_inverse_dstype_t
Definition: fnft_nsev_inverse.h:69