This example demonstrates how to orient beam elements in 3D.
The objective of this example is to demonstrate how to orient beam elements in 3D space. The model we’ll build is a simple 3-element portal frame with wide-flange sections.
In order to cover a wide range of cases, we’ll orient the first column, element 1
, such that the strong axis of it’s section bends outside the plane of the portal, the strong axis of the second column, element 3
, will resist bending inside the portal plane (See the image above).
In OpenSees, it is up to the analyst to choose which coordinate represents the vertical direction in their model.
In this example we’ll build two variations of the model corresponding to the most commonly used conventions: First we’ll take the 2nd coordinate
as vertical, then the 3rd coordinate
vertical.
In both cases we begin by initializing a
Model
in ndm=3
dimensions with ndf=6
degrees of freedom per node:
import xara
model = xara.Model(ndm=3, ndf=6)
Now we create the nodes and geometric transformations , which allows us to specify the exact orientation of frame elements in 3D. For the first case with vertical we have:
and for vertical:
Everything else is identical for both cases. The material is a simple ElasticIsotropic formulation
from xara.units.fps import inch, ksi
model.material("ElasticIsotropic", 1, E=29e3*ksi, nu=0.3)
For the section we’ll use the shps
package
to build a fiber discretization of a wide-flange:
from shps.shapes import WideFlange
shape = WideFlange(d=8*inch, b=6.5*inch, tw=0.5*inch, tf=0.5*inch)
model.section("ShearFiber", 1)
for fiber in shape.create_fibers(origin="centroid"):
model.fiber(**fiber, material=1, section=1)
For this simple linear-elastic problem, it is straight forward to compute an exact solution. Direct assembly of element stiffness furnishes: