Virtual Testbed
Ship dynamics simulator for extreme conditions
Classes | Typedefs | Enumerations | Functions | Variables
vtb::core Namespace Reference

Core components. More...

Classes

class  Amplitude
 
class  ANLT_wind_solver
 
class  ANLT_wind_solver_opencl
 
class  ANLT_wind_solver_openmp
 
class  AR_wavy_surface_generator
 Based on autoregerssive model. More...
 
class  ARMA_wavy_surface_generator_base
 
class  ARMA_wind_solver
 
class  Assumptions
 
class  Autocovariance_matrix_generator
 Autocovariate matrix generator that reduces the size of ACF to match AR model order. More...
 
class  Autocovariance_matrix_generator< T, 3 >
 
class  Autocovariance_matrix_generator< T, 4 >
 
class  Barycentric_function
 
class  Bisection
 
class  Bisection< T, 1 >
 
class  Calm_sea_generator
 Calm sea generator. More...
 
class  Chirp_Z_transform
 
class  Choi_yule_walker_solver
 Computes AR model coefficients using an order-recursvive method from [Choi1999]. More...
 
class  Circular_buffer
 Fixed-size circular buffer. Used as time series storage. More...
 
class  Compartment
 
class  Compartment_array
 
class  Convolution
 Multidimensional convolution based on Fourier transform. More...
 
class  Direction
 
class  Euler_solver
 Euler initial value problem solver. More...
 
class  Fixed_point_iteration_yule_walker_solver
 Multi-dimensional solver that determines MA model coefficients from ACF. More...
 
class  Flooding_solver
 
class  Fourier_transform
 \(N\)-dimensional Fourier transform. More...
 
class  Fourier_transform_base
 Base class for all Fourier transforms. More...
 
class  Frequency
 
class  Gauss_yule_walker_solver
 
class  Gerstner_solver
 Trochoidal irrotational waves solves named after Gerstner. More...
 
class  Gerstner_solver_opencl
 
class  Gerstner_solver_openmp
 
class  Grid
 A region defined by start and end index and lower and upper bound for each dimension. More...
 
class  Grid_interpolation
 
class  Hull
 
class  Invalid_ARMA_process
 
class  Irregular_wave_surface_generator
 Wavy surface generator that produces elevation grid for multiple waves. More...
 
struct  is_complex
 
struct  is_complex< std::complex< T > >
 
class  Length
 
class  Linear_function
 
class  Linear_function_irregular
 Nearest neighbour weighted interpolation for 3-d fields. More...
 
class  Linear_interpolation
 
class  Linear_velocity_potential_solver
 Uses formulae from linear wavy theory. More...
 
class  Linear_velocity_potential_solver_base
 Base class for linear velocity potential solver. More...
 
class  Linear_velocity_potential_solver_opencl
 
class  Linear_wave
 
class  LIPO_solver
 Multi-dimensional optimisation of non-convex functions. More...
 
class  MA_wavy_surface_generator
 Based on moving-average model. More...
 
struct  Mass
 Mass attached to specified point in space. More...
 
class  Mass_array
 
class  No_wave
 Calm sea. More...
 
class  Plain_wave_generator
 Wavy surface generator that produces elevation grid for individual wave. More...
 
class  Plain_wave_generator_opencl
 
class  Plain_wave_generator_openmp
 
class  Polynomial
 
class  Propagating_cosine_wave
 Propagating plain wave which has cosine shape. More...
 
class  Propagating_stokes_wave
 Propagating third-order Stokes wave. More...
 
class  Propeller
 
class  Propulsor
 
class  Radial_basis_function
 Radial basis function interpolation. More...
 
class  RKF45
 Runge—Khutta—Fehlberg initial value problem solver. More...
 
class  Rudder
 
class  Shallow_water_wave
 
class  Ship
 Rigid ship with a mass and translational and angular velocity. More...
 
class  Ship_hull_panel
 Triangular ship hull panel (face). More...
 
class  Ship_motion_equation
 System of ordinary differential equations of translational and angular ship motion. More...
 
class  Ship_motion_solver
 
class  Standing_cosine_wave
 Standing plain wave which has cosine shape. More...
 
class  Statistics
 
class  Statistics_base
 
class  Testbed
 Main class for interacting with virtual testbed. More...
 
class  Velocity_potential_solver
 Base class for all velocity potential solvers. More...
 
class  Volume
 
class  Wave_base
 Base class for water waves. More...
 
