FNFT
|
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... | |
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
[in] | M | Number of samples of the continuous spectrum. |
[in,out] | contspec | Array 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] | XI | Array 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] | K | Number of discrete spectrum points. |
[in] | bound_states | Complex array of length K. Complex roots of \( a(\xi) \) in the upper half of the complex-plane. |
[in] | normconsts_or_residues | Complex 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] | D | Number of samples of the to be generated signal q. Should be a positive power of two. |
[out] | q | Array 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] | T | Array 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_ptr | Pointer 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. |
fnft_nsev_inverse_opts_t fnft_nsev_inverse_default_opts | ( | ) |
Creates a new options variable for fnft_nsev_inverse with default settings.
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.
[in] | D | Number of samples of the to be generated signal q. Should be >=2. |
[in] | T | Array of length two. Contains the desired location of the first and last sample of the signal q. |
[in] | M | Number of samples in the nonlinear frequency domain. |
[out] | XI | Array of length 2. Will be overwritten with the desired values specifying the grid for the continuous spectrum. |
[in] | discretization | See fnft__nse_finvscatter. Currently, only the 2SPLIT2_MODAL and 2SPLIT2A discretizations are supported. |