Virtual Testbed
Ship dynamics simulator for extreme conditions
Guile reference

Asset import/export

Scheme procedure: import-asset [#options alist]
C++ function: import_asset

Scheme procedure: export-asset asset [#options alist]
C++ function: export_asset

Scheme procedure: convert-asset asset [#options alist]
C++ function: convert_asset

Scheme procedure: import-polyhedron path [#:format format] [#options alist]
C++ function: import_polyhedron

Scheme procedure: export-polyhedron polyhedron path [#:format format] [#:options alist]
C++ function: export_polyhedron

Scheme procedure: import-hull path [#:format format] [#:options alist]
C++ function: import_hull

Scheme procedure: import-compartments path [#:format format] [#:options alist]
C++ function: import_compartments

Options are specified as a list of pair where car is symbol and cdr is string. Supported options are listed below.

Format Option Default value Description
vsl close-top true do not remove the main deck
vsl close-bottom true do not remove the bottom
vsl step-z auto vertical distance between points in metres
bsp resolution-u 2 no. of points for segment in U dimension
bsp resolution-v 2 no. of points for segment in V dimension
gnuplot false output as Gnuplot script
input-format auto input format
input-path auto input file path
output-format auto output format
output-path auto output file path

Ship compartments

Scheme procedure: generate-compartments hull nrooms
C++ function: generate_compartments

Scheme procedure: make-compartment polyhedron [#:name name]
C++ function: make_compartment

Ship hull

Scheme procedure: make-hull
C++ function: make_hull

Ship

Scheme procedure: make-ship [#:hull hull] [#:compartments compartments] [#:mass mass] [#:displacement displacement] [#:draught]
C++ function: make_ship

Scheme procedure: ship-mass ship
C++ function: ship_mass

Virtual testbed

Scheme procedure: make-testbed [#:policy [openmp | opencl]] [#:ship ship] [#:wave-generator wave-generator]
C++ function: make_testbed

Scheme procedure: testbed-step! virtual-testbed dt
C++ function: testbed_step

Scheme procedure: testbed-reset! virtual-testbed
C++ function: testbed_reset

Scheme procedure: testbed-time-instant virtual-testbed
C++ function: testbed_time-instant

Scheme procedure: testbed-policy virtual-testbed
C++ function: testbed_policy

Scheme procedure: testbed-grid virtual-testbed
C++ function: testbed_grid

Grid

Scheme procedure: make-grid [#:min list-of-floats] [#:max list-of-floats] [#:begin-index list-of-integers] [#:end-index list-of-integers] [#:num-points list-of-integers] [#:num-segments list-of-integers]
C++ function: make_grid

Scheme procedure: grid-min grid
C++ function: grid_min

Scheme procedure: grid-max grid
C++ function: grid_max

Scheme procedure: grid-begin-index grid
C++ function: grid_begin_index

Scheme procedure: grid-end-index grid
C++ function: grid_end_index

Scheme procedure: grid-select grid list-of-integers
C++ function: grid_select

Scheme procedure: grid-compact! grid
C++ function: grid_compact

Scheme procedure: grid->string grid
C++ function: grid_to_string

Solvers

Scheme procedure: make-calm-sea-generator
C++ function: make_calm_sea_generator

Scheme procedure: make-plain-wave-generator [#:policy [openmp | opencl ]] [#:wave wave]
C++ function: make_plain_wave_generator

Scheme procedure: make-gerstner-solver [#:policy [openmp | opencl ]] [#:diffraction boolean] [#:radiation boolean] [#:waterline-only boolean] [#:waves list-of-waves]
C++ function: make_gerstner_solver

Scheme procedure: make-wave type [#:amplitude float] [#:length float] [#:direction radians]
C++ function: make_wave

Type can be one of the following:

Type Dispersion relation
<propagating-cosine-wave> linear wave theory
<standing-cosine-wave> linear wave theory
<linear-wave> linear wave theory
<propagating-stokes-wave> Stokes wave

Polyhedron

Scheme procedure: make-polyhedron
C++ function: make_polyhedron

Scheme procedure: polyhedron-reorder polyhedron
C++ function: polyhedron_reorder

Scheme procedure: polyhedron-reorder! polyhedron
C++ function: polyhedron_reorder_self

Scheme procedure: polyhedron-normalise polyhedron
C++ function: polyhedron_normalise

Scheme procedure: polyhedron-normalise! polyhedron
C++ function: polyhedron_normalise_self

Scheme procedure: polyhedron-unique polyhedron
C++ function: polyhedron_unique

Scheme procedure: polyhedron-unique! polyhedron
C++ function: polyhedron_unique_self

Scheme procedure: polyhedron-move polyhedron delta
C++ function: polyhedron_move

Scheme procedure: polyhedron-move! polyhedron delta
C++ function: polyhedron_move_self

Scheme procedure: polyhedron-scale polyhedron factor
C++ function: polyhedron_scale

Scheme procedure: polyhedron-scale! polyhedron factor
C++ function: polyhedron_scale_self

Scheme procedure: polyhedron-flip polyhedron dimension
C++ function: polyhedron_flip

Scheme procedure: polyhedron-flip! polyhedron dimension
C++ function: polyhedron_flip_self

Scheme procedure: polyhedron-mirror polyhedron dimension
C++ function: polyhedron_mirror

Scheme procedure: polyhedron-mirror! polyhedron dimension
C++ function: polyhedron_mirror_self

Scheme procedure: polyhedron-rotate polyhedron dimension
C++ function: polyhedron_rotate

Scheme procedure: polyhedron-rotate! polyhedron dimension degrees
C++ function: polyhedron_rotate_self

Scheme procedure: polyhedron-empty? polyhedron
C++ function: polyhedron_empty

Scheme procedure: polyhedron-signed-volume-below polyhedron dimsnions level
C++ function: polyhedron_signed_volume_below

Scheme procedure: polyhedron-volume polyhedron
C++ function: polyhedron_volume

Scheme procedure: polyhedron-centroid polyhedron
C++ function: polyhedron_centroid

Scheme procedure: polyhedron-bounding-box polyhedron
C++ function: polyhedron_bounding_box

Scheme procedure: polyhedron-bounds polyhedron dimension
C++ function: polyhedron_bounds

GUI

Scheme procedure: get-testbed
C++ function: get_testbed

Scheme procedure: set-testbed!
C++ function: set_testbed

Scheme procedure: testbed-gui-start-recording!
C++ function: testbed_gui_start_recording

Scheme procedure: testbed-gui-stop-recording!
C++ function: testbed_gui_stop_recording

Scheme procedure: testbed-gui-start!
C++ function: testbed_gui_start

Scheme procedure: testbed-gui-pause!
C++ function: testbed_gui_pause

Scheme procedure: testbed-gui-stop!
C++ function: testbed_gui_stop

Miscellaneous

Scheme procedure: vtestbed-gc
C++ function: vtestbed_gc

Scheme procedure: vtestbed-help [procedure-name]
Show help message for specified procedure.