struct  Wave_half
 A half of the wave with length, number and height of the full wave. More...
 
class  Wave_pressure_solver
 Base class for all wave pressure solvers. More...
 
class  Wave_pressure_solver_opencl
 
class  Wave_pressure_solver_openmp
 
struct  Wave_statistics
 
class  Wave_table
 
class  Wave_table< std::complex< T > >
 
class  Wave_table_base
 
class  Wavy_surface_generator
 Base class for wavy surface generators. More...
 
class  Wetted_surface_solver
 
class  Wetted_surface_solver_opencl
 
class  Wetted_surface_solver_openmp
 
class  Wind_generator
 
class  Wind_param
 
class  Yule_walker_solver
 

Typedefs

typedef ::vtb::base::bstream bstream
 
template<class T , int N>
using Vector = blitz::TinyVector< T, N >
 
template<class T >
using Vector1 = Vector< T, 1 >
 
template<class T >
using Vector2 = Vector< T, 2 >
 
template<class T >
using Vector3 = Vector< T, 3 >
 
template<class T >
using Vector4 = Vector< T, 4 >
 
using int1 = Vector< int, 1 >
 
using int2 = Vector< int, 2 >
 
using int3 = Vector< int, 3 >
 
using int4 = Vector< int, 4 >
 
template<class T , int N>
using Array = ::blitz::Array< T, N >
 
template<class T >
using Array1 = Array< T, 1 >
 
template<class T >
using Array2 = Array< T, 2 >
 
template<class T >
using Array3 = Array< T, 3 >
 
template<class T >
using Array4 = Array< T, 4 >
 
using rect2 = blitz::RectDomain< 2 >
 
using rect3 = blitz::RectDomain< 3 >
 
using rect4 = blitz::RectDomain< 4 >
 
using mask_array = std::vector< bool >
 
template<class T , int N>
using Wave_statistics_vector = blitz::TinyVector< Wave_statistics< T >, N >
 

Enumerations

enum  Policy {
  OpenMP,
  OpenCL
}
 
enum  Solver_type {
  regular_solver,
  gerstner_solver
}
 

Functions

template<class T , Policy P>
std::unique_ptr< ANLT_wind_solver< T > > make_anlt_wind_solver ()
 
template<class T >
std::unique_ptr< T > copy (const std::unique_ptr< T > &ptr)
 
template<class T , int N>
void validate_process (blitz::Array< T, N > phi)
 Check AR (MA) process stationarity (invertibility). More...
 
template<class T , int N>
blitz::Array< T, N > auto_covariance (const blitz::Array< T, N > &rhs)
 Computes autocovariance function of three-dimensional field. More...
 
template<class T , int N>
blitz::Array< T, N > covariance (blitz::Array< T, N > lhs, blitz::Array< T, N > rhs, Chirp_Z_transform< std::complex< T >, N > &fft)
 
template<class T , int N>
blitz::Array< T, N > covariance (blitz::Array< T, N > lhs, blitz::Array< T, N > rhs)
 
template<class T , int N>
blitz::Array< T, N > correlation (blitz::Array< T, N > lhs, blitz::Array< T, N > rhs, Chirp_Z_transform< std::complex< T >, N > &fft)
 
template<class T , int N>
blitz::Array< T, N > correlation (blitz::Array< T, N > lhs, blitz::Array< T, N > rhs)
 
template<class T , int N, class F >
blitz::TinyVector< T, N > bisection (blitz::TinyVector< T, N > a, blitz::TinyVector< T, N > b, F func, const blitz::TinyVector< T, N > &arg_eps, const blitz::TinyVector< T, N > &func_eps, int max_iter)
 
template<class T , class F >
bisection (T a, T b, F func, T arg_eps, T func_eps, int max_iter)
 One-dimensional bisection. More...
 
template<class T , int N>
std::unique_ptr< Wavy_surface_generator< T, N > > make_calm_sea_generator ()
 
template<class T >
void swap (Circular_buffer< T > &lhs, Circular_buffer< T > &rhs)
 
template<class T >
std::ostreamoperator<< (std::ostream &out, const Compartment< T > &rhs)
 
template<class T , int N>
void derivative (Array< T, N > func, const T delta, int dimension, Array< T, N > &result)
 
template<class T , int N>
Array< T, N > derivative (Array< T, N > func, const T delta, int dimension)
 
