Result Files
Note: The following specification is subject to change. Scripts that work directly with
.res
files should therefore expect incompatibilities with new releases of VirtualBow.
Note: For space efficiency reasons, the stress values for each layer aren't stored directly in the result files. Instead, each layer has two constant matrices \(H_{e\mathrm{\ (back/belly)}}\) that relate the longitudinal strains \(\varepsilon\) to the resulting stresses at the back or belly side of the layer as well as two matrices \(H_{k\mathrm{\ (back/belly)}}\) that do the same for the bending curvature \(\kappa\). The total stress is the sum of the stresses due to longitudinal strain and bending curvature and can be calculated as \[\sigma_\mathrm{back} = H_{e,\mathrm{\ back}} \cdot \varepsilon + H_{k,\mathrm{\ back}} \cdot \kappa\] \[\sigma_\mathrm{belly} = H_{e,\mathrm{\ belly}} \cdot \varepsilon + H_{k,\mathrm{\ belly}} \cdot \kappa\] where the dot (\(\cdot\)) represents a matrix-vector multiplication. The result is a vector of stresses corresponding to the nodes of the layer.
P: Number of limb nodes
Q: Number of string nodes
R: Number of layer nodes
Field | Type | Unit | Description |
---|---|---|---|
setup { | |||
string_length | Double | m | Length of the string |
string_mass | Double | kg | Mass of the string, including additional masses |
limb_mass | Double | kg | Mass of the limb, including additional masses |
limb_properties { | |||
length | Double[P] | m | Arc lengths of the limb nodes (unbraced) |
angle | Double[P] | rad | Rotation angles of the limb nodes (unbraced) |
x_pos | Double[P] | m | X coordinates of the limb nodes (unbraced) |
y_pos | Double[P] | m | Y coordinates of the limb nodes (unbraced) |
width | Double[P] | m | Cross section width |
height | Double[P] | m | Cross section height (all layers) |
rhoA | Double[P] | kg/m | Linear density of the sections |
Cee | Double[P] | N | Longitudinal stiffness of the sections |
Ckk | Double[P] | Nm² | Bending stiffness of the sections |
Cek | Double[P] | Nm | Coupling between bending and elongation |
layers [ | |||
{ | |||
length | Double[R] | m | Arc lengths of the layer nodes |
He_back | Double[R][P] | N/m² | Stress evaluation matrix (back) |
Hk_back | Double[R][P] | N/m | Stress evaluation matrix (back) |
He_belly | Double[R][P] | N/m² | Stress evaluation matrix (belly) |
Hk_belly | Double[R][P] | N/m | Stress evaluation matrix (belly) |
} | |||
{ | |||
... | |||
} | |||
] | |||
} | |||
} | |||
statics { | |||
final_draw_force | Double | N | Final draw force |
drawing_work | Double | J | Drawing work |
energy storage factor | Double | -- | Energy storage factor |
max_string_force_index | Integer | -- | Simulation state with maximum absolute string force |
max_grip_force_index | Integer | -- | Simulation state with maximum absolute grip force |
max_draw_force_index | Integer | -- | Simulation state with maximum absolute draw force |
min_stress_value | Double[] | Pa | Minimum stress for each layer |
min_stress_index | Integer[][] | -- | Simulation state and layer node for each minimum stress value |
max_stress_value | Double[] | Pa | Maximum stress for each layer |
max_stress_index | Integer[][] | -- | Simulation state and layer node for each maximum stress value |
states { | |||
... | Sequence of bow states (see table below) | ||
} | |||
} | |||
dynamics { | |||
final_pos_arrow | Double | m | Position of the arrow at departure |
final_vel_arrow | Double | m/s | Velocity of the arrow at departure |
final_e_kin_arrow | Double | J | Kinetic energy of the arrow at departure |
final_e_pot_limbs | Double | J | Potential energy of the limbs at arrow departure |
final_e_kin_limbs | Double | J | Kinetic energy of the limbs at arrow departure |
final_e_pot_string | Double | J | Potential energy of the string at arrow departure |
final_e_kin_string | Double | J | Kinetic energy of the string at arrow departure |
efficiency | Double | -- | Degree of efficiency |
max_string_force_index | Integer | -- | Simulation state with maximum absolute string force |
max_grip_force_index | Integer | -- | Simulation state with maximum absolute grip force |
arrow_departure_index | Integer | -- | Simulation state at which the arrow departs with the string |
min_stress_value | Double[] | Pa | Minimum stress for each layer |
min_stress_index | Integer[][] | -- | Simulation state and layer node for each stress value |
max_stress_value | Double[] | Pa | Maximum stress for each layer |
max_stress_index | Integer[][] | -- | Simulation state and layer node for each stress value |
states { | |||
... | Sequence of bow states (see table below) | ||
} | |||
} |
N: Number of simulation steps
P: Number of limb nodes
Q: Number of string nodes
Field | Type | Unit | Description |
---|---|---|---|
states { | |||
time | Double[N] | s | Time |
draw_length | Double[N] | m | Draw length |
draw_force | Double[N] | N | Draw force |
string_force | Double[N] | N | String force (total) |
strand_force | Double[N] | N | String force (strand) |
grip_force | Double[N] | N | Grip force |
pos_arrow | Double[N] | m | Arrow position |
vel_arrow | Double[N] | m/s | Arrow velocity |
acc_arrow | Double[N] | m/s² | Arrow acceleration |
x_pos_limb | Double[N][P] | m | X coordinates of the limb nodes |
y_pos_limb | Double[N][P] | m | Y coordinates of the limb nodes |
angle_limb | Double[N][P] | rad | Rotation angles of the limb nodes |
epsilon | Double[N][P] | -- | Longitudinal strain at the limb nodes |
kappa | Double[N][P] | m | Bending curvature at the limb nodes |
x_pos_string | Double[N][Q] | m | X coordinates of the string nodes |
y_pos_string | Double[N][Q] | m | Y coordinates of the string nodes |
e_pot_limbs | Double[N] | J | Potential energy of the limbs |
e_kin_limbs | Double[N] | J | Kinetic energy of the limbs |
e_pot_string | Double[N] | J | Potential energy of the string |
e_kin_string | Double[N] | J | Kinetic energy of the string |
e_kin_arrow | Double[N] | J | Kinetic energy of the arrow |
} |