3.3. Geometry

The geometry module contains objects that help represent where structural elements are in space. Generally, a series of points are represented as nodes, with curves connecting them. Member objects are aggregates of this combination between curves and nodes. Also includes are classes that can represent structural support conditions.

3.3.1. Node

class Node(p1: numpy.ndarray | list, units: str = 'm', label: ~typing.Optional[str] = None, support: ~limitstates.objects.support.Support = <factory>)[source]

Bases: object

Represents a node in 2D or 3D space. Nodes in 3D are currently not supported.

Nodes have degrees of freedom [dx, dy, rz], or [dx, dy, dz, rx, ry, rz] where di is a translation, and ri is a rotation.

Parameters
  • p1 (list or numpy ndarray) – A list or array of coordinate values in the form [x,y] or [x,y,z].

  • units (str) – The units the node is stored in.

  • label (str) – A label for the node.

  • support (Support) – A support object, either one that is custom defined or defined using SupportTypes2D.

getDimension()[source]

Returns the dimension of a node, i.e. 2D or 3D

getx()[source]

Returns the x component of a nodes position.

gety()[source]

Returns the y component of a nodes position.

getz()[source]

Returns the z component of a nodes position, if it exists.

label: str = None
p1: numpy.ndarray | list
setSupportType(newType: Support)[source]

Sets a new support condition for the node.

support: Support
units: str = 'm'

3.3.2. Support

class Support(name: Optional[str] = None, fixity: Optional[list[int]] = None, reaction: Optional[dict] = None)[source]

Bases: object

Represents a support in 2D or 3D space. Currently only 2D supportes are supported. Nodes have degrees of freedom [dx, dy, rz], or [dx, dy, dz, rx, ry, rz] where di is a translation, and ri is a rotation.

Parameters
  • name (str) – The name for the node.

  • fixity (list | tuple) – A list or tuple representing the fixity of the node. A one means that the degree of freedom is fixed, and 0 means it is free to translate.

  • reaction (dict) – XXX Currently currently unused. In the future will hold reaction force data.

fixity: list[int] = None
is2D()[source]
isFree()[source]
name: str = None
reaction: dict = None
class SupportTypes2D(value)[source]

Bases: Enum

A enumeration class that represents all possible support types in 2D. The support type is a list of one or zero for each degree of freedom the node has, where 1 means the degree of freedom is fixed and 0 means it is free.

FIXED = Support(name='fixed', fixity=(1, 1, 1), reaction=None)
FREE = Support(name='free', fixity=(0, 0, 0), reaction=None)
PINNED = Support(name='pinned', fixity=(1, 1, 0), reaction=None)
ROLLER = Support(name='roller', fixity=(0, 1, 0), reaction=None)

3.3.3. Line

class Line(n1: Node, n2: Node, units: str = 'm', label: Optional[str] = None)[source]

Bases: Curve

A represents straight line in space between two nodes.

Parameters
  • n1 (Node) – The first Node.

  • n2 (Node) – The Second Node.

  • units (str) – The length units the line uses. Will match the node units

  • label (str) – A label for the line.

label: str = None
n1: Node
n2: Node
units: str = 'm'

3.3.4. Member

class Member(nodes: Optional[list[limitstates.objects.geometry.Node]] = None, curves: Optional[list[limitstates.objects.geometry.Line]] = None, lUnit: str = 'm', label: Optional[str] = None, loadData: Optional[dict] = None, analysisData: Optional[dict] = None)[source]

Bases: object

Members represent a multi-portion curve, and fully define where a structural element goes in space. Members are made of curve segments, which are split by supports. Supports are assigned to nodes.

They also contain data about the analysis, such as bending moment diagrams.

Parameters
  • nodes (list[Node]) – The nodes of the member.

  • curves (list[Line]) – The curves connecting each node.

  • units (str, optional) – The units used in the member. Should match the Node and Line units. The default is ‘m’.

  • label (str) – A label for the Member.

  • loadData (str) – A dictionary containing loading information about the Member. CURRENTLY UNUSED AND MAY BE REPLACED

  • analysisData (str) – A dictionary containing output information about analysis of the Member, e.g. the bending moment diagram, the shear force diagram, etc.

analysisData: dict = None
curves: list[limitstates.objects.geometry.Line] = None
lConvert(outputUnit: str)[source]

Get the conversion factor from the current unit to the output unit for length units

lUnit: str = 'm'
label: str = None
loadData: dict = None
nodes: list[limitstates.objects.geometry.Node] = None
setNodeSupprt(ind: int, support: Support)[source]

Updates the support conditon for a single node. The spans are clasiffied after results are set.

Parameters
  • ind (int) – The node index to update.

  • support (Support) – The new support type for that node.

Return type

None.

setNodeSupprts(inds: list[int], supports: list[limitstates.objects.support.Support])[source]

Updates the support conditon for a multiple nodes. This is more efficeint than calling “setNodeSupprt” multiple times, as the the spans are classfied only once at the end.

Parameters
  • ind (list[int]) – The node index to update.

  • support (list[Support]) – The new support type for that node.

Return type

None.

3.3.5. Helper Functions

Represents netral geometry objects - these represent objects in space and are independant of any type of design

getLineFromLength(L: float, units='m') Line[source]

Makes a new line of length L that starts at the origin. Two nodes will be defined, one at the origin, and one at poition L in the x axis.

Parameters
  • L (float) – The length of the line to be defined.

  • units (TYPE, optional) – The units to use for the line. The default is ‘m’.

Returns

The output line of length “L”.

Return type

Line

getLineFromNodes(n1: Node, n2: Node, label=None) Line[source]

Returns a new line that connects two input nodes.

Parameters
  • n1 (Node) – The first Node.

  • n2 (Node) – The Second Node.

  • label (str) – A label for the line.

Returns

The output line.

Return type

Line

initSimplySupportedMember(L: float, lUnit: str) Member[source]

A function that can intialize a simply supported member of length L between two points.

Parameters
  • L (float) – The member length.

  • lUnit (str) – The units to be used by the member and line.

Returns

The output member.

Return type

Member