template<class T , int N>
derivative (const blitz::TinyVector< int, N > &idx, int idx_min, int idx_max, int dimension, const T delta, const Array< T, N > &func)
 
template<class T , int N>
derivative (const blitz::TinyVector< int, N > &idx, int dimension, const T delta, const Array< T, N > &func)
 
template<class T , int N>
blitz::TinyVector< T, N > gradient (const blitz::TinyVector< int, N > &idx, const blitz::TinyVector< T, N > &delta, const Array< T, N > &func)
 
template<class T >
blitz::TinyVector< T, 4 > gradient (const blitz::TinyVector< int, 4 > &idx, const blitz::TinyVector< T, 4 > &delta, const Array< T, 4 > &func)
 
template<class T , int N>
void fourier_transform (blitz::Array< T, N > &x, int sign, Wave_table< T > waves[N])
 
template<class T , int N, Policy P>
std::unique_ptr< Gerstner_solver< T, N > > make_gerstner_solver ()
 
template<class T , int N>
std::unique_ptr< Gerstner_solver< T, N > > make_gerstner_solver (Policy policy)
 
template<class T >
blitz::Array< T, 1 > generate (const Grid< T, 1 > &grid)
 
template<class T , int N>
blitz::TinyVector< T, N > clamp (const blitz::TinyVector< T, N > x, const Grid< T, N > &grid)
 
template<class T , int N, class Function >
void generate (const Grid< T, N > &grid, blitz::Array< T, N > &result, Function func)
 
template<class T , int N, class Function >
blitz::Array< T, N > generate (const Grid< T, N > &grid, Function func)
 
template<class T , int N>
Frequency< T > linear_wave_angular_frequency (const blitz::TinyVector< T, N > &k)
 
template<class T , int N>
Frequency< T > linear_wave_angular_frequency (Length< T > length, Direction< T > angle)
 
template<class T , class ... Args>
Mass_array< T > flatten (const Args &... args)
 
template<class T >
bool is_positive_infinity (T x) noexcept
 
template<class T >
bool is_negative_infinity (T x) noexcept
 
template<class T , int N>
scale (blitz::Array< T, N > x)
 Return the difference between largest and smallest value in the array. More...
 
template<class T >
fma (T a, T x, T b)
 
float pow2 (float x)
 
double pow2 (double x)
 
template<class T >
std::complex< T > pow2 (const std::complex< T > &x)
 
template<class T , int N>
std::unique_ptr< Wavy_surface_generator< T, N > > make_plain_wave_generator_openmp (std::any wave)
 
template<class T , int N>
std::unique_ptr< Wavy_surface_generator< T, N > > make_plain_wave_generator_opencl (std::any wave)
 
template<class T , int N, class Wave >
void generate_wave (const Grid< T, N > &grid, Array< T, N > &result, Wave wave)
 Generate wavy surface for specified wave and spatio-temporal grid. More...
 
template<class T , int N, class Wave >
Array< T, N > generate_wave (const Grid< T, N > &grid, Wave wave)
 
template<class T , int N, class Wave , Policy P>
std::unique_ptr< Plain_wave_generator< T, N, Wave, P > > make_plain_wave_generator (const Wave &wave)
 
template<class T , int N, class Wave , Policy P>
std::unique_ptr< Plain_wave_generator< T, N, Wave, P > > make_plain_wave_generator ()
 
template<class T , int N>
std::unique_ptr< Wavy_surface_generator< T, N > > make_plain_wave_generator (std::any wave, Policy policy)
 
template<class T >
void swap (Polynomial< T > &lhs, Polynomial< T > &rhs)
 
template<class T >
auto schur_transform (const Polynomial< T > &p) -> typename std::enable_if< is_complex< T >::value, Polynomial< T >>::type
 Schur transform for polynomials with complex coefficients. More...
 
template<class T >
int num_roots_inside_unit_disk (Polynomial< T > p)
 Finds the number of polynomial roots inside the unit disk. More...
 
template<class T , int N>
Frequency< T > shallow_water_wave_angular_frequency (const blitz::TinyVector< T, N > &k, T depth)
 
template<class T , int N>
Frequency< T > shallow_water_wave_angular_frequency (Length< T > length, Direction< T > angle, T depth)
 
template<class T >
vtb::geometry::Basis< T, 3 > angular_velocity_matrix_zyx (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos)
 
template<class T >
vtb::geometry::Basis< T, 3 > angular_velocity_matrix_zyx (const Vector< T, 3 > &euler_angles)
 A matrix that transforms Euler angles time derivatives to angular velocity. More...
 
