1D Elements
Creation Methods
There are three methods available to create 1D elements:
-
Single Element (Main Class) : eg.
Truss
,Beam
Creates one element connecting two nodes by their IDs:i
andj
.
Use this when we know the specific node IDs to connect. -
Start and End location (
SE
method) : eg.Truss.SE
,Beam.SE
Creates multiple equally spaced elements between a given start and end location. http://localhost:8000/Element/1D/ - Start, Direction and Length (
SDL
method) : eg.Truss.SDL
,Beam.SDL
It creates equally divided elements at Start location along the the direction with given total length.
TRUSS
A nested class within Element used to create truss elements.
Object Attributes
ID
: Element ID
TYPE
: Element type = 'TRUSS'
MATL
: Material ID of the truss element
SECT
: Section ID of the truss element
NODE
: Nodes of element in list. eg: [1,2]
ANGLE
: Beta angle of the truss element
To create truss element we have total 3 methods :
1. Truss
Element.Truss(i:int, j:int, mat = 1, sect = 1, angle = 0, group = '' , id = 0)
Creates a truss between nodes i
and j
.
Parameters
i
: Node ID of i-th endj
: Node ID of j-th endmat (default=1
: Material ID of the truss elementsect (default=1)
: Section ID of the truss elementangle (default=0)
: Beta angle of the truss elementgroup (default='')
: Structure group of the element (can be str or list eg. 'SG' or ['SG1','SG2'])id (default=0)
: Manually assign an ID. If 0, ID will be auto-assigned.
Examples
Node(0,0,0) # Create Node at 0,0,0 with ID = 1(default)
Node(1,1,1) # Create Node at 1,1,1 with ID = 2(default)
beam1 = Element.Truss(1,2) # Create Truss connecting Node 1 and Node 2 (default ID = 1)
Node.create()
Element.create()
2. Truss.SE
Element.Truss.SE(s_loc: list, e_loc: list, n: int = 1, mat, sect, angle, group, id)
Creates n
truss elements between start and end location.
Parameters
s_loc
: Start location. [x,y,z]e_loc
: End location. [x,y,z]n (default=1)
: Number of elementsmat,sect,angle,group,id
: Same as Element.Truss() method
Examples
Element.Truss.SE([0,0,0],[10,0,0],10) # Create 10 truss between (0,0,0) and (10,0,0)
Node.create()
Element.create()
3. Truss.SDL
Element.Truss.SDL(s_loc: list, dir: list, l: float, n: int = 1, mat, sect, angle, group, id)
Creates n
truss elements along a straight line defined by direction dir
and length l
starting at s_loc
.
Parameters
s_loc
: Starting location [x, y, z]dir
: Direction vector [dx, dy, dz]l
: Total length of elementn (default=1)
: Number of elementsmat,sect,angle,group,id
: Same as Element.Truss() method
Examples
Element.Truss.SDL([0,0,0],[0,0,1],10) # Create a vertical truss of length 10 at (0,0,0)
Node.create()
Element.create()
BEAM
A nested class within Element used to create Beam elements.
Object Attributes
ID
: Element ID
TYPE
: Element type = 'BEAM'
MATL
: Material ID of the beam element
SECT
: Section ID of the beam element
NODE
: Nodes of element in list. eg: [1,2]
ANGLE
: Beta angle of the beam element
To create Beam element we have total 3 methods :
1. Beam
Element.Beam(i:int, j:int, mat = 1, sect = 1, angle = 0, group = '' , id = 0)
Creates a Beam between nodes i
and j
.
Parameters
i
: Node ID of i-th endj
: Node ID of j-th endmat (default=1
: Material ID of the Beam elementsect (default=1)
: Section ID of the Beam elementangle (default=0)
: Beta angle of the Beam elementgroup (default='')
: Structure group of the element (can be str or list eg. 'SG' or ['SG1','SG2'])id (default=0)
: Manually assign an ID. If 0, ID will be auto-assigned.
Examples
Node(0,0,0) # Create Node at 0,0,0 with ID = 1(default)
Node(1,1,1) # Create Node at 1,1,1 with ID = 2(default)
beam1 = Element.Beam(1,2) # Create Beam connecting Node 1 and Node 2 (default ID = 1)
Node.create()
Element.create()
2. Beam.SE
Element.Beam.SE(s_loc: list, e_loc: list, n: int = 1, mat, sect, angle, group, id)
Creates n
Beam elements between start and end location.
Parameters
s_loc
: Start location. [x,y,z]e_loc
: End location. [x,y,z]n (default=1)
: Number of elementsmat,sect,angle,group,id
: Same as Element.Beam() method
Examples
Element.Beam.SE([0,0,0],[10,0,0],10) # Create 10 Beam between (0,0,0) and (10,0,0)
Node.create()
Element.create()
3. Beam.SDL
Element.Beam.SDL(s_loc: list, dir: list, l: float, n: int = 1, mat, sect, angle, group, id)
Creates n
Beam elements along a straight line defined by direction dir
and length l
starting at s_loc
.
Parameters
s_loc
: Starting location [x, y, z]dir
: Direction vector [dx, dy, dz]l
: Total length of elementn (default=1)
: Number of elementsmat,sect,angle,group,id
: Same as Element.Beam() method
Examples
Element.Beam.SDL([0,0,0],[0,0,1],10) # Create a vertical beam of length 10 at (0,0,0)
Node.create()
Element.create()
TENSION
A nested class within Element used to create tension-only elements, hooks, and cables.
Object Attributes
ID
: Element ID
TYPE
: Element type = 'COMPTR'
MATL
: Material ID of the compression element
SECT
: Section ID of the compression element
NODE
: Nodes of element in list. eg: [1,2]
ANGLE
: Beta angle of the compression element
STYPE
: Subtype of compression element (1=Compression-only, 2=Gap)
TENS
: Allowable tension or initial compression force
T_LIMIT
: Compression limit value
T_bLMT
: Compression limit flag (automatically set when T_LIMIT is provided)
NON_LEN
: Non-linear length parameter (for Gap subtype)
Tension Element
Element.Tension(i:int, j:int, stype:int, mat = 1, sect = 1, angle = 0, group = '' , id = 0, non_len = None, cable_type = None, tens = None, t_limit = None)
Creates a tension element between nodes i
and j
.
Parameters
i
: Node ID of i-th endj
: Node ID of j-th endstype
: Tension element subtype (1=Tension-only, 2=Hook, 3=Cable)mat (default=1)
: Material ID of the tension elementsect (default=1)
: Section ID of the tension elementangle (default=0)
: Beta angle of the tension elementgroup (default='')
: Structure group of the element (can be str or list eg. 'SG' or ['SG1','SG2'])id (default=0)
: Manually assign an ID. If 0, ID will be auto-assigned.non_len (default=None)
: Non-linear length parameter for Hook/Cablecable_type (default=None)
: Cable type for stype=3 (1=Pretension, 2=Horizontal, 3=Lu)tens (default=None)
: Initial tension force or allowable compressiont_limit (default=None)
: Tension limit value
Examples
Node(0,0,0) # Create Node at 0,0,0 with ID = 1(default)
Node(1,1,1) # Create Node at 1,1,1 with ID = 2(default)
# Simple tension-only member
tension1 = Element.Tension(1,2,stype=1)
# Tension-only with allowable compression and tension limit
tension2 = Element.Tension(1,2,stype=1,tens=0.5,t_limit=-15)
# Hook element with slack length
hook1 = Element.Tension(3,4,stype=2,non_len=0.5)
# Cable with initial tension and catenary effects
cable1 = Element.Tension(5,6,stype=3,cable_type=3,tens=1000.0,non_len=0.1)
Node.create()
Element.create()
Subtypes
1. Tension-only (stype=1)
- Transfers tension forces only
- Can have allowable compression (
tens
parameter) - Can have tension limit (
t_limit
parameter)
2. Hook (stype=2)
- Has slack length defined by
non_len
parameter - Only active when stretched beyond slack length
3. Cable (stype=3)
- Supports catenary analysis
- Requires
cable_type
parameter - Can have initial tension and slack length
COMPRESSION
A nested class within Element used to create compression-only elements and gaps.
Object Attributes
ID
: Element ID
TYPE
: Element type = 'COMPTR'
MATL
: Material ID of the compression element
SECT
: Section ID of the compression element
NODE
: Nodes of element in list. eg: [1,2]
ANGLE
: Beta angle of the compression element
STYPE
: Subtype of compression element (1=Compression-only, 2=Gap)
TENS
: Allowable tension or initial compression force
T_LIMIT
: Compression limit value
T_bLMT
: Compression limit flag (automatically set when T_LIMIT is provided)
NON_LEN
: Non-linear length parameter (for Gap subtype)
Compression Element
Element.Compression(i:int, j:int, stype:int, mat = 1, sect = 1, angle = 0, group = '' , id = 0, tens = None, t_limit = None, non_len = None)
Creates a compression element between nodes i
and j
.
Parameters
i
: Node ID of i-th endj
: Node ID of j-th endstype
: Compression element subtype (1=Compression-only, 2=Gap)mat (default=1)
: Material ID of the compression elementsect (default=1)
: Section ID of the compression elementangle (default=0)
: Beta angle of the compression elementgroup (default='')
: Structure group of the element (can be str or list eg. 'SG' or ['SG1','SG2'])id (default=0)
: Manually assign an ID. If 0, ID will be auto-assigned.tens (default=None)
: Allowable tension or initial compression forcet_limit (default=None)
: Compression limit valuenon_len (default=None)
: Non-linear length parameter for gap
Examples
Node(0,0,0) # Create Node at 0,0,0 with ID = 1(default)
Node(1,1,1) # Create Node at 1,1,1 with ID = 2(default)
# Simple compression-only member
comp1 = Element.Compression(1,2,stype=1)
# Compression-only with tension limit and buckling limit
comp2 = Element.Compression(1,2,stype=1,tens=27,t_limit=-15)
# Gap element with initial gap
gap1 = Element.Compression(3,4,stype=2,non_len=0.25)
Node.create()
Element.create()
Subtypes
1. Compression-only (stype=1)
- Transfers compression forces only
- Can have allowable tension (
tens
parameter) - Can have compression limit (
t_limit
parameter)
2. Gap (stype=2)
- Has initial gap defined by
non_len
parameter - Only active when compressed beyond gap length
Examples
1. Portal Frame
h = 3.5 # Height of each storey
w = 4.0 # Width of each Bay
n_storey = 10 # Total no. of storey
n_bay = 5 # Total no. of bay
for i in range(n_bay+1):
for j in range(n_storey):
if i!=n_bay:
Element.Beam.SDL([i*w,0,j*h],[0,0,1],h,sect=1) # Column -> Sect ID = 1
Element.Beam.SDL([i*w,0,(j+1)*h],[1,0,0],w,sect=5) # Beam -> Sect ID = 5
else:
Element.Beam.SDL([i*w,0,j*h],[0,0,1],h,sect=1) # Column -> Sect ID = 1
Node.create()
Element.create()

2. Warren Truss
span = 20.5 # Span of truss
n_div = 8 # No. of bottom divisions
h = 2.5 # Height of truss
dx = 0.5*span/n_div
Element.Truss.SDL([0,0,0],[1,0,0],span,n_div)
Element.Truss.SDL([dx,0,h],[1,0,0],span-2*dx,n_div-1)
for i in range(n_div):
Element.Truss(i+1,i+2+n_div)
Element.Truss(i+2,i+2+n_div)
Node.create()
Element.create()
