Orienting Frames

Orienting Frames#

In order to cover a wide range of cases, the strong axis of the first column, element 1, is oriented so as to resist bending outside the plane of the portal, but the strong axis of the second column, element 3, will resist bending inside the portal plane.

gallery_thumbnail

Preliminaries#

import xara
from xara.units.iks import foot, inch
import veux
from xsection.library import from_aisc

def create_portal(vertical = 2):

    height = 6*foot
    width =  8*foot

    model = xara.Model(ndm=3, ndf=6)

    # 2. Material
    # 2.1 Create a steel material
    steel = xara.MultiaxialMaterial("ElasticIsotropic", E=29e3, nu=0.3)
    # 2.2 add the material to the model
    model.material(steel)

    # 3. Section
    # 3.1 Create a shape
    shape = from_aisc("W8X10", material=steel)
    # 3.2 create a section with the shape
    section = xara.Section("Elastic", shape)
    # 3.3 add the section to the model
    model.section(section)

    if vertical == 2:
        model.node(1, (    0,      0, 0))
        model.node(2, (width,      0, 0))
        model.node(3, (width, height, 0))
        model.node(4, (    0, height, 0))

        model.geomTransf("Linear", 1, (1, 0, 0))
        model.geomTransf("Linear", 2, (0, 1, 0))
        model.geomTransf("Linear", 3, (0, 0, 1))
    else:
        model.node(1, (    0, 0,      0))
        model.node(2, (width, 0,      0))
        model.node(3, (width, 0, height))
        model.node(4, (    0, 0, height))

        model.geomTransf("Linear", 1, (1, 0, 0))
        model.geomTransf("Linear", 2, (0, 0, 1))
        model.geomTransf("Linear", 3, (0,-1, 0))

    model.element("ForceFrame", 2, (2,3), section=1, transform=1) # column
    model.element("ForceFrame", 3, (3,4), section=1, transform=2) # girder
    model.element("ForceFrame", 4, (4,1), section=1, transform=3) # column

    return model
def render_portal(model, vertical):

    # Render the model
    artist = veux.create_artist(model, vertical=vertical)
    artist.draw_origin()
    artist.draw_sections()

    artist.draw_axes(extrude=True)
    return artist

Vertical \(Z\)#

model = create_portal(vertical=3)

# Render the model
artist = render_portal(model, vertical=3)
artist

Vertical \(Y\)#

model = create_portal(vertical=2)

# Render the model
artist = render_portal(model, vertical=2)
artist