template<class T >
vtb::geometry::Basis< T, 3 > angular_velocity_matrix_xyz (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos)
 
template<class T >
vtb::geometry::Basis< T, 3 > angular_velocity_matrix_xyz (const Vector< T, 3 > &euler_angles)
 
template<class T >
blitz::TinyMatrix< T, 3, 4 > angular_velocity_matrix_quaternion (const vtb::geometry::Quaternion< T > &q)
 
template<class T >
vtb::geometry::Basis< T, 3 > euler_angles_matrix_zyx (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos, const T tan_theta)
 
template<class T >
vtb::geometry::Basis< T, 3 > euler_angles_matrix_zyx (const Vector< T, 3 > &euler_angles)
 A matrix that transforms angular velocity to Euler angles time derivatives. More...
 
template<class T >
vtb::geometry::Basis< T, 3 > euler_angles_matrix_xyz (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos, const T tan_theta)
 
template<class T >
vtb::geometry::Basis< T, 3 > euler_angles_matrix_xyz (const Vector< T, 3 > &euler_angles)
 
template<class T >
Vector< T, 3 > euler_angles_residual_vector_zyx (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos, const T tan_theta, const Vector< T, 3 > &angvelocity)
 
template<class T >
Vector< T, 3 > euler_angles_residual_vector_xyz (const Vector< T, 3 > &sin, const Vector< T, 3 > &cos, const T tan_theta, const Vector< T, 3 > &angvelocity)
 
template<class T >
blitz::TinyMatrix< T, 4, 3 > quaternion_matrix (const vtb::geometry::Quaternion< T > &q)
 
template<class T >
std::ostreamoperator<< (std::ostream &out, const Ship< T > &rhs)
 
template<class T >
bstreamoperator<< (bstream &out, const Ship< T > &rhs)
 
template<class T >
bstreamoperator>> (bstream &in, Ship< T > &rhs)
 
template<class T >
Grid< T, 3 > clamp (const Grid< T, 3 > &grid_xyz, const std::vector< Ship_hull_panel< T, 3 >> &panels)
 Determine minimum and maximum indices for calculating derivatives using panels and slice velocity potential field.
 
template<class T , int N>
Frequency< T > stokes_wave_angular_frequency (const blitz::TinyVector< T, N > &k, Amplitude< T > amplitude)
 
template<class T , int N, Policy P>
std::unique_ptr< Velocity_potential_solver< T, N > > make_velocity_potential_solver ()
 
template<class T , int N>
blitz::TinyVector< T, N > wave_number (Length< T > length, Direction< T > angle)
 
template<class T , int N, class Wave >
courant_number_sum (const Wave &wave, const Grid< T, N > &grid)
 
template<class T , int N, class Wave >
courant_number (const Wave &wave, const Grid< T, N > &grid)
 
template<class T >
std::ostreamoperator<< (std::ostream &out, const Wave_statistics< T > &rhs)
 
template<class T >
std::ostreamoperator<< (std::ostream &out, const Wave_half< T > &rhs)
 
template<class T >
std::vector< blitz::TinyVector< T, 2 > > find_extrema (blitz::Array< T, 1 > func, const Grid< T, 1 > &grid)
 Find coordinates of minima and maxima of a function. More...
 
template<class T >
std::vector< Wave_half< T > > find_wave_halves (const std::vector< blitz::TinyVector< T, 2 >> &extrema)
 Find wave halves from function extrema computed previously. More...
 
template<class T >
void find_wave_number_range (const std::vector< Wave_half< T >> &halves, T &min_wave_number, T &max_wave_number)
 Find minimum and maximum wave number from wave halves computed previously. More...
 
template<class T >
Grid< T, 1 > find_wave_number_range (const std::vector< Wave_half< T >> &halves)
 
template<class T , int N>
Grid< T, N > wave_number_grid (const Wave_statistics_vector< T, N > &waves)
 
template<class T >
Wave_statistics_vector< T, 2 > wave_statistics (blitz::Array< T, 2 > surface, const Grid< T, 2 > &grid)
 
template<class T >
Wave_statistics< T > temporal_wave_statistics (blitz::Array< T, 1 > surface, const Grid< T, 1 > &grid)
 
template<class T >
Grid< T, 2 > find_wave_number_range (blitz::Array< T, 2 > surface, const Grid< T, 2 > &grid)
 Find minimum and maximum wave number for two-dimensional surface. More...
 
