Truss (Docstrings)#
Truss#
This module can be used to solve problems related to 2D Trusses.
- class sympy.physics.continuum_mechanics.truss.Truss[source]#
A Truss is an assembly of members such as beams, connected by nodes, that create a rigid structure. In engineering, a truss is a structure that consists of two-force members only.
Trusses are extremely important in engineering applications and can be seen in numerous real-world applications like bridges.
Examples
There is a Truss consisting of four nodes and five members connecting the nodes. A force P acts downward on the node D and there also exist pinned and roller joints on the nodes A and B respectively.
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node("node_1", 0, 0) >>> t.add_node("node_2", 6, 0) >>> t.add_node("node_3", 2, 2) >>> t.add_node("node_4", 2, 0) >>> t.add_member("member_1", "node_1", "node_4") >>> t.add_member("member_2", "node_2", "node_4") >>> t.add_member("member_3", "node_1", "node_3") >>> t.add_member("member_4", "node_2", "node_3") >>> t.add_member("member_5", "node_3", "node_4") >>> t.apply_load("node_4", magnitude=10, direction=270) >>> t.apply_support("node_1", type="fixed") >>> t.apply_support("node_2", type="roller")
- add_member(label, start, end)[source]#
This method adds a member between any two nodes in the given truss.
- Parameters:
label: String or Symbol
The label for a member. It is the only way to identify a particular member.
start: String or Symbol
The label of the starting point/node of the member.
end: String or Symbol
The label of the ending point/node of the member.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.add_node('C', 2, 2) >>> t.add_member('AB', 'A', 'B') >>> t.members {'AB': ['A', 'B']}
- add_node(label, x, y)[source]#
This method adds a node to the truss along with its name/label and its location.
- Parameters:
label: String or a Symbol
The label for a node. It is the only way to identify a particular node.
x: Sympifyable
The x-coordinate of the position of the node.
y: Sympifyable
The y-coordinate of the position of the node.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.nodes [('A', 0, 0)] >>> t.add_node('B', 3, 0) >>> t.nodes [('A', 0, 0), ('B', 3, 0)]
- apply_load(location, magnitude, direction)[source]#
This method applies an external load at a particular node
- Parameters:
location: String or Symbol
Label of the Node at which load is applied.
magnitude: Sympifyable
Magnitude of the load applied. It must always be positive and any changes in the direction of the load are not reflected here.
direction: Sympifyable
The angle, in degrees, that the load vector makes with the horizontal in the counter-clockwise direction. It takes the values 0 to 360, inclusive.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> from sympy import symbols >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> P = symbols('P') >>> t.apply_load('A', P, 90) >>> t.apply_load('A', P/2, 45) >>> t.apply_load('A', P/4, 90) >>> t.loads {'A': [[P, 90], [P/2, 45], [P/4, 90]]}
- apply_support(location, type)[source]#
This method adds a pinned or roller support at a particular node
- Parameters:
location: String or Symbol
Label of the Node at which support is added.
type: String
Type of the support being provided at the node.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.apply_support('A', 'pinned') >>> t.supports {'A': 'pinned'}
- change_member_label(label, new_label)[source]#
This method changes the label of a member.
- Parameters:
label: String or Symbol
The label of the member for which the label has to be changed.
new_label: String or Symbol
The new label of the member.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.nodes [('A', 0, 0), ('B', 3, 0)] >>> t.change_node_label('A', 'C') >>> t.nodes [('C', 0, 0), ('B', 3, 0)] >>> t.add_member('BC', 'B', 'C') >>> t.members {'BC': ['B', 'C']} >>> t.change_member_label('BC', 'BC_new') >>> t.members {'BC_new': ['B', 'C']}
- change_node_label(label, new_label)[source]#
This method changes the label of a node.
- Parameters:
label: String or Symbol
The label of the node for which the label has to be changed.
new_label: String or Symbol
The new label of the node.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.nodes [('A', 0, 0), ('B', 3, 0)] >>> t.change_node_label('A', 'C') >>> t.nodes [('C', 0, 0), ('B', 3, 0)]
- property internal_forces#
Returns the internal forces for all members which are all initialized to 0.
- property loads#
Returns the loads acting on the truss.
- property member_labels#
Returns the members of the truss along with the start and end points.
- property members#
Returns the members of the truss along with the start and end points.
- property node_labels#
Returns the node labels of the truss.
- property node_positions#
Returns the positions of the nodes of the truss.
- property nodes#
Returns the nodes of the truss along with their positions.
- property reaction_loads#
Returns the reaction forces for all supports which are all initialized to 0.
- remove_load(location, magnitude, direction)[source]#
This method removes an already present external load at a particular node
- Parameters:
location: String or Symbol
Label of the Node at which load is applied and is to be removed.
magnitude: Sympifyable
Magnitude of the load applied.
direction: Sympifyable
The angle, in degrees, that the load vector makes with the horizontal in the counter-clockwise direction. It takes the values 0 to 360, inclusive.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> from sympy import symbols >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> P = symbols('P') >>> t.apply_load('A', P, 90) >>> t.apply_load('A', P/2, 45) >>> t.apply_load('A', P/4, 90) >>> t.loads {'A': [[P, 90], [P/2, 45], [P/4, 90]]} >>> t.remove_load('A', P/4, 90) >>> t.loads {'A': [[P, 90], [P/2, 45]]}
- remove_member(label)[source]#
This method removes a member from the given truss.
- Parameters:
label: String or Symbol
The label for the member to be removed.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.add_node('C', 2, 2) >>> t.add_member('AB', 'A', 'B') >>> t.add_member('AC', 'A', 'C') >>> t.add_member('BC', 'B', 'C') >>> t.members {'AB': ['A', 'B'], 'AC': ['A', 'C'], 'BC': ['B', 'C']} >>> t.remove_member('AC') >>> t.members {'AB': ['A', 'B'], 'BC': ['B', 'C']}
- remove_node(label)[source]#
This method removes a node from the truss.
- Parameters:
label: String or Symbol
The label of the node to be removed.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.nodes [('A', 0, 0)] >>> t.add_node('B', 3, 0) >>> t.nodes [('A', 0, 0), ('B', 3, 0)] >>> t.remove_node('A') >>> t.nodes [('B', 3, 0)]
- remove_support(location)[source]#
This method removes support from a particular node
- Parameters:
location: String or Symbol
Label of the Node at which support is to be removed.
Examples
>>> from sympy.physics.continuum_mechanics.truss import Truss >>> t = Truss() >>> t.add_node('A', 0, 0) >>> t.add_node('B', 3, 0) >>> t.apply_support('A', 'pinned') >>> t.supports {'A': 'pinned'} >>> t.remove_support('A') >>> t.supports {}
- property supports#
Returns the nodes with provided supports along with the kind of support provided i.e. pinned or roller.