FNFT
Loading...
Searching...
No Matches
fnft_manakovv.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* Contributor:
17* Lianne de Vries (TU Delft student) 2021.
18* Sander Wahls (TU Delft) 2021.
19*/
20
21#ifndef FNFT_MANAKOVV_H
22#define FNFT_MANAKOVV_H
23
31#include "fnft__misc.h" // for l2norm
32#include <string.h> // for memcpy
33#include <stdio.h>
34#include "fnft__errwarn.h"
36#include "fnft__poly_chirpz.h"
38
48typedef enum {
49 fnft_manakovv_bsfilt_NONE,
50 fnft_manakovv_bsfilt_BASIC,
51 fnft_manakovv_bsfilt_FULL
53
67typedef enum {
68 fnft_manakovv_bsloc_FAST_EIGENVALUE,
69 fnft_manakovv_bsloc_NEWTON,
70 fnft_manakovv_bsloc_SUBSAMPLE_AND_REFINE
72
80typedef enum {
81 fnft_manakovv_dstype_NORMING_CONSTANTS,
82 fnft_manakovv_dstype_RESIDUES,
83 fnft_manakovv_dstype_BOTH
85
102typedef enum {
103 fnft_manakovv_cstype_REFLECTION_COEFFICIENT,
104 fnft_manakovv_cstype_AB,
105 fnft_manakovv_cstype_BOTH
107
170typedef struct {
181
200
214
215
320FNFT_INT fnft_manakovv(const FNFT_UINT D, FNFT_COMPLEX const* const q1, FNFT_COMPLEX const* const q2,
321 FNFT_REAL const* const T, const FNFT_UINT M,
322 FNFT_COMPLEX* const contspec, FNFT_REAL const* const XI,
323 FNFT_UINT* const K_ptr, FNFT_COMPLEX* const bound_states,
324 FNFT_COMPLEX* const normconsts_or_residues, const FNFT_INT kappa,
326
327#ifdef FNFT_ENABLE_SHORT_NAMES
328#define manakovv_bsfilt_NONE fnft_manakovv_bsfilt_NONE
329#define manakovv_bsfilt_BASIC fnft_manakovv_bsfilt_BASIC
330#define manakovv_bsfilt_FULL fnft_manakovv_bsfilt_FULL
331#define manakovv_bsloc_FAST_EIGENVALUE fnft_manakovv_bsloc_FAST_EIGENVALUE
332#define manakovv_bsloc_NEWTON fnft_manakovv_bsloc_NEWTON
333#define manakovv_bsloc_SUBSAMPLE_AND_REFINE fnft_manakovv_bsloc_SUBSAMPLE_AND_REFINE
334#define manakovv_dstype_NORMING_CONSTANTS fnft_manakovv_dstype_NORMING_CONSTANTS
335#define manakovv_dstype_RESIDUES fnft_manakovv_dstype_RESIDUES
336#define manakovv_dstype_BOTH fnft_manakovv_dstype_BOTH
337#define manakovv_cstype_REFLECTION_COEFFICIENT fnft_manakovv_cstype_REFLECTION_COEFFICIENT
338#define manakovv_cstype_AB fnft_manakovv_cstype_AB
339#define manakovv_cstype_BOTH fnft_manakovv_cstype_BOTH
340#endif
341
342#endif // FNFT_MANAKOVV_H
Computes the polynomial approximation of the combined scattering matrix.
Slow forward scattering.
Miscellaneous functions used in the FNFT library.
Fast evaluation of polynomials using the Chirp Z-transform.
Fast root finding of polynomials.
Lists discretizations for the Manakov Equation.
fnft_manakovv_bsloc_t
Definition fnft_manakovv.h:67
fnft_manakovv_dstype_t
Definition fnft_manakovv.h:80
fnft_manakovv_bsfilt_t
Definition fnft_manakovv.h:48
fnft_manakov_discretization_t
Enum that specifies discretizations and methods used to compute nonlinear Fourier transforms for the ...
Definition fnft_manakov_discretization_t.h:88
fnft_manakovv_cstype_t
Definition fnft_manakovv.h:102
FNFT_INT fnft_manakovv(const FNFT_UINT D, FNFT_COMPLEX const *const q1, FNFT_COMPLEX const *const q2, FNFT_REAL const *const T, const FNFT_UINT M, FNFT_COMPLEX *const contspec, FNFT_REAL const *const XI, FNFT_UINT *const K_ptr, FNFT_COMPLEX *const bound_states, FNFT_COMPLEX *const normconsts_or_residues, const FNFT_INT kappa, fnft_manakovv_opts_t *opts)
Nonlinear Fourier transform for the Manakov equation with vanishing boundary conditions....
fnft_manakovv_opts_t fnft_manakovv_default_opts()
Creates a new options variable for fnft_manakovv with default settings.
FNFT_UINT fnft_manakovv_max_K(const FNFT_UINT D, fnft_manakovv_opts_t const *const opts)
Returns the maximum number of bound states that can be detected by fnft_manakovv.
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_manakovv.
Definition fnft_manakovv.h:170
fnft_manakov_discretization_t discretization
Definition fnft_manakovv.h:178
FNFT_UINT Dsub
Definition fnft_manakovv.h:174
fnft_manakovv_bsloc_t bound_state_localization
Definition fnft_manakovv.h:172
fnft_manakovv_cstype_t contspec_type
Definition fnft_manakovv.h:176
FNFT_INT normalization_flag
Definition fnft_manakovv.h:177
FNFT_UINT niter
Definition fnft_manakovv.h:173
fnft_manakovv_dstype_t discspec_type
Definition fnft_manakovv.h:175
fnft_manakovv_bsfilt_t bound_state_filtering
Definition fnft_manakovv.h:171
FNFT_UINT richardson_extrapolation_flag
Definition fnft_manakovv.h:179