template<class T , Policy P>
std::unique_ptr< Wave_pressure_solver< T > > make_wave_pressure_solver ()
 
template<class T , int N, Policy P>
std::unique_ptr< Wetted_surface_solver< T, N > > make_wetted_surface_solver ()
 
template<class T >
blitz::TinyVector< int, 3 > chop_right (const blitz::Array< T, 3 > &rhs, T eps)
 
template<class T >
blitz::TinyVector< int, 4 > chop_right (const blitz::Array< T, 4 > &rhs, T eps)
 
template<class T , int N>
autoregression_white_noise_variance (const blitz::Array< T, N > &acf, const blitz::Array< T, N > &phi)
 
template<class T , int N>
moving_average_white_noise_variance (const blitz::Array< T, N > &acf, const blitz::Array< T, N > &theta)
 
template<class T , int N>
acf_variance (const blitz::Array< T, N > &acf)
 

Variables

constexpr const Policy default_policy = Policy::OpenMP
 

Detailed Description

Core components.

Function Documentation

◆ angular_velocity_matrix_zyx()

template<class T >
vtb::geometry::Basis<T,3> vtb::core::angular_velocity_matrix_zyx ( const Vector< T, 3 > &  euler_angles)
inline

A matrix that transforms Euler angles time derivatives to angular velocity.

Date
2019-06-10
Author
Ivan Gankevich

Definition at line 43 of file core/ship.hh.

◆ auto_covariance()

template<class T , int N>
blitz::Array< T, N > vtb::core::auto_covariance ( const blitz::Array< T, N > &  rhs)

Computes autocovariance function of three-dimensional field.

Date
2018-01-30
Author
Ivan Gankevich
Parameters
[in]rhssymmetric three-dimensional field
  • Does not subtract mean value.
  • Does not divide by the variance.
  • Uses the following formula.

    \[ \gamma_{i,j,k} = \frac{1}{n_1 n_2 n_3} \sum\limits_{i_1=0}^{n_1-1} \sum\limits_{i_1=0}^{n_2-1} \sum\limits_{k_1=0}^{n_3-1} \zeta_{i_1,j_1,k_1} \zeta_{(i_1+i) \bmod n_1,(j_1+i) \bmod n_2,(k_1+k) \bmod n_3} \]

    Assumes, that the field is symmetric and periodic in each dimension. Uses fast Fourier transforms to speed up the computation:

    \[ \gamma = \mathcal{F}^{-1}\left\{ \left| \mathcal{F}\left\{\zeta\right\} \right|^2 \right\}. \]

Definition at line 83 of file arma.cc.

◆ bisection()

template<class T , class F >
T vtb::core::bisection ( a,
b,
func,
arg_eps,
func_eps,
int  max_iter 
)

One-dimensional bisection.

Parameters
[in]alower bound
[in]bupper bound
[in]funcobjective function
[in]max_itermaximum number of iterations
[in]arg_epsargument precision
[in]func_epsreturn value precision

Definition at line 97 of file bisection.hh.

◆ derivative()

