Main class for interacting with virtual testbed.
using progress_function_type = void(*)(int, int)using arma_wave_generator_ptr = std::unique_ptr< arma_wave_generator_type >using arma_wave_generator_type = ARMA_wavy_surface_generator_base< T, 3 >using irregular_surface_type = Array< vec3, 2 >using waterline_type = typename wetted_surface_solver_type::waterline_typeusing panel_array = typename wetted_surface_solver_type::panel_arrayusing panel_type = typename wetted_surface_solver_type::panel_typeusing anlt_wind_solver_ptr = std::unique_ptr< anlt_wind_solver_type >using anlt_wind_solver_type = ANLT_wind_solver< T >using arma_wind_solver_ptr = std::unique_ptr< arma_wind_solver_type >using arma_wind_solver_type = ARMA_wind_solver< T >using wetted_surface_solver_ptr = std::unique_ptr< wetted_surface_solver_type >using wetted_surface_solver_type = Wetted_surface_solver< T, N >using vec3 = Vector3< T >using array3 = Array< T, 3 >using array2 = Array< T, 2 >using equilibrium_position_solver_type = Equilibrium_position_solver< T >using external_excitation_solver_type = External_excitation_solver< T >using statistics_type = Statistics< T >using domain4 = blitz::RectDomain< N+1 >using domain3 = blitz::RectDomain< N >using array_type = Array< T, N >using grid4 = Grid< T, N+1 >using grid3 = Grid< T, N >using grid2 = Grid< T, N-1 >using gerstner_solver_ptr = std::unique_ptr< gerstner_solver_type >using gerstner_solver_type = Gerstner_solver< T, 3 >using wave_pressure_solver_ptr = std::unique_ptr< wave_pressure_solver_type >using wave_pressure_solver_type = Wave_pressure_solver< T >using vertex_field_3d = blitz::Array< blitz::TinyVector< T, 3 >, 3 >using velocity_potential_solver_ptr = std::unique_ptr< velocity_potential_solver_type >using velocity_potential_solver_type = Velocity_potential_solver< T, N >using wavy_surface_generator_ptr = std::unique_ptr< wavy_surface_generator_type >using wavy_surface_generator_type = Wavy_surface_generator< T >using ship_motion_solver_ptr = std::unique_ptr< ship_motion_solver_type >using ship_motion_solver_type = Ship_motion_solver< T >using ship_type = Ship< T >using value_type = Topencl_context(void * ptr, progress_function_type progress = nullptr) -> voidopencl_solvers() -> voidopenmp_solvers() -> voidwind_solver() const -> const anlt_wind_solver_type *anlt_wind_solver(anlt_wind_solver_ptr && rhs) -> voidarma_wind_solver(arma_wind_solver_ptr && rhs) -> voidwater_velocity_field() const -> const vertex_field_3d &wind_grid() const -> const grid3 &wind_field() const -> const vertex_field_3d &statistics() -> statistics_type &statistics() const -> const statistics_type &record_statistics(statistics_type & stats) -> voidhas_wave_pressure_domain() const -> boolgrid_txyz() const -> const grid4 &time_instant() const -> TCurrent time instant in seconds.
velocity_potential_grid() const -> grid3Three-dimensional grid for velocity potential field. The dimensions are .
wavy_surface_grid() const -> grid2Two-dimensional grid for wavy surface generation.
wavy_surface_grid(const grid2 & rhs) -> voidSet dimensions of the grid.
ship_motion_solver() const -> const ship_motion_solver_type *ship_motion_solver() -> ship_motion_solver_type *reset() -> void
Reset simulation to the initial state and retain solver configuration. 
        
        
step(T dt) -> voidvelocity_potential() const -> const Array< T, 3 > &Three-dimensional velocity potential. The first dimension is , the rest are and .
irregular_wavy_surface() const -> const irregular_surface_type &grid(const grid3 & rhs) -> voidgrid(const grid4 & rhs) -> voidgrid() const -> const grid4 &wavy_surface() const -> const Array< T, 2 > &Two-dimensional wavy surface.
wetted_surface_solver() const -> const wetted_surface_solver_type *wetted_surface_solver() -> wetted_surface_solver_type *wetted_surface_solver(wetted_surface_solver_ptr && rhs) -> voidwave_pressure_solver() -> wave_pressure_solver_type *wave_pressure_solver() const -> const wave_pressure_solver_type *equilibrium_position_solver() const -> const equilibrium_position_solver_type *equilibrium_position_solver() -> equilibrium_position_solver_type *wave_pressure_solver(wave_pressure_solver_ptr && rhs) -> voidvelocity_potential_solver() -> velocity_potential_solver_type *velocity_potential_solver() const -> const velocity_potential_solver_type *velocity_potential_solver(velocity_potential_solver_ptr && rhs) -> voidarma_wave_generator() const -> const arma_wave_generator_type *arma_wave_generator() -> arma_wave_generator_type *plane_wave_generator() -> wavy_surface_generator_type *plane_wave_generator() const -> const wavy_surface_generator_type *wave_generator(arma_wave_generator_ptr && rhs) -> voidwave_generator(wavy_surface_generator_ptr && rhs) -> voidwave_generator(gerstner_solver_ptr && rhs) -> voidgerstner_solver() const -> const gerstner_solver_type *gerstner_solver() -> gerstner_solver_type *ship(const ship_type & rhs) -> voidship(ship_type && rhs) -> voidship() -> ship_type &ship() const -> const ship_type &get_solver_type() const -> Solver_typeset_solver_type(Solver_type type) -> voidoperator=(const Testbed &) -> Testbed &Testbed(const Testbed &)operator=(Testbed && rhs) -> Testbed &Testbed(Testbed &&)~Testbed()Testbed()