FNFT
Files | Classes | Functions
Fast inverse nonlinear Fourier transforms
Collaboration diagram for Fast inverse nonlinear Fourier transforms:

Files

file  fnft_nsev_inverse.h
 Fast inverse nonlinear Fourier transform for the vanishing nonlinear Schroedinger equation.
 

Classes

struct  fnft_nsev_inverse_opts_t
 Stores additional options for the routine fnft_nsev_inverse. More...
 

Functions

fnft_nsev_inverse_opts_t fnft_nsev_inverse_default_opts ()
 Creates a new options variable for fnft_nsev_inverse with default settings. More...
 
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 a continuous spectrum to fnft_nsev_inverse. More...
 
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 boundary conditions. More...
 

Detailed Description

Function Documentation

◆ 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 boundary conditions.

This routine inverts the nonlinear Fourier transform for the nonlinear Schroedinger equation

\[ iq_x + q_{tt} \pm 2q|q|^2=0, \quad q=q(x,t), \]

of Zakharov and Shabat (Soviet. Phys. JTEP 31(1), 1972) for initial conditions with vanishing boundaries

\[ \lim_{t\to \pm \infty }q(x_0,t) = 0 \text{ sufficiently rapidly.} \]

This routine is the counter part to fnft_nsev. The main references are

Parameters
[in]MNumber of samples of the continuous spectrum.
[in,out]contspecArray of length M, contains samples \( \hat{q}(\xi_n) \), where \( \xi_n = XI[0] + n(XI[1]-XI[0])/(M-1) \) and \(n=0,1,\dots,M-1\), of the to-be-inverted continuous spectrum in ascending order (i.e., \( \hat{q}(\xi_0), \hat{q}(\xi_1), \dots, \hat{q}(\xi_{M-1}) \)). Please note that the routine currently might overwrite this array.
[in]XIArray of length 2, contains the position of the first and the last sample of the continuous spectrum. Currently, the positions returned by fnft_nsev_inverse_XI MUST be used. It is NOT checked whether the user adheres to this requirement.
[in]KNumber of discrete spectrum points.
[in]bound_statesComplex array of length K. Complex roots of \( a(\xi) \) in the upper half of the complex-plane.
[in]normconsts_or_residuesComplex array of length K. Values of either the norming constants \( b(\xi) \) or the residues \( \frac{b(\xi)}{\partial{a(\xi)}/\partial{\xi}}\) at the values bound_states.
[in]DNumber of samples of the to be generated signal q. Should be a positive power of two.
[out]qArray of length D. Is filled with samples \( q(t_n) \), where \( t_n = T[0] + n(T[1]-T[0])/(D-1) \) and \(n=0,1,\dots,D-1\), of the to-be-generated signal in ascending order (i.e., \( q(t_0), q(t_1), \dots, q(t_{D-1}) \)).
[in]TArray of length 2, contains the position in time of the first and of the last sample of q. It should be T[0]<T[1].
[in]kappa=+1 for the focusing nonlinear Schroedinger equation, =-1 for the defocusing one.
[in]opts_ptrPointer to a fnft_nsev_inverse_opts_t object. The object can be used to modify the behavior of the routine. Use the routine fnft_nsev_inverse_default_opts to generate such an object and modify as desired. It is also possible to pass NULL, in which case the routine will use the default options. The user is reponsible to freeing the object after the routine has returned.
Returns
FNFT_SUCCESS or one of the FNFT_EC_... error codes defined in fnft_errwarn.h.

◆ 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.

Returns
A fnft_nsev_inverse_opts_t object with the following options.

discretization = fnft_nse_discretization_2SPLIT2A

contspec_type = fnft_nsev_inverse_cstype_REFLECTION_COEFFICIENT

contspec_inverse_method = fnft_nsev_inverse_csmethod_DEFAULT

discspec_type = fnft_nsev_inverse_dstype_NORMING_CONSTANTS

max_iter = 100

oversampling_factor = 8

◆ 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 a continuous spectrum to fnft_nsev_inverse.

Parameters
[in]DNumber of samples of the to be generated signal q. Should be >=2.
[in]TArray of length two. Contains the desired location of the first and last sample of the signal q.
[in]MNumber of samples in the nonlinear frequency domain.
[out]XIArray of length 2. Will be overwritten with the desired values specifying the grid for the continuous spectrum.
Returns
FNFT_SUCCESS or one of the FNFT_EC_... error codes defined in fnft_errwarn.h.
Parameters
[in]discretizationSee fnft__nse_finvscatter. Currently, only the 2SPLIT2_MODAL and 2SPLIT2A discretizations are supported.