template<class T , int N>
T vtb::core::derivative ( const blitz::TinyVector< int, N > &  idx,
int  idx_min,
int  idx_max,
int  dimension,
const T  delta,
const Array< T, N > &  func 
)
  1. Compute forward differences on the left border.

    \[ f'_i = \frac{-f_{i+2} + 4f_{i+1} - 3f_{i}}{2\Delta f} \]

  2. Compute backward differences on the right border.

    \[ f'_i = \frac{3f_{i} - 4f_{i-1} + f_{i-2}}{2\Delta f} \]

  3. Compute central differences in all other points.

    \[ f'_i = \frac{f_{i+1} - f_{i-1}}{2\Delta f} \]

Definition at line 29 of file core/derivative.hh.

◆ euler_angles_matrix_zyx()

template<class T >
vtb::geometry::Basis<T,3> vtb::core::euler_angles_matrix_zyx ( const Vector< T, 3 > &  euler_angles)
inline

A matrix that transforms angular velocity to Euler angles time derivatives.

Date
2019-06-10
Author
Ivan Gankevich

Definition at line 94 of file core/ship.hh.

◆ find_extrema()

template<class T >
std::vector< blitz::TinyVector< T, 2 > > vtb::core::find_extrema ( blitz::Array< T, 1 >  func,
const Grid< T, 1 > &  grid 
)

Find coordinates of minima and maxima of a function.

Date
2018-08-14
Author
Ivan Gankevich

Uses parabola to find precise location of the peak.

Definition at line 48 of file wave_numbers.cc.

References vtb::core::Grid< T, N >::delta().

◆ find_wave_halves()

template<class T >
std::vector<Wave_half<T> > vtb::core::find_wave_halves ( const std::vector< blitz::TinyVector< T, 2 >> &  extrema)

Find wave halves from function extrema computed previously.

Date
2018-08-14
Author
Ivan Gankevich
See also
find_extrema

◆ find_wave_number_range() [1/2]

template<class T >
void vtb::core::find_wave_number_range ( const std::vector< Wave_half< T >> &  halves,
T &  min_wave_number,
T &  max_wave_number 
)

Find minimum and maximum wave number from wave halves computed previously.

Date
2018-08-14
Author
Ivan Gankevich
See also
find_wave_halves

Definition at line 114 of file wave_numbers.cc.

◆ find_wave_number_range() [2/2]

template<class T >
Grid<T,2> vtb::core::find_wave_number_range ( blitz::Array< T, 2 >  surface,
const Grid< T, 2 > &  grid 
)

Find minimum and maximum wave number for two-dimensional surface.

Date
2018-08-14
Author
Ivan Gankevich

◆ generate_wave()

template<class T , int N, class Wave >
void vtb::core::generate_wave ( const Grid< T, N > &  grid,
Array< T, N > &  result,
Wave  wave 
)
inline

Generate wavy surface for specified wave and spatio-temporal grid.

Date
2018-08-01
Author
Ivan Gankevich
Template Parameters
Wavea function that returns wavy surface elevation for given point
See also
Propagating_cosine_wave
Propagating_stokes_wave
Standing_cosine_wave

Definition at line 33 of file plain_wave_generator.hh.

References vtb::core::Grid< T, N >::begin(), vtb::core::Grid< T, N >::delta(), vtb::core::Grid< T, N >::end(), and vtb::core::Grid< T, N >::shape().

◆ moving_average_white_noise_variance()

template<class T , int N>
T vtb::core::moving_average_white_noise_variance ( const blitz::Array< T, N > &  acf,
const blitz::Array< T, N > &  theta 
)

Compute white noise variance via the formula

\[ \sigma_\alpha^2 = \frac{\gamma_0}{ \sum\limits_{i=0}^{n_1-1} \sum\limits_{i=0}^{n_2-1} \sum\limits_{k=0}^{n_3-1} \theta_{i,j,k}^2 } \]

assuming \(\theta_0 \equiv -1\).

Definition at line 47 of file yule_walker_solver.hh.

Referenced by vtb::core::Fixed_point_iteration_yule_walker_solver< T, N >::solve().

◆ num_roots_inside_unit_disk()

template<class T >
int vtb::core::num_roots_inside_unit_disk ( Polynomial< T >  p)
inline

Finds the number of polynomial roots inside the unit disk.

Date
2018-10-26
Author
Ivan Gankevich

Definition at line 286 of file polynomial.hh.

Referenced by validate_process().

◆ scale()

template<class T , int N>
T vtb::core::scale ( blitz::Array< T, N >  x)
inline

Return the difference between largest and smallest value in the array.

Date
2018-08-14
Author
Ivan Gankevich

Definition at line 35 of file core/math.hh.

Referenced by vtb::core::Gerstner_solver_openmp< T >::generate_field().

◆ schur_transform()

template<class T >
auto vtb::core::schur_transform ( const Polynomial< T > &  p) -> typename std::enable_if<is_complex<T>::value, Polynomial<T>>::type
inline

Schur transform for polynomials with complex coefficients.

Schur transform for polynomials with real coefficients.

Date
2018-10-26
Author
Ivan Gankevich
See also
http://mathworld.wolfram.com/SchurTransform.html

Definition at line 243 of file polynomial.hh.

◆ validate_process()

template<class T , int N>
void vtb::core::validate_process ( blitz::Array< T, N >  phi)

Check AR (MA) process stationarity (invertibility).

  1. Find roots of the polynomial \(P_n(\Phi)=1-\Phi_1 x-\Phi_2 x^2 - ... -\Phi_n x^n\).
  2. Check if some roots do not lie outside the unit disk.

Definition at line 64 of file arma.cc.

References num_roots_inside_unit_disk().