Virtual Testbed
Ship dynamics simulator for extreme conditions
Public Types | Public Member Functions | Friends | List of all members
vtb::core::Testbed< T, N > Class Template Reference

Main class for interacting with virtual testbed. More...

#include <testbed.hh>

Public Types

using value_type = T
 
using ship_type = Ship< T >
 
using ship_motion_solver_type = Ship_motion_solver< T >
 
using ship_motion_solver_ptr = std::unique_ptr< ship_motion_solver_type >
 
using wavy_surface_generator_type = Wavy_surface_generator< T, N >
 
using wavy_surface_generator_ptr = std::unique_ptr< wavy_surface_generator_type >
 
using velocity_potential_solver_type = Velocity_potential_solver< T, N >
 
using velocity_potential_solver_ptr = std::unique_ptr< velocity_potential_solver_type >
 
using vertex_field_3d = blitz::Array< blitz::TinyVector< T, 3 >, 3 >
 
typedef Wave_pressure_solver< T > wave_pressure_solver_type
 
typedef std::unique_ptr< wave_pressure_solver_typewave_pressure_solver_ptr
 
using gerstner_solver_type = Gerstner_solver< T, 3 >
 
typedef std::unique_ptr< gerstner_solver_typegerstner_solver_ptr
 
using grid2 = Grid< T, N-1 >
 
using grid3 = Grid< T, N >
 
using grid4 = Grid< T, N+1 >
 
using array_type = Array< T, N >
 
using phi_array_type = Array< T, N+1 >
 
using domain3 = blitz::RectDomain< N >
 
using domain4 = blitz::RectDomain< N+1 >
 
using statistics_type = Statistics< T >
 
using array2 = Array< T, 2 >
 
using array3 = Array< T, 3 >
 
using vec3 = Vector3< T >
 
using wetted_surface_solver_type = Wetted_surface_solver< T, N >
 
using wetted_surface_solver_ptr = std::unique_ptr< wetted_surface_solver_type >
 
using arma_wind_solver_type = ARMA_wind_solver< T >
 
using arma_wind_solver_ptr = std::unique_ptr< arma_wind_solver_type >
 
using anlt_wind_solver_type = ANLT_wind_solver< T >
 
using anlt_wind_solver_ptr = std::unique_ptr< anlt_wind_solver_type >
 
using panel_type = typename wetted_surface_solver_type::panel_type
 
using panel_array = typename wetted_surface_solver_type::panel_array
 
using waterline_type = typename wetted_surface_solver_type::waterline_type
 
using irregular_surface_type = Array< vec3, 3 >
 
using irregular_surface_type_2d = Array< vec3, 2 >
 

Public Member Functions

 Testbed (Testbed &&)=default
 
Testbedoperator= (Testbed &&)=default
 
 Testbed (const Testbed &)=delete
 
Testbedoperator= (const Testbed &)=delete
 
void set_solver_type (Solver_type type)
 
Solver_type get_solver_type () const
 
const ship_typeship () const
 
ship_typeship ()
 
void ship (ship_type &&rhs)
 
void ship (const ship_type &rhs)
 
void gerstner_solver (gerstner_solver_ptr &&rhs)
 
gerstner_solver_typegerstner_solver ()
 
const gerstner_solver_typegerstner_solver () const
 
void wavy_surface_generator (wavy_surface_generator_ptr &&rhs)
 
const wavy_surface_generator_typewavy_surface_generator () const noexcept
 
wavy_surface_generator_typewavy_surface_generator () noexcept
 
void velocity_potential_solver (velocity_potential_solver_ptr &&rhs)
 
const velocity_potential_solver_typevelocity_potential_solver () const noexcept
 
velocity_potential_solver_typevelocity_potential_solver () noexcept
 
void wave_pressure_solver (wave_pressure_solver_ptr &&rhs)
 
const wave_pressure_solver_typewave_pressure_solver () const noexcept
 
wave_pressure_solver_typewave_pressure_solver () noexcept
 
void wetted_surface_solver (wetted_surface_solver_ptr &&rhs)
 
wetted_surface_solver_typewetted_surface_solver ()
 
const wetted_surface_solver_typewetted_surface_solver () const
 
const array_type & wavy_surface () const noexcept
 
const grid4 grid () const
 
array2 wavy_surface_2d () const noexcept
 
