FNFT
fnft__nse_discretization.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.
18  * Shrinivas Chimmalgi (TU Delft) 2017.
19  */
20 
29 #ifndef FNFT__NSE_DISCRETIZATION_H
30 #define FNFT__NSE_DISCRETIZATION_H
31 
34 
35 
36 
37 
49  nse_discretization);
50 
66 
83  fnft__akns_discretization_t * const akns_discretization);
84 
85 
105 FNFT_INT fnft__nse_lambda_to_z(const FNFT_UINT n, const FNFT_REAL eps_t,
106  FNFT_COMPLEX * const vals, fnft_nse_discretization_t discretization);
107 
127 FNFT_INT fnft__nse_z_to_lambda(const FNFT_UINT n, const FNFT_REAL eps_t,
128  FNFT_COMPLEX * const vals, fnft_nse_discretization_t discretization);
129 
150  FNFT_REAL * const phase_factor_rho, fnft_nse_discretization_t nse_discretization);
151 
171 FNFT_INT fnft__nse_phase_factor_a(const FNFT_REAL eps_t, const FNFT_UINT D, FNFT_REAL const * const T,
172  FNFT_REAL * const phase_factor_a, fnft_nse_discretization_t nse_discretization);
173 
195 FNFT_INT fnft__nse_phase_factor_b(const FNFT_REAL eps_t, const FNFT_UINT D, FNFT_REAL const * const T,
196  FNFT_REAL * const phase_factor_b, fnft_nse_discretization_t nse_discretization);
197 
198 
199 #ifdef FNFT_ENABLE_SHORT_NAMES
200 #define nse_discretization_degree(...) fnft__nse_discretization_degree(__VA_ARGS__)
201 #define nse_discretization_boundary_coeff(...) fnft__nse_discretization_boundary_coeff(__VA_ARGS__)
202 #define nse_discretization_to_akns_discretization(...) fnft__nse_discretization_to_akns_discretization(__VA_ARGS__)
203 #define nse_lambda_to_z(...) fnft__nse_lambda_to_z(__VA_ARGS__)
204 #define nse_z_to_lambda(...) fnft__nse_z_to_lambda(__VA_ARGS__)
205 #define nse_phase_factor_rho(...) fnft__nse_phase_factor_rho(__VA_ARGS__)
206 #define nse_phase_factor_a(...) fnft__nse_phase_factor_a(__VA_ARGS__)
207 #define nse_phase_factor_b(...) fnft__nse_phase_factor_b(__VA_ARGS__)
208 #endif
209 
210 #endif
fnft__nse_phase_factor_b
FNFT_INT fnft__nse_phase_factor_b(const FNFT_REAL eps_t, const FNFT_UINT D, FNFT_REAL const *const T, FNFT_REAL *const phase_factor_b, fnft_nse_discretization_t nse_discretization)
This routine returns the phase factor for b coefficient. It is required for applying boundary conditi...
fnft__nse_lambda_to_z
FNFT_INT fnft__nse_lambda_to_z(const FNFT_UINT n, const FNFT_REAL eps_t, FNFT_COMPLEX *const vals, fnft_nse_discretization_t discretization)
This routine maps lambda from continuous-time domain to z in the discrete-time domain based on the di...
FNFT_INT
int32_t FNFT_INT
Definition: fnft_numtypes.h:56
FNFT_UINT
size_t FNFT_UINT
Definition: fnft_numtypes.h:62
fnft__nse_discretization_degree
FNFT_UINT fnft__nse_discretization_degree(fnft_nse_discretization_t nse_discretization)
This routine returns the max degree d of the polynomials in a single scattering matrix or zero if the...
fnft__nse_phase_factor_rho
FNFT_INT fnft__nse_phase_factor_rho(const FNFT_REAL eps_t, const FNFT_REAL T1, FNFT_REAL *const phase_factor_rho, fnft_nse_discretization_t nse_discretization)
This routine returns the phase factor for reflection coefficient (rho). It is required for applying b...
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:87
fnft_nse_discretization_t.h
Lists discretizations for the nonlinear Schroedinger equation.
fnft__nse_phase_factor_a
FNFT_INT fnft__nse_phase_factor_a(const FNFT_REAL eps_t, const FNFT_UINT D, FNFT_REAL const *const T, FNFT_REAL *const phase_factor_a, fnft_nse_discretization_t nse_discretization)
This routine returns the phase factor for a coefficient. It is required for applying boundary conditi...
fnft__nse_discretization_to_akns_discretization
FNFT_INT fnft__nse_discretization_to_akns_discretization(fnft_nse_discretization_t nse_discretization, fnft__akns_discretization_t *const akns_discretization)
This routine returns akns discretization related to the given nse discretization.
fnft__akns_discretization.h
Properties of the discretizations for the Korteweg-de Vries equation.
fnft__nse_z_to_lambda
FNFT_INT fnft__nse_z_to_lambda(const FNFT_UINT n, const FNFT_REAL eps_t, FNFT_COMPLEX *const vals, fnft_nse_discretization_t discretization)
This routine maps z from the discrete-time domain to lambda in the continuous-time domain based on th...
FNFT_COMPLEX
double complex FNFT_COMPLEX
Definition: fnft_numtypes.h:47
FNFT_REAL
double FNFT_REAL
Definition: fnft_numtypes.h:40
fnft__nse_discretization_boundary_coeff
FNFT_REAL fnft__nse_discretization_boundary_coeff(fnft_nse_discretization_t nse_discretization)
This routine returns the boundary coefficient based on the discretization.
fnft__akns_discretization_t
fnft__akns_discretization_t
Enum that specifies discretizations used to compute nonlinear Fourier transforms of systems that fit ...
Definition: fnft__akns_discretization_t.h:87