Beam Theory Properties

The naming conventions for these functions are as follows:

Second moment of area:
I
Section modulus:
W (after EUROCODE 3, because North American and British/Australian notation for elastic and plastic section modulus both use S and Z, but are inverse of each other.
Maximum neutral plane distance:
e_back for distance to the bow’s back, the tension side. e_belly for distance to the bow’s belly, the compression side. e for the larger of the two.

Rectangle

Formulas for a rectangular cross-section:

pybow.rect_I(w, t)

Return second moment of area for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(I\)

Return type:

float

pybow.rect_W(w, t)

Return section modulus for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(W\)

Return type:

float

pybow.rect_e_back(w, t)

Return distance neutral plane to back for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{back}\)

Return type:

float

pybow.rect_e_belly(w, t)

Return distance neutral plane to belly for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{belly}\)

Return type:

float

pybow.rect_e(w, t)

Return maximum distance from the neutral plane for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e\)

Return type:

float

Ellipse

Formulas for a rounded cross-section of variable width and thickness, i.e. an ellipse:

pybow.round_I(w, t)

Return second moment of area for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(I\)

Return type:

float

pybow.round_W(w, t)

Return section modulus for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(W\)

Return type:

float

pybow.round_e_back(w, t)

Return distance neutral plane to back for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{back}\)

Return type:

float

pybow.round_e_belly(w, t)

Return distance neutral plane to belly for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{belly}\)

Return type:

float

pybow.round_e(w, t)

Return maximum distance from the neutral plane for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e\)

Return type:

float

Half-Ellipse (Round Back)

Formulas for a semi-elliptic cross-section with the flat side being the belly and the rounded side being the back.

pybow.halfround_I(w, t)

Return second moment of area for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(I\)

Return type:

float

pybow.halfround_W(w, t)

Return section modulus for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(W\)

Return type:

float

pybow.halfround_e_back(w, t)

Return distance neutral plane to back for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{back}\)

Return type:

float

pybow.halfround_e_belly(w, t)

Return distance neutral plane to belly for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{belly}\)

Return type:

float

pybow.halfround_e(w, t)

Return maximum distance from the neutral plane for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e\)

Return type:

float

Half-Ellipse (Flat Back)

Formulas for a semi-elliptic cross-section with the flat side being the back and the rounded side being the belly. The name ‘english’ is meant t be an easily recallable mnemonic, deriving from the stereotypical english longbow cross-section being rounded on the belly side.

pybow.english_I(w, t)

Return second moment of area for an inverted semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(I\)

Return type:

float

pybow.english_W(w, t)

Return section modulus for an inverted semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(W\)

Return type:

float

pybow.english_e_back(w, t)

Return distance neutral plane to back for an inverted semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{back}\)

Return type:

float

pybow.english_e_belly(w, t)

Return distance neutral plane to belly for an inverted semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e_{belly}\)

Return type:

float

pybow.english_e(w, t)

Return maximum distance from the neutral plane for an inverted semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
Returns:

\(e\)

Return type:

float

Trapezium

Formulas for a trapezoid cross-section with parallel belly and back sides, but with them being of unequal lengths, resulting in a tapered profile. Trapeziums require an additional input argument describing the ratio of back to belly side lengths. A value of 1.0 describes a rectangle, values smaller than 1.0 describe narrowed back sides, values larger than 1.0 describe narrowed belly sides.

pybow.trap_I(w, t, ratio)

Return second moment of area for a traezoidal cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • ratio (float) – Ratio of back to belly side width.
Returns:

\(I\)

Return type:

float

pybow.trap_W(w, t, ratio)

Return section modulus for a traezoidal cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • ratio (float) – Ratio of back to belly side width.
Returns:

\(W\)

Return type:

float

pybow.trap_e_back(w, t, ratio)

Return distance neutral plane to back for a traezoidal cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • ratio (float) – Ratio of back to belly side width.
Returns:

\(e_{back}\)

Return type:

float

pybow.trap_e_belly(w, t, ratio)

Return distance neutral plane to belly for a traezoidal cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • ratio (float) – Ratio of back to belly side width.
Returns:

\(e_{belly}\)

Return type:

float

pybow.trap_e(w, t, ratio)

Return maximum distance from the neutral plane for a traezoidal cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • ratio (float) – Ratio of back to belly side width.
Returns:

\(e\)

Return type:

float

Bundle Functions

In addition to the functions for single properties, there exists a suite of bundle functions that can provide arbitrary sets of properties with a single convenience function call.

pybow.rect(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for a rectangular cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.round(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for an elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.halfround(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for a semi-elliptic cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.english(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for an inverted semi-elliptical cross-section.

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.trap50(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for a trapezoidal cross-section with ratio \(frac{1}{2}\).

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.trap66(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for a trapezoidal cross-section with ratio \(frac{2}{3}\)

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]

pybow.trap75(w, t, props=['I', 'W', 'e'])

Returns the properties listed in props for a trapezoidal cross-section with ratio \(frac{3}{4}\).

Parameters:
  • w (float) – Cross-section width.
  • t (float) – Cross-section thickness.
  • props (list[str]) – A list of strings denoting the properties to be calculated. Possible string values are the values outlined at the beginning of this chapter. The default values are \(I\), \(W\), and \(e\).
Returns:

A list of the desired properties.

Return type:

list[float]