irregular_surface_type irregular_wavy_surface ()
 
irregular_surface_type_2d irregular_wavy_surface_2d () const
 
const phi_array_type & velocity_potential () const noexcept
 
array3 velocity_potential_3d () const noexcept
 
void step (T dt)
 
void reset ()
 Reset simulation to the initial state and retain solver configuration. More...
 
ship_motion_solver_typeship_motion_solver ()
 
const ship_motion_solver_typeship_motion_solver () const
 
void wavy_surface_grid (const grid2 &rhs) noexcept
 
grid3 wavy_surface_grid () const noexcept
 
grid2 wavy_surface_grid_2d () const noexcept
 
grid4 velocity_potential_grid () const noexcept
 
grid3 velocity_potential_grid_3d () const noexcept
 
time_instant () const noexcept
 Current time instant in seconds.
 
const grid4grid_txyz () const
 
const panel_array & wetted_panels () const noexcept
 Wetted ship hull faces that comprise underwater part of the hull.
 
const panel_array & dry_panels () const noexcept
 
bool has_wetted_panels () const noexcept
 
bool has_wave_pressure_domain () const noexcept
 
void record_statistics (statistics_type &stats)
 
const statistics_typestatistics () const
 
statistics_typestatistics ()
 
const vertex_field_3d & wind_field () const
 
const grid3wind_grid () const
 
const vertex_field_3d & water_velocity_field () const
 
void arma_wind_solver (arma_wind_solver_ptr &&rhs)
 
void anlt_wind_solver (anlt_wind_solver_ptr &&rhs)
 
const anlt_wind_solver_typewind_solver () const
 
const waterline_type & waterline () const
 
void openmp_solvers ()
 
void opencl_solvers ()
 
void opencl_context (void *ptr)
 

Friends

bstreamoperator<< (bstream &out, const Testbed &rhs)
 
bstreamoperator>> (bstream &in, Testbed &rhs)
 

Detailed Description

template<class T, int N>
class vtb::core::Testbed< T, N >

Main class for interacting with virtual testbed.

Date
2018-08-13
Author
Ivan Gankevich

Definition at line 33 of file testbed.hh.

Member Function Documentation

◆ reset()

template<class T , int N>
void vtb::core::Testbed< T, N >::reset ( )

Reset simulation to the initial state and retain solver configuration.

  • Sets current time to 0.
  • Clears statistics and re-opens statistics.log.
  • Resets ship position.
  • Removes wetted panels.

Definition at line 128 of file core/testbed.cc.

◆ velocity_potential()

template<class T, int N>
const phi_array_type& vtb::core::Testbed< T, N >::velocity_potential ( ) const
inlinenoexcept

\(N+1\) dimensional velocity potential. The first dimension is time, the second is \(z\), the rest are \(x\) and \(y\).

Definition at line 227 of file testbed.hh.

◆ velocity_potential_grid()

template<class T, int N>
grid4 vtb::core::Testbed< T, N >::velocity_potential_grid ( ) const
inlinenoexcept

\(N\)-dimensional spatio-temporal grid for velocity potential field. The dimensions are \((t,z,x,y)\).

Definition at line 297 of file testbed.hh.

◆ wavy_surface()

template<class T, int N>
const array_type& vtb::core::Testbed< T, N >::wavy_surface ( ) const
inlinenoexcept

\(N\)-dimensional wavy surface. The first dimension is time, the rest are spatial.

Definition at line 197 of file testbed.hh.

◆ wavy_surface_grid() [1/2]

template<class T, int N>
void vtb::core::Testbed< T, N >::wavy_surface_grid ( const grid2 rhs)
inlinenoexcept

Set \((x,y)\) dimensions of the grid.

Definition at line 264 of file testbed.hh.

◆ wavy_surface_grid() [2/2]

template<class T, int N>
grid3 vtb::core::Testbed< T, N >::wavy_surface_grid ( ) const
inlinenoexcept

\(N\)-dimensional spatio-temporal grid for wavy surface generation. The first dimension is time, the rest are spatial.

Definition at line 280 of file testbed.hh.

◆ wavy_surface_grid_2d()

template<class T, int N>
grid2 vtb::core::Testbed< T, N >::wavy_surface_grid_2d ( ) const
inlinenoexcept

Two-dimensional spatial wavy surface grid.

Definition at line 288 of file testbed.hh.