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

FieldTypeUnitDescription
setup {
     string_lengthDoublemLength of the string
     string_massDoublekgMass of the string, including additional masses
     limb_massDoublekgMass of the limb, including additional masses
     limb_properties {
          lengthDouble[P]mArc lengths of the limb nodes (unbraced)
          angleDouble[P]radRotation angles of the limb nodes (unbraced)
          x_posDouble[P]mX coordinates of the limb nodes (unbraced)
          y_posDouble[P]mY coordinates of the limb nodes (unbraced)
          widthDouble[P]mCross section width
          heightDouble[P]mCross section height (all layers)
          rhoADouble[P]kg/mLinear density of the sections
          CeeDouble[P]NLongitudinal stiffness of the sections
          CkkDouble[P]Nm²Bending stiffness of the sections
          CekDouble[P]NmCoupling between bending and elongation
          layers [
               {
                    lengthDouble[R]mArc lengths of the layer nodes
                    He_backDouble[R][P]N/m²Stress evaluation matrix (back)
                    Hk_backDouble[R][P]N/mStress evaluation matrix (back)
                    He_bellyDouble[R][P]N/m²Stress evaluation matrix (belly)
                    Hk_bellyDouble[R][P]N/mStress evaluation matrix (belly)
               }
               {
                    ...
               }
          ]
     }
}
statics {
     final_draw_forceDoubleNFinal draw force
     drawing_workDoubleJDrawing work
     energy storage factorDouble--Energy storage factor
     max_string_force_indexInteger--Simulation state with maximum absolute string force
     max_grip_force_indexInteger--Simulation state with maximum absolute grip force
     max_draw_force_indexInteger--Simulation state with maximum absolute draw force
     min_stress_valueDouble[]PaMinimum stress for each layer
     min_stress_indexInteger[][]--Simulation state and layer node for each minimum stress value
     max_stress_valueDouble[]PaMaximum stress for each layer
     max_stress_indexInteger[][]--Simulation state and layer node for each maximum stress value
     states {
          ...Sequence of bow states (see table below)
     }
}
dynamics {
     final_pos_arrowDoublemPosition of the arrow at departure
     final_vel_arrowDoublem/sVelocity of the arrow at departure
     final_e_kin_arrowDoubleJKinetic energy of the arrow at departure
     final_e_pot_limbsDoubleJPotential energy of the limbs at arrow departure
     final_e_kin_limbsDoubleJKinetic energy of the limbs at arrow departure
     final_e_pot_stringDoubleJPotential energy of the string at arrow departure
     final_e_kin_stringDoubleJKinetic energy of the string at arrow departure
     efficiencyDouble--Degree of efficiency
     max_string_force_indexInteger--Simulation state with maximum absolute string force
     max_grip_force_indexInteger--Simulation state with maximum absolute grip force
     arrow_departure_indexInteger--Simulation state at which the arrow departs with the string
     min_stress_valueDouble[]PaMinimum stress for each layer
     min_stress_indexInteger[][]--Simulation state and layer node for each stress value
     max_stress_valueDouble[]PaMaximum stress for each layer
     max_stress_indexInteger[][]--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

FieldTypeUnitDescription
states {
     timeDouble[N]sTime
     draw_lengthDouble[N]mDraw length
     draw_forceDouble[N]NDraw force
     string_forceDouble[N]NString force (total)
     strand_forceDouble[N]NString force (strand)
     grip_forceDouble[N]NGrip force
     pos_arrowDouble[N]mArrow position
     vel_arrowDouble[N]m/sArrow velocity
     acc_arrowDouble[N]m/s²Arrow acceleration
     x_pos_limbDouble[N][P]mX coordinates of the limb nodes
     y_pos_limbDouble[N][P]mY coordinates of the limb nodes
     angle_limbDouble[N][P]radRotation angles of the limb nodes
     epsilonDouble[N][P]--Longitudinal strain at the limb nodes
     kappaDouble[N][P]mBending curvature at the limb nodes
     x_pos_stringDouble[N][Q]mX coordinates of the string nodes
     y_pos_stringDouble[N][Q]mY coordinates of the string nodes
     e_pot_limbsDouble[N]JPotential energy of the limbs
     e_kin_limbsDouble[N]JKinetic energy of the limbs
     e_pot_stringDouble[N]JPotential energy of the string
     e_kin_stringDouble[N]JKinetic energy of the string
     e_kin_arrowDouble[N]JKinetic energy of